From b10c5d63a3a14ed957b1929cba724a5f064ed4e2 Mon Sep 17 00:00:00 2001 From: "DESKTOP-L8OUL9F\\gfl0034" <1003614916@qq.com> Date: Thu, 24 Sep 2026 10:25:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(brand):=20=E4=B8=89=E7=AB=99=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2=E5=9B=9B=E8=89=B2=E7=81=AB=E7=84=B0=20logo=20?= =?UTF-8?q?=E4=B8=8E=20favicon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 官网/docs 嵌入新品牌图;sparkapi nginx 可在未重建镜像时提供 /favicon.ico 与页头 logo。 Co-authored-by: Cursor --- deploy/brand/apple-touch-icon.png | Bin 0 -> 32899 bytes deploy/brand/favicon-16.png | Bin 0 -> 690 bytes deploy/brand/favicon-32.png | Bin 0 -> 1925 bytes deploy/brand/favicon.ico | Bin 0 -> 6535 bytes deploy/brand/logo-256.png | Bin 0 -> 11916 bytes deploy/brand/logo.png | Bin 0 -> 11916 bytes deploy/nginx/host/sparkapi.conf | 22 ++++++++ internal/transport/http/auth.go | 3 +- internal/transport/http/docs.go | 51 ++++++++++++++++++ internal/transport/http/docs/index.html | 15 +++++- .../http/docs/static/apple-touch-icon.png | Bin 0 -> 32899 bytes .../transport/http/docs/static/favicon-16.png | Bin 0 -> 690 bytes .../transport/http/docs/static/favicon-32.png | Bin 0 -> 1925 bytes .../transport/http/docs/static/favicon.ico | Bin 0 -> 6535 bytes .../transport/http/docs/static/logo-256.png | Bin 0 -> 11916 bytes internal/transport/http/docs/static/logo.png | Bin 0 -> 11916 bytes internal/transport/http/embed.go | 5 +- website/assets/apple-touch-icon.png | Bin 0 -> 32899 bytes website/assets/favicon-16.png | Bin 0 -> 690 bytes website/assets/favicon-32.png | Bin 0 -> 1925 bytes website/assets/favicon.ico | Bin 0 -> 6535 bytes website/assets/logo-256.png | Bin 0 -> 11916 bytes website/assets/logo.png | Bin 0 -> 11916 bytes website/assets/styles.css | 9 ++-- website/index.html | 8 +-- 25 files changed, 103 insertions(+), 10 deletions(-) create mode 100644 deploy/brand/apple-touch-icon.png create mode 100644 deploy/brand/favicon-16.png create mode 100644 deploy/brand/favicon-32.png create mode 100644 deploy/brand/favicon.ico create mode 100644 deploy/brand/logo-256.png create mode 100644 deploy/brand/logo.png create mode 100644 internal/transport/http/docs/static/apple-touch-icon.png create mode 100644 internal/transport/http/docs/static/favicon-16.png create mode 100644 internal/transport/http/docs/static/favicon-32.png create mode 100644 internal/transport/http/docs/static/favicon.ico create mode 100644 internal/transport/http/docs/static/logo-256.png create mode 100644 internal/transport/http/docs/static/logo.png create mode 100644 website/assets/apple-touch-icon.png create mode 100644 website/assets/favicon-16.png create mode 100644 website/assets/favicon-32.png create mode 100644 website/assets/favicon.ico create mode 100644 website/assets/logo-256.png create mode 100644 website/assets/logo.png diff --git a/deploy/brand/apple-touch-icon.png b/deploy/brand/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..dc6cc306474c2cebc3f40b32fd572dbf91ce54e2 GIT binary patch literal 32899 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 Y2`&=P;dgR&-T(jq07*qoM6N<$f}pcaOaK4? literal 0 HcmV?d00001 diff --git a/deploy/brand/favicon-32.png b/deploy/brand/favicon-32.png new file mode 100644 index 0000000000000000000000000000000000000000..d6ddbb71d948b0b0874b6285a8e200b480967489 GIT binary patch literal 1925 zcmV;02YUF4P) zK68Hm|M{Qqd`AF^Pq8GQa(!d~0T@zX+@=cgQMNz=Aps!;5g}Lv7L=m$NjM+@TL>Bv zJiqH64nMGi6re4ux#Iwa6vUL`;I`E~^0^+$qhkoAFm>(D14yy-!Rm;`*Sf0l$0q4$ zs9|?il4`~_=@2ds=E4jc*L6{GJl>p`p(G_rfshiZ=_sW>+!h!@ z5>Yydz#yU7SW==ZcxrPiPi?x3E7J}mxdLb|BwhTvBC2$r1DopUiJ5330K-685duuG zA_yTr7=R`OVRW|Dc5~$EAJCPkLqm`TcGgEwZi#PgX`-hyMG*3k=_0bxBdB+%shgp@ z$|5QR(y)kc-$U=ShtRUkVA%*EZVj;1Ty$y(^X#|3!=5!8NX;oyfr%zGuFmE#t6<-@ zYEtzEL6bl<1ds+%D=Eeb+`m4>BloQ$FfB^SEVa)(LHDDNp|lV})BnE%!dEm!GPK3g zXeFORPaou=w$GAQCWAQ-VjiW4kH0>RXf+`oLnISW6-9(4yFOn_q&h-;bvLUX_%c(D zkF{X~BAP%+dFv1gz?3>M40hFalFeqxHe}h}zm>w7LGJ0(X;~XVb=M#h9_Tj0j)Q4K zC=3fOLKR7OcXRH+L+JfmFqLHV=wDd;+Z*7!h>8dA3*`!cSWbRKvj}@|mm6k%Z5w3* zEMd~s8l!FPFyihSlr2$u5)ny(83QvypxY=jf|0wxg^vCFy5j(89HyrWOdUN=&%V9f zxO54%kVE+X3V{BedO=tibcNDY6ZHI~bj{`N>OTILd&wO{79$!exb3 z5j5(O{=M5M1qvEkAQVMO?LR|k1%l1lcJ_7j6I?A&)!u^A6;ymwWf3T$L#~#X~6RnZAxmWSl^Tq?{0FFPkWR~lxwelP3h z+DVBpzHk|0oY`nIUyMq$QjSQZi4#|TN=>$xO{PU%SaD)-h{4(G)LpAV(_y|c#hIDE z^7_#42nxdpzd)dZ|2>uqKtrM<(E%Hi5GECT9DJgplV>)+$V0u`Dcg|u7YK)9RNHWR zVv@&xbCAo$H_(j`2#H&n2QP<)hYH-A7Qf}YKmc;76|LAMgh0b0tFPnX-Y3}8wS`PF zMJXuo=J?zE?Db!8aqbwtDB!CAmWNoBB2dA~e{SnxvIJqGsRXs=Dyr-Z#Y%yR!Vo2{ zqlAlER;ljP%LoKg3RJ*~Dk%j@sap=9A0xocj-dFj_I@G&w_E=LxsT=13?oQD00000 LNkvXXu0mjf$AE+# literal 0 HcmV?d00001 diff --git a/deploy/brand/favicon.ico b/deploy/brand/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..98e3cc785b30b801bfdcd0aefff304b44c029b53 GIT binary patch literal 6535 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 R;m|%wgZI&$U;nr5{U6l;H5~u| literal 0 HcmV?d00001 diff --git a/deploy/brand/logo-256.png b/deploy/brand/logo-256.png new file mode 100644 index 0000000000000000000000000000000000000000..7fcc125a38bf0b698c522c5ea1e8e717ae1e31b4 GIT binary patch literal 11916 zcmV;7E_2a|P)I0t_r6fEyQh0HCeL6n7^Fc?L?9thq(G1&37Vv-7nc>`CwwpP|> zSF*ISKi>T)@nfx(14XVRGl^g(00BdSBtWFW1k4O3_H+(aFWh_fkNYYN5{V4jEPP(S zH(iCUs&no=;dg%LJOPv+JYKbjdA29y2eNr}74TZ!7V;WdB=QpeogbK>*WwQN!Q(Zc z0C|PC;|nzdGIV^uJmmY;1j$oWE@=NJXZ?I-K8wCcd;X#oAg_?q?g?H1k??M!Ak{Ze z1_w{Mel0(u7yAeF6KR2kgJdZg$@j(AKIy} z)M|S^@AHx=KwqXWVk8JZ0#bw;P#35PSg(`{4oHE-3V6`U@c5?)>4mhd%as5+mdSIfAHyfat&(|3CrXOQ^_iG zCTB!~@Yf{~|LPyz!Zmw#!t^x$iPIP{eB+^gG=SyGIh%gi8r<+}HQIO$?tnq48CABu zDbNBYtl^j5a|@SVuo-v!NhHrPVtDA#3GRCIC?k=ORl*<67hXx}Ki6A5({tvvCjNfZ z10)DF6BH0T<^8YU!=>kM#Gg6|d4`q_JbYu{F%pH?NHARzA|^8wMM*D-dlen9zR(@; za)g-rjOHiU?4ST47N`@1f5rMSZohITI&}uJ3`&o9Kq9m#Xj;ew8X|O1a-h_Z6AXu> z`u&K8>MOKLWN5`kmHkfz>I!eW;#{mL@k>i+S%UZA9YmHL8`jWrFm7Pn!l*z?pl(9+ z6jAL6dF_FA(Q7RP>YE^eSRhelLp$b@b5_9o9Jn%Q(1#dPyB)6Dvx_Is%yRF;M8e&mO@yXE!^0)3N4ahHI((-yI{CVAWj4^(lvvK@^bF@-LJ|fhlihdL> zTRXzF8{7CS2Wy5P&;SPcqCm2o%{#Yo(N&j{;+a2u0waovOu&VP4t)(3yzKuEurb2(3wV=9Aj)L6t88Up>KNi29av9ygYfti&ntd!VUkK-iIEt@-kG@3a_bzUpd?n z3oWmV3B3Et9lZN>=d(OB&*EZ+FFhMaYHS!wajHmU!Gh*FTC+$h;Ib;FE0H1tEz$W| z8Y@?@`GVc-+xtzHfeiXNg42N#`rkl89Huf96c02~DdlBQfV?PYDws;}Mg)uLUmFgNIJB|MUW>1)S%ybJ~b^kVI8buTYlA zh(*f`F&-jCVnwtBU!ZeyjBejbWG(w2K1>!19feE>{y-75FI%3{PA_DvZO4>�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�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' ''; + sub_filter 'Spark IM' 'Spark IM'; } } diff --git a/internal/transport/http/auth.go b/internal/transport/http/auth.go index 25fcc21..d399084 100644 --- a/internal/transport/http/auth.go +++ b/internal/transport/http/auth.go @@ -86,7 +86,8 @@ func authLimitPath(path string) bool { func publicPath(path string) bool { switch path { - case "/healthz", "/readyz", "/openapi.yaml", "/docs", "/docs/": + case "/healthz", "/readyz", "/openapi.yaml", "/docs", "/docs/", + "/favicon.ico", "/apple-touch-icon.png": return true case "/v1/meta/enums", "/v1/auth/login", "/v1/auth/token/refresh", "/v1/sms/codes", "/v1/music/playlist", "/v1/music/settings": diff --git a/internal/transport/http/docs.go b/internal/transport/http/docs.go index e8322d1..b336d0a 100644 --- a/internal/transport/http/docs.go +++ b/internal/transport/http/docs.go @@ -1,7 +1,10 @@ package httpx import ( + "io/fs" "net/http" + "path" + "strings" "github.com/gin-gonic/gin" ) @@ -19,4 +22,52 @@ func registerDocs(r *gin.Engine) { r.GET("/docs/", func(c *gin.Context) { c.Redirect(http.StatusFound, "/docs") }) + + staticRoot, err := fs.Sub(docsStatic, "docs/static") + if err != nil { + panic("docs static embed: " + err.Error()) + } + serveStaticFile := func(name, contentType string) gin.HandlerFunc { + return func(c *gin.Context) { + b, err := fs.ReadFile(staticRoot, name) + if err != nil { + c.Status(http.StatusNotFound) + return + } + c.Header("Cache-Control", "public, max-age=604800") + c.Data(http.StatusOK, contentType, b) + } + } + r.GET("/favicon.ico", serveStaticFile("favicon.ico", "image/x-icon")) + r.GET("/apple-touch-icon.png", serveStaticFile("apple-touch-icon.png", "image/png")) + r.GET("/docs/static/*filepath", func(c *gin.Context) { + rel := strings.TrimPrefix(c.Param("filepath"), "/") + rel = path.Clean("/" + rel) + rel = strings.TrimPrefix(rel, "/") + if rel == "" || strings.Contains(rel, "..") { + c.Status(http.StatusNotFound) + return + } + b, err := fs.ReadFile(staticRoot, rel) + if err != nil { + c.Status(http.StatusNotFound) + return + } + ct := contentTypeFor(rel) + c.Header("Cache-Control", "public, max-age=604800") + c.Data(http.StatusOK, ct, b) + }) +} + +func contentTypeFor(name string) string { + switch strings.ToLower(path.Ext(name)) { + case ".png": + return "image/png" + case ".ico": + return "image/x-icon" + case ".svg": + return "image/svg+xml" + default: + return "application/octet-stream" + } } diff --git a/internal/transport/http/docs/index.html b/internal/transport/http/docs/index.html index ba66521..af328d6 100644 --- a/internal/transport/http/docs/index.html +++ b/internal/transport/http/docs/index.html @@ -3,6 +3,9 @@ Spark IM API + + +