From 83368969797bc0a23d1881a10358a4b7cddcc896 Mon Sep 17 00:00:00 2001 From: WJQSERVER Date: Tue, 18 Feb 2025 10:19:11 +0800 Subject: [PATCH] feat(pages): add page theme configuration and static files --- README.md | 1 + config/config.go | 7 + config/config.toml | 1 + deploy/config.toml | 1 + deploy/install-dev.sh | 4 +- deploy/install.sh | 4 +- go.mod | 2 +- go.sum | 18 +- main.go | 24 +- pages/{ => bootstrap}/favicon.ico | Bin pages/bootstrap/index.html | 440 ++++++++++++++++++++++++++++++ pages/nebula/favicon.ico | Bin 0 -> 3262 bytes pages/{ => nebula}/index.html | 0 13 files changed, 477 insertions(+), 25 deletions(-) rename pages/{ => bootstrap}/favicon.ico (100%) create mode 100644 pages/bootstrap/index.html create mode 100644 pages/nebula/favicon.ico rename pages/{ => nebula}/index.html (100%) diff --git a/README.md b/README.md index 97b1c8a..eb246b7 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,7 @@ maxConnsPerHost = 0 # only for advanced mode 仅用于高级模式 [pages] enabled = false # 是否开启内置静态页面(Docker版本请关闭此项) +theme = "bootstrap" # "bootstrap" or "nebula" 内置主题 staticPath = "/data/www" # 静态页面文件路径 [log] diff --git a/config/config.go b/config/config.go index bad1557..de887ce 100644 --- a/config/config.go +++ b/config/config.go @@ -39,8 +39,15 @@ type HttpcConfig struct { MaxConnsPerHost int `toml:"maxConnsPerHost"` } +/* +[pages] +enabled = false +theme = "bootstrap" # "bootstrap" or "nebula" +staticDir = "/data/www" +*/ type PagesConfig struct { Enabled bool `toml:"enabled"` + Theme string `toml:"theme"` StaticDir string `toml:"staticDir"` } diff --git a/config/config.toml b/config/config.toml index 12f1422..919bcb8 100644 --- a/config/config.toml +++ b/config/config.toml @@ -13,6 +13,7 @@ maxConnsPerHost = 0 # only for advanced mode [pages] enabled = false +theme = "bootstrap" # "bootstrap" or "nebula" staticDir = "/data/www" [log] diff --git a/deploy/config.toml b/deploy/config.toml index bdbcfcf..8f80a32 100644 --- a/deploy/config.toml +++ b/deploy/config.toml @@ -13,6 +13,7 @@ maxConnsPerHost = 0 # only for advanced mode [pages] enabled = false +theme = "bootstrap" # "bootstrap" or "nebula" staticDir = "/usr/local/ghproxy/pages" [log] diff --git a/deploy/install-dev.sh b/deploy/install-dev.sh index 03d6030..e412c46 100644 --- a/deploy/install-dev.sh +++ b/deploy/install-dev.sh @@ -90,8 +90,8 @@ tar -zxvf ${ghproxy_dir}/ghproxy-linux-$ARCH.tar.gz -C ${ghproxy_dir} chmod +x ${ghproxy_dir}/ghproxy # 下载pages -wget -q -O ${ghproxy_dir}/pages/index.html https://raw.githubusercontent.com/WJQSERVER-STUDIO/ghproxy/dev/pages/index.html -wget -q -O ${ghproxy_dir}/pages/favicon.ico https://raw.githubusercontent.com/WJQSERVER-STUDIO/ghproxy/dev/pages/favicon.ico +wget -q -O ${ghproxy_dir}/pages/index.html https://raw.githubusercontent.com/WJQSERVER-STUDIO/ghproxy/dev/pages/boostrap/index.html +wget -q -O ${ghproxy_dir}/pages/favicon.ico https://raw.githubusercontent.com/WJQSERVER-STUDIO/ghproxy/dev/pages/bootstrap/favicon.ico # 下载配置文件 diff --git a/deploy/install.sh b/deploy/install.sh index b054299..f050a0b 100644 --- a/deploy/install.sh +++ b/deploy/install.sh @@ -90,8 +90,8 @@ tar -zxvf ${ghproxy_dir}/ghproxy-linux-$ARCH.tar.gz -C ${ghproxy_dir} chmod +x ${ghproxy_dir}/ghproxy # 下载pages -wget -q -O ${ghproxy_dir}/pages/index.html https://raw.githubusercontent.com/WJQSERVER-STUDIO/ghproxy/main/pages/index.html -wget -q -O ${ghproxy_dir}/pages/favicon.ico https://raw.githubusercontent.com/WJQSERVER-STUDIO/ghproxy/main/pages/favicon.ico +wget -q -O ${ghproxy_dir}/pages/index.html https://raw.githubusercontent.com/WJQSERVER-STUDIO/ghproxy/main/pages/bootstrap/index.html +wget -q -O ${ghproxy_dir}/pages/favicon.ico https://raw.githubusercontent.com/WJQSERVER-STUDIO/ghproxy/main/pages/bootstrap/favicon.ico # 下载配置文件 diff --git a/go.mod b/go.mod index 0447312..f739c4e 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/BurntSushi/toml v1.4.0 github.com/WJQSERVER-STUDIO/go-utils/logger v1.3.0 github.com/gin-gonic/gin v1.10.0 - github.com/satomitouka/touka-httpc v0.1.0 + github.com/satomitouka/touka-httpc v0.2.0 golang.org/x/net v0.35.0 golang.org/x/time v0.10.0 ) diff --git a/go.sum b/go.sum index f54b7f8..7c6bb67 100644 --- a/go.sum +++ b/go.sum @@ -25,8 +25,6 @@ github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/o github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.24.0 h1:KHQckvo8G6hlWnrPX4NJJ+aBfWNAE/HH+qdL2cBpCmg= -github.com/go-playground/validator/v10 v10.24.0/go.mod h1:GGzBIJMuE98Ic/kJsBXbz1x/7cByt++cQ+YOuDM5wus= github.com/go-playground/validator/v10 v10.25.0 h1:5Dh7cjvzR7BRZadnsVOzPhWsrwUr0nmsZJxEAnFLNO8= github.com/go-playground/validator/v10 v10.25.0/go.mod h1:GGzBIJMuE98Ic/kJsBXbz1x/7cByt++cQ+YOuDM5wus= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= @@ -53,20 +51,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/satomitouka/touka-httpc v0.0.3 h1:SLb14DWBIDeIaNQ0wMwRwJMjUDakHVR1Jbdct3Qi8fA= -github.com/satomitouka/touka-httpc v0.0.3/go.mod h1:ULB/0Ze0Apm46YKl35Jmj1hW5YLVVeOGqCqn+ijqGPM= -github.com/satomitouka/touka-httpc v0.0.4 h1:sZs/2kqTSyLQ/pDHs/71l7MSG46j4rZNKfqn3CFAboU= -github.com/satomitouka/touka-httpc v0.0.4/go.mod h1:ULB/0Ze0Apm46YKl35Jmj1hW5YLVVeOGqCqn+ijqGPM= -github.com/satomitouka/touka-httpc v0.0.5 h1:ov1v29vrjvwRNbGqFJHmrCp+3/qXLoyWubO4kTDvb28= -github.com/satomitouka/touka-httpc v0.0.5/go.mod h1:ULB/0Ze0Apm46YKl35Jmj1hW5YLVVeOGqCqn+ijqGPM= -github.com/satomitouka/touka-httpc v0.0.6 h1:1iSaTB9KpviXy2NHvMXuRzy5mkcvle+fktWPhpS907c= -github.com/satomitouka/touka-httpc v0.0.6/go.mod h1:ULB/0Ze0Apm46YKl35Jmj1hW5YLVVeOGqCqn+ijqGPM= -github.com/satomitouka/touka-httpc v0.0.7 h1:igoLqXs6R1yNIdKMcfpwRB1l6KLLus6DvWT3xL1T5FY= -github.com/satomitouka/touka-httpc v0.0.7/go.mod h1:ULB/0Ze0Apm46YKl35Jmj1hW5YLVVeOGqCqn+ijqGPM= -github.com/satomitouka/touka-httpc v0.0.8 h1:KW521Z2z9BarnTgCajug/W/tIbnoIH+CzA7CON19iAg= -github.com/satomitouka/touka-httpc v0.0.8/go.mod h1:ULB/0Ze0Apm46YKl35Jmj1hW5YLVVeOGqCqn+ijqGPM= -github.com/satomitouka/touka-httpc v0.1.0 h1:CXCsr6NhdskK/W/ezvhwK2CP8QGCxewkBhsEjrM7K8s= -github.com/satomitouka/touka-httpc v0.1.0/go.mod h1:ULB/0Ze0Apm46YKl35Jmj1hW5YLVVeOGqCqn+ijqGPM= +github.com/satomitouka/touka-httpc v0.2.0 h1:JohnKH0T5KuVcouycqSI70oJIhMxY1nlNDhgZRxI73s= +github.com/satomitouka/touka-httpc v0.2.0/go.mod h1:ULB/0Ze0Apm46YKl35Jmj1hW5YLVVeOGqCqn+ijqGPM= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= diff --git a/main.go b/main.go index 88606f7..863caa6 100644 --- a/main.go +++ b/main.go @@ -35,8 +35,10 @@ var ( ) var ( - //go:embed pages/* + //go:embed pages/bootstrap/* pagesFS embed.FS + //go:embed pages/nebula/* + NebulaPagesFS embed.FS ) var ( @@ -159,9 +161,23 @@ func init() { }) router.StaticFile("/favicon.ico", faviconPath) } else if !cfg.Pages.Enabled { - pages, err := fs.Sub(pagesFS, "pages") - if err != nil { - logError("Failed when processing pages: %s", err) + var pages fs.FS + var err error + if cfg.Pages.Theme == "bootstrap" { + pages, err = fs.Sub(pagesFS, "pages/bootstrap") + if err != nil { + logError("Failed when processing pages: %s", err) + } + } else if cfg.Pages.Theme == "nebula" { + pages, err = fs.Sub(NebulaPagesFS, "pages/nebula") + if err != nil { + logError("Failed when processing pages: %s", err) + } + } else { + pages, err = fs.Sub(pagesFS, "pages/bootstrap") + if err != nil { + logError("Failed when processing pages: %s", err) + } } router.GET("/", gin.WrapH(http.FileServer(http.FS(pages)))) router.GET("/favicon.ico", gin.WrapH(http.FileServer(http.FS(pages)))) diff --git a/pages/favicon.ico b/pages/bootstrap/favicon.ico similarity index 100% rename from pages/favicon.ico rename to pages/bootstrap/favicon.ico diff --git a/pages/bootstrap/index.html b/pages/bootstrap/index.html new file mode 100644 index 0000000..066332a --- /dev/null +++ b/pages/bootstrap/index.html @@ -0,0 +1,440 @@ + + + + + + + Github文件加速 + + + + + + + +
+
+
+
+

