add flaresolverr timeout option
All checks were successful
docker / docker (push) Successful in 27m21s

Signed-off-by: ngn <ngn@ngn.tf>
This commit is contained in:
ngn 2025-05-18 15:11:22 +03:00
parent 99cf009aac
commit 843f23f518
Signed by: ngn
GPG Key ID: A3654DF5AD9F641D
2 changed files with 34 additions and 9 deletions

View File

@ -4,6 +4,7 @@ import (
"anonymousoverflow/env"
"anonymousoverflow/src/middleware"
"anonymousoverflow/src/routes"
"anonymousoverflow/src/utils"
"fmt"
"os"
@ -14,8 +15,8 @@ import (
)
func main() {
env.RunChecks()
utils.ReqSetup()
host := os.Getenv("HOST")
if host == "" {
@ -29,7 +30,6 @@ func main() {
if os.Getenv("DEV") != "true" {
gin.SetMode(gin.ReleaseMode)
fmt.Printf("Listening on %s:%s\n", host, port)
}
r := gin.Default()
@ -92,5 +92,6 @@ func main() {
sePingCheck := checks.NewPingCheck("https://stackexchange.com", "GET", 5000, nil, nil)
healthcheck.New(r, config.DefaultConfig(), []checks.Check{soPingCheck, sePingCheck})
fmt.Printf("Starting the web server on %s:%s\n", host, port)
r.Run(fmt.Sprintf("%s:%s", host, port))
}

View File

@ -6,6 +6,7 @@ import (
"net/http"
"net/url"
"os"
"strconv"
"time"
"github.com/go-resty/resty/v2"
@ -79,17 +80,20 @@ func (s *Solution) HttpCookies() []*http.Cookie {
}
const USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.3"
const DEFAULT_TIMEOUT = 120
var solution *Solution = nil
var (
solution *Solution = nil
fs_url string = ""
fs_timeout int = DEFAULT_TIMEOUT
)
func Solve(target string) error {
fsurl := os.Getenv("FLARESOLVER")
if fsurl == "" {
if fs_url == "" {
return fmt.Errorf("flaresolver is not configured")
}
fsurl, _ = url.JoinPath(fsurl, "/v1")
url, _ := url.JoinPath(fs_url, "/v1")
response := Response{}
client := resty.New()
@ -97,10 +101,10 @@ func Solve(target string) error {
SetBody(Request{
Cmd: "request.get",
Url: target,
MaxTimeout: 40_000,
MaxTimeout: fs_timeout * 100,
OnlyCookies: true,
}).
Post(fsurl)
Post(url)
if err != nil {
return fmt.Errorf("request failed: %s", err.Error())
@ -148,3 +152,23 @@ func GET(target string, no_retry ...bool) (*resty.Response, error) {
return nil, fmt.Errorf("solution did not work")
}
func ReqSetup() {
fs_url = os.Getenv("FLARESOLVER")
timeout := os.Getenv("TIMEOUT")
if timeout == "" {
return
}
if to, err := strconv.Atoi(timeout); err != nil {
fmt.Printf("failed to parse timeout: %s\n", err.Error())
} else if to <= 0 {
fmt.Println("invalid timeout, timeout should be greater than zero")
} else {
return
}
fmt.Printf("using the default timeout instead (%d secs)\n", DEFAULT_TIMEOUT)
fs_timeout = DEFAULT_TIMEOUT
}