SYMBOL INDEX (443 symbols across 11 files) FILE: main.go type PoolConfig (line 40) | type PoolConfig struct type FlowConfigSection (line 57) | type FlowConfigSection struct type ProxyConfig (line 67) | type ProxyConfig struct type AppConfig (line 75) | type AppConfig struct type PoolMode (line 91) | type PoolMode constant PoolModeLocal (line 94) | PoolModeLocal PoolMode = iota constant PoolModeServer (line 95) | PoolModeServer constant PoolModeClient (line 96) | PoolModeClient type APIStats (line 115) | type APIStats struct method RecordRequest (line 315) | func (s *APIStats) RecordRequest(success bool, inputTokens, outputToke... method RecordRequestWithModel (line 319) | func (s *APIStats) RecordRequestWithModel(model string, success bool, ... method GetRPM (line 372) | func (s *APIStats) GetRPM() float64 { method GetStats (line 389) | func (s *APIStats) GetStats() map[string]interface{} { method GetDetailedStats (line 417) | func (s *APIStats) GetDetailedStats() map[string]interface{} { type ModelStats (line 132) | type ModelStats struct type HourlyStats (line 141) | type HourlyStats struct type IPStats (line 157) | type IPStats struct method RecordIPRequest (line 184) | func (s *IPStats) RecordIPRequest(ip, model, userAgent string, success... method GetAllIPStats (line 241) | func (s *IPStats) GetAllIPStats() map[string]interface{} { method GetIPDetail (line 308) | func (s *IPStats) GetIPDetail(ip string) *IPRequestInfo { type IPRequestInfo (line 163) | type IPRequestInfo struct method GetRPM (line 228) | func (info *IPRequestInfo) GetRPM() float64 { function max (line 475) | func max(a, b int64) int64 { function GetAPIKeys (line 502) | func GetAPIKeys() []string { function reloadConfig (line 511) | func reloadConfig() error { function applyConfigChanges (line 549) | func applyConfigChanges(oldAPIKeys []string, oldDebug bool, oldPoolConfi... function startConfigWatcher (line 584) | func startConfigWatcher() error { function configWatchLoop (line 604) | func configWatchLoop() { function stopConfigWatcher (line 646) | func stopConfigWatcher() { function mergeConfig (line 661) | func mergeConfig(base, loaded *AppConfig) { function saveDefaultConfig (line 740) | func saveDefaultConfig(configPath string) error { function loadAppConfig (line 753) | func loadAppConfig() { function initFlowClient (line 840) | func initFlowClient() { function initProxyPool (line 895) | func initProxyPool() { function GetAvailableModels (line 1042) | func GetAvailableModels() []string { function getEnv (line 1059) | func getEnv(key, def string) string { function getCommonHeaders (line 1066) | func getCommonHeaders(jwt, origAuth string) map[string]string { function createSession (line 1091) | func createSession(jwt, configID, origAuth string) (string, error) { function createSessionWithRetry (line 1096) | func createSessionWithRetry(jwt, configID, origAuth string, maxRetries i... function createSessionOnce (line 1133) | func createSessionOnce(jwt, configID, origAuth string) (string, error) { function uploadContextFile (line 1175) | func uploadContextFile(jwt, configID, sessionName, mimeType, base64Conte... function uploadContextFileByURL (line 1230) | func uploadContextFileByURL(jwt, configID, sessionName, imageURL, origAu... type Message (line 1278) | type Message struct type ContentPart (line 1286) | type ContentPart struct type ImageURL (line 1292) | type ImageURL struct type ToolDef (line 1297) | type ToolDef struct type FunctionDef (line 1302) | type FunctionDef struct type ToolCall (line 1309) | type ToolCall struct type FunctionCall (line 1315) | type FunctionCall struct type ChatRequest (line 1320) | type ChatRequest struct type ChatChoice (line 1330) | type ChatChoice struct type ChatChunk (line 1338) | type ChatChunk struct function createChunk (line 1347) | func createChunk(id string, created int64, model string, delta map[strin... function extractContentFromReply (line 1367) | func extractContentFromReply(replyMap map[string]interface{}, jwt, sessi... function downloadGeneratedFile (line 1420) | func downloadGeneratedFile(jwt, fileId, session, configID, origAuth stri... function downloadGeneratedFileWithRetry (line 1424) | func downloadGeneratedFileWithRetry(jwt, fileId, session, configID, orig... function downloadGeneratedFileOnce (line 1470) | func downloadGeneratedFileOnce(jwt, fileId, session, configID, origAuth ... function formatImageAsMarkdown (line 1550) | func formatImageAsMarkdown(mimeType, base64Data string) string { type MediaInfo (line 1555) | type MediaInfo struct function parseMessageContent (line 1567) | func parseMessageContent(msg Message) (string, []MediaInfo) { function parseMediaURL (line 1630) | func parseMediaURL(urlStr, defaultType string) *MediaInfo { function downloadImage (line 1708) | func downloadImage(urlStr string) (string, string, error) { function downloadMedia (line 1713) | func downloadMedia(urlStr, mediaType string) (string, string, error) { function normalizeVideoMimeType (line 1764) | func normalizeVideoMimeType(mimeType string) string { function convertToPNG (line 1788) | func convertToPNG(data []byte) ([]byte, error) { function convertBase64ToPNG (line 1803) | func convertBase64ToPNG(base64Data string) (string, error) { constant maxRetries (line 1817) | maxRetries = 3 function extractSystemPrompt (line 1821) | func extractSystemPrompt(messages []Message) string { function convertMessagesToPrompt (line 1833) | func convertMessagesToPrompt(messages []Message) string { type GeminiRequest (line 1886) | type GeminiRequest struct type GeminiContent (line 1893) | type GeminiContent struct type GeminiPart (line 1898) | type GeminiPart struct type GeminiInlineData (line 1903) | type GeminiInlineData struct function handleGeminiGenerate (line 1909) | func handleGeminiGenerate(c *gin.Context) { type ClaudeRequest (line 2023) | type ClaudeRequest struct function handleClaudeMessages (line 2034) | func handleClaudeMessages(c *gin.Context) { function buildToolsSpec (line 2064) | func buildToolsSpec(tools []ToolDef, isImageModel, isVideoModel, isSearc... function extractToolCalls (line 2092) | func extractToolCalls(dataList []map[string]interface{}) []ToolCall { function needsConversationContext (line 2145) | func needsConversationContext(messages []Message) bool { function handleFlowRequest (line 2156) | func handleFlowRequest(c *gin.Context, req ChatRequest, chatID string, c... function streamChat (line 2272) | func streamChat(c *gin.Context, req ChatRequest) { function apiKeyAuth (line 3083) | func apiKeyAuth() gin.HandlerFunc { function runBrowserRefreshMode (line 3126) | func runBrowserRefreshMode(email string) { function init (line 3219) | func init() { function filterStdout (line 3224) | func filterStdout() { function main (line 3252) | func main() { function runAsClient (line 3309) | func runAsClient() { function runAsServer (line 3393) | func runAsServer() { function runAPIServer (line 3417) | func runAPIServer() { function setupAPIRoutes (line 3428) | func setupAPIRoutes(r *gin.Engine) { function runLocalMode (line 3906) | func runLocalMode() { FILE: src/api/api.go type ChatRequest (line 11) | type ChatRequest struct type Message (line 21) | type Message struct type ToolDef (line 27) | type ToolDef struct type FunctionDef (line 33) | type FunctionDef struct type GeminiRequest (line 43) | type GeminiRequest struct type GeminiContent (line 50) | type GeminiContent struct type GeminiPart (line 55) | type GeminiPart struct type GeminiInlineData (line 60) | type GeminiInlineData struct function HandleGeminiGenerate (line 65) | func HandleGeminiGenerate(c *gin.Context) { type ClaudeRequest (line 176) | type ClaudeRequest struct function HandleClaudeMessages (line 185) | func HandleClaudeMessages(c *gin.Context) { FILE: src/logger/logger.go type Level (line 12) | type Level constant LevelError (line 15) | LevelError Level = iota constant LevelWarn (line 16) | LevelWarn constant LevelInfo (line 17) | LevelInfo constant LevelDebug (line 18) | LevelDebug type Logger (line 29) | type Logger struct method log (line 60) | func (l *Logger) log(level Level, format string, args ...interface{}) { method Error (line 106) | func (l *Logger) Error(format string, args ...interface{}) { l.log(Lev... method Warn (line 107) | func (l *Logger) Warn(format string, args ...interface{}) { l.log(Lev... method Info (line 108) | func (l *Logger) Info(format string, args ...interface{}) { l.log(Lev... method Debug (line 109) | func (l *Logger) Debug(format string, args ...interface{}) { l.log(Lev... function SetDebugMode (line 41) | func SetDebugMode(debug bool) { function IsDebug (line 51) | func IsDebug() bool { function SetLevel (line 56) | func SetLevel(level Level) { function Error (line 79) | func Error(format string, args ...interface{}) { function Warn (line 84) | func Warn(format string, args ...interface{}) { function Info (line 89) | func Info(format string, args ...interface{}) { function Debug (line 94) | func Debug(format string, args ...interface{}) { function WithPrefix (line 99) | func WithPrefix(prefix string) *Logger { function init (line 111) | func init() { FILE: src/pool/pool.go type Cookie (line 24) | type Cookie struct type AccountData (line 31) | type AccountData struct method GetAllCookies (line 67) | func (a *AccountData) GetAllCookies() []Cookie { function ParseCookieString (line 43) | func ParseCookieString(cookieStr string) []Cookie { type AccountStatus (line 78) | type AccountStatus constant StatusPending (line 81) | StatusPending AccountStatus = iota constant StatusReady (line 82) | StatusReady constant StatusCooldown (line 83) | StatusCooldown constant StatusInvalid (line 84) | StatusInvalid type Account (line 88) | type Account struct method SetCooldownMultiplier (line 109) | func (acc *Account) SetCooldownMultiplier(multiplier int) { method SaveToFile (line 346) | func (acc *Account) SaveToFile() error { method checkAndUpdateDailyCount (line 625) | func (acc *Account) checkAndUpdateDailyCount() bool { method GetDailyUsage (line 641) | func (acc *Account) GetDailyUsage() (count int, limit int, date string) { method getCookie (line 974) | func (acc *Account) getCookie(name string) string { method RefreshJWT (line 984) | func (acc *Account) RefreshJWT() error { method GetJWT (line 1099) | func (acc *Account) GetJWT() (string, string, error) { method fetchConfigID (line 1108) | func (acc *Account) fetchConfigID() (string, error) { type RefreshCookieFunc (line 133) | type RefreshCookieFunc type BrowserRefreshResult (line 134) | type BrowserRefreshResult struct function readResponseBody (line 146) | func readResponseBody(resp *http.Response) ([]byte, error) { type AccountPool (line 161) | type AccountPool struct method GetReadyAccounts (line 174) | func (p *AccountPool) GetReadyAccounts() []*Account { method GetPendingAccounts (line 179) | func (p *AccountPool) GetPendingAccounts() []*Account { method WithLock (line 184) | func (p *AccountPool) WithLock(fn func(ready, pending []*Account)) { method WithWriteLock (line 189) | func (p *AccountPool) WithWriteLock(fn func(ready, pending []*Account)... method Load (line 223) | func (p *AccountPool) Load(dir string) error { method GetPendingAccount (line 295) | func (p *AccountPool) GetPendingAccount() *Account { method MarkReady (line 309) | func (p *AccountPool) MarkReady(acc *Account) { method MarkPending (line 317) | func (p *AccountPool) MarkPending(acc *Account) { method RemoveAccount (line 337) | func (p *AccountPool) RemoveAccount(acc *Account) { method StartPoolManager (line 373) | func (p *AccountPool) StartPoolManager() { method refreshWorker (line 380) | func (p *AccountPool) refreshWorker(id int) { method scanWorker (line 546) | func (p *AccountPool) scanWorker() { method RefreshExpiredAccounts (line 565) | func (p *AccountPool) RefreshExpiredAccounts() { method RefreshAllAccounts (line 599) | func (p *AccountPool) RefreshAllAccounts() { method Next (line 651) | func (p *AccountPool) Next() *Account { method MarkUsed (line 726) | func (p *AccountPool) MarkUsed(acc *Account, success bool) { method MarkNeedsRefresh (line 744) | func (p *AccountPool) MarkNeedsRefresh(acc *Account) { method Count (line 754) | func (p *AccountPool) Count() int { p.mu.RLock(); defer p.mu.RUnlock()... method PendingCount (line 755) | func (p *AccountPool) PendingCount() int { method ReadyCount (line 760) | func (p *AccountPool) ReadyCount() int { method TotalCount (line 765) | func (p *AccountPool) TotalCount() int { method Stats (line 772) | func (p *AccountPool) Stats() map[string]interface{} { method ListAccounts (line 837) | func (p *AccountPool) ListAccounts() []AccountInfo { method ForceRefreshAll (line 888) | func (p *AccountPool) ForceRefreshAll() int { function SetCooldowns (line 201) | func SetCooldowns(refreshSec, useSec int) { function SetDailyLimit (line 212) | func SetDailyLimit(limit int) { type AccountInfo (line 822) | type AccountInfo struct function urlsafeB64Encode (line 908) | func urlsafeB64Encode(data []byte) string { function kqEncode (line 912) | func kqEncode(s string) string { function createJWT (line 925) | func createJWT(keyBytes []byte, keyID, csesidx string) string { function extractCSESIDX (line 944) | func extractCSESIDX(auth string) string { FILE: src/pool/pool_client.go type BrowserRegisterResult (line 18) | type BrowserRegisterResult struct type RunBrowserRegisterFunc (line 30) | type RunBrowserRegisterFunc constant ClientVersion (line 33) | ClientVersion = "2.0.0" type PoolClient (line 49) | type PoolClient struct method Start (line 78) | func (pc *PoolClient) Start() error { method Stop (line 102) | func (pc *PoolClient) Stop() { method connect (line 110) | func (pc *PoolClient) connect() error { method work (line 149) | func (pc *PoolClient) work() { method heartbeatPump (line 157) | func (pc *PoolClient) heartbeatPump() { method writePump (line 180) | func (pc *PoolClient) writePump() { method doPeriodicRegister (line 208) | func (pc *PoolClient) doPeriodicRegister() { method readPump (line 222) | func (pc *PoolClient) readPump() { method handleMessage (line 257) | func (pc *PoolClient) handleMessage(msg WSMessage) { method handleRegisterTask (line 281) | func (pc *PoolClient) handleRegisterTask(data map[string]interface{}) { method handleStatusAndRegister (line 340) | func (pc *PoolClient) handleStatusAndRegister(data map[string]interfac... method handleRefreshTask (line 379) | func (pc *PoolClient) handleRefreshTask(data map[string]interface{}) { method sendMessage (line 488) | func (pc *PoolClient) sendMessage(msg WSMessage) { method uploadAccount (line 501) | func (pc *PoolClient) uploadAccount(result *BrowserRegisterResult, isN... method uploadAccountData (line 525) | func (pc *PoolClient) uploadAccountData(req *AccountUploadRequest) err... method sendRegisterResult (line 587) | func (pc *PoolClient) sendRegisterResult(success bool, email, errMsg s... method sendRefreshResult (line 600) | func (pc *PoolClient) sendRefreshResult(email string, success bool, co... method triggerReconnect (line 614) | func (pc *PoolClient) triggerReconnect() { function NewPoolClient (line 63) | func NewPoolClient(config PoolServerConfig) *PoolClient { function getString (line 622) | func getString(m map[string]interface{}, key string) string { FILE: src/pool/pool_server.go type PoolServerConfig (line 21) | type PoolServerConfig struct type WSMessageType (line 34) | type WSMessageType constant WSMsgTaskRegister (line 38) | WSMsgTaskRegister WSMessageType = "task_register" constant WSMsgTaskRefresh (line 39) | WSMsgTaskRefresh WSMessageType = "task_refresh" constant WSMsgHeartbeat (line 40) | WSMsgHeartbeat WSMessageType = "heartbeat" constant WSMsgStatus (line 41) | WSMsgStatus WSMessageType = "status" constant WSMsgRegisterResult (line 44) | WSMsgRegisterResult WSMessageType = "register_result" constant WSMsgRefreshResult (line 45) | WSMsgRefreshResult WSMessageType = "refresh_result" constant WSMsgHeartbeatAck (line 46) | WSMsgHeartbeatAck WSMessageType = "heartbeat_ack" constant WSMsgClientReady (line 47) | WSMsgClientReady WSMessageType = "client_ready" constant WSMsgRequestTask (line 48) | WSMsgRequestTask WSMessageType = "request_task" constant WSMsgQueryStatus (line 49) | WSMsgQueryStatus WSMessageType = "query_status" constant ProtocolVersion (line 54) | ProtocolVersion = "1.0" constant ServerVersion (line 55) | ServerVersion = "4.0.0" type WSMessage (line 59) | type WSMessage struct type WSClient (line 67) | type WSClient struct method writePump (line 213) | func (c *WSClient) writePump() { method readPump (line 250) | func (c *WSClient) readPump() { method handleMessage (line 290) | func (c *WSClient) handleMessage(msg WSMessage) { type PoolServer (line 80) | type PoolServer struct method Start (line 115) | func (ps *PoolServer) Start() error { method StartBackground (line 161) | func (ps *PoolServer) StartBackground() { method HandleWS (line 170) | func (ps *PoolServer) HandleWS(w http.ResponseWriter, r *http.Request) { method HandleUploadAccount (line 174) | func (ps *PoolServer) HandleUploadAccount(w http.ResponseWriter, r *ht... method handleWebSocket (line 177) | func (ps *PoolServer) handleWebSocket(w http.ResponseWriter, r *http.R... method removeClient (line 332) | func (ps *PoolServer) removeClient(clientID string) { method taskDispatcher (line 341) | func (ps *PoolServer) taskDispatcher() { method assignTaskRoundRobin (line 375) | func (ps *PoolServer) assignTaskRoundRobin(msgType WSMessageType, data... method assignTask (line 428) | func (ps *PoolServer) assignTask(client *WSClient) { method heartbeatChecker (line 543) | func (ps *PoolServer) heartbeatChecker() { method periodicTaskBroadcaster (line 594) | func (ps *PoolServer) periodicTaskBroadcaster() { method poolMaintainer (line 610) | func (ps *PoolServer) poolMaintainer() { method periodicAccountScanner (line 666) | func (ps *PoolServer) periodicAccountScanner() { method broadcastRegisterTasks (line 687) | func (ps *PoolServer) broadcastRegisterTasks() { method sendStatusTo (line 756) | func (ps *PoolServer) sendStatusTo(client *WSClient) { method handleRegisterResult (line 782) | func (ps *PoolServer) handleRegisterResult(data map[string]interface{}) { method handleRefreshResult (line 798) | func (ps *PoolServer) handleRefreshResult(data map[string]interface{}) { method deleteAccount (line 829) | func (ps *PoolServer) deleteAccount(email string) { method updateAccountCookies (line 860) | func (ps *PoolServer) updateAccountCookies(email string, cookiesData i... method handleQueueRegister (line 889) | func (ps *PoolServer) handleQueueRegister(w http.ResponseWriter, r *ht... method handleQueueRefresh (line 912) | func (ps *PoolServer) handleQueueRefresh(w http.ResponseWriter, r *htt... method handleNext (line 964) | func (ps *PoolServer) handleNext(w http.ResponseWriter, r *http.Reques... method handleMark (line 993) | func (ps *PoolServer) handleMark(w http.ResponseWriter, r *http.Reques... method handleRefresh (line 1021) | func (ps *PoolServer) handleRefresh(w http.ResponseWriter, r *http.Req... method handleStatus (line 1048) | func (ps *PoolServer) handleStatus(w http.ResponseWriter, r *http.Requ... method handleGetJWT (line 1052) | func (ps *PoolServer) handleGetJWT(w http.ResponseWriter, r *http.Requ... method handleUploadAccount (line 1270) | func (ps *PoolServer) handleUploadAccount(w http.ResponseWriter, r *ht... method GetClientsInfo (line 1447) | func (ps *PoolServer) GetClientsInfo() []ClientInfo { method GetClientCount (line 1463) | func (ps *PoolServer) GetClientCount() int { method GetTotalThreads (line 1469) | func (ps *PoolServer) GetTotalThreads() int { function NewPoolServer (line 99) | func NewPoolServer(pool *AccountPool, config PoolServerConfig) *PoolServ... type AccountResponse (line 955) | type AccountResponse struct type RemotePoolClient (line 1099) | type RemotePoolClient struct method doRequest (line 1130) | func (rc *RemotePoolClient) doRequest(method, path string, body interf... method Next (line 1154) | func (rc *RemotePoolClient) Next() (*CachedAccount, error) { method MarkUsed (line 1187) | func (rc *RemotePoolClient) MarkUsed(email string, success bool) error { method MarkNeedsRefresh (line 1200) | func (rc *RemotePoolClient) MarkNeedsRefresh(email string) error { method GetStatus (line 1212) | func (rc *RemotePoolClient) GetStatus() (map[string]interface{}, error) { method RefreshJWT (line 1227) | func (rc *RemotePoolClient) RefreshJWT(email string) (*CachedAccount, ... method UploadAccount (line 1415) | func (rc *RemotePoolClient) UploadAccount(acc *AccountUploadRequest) e... type CachedAccount (line 1109) | type CachedAccount struct function NewRemotePoolClient (line 1118) | func NewRemotePoolClient(serverAddr, secret string) *RemotePoolClient { type AccountUploadRequest (line 1258) | type AccountUploadRequest struct type ClientInfo (line 1439) | type ClientInfo struct FILE: src/proxy/proxy.go type ProxyNode (line 29) | type ProxyNode struct type InstanceStatus (line 67) | type InstanceStatus constant InstanceStatusIdle (line 70) | InstanceStatusIdle InstanceStatus = iota constant InstanceStatusInUse (line 71) | InstanceStatusInUse constant InstanceStatusStopped (line 72) | InstanceStatusStopped type ProxyInstance (line 76) | type ProxyInstance struct type ProxyManager (line 87) | type ProxyManager struct method IsReady (line 128) | func (pm *ProxyManager) IsReady() bool { method WaitReady (line 133) | func (pm *ProxyManager) WaitReady(timeout time.Duration) bool { method SetReady (line 153) | func (pm *ProxyManager) SetReady(ready bool) { method SetMaxPoolSize (line 163) | func (pm *ProxyManager) SetMaxPoolSize(size int) { method InitInstancePool (line 172) | func (pm *ProxyManager) InitInstancePool(count int) error { method SetXrayPath (line 206) | func (pm *ProxyManager) SetXrayPath(path string) { method AddSubscribeURL (line 210) | func (pm *ProxyManager) AddSubscribeURL(url string) { method AddProxyFile (line 221) | func (pm *ProxyManager) AddProxyFile(path string) { method LoadAll (line 232) | func (pm *ProxyManager) LoadAll() error { method loadFromURL (line 310) | func (pm *ProxyManager) loadFromURL(urlStr string) ([]*ProxyNode, erro... method loadFromFile (line 341) | func (pm *ProxyManager) loadFromFile(path string) ([]*ProxyNode, error) { method parseContent (line 349) | func (pm *ProxyManager) parseContent(content string) ([]*ProxyNode, er... method parseLine (line 396) | func (pm *ProxyManager) parseLine(line string) *ProxyNode { method startInstanceLocked (line 956) | func (pm *ProxyManager) startInstanceLocked(node *ProxyNode) (*ProxyIn... method StartXray (line 984) | func (pm *ProxyManager) StartXray(node *ProxyNode) (string, error) { method StopProxy (line 996) | func (pm *ProxyManager) StopProxy(localPort int) { method StopXray (line 1001) | func (pm *ProxyManager) StopXray(localPort int) { method StopAll (line 1006) | func (pm *ProxyManager) StopAll() { method CheckHealth (line 1017) | func (pm *ProxyManager) CheckHealth(node *ProxyNode) bool { method CheckHealthQuick (line 1085) | func (pm *ProxyManager) CheckHealthQuick(node *ProxyNode) bool { method CheckAllHealth (line 1127) | func (pm *ProxyManager) CheckAllHealth() { method GetFromPool (line 1302) | func (pm *ProxyManager) GetFromPool() *ProxyInstance { method ReturnToPool (line 1321) | func (pm *ProxyManager) ReturnToPool(inst *ProxyInstance) { method ReleaseByURL (line 1331) | func (pm *ProxyManager) ReleaseByURL(proxyURL string) { method Next (line 1354) | func (pm *ProxyManager) Next() string { method MarkProxyFailed (line 1471) | func (pm *ProxyManager) MarkProxyFailed(proxyURL string) { method MarkProxySuccess (line 1492) | func (pm *ProxyManager) MarkProxySuccess(proxyURL string) { method PoolStats (line 1506) | func (pm *ProxyManager) PoolStats() map[string]int { method Count (line 1529) | func (pm *ProxyManager) Count() int { method HealthyCount (line 1539) | func (pm *ProxyManager) HealthyCount() int { method TotalCount (line 1546) | func (pm *ProxyManager) TotalCount() int { method StartAutoUpdate (line 1553) | func (pm *ProxyManager) StartAutoUpdate() { method SetProxies (line 1581) | func (pm *ProxyManager) SetProxies(proxies []string) { method StartAutoSubscribe (line 1854) | func (pm *ProxyManager) StartAutoSubscribe() { method StopAutoSubscribe (line 1857) | func (pm *ProxyManager) StopAutoSubscribe() { method GetAutoSubscribeURL (line 1860) | func (pm *ProxyManager) GetAutoSubscribeURL() string { method HasAutoSubscribe (line 1863) | func (pm *ProxyManager) HasAutoSubscribe() bool { function init (line 123) | func init() { type SubscriptionInfo (line 268) | type SubscriptionInfo struct method getRemainingTraffic (line 304) | func (si *SubscriptionInfo) getRemainingTraffic() int64 { function parseSubscriptionUserinfo (line 276) | func parseSubscriptionUserinfo(header string) *SubscriptionInfo { function tryBase64Decode (line 374) | func tryBase64Decode(s string) []byte { function getStringFromMap (line 422) | func getStringFromMap(m map[string]interface{}, key string) string { function getIntFromMap (line 437) | func getIntFromMap(m map[string]interface{}, key string) int { function parseVmess (line 453) | func parseVmess(link string) *ProxyNode { function parseVless (line 513) | func parseVless(link string) *ProxyNode { function isSupportedSSCipher (line 658) | func isSupportedSSCipher(method string) bool { function tryMapSSCipher (line 664) | func tryMapSSCipher(method string) (string, bool) { function parseSS (line 679) | func parseSS(link string) *ProxyNode { function parseTrojan (line 778) | func parseTrojan(link string) *ProxyNode { function parseHysteria2 (line 830) | func parseHysteria2(link string) *ProxyNode { function parseAnyTLS (line 880) | func parseAnyTLS(link string) *ProxyNode { function parseDirectProxy (line 930) | func parseDirectProxy(link string) *ProxyNode { constant autoRegisterURL (line 1596) | autoRegisterURL = "https://jgpyjc.top/api/v1/passport/auth/register" constant autoSubscribeBaseURL (line 1597) | autoSubscribeBaseURL = "https://bb1.jgpyjc.top/api/v1/client/subscribe?t... constant autoRegisterInterval (line 1598) | autoRegisterInterval = 1 * time.Hour type AutoSubscriber (line 1602) | type AutoSubscriber struct method refreshSubscription (line 1751) | func (as *AutoSubscriber) refreshSubscription() error { method loadToProxyManager (line 1774) | func (as *AutoSubscriber) loadToProxyManager() error { method Start (line 1799) | func (as *AutoSubscriber) Start(pm *ProxyManager) { method Stop (line 1828) | func (as *AutoSubscriber) Stop() { method GetCurrentSubscribeURL (line 1838) | func (as *AutoSubscriber) GetCurrentSubscribeURL() string { method GetCurrentToken (line 1844) | func (as *AutoSubscriber) GetCurrentToken() string { method IsExpired (line 1849) | func (as *AutoSubscriber) IsExpired() bool { function randString (line 1619) | func randString(n int) string { function ungzipIfNeeded (line 1630) | func ungzipIfNeeded(data []byte, header http.Header) ([]byte, error) { function extractToken (line 1644) | func extractToken(body []byte) string { function looksLikeJWT (line 1683) | func looksLikeJWT(s string) bool { function doAutoRegister (line 1696) | func doAutoRegister() (email, password, token string, err error) { FILE: src/proxy/singbox.go type SingboxManager (line 25) | type SingboxManager struct method IsAvailable (line 63) | func (sm *SingboxManager) IsAvailable() bool { method StartRaw (line 72) | func (sm *SingboxManager) StartRaw(node *ProxyNode) (string, error) { method Start (line 79) | func (sm *SingboxManager) Start(node *ProxyNode) (string, error) { method startInternal (line 86) | func (sm *SingboxManager) startInternal(node *ProxyNode, doTest bool) ... method testConnectivity (line 161) | func (sm *SingboxManager) testConnectivity(proxyURL string) error { method Stop (line 187) | func (sm *SingboxManager) Stop(port int) { method StopAll (line 204) | func (sm *SingboxManager) StopAll() { method findAvailablePort (line 219) | func (sm *SingboxManager) findAvailablePort() int { method generateConfigJSON (line 233) | func (sm *SingboxManager) generateConfigJSON(node *ProxyNode, localPor... method buildOutboundJSON (line 258) | func (sm *SingboxManager) buildOutboundJSON(node *ProxyNode) map[strin... method buildTransportJSON (line 408) | func (sm *SingboxManager) buildTransportJSON(node *ProxyNode) map[stri... type SingboxInstance (line 33) | type SingboxInstance struct function IsSingboxProtocol (line 50) | func IsSingboxProtocol(protocol string) bool { function CanSingboxHandle (line 59) | func CanSingboxHandle(protocol string) bool { function GetSingboxManager (line 443) | func GetSingboxManager() *SingboxManager { function InitSingbox (line 448) | func InitSingbox() { function TrySingboxStart (line 453) | func TrySingboxStart(node *ProxyNode) (string, error) { function StopSingbox (line 461) | func StopSingbox(port int) { function ParseProxyLinkWithSingbox (line 466) | func ParseProxyLinkWithSingbox(link string) *ProxyNode { function parseTUIC (line 484) | func parseTUIC(link string) *ProxyNode { FILE: src/register/browser.go function SetHTTPClient (line 46) | func SetHTTPClient(c *http.Client) { function readResponseBody (line 49) | func readResponseBody(resp *http.Response) ([]byte, error) { type TempEmailResponse (line 69) | type TempEmailResponse struct type EmailListResponse (line 75) | type EmailListResponse struct type EmailContent (line 81) | type EmailContent struct type BrowserRegisterResult (line 85) | type BrowserRegisterResult struct function generateRandomName (line 96) | func generateRandomName() string { function humanDelay (line 103) | func humanDelay(minMs, maxMs int) { function humanMouseMove (line 112) | func humanMouseMove(page *rod.Page, el *rod.Element) { function humanClick (line 144) | func humanClick(page *rod.Page, el *rod.Element) error { function humanType (line 164) | func humanType(page *rod.Page, text string) { function humanScrollToElement (line 189) | func humanScrollToElement(page *rod.Page, el *rod.Element) { function humanFocusInput (line 199) | func humanFocusInput(page *rod.Page, el *rod.Element) error { type TempMailProvider (line 209) | type TempMailProvider struct function getTemporaryEmail (line 230) | func getTemporaryEmail() (string, error) { function getEmailFromProvider (line 254) | func getEmailFromProvider(provider TempMailProvider) (string, error) { function getEmailCount (line 291) | func getEmailCount(email string) int { type VerificationState (line 317) | type VerificationState struct method MarkCodeUsed (line 331) | func (vs *VerificationState) MarkCodeUsed(code string) { method IsCodeUsed (line 336) | func (vs *VerificationState) IsCodeUsed(code string) bool { method CanResend (line 341) | func (vs *VerificationState) CanResend() bool { method RecordResend (line 354) | func (vs *VerificationState) RecordResend() { function NewVerificationState (line 325) | func NewVerificationState() *VerificationState { function getVerificationEmailQuick (line 360) | func getVerificationEmailQuick(email string, retries int, intervalSec in... function getVerificationEmailAfter (line 363) | func getVerificationEmailAfter(email string, retries int, intervalSec in... function getVerificationEmailWithState (line 366) | func getVerificationEmailWithState(email string, retries int, intervalSe... type PageState (line 410) | type PageState constant PageStateUnknown (line 413) | PageStateUnknown PageState = iota constant PageStateEmailInput (line 414) | PageStateEmailInput constant PageStateCodeInput (line 415) | PageStateCodeInput constant PageStateNameInput (line 416) | PageStateNameInput constant PageStateLoggedIn (line 417) | PageStateLoggedIn constant PageStateError (line 418) | PageStateError function GetPageState (line 421) | func GetPageState(pageURL string) PageState { function GetPageStateString (line 443) | func GetPageStateString(state PageState) string { function WaitForPageState (line 461) | func WaitForPageState(page *rod.Page, targetState PageState, timeout tim... function getWindowsBrowserPaths (line 512) | func getWindowsBrowserPaths() []string { function getLinuxBrowserPaths (line 563) | func getLinuxBrowserPaths() []string { function getMacOSBrowserPaths (line 598) | func getMacOSBrowserPaths() []string { function getBrowserPathsForOS (line 622) | func getBrowserPathsForOS() []string { function findBrowser (line 634) | func findBrowser() (string, bool) { function expandPath (line 677) | func expandPath(path string) string { function getBrowserNamesForOS (line 696) | func getBrowserNamesForOS() []string { function findBrowserByCommand (line 704) | func findBrowserByCommand() string { function findInPath (line 737) | func findInPath(name string) (string, error) { type BrowserSession (line 777) | type BrowserSession struct method SetupNetworkCapture (line 890) | func (s *BrowserSession) SetupNetworkCapture() { method ExtractFromURL (line 910) | func (s *BrowserSession) ExtractFromURL() { method ExtractCSESIDXFromAuth (line 926) | func (s *BrowserSession) ExtractCSESIDXFromAuth() { method Close (line 935) | func (s *BrowserSession) Close() { method FindEmailInput (line 946) | func (s *BrowserSession) FindEmailInput() *rod.Element { method InputTextWithKeyboard (line 960) | func (s *BrowserSession) InputTextWithKeyboard(text string, delayMs in... method ClickButton (line 968) | func (s *BrowserSession) ClickButton(targets []string, maxRetries int)... method CollectCookies (line 1000) | func (s *BrowserSession) CollectCookies(existingCookies []pool.Cookie)... function createBrowserSession (line 787) | func createBrowserSession(headless bool, proxy string, logPrefix string)... function configureBrowserLauncher (line 832) | func configureBrowserLauncher(l *launcher.Launcher, headless bool, proxy... function toJSArray (line 991) | func toJSArray(arr []string) string { function extractVerificationCode (line 1020) | func extractVerificationCode(content string) (string, error) { function safeType (line 1046) | func safeType(page *rod.Page, text string, delay int) error { function debugScreenshot (line 1081) | func debugScreenshot(page *rod.Page, threadID int, step string) { function handleAdditionalSteps (line 1102) | func handleAdditionalSteps(page *rod.Page, threadID int) bool { function checkAndHandleAdminPage (line 1212) | func checkAndHandleAdminPage(page *rod.Page, threadID int) bool { function RunBrowserRegister (line 1269) | func RunBrowserRegister(headless bool, proxy string, threadID int) (resu... function SaveBrowserRegisterResult (line 2466) | func SaveBrowserRegisterResult(result *BrowserRegisterResult, dataDir st... type BrowserRefreshResult (line 2495) | type BrowserRefreshResult struct function RefreshCookieWithBrowser (line 2506) | func RefreshCookieWithBrowser(acc *pool.Account, headless bool, proxy st... function extractCSESIDXFromAuth (line 2932) | func extractCSESIDXFromAuth(auth string) string { function NativeRegisterWorker (line 2967) | func NativeRegisterWorker(id int, dataDirAbs string) { FILE: src/register/register.go type RegisterStats (line 33) | type RegisterStats struct method AddSuccess (line 42) | func (s *RegisterStats) AddSuccess() { method AddFailed (line 50) | func (s *RegisterStats) AddFailed(err string) { method Get (line 59) | func (s *RegisterStats) Get() map[string]interface{} { type RegisterResult (line 72) | type RegisterResult struct function StartRegister (line 80) | func StartRegister(count int) error { function PoolMaintainer (line 153) | func PoolMaintainer() { function CheckAndMaintainPool (line 169) | func CheckAndMaintainPool() { FILE: src/utils/utils.go function NewHTTPClient (line 22) | func NewHTTPClient(proxy string) *http.Client { function InitHTTPClient (line 47) | func InitHTTPClient(proxy string) { function ReadResponseBody (line 56) | func ReadResponseBody(resp *http.Response) ([]byte, error) { function ParseNDJSON (line 70) | func ParseNDJSON(data []byte) []map[string]interface{} { function ParseIncompleteJSONArray (line 87) | func ParseIncompleteJSONArray(data []byte) []map[string]interface{} { function TruncateString (line 110) | func TruncateString(s string, maxLen int) string { function Min (line 118) | func Min(a, b int) int {