From cce5502b729c855d8dc13e1192d5a89208a24cf4 Mon Sep 17 00:00:00 2001 From: Daniel Lundin Date: Mon, 27 May 2019 09:52:51 +0200 Subject: [PATCH] Add some static assets --- .gitignore | 1 + Dockerfile | 5 ++++- go.mod | 1 + go.sum | 2 ++ html/img/wireguard.png | Bin 0 -> 17866 bytes html/index.html | 12 ++++++++++++ server.go | 7 ++++++- 7 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 html/img/wireguard.png create mode 100644 html/index.html diff --git a/.gitignore b/.gitignore index afa094d..78347ed 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ wireguard-ui +bindata.go diff --git a/Dockerfile b/Dockerfile index c2db8be..2af5e11 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,13 @@ FROM golang:1.12 AS build WORKDIR /build +RUN go get -u github.com/go-bindata/go-bindata/... &&\ + go get github.com/elazarl/go-bindata-assetfs/... COPY go.mod . COPY go.sum . RUN go mod download COPY . . -RUN go install . +RUN go-bindata-assetfs -prefix html html html/img &&\ + go install . FROM gcr.io/distroless/base:latest COPY --from=build /go/bin/wireguard-ui / diff --git a/go.mod b/go.mod index 10d1fbc..461dc12 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc // indirect github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf // indirect github.com/dgrijalva/jwt-go v3.2.0+incompatible + github.com/elazarl/go-bindata-assetfs v1.0.0 github.com/google/nftables v0.0.0-20190430150743-07c974e3643d github.com/julienschmidt/httprouter v1.2.0 github.com/koneu/natend v0.0.0-20150829182554-ec0926ea948d // indirect diff --git a/go.sum b/go.sum index ba125e1..649e888 100644 --- a/go.sum +++ b/go.sum @@ -5,6 +5,8 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3CKKpKinvZLFk= +github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/nftables v0.0.0-20190430150743-07c974e3643d h1:TC4HtISCtWOTUVPQmq4CAqe0+8R2fvnkJlQn47ep2hI= diff --git a/html/img/wireguard.png b/html/img/wireguard.png new file mode 100644 index 0000000000000000000000000000000000000000..306dabb0fa513d63eeb0ce360acc6b4895cdcc84 GIT binary patch literal 17866 zcmXt=byQT}+r{tDCEeZKT@phIN=r$%fOO|br@)tzE)i+z?vM_pyQCYWP8=brPN{e1R56RD=6@CuC-4FG^wZxm%U000912mw%#z;6aFKdiuSs7{J{t^k19 z`|<@zX2T={0BYckthAO_=24cXZlccpua2EJbJA%v5G^hIzF6Orwrd~5_bsJ{_0WUL zddJYadXHJ{@|kAa@)^VODBtNeCu&yO_%3{0c}16iz+4vQ3~PohS3{$7`f=A|u5{O( znENH6&lIIJ8l2ZO@d!bkR4^=NKVV-O)erE(!6tzPKC2B#t)ajmYd7CWc9;Umavpf# zx$)a&FM$7$r4&AsLyIw~MPd8QilQjLQR9)Qv*3zDers_nj#(2QZERW489!rs%mt%x zbdGh%PM5REwbP(b=Oz6%flef8AmGF|Q==fPvDWr$aBE1tin4$);>IIjiz7I7oW|V- zG|DH^)hddOn|lIqI4n9yxDzw@Hg8~p)ZZ9jCinp#7D=ttNL8gBa3{#{w?w5J)8GAG zr25XVjmlBM2);%f`!Ct9QY1?Z%ma=l3*rXJUHcFo9F0!@C6o^mnMjAiaw&k=B*MMx zD)o-Boq+_h^sN&SE|V!KJ5ec(?1Yht?1oT7vq}uW)ZO2t6HxwE4&eoI;icacF}XUA z#S4q(8(lltOtc6sB`Y=FdG+-D!TaLi;N<2RUXVdX9QkcT5Y5HabmAZ(H4QaO9z9Dx zHs;35qW2fwznM?p`un>r)><96)uYfu)`X>0)XgMF^0cj;Kh=IW^90y&{_b!UO^G8Q z(4jIsN>SrM!>0yOhi1xgCh}gxiMdHh-FrBlothMWs+mN2_ZH*7u`Gq|J-!G@Z``m$ zd+i0zS7^kjy9{bB#GTSi3WI|Ucz8#22q{0sV78}e2Jydj2^`4x5$JMoJ;w-Q?XF7g)Dj`L;)yFww2l5(HWr`$OsKeP%14P z1~1(RkL+yu=p!!d(fT{RB!UFr8ghq>a$()bDDoMrpgv?7q6I6IaL*k5FUS=CtFqLc z^jfk{H@A&M0J%>HS4d)uSS=5anqgDamU3!tvkPL{85Y}g_RH`Hma7+OGEMC*kw8B6 ztTC6~VK52^5I0hxvKo?lK$MBn84}Hw zB+wc%bHT1bMC9gmE9d6(=q}vcq-QifIuf$I;7)Jc9 znC>p1l~{wRh;{GJM}FZB7lMki4{?59X3?^{P$oKn>XoA@5ZMz#O&&oLZ`$$<9(P2i>s=kl1{T^W1? z28t6s;`cN_?~;COWjkI}tYChw%0|qWa4TN2e;%ppi*!eu#GS^DFJ$@Q!4@zUl zQhgH;K&b`)!x_^AvGdyyK_W3!Lf-VyKbAVzU#vDwg5q5mR`Aq((*v>>z13pQ+{GPP zF8BshWJQ@%aLtU`)e4H$zvLdysgcnQsm`$4s`GFVz{#1EbWKF zpbP`dw49uYY5+K&`0nK7Ed6k{34P-Pkq%TlH#1K2m8K%vQ4V)?@scE_K@c!Q02dXB z4Wq6Sj0I|kgBO*;G3j&1AM%Cry*-&aHgn%f!%F|Z(GK)dctC1X8YjE*y`!G}W^}0F zYq*=Gan%Kd?I%%&EmgQ$0{ytTiI4mPZ&VddVNXsjob5v&$pU)k~u^<&J$WWnT5W8(oC z8R@T4h}7HGmeT%@qWrTJGOlz;EDa7cY$7Dyaa8b0K?#a#Ek>_z!a{NbDzk0)ZE|f0 zpNF7D(;FkRt84p?8Kxtn1o|rKUvO)@ue$L^{qsV9etstmBLEV&i@XwHvXCXl6_bq4 zFBB7x%bw~DA9Sz@=}t!E>7*2!-bnSTILIR%A1+6W`9486np~L&SS0IATAEzd8kC71 zY918mvn0nu%gE74kIU5qpZ`maLn>Q=$ll%#v+Q!IZd{c|^~)fcPn9HVufAamp10|p zr%Kt}&RN8nDiHJWzoGf2LU1wvJt(OA0;9_F>}HZ~w@x2iyj{7oM4~NB1>e6H$kSTv zs;MbC`_4L$Ki%MgV_fspqPB(&Bf%jhxR1REc@Hi)NlPNw6DD?P?A8UELj$;DcoLyb%6D%%i(FMa(aqzxecFm9)uo7h6lGLbt+|k5^5M z8;D9-;#gG7%9?bWQiN%Ui@K&9Z5v8)S5;=b<(ZiNyC%(sPF*dE{Bx@4i>q0w26cyV!44zsNn=w+Cbz7h3XpOVWYc?dO{bLTLxzLCR~2Y#u%L8?Ypl_RN>Mf z{A>0IEqEJ-tPtls86bxCyCcW9eAmX%gYf`KxVuEcRNbYJJj4MR<)parroZ7M-sR(# zIfDBMXDxol=0KoipQI%FPRXqnny3i0K%zGpB3PB~IH724$!zL`O(cg1*GY}Yy)1Wu;^_=)PbaS-s>crwqrOVq`6*Jc|bkj$q;BJ z6F3CMHO0yJJEx8o%gmlv^d~;n=}wm;pVtVpi%9LMexrVl4J9GTFVA4U!;$)Cz!QUg z2&blO!vRf5O@JJYW`J8*>x70ql7f(sS`7)7YWCI`3e6F9LjA$!cGba83FRbjRJpb# zat0k0nh^VNuV}M#`G+$+a35f<#mLAXjoC}l_(;wh@|i_cDKFmj(+}2&8E_)97y(^A zx*x?QiRiP49+Q5TfXd)SAS{v5?gC0GvV#PNS{9}_>K+w}P3LleB(xV(2?cz()NYr| zd6uU^^ER^j2IOyVL+PxQMlEL;_%q(VFOjBpF4G^nV4WaFD9V3Gdfg+yI+;m_odq9} z#Ab~fL;yX&rYrV5M&bBO#93h!T(jyQXMaYHYK4l65{0L{71d5D3^XyyTwQaKopv7s`7nxAo|EZ_?9 zLG@$7z(n_NjN(Uy0Y}wMWG6lBclNrzduu$c>^eaEh;N88AU&sZKWuqCxOs|6*q0jq zK3DZk*ZzusUy8vN%UMYN0kqty2o*60&W}-t-}`*j@#KLZw>nhPjyFl;(Eoy?$|C?k z$?sgvxxMp6VUSWo#%9qOVxjSc+@KWqqz}CPsnc1(yrWam{kYo$9cCsA+D@9t%3)0o z!neb=M|)W!HEAruD9~oq!YEnfkVc7k+bxh7KA)pqvoh{ZhI}Yh}-KlcF zduzA<0C11-2t3jORA(Qx;w%3HOGO6Ij@w;7cZP*7a~*m@^TXG(bO>23J~6n~_d4D~ z2$KYhlA4VLRWI_*fOcs@VtQ2T$lIBN=Uc%~Q9O3qJv9Mp>*z@vcPSim&nwWc=NEc) zeMI*?hjDMlxOk4Y`Fd| z2!*jXiQ$URAJ*{)>r$S*a2nRujb1+8>WsmOEf`;p>((~Z$;K!tozBjo*?mpDGMkwVh2qW$hx5T+a&VLczo4hCgu-5EI1T;=+uVkEFlLd>8QZf?%My*V2g9}C()x0L3e z6a3~bDKuYf)ApqP*Fm2c&H+1r=dBu zol~QxY-Nk{`gRx%DgW3wh(T_5#I!t4_wk*h_|LJbJ_L76inF zUGQJ|TnA}#oXNTIpB!FJ2OM(Qs&ww6>@<5?*g8BL~y$lkG#;jMi@(bb#76vE%y zqPAKT1TT#}(cWfLj|S;1mGYNDlj}yT=ppg% z^;0NHd)S1D&9y6oR3jSy^8x?4$$e&1W8h81goZ3?p(3~9o1Ul;WS#wtCHwqDlamL5 zu**i_GBRF_2G0{5eI*`n^6@wS7vB#FTSVsdip%htaAa_{27zozidZp=+;n7ELD~Tm{+W3muoZK3sP|j28L(Ws+k2p7v)#*=}m91Hrt%5!k#$ zolh<&B{r_=0Ra@ic8=}GYE4c|hl(GIO?>-qhbYfKxtaCrLJDHCq*Dh?q-+lj>5W?> zK*bR6bca#>z64FuxWSI-Ma3`q`RPvfAXz1%wix@uH+cLs;_Dg8LqaQwnXnluqfs(-P28^#)%yW zrI0uuF)%AC#7o$+%D&M*@S0G&{LwAXwjBKmacy&oWvr?tW5q|AnjL-QgHA-eHWa`b zzxy{CI9Np7dgzK!@5t4RZzxBD0e`X<1~v%dVEufRr5_xFjFsJ@>U+U>Od%eEU7M7q7zpRmI*P$^gUHgc1pZAliI?? zxZ7|A{~D=VcUH2XMI+M6{8ui>EEVITWjtKYiZ$z1}GIuUOg5zBdQYJKdA#zzxrII}0w|ygaT}lHaGX3gAvi`B z&hlWU@oCXY?OqE2j^z&Aca(h!-o9w?J3MH6$m5!7XuPOM-VQPjIKJouTlF8vrn~wO zX=K7X8$N3GQi&m%2S@<0^pS{1J1TK9LHt@N7NC(0f1>EyLUcSnZRE^>l0h$*D^v-E zLVe}62ih4*N%%+K>s*kiM6gyNrM}2My-DPCs;iTA@|wYr<;wOjvJVYtKg!}c9XnXk zDbS>8c58Z9J9=fYECV#|2Q8EV+HCRPv&^SUpGwr6KHO}S<Z` z12%TC(%JdU5jv&Uy69ujqgZGoZbMCsj4UqhU2-a?gwx_E=_ixXEhenX{ps9l)M+o( znAIPtdz+e{O~2B&!bhh#tEHpG9z%-JsdUK4l$@N~Yo2KLW}huTVgrvHss_STaG7qd zbjbjPx!c_WpG7Ie@;xX_XA&q3GV}h}md*c-*#AZVetZ>8wwydCH z;#^~e0YP%A7(xRHmf7KgfX!TGC0J6GFU~f(Z-%*GOmqbgW$gB8=TsI9?}c?3Nk%!iI!Ibu{ap#W@XuiJI86G|6(?_xe|?4G7Io$@qwlQNVdEi z*m&`kAClao+fOs$BQ%&ZQ5Bh<_#<-|d%_D2GA=?>Op_JKDR^A|q6z!@=o^UhgY`5OK~|iI2TG=>x=cTiI zkqb}HzAyS?S4sHc2QFRzgP#QhBQ4hj57=3OqGD}r8wrG=25oI}fuacsiWBw^!kPM4 z48Yn`0v$I2zSPEAXVWJlF6Zafa|p!yg$^P$2Yt1@{I4Oph^gCZ6kosJb?bFN4CsAe z2X4^+H)brg-4mW`jPvKgD?a*ZZNJS4XmGk&Tm`5JF^=iM`xrKa$Vl zhkq6u+#rBNf=i)Jh<37rGmyk1$V9zy|Ls)qKGg_+8hLASKG4Z|lynKCZQs!tYX^KE zh{2|*uYk|m`L48by+SMhHslN?Lj>CFD~t$-t@f~O~ObqxfF+~GRi0O)Bees%K2 zLNe>zyr6IFAblubKuhJ*cU3%nB!K#C$=jY>0EtW?w*Sbmg>C6p8KmUhFWq?@h3H0S zx6^K|K4G#pMK|}U-O7kdd7E=EQ45Co>O2I1+Ti65&{8whCOf%=6zzcx{Mk9KmW+cu zP{eoQJ9E{tTd{CNC^PE_U5DP?f~iLc1A{Jf^-?ArIld~rk%eD`1Z#0c_i81hEK zvAnDF;uD9XDJErb5b#%#%BnCsYoy_C8gLwt++2TQ+LQ7j#ZkT97`0kjMgHk9z`Y`B z^rn%J#QE>*0E7K*#tf9?cv*XFXb_AElUj-Mx@3?92KIS0b00gvp3QWYt+LBvEzl-C z;Dk~zhCCJ{J8X5l8-Mv~^P>{z@(SR|G6Uw6w<{uvrB6O&OrTj^;!ydA zIWb2GuAY_i0lyn;vF&z*n#qCE$VxIN=tY*g@C8SQTrLQA*(GN;ifg^JHF&u^${^6lAn=K)8Qbtcai)Tw zADD_dZV8J$&Ab~vP!@GOk%AcR+=`1&V&%N1r9+ZSuqN>cbBzT*e)fh%YBD6*FTPx3 zJ%=jg!nP*=D+Z$Q&HD41Rpk%7GQ-rIA?dyA4X-NmSJ=5u2&ZnUKfkZphuu{;t1NzD8|9?D^w!L~93AInT^~MLAhY6^Bo-hIGGM|CLb=8jFai z*X67w!#eRf$$dU8Ng4+F7twzgCP!a&J>H+Ny`}&EEI^IJj^3p{2PM;~=S;VflO;3t zA&D-;`QmDOG(~Wm(XoCGmi|_;Y4j;yuef+%inKG}j)ne1c3yYkk zUmF)`Usy$RxRH94UeRZZg@bTJzaj&J3iHGyz{8A^QnD+WqBICM3{oiIg4TH&|GA!7 zWN)u^!5m&Dp+|H&OoKdH-?k}9STxuA270x?6eIRUA&}_$#swfF3AC4i{Oo7mp~nSnPbB= z-4CCH|McFxnY-U!OgRAgNdBUjW9k{g{nA`>vX1WzqPvyND-Xcl(KQ*-7~ROeOR;cT zDcNdZuxo~dFX7(ex@XxqQk_jFDB--}Cf#kF_IDZgQ;=i?olG_hwtnKo$D7js3NSXG z8rd?yW-X}T!}JUX2rI5yd9XnI1^~s;=>27SuY^Q8XqZxGD*jGqgVO+T!q*Q~J8cpw zvtLHj$R=!`qyC|A&H7ql)auZ8$FTSK5nXCMe>LLos?2=)YBM_cEF0T0I;uCd(Ry-` z;((ixz#XvN3iH1|wW@69ClmYrdmLo-$la2i|3;q~Uz1=HMD_t+Ue|J8-gmv5ERnG9Z$C2<<|<&;UF@t;ixnKBNWc- zJJYR;bdBpd6@t=G{*a#sT-rGM!d zZA%&68Z0*sR^QkZy&b^-*4Z>sWL5O_tEQ$5WQdX4i2MgK+DdY5=Ha^FSpy`D{f|fk zDEJYuax&}9ziD9H?km@3h=sF7T57~+MAxhaaz%V%qpy?~19F{8BUFQsFBP~|Nt{?; z(d<$Y=#^RMd<5V63-!NSr{h4B&$65C4|zv6;qsr8W>$3RtW?pqqwnkx4>wSDl7tpb zpD8igGD>6289Wl#VJ}O-0MZzQT8<7C=-ngo9KRKN{__dlFf;?CUEfa@*%b4Vi?%E! zII|r)RlJFbfsJ<>9TP#o{;)+{N7ldIkci*49JqFQ*7px8%`mvxgrvd z=tLFv^)k6Ed0$95!Lv;Ub`EvA^L1okrH%dj!5Hky&&Xy>Cw7#*#g;TlL92HCe8G6Q zWAY0kG`=fDgJgn(JgVeBa}; zB<6)3xidyoI<3PTMco)E>E`$E{nXx60v^Y7mp!lPHQ9xF?kqY-pD2wYQ-aH1c__CW zXe-jWd-U6-a&?FP(pt9!`^fc;eSyYmQ}}aUs+xs*ou06P(E(-w{R(X<0BprVzy+7< zK@l+Ip%aRi6Zl1QxE)tNOaM;>?Cq&gx=NvJIPh%}4?vbt;5!?VKJM)uy5mmirJGGG zuxZAmQ$RK_@NdOgs+3GuC5{6t*tte&r6|~HqGd3>^$VCXE5e;xl&v zV%?R&Vbn|z2l5JsyQ8KtRbr$kQ&X_}!ny0LtDU z1lZK^P|RF>WIBnTJ2%!?GVS_Vtc6J>Y%X`DjLrdlO10^th@j&GRc65~Y;5!7Qel5= z)fJ=zeXP;`82OAezO~iwu`sx%&8=!K=i6ELzpFMy`Se^!BN|W=fr!_RKI(6g;4#@_ zIzv_kwRdgUslF|@MT5)B%j-PpuK>6MEWFJLyW$$FD|fuN7QQ(06u#}_&9j^%y@tS0 zRo~30cLs#)lTebsj{2V$0S|UTf|eXVW7v;9pCd7mBVMfe%|~K^rYOMvfuzO>RjweSLc7EH+42$ z-W4rVVpVgZ{$UKiUNU8ElKLS(^=f2mhzA+KCkp<8u~z6-bwZjzkWrNu(RrU|M5k)_YDx?e0?Iv1ry0hW}jIv`yaS1SpDoVglH6RdhxX z5)s+!=rryg0mme9xzrEVvzTC5@SJ0ou*%Qt`StUg=YMD(LyTN}cp3dMeUEesrAz(g zSz=WuN1p6WC}QnbtVpt)Rq1q1?}IdYK~y^3=CgUKKve)P_llJj;`4v0Uz`2O{78j3 zFPw#pjo;pxqd%kzZNB;W35rr7{@6576x)wN)3497>ozC)NwmVD#IM$*JB@GdqTf%M zH~NaJEo6l%z~s*dKP=U(?mL`sFOR z`P%qdmERi-GjS?a5QEr4p}a&YgXGWTbz&SFznf}wbkCh>568!L{YPuo7oRO-X}ch4 zBjD0B)3^!u?3b#p(KVJ`@Kb_vuKjZJ(5Hi1eS2n&lo1ugJYoEb_j*y160z{GwExg! zj{K3l*Uu{tKuUmEpj{4AX!9vtv7Xqg^1mWi-f;x$7g7MBrEAve*VOQgMbEW|sAR<^ z|Hbp>j7lyajyquVS8VB(mI7m{dAB23RluCn)^}?y9hcb8a63^(ME6^Aw=BnS-&{i1 zk93`!+~q3esHpAxV|FCgz#xR*9>LN|9XhZ!+bZ(?c!{&*++>;ogaU=e0e#7@4x-(a zA`9piI)sS~S2D+a2=f)J$IUK6B2x_U#Vln$PvVeHe<_;n)9Af)cRhikq+f6i3vv_T zuYscgYNKGVa<6UtJJDX*t8DKt6zBk$V-9j^-J^2}KF`U5?hq!|6T&@FYq)~-Sm)P! z$MQ7!U?kJS%8uN<2prHEt9EGdFrhYRYjr-EpqW{$mt!tGA)h&@&M_jQf(#Hi24UZ$ zVi1DPBtMA+23YF7F2^NbvaSFOI|#Mo(*}EfJQtV`J3f3w-_a?Dx}Y-5B$t0E82?3; zr=k$Bk9wFUL?u-J&=t*b5W0dj`-6h%nkDe)8U0p!zSchN^Y;Uw&4 zTVCSRgSEVr1I~*by>~l8FRtBzpn*{X<^tLHukbg91`~dVpb`{;4;byMvsyY@_H?p7 zF}^D9&V$4HX+0KgR^|itxkyYOGRI$_9CAO65?Mtrhdb97P z>Vvcy5rUa|>4QoK`1}VW27Y!}n_D*C-sK-<&fAE1<65|QhvxiQis(u^X>Tyl;a5^a z`7s}JukdAKBV7Qr02PaOjzNp+R}^m4lV3c4WhdG|_w zP2Y&<9+Q5dOayd{N~!AOk{5lZ=qupIpC-QV4y*m2hxWlB zxwHSpN#p6oz7kd{D$S|mB4I2N7Bq3aXHC6c4t9phHYD9LdrwZ~K2C2OlN*g? zq_6OD!Y}QVjx}o>*sglK=p4|4wBYiCU8Tx!6Z|n+CqlqyEzXRYI%Opb%gDK z5s*M)F~kHgsjk?54_baAgAth++?EV()>zV3*G># znT`!};cT}+$z1g@i}iTe+|=#RPd&aDH?z!o&D-sYYU_K^hl-3?iXPj0g1<|uY);!5 zj)+x;l%Stm<=)S}a=;E3iYRYug(9|UHE2F_5caR zcLHik_0>ghh(VC9_thn%pl$Dd@;OXTh?GD6`t@mME&pM_<0~~bVI*G=9XcDrdMV`4 zW2dk&1LN~KJ=r>zesY9K-Lz%euKoFjDqpTYI8X8qd=a?YTQ^}+PISbyG_9Xp_kbC< zp_b(m7n{jv8n(z)ZamN-7jAC3u+>y#E-YnpF>b=7RxJ=kooGBi#-qdJRV;hR?ZjnO128lQ0A}ddiOOKDI*CyIUN&exb)njkOF+x ziKGlV?8r3vCC+~-$PM!Fj6qu7=*dia_Up^$`d}jW?!U4*up_f5%!=yVnIWOt<^LP^ zbFRBDxZ|0LQjf4gTZd&GIt{mlYKRm+3u)Be^TuR8_^EK$=G)k2%>{<-(MRhJGUq&< z%I~HMsx25Kbk_PxCO>L=)%;cKvmd8rOb!Y#e)`0q$$*SqF=;o9xN&?&PX>q4+Sv_1*`TqU zEF7I_3IBDVQZhIu`dOqbI_z{I4-KMlb6}8mj_10sJJA~s@s}E3VCi{GZ+%I_#fP`O zcfmzZp`7|(4Q`X4^R*6)vuQ5vB60%&(0cVc&dg14wxSEflqz#aDn-i})Ef>SzuYx| zvT!yw4GU^DWPz!%P}0~h8h&bqIQ3Ei9)gbbAa(Js=|lGGS0i?D0e@l$Su6K;c217E zV~eznYr|+aIskm~nvZnFZsVvftcGWT^p@anqR04lZ(OGgq@{(z?X;NYZAuqFgZ*s` z3I4@Aw)yB5{vg_jfKgXh>-+|Mht;T8O>)K6nvW?A<`00aIyP?tTD#NK25pR%`&rtox0 zU&d<{8U)Cvd6seTX}C?5$v8_ZF_-F@=(+;vbtP_Ut$o_QGxAms@GJH_8Z2PV9?W>n zsb25!3hdKX4qpdcMhJaiHwU=wKFjy)3nG=0{an}ohlFic-uo9{;FW*!u zFHUsGoZh`WbmQ2l-RA?Rh)K&mz?Qq_DEC$t%=v3Ry6z@ufMLLWc`_(FlfC5*k)A!&Q| zHJ9$_*ic$ISto%U?QMVl^VLIj4&E=*xr=+fr6wjKhoj zVX=07nsF7gxmiu=8Dq9Yc-d%Y1kzfmZLO}vRN(ZlS{?*X(zXer5I<}|SEL7hT^$41 zR39P;EP7j(!M5nsp{7JFN;r(Srm4PXkEaZ!{LbLrB590RuVcLtn2tC->8L4jJ$_Bp zK5mEm9vJZZ3X4HLYh5T4<&WzW4=`2Y-C0!1%;^FDcS-?LIr7pbXy(FH6;bXK0$#R1 zHIVSsX7$_>ExIm=k%KUsRc4TFUH=sq+fXZcZ_3v~E_GN3gA3%1s3)ZlM9IA&ofq*4 zVOKY~t0n+j{^_!S`i;o(@!~l6!gI?;?Ya~$^HyQlwFa)M)Se=1&=SPJTrkbaP9c<) zuSR86RYLy4c@qH?5)LjRjP^??)>uz?ihG)x2~G>7+s~IU{O#-8+JO(ODJbQlpVclD z0l}2fLg*C@@*mvE%E zdcNk)PFOz6bnTwF%oq}b+-XcJoIP1QjY1-b?*J#ej}s;hM$=7riP384QDZzeQrHxrjPGuA?>J9C+tCAa?frX|9fTtRhy&lGR#9SERZuqltjue%E7Z#o zn4ihI#9cPy$_GZ*PMp-<@RRV6*Thjsw>cPk*B$I`hdrq$5Z74MttCVe1w84g-CN4I z0vKSJR!?$EQypPAfxLW{;^biaSQA7(&pf&lB5KKwNhY% zjbX6ONslnvAKTYxJWKn-R|uQ(kAJEx7$Uvm^1_-jIGXYIvTL@NU55ZHTtJlnqM|SMMjtSKojr$Lu818j1{5yhV4g`7bB`3&JHyKVl@qY1UVR8A38OJmwSjBQ^v0XesZt$CR6SMdFLY3&XkPF)3epkT2Gi-};4-Sv| zbewbh?V{$tu?!B`_srnIKCwwvZDn{96xr>}l3>u*CA~U8_e^+|I2_Ck=E;A9y;c2q zTD1KY?oPEdE%RNt-E_WK9Q%NviC&1^e}Qnjx`3c2Tx$C0-1UrD(9y41dd~7kfIMFoS-wBWfa20j{y znAJEzLP6nuWEu%>#ruyT+8U(!WDs!%gVOe1Y&V1-qnWhgkE0DUX(>Z!+!=4@_#7oL zeA*_!L+*|y7a5=ii=uH z8VJxFs(uTevp#iLA_k-6AVJm#(+Q`GA(2qW+rMg2vvjrl*I0Z1ZlP$!Xxd^(u}N%9 z*g;gLeFc!>8a_t*1(Q{hA8?3GO>^R=v|w|E{T3eawSv_5P}i>wId-ybD7u6=`qPAJ z{P4Tld39PZ#}evQat7_>Xg+j)&51jz*+H4R4SLWG1EU=lFP{rg4C$opk6)cm7n3yU zql4vxp=fy=C2g2gYuBFTi%gB|_!Ls@ZugRb>mHNTi9Z|;o!HFvdU-mih$WrQ1HCRQ4^IK;h)`)3N&ClMN9glO1tN9jJJqFMXZjnM zzi$BuX!I-pw11l|A9qSzM#4sdiigf`-n z;tQiqsN<0S+qcP5A*TsrH+Ow`uSf{OxCMKNFm||3V+vcs7dmsNAm829=c5$h+*M8? zb~d|sl1m*vYkw{TkWyBtpRE7+fei|KFQp_6J#;HkENaKDsQOp_8G?PgIXc~?rZRbj zr(bxuuoRx|S-?|mJw@}vYV1ST{}!r+8T1UE~-QD;L7L(-su#UJybwV@` zfFN9;Vzbv~M`2IZAR}?z!_~pVho*Fs^!ve&`CYsk^Sh@oPWI!3{bsmrUum%&5_+nc zQbayYatsb8@lSC;k=hQ<&6)5SlG#6udC4n+@l=%Tk6%B5M=7FYqMxw#oHJ*Caci!r z!krs7GU`nvEt%!Yi-E&7NH8jWiYxV9YU=<2w3~M8*9^gv%81>%p3DmRORvEbsOC#z z1Gg*f=|L4VCIJ|;^h_?FM)X0dXMHmzHlar=5DRbng3Zk~DMa!q%Q1%f@iP z&otP$6k6Sw`I42(h^J!}lRJkMWL%syPmqvA-%P#^1wWI)5__+xOc{m>Fv8g|)n@-b zb(lf{BZH{mMniBt1=FCGhwjv9fJ~)6DLX%<^KXp z0<`_;mW5jNeNK$nAa(~(1tJv+e?rMHP&yPK13)0UXdU0srU)526d^;0z_&>g-tFf- zevJEvkKoph9k_qwC>Ira@&FtMu$xl4Cqk=^XWKwc!0rI5$!7|M%uLaP0KHLo{vZq@ zTQ`s?6bS0x9rb(lL_oW?s9m=%>oEleogV6ISCM$`JRTf9ilp-wU}k-8Pj3R`5I~|C zh8}ufrQ$U_&=#>f0G5eTD!nL0FGA6sf_5SxVE`P3)>RZ|4-Y6>wS-UO#_+6PAD;E= z!(FL_tG5?iyu3;+22zll3w=ro^x70;B_$#)?jF+b-9yUFTS$$KWxEoOnF7~9=~;jr z0Wlwq&}eM#FpkjJ9RSDt&)3({#5lC1)Z7JxbR_Tm_{aal`*d2fsvDC*$ zYLqxA7!WzA*^3h5LnwSGfp6j8v=#x80dS>2Edsa#kO6Q7g%ku*6gm*cB7Xyb0fmV# z3;;0$)Cdp*D0Cpm0i`-hh>lR?P(rf^MLGyc0gy^TQVD1(rARePN%Duu_6}}M{6D}z V+>ihVMrHs2002ovPDHLkV1ni(?REeF literal 0 HcmV?d00001 diff --git a/html/index.html b/html/index.html new file mode 100644 index 0000000..086af36 --- /dev/null +++ b/html/index.html @@ -0,0 +1,12 @@ + + + Wireguard + + +

