From 26816874a80faf6d341a4d1c038a9aaaf72c79c4 Mon Sep 17 00:00:00 2001 From: wjqserver <114663932+WJQSERVER@users.noreply.github.com> Date: Fri, 18 Jul 2025 16:57:38 +0800 Subject: [PATCH 1/3] 3.0.0-beta.1 --- CHANGELOG.md | 5 + DEV-VERSION | 2 +- caddyfile/dev/Caddyfile | 101 -------- caddyfile/release/Caddyfile | 101 -------- go.mod | 1 + go.sum | 2 + main.go | 3 + pages/index.html | 504 ++++++++++++++++++------------------ 8 files changed, 271 insertions(+), 448 deletions(-) delete mode 100644 caddyfile/dev/Caddyfile delete mode 100644 caddyfile/release/Caddyfile diff --git a/CHANGELOG.md b/CHANGELOG.md index 16be201..40419c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # 更新日志 +3.0.0-beta.1 +--- +- REFACTOR: 使用Touka框架重构, 去除caddy依赖, 大幅减小体积和额外的开销 +- REFACTOR: 重构前端页面, 进行现代化响应式改造, 同时加入自动深色模式 + 3.0.0-beta.0 --- - 使用Touka框架重构, 去除caddy依赖, 大幅减小体积和额外的开销 diff --git a/DEV-VERSION b/DEV-VERSION index f48b9c8..6467db1 100644 --- a/DEV-VERSION +++ b/DEV-VERSION @@ -1 +1 @@ -3.0.0-beta.0 \ No newline at end of file +3.0.0-beta.1 \ No newline at end of file diff --git a/caddyfile/dev/Caddyfile b/caddyfile/dev/Caddyfile deleted file mode 100644 index 1c19b9c..0000000 --- a/caddyfile/dev/Caddyfile +++ /dev/null @@ -1,101 +0,0 @@ -{ - debug - http_port 80 - https_port 443 - order cache before rewrite - cache { - cache_name W-Cache - } - log { - level INFO - output file /data/caddy/log/caddy.log { - roll_size 5MB - roll_keep 10 - } - } -} - -(log) { - log { - format transform `{request>headers>X-Forwarded-For>[0]:request>remote_ip} - {user_id} [{ts}] "{request>method} {request>uri} {request>proto}" {status} {size} "{request>headers>Referer>[0]}" "{request>headers>User-Agent>[0]}"` { - time_format "02/Jan/2006:15:04:05 -0700" - } - output file /data/caddy/log/{args.0}/access.log { - roll_size 5MB - roll_keep 10 - roll_keep_for 24h - } - } -} - -(error_page) { - handle_errors { - rewrite * /{err.status_code}.html - root * /data/caddy/pages/errors - file_server - } -} - -(encode) { - encode { - zstd best - br 5 v2 - gzip 5 - minimum_length 512 - } -} - -(cache) { - cache { - allowed_http_verbs GET - stale {args.0} - ttl {args.1} - } -} - -(header_realip) { - header_up X-Real-IP {remote_host} - header_up X-Real-IP {http.request.header.CF-Connecting-IP} - header_up X-Forwarded-For {http.request.header.CF-Connecting-IP} - header_up X-Forwarded-Proto {http.request.header.CF-Visitor} -} - -(buffer) { - flush_interval 2000s - buffer_responses - max_buffer_size 256k -} - -(rate_limit) { - route /* { - rate_limit {remote.ip} {args.0}r/m 10000 429 - } -} - -:80 { - reverse_proxy { - to 127.0.0.1:8080 - import header_realip - } - import log ip - import error_page - import encode - route /* { - rate_limit {remote.ip} 60r/m 10000 429 - } - route / { - root /data/www - file_server - import cache 0s 24h - } - route /favicon.ico { - root /data/www - file_server - import cache 60s 24h - } - route /bilibili* { - rate_limit {remote.ip} 30r/m 10000 429 - } -} - -import /data/caddy/config.d/* diff --git a/caddyfile/release/Caddyfile b/caddyfile/release/Caddyfile deleted file mode 100644 index 1c19b9c..0000000 --- a/caddyfile/release/Caddyfile +++ /dev/null @@ -1,101 +0,0 @@ -{ - debug - http_port 80 - https_port 443 - order cache before rewrite - cache { - cache_name W-Cache - } - log { - level INFO - output file /data/caddy/log/caddy.log { - roll_size 5MB - roll_keep 10 - } - } -} - -(log) { - log { - format transform `{request>headers>X-Forwarded-For>[0]:request>remote_ip} - {user_id} [{ts}] "{request>method} {request>uri} {request>proto}" {status} {size} "{request>headers>Referer>[0]}" "{request>headers>User-Agent>[0]}"` { - time_format "02/Jan/2006:15:04:05 -0700" - } - output file /data/caddy/log/{args.0}/access.log { - roll_size 5MB - roll_keep 10 - roll_keep_for 24h - } - } -} - -(error_page) { - handle_errors { - rewrite * /{err.status_code}.html - root * /data/caddy/pages/errors - file_server - } -} - -(encode) { - encode { - zstd best - br 5 v2 - gzip 5 - minimum_length 512 - } -} - -(cache) { - cache { - allowed_http_verbs GET - stale {args.0} - ttl {args.1} - } -} - -(header_realip) { - header_up X-Real-IP {remote_host} - header_up X-Real-IP {http.request.header.CF-Connecting-IP} - header_up X-Forwarded-For {http.request.header.CF-Connecting-IP} - header_up X-Forwarded-Proto {http.request.header.CF-Visitor} -} - -(buffer) { - flush_interval 2000s - buffer_responses - max_buffer_size 256k -} - -(rate_limit) { - route /* { - rate_limit {remote.ip} {args.0}r/m 10000 429 - } -} - -:80 { - reverse_proxy { - to 127.0.0.1:8080 - import header_realip - } - import log ip - import error_page - import encode - route /* { - rate_limit {remote.ip} 60r/m 10000 429 - } - route / { - root /data/www - file_server - import cache 0s 24h - } - route /favicon.ico { - root /data/www - file_server - import cache 60s 24h - } - route /bilibili* { - rate_limit {remote.ip} 30r/m 10000 429 - } -} - -import /data/caddy/config.d/* diff --git a/go.mod b/go.mod index dc2c985..cdd9ffb 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.24.5 require ( github.com/BurntSushi/toml v1.5.0 github.com/fenthope/reco v0.0.3 + github.com/fenthope/record v0.0.3 github.com/infinite-iroha/touka v0.3.1 github.com/oschwald/maxminddb-golang/v2 v2.0.0-beta.8 ) diff --git a/go.sum b/go.sum index a143080..5f74d39 100644 --- a/go.sum +++ b/go.sum @@ -8,6 +8,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/fenthope/reco v0.0.3 h1:RmnQ0D9a8PWtwOODawitTe4BztTnS9wYwrDbipISNq4= github.com/fenthope/reco v0.0.3/go.mod h1:mDkGLHte5udWTIcjQTxrABRcf56SSdxBOCLgrRDwI/Y= +github.com/fenthope/record v0.0.3 h1:v5urgs5LAkLMlljAT/MjW8fWuRHXPnAraTem5ui7rm4= +github.com/fenthope/record v0.0.3/go.mod h1:KFEkSc4TDZ3QIhP/wglD32uYVA6X1OUcripiao1DEE4= github.com/go-json-experiment/json v0.0.0-20250714165856-be8212f5270d h1:+d6m5Bjvv0/RJct1VcOw2P5bvBOGjENmxORJYnSYDow= github.com/go-json-experiment/json v0.0.0-20250714165856-be8212f5270d/go.mod h1:TiCD2a1pcmjd7YnhGH0f/zKNcCD06B029pHhzV23c2M= github.com/infinite-iroha/touka v0.3.1 h1:djR9hg5MbVpT1dIz2GWo4MZ/kx3l6bJ4nrpzpvdi3uk= diff --git a/main.go b/main.go index 4359162..4fb9f44 100644 --- a/main.go +++ b/main.go @@ -14,6 +14,7 @@ import ( "ip/db" "github.com/fenthope/reco" + "github.com/fenthope/record" "github.com/infinite-iroha/touka" ) @@ -86,6 +87,8 @@ func main() { updateDB(cfg) setupDB(cfg) router.SetLogger(logger) + router.Use(record.Middleware()) + pFS, err := fs.Sub(pagesFS, "pages") if err != nil { logger.Errorf("Failed to load embedded pages: %v\n", err) diff --git a/pages/index.html b/pages/index.html index 92de0c6..2b662e5 100644 --- a/pages/index.html +++ b/pages/index.html @@ -1,288 +1,302 @@ - - - IP地址查询 - + + IP 地址查询 - - + - -
- -
-
- 本地API查询结果 -
- -
-
-
-

