From d9b1293512c7adda131cf806dabe2a149ea98f24 Mon Sep 17 00:00:00 2001 From: iacore Date: Thu, 5 Sep 2024 17:35:10 +0000 Subject: [PATCH] split proxy checker out to its own package --- config/constants.go | 6 ------ main.go | 8 +++++--- {config => proxy_checker}/proxy_checker.go | 23 +++++++++------------- server/routes/settings.go | 3 ++- 4 files changed, 16 insertions(+), 24 deletions(-) delete mode 100644 config/constants.go rename {config => proxy_checker}/proxy_checker.go (84%) diff --git a/config/constants.go b/config/constants.go deleted file mode 100644 index 472eb23..0000000 --- a/config/constants.go +++ /dev/null @@ -1,6 +0,0 @@ -package config - -import "time" - -// todo: make this configurable -const ProxyCheckerTimeout = 10 * time.Second diff --git a/main.go b/main.go index 2f42d9a..4a5d52c 100644 --- a/main.go +++ b/main.go @@ -10,9 +10,11 @@ import ( "os/exec" "runtime" "syscall" + "time" - "codeberg.org/vnpower/pixivfe/v2/server/audit" "codeberg.org/vnpower/pixivfe/v2/config" + "codeberg.org/vnpower/pixivfe/v2/proxy_checker" + "codeberg.org/vnpower/pixivfe/v2/server/audit" "codeberg.org/vnpower/pixivfe/v2/server/handlers" "codeberg.org/vnpower/pixivfe/v2/server/template" ) @@ -23,9 +25,9 @@ func main() { template.Init(config.GlobalConfig.InDevelopment) // Initialize and start the proxy checker - ctx_timeout, cancel := context.WithTimeout(context.Background(), config.ProxyCheckerTimeout) + ctx_timeout, cancel := context.WithTimeout(context.Background(), 10 * time.Second) defer cancel() - config.InitializeProxyChecker(ctx_timeout) + proxy_checker.InitializeProxyChecker(ctx_timeout) handlers.InitializeRateLimiter() router := handlers.DefineRoutes() diff --git a/config/proxy_checker.go b/proxy_checker/proxy_checker.go similarity index 84% rename from config/proxy_checker.go rename to proxy_checker/proxy_checker.go index d246730..1b87038 100644 --- a/config/proxy_checker.go +++ b/proxy_checker/proxy_checker.go @@ -1,4 +1,4 @@ -package config +package proxy_checker import ( "context" @@ -8,25 +8,22 @@ import ( "strings" "sync" "time" + + "codeberg.org/vnpower/pixivfe/v2/config" + "codeberg.org/vnpower/pixivfe/v2/server/utils" ) const ( - proxyCheckTimeout = 10 * time.Second testImagePath = "/img-original/img/2024/01/21/20/50/51/115365120_p0.jpg" ) var ( workingProxies []string workingProxiesMutex sync.RWMutex - stopChan chan struct{} + stopChan chan struct{} = make(chan struct{}) ) func InitializeProxyChecker(r context.Context) { - stopChan = make(chan struct{}) - StartProxyChecker(r) -} - -func StartProxyChecker(r context.Context) { go func() { for { select { @@ -35,7 +32,7 @@ func StartProxyChecker(r context.Context) { return default: checkProxies(r) - if t := GlobalConfig.ProxyCheckInterval; t > 0 { + if t := config.GlobalConfig.ProxyCheckInterval; t > 0 { time.Sleep(t) } else { log.Print("Proxy check interval set to 0, disabling auto-check from now on.") @@ -56,9 +53,9 @@ func checkProxies(r context.Context) { var mutex sync.Mutex var newWorkingProxies []string - logf("Total proxies to check: %d", len(BuiltinProxyList)) + logf("Total proxies to check: %d", len(config.BuiltinProxyList)) - for _, proxy := range BuiltinProxyList { + for _, proxy := range config.BuiltinProxyList { wg.Add(1) go func(proxyURL string) { defer wg.Done() @@ -84,8 +81,6 @@ func checkProxies(r context.Context) { } func testProxy(r context.Context, proxyBaseURL string) (bool, *http.Response) { - client := &http.Client{Timeout: proxyCheckTimeout} - fullURL := fmt.Sprintf("%s%s", strings.TrimRight(proxyBaseURL, "/"), testImagePath) logf("Testing proxy %s with full URL: %s", proxyBaseURL, fullURL) @@ -95,7 +90,7 @@ func testProxy(r context.Context, proxyBaseURL string) (bool, *http.Response) { return false, nil } - resp, err := client.Do(req) + resp, err := utils.HttpClient.Do(req) if err != nil { logf("Error testing proxy %s: %v", proxyBaseURL, err) return false, nil diff --git a/server/routes/settings.go b/server/routes/settings.go index aa70efc..7e3124b 100644 --- a/server/routes/settings.go +++ b/server/routes/settings.go @@ -10,6 +10,7 @@ import ( "codeberg.org/vnpower/pixivfe/v2/config" "codeberg.org/vnpower/pixivfe/v2/core" + "codeberg.org/vnpower/pixivfe/v2/proxy_checker" "codeberg.org/vnpower/pixivfe/v2/server/session" "codeberg.org/vnpower/pixivfe/v2/server/utils" ) @@ -144,7 +145,7 @@ func resetAll(w http.ResponseWriter, _ *http.Request) error { } func SettingsPage(w http.ResponseWriter, r *http.Request) error { - return Render(w, r, Data_settings{WorkingProxyList: config.GetWorkingProxies(), ProxyList: config.BuiltinProxyList}) + return Render(w, r, Data_settings{WorkingProxyList: proxy_checker.GetWorkingProxies(), ProxyList: config.BuiltinProxyList}) } func SettingsPost(w http.ResponseWriter, r *http.Request) error {