Wireguard UI

+ +

+ hello, ui +

+ + diff --git a/server.go b/server.go index 0d60abf..d22da33 100644 --- a/server.go +++ b/server.go @@ -13,6 +13,7 @@ import ( "sync" "github.com/dgrijalva/jwt-go" + "github.com/elazarl/go-bindata-assetfs" "github.com/google/nftables" "github.com/google/nftables/expr" "github.com/julienschmidt/httprouter" @@ -43,6 +44,7 @@ type Server struct { Config *ServerConfig ipAddr net.IP clientIPRange *net.IPNet + assets http.Handler } type WgLink struct { @@ -82,12 +84,14 @@ func NewServer() *Server { config := NewServerConfig(cfgPath) log.Debug("Configuration loaded with public key: ", config.PublicKey) + assets := http.FileServer(&assetfs.AssetFS{Asset: Asset, AssetDir: AssetDir, AssetInfo: AssetInfo, Prefix: ""}) s := Server{ serverConfigPath: cfgPath, Config: config, ipAddr: ipAddr, clientIPRange: ipNet, + assets: assets, } log.Debug("Server initialized: ", *dataDir) @@ -271,6 +275,7 @@ func (s *Server) Start() error { router := httprouter.New() router.GET("/", s.Index) + router.GET("/img/*filepath", s.Index) router.GET("/api/v1/users/:user/devices/:device", s.withAuth(s.GetDevice)) router.PUT("/api/v1/users/:user/devices/:device", s.withAuth(s.EditDevice)) router.DELETE("/api/v1/users/:user/devices/:device", s.withAuth(s.DeleteDevice)) @@ -339,7 +344,7 @@ func (s *Server) withAuth(handler httprouter.Handle) httprouter.Handle { func (s *Server) Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { log.Debug("Index") - w.Write([]byte("Hello World")) + s.assets.ServeHTTP(w, r) } func (s *Server) GetDevices(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {