mirror of
https://codeberg.org/VnPower/PixivFE
synced 2024-12-06 19:16:23 +01:00
split proxy checker out to its own package
This commit is contained in:
@@ -1,6 +0,0 @@
|
||||
package config
|
||||
|
||||
import "time"
|
||||
|
||||
// todo: make this configurable
|
||||
const ProxyCheckerTimeout = 10 * time.Second
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user