正在获取连接信息...

-
-
- - -
-
- Cloudflare API 查询结果 -
- -
-
-
-

正在获取连接信息...

-
-
+
+

IP 地址查询

+

聚合多个 API 的查询结果

+
+ +
+

正在获取您的公网 IP 地址...

+
- +
+
+ -
+ - + + renderCardContent(elementId, ` + IP地址: ${data.ip}
+ ASN: ${data.asn}
+ ISP: ${data.org}
+ 国家/地区: ${data.country_name} ${flag}
+ 城市: ${data.city}, ${data.region} + `); + } catch (error) { renderCardContent(elementId, `获取连接信息失败: ${error.message}`, true); } + } + - - - - + \ No newline at end of file From 4c0047416ab0500977fc7efc972ec6028a195004 Mon Sep 17 00:00:00 2001 From: wjqserver <114663932+WJQSERVER@users.noreply.github.com> Date: Fri, 18 Jul 2025 17:02:14 +0800 Subject: [PATCH 2/3] 3.0.0 --- CHANGELOG.md | 5 +++++ VERSION | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 40419c9..9ae6165 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # 更新日志 +3.0.0 +--- +- REFACTOR: 使用Touka框架重构, 去除caddy依赖, 大幅减小体积和额外的开销 +- REFACTOR: 重构前端页面, 进行现代化响应式改造, 同时加入自动深色模式 + 3.0.0-beta.1 --- - REFACTOR: 使用Touka框架重构, 去除caddy依赖, 大幅减小体积和额外的开销 diff --git a/VERSION b/VERSION index c346e7a..56fea8a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.1.4 \ No newline at end of file +3.0.0 \ No newline at end of file From f4b05f7233151bfa0deb798e2334209733a1af3b Mon Sep 17 00:00:00 2001 From: wjqserver <114663932+WJQSERVER@users.noreply.github.com> Date: Fri, 18 Jul 2025 17:02:35 +0800 Subject: [PATCH 3/3] 3.0.0 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index da49fe9..567455f 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ ## 部署 ``` -docker run -d -p 8980:80 -v ./ipinfo/db:/data/ipinfo/db -v ./ipinfo/log:/data/ipinfo/log --restart always wjqserver/ip:latest +docker run -d -p 8980:8080 -v ./ipinfo/db:/data/ipinfo/db -v ./ipinfo/log:/data/ipinfo/log --restart always wjqserver/ip:latest ``` 需导入mmdb数据库(ipinfo)才可正常使用自有API