diff --git a/client/geo/geo.go b/client/geo/geo.go index fa5639e..c2d1db2 100644 --- a/client/geo/geo.go +++ b/client/geo/geo.go @@ -37,6 +37,7 @@ func dev() (err error) { } func cip() (err error) { + //goland:noinspection HttpUrlsUsage const endpoint = "http://cip.cc" req, err := http.NewRequest("GET", endpoint, nil) @@ -82,6 +83,7 @@ func cip() (err error) { } func ipapi() (err error) { + //goland:noinspection HttpUrlsUsage const endpoint = "http://ip-api.com/json/?fields=regionName,city,as,query&lang=zh-CN" resp, err := http.Get(endpoint) diff --git a/cmd/mock/main.go b/cmd/mock/main.go index 2d7eb5e..67c4f99 100644 --- a/cmd/mock/main.go +++ b/cmd/mock/main.go @@ -16,7 +16,7 @@ func mock() { // waiting := rand.Intn(450) + 50 // time.Sleep(time.Duration(waiting) * time.Millisecond) time.Sleep(200 * time.Millisecond) - w.Write([]byte("Hello World")) + _, _ = w.Write([]byte("Hello World")) }) serv := &http.Server{ diff --git a/go.mod b/go.mod index b3676e6..130c553 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.24 require ( github.com/gin-gonic/gin v1.10.0 + github.com/gofiber/fiber/v2 v2.52.6 github.com/google/uuid v1.6.0 github.com/joho/godotenv v1.5.1 github.com/lmittmann/tint v1.0.7 @@ -15,6 +16,7 @@ require ( ) require ( + github.com/andybalholm/brotli v1.1.0 // indirect github.com/bytedance/sonic v1.12.8 // indirect github.com/bytedance/sonic/loader v0.2.3 // indirect github.com/cloudwego/base64x v0.1.5 // indirect @@ -32,16 +34,22 @@ require ( github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.17.9 // indirect github.com/klauspost/cpuid/v2 v2.2.9 // indirect github.com/kr/text v0.2.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect + github.com/rivo/uniseg v0.2.0 // indirect github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.12 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/valyala/fasthttp v1.51.0 // indirect + github.com/valyala/tcplisten v1.0.0 // indirect golang.org/x/arch v0.14.0 // indirect golang.org/x/crypto v0.33.0 // indirect golang.org/x/mod v0.22.0 // indirect diff --git a/go.sum b/go.sum index 9278899..5a5795c 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= github.com/bytedance/sonic v1.12.8 h1:4xYRVRlXIgvSZ4e8iVTlMF5szgpXd4AfvuWgA8I8lgs= github.com/bytedance/sonic v1.12.8/go.mod h1:uVvFidNmlt9+wa31S1urfwwthTWteBgG0hWuoKAXTx8= github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= @@ -29,6 +31,8 @@ github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/gofiber/fiber/v2 v2.52.6 h1:Rfp+ILPiYSvvVuIPvxrBns+HJp8qGLDnLJawAu27XVI= +github.com/gofiber/fiber/v2 v2.52.6/go.mod h1:YEcBbO/FB+5M1IZNBP9FO3J9281zgPAreiI1oqg8nDw= github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= @@ -56,6 +60,8 @@ github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY= github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8= @@ -72,6 +78,8 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-sqlite3 v1.14.8/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= @@ -86,6 +94,8 @@ github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNH github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= @@ -106,6 +116,12 @@ github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.51.0 h1:8b30A5JlZ6C7AS81RsWjYMQmrZG6feChmgAolCl1SqA= +github.com/valyala/fasthttp v1.51.0/go.mod h1:oI2XroL+lI7vdXyYoQk03bXBThfFl2cVdIA3Xl7cH8g= +github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= +github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= golang.org/x/arch v0.14.0 h1:z9JUEZWr8x4rR0OU6c4/4t6E6jOZ8/QBS2bBYBm4tx4= golang.org/x/arch v0.14.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/server/pkg/env/env.go b/server/pkg/env/env.go index 93b5f0d..3c78ee7 100644 --- a/server/pkg/env/env.go +++ b/server/pkg/env/env.go @@ -13,7 +13,7 @@ var ( AppCtrlPort uint16 = 18080 AppDataPort uint16 = 18081 AppWebPort uint16 = 8848 - AppLogMode string = "dev" + AppLogMode = "dev" ClientId string ClientSecret string @@ -23,7 +23,7 @@ var ( DbDatabase string DbUsername string DbPassword string - DbTimezone string = "Asia/Shanghai" + DbTimezone = "Asia/Shanghai" EndpointOnline string EndpointOffline string diff --git a/server/web/handlers/debug.go b/server/web/handlers/debug.go index 06fbbf1..fe2a69a 100644 --- a/server/web/handlers/debug.go +++ b/server/web/handlers/debug.go @@ -2,13 +2,12 @@ package handlers import ( "fmt" + "github.com/gofiber/fiber/v2" "proxy-server/server/debug" "slices" - - "github.com/gin-gonic/gin" ) -func GetConsuming(c *gin.Context) { +func GetConsuming(c *fiber.Ctx) error { list := debug.ConsumingList() // sort by total time slices.SortFunc(list, func(a debug.Consuming, b debug.Consuming) int { @@ -25,12 +24,12 @@ func GetConsuming(c *gin.Context) { times := list[i] strList[i] = fmt.Sprintf("Auth: %s, Data: %s, Proxy: %s, Total: %s", times.Auth, times.Data, times.Proxy, times.Total) } - c.JSON(200, strList) + return c.JSON(strList) } -func RestConsuming(c *gin.Context) { +func RestConsuming(c *fiber.Ctx) error { debug.InitConsumingList() - c.JSON(200, gin.H{ + return c.JSON(fiber.Map{ "message": "success", }) } diff --git a/server/web/router.go b/server/web/router.go index 85b0eb4..fec3f6f 100644 --- a/server/web/router.go +++ b/server/web/router.go @@ -1,12 +1,12 @@ package web import ( + "github.com/gofiber/fiber/v2" "proxy-server/server/web/handlers" - - "github.com/gin-gonic/gin" ) -func Router(r *gin.Engine) { - r.Handle("GET", "/debug/consuming/list", handlers.GetConsuming) - r.Handle("GET", "/debug/consuming/reset", handlers.RestConsuming) +func Router(r *fiber.App) { + var debug = r.Group("/debug") + debug.Get("/debug/consuming/list", handlers.GetConsuming) + debug.Get("/debug/consuming/reset", handlers.RestConsuming) } diff --git a/server/web/web.go b/server/web/web.go index 2fc1b64..f491606 100644 --- a/server/web/web.go +++ b/server/web/web.go @@ -1,16 +1,14 @@ package web import ( - "context" - "net/http" "proxy-server/server/pkg/env" "strconv" - "github.com/gin-gonic/gin" + "github.com/gofiber/fiber/v2" ) type Server struct { - http *http.Server + web *fiber.App } func New() *Server { @@ -18,15 +16,14 @@ func New() *Server { } func (s *Server) Run() error { - address := ":" + strconv.Itoa(int(env.AppWebPort)) - engine := gin.Default() - s.http = &http.Server{Addr: address, Handler: engine} + s.web = fiber.New() // 配置中间件和路由 - Router(engine) + Router(s.web) // 启动服务 - err := s.http.ListenAndServe() + address := ":" + strconv.Itoa(int(env.AppWebPort)) + err := s.web.Listen(address) if err != nil { return err } @@ -35,7 +32,7 @@ func (s *Server) Run() error { } func (s *Server) Stop() error { - err := s.http.Shutdown(context.Background()) + err := s.web.Shutdown() if err != nil { return err }