From 5d41d24e7111a5f8ae0384f946e5babd7a21c2a7 Mon Sep 17 00:00:00 2001 From: patcas Date: Sat, 2 Aug 2025 14:16:27 +0200 Subject: [PATCH] implemented visitor mode and sample image --- app/main.py | 6 ---- app/plugins/mode/visitor_mode.py | 19 ++++++++++-- app/plugins/mode/visitor_mode_sample.png | Bin 0 -> 22879 bytes app/plugins/traefik/api_provider.py | 17 ++++++----- app/static/main.js | 36 +++++++++++++++++------ docker-compose.yml | 2 +- 6 files changed, 54 insertions(+), 26 deletions(-) create mode 100644 app/plugins/mode/visitor_mode_sample.png diff --git a/app/main.py b/app/main.py index df9aac9..207fea3 100644 --- a/app/main.py +++ b/app/main.py @@ -7,11 +7,7 @@ app = Flask(__name__) - - - # Setup redirect and hosting of frontend - @app.route('/') def base(): return render_template('index.html', projecturl=os.environ["DOC_PROJECT_URL"], projectname=os.environ["DOC_PROJECT_NAME"]) @@ -87,8 +83,6 @@ def swaggerjson(): swagger_json["paths"]["/{}/{}".format(plugin,feature)] = paths return swagger_json - - if __name__ == '__main__': app.debug = True app.run(port=8080, host="0.0.0.0") diff --git a/app/plugins/mode/visitor_mode.py b/app/plugins/mode/visitor_mode.py index c838ff5..d074980 100644 --- a/app/plugins/mode/visitor_mode.py +++ b/app/plugins/mode/visitor_mode.py @@ -1,3 +1,4 @@ +import base64 import json import os #todo input sanitization @@ -9,8 +10,17 @@ def create(id): # POST return {"error":'Visitormode already exists'} else: + # Get the directory where the script is located + script_dir = os.path.dirname(os.path.realpath(__file__)) + + # Construct the full path to the image file + sample_image_path = os.path.join(script_dir, "visitor_mode_sample.png") + + with open(sample_image_path, "rb") as image_file: + encoded_sample_image = base64.b64encode(image_file.read()).decode('utf-8') + f = open(configpath, "w+") - content = {"id":"visitormode", "enabled":False} + content = {"id":"visitormode", "is_enabled":False, "base64_placeholder_image": encoded_sample_image} f.write(json.dumps(content)) f.close() return {'ok':'Visitor Mode Created'} @@ -27,6 +37,9 @@ def read(id=False): # GET content += [json.loads(mode_content)] return {'table':content} + elif id == "visitor_mode_image": + return '' + else: #return specific mode configpath = "/data/modes/visitormode" if os.path.isfile(configpath) == False: @@ -38,14 +51,14 @@ def read(id=False): # GET f.close() return {'form':json.loads(content)} -def update(id, enabled): # POST +def update(id, is_enabled, base64_placeholder_image): # POST configpath = "/data/modes/visitormode" if os.path.isfile(configpath) == False: return {"error":'Mode does not exist'} else: f = open(configpath, "w+") - content = {"id":"visitormode", "enabled":enabled} + content = {"id":"visitormode", "is_enabled":is_enabled, "base64_placeholder_image": base64_placeholder_image} f.write(json.dumps(content)) f.close() return {'ok':'Mode config updated'} diff --git a/app/plugins/mode/visitor_mode_sample.png b/app/plugins/mode/visitor_mode_sample.png new file mode 100644 index 0000000000000000000000000000000000000000..ec206c8b1b08d4d0564856db10ceaac635e99657 GIT binary patch literal 22879 zcmeHvX;f2J+jb}|v`#d&ipZqFLaPiylzFH%fK&w)4)dfyC`5=D83O@}L!3ZGfyh)R zkOKi3!W=+F0Xcw*2{I+f5HJi8A_NE_-%g+RS>KQM*Z22Z!s5?a$=Z8g`yQ_Qy6?l4 zV~+M4*KJ>iLZLP~9KxMIp%jx)sBcZbR{&2Yd!8Lcq2w-v96Wf;;o!j?XU-DwA*X{- zs9$d-+_F0K;`eQrxcPrxb5Wb#G4kVm^FCW!HNuvw$9BG7M>o&(UQs-{{r1nw_Rko@ z!`-J?&t7`CDY_l_aaArtIs0dyM=gTee_Y$9G&}o|DM+XlZ~E~bl<#5n!|y#|*t9>d z)~>?a;%v8lgQ-k;jTrHE{kD-i7nzFU3PvnDnr6G-mTuKm_!c+vE%r!OOmYmq$JkV` z+1|s$^-A{@og;NS=CpdZq;gF&ytl^S-y?Y5m4_{-3a{PO#|JrU!Y{{Fj2mtz-in9i90w${P=YmFp|Frw9|KP3fC=EN$@qq@GCs0ioRH zO#W4-M@;XW*#G#F z=k&43H}CiT5oYkS*`3dpzDVekbz0;Pgl-N&N@>rCtl%=(qC~d1_^yO<`CG8huRmWA z_=><+1im8h6@jk^d_~|Z0$&mMiojO{z9R4yf&VuIOmqGO1!YzcUc&}!lRfrem$LTq zdDf_NTD&NrN@v%y=WTn}fs8cEJ7XVNqZ4UrPG^abdLAvHqdeZ@`EGzM|SMlWd2^dt-ZwX72CuJ2dZqTbvdj#~5Pjb|n9#@Fq(RtT@K9+ZTFn3G~inNCk5<2s8tege26hBB(?zj{-zH~LnBYf~8 zli#q*;OJQoNHU3dpMbcG{0-I_V}i7J%l6KW^3{$@3lc&R-^yZ%#^06d!g34d-O6^K zjx}v>nrOjvCp*j@KI?Rw4D&hg%GJJ_`cNw@(KCHqBHsHVuNcm%{_TYyI6#7GdMc;E zo-CBUj+(zAucYZP|1#VCdg8fy8=XzomcCG)uT_e59lA-(Dc9}LTzU0vQV!|T_bC4X zb;tPatboq2mVf(WM!(?W8DFsy&*?19^Pe$3QShc)f?k3k;RB}QId zB!{y*+RwMXpYhQ7bbn|l@6WRXq4hx?=>fMbXE-;0@<}>9>!iJmgA&f+ts8VZlz07r`YiRrp-=;}pZSxE^qAP_JZ9nfbE0Q(UErPo z-i4`z?8cB>o1r1;&9M}Cg#nvO&oMJ#^Lp6V7fN)2L{TE2AxX+CrR2}Dj)}LMgLxTs zVm54^J{Em@^$=Zr=xSPbL9iQ(0Yws`xmMVwz9A=PI%Aya!g>iU zoG8^{vNCoK@vg~>ioxe*j|JcLCGww= zcVK`sYiE7Z#kU9R?ixaoJF+CHO+}6;kycla@^?c9Q?rT1uxb(iV*Q+zE9)5?Cl1{? zzBo%EMdv+^n|=`crE-=+cJyAi%TvWir_rC%m*sO?IF>gu}CFi9UJ?e!EmqNz(Rj_M(bg z{c@jY78#qS9<;dg(T+b$suQokD+6%cGv8P)w6F@VjP6o8ClbKB3VIOB#(HjDonXoW z<_}sKrFIp=)w^m7>bYjvV3?N@lz1l6=9Rc!9EKI{DxCfhpCGZes1PVG;F&aM_{FkW z*|zx8c-5TFNCQbf)e^xwk4$mxGYQqhBwC zv9}xW@}s7Au~|gVpqkQ1kyn};9TqOGG`g_RIp=eXvB6OyauGkDu0buoHt`M%^AAO9 zewrn@#M)O#fy-W-ZKU9HF}E1x7uJ2<3DJwC9OND$;wiiqj}I5jW*qt!^`TT3CEvWF zW_{66HBx1gbxY({va@~^E9~TONi{PfI zS=BnR*OPWBCP18N{SW+OKV~NdhVTp7*<_88=w+lRm+`^p)k3k8qZQM;7IH#Lf zL8iokJJ=4#c`Fj-wo;^MKioLl=XY}~eU@^5A3J@{11ltDHKbyN<#603PO(V^JFa1O zdqJI;@eYMrOv3^gl9&2juX?;*7Cm^h)75fr{R!|ERX(6z;(0z3Vo8d*;y3zg#_TxZB^Qd6(V8 zS6z?j`41i5Z|hV(T7B?=dMtH=<3ADKcU`^u>IX#}?)ddzF&HDKayRK*O32@qHBhwq z#2{B7p1sU*D{^G@*SkVF2?RIXbQMq6)8l$(2xR^ZCg@g#Jt>_nzL4E}dd>3mJ>vR{pl6CTCpy6H#L#VdjX6$5wm0maK^w zDI59H9f~a))Ud#{lrcq$_AQzWcFFB6D1VL$h#%vT-W#@|a!oCH{-_$*xCCxZLHd5B z#YW&7$n%>aMi4Zkj5g>%$Vwj;30foV=!j6l%RH`24R2KDv87Arq)$cXJg!#Rg5jP`}(Drnz2rG2%xK-*wB&I)} zZP3N!)*qQ_)Mq!LMb2fHeOKF(L$# z=i8r%D7_wB5l8&Oep-|YhmHn)NH#t6PBC9##k4#a9h+{KAZlcgqZVBB^ zIVC?muxpYr=t(b_v(%B_V3j#$gp-y(XFDWwP` z@=Q_Q(NWYxxnYJ0YLJ}R^%Lc{cn5*xE)-e1CA9jecJdt^@Qt5lUhK(#yVY(MU=?@^s-$}r1{+u9YiX(|*DMzAmk;cmIDr$N+4NXM zS@=om8^04!li{_<_o%&Kt4CTpSLL)CZ!W#ME)Z^IiVlO@SnH^?a<f!x&b!GN(6 zCp`vb75`x&0APB8#3erv6%LK>KAj;qyni3qug$qDjo&v`iq>v(#G8t0459_hyh@x{ zXz%>S*jXABC6FvKMamo0{Re*UGMHs@@i%;@HmIQ1W;o*S2$5BPJ2Wn8#N;M67jHxr z0fRC+EuxbJiTz|7!Vik)4FpVq3E|((KK=3NI+TBG5HAFZoNdmuiW7*D&(<~=Y_-Zy z&JZ_*o>OI4-(G`)orA)?D63zavhXi7z%7$)X9&mf5KQyr8DXw zmcWJ8n=zalR78!*JMV(>*DuX`ghHkF2BM}fpzmMq=3Be5PHH`ObiXEfC~EY;tHfFH|c5`Drv3byj90ggIDa!eh{@wW0Yj*#7tr1@+vJ2z7@P!qBBEoKZ8@hGF zb+dD48?!I>GeU5dCx36Nqt@K*FE$o(`$rxj4P=}e1Wg!}uMyoKK?yw2u8Z31)_VkW zJok*$pban6Uwx^)#v*f#F&d43nB7xMZAWGxkEF!O7-y~M#2@uTNzD;SYBIe zOZ;FsO*`=)In-WFQMGK#XP$@65TJ#-I}OteF!+e8H3vcb+$jewjI;Y`gfe0vZ|A`P zm@h`pW&b7+_L|On=tGhIc**V{u$MLRYiDVO4m_7VQJksUf+e)sP){p-?RSt&X?P*@WymF(HFO>Vx43{1+7&O%XAY+^vi1w*d*Rts5$R+Ok>}abLAq3 zsEJnG_`O-&JU8q;ohIB5q9BJHUe&$k?FoIS) z*PLLP~3khT$BomIO)YN4`N} z6Mc4lhkE)TMH7uZ-1EC8FnQW~TCI@!)LGrG_+;Wwqj?v^qwM}Z(lL{@a=6hF6Fv&B z_|?5>R^_o9x1cpu(4nZ97gdc1n&O=xpMC#m3V`nfZ;h@KtpTdHXT3)iTv7@L5I+}% z@vNbfg3ViJ z$j$76I|1IUHBzYc!Y`L*lUFro);klhq1I#QqzKNlnKf zKh-xH7IrPquvOiuSH9bH8we8Uxe`@L_-@4{7M>An*FSa_T6lZwqrvS1D1TQO?Yk=i zv|xF2??UQ-X91cslgWYs$Ei&V98nu`KrmJWcVI?_2n`0_V3VZFKN5~Y>Y21?4RrJY zTtlb^={8N-jb(G4I$(*(ec-my7{4O%c{HOP7PYy_0zX`4Mdv77Ol3~nq-HkeAHeG;Vb+Lz5=rbE>R=pIYR>uny9^m4WLHb z-G(T+vQiZ;sed4IL;4pViyEWxoUlVjAfKBw&3Bte8qkJK+F`|piov|hPfn?{2^}PS z7^DZg7WI6>MkD+y1^H&xDCeHvOI2g^_Am7O?xaw6`SiqF)g{S3Yq??&m9UQ)QQ)5N zEeQkZ=(!jbfc5N(J+Qg)Al?Fcj(y%x)xKpk|4j5N%kx6E!zOl|%@T+D)GzwmvUC?# zfSrb4sn2GUbMyo(#@Yz;B_ghOhg&MO*0JAsGG8Hy3qdyOPgBUiR_@J9;{EZnRn4BF z3Tli{VJ&uh-oMW0u`krW5!TofiE2iC(*Be~72g}RYdOL?cR5YRYm?9YggpD;8`N6q zKI|n)<(}qFf$FfrwGNK%D@$tAx;vy&dCb0JWk_1_b__S-VKN#i@ z$iLV$$>g5&T)Yo2b|XHDud;hQ#Y$HG5(}jwzM_19@l~o$y9VI^G?PZF2Btp0{V=P( z2u`Jn^_ZuhF`|)kT?$DirzRmp3I1KvD;g`c4Er~?TXw7o zsHEms=!mE9Q14?IzqA4y9m#c?O)Lg4_s<@ zPR`RnuN?C^{Vd!B!#fc&FuZ_ht4?<06~e>~?%gwRsHb>tRCy(35U$&c;gGS{PCoz# z*Y%K?)q*gGUfIznkHYigT)!@!C!m>ow1E5}tFRmS(?Te6h$?KS#0}^zzVz!t1~zS|--S*5m8@zl z8A4*`8mLR3ldKzJA$9X0ar9Wy+QLhAzgsx|7Wi(=F|a%>gC@}IlL~$z1GDCylSA#{ zT{!PlhlA*R)EPlS1!5UEY%HRh9w%`h^``vr8tKH00A1zL&qhR00oz@ogzEA3U`tb| z1~=M-Rtr^L$lGK9hd#+f+5K)dV^>jt~-s(j*>&+FUf-C zOj-nin|i)yB!~wJs|44G3QY}k_4aMTx%S5SYctDT@Cv)_16XyEBW`kGrI)v>saTGO zLq2t{3TVh}4fx_-Tt9JHZSKg=X?nY3O?IRW{YgWTRr<_2sB#j?h2T2p0nQ0Wb? zO!e`toD5k!xn55xp_&HZo`600hlkgplI}(fQZrfc>z1Bw>2KW+`21G1f%}+wt|#O- z#kBFZqit?7!thkn3?h4h>2Ca-+n&`+ZVHgO`4hR}ESun=>1Z^aQG^)@lXnx3{np2P zs4(`?ht9|we159O7$sX(II?HYd#N1C^&(g{^BdaoV!QK>gKDl&?YjX_$jiP(OW~Dw z8cp!#oymYA#}(4_8Z)PuVYvh3L??knqx|*tfdm|4!j9?c(l~AsHO=IDMi2aB(~jIw z%oTQl>I3438{4m6);~45?~Rl1a9jqdsVbFfujEb{`X=RVh?rvs^47%54EvU8^NUX7 z@~FXG^3ABd-x&!D&~uIF4V!=p?DZ*(4%-Lu-V|Qqn)KNl59V$`+i#-H&*RyVXK>jZ zvQ3$Y65SVMH)D?B74OfjAQt?==)Ny#qhU!6y>*`VjPr%9UhFn46k&u z1`A>H`1#OF7j?-Le4`)O28#!gcvQmlQOqf2neC7KYx}g=Rq9h#ra~MNtWkPV`OHan ze{_Ik#~HuB*Y40_|H4xqi`FO&gqNSSjSf4WP(&f$$Uv~-SdDz@ zZav!g$QR8Nsbfa&A3O!~-y!j-JfGp09t0ix7C+r_bFA`{vMeKDX*=ICsf5K$9Vk6Rco+Dn56*^sd1+l6zBZ8na z4&9fzH>jyfrrlv%(5XI;JFP;0_gg-K?;5FWlW8kX3*%R1o=MNkkH+TtIv0!90<1Qo zT<79sSvJmv6`}Qfli#x$)m0B#Y<9YO#4UC|7h+YUpE94!`YTNxD>S3U0<8;t59jn9 z_NWm_eCxh~3PxWIUBRrh{lYN;8$FC~{A+CY+7m|9jU)Q8R;GCWwp&GKBvlbO%ZO%c zby@ilDs?k#sWF{4dL=;9dXNtYYetyAuM)bO=Q#x!ZK*xZHU1lr|At@3IwgK zo=L1@&_K%f^+wpkiz8RjhJ;0#lqAO#r5Op+XtAlcBnz8q%icc3zAh)=ofZnZdC|2?`w1|>^?w;gG+zY8ALp9 z4O%FNJs0H`5Fji1X`+FNG(8eER=E0K3^T^OdS5>(eA?&f;0Q4|Vh+%Uz&6cQmaGEN zQ{p(Br7<=!e@d??Qa;14Om3JX4#SLml>Z|o_hXbSU&LDIc+-7QNwGmPL!B7|G^B{1 z1!%}DlUVOP-~!bL@e&kY#aA#E&GhQ_842sy{X)#CzC4A-XTcnEY@Q~1Vv)lI0#`-4 z|Haehm{&VqELom5SF-Sh=&-SXNgN<^gN)vgj|n6pOpzP-tRJKt%u~h+ZE3Z=7#qPf z5`T=)DL$GZjsH>xugoTm3%o(ly5C7Yg%2-pwif2mmeCB4FyF(B*w;S)cdtD^9NgN4 zbZU*f?O+%}`PntGd06@WNvxdPTiKg z0pQjCbC~qg{u4NFO|)AO?-yDuC-5K99VFfdzm|%`|Ap6Y*E|fdLTJm)$m)IlYRts_ zt5lPXrypv${Uy8<-(`rkRxj^wh$09Z>OyhIt9J_j6LfM?RM8dLptSIfhE!0#+O$5P z+)%0YF0A!M{DM7SYE?nsvy8H1DGz>K|0y$H{Im1tlrqPXlPGg~Y^9TY16^_r;`m@glY9Zq;ng z2haLoNc|W@EQUMWhDoApR09!5dT7s6T!}h*^tXxy1tlX;4%@kp`Td z>yTGbXxnhdd8WuGJ;Y1nE^WZzsiuzxng~`05uP9O%{Ek~mn@!nI=!RkXreXMw?#E^ z#Ompxsz6P}^TOp{SR3_4xmHWF*`8u1(vSdI{erQ!j+G9Vw;_61;eMvb#N}=@yUg7! zg*tbqZ^_bIFHGu37nQ(uphqwaB(!p){S#G(wMNF|Ci2s1PM-OlW}(gHKyB@q_~!?3 z4Y3?#1@)O@_R^DJ!9Rt1dR62EWF6<3rJd`8@voY7qKMBvb}&12OOXcP73c74cKBIW z$ekK=D1TVm;9e#}Ney>pg-W<)utUtBf|b<(OF9pc=M4<@`ch zb_167=oH)?qzS_UCHJ*(rbw(mhqpAtDt}4%6UqT~(FLGg0DUWD0&Qq>#~9_mbsJC) zelw2c4vQ6DO%IWqrcT+^!xSwn(Pr;7lXJ^-vjp}eX#PdF0#30Fo#+GE_>Od&?qD|+ zy>+&^Zpc3@fa`9&e;MYwn@e(6jV^*G+FRaNJEu|u6ffy5I5*pGa*xXSchQ~#5oHQd z!|oTwmj9P;NK#a{-=tkOcs8NY_|w4a-F_RY7L$?qBg>e7ARD|48Qfoj~@?2kPZDARO@vRqh#4I5NfD~);{GNM4gsR~|u45wVD zHoZoCGW=PIpe5o*n2|3>{s`i|WQz6}k&4bU2osEK(1O9E%Oun{h08|ua4s6n^?eRC z?!$^S-iVBgU^n{~qS;Rcb#~b-vNRPLj6UBXI0mI&r&b$0YyDT)3g#ukV3)d?4?$bj~w8vWq-8ZDw+6xl$*!{|_@pwr64sAf`dMueRvt7@4 z0LabMrC!*)3eHtQC+5(+3{E9@K=y8|T-vg;3O-3--=ZNOu;@N&Hjpsi*m*x6e{(0+ zsRJ?4W39madFoP2bC~H9Fv3A2lD0WA0x+kzavhrJYig(xSg(jbC;tb#5bV+NJ=miN zZKxc`i~N@@I{z-;eA<+PLr(pxbyeN^?JljiioIrtp*)5;wQZ3z-cX`;(S|QWXv1h9 zuzJ9EB&$7)=`<+v`I{OzE(i*n*_+L;vMPfwt$yqyE^vtTncc;3E1qY(-h1^n)zsrZ z4il*q_6-Wb%GjyAkq|U?lh2>L?8+K0*a(MqP-DiLGc^Nwt(EW9e08g$ddSGYPNok@V#XLkZ&?Od|son2zR53m2B;62%pgEK+|< zbjm)hC5(Ifp`V~NA_qmzwOKdJ1pXP~{-iXO+Q)?1(}ZxC?`C%)r&fXA8;hPRN8j(B zWeUcRW%I2Qk>;CPuPCkpi6eThS#GC2uv@S!Bdk33y7b@fbweUzf9JBV5e65MpWa<@<=1)|0gayfoJn*syDvh4|o-_L58`O zk#Ie<|6D(_)s^*k)8HhNxEbBFe@q_ctI`<;q4)Qno%_)L2|c$2^R-q!=K_5v@YZ*W z83qt^<9jQAJzkNh@kM5coz}=T!Xq0Wb#$UNW|mS$EwJ-gjAB|Vtf4)jjp5zxnsOVi zSj44}N`T)AhyOuG4udhHgR*MiU)Ve5WW*&0<{yy%10Q}6w z2GqkKPJ!G6a&xHSjY+XzCqj6<36)7B`vX0hc6ODTxzpL)hH|m$ib@78(G5~g`F_ZL zaocc()+vprb_LT3!*7z{I?!b6+@D?$?4&Sx>3u!e<>O7QpWb^~JcJuf|FI%ELrSVk zhV~oX7w@q9m%;588#@(n#QK2CQKOcr({d;aKe0?*bfkQUnRwh7d-?VEl=mujL{ z-gCqWYPX#UL(Su<-jjc)O+9SY9j%h}%kPzT?wP)#HOkQg8s3p1DbVnc?E5{x6aAp| zG~V=aT5aFi@b#pL3&3mD%@?!@{g>@tS;gu7QYdP)2YM!MQr!Dj(~2Lk@@7&<2ht1O zB~Si#hoOtkF$mpfwGvynJZ`BA(f0Q#otJ3XqOCT>FiuCFWIG+HTaFMgrH}<7vE>@v| zgTE0f{d|5#8>pec?$kg9w`K;YoL zm=hIX)C12+_{$q#@<~O_NEnQsn?^@~hNO+DZbA7`F0jB&?rYXekzeh_pslN4h!AMa zM%Detc?Yz~ub$&=>*mTNJ;*+p2dl|EILi@+ixgk2F196#zk?znTz0Vvm3qyt1%$I_ zvWU7rKTq8g8Yn&gv*cr2&F0?K&NBqf5;!_#GRV57JuuNusS7TLfAk!{?{s zq6srbdIvxqhnWsGYE80Utk^d9$O9j4C=d{4m|Sa&hRwbb*s&X__)3449ydvV zLpQ5ro40Q8Ub_M@-YTS|B^!|@zSD5-eYrhL#THmsaPiUEG+L_0TkS3A(lnqCZzew0SE;F$8y>OOY zi>lqFymy}BbY0M(i%pdIas>z66-d)9M_0q&^fW<{5%{(GFPqV~Xak#W6z-O9-cTPB zGE)KizGw-l9t?xUB4Fks1wAL$`oo}bx8RIaAQ^iMvK{(QwOW7ZB3 z>)I*vJa`46)_@vDDec*(x1RMoFpes3E_vZv?whPE-29ZswT#s)`46#-yirHMWoLuL zMV+B77nFaGLcTC>fo}E@3kKZfHTgWvz)Y#;St-bES-Sfg;jRwE`Eiaz;)h)r4b#2T zr)dG8fHBAV?KfJy&lGX9(niClwnI8-9Uvm!nvhNL3 zL=NO}U)*LhYn!04coWzHxc!|9?XqtlkksvE4 zg#!M{Bp2rE$fw)>Ow{zXQ{@pshLWLRUZ<4*-n~k&kf6HwMTIc^>9=+OHv9;X*4G_ zm9=spy)QiQn$`i+fgN@itVIg))MAQ-uj&iw@3ZY`G`&klK9Va>%h>i8P@Pu6)*3H@ zpVXeri_h07mrJUxam)af?p#`|%#C^#FHAc_UW=S+7$)oQdjfau+p^uJmz;PAuVK0? zAEsR?|Zqs2ia{vxO1AM5!S)R;MH4ba3{ zMyAju>rTlS92bh8t!W=$Dp(RHJ+tGPlNW#{)xvjxG^S*CUyz?^IS!q4R z$OLOr0+WMz2}Y!c<4YTOUV?;yZKB+IXHP;#`;Ke3XuV*r4(QJ+iA~fce<;l6VC&#! zm`|sfEw0Uk&|(>!iec+{7+&E~Ym#ApgpsMbCm~OLUhym~wiQt`qDs4v2KRi~Mt1j) zh_pt8wAg~OsV6WAGZIq%1DLq5lG*6As^NYi81vyaZ&QMbaU1Vhq%YEVx5qC!p3qo|b(}E@+hW%SYrDxMKYdkWV%0v4o_u#Tw0~zDaYbusIdA^ zPI1J3t}GKH;jnGVR2?t`966gS$LDTT&a#-O`LLZ0J&k4o#&VdVhv0KZ-p(z)fmcHD z8rD&ua}$eGyG_fO(t9Xwm1b_(uwh|3r1TTviR0=HjCJLPB1%u->j0Tl@ZC`bN}dli z0lM{gUez^kzf`JD6?^p-2z80QJV41wqjZSzk6abf5QgVO?d))5FS~y7(MXHlWNm|O z0yAU}MQhcdqf@lIAV`%gNKK_;jf4jRMvC}TwAe~EzMY8o6x-p{jzf&L(a&vQP*Nbd zm=^6_$}Xz{6Nd+B%WKH$m7#gfj5szPLiaJld0aA4g)_8e!5N`rX8SfSEZVJ=sd zF1-iGoh8gjUmK(LmKvvnBkXAf<+a`mbB~j0I+c0*malNcK;*}w=la^aGdu~sy5qr) zoVof$92h=TPp8%EJ_`l27n(f}bPL%1dw@*@@r3Ea9|m?})+{k=4WhNj)EF;Zyd~Bq zgVwA6auM{JuTaJIEeEwmqPJRH9KVq=+7w1-{#oi??kSs&{0=?0f)1OThvVGvzPf2e z{g>QC9PT|@;!|AFzK0hUiwV4fGM*=_~wepdQx(zIi3BsHYozI2T=4}UKNrEa zEu@UkHTA*8QX_Mi&*zAPwMMSD&n?a%tB#P*PiQwhZwopCl;uC6y=+_3(Pa>x(+Edh zqYhz4y3i3^WH8L^>@mn7oNmTTZ(Lg=Kvq^j>eyE83^Dg%a`mqjh5O)EpZ%m3;C89^ z)RRuaQ)4&Q8dEfIky4nzK7ebmC z`_Urd7M5NbsJXH^@mtV{?EoDI1aut0{mfEL&s}j{CemV;i^uPaD6P~FQUx2)w#-&~ zoM6JPB?LWJNHx{NHW?l5*%r*RD_c9ofBtSDvOjB!rT$v5Kr({F z_ZbzFh18hlu?gjr!i^H?7IV&Swv!(J8f*NM8&kA4O*M_gEjg0~fE^_`YP&fRW-2*i z6D&z&Tf$eTGY$v2g!vK}W>~)p+>}SzDi`O~V2zc=Zxw{0P_JZ-3E@PId!5|yXnsPl zPR~}sW|M6w1j$jZ=O7IMxIshAro8yB@id(yj@K6CFMuqS#}7B@)8<~MCZ`AVJI{3L zh0rCEu}@2hK5*ZU`KvMYmY9^!zU@H*H=qOOWzsHhEY{P*__{%&PDDSgh@S~kBBr;@ zal0(I^7=;xsY^_DzkQ%Q%Kfm6ie$GV&VW0lML)jb3MmKi#03$WWC5Tt&Tyy{u8YQp zmwgjEWRB4Q-UP!OF|CY}^cgg7Mf`-Rf`k;RJ%g?Pj#He@?!N-u(~afOvH$VJ9W^4@ zv3)hW>pg$Zh#9odhE8@9!Ek|n3*pfjs5BLX{U+Lm*QsWlu1+NN^&{XJ-A61y523UJ znTX{pgO?0?xgeGbgN(*!2h#l^qSuvAWc#>dI7<_(py{XN^QvtmyevK`qUUt23@~gP zpM~MaYO5^H^~Sd$GabOY;FaFk!6tZRg8E?q_2TMcp}@9K8`0>KHaaJ;j$Y0ZHP$n{zJT#Fka`GC>Te`X#r}`8<39 zqr;QX`o#+S=yMG|) zLLu{0$V>t{q8g5)Kt9F~TL*&Ba}DlNT#sTUA6|G|WF$1O%gxFI6Vdql6g&aCvB91YT*su12t-!x?rhIapy(Zh78S()0jkWE2dt zIYU`(BQRs=E>OUg(o@o{WW^x73Z4t-Ft;56!?L*pp5lB2g&G|8^a52$xVnk)Q#d89 zF{tr-!b}aj-x^{hLd-fipYkIEE}_Fj#HwQWVoD$hKN6e%VxOg*+ zW8P|f*XBkP>V-^`Uyky|HJtND=H6A!8&%l16lmKR@R>vi660E!m=O-J73v2oY_)sW z3@}!7Fs`ML78{C-f5eEowe?gkm=gxG8&sus`S?wSpAI3kg6-~Ny$4fr zg$jDju 0 and mode_data['table'][0]['is_enabled'] == 'true': + screen_host = 'http://ssp:8080' + screen_path = '/plugins/mode/visitor_mode?id=visitor_mode_image' + else: + screen_host = re.match("^(https?://[^/]+)/(.*)$", screen['url']).groups()[0] + screen_path = re.match("^(https?://[^/]+)/(.*)$", screen['url']).groups()[1] provider['http']['routers']['router_'+screen['id']] = {'entryPoints':['web', 'websecure'], 'service':'service_'+screen['id'], 'rule':'HOST(`'+screen['id']+'.'+os.environ["SSP_DOMAIN"]+'`)', 'middlewares':['service_'+screen['id']], 'tls':{'certResolver':'myresolver'}} provider['http']['services']['service_'+screen['id']] = {"loadBalancer":{"servers":[{'url':screen_host}], "passHostHeader": False } } diff --git a/app/static/main.js b/app/static/main.js index 60ad696..99ff0b4 100644 --- a/app/static/main.js +++ b/app/static/main.js @@ -1,6 +1,6 @@ // Helper Functions String.prototype.niceify = function() { - return this.replace('_', ' ').replace(/\b[a-z]/g, function(letter) { + return this.replaceAll('_', ' ').replace(/\b[a-z]/g, function(letter) { return letter.toUpperCase(); }); } @@ -45,9 +45,16 @@ function start_feature_read(plugin, feature, id) { } else { tablecode = '' - Object.keys(data['table'][0]).forEach((element) => tablecode+=''); + Object.keys(data['table'][0]).forEach((element) => tablecode+=''); tablecode += '' - data['table'].forEach((element) => tablecode+=''); + data['table'].forEach((element) => { + for(let key in element) { + if (key.startsWith('base64_')) { + element[key] = ''; + } + } + tablecode += '' + }); // tablecode+=''; // Object.keys(data['table'][0]).forEach((element) => tablecode+=''); // tablecode += '' @@ -59,19 +66,30 @@ function start_feature_read(plugin, feature, id) { if ("form" in data){ formcode = '' - Object.keys(data['form']).forEach((element) => formcode+='
'); + Object.keys(data['form']).forEach((element) => { + let input_elem = ''; + if (element.startsWith('is_')) { + input_elem = ''; + } + else { + input_elem = ''; + } + + formcode += '
'+input_elem+'
' + }); formcode += '
' formcode += '' document.getElementById("results").innerHTML = formcode - Object.values(data['form']).forEach(function callback(value, index) { - $('#form_'+Object.keys(data['form'])[index]).val(value); + Object.entries(data['form']).forEach(function([key, value], index) { + if (key.startsWith('is_')) { + $('#form_' + key).val(value.toString()); // Ensure value is a string + } else { + $('#form_' + key).val(value); // Apply to the key, not the index + } }); - - - } diff --git a/docker-compose.yml b/docker-compose.yml index e90f071..b3e01c7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -23,7 +23,7 @@ services: - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--providers.http.endpoint=http://ssp:8080/plugins/traefik/api_provider?id=api" - - "--providers.http.pollInterval=60s" + - "--providers.http.pollInterval=30s" - "--certificatesresolvers.myresolver.acme.email=your-email@example.com" - "--certificatesresolvers.myresolver.acme.storage=/data/acme.json" - "--certificatesresolvers.myresolver.acme.httpchallenge=true"
'+element+''+element.niceify()+'
'+Object.values(element).join('')+'EditDelete
'+Object.values(element).join('')+'EditDelete
NEW