From a866977cb007e3dae1a438da144c6870c174a2fe Mon Sep 17 00:00:00 2001 From: ByteDream <63594396+ByteDream@users.noreply.github.com> Date: Thu, 16 Feb 2023 17:09:24 +0100 Subject: [PATCH] Add favicon (#288) --- README.md | 1 + custom/img/favicon.ico | Bin 0 -> 17014 bytes handler/routes.go | 10 ++++++++++ main.go | 1 + templates/base.html | 2 ++ templates/login.html | 2 ++ util/config.go | 1 + 7 files changed, 17 insertions(+) create mode 100644 custom/img/favicon.ico diff --git a/README.md b/README.md index a946f80..489314c 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,7 @@ Note: | `WGUI_USERNAME` | The username for the login page. Used for db initialization only | `admin` | | `WGUI_PASSWORD` | The password for the user on the login page. Will be hashed automatically. Used for db initialization only | `admin` | | `WGUI_PASSWORD_HASH` | The password hash for the user on the login page. (alternative to `WGUI_PASSWORD`). Used for db initialization only | N/A | +| `WGUI_FAVICON_FILE_PATH` | The file path used as website favicon | Embedded WireGuard logo | | `WGUI_ENDPOINT_ADDRESS` | The default endpoint address used in global settings | Resolved to your public ip address | | `WGUI_DNS` | The default DNS servers (comma-separated-list) used in the global settings | `1.1.1.1` | | `WGUI_MTU` | The default MTU used in global settings | `1450` | diff --git a/custom/img/favicon.ico b/custom/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7852f45fcd3f079ad11290ffe83b0d4bd5e65e0b GIT binary patch literal 17014 zcmeHOX^a$A5FWhatY?w;8ZR!~<_T=Dv$8;rMNMDaFWiQV}A@s8JFy0sY}YP&69FTTzrCuB->F>sNE^^z?M~G4xEg36S2Ic}Knas_NBy zRqu5oF$DkH+7kGiNnA5Fk&qIJ#G!allxW98<@tYYg^#%W)fI7^CL6OgSuE2e<1bm`rppjyzQXePpllF<_@Zrk0|=-ig|W8 z*o$(K#oA%RjQyg(5_C*W>o|($a9MvrbnVhs7H^O*3Cd3++Yby345@v-yI?Q+O-&LL z8;K|ASn%;Tdg&b)zJQGGft`$KYg@j{$dO{7v?NZ$8n{@M#5TA7=({P-^8gsWbmJfO zkF}~@dvbE6H4klmcB28=P2&1TS>B|Y$GGv0ea>7z{E=Ni&p&Xq;8#ENL#NSgpqH5} z&yrZ(($ce=U!GtC<2YKFBmXulbBFq+)u?vhYbD3CE}J(5<%9eLM^BT@bA!^WcYE07 zI*#93^aYHMa`bAE=l0+yKRrs$?&U@UHv0$1FZFlp>r|)9#@!q}T0fln)T<18@O^3C z!6sMXnWCy5wm?dFa%?(PgQWP<2U|u!rJ)U96{k5BT5eg#kF%sIqxoCNqDJH1d7e8!tp3-gZjy zA96{J#_4A~vVHPNt*u?V!Ukr0;UBEWyn!rcP~W`W%f?TGbvE6D?w_>I_~9ptHhNNw zhtFQEE7>;ix}3w|RE~cCKn~q_PSqtdOTVkyAvYWaF0V1kC+doEzh!OQT#$kIs0xEk zr%v^d!3xZ)Db6&>%?ukEN+J`e+`H~FHiJaKt9Ebk0|O3dtTA!i3@p4UCtg48@>-RS>xH> zK1a|$jxvCazu<`lF(EK7fj^sAiUHGd=P)`C!n(N_`t@}_02-Z9=$IRGxSW+7eRNrO zG=ICea|=x|C!qh7rlGS&lU-EprOI>${R+;4F5>uUbUDr`?{d|>BChq~32Xinv}VAE zJY6^^Lk!`7yHo~wZlt)#i*6(8VYe)=gvSpLlm|xJAM^OI57MRFc#5S>#(AkRE;7rVmd6u$4`=_$F*Z}Zv;dl&kK7qCU5*wY~WHQ$Z zoa~u#6uA$pJ}LGF&uolyurx=uws-rk%GvX5_({jhC|3aA;CL2<`ffLxji`hEzp?W@ z_*?B5?Ux74=Q{`cS$tnADUJosrA~Dy-#B4H&(40ws7E{KhR^jQe(^gd=K3mUjK%`D zd=mD>qx_Chk9KZ;n)H)VIx}A5Vh?n&6ZS%xcwdvVW4U@RhvGG6SoJ9-H-_UaUoMMJ znwmP3+<1k%A^aTy$naa51Kb$Mx8BOpZd5t;uWLE}isik)F_nB7&DWNed3#eFfPT-S z-Zj^QeoINm9Q`Qr|8}`z4qnOeXD|2ID_5-X)ED?C;pwu|Dg8!FdA*&VD1L*-?h;R- zePZsYs*wgg_B;vofzMOwAs^c7z@EPj3p?2f`4-4^2}=_(rPo_Yk z1I(G`DEJL~%;H^+X~6WG6(jo{wo%J{p|JT5lU^ocDzN#-S)RZxY0m@iTLu5_d~e7q544N*-R>Z=1oo-GQ+fI54|iqGjcMN;XWYaaopC{b?=jed*nz!m zZ=7-fc0JHpH|3~+oj)h2wDSsl`8b&JKn`u-6Z+`f#6D)6e&=(yEFPcOb3GmhR5i4)dZcqyEFIiGKpbWZ!lIOjTQ z!A*L^oOqFRTf*t|34iw~^nOAuW5lsf{=IMHd4Ovko{4xr^c3VrF30z0D)7^L;J6#| uf6Q}ma;JO{;h|g)VTS$}7X4x`KEHwtUd2409^`&FH`b2w9TKRQ1pWgWN|x6E literal 0 HcmV?d00001 diff --git a/handler/routes.go b/handler/routes.go index 3ddbb2d..18a7d17 100644 --- a/handler/routes.go +++ b/handler/routes.go @@ -6,6 +6,7 @@ import ( "encoding/json" "fmt" "net/http" + "os" "sort" "strings" "time" @@ -32,6 +33,15 @@ func Health() echo.HandlerFunc { } } +func Favicon() echo.HandlerFunc { + return func(c echo.Context) error { + if favicon, ok := os.LookupEnv(util.FaviconFilePathEnvVar); ok { + return c.File(favicon) + } + return c.Redirect(http.StatusFound, util.BasePath+"/static/custom/img/favicon.ico") + } +} + // LoginPage handler func LoginPage() echo.HandlerFunc { return func(c echo.Context) error { diff --git a/main.go b/main.go index 98a0e7c..683b5e8 100644 --- a/main.go +++ b/main.go @@ -148,6 +148,7 @@ func main() { } app.GET(util.BasePath+"/_health", handler.Health()) + app.GET(util.BasePath+"/favicon", handler.Favicon()) app.POST(util.BasePath+"/new-client", handler.NewClient(db), handler.ValidSession, handler.ContentTypeJson) app.POST(util.BasePath+"/update-client", handler.UpdateClient(db), handler.ValidSession, handler.ContentTypeJson) app.POST(util.BasePath+"/email-client", handler.EmailClient(db, sendmail, defaultEmailSubject, defaultEmailContent), handler.ValidSession, handler.ContentTypeJson) diff --git a/templates/base.html b/templates/base.html index fd337a7..0f5d686 100644 --- a/templates/base.html +++ b/templates/base.html @@ -8,6 +8,8 @@ {{template "title" .}} + + diff --git a/templates/login.html b/templates/login.html index c75aa39..515eb1a 100644 --- a/templates/login.html +++ b/templates/login.html @@ -7,6 +7,8 @@ WireGuard UI + + diff --git a/util/config.go b/util/config.go index 63044ca..7f5d221 100644 --- a/util/config.go +++ b/util/config.go @@ -34,6 +34,7 @@ const ( UsernameEnvVar = "WGUI_USERNAME" PasswordEnvVar = "WGUI_PASSWORD" PasswordHashEnvVar = "WGUI_PASSWORD_HASH" + FaviconFilePathEnvVar = "WGUI_FAVICON_FILE_PATH" EndpointAddressEnvVar = "WGUI_ENDPOINT_ADDRESS" DNSEnvVar = "WGUI_DNS" MTUEnvVar = "WGUI_MTU"