From a61cc67a3423c74c1ca6959ad55b2fbd446adb28 Mon Sep 17 00:00:00 2001 From: Jonathan Carter Date: Thu, 5 Dec 2024 15:53:01 +0200 Subject: [PATCH] rename s-i-d, add siwc --- .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 353 bytes .../disks/__pycache__/routes.cpython-312.pyc | Bin 0 -> 1205 bytes .../main/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 350 bytes .../main/__pycache__/routes.cpython-312.pyc | Bin 0 -> 828 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 362 bytes .../__pycache__/routes.cpython-312.pyc | Bin 0 -> 696 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 359 bytes .../__pycache__/routes.cpython-312.pyc | Bin 0 -> 772 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 353 bytes .../users/__pycache__/routes.cpython-312.pyc | Bin 0 -> 680 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 359 bytes .../__pycache__/routes.cpython-312.pyc | Bin 0 -> 1129 bytes src/static/icons/avatar-default.svg | 22 ++++++++ src/static/icons/debian.png | Bin 0 -> 21580 bytes src/static/icons/emblem-default-symbolic.svg | 4 ++ src/static/icons/tab-new-symbolic.svg | 8 +++ src/static/icons/user-available-symbolic.svg | 4 ++ src/static/icons/user-invisible-symbolic.svg | 4 ++ src/static/mem | 4 ++ src/system-installer-daemon | 50 ++++++++++++++++++ src/system-installer-web-client | 20 +++++++ src/templates/header.html | 2 +- src/templates/layout.html | 2 +- 23 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 src/applets/disks/__pycache__/__init__.cpython-312.pyc create mode 100644 src/applets/disks/__pycache__/routes.cpython-312.pyc create mode 100644 src/applets/main/__pycache__/__init__.cpython-312.pyc create mode 100644 src/applets/main/__pycache__/routes.cpython-312.pyc create mode 100644 src/applets/software/__pycache__/__init__.cpython-312.pyc create mode 100644 src/applets/software/__pycache__/routes.cpython-312.pyc create mode 100644 src/applets/summary/__pycache__/__init__.cpython-312.pyc create mode 100644 src/applets/summary/__pycache__/routes.cpython-312.pyc create mode 100644 src/applets/users/__pycache__/__init__.cpython-312.pyc create mode 100644 src/applets/users/__pycache__/routes.cpython-312.pyc create mode 100644 src/applets/welcome/__pycache__/__init__.cpython-312.pyc create mode 100644 src/applets/welcome/__pycache__/routes.cpython-312.pyc create mode 100644 src/static/icons/avatar-default.svg create mode 100644 src/static/icons/debian.png create mode 100644 src/static/icons/emblem-default-symbolic.svg create mode 100644 src/static/icons/tab-new-symbolic.svg create mode 100644 src/static/icons/user-available-symbolic.svg create mode 100644 src/static/icons/user-invisible-symbolic.svg create mode 100755 src/static/mem create mode 100755 src/system-installer-daemon create mode 100755 src/system-installer-web-client diff --git a/src/applets/disks/__pycache__/__init__.cpython-312.pyc b/src/applets/disks/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a050941adac603b9cf83a6af2a3ffcb9e1a930a0 GIT binary patch literal 353 zcmXv{F-`+95cJ-~mk{a51CT%w)fL1NHKO1FloV+!gEz?$pYLS*g3{3-@dNk*f+z5U zd;nRZK&j}Ef+$kq3t^?*o!yPM|Ytwo8dp`7Oai~cp#EUP^5q%0Eq~K zj4+b%OY1rQ;|=4$psH2SAq6r|vi4_l$iVNMsTwPjYv-xV?bP~a+jCe{N;u@BQb{yn zm6)=2XwS36(~%N(Y8q|d;arOXIrq_J literal 0 HcmV?d00001 diff --git a/src/applets/disks/__pycache__/routes.cpython-312.pyc b/src/applets/disks/__pycache__/routes.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..08259fe560d91afcf4c57efb5b919bda95673db8 GIT binary patch literal 1205 zcma)6&ubGw6rR~1Np{nim=;@Gg-{!41hciCDs2xUf)^1KguR4qcG_$+yBlXFl?Igx zf*!orKfp_=2mcQ*DJc||3W9hLFD(%YJvlSkjkO>+u;09y_ujnszW3PAxtt03+W&dH zdRqbDn>Zv(jfMUPE^GrAxDW#$+7Jp^!HTcis;}9auiLtxvQvKAPWu@<;~Tc&o3<(K zRGjrk>=6hQfZ+OM^7xN}>aquO9T-hq*^g2Q^#MH{rD zMLMP{xEU3(M_ElOYFy*h5sh?712K4flH)){t)_Nr zV&<$Ni*8a*>kTiU%)uBD?tuI-uqdfpPOF6xqXT9w61Ewl)z)UD%M{5d50MhF<~VGD zUnaPC>7X#XSD5V;u5aBx)QorK19N)MobH)3`&#)hJNbU`)53mssjDsZxew@!$8WbB z!aT;?Z!HROxjt+aw-POsZJgl3**3Z`p`H`0bQUCm50j@#e&{;*Z;ngDKyeFV(#K>) zwV_thUxAWOKC+rn3@9Z zPt-IR-$wX1|%=ey6lQ;@1 literal 0 HcmV?d00001 diff --git a/src/applets/main/__pycache__/__init__.cpython-312.pyc b/src/applets/main/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..406caeb32c3bad95e8990ed051ebb6354ab7614e GIT binary patch literal 350 zcmXv{J5B>J5cTY4H{la<03<%5N5ynB={N&|n{WYS zi2|jfLkglug)PEJGxKKV&3mui?mCHKHs-^-*ym~Zk75NDM-e;{K?F#mpaLKnK@b^c zB7bQ;=YPB^kBmaLR8bW`W@W$qnGSsjYo~I8jjgp0EyZgc(z54KHIjQ|Ln8&+xGJrg zcywp|G899}-L*~9p~INw3KF@Om-*PDYHB4%xv1^R8i2s z!2S)=KgFZB1y7#5rR0{AZ#HQvg7{$HzG1%az3+Xy-#VQZ!PtA(9DJdK{Pc&*s4RIz@`17982yNzF--K9m) z&*qec%U-LOS2yz#&d8W{gUO2)V7!b4WPB)Ktn+&j421(Z@CV>wD69pC0Hd`7Jtzq- zmKJ!HflPrz-{@m2Os~9}JbEKks1pHB!@<}(k-%PR9al;ic)~@ZQ+WRDG3@jWu-(_f zSgF&8@G9jaE*0-9@s*gm*XdQy4_L$%V9jy%Asgx%OMZs zpxdPti{zD=CZ?i+>SFZRwDEKupVbDWvtDkn->ntx<@Pq5cFh{X{a9eheYkTG)al(>g#>F;UrjfzZoA*< Q&5NK$Z}{t5WmW3>4J?7ebpQYW literal 0 HcmV?d00001 diff --git a/src/applets/software/__pycache__/__init__.cpython-312.pyc b/src/applets/software/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5429afdb84be108711e6f8409e2dadc075e125de GIT binary patch literal 362 zcmXv{yGjE=6rH=9-9#nEUQk4vEzE$Gg;@9j_NEy|=Wcd&c4nEGL?RZJf*+v2Ao?f% zfDBkjDmx)!k;++2F5Kri_nfzGca?;=U7O|)p--D-8OdUp9faYL2qHj|3I+fqA_yYF zNW`zLm-wGIhyx>$ttuHLKqhI{{%U{>{K|XS#v%2aAAc&Hw-a literal 0 HcmV?d00001 diff --git a/src/applets/software/__pycache__/routes.cpython-312.pyc b/src/applets/software/__pycache__/routes.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7c50dff10009f223d8bb937984282f109b097342 GIT binary patch literal 696 zcmYLHO>fgc5Z(1h;y6uPAt;eJkRw(g?uioui33M2Js|lKx$&fSyK9@-b))1|BqaC; zn_ax1u0b>WNv`DI@LMH!IJ3Gb8^P417kh=wHnramKDpvI)B->y*ej zOIX4MlRV{_7IW`VMb3Cis`(-dIup- z0H+#cDPj$^JE!8b?!6Til$hmu)eBWI*Nd16Thrz;qnfiG5}Y&LHb?F8O```auvX9f z5ye3(F;X)G$VcQo(kYAbSUSzq_u@Hb%0J6wKg|jd&O95KlPZDBLX;71LS#LKjOgG-R zOKu%HYKP#A{q@<_lW%V>`{SR^7`N%|eK4qZTfxbFnOVi%@=nkpj;;YCgk1xk0W%Pq zzX$sSwcB*jIO4#(8hJFnx85sRB$a^I_>fYwTlJFQ+UA`9Voz@@&i8K^!P>yJ$1MNs a!I$Bu;n(pc-}_@Z{Q25u*5igXy8i$+kF2f$ literal 0 HcmV?d00001 diff --git a/src/applets/summary/__pycache__/__init__.cpython-312.pyc b/src/applets/summary/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..75da8f09e22875df975d061362281df048c7644f GIT binary patch literal 359 zcmXv{u};G<5cMTZQb462fCNHa$UrSIBL+Tz8FjG?zP16|iEO7*Hb(dY_yq+2!N3n7 zOAM$J8&VNNCmaz@y1RFG@7{YI3^qxKm#yXWF7#zP{72G()lmTVL=XXzD3}0{h#-gv zBN0FMp5i~=Bo2&3_Ea)SfHY~IeYS@j{Kl!Qu`-2rKC`t_+%&%34;`vXa))eMN`WS< zQd8Cr?OC4sWGcD6Hm$nvGp4yh#(Z>9`5~_=iO!BYF_Q((BU!a}>vJl&oo9uR%Vij2sB{xaMji4R`=|NC$+S1iSE+yTW-K3q##5a@b?x}*H z|Dc||$@)*chbH~UgGg~(&m2R^B@U$C+YBR(#6O@6z^TVX!w66?i7*M zC;Y`*IOkc?euoy#fuuL{qu{sQMOZt#WfW-d2}|X^_JO{ts8rgQRLWcwIsi&?pktG& zfbC2K=vANvp|GPUFIlRn_9mt{)161Gq9x>ong_A0I8R{~x!QgDc%)mK&$ma~-Fz`J zl0K&@6GV=if$GIIXrJZ4z!6f$uJa&x(eP~)IrFVyC7am3d8!>bjFwjZ>}5<+ zmBxFbNL7{=F`);P#aTYh4g^zXf>_R^apHDfNR={1!4yy~ide!pHiC>QdErJ3qEb{2 z%bD&snmf7i@(o-uTJ}Q7RRf3UZx8jZecbr5vi_~L4r?a&Eb8mkrrofq1?$(j`}@!` z9Bd0{TktIe7VOu6y@s%2KzsEJwIE!wS=${h8#oIdazQFaH^BY_Yr1@3;Kaok|3WuT r9gOdsA_GecCvD_(57*ug-VQ#jf4_eBC%*T`@$jvsi=6v4t6TpA1zg2_ literal 0 HcmV?d00001 diff --git a/src/applets/users/__pycache__/__init__.cpython-312.pyc b/src/applets/users/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3bcd7a8a74a0f2ba1c4c0bac8aa1a8619fe94d08 GIT binary patch literal 353 zcmXv{!Ab)$5Y6m1+p4Vn06{69_Fw~^#e*N<(L*mGn%Q*B8db=N*DoC=Lv&Iwc)ZAhRUvezu1U{KkoDur`Huo;DVZ_3gIru&kAE$n#1`G+~vP zs&Qyfv&7R}343K)ZQtWuixN5a(RuAtQP&Ec9j>HIH!z;aqP1F{F)5s2mz5T7A~cgY zMa3q?crvY&6Jum{W`pfPp{)~2p$QLIR+?FJ!PdHLrOP-kbm2H3*0W{rsH|k8@YwW& l4TQA2p?t*v@J@C<==S~fWAANm@Et?4e-r&A1O_GzlwW0IWaR(= literal 0 HcmV?d00001 diff --git a/src/applets/users/__pycache__/routes.cpython-312.pyc b/src/applets/users/__pycache__/routes.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a4708cffe2e797f8eb9b013ede06b3a1a3cab381 GIT binary patch literal 680 zcmYLHJ#W-N5Z(31ozKaU2qJV61=k>*3(izj5d{S$4bZqbIp?|9$*yf?*NN_`AR)m& z2!8?Pr_dm!TZt+aU67F?rDE21Cq~-0Z^oMUW>)?&9EOZyz-|@+XY9r%+i*9e&52yH zjAdLf$rH{kcZ4I|#Fbv+Nk8#rFX_pC(w9LJ$U!oYVG?rYFyJSTw}Sug%)KHv8=3c+ zU9Blgc9(wC`)#v`8|SEw0^`3CsX8@%gpUm5 zOoOaNs=@dRYR=8zwP>KmqSUKi+$cab-#B)c-P4|SL~zOUW-^+MZ>N06B4_n198-L- z{bMypfO1T(W1YkJ9FCe|+I?Szox?QOQbZgFr1_n-gzWx(oTWOAPpUH2d0NI9oPmh* z;y6F6gienkR!c?0KQBt9Qy~DU0c2Ii3g>ZJ*8;R!FA!tZXi(F7Y1V!-tSXKBWYeRg z_6RQ6-;nJ-`F41{Gx_OF@B!7{Mnki|QJSi1q0dtUwA-&A>l8iW=v%Nt*tZZ^u$!R$ zTX2WK_}v7ZBMxoV%A@tY4-RFOH3DAY0j2gi)k}g~mvjD$J-u@{e{shMS_`)UbHa;< YUq+usUnkf6(I3a-QR_12pktlxKMEbCivR!s literal 0 HcmV?d00001 diff --git a/src/applets/welcome/__pycache__/__init__.cpython-312.pyc b/src/applets/welcome/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7d8c2c5e729c98d0e564c15cc9209af6957b0d87 GIT binary patch literal 359 zcmXv{F-`+95VY@dmjDWR01^nLAqBBSjVO2kHA-Wdc#|Bg?UU^UT}Me?0AE1x6Fz_} zQJ_?GNI?{-@QGuk-JRW?oq6qcw@HlU&T6uZeN_+tku_j_62SwJL{cP*jwmGw0V)$n zWct#2PXBnLG%_-5sce){Qssm8XMGsZuyu}eC~cvAXx{>kje=0`dmdDY!ULZelwjj3 zw`T6aT@3P&O;ETSTdRi-=UOP>JS10T=!vpK@NU?M*>>bSk#%jixnxp!!LE%KekL@N zumEJUVmezG^kNFkRW2GI7utD&2sS=|GMYI%W{omylo{uREzLUL=Z1=u;JbF7g{7z}!ze|2{Li@HGDZdH6XGZ`4 literal 0 HcmV?d00001 diff --git a/src/applets/welcome/__pycache__/routes.cpython-312.pyc b/src/applets/welcome/__pycache__/routes.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cf83579c2637d583270ecb959594d989f697d66a GIT binary patch literal 1129 zcmZ`&%W4!s6s_u>o>w}?DCQxk1tL01ro~rWNCcldjU>8g7ei;dW~P&>?y;&SW(I`_ zg8o5VyOU($f4K1lLZKi87w#e>1hVp0rw1QkL7%=ob#L8s&aHVfJX}VwF1wqJWecHA z^D$UX7W6kDSVJKSF+&{t7@OE)7Pozy=lmRZe23@#JTLeKUi6E+3no}%^L5czxlTUT7iyGdc`kNlCYT`7Mz8x^dr zg?6Q=of|BWOS&NFgASES7bKN3N@86UG>inT!%rQ-YK=tb5kcdSikhOl%>qTW(}3cZ zE?r?A+7?l)ZuN@ZL(1w2rxjbcv_D2_Faz-Z5!$c@4$Yy8-MdpJu;yEow1Xxk-K29oBu%PF)G!|; zsMkR!QIH^#M3JPC7N}MvNziVSC?)|}5XnPHMK#^(xtXwPOL6uJYiEHiMIp#^n1oP| zvPi0$tjnkt(&Y%w7bPGqMggSJM0W0ZVW0wUF^L1!3StlPDDzrTv$dQs1w=jBmEi7F z6iXE_MgoML%6Myzi5H z^qqV3gL`cC`sbm8FJ@jJ_&7BEHaFde6x1sX4n6bNWXxVV88f0a)WsF+R`0}Bpxy+A zM8cSfqATEPOp=Zu;LHkXh$L21a8q6(F$r~I+`s_Rw2b zD|_`wCbpVY2t#A{zAXvEMwk+jH(;cSqJh+J^QRR<0J;=%UQLH1Oc(8>j-~bp)A}EJ zJH<;p2|J9=2xFWXnY<6MWn+xLpu^i1#;3OtK;OVOG`W>WR(W;bvxz4Y&riNTboL`Y h_ruELi+vke=eJC>HTFB>)CWBF1I|dd$I~d4`wQ~d6WRa( literal 0 HcmV?d00001 diff --git a/src/static/icons/avatar-default.svg b/src/static/icons/avatar-default.svg new file mode 100644 index 0000000..4e08bb5 --- /dev/null +++ b/src/static/icons/avatar-default.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/static/icons/debian.png b/src/static/icons/debian.png new file mode 100644 index 0000000000000000000000000000000000000000..08ec2d00211174a4ebe5d28b41edba6e8f507c7b GIT binary patch literal 21580 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 P^Mb4_ZkX4Zdc^-9wy%q* literal 0 HcmV?d00001 diff --git a/src/static/icons/emblem-default-symbolic.svg b/src/static/icons/emblem-default-symbolic.svg new file mode 100644 index 0000000..8334993 --- /dev/null +++ b/src/static/icons/emblem-default-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/static/icons/tab-new-symbolic.svg b/src/static/icons/tab-new-symbolic.svg new file mode 100644 index 0000000..3d2119d --- /dev/null +++ b/src/static/icons/tab-new-symbolic.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/static/icons/user-available-symbolic.svg b/src/static/icons/user-available-symbolic.svg new file mode 100644 index 0000000..2f56f2c --- /dev/null +++ b/src/static/icons/user-available-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/static/icons/user-invisible-symbolic.svg b/src/static/icons/user-invisible-symbolic.svg new file mode 100644 index 0000000..d59e53c --- /dev/null +++ b/src/static/icons/user-invisible-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/static/mem b/src/static/mem new file mode 100755 index 0000000..5c020c1 --- /dev/null +++ b/src/static/mem @@ -0,0 +1,4 @@ +mem() +{ + ps -eo rss,pid,euser,args:100 --sort %mem | grep -v grep | grep -i $@ | awk '{printf $1/1024 "MB"; $1=""; print }' +} diff --git a/src/system-installer-daemon b/src/system-installer-daemon new file mode 100755 index 0000000..81c4c74 --- /dev/null +++ b/src/system-installer-daemon @@ -0,0 +1,50 @@ +#!/usr/bin/env python3 +""" +Welcome to SID - The System Installer Daemon! +""" + +from flask import Flask, request, session, redirect, \ + url_for, render_template, flash, Blueprint +from waitress import serve +import logging +import dmm.lsblk as lsblk +import importlib + +# configuration +VERSION = "0.00" +SECRET_KEY = "exampls" +DEV_MODE = True +APPS = "main welcome users disks software summary" + +if DEV_MODE: + print("Note: Starting in devmode!") + DEBUG = True + tracebacks = True + +# create our application in flask +app = Flask(__name__) +app.config.from_object(__name__) + +# Register blueprints here +for APP in APPS.split(" "): + print(f"Loading applet: {APP} ") + # Dynamically import the blueprint module + module = importlib.import_module(f"applets.{APP}") + # Get the blueprint (bp) from the imported module + bp = getattr(module, "bp") + # Register the blueprint with the app + app.register_blueprint(bp) + +# configure logs +# logging.basicConfig() +logger = logging.getLogger('waitress') +if DEV_MODE == "1": + logger.setLevel(logging.DEBUG) + logger.debug("logger set to DEBUG") + +if __name__ == '__main__': + serve(app, + host='0.0.0.0', + port=8080, + url_scheme='http', + expose_tracebacks=DEV_MODE) diff --git a/src/system-installer-web-client b/src/system-installer-web-client new file mode 100755 index 0000000..25ae0d0 --- /dev/null +++ b/src/system-installer-web-client @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 + +import webview + +LOCATION = "http://10.10.99.22:8080/welcome" + +def on_closed(): + """ + Actions to take when System Installer is closed. + """ + print('pywebview window is closed') + + +window = webview.create_window('System Installer', LOCATION, + transparent=True, easy_drag=False, frameless=True, + width=1030, focus=True, zoomable=True, + confirm_close=True) + +window.events.closed += on_closed +webview.start() diff --git a/src/templates/header.html b/src/templates/header.html index b83296e..59b4472 100644 --- a/src/templates/header.html +++ b/src/templates/header.html @@ -7,7 +7,7 @@ - + diff --git a/src/templates/layout.html b/src/templates/layout.html index 6a5b4a9..409a8a9 100644 --- a/src/templates/layout.html +++ b/src/templates/layout.html @@ -9,7 +9,7 @@ -
+
{% include "header.html" %} {% block body %}