Github文件加速

+

为访问Github文件进行加速

+
+
+ +
+ +
+ +

GitHub 链接带不带协议头均可,支持 release、archive 以及文件,转换后链接均可使用。

+
+
+
+
+
+
+
文件大小限制
+

...

+
+
+
+
+
+
+
白名单状态
+

...

+
+
+
+
+
+
+
黑名单状态
+

...

+
+
+
+
+
+ +
+ +
+ +
+ +
+ + + + + + \ No newline at end of file diff --git a/pages/nebula/favicon.ico b/pages/nebula/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9c04d31ade74151073f9c5d87d6dc75f72d58111 GIT binary patch literal 3262 zcmc(g%PaO<6vux!?)QX)(#zx+G4Yz1oB=`xk4_k~2{*$u+lPAVnFQnV84` zu2mwhy4uW$JqDx_t)3gx3@R6g~s8NNtS-h{~Q4w9s4>n zn0*F-6UM&!nXe3$@bU5S=;&xgMaB2;-+yyhYHDg}Y3cCr@ZsU16bNB<_nD@dmpGrh zySwG(<$ivCoSBD*hx5r4U{3GDiKCcPfz)pG~&Pj=jZ1?KR>e(6ig|c9A#czT@9W*jRK#= z#l=HILn9+2EiEm*y}cwHA0N*=7z{8zwQ{4cYtYx%Cvip$uBud3RdsQ3v9+~DwO3bH zcXoDygM$Td06+45R&auXK3*#T z>EmETVTlkDH1$!$`ucjnl-Cf!Pfbmc`Qzi`{{BAsZ)|Lk|MvEFNJxl*DTFd9Dk^f) z*NL2;pNEBo8H&K2ot@-UR#rARI0)FMF&0f+hk;KVVB8zT3aOza_){Os&37|Dv2 zmX^jX_4V~-J|Q9D^70ZEZGmxaZcg)#2p{(fGjy(jK^mvAu@QiZgM-Dz#lcEXPhVbM zzQ4bJd3gc+af2QG=l1q?U|_)MltpL1Ak8W3EHX1Q(Nz9XQBjeRk$jevlz_z0lw(G* zmX?+R0s=Ve*w|Qqe}C?ORA5` zSW{EuUSFXX78VRqbS?%&lf2U4;RBPhU{nd1qT{%lh+JJm6rINo*lb+R{QSI0L&p>z z9?qixX)dA&D!QRxU0p>)M1YjIkj>4_LIQR*mKGNm4Mjvc%+b*i zOZJUx3r$T;fVIbe-6ivnf@ zT^&}ni;0N|^9!Qn83}}$PgRVU+uz@>%-xGCoC$Gqa>7PJLqk;rlezgMfx5c7gM$Nz zWc3wsvm=AQzP_g06DTVyiylQA%*e=~_07!8@Vf@y