From f0857929a6403c855a1fc8fc736ea1a292e8f0c4 Mon Sep 17 00:00:00 2001 From: Alfredo Chissotti <20033498@studenti.uniupo.it> Date: Sun, 11 Sep 2022 19:25:33 +0200 Subject: [PATCH] robba --- .../.lck | 0 .../.lck | 0 domainManager/Domain/DBPissirDomain.db | Bin 77824 -> 77824 bytes domainManager/Domain/bin/code/Domain.class | Bin 4392 -> 4469 bytes .../Domain/bin/code/HttpHandler.class | Bin 0 -> 108 bytes .../Domain/bin/code/InstallHandler.class | Bin 5074 -> 6698 bytes .../Domain/bin/code/PriviledgesHandler.class | Bin 0 -> 1102 bytes .../Domain/bin/code/ServicesHandler.class | Bin 5187 -> 5208 bytes .../Domain/bin/code/TokenHandler.class | Bin 7043 -> 7043 bytes domainManager/Domain/bin/db/DBC.class | Bin 12824 -> 13801 bytes domainManager/Domain/bin/db/Dominio.class | Bin 614 -> 614 bytes domainManager/Domain/src/code/Domain.java | 3 +- .../Domain/src/code/HttpHandler.java | 5 + .../Domain/src/code/InstallHandler.java | 209 ++++++++++-------- .../Domain/src/code/PriviledgesHandler.java | 23 ++ .../Domain/src/code/ServicesHandler.java | 9 +- domainManager/Domain/src/db/DBC.java | 51 ++++- keycloak-19.0.1/data/h2/keycloakdb.trace.db | 31 +++ webapp/public/js/authentication/app.js | 5 + webapp/public/js/mqtt/mqtthat.js | 3 +- webapp/public/js/scriptIndex.js | 2 +- 21 files changed, 235 insertions(+), 106 deletions(-) create mode 100644 CloudAppManagerSimple/cloudappman-1662645313991-pub-tcplocalhost/.lck create mode 100644 CloudAppManagerSimple/cloudappman-1662914323537-pub-tcplocalhost/.lck create mode 100644 domainManager/Domain/bin/code/HttpHandler.class create mode 100644 domainManager/Domain/bin/code/PriviledgesHandler.class create mode 100644 domainManager/Domain/src/code/HttpHandler.java create mode 100644 domainManager/Domain/src/code/PriviledgesHandler.java diff --git a/CloudAppManagerSimple/cloudappman-1662645313991-pub-tcplocalhost/.lck b/CloudAppManagerSimple/cloudappman-1662645313991-pub-tcplocalhost/.lck new file mode 100644 index 0000000..e69de29 diff --git a/CloudAppManagerSimple/cloudappman-1662914323537-pub-tcplocalhost/.lck b/CloudAppManagerSimple/cloudappman-1662914323537-pub-tcplocalhost/.lck new file mode 100644 index 0000000..e69de29 diff --git a/domainManager/Domain/DBPissirDomain.db b/domainManager/Domain/DBPissirDomain.db index e27540bec3200d4443d31e21adddb1a49ddff6ba..8aaa11a97117f42adda2c898ea0cff59f0d995b1 100644 GIT binary patch delta 666 zcmZWmF=!M)6rIV;Cb?lZ&ol0ky}esawS|QqITS1eV;iCnD=m`ayo)QB-LT%JO|S`q zh2CNtQ`kr(QP#pv5iJyiAf^*M6B|oGtev?@7Eb5G=gs@`-u(Hq*5hkE{=lUh4@;Nn z#*2j~R|*Dp2!7!JU+^9~=*ox@r}<+ykaXrRR8JVp_LqY&YIW*CEo=wPPTY<x&TL1q zi_M#N7Hbwe+%5%S7&MZD`AKQKrHuFS7F+m?`#PlY9FnEz;`su%efpoV0d6~eT08S> zudP|SADuco@s;GTPVpPNc!f=@;}M?W9loc<%`R4j$sIDP1!7p?<v3cYofDSCIc+R> z##ad;2FZ_cpNtN?Qqb&7MW83|>{2|&NBqD`{E?H|!)rXnT^-Uzuk`fudzcf<p}GZA zLEXWyf`>E9*eaJgo@YKCxP2_goLpa4vE%{I+)hT`ObN@isQJ_UU~bD<-Zobq&mjJ| zJs_Q)uFS~q^2(}o^54>>qhBnP4C0KJbw5&5i|e<7l}0?_Dt=OTFZp^Dw&SSPYQ)Ej zs$yrAna)r>NY8xQ8)6=2labvifhHDk9oH}``xEdCMyc1&<+8%1lFF{Da<Q1Uz9m<w F_ZN}Py50Z) delta 482 zcmZp8z|!!5Wr8&0q=_=ljFUDdEb$j(;(yG*|B?SO|0Fmp;xF1PC=ks*xisF&q@XCj zEYXsIfx$+yATuu?%ryscbrD=sAXg5-HD;LnI9?HG@FS4HkNA6#A<*Dp{>i!dcIIGn z*??Ld7!d}u0{I3Az9|ckuYlkiGc#;{l&@eQv4(+-znzi)3;zZF9sCRU+xe&Rmx17B zsRfhx>-mo`@Gx*doXW+<A_--i@!x@qn{u(h#Z7>gNI=yX1KBXWMqG?=HHKXLTYz>> zV&tFC{|y*YSNZqzujFq+hCrPVuvvRUCx0;iDF$wc6WF<!B^kj?GdBJQP*GD>xTp!p zmttTAKo2rN6&NvbGD~uTMGbj@qLRG&li3d#0|W3Y&u0CzSDBb4`Ew?-UjT_1@o&z# JKRJL=5&%uoh$;X8 diff --git a/domainManager/Domain/bin/code/Domain.class b/domainManager/Domain/bin/code/Domain.class index 68b95bda3e01e680fb4909a6aa527d8149f49dfa..eedeb15fb66100b70a314a813037ae2695aa40e6 100644 GIT binary patch delta 568 zcmYk2%TH556vlsZ`?$TsSXwNgX}Dq&jTi$a>c)j@m!b=!i3`%+m?rp0i>yqHTcd2| zUvOdEfu<Tvj0;z46yG2sqV-W!R0O0ITc<Y-xS09Qob!Ei&Udb)7E|(Gb@Vo{PcSS! z=Ulue@1@V=yo|xzU^eaLZ5{{`=~Ef6=TIZHzwczG-^)qv6NvE0lvh=!bJ@Xczn3{) z7d{rW`@#cj*;VZr0ZBK{6we6@LivHd+`u}AmyFv?C|)tC?>KvcQ;Ijb?6}TbW^CRm z-s?_zLd@zRxkY@_*X6<JFUbOnHcN)eZ=GnmE6RGJX}4I>QMEl-6}URCTzyn+6-9ks zwQc@jEQb;1ZpGmvpRg!Gu!|7u!4lVQsu{7V<>4*Hj@;l$f#JhD3OpU*#R#pVyoLhP z`f9Y>u75SlUOgS1OkEIjTom(MvS5hMrc$N(m`yTR<1CI%Nsl*oh?4G&wP_V|{K)Mn znL#QfS4`h3+iavEiW*(C)D^ukx3eS~Ssx_knJg2wY9xp^NIU;0`HTwTWkMC>>5K2z t;wzVlFz0(O>Z#a<U2B_YC%|{Zv-rVJgAuczd2^P{Y+!owhriU=_z$2spppOp delta 561 zcmZ9IJxo(k6vuzJw(s&TPiiT(F%7LU5X4vpHPOVdIGLE3xHuSwroKc%z@&Y;$ij>! zCO5854z56gk-^Ey!S8QWL@R!aQc)<T_4L7D%+0;${LlHHbN}ZocU|o=x9T%DfPU5{ zjPEAf`^tXtOvyhfwsdx|=$HHKn48NP^4#&bi=&8@gF-2Axz7X5Lyt#1wrlRbT~9rp zaZ!;TE)4mHPLC7|!STW1lz37w5|j<IywJS#cx6wR;pjU>((cenJ7?nRgIzSo+P)bU z`L6lVY_(*Mw%$}fZHKp4{kDg_-sq|#YmazYd&%qGKPR#~QF0*Gdkr-qj^eevP8dw# zGS3?#2sN4}Mp6jXsj4@x64TtC<lZEy8J@s2&uz6WubagS9I!p{*@NS%!g;mC1>Q=u zPJBR<i8dI;)l@Xyn!IL@reA3W&<sHX`Bbv@@|LZp33s!39cDW#BD6;44-r+TM`I+R z8tkNfgR#9LjlyVX3<5K&IFSY&BsNIr{w0Ns8qNx_nvAy~IvpAJJy&SqW4MOqmU7`b mKqp$SPm%h6PiZ#sNoWy1^F?fn(7(#9vMfks@QW3ZzU?pcR*fJ4 diff --git a/domainManager/Domain/bin/code/HttpHandler.class b/domainManager/Domain/bin/code/HttpHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..4a6a9b82d8a5d1a3ec638bdad9db2dbed57d7ada GIT binary patch literal 108 zcmX^0Z`VEs1_nC@c6J6PMh1c8{FGFEkCKuCkHox`oYW$A1{R=bR$^JAeokUuy1su> tR%&tyBLi1(erZv1s#|7GDo`FtgC0mN8zTcF12fQE5MX3r1(Hk*Yyf?x8ZiI> literal 0 HcmV?d00001 diff --git a/domainManager/Domain/bin/code/InstallHandler.class b/domainManager/Domain/bin/code/InstallHandler.class index 1b54f35bb7723894ee46e1aa9a76cfa068f0af62..5395b0904b004b261427440880dfe886794c30fb 100644 GIT binary patch literal 6698 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 KM+TYD*8c&b0O{fY delta 2294 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 diff --git a/domainManager/Domain/bin/code/PriviledgesHandler.class b/domainManager/Domain/bin/code/PriviledgesHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..a6866baf7c437ae816a336ab5e3d6f4dcb981fbf GIT binary patch literal 1102 zcmaJ=TT|0e5dIFdB*btlSGfsAA%%v37gUNsizqli7~A26r;wZ}VbY|NoO03e(I4bX zo$-NZ#~<am;UYLtCzEqFIlFuI+wa?7zki$qSjM`7CNxV(s7RuPq4UT(whYhm%Z7Py z#BIUQvgG=%SY~L}GJ6VSv`SD^Jb=nDVFwi>s`-Y`g>fiEHR9nh4~-2n*H7(3%EK8_ zWiCGQs2cbY-{6+R!-yfRWwshcU;5-^v@;ClZJS4tz83f*3_LyWdBKTphHlyQWppyI zX$2{COXyM2i#~?Y|EDD&mg6u?X<Ij7iz0OWa_;V*%$|$^hT(gw*yiFea3UFl1oHiQ zDLb}n7HKtiOPl6SQO0ni$g4KU7-blYp>bd6rL!u}=4+HQbU#_b4G7>EL;vS=HFS?% zk2_@^r5DqdQ*r(D7X@idNO-K`2`2xc?h*}yOpPy`2~O=!Xqo*&%$}wqgK38Di2KeR zR+8H0hf9{TDs;>;blf7Z5IAQH1H{}#=iI<BYob~cbRV}WIR$f=m+(}@GdySLxzC9q zc@nyURFTy73-MKRSWxjY7GKi#f{06aO_=S#;l}O_><!CzJRVBOk#rgnOsc!`Bfx8v zfy&=<eZEtx9PqGY9eDJog;YtY7&NV+0B^}Rm)T=bNX)z%GZINCQ1h;#ZJK{i$g3FC zLYu!MrU=2^;%DP1jN=u}9K#|FV7$}Z(Yi!mBeXNxlhfb9zLCN3hSvBP#2lk}U7?WJ z^%MzufYq5gq*Pm~qmHf%vp@Cl+8j!akePZ^$N2V47k*~Xzt%BDUNbv-whlwD<HgM_ slW3)UZ8X>I=tBpU*@-E1VV;I-0o}-<hi>o1DtRTSmOQ;{WH;gMA4gmkNB{r; literal 0 HcmV?d00001 diff --git a/domainManager/Domain/bin/code/ServicesHandler.class b/domainManager/Domain/bin/code/ServicesHandler.class index 3822c7bc1a99de9b5b92d03965b4938991fb25a3..3f798031f337570998de6dc2d6c8f4fa03a72342 100644 GIT binary patch delta 1534 zcmZWpX>3$g6#h=<&D{6iylzv|_@K13hyl8=i2fKdtO9~ULB+OdHEGIN2Wtmr2C+eD zL26<MCiM~*P>KpxTnYt!bkPb_5m9hK6h(1C1!Yk|5h^gA+k%idncQ>kcb0p<_nr5; z2JIhY?z+(431BoCE#|$VpNVByW#JiQ67*R3wpb)oUFid1nn0s`KxBBHv+z7#kSoP- zJsmGvXu?bKh!{TbWecz1Rj#TG#>Usgf>DAtXmIIx6V2Elu+c&bHp$WY;Phs^Zs84h z2=0oia5N~eg^(@_jC7v~2QCxs=n#0*!dvK+>-2%%t=J~8U0th7?$d|q4&Jq}1MkU1 zW6aGCR_XYF;3~cLP93|I6JX~fLgL+_s$fB|x*|NAS(woAiG@#5NbvF{XGFqtgOON` ziO;Z4;ByOK$R~|~o-ZwYg#&WCF{I!d3)ka-z_*07Ipz1451k(iRSg{%iImse5{kx5 z9E8h@GW=lSDIAi0%z*Y2AxEB|t7X&-X~(!uE_SE61Ww4)W+|PLw|d)?x=s9pa{}ir zOveS;$Lh)>e#H9B`N2qyzdz}eKoAw7@^E&4B3M(ZtAmjVRprrWFe=C`&sjq>LCBPG zD^uQ-=$rH-E2wb?H$1%l%)5SUiLHCc7ElX2gu}e5FwmFRBlragD%EwIOD#^=AlD?G zsx@rG!P1s|-=hw)SE6|ngmRNRu&iVYmirA`-+__jH*LKYkFha)D{Rxj6Gfb<YFD=7 zS+I=BO)&jl+soaWkkN`YSLXf~Tia9O*K!@K^P9Pj3@2rc$W6sgTXV3!v);it+wAcj zyr$0C+yVpjJX0sJ=%TGdy(~)3wgWU4t0{w&T|$LaLS<OOBoE7m<Us9p2xBA`u%Pwu zV>JRixudZGV|f(Ep%W9(g&VOO6R{tYa0rue0#ooCX7EYV@Fy#E7KP}>EOOxv@}h{Y zLNVDWr3_Ti0L-R*1Sx<JpI%AhaSu(#eKZweD#Sc08HpHQCqj22N)=c@bFh%+;z3%7 zhv*S3q6XAbBkE{99;Rk2$FHo@8M!#6KtBq^F$RV#N$o3?pTK@Yifw`f>f;bsgeJnv zY5jc51djKFyWvTQBefT<y#y~|xEoWMUGLn~anIlJ2akoComISZvn}X=!<x5FXK~s} z0tt;s$<KJa6>mFur>H4@Oo^x|ZFc56cz+{T>&QY5R5vwjnS3>%fl&z`Rv=5BNll)q zhz*5yo?!tej&x`Ow+pm08>g4vML@+Bi8>FL6rmU{bv@e3Hj$BixjV2o*SAX+`}&Xi z&_T?vli%o>%+A$FwRP7B-=0={+={(wYCE;H3e+xxW}a=dVZYq$yJptc2`Fm94Yqe1 za-LSq4>I%b{FZIm{PoFcgG%6y+3RtoZMEThm#RuqI}WJbQV%u7C#n}t&0Stv<tW8> z9&|-i^bpMvC=)o!e}1=F&SCKW4;SF9qjFE$fa1%EZt!=6pOk9AO)rUel7~|r_ZL5x d(>>nbIKwuHv9l~nT&?_bF~&1P8hJ>E{V(Dec&7jW delta 1542 zcmZuxdr(wW82^3j-MyE)m)9cA+>wW(GzbD}N;8Y-h*`r#6rmA5{vf?DB(b==nA9X_ z=uG2Slc#CQ2NYVAr3lFaTBK5Hmc7g(%3hWgsVLe*O}Fo?Hab%~chC3!?)jbXcW!@b zU#foS%C24j)5y`TFIH1jY#_uvShln*%eSN|tGK9O*0P0Gjla@Ut>Y<dGSGx(u~VIx zum&v#HY1Us`8~ycZ)J6bj+^k3ftS%LPN@@9UNx{4uW`J>^5@n0EgwNi9XBse$2M$N z(Pm%=+Qm$5T<kWyVPGd51pC4&kIzyO5cS%~=uX&l^kA2Y-3H#oTVku0;(Qx>RP2@S z-X{jM2_ri3j)8ZvpWrB~sj;dT5yp$NjyN%7k1oxtEibpcIXW7!T1O{ZG#nz>=H0wN z!v|8yW#vOcM0sVEm1$Kk^ehSi(eSZ>PjENE$-BSD>#4E4{yH5;@R^FE20j-X!&4mn z2EN3AI1rwe`L%&57*O#IAvSb;wf@SgtQlT!SzSS;&#&VcY);I__XeKB4<bp=r60ut zy;1p%3&aY0tWCu!aY>&?!=l8wEAoPli@2oXZv%z6ERu}ABn0^^i)t-zoqH4!jQr|q z%R95G%;&RwDus#2h%`kZB#M}bL@_tQb^CE1tO7n%IC%Yutpt|D(w^1@YG;LTf>#*^ zM)LYIenFT_wVmP82u|26IwH<h=%yY(V|#|{i2z2gM@t7(sYdO_n$j+;b?c_KA7jbw zG_`I#$wGHMV>$zPwxkuh+b|8TZbf`IHvVty1=;>Zw<78zM^8-;V2j%sgM-;ddYoY@ z0ld<?Du5ZLGo%Oby6oK1j&LU9b_`?rHQ9hBQ5!Yd%%BNaPw^z>N}5jjRDhKX>x5{F z%B`OS4{pK3n2c4(=E@wjVk+7&jp;ERy_kVM<l!)8q93>6IA-BA?!XX_VHkJfJPL3D zckytF$%fhF#2gxd`^ZEo#iNYI-~q}&1;2R_O+q={ipAu{Lo^*8%7>2%CZmQ5;iY0M zrMXx}7V4-5kI<udj8<SdtwucwG|(nIPAyoAUwH<qXpYX*27w^&P#05U60~G#gt5^U z9j|i+Rt2Hn7@Gn^CdMVJSfk=(DCHs?VL`-Pjnv-|S;>)$jPNwmKr*I*TMyw3Ymzk^ z*s`<C+>K72c2^-!sJk>btQpZ6@$0(L8$e%4Yw)BTwIXM9AR~Z-JGfdy5|TsRB+U|e zhrrY96>vc)E>{twLl%_F>{HPh<PV6VVz!DNM$~x~;x&hiOArkXE-AtNu*tpA9+pf~ z98KSkBk8X9M1^Zq&ieuQ-5R;WNfNWS2{EQ-o8&s&jgPwVsXLr~$`<KVt~>SdW_S<2 z5c^zX=X@0g=54m=+>7MrCG2Ai`&&t4)42!9J&*}(=vOtaG>sm7XOmTt(&B)$8XeRc zoF(s>BwtQ!MUKR~1eye@hJf-A=BpUwhp#k`bON0J@vGphL2)d0%)QqW?cgs4pOkFC nP5+(TS)2>K?mVB%?;-6E{K-<|Y5c|iEApm;8N)vt*<t<zJ>+|K diff --git a/domainManager/Domain/bin/code/TokenHandler.class b/domainManager/Domain/bin/code/TokenHandler.class index 7dc3505d7acc16e9d4500fab19bc464cf102e8a2..49b518ba2376362ddd5d2df47c588022ac6c8a0e 100644 GIT binary patch delta 465 zcmW-dO-K`90EVCUOLUrsB(0_8f8^h&XtdH$W+qx_kb3PR1c}zg%LJJubO{e4b*i9K zhsCnSlq@Y3C!(nx#7YoP_JbfA<=+H9;ypf>_j$U#-QNDKG-Zdk(}qkS4+p17;S5d+ z$fVG&2oJ?nP(m$ku2W7kK3b`yohmx0<^eT4w6xdKr`+Hrb-baTw=@yq7K1eKfkuW2 z66F=MgjnP?D}-4kqC*TQnL#-NywfR$RK$B-U|400sGN_w$|uz_symG7KI8H;p)R88 zVNy?+(sQQug3k)_MImO@&zvI6Yk+SW<-2BB(ju!`=7-k!sZD+<#&07wOdNkqGJj1f z|4fFHEtA8xDPhNW*)!LOnVamJM$tEYJa!@uhvGS^1hSMwt{mhmkwP5~uekgQ93x3C zi_>u_gKV9o!1}nAiAPzKsTiN!H0dn2b&k6_PrLQ>%R{Fw@<?7D>k`j&nUG3tkSqWF jqpDy*K9*I<nyOj1JvLOuuIxS4=!jZ$4`}QAnjSm=y_s;I delta 465 zcmWO2KS&gC0LAg|`zdwGDW!OxfBH*Ems*BLSDl$wVj6OxUg95gs01NxaXCXy5?aDR zq^1;{90ak%gs3bCixf5cb0T3^gM$iDi>5d9Ti){C@_D_!Uf=jus!mUAr@k;@FAmO- z#93UN;~?kp;Kxf57r8(M#Z(gDCe_@bhE9TXQOAAic|ZgGH1dQdMrh_KEj*)@NxPon z7B9KYE1NSm=b0wL8=|~pjTy!9UQRy973QN3Fsl>HsgQa3Sx_;Hy38k4u%uQ#>n>ju z;+uMisE=hmW<^7M*D$LZ<(J0zp>d*`<fopquD5Jxj!i|_(kk29<e&bsqZqqJGA3T} z#;HAKpZ1z8mmKDZ5=@>FjZaQfrX&+kvZ>Ynf!Xv}Mj8&KlOi{Vl*LhHa7>walsyr3 zhZN2sQ65|8;#MAqmCtdVBwwfSssO)=D7BuTN@!LoZMsCKt`Jfg-74pyuJXt_2UW?K qt}&%5UMpY^y3SWsTVIWJ)bU%j{87*vZV*$wl66lVK>NUQ=IDR@%x(7o diff --git a/domainManager/Domain/bin/db/DBC.class b/domainManager/Domain/bin/db/DBC.class index b265e5430c2e59c4925b317595ff7cd0f8bb5f59..f8305150768da8c3c2314a876187a9646a9cad89 100644 GIT binary patch delta 4711 zcma)=30Rd?8pr?dIdCsrt{@kXu881*3p?%tnusV2xQmFUhPa_fF1Y1_<-Q^M8K&m0 zxu&M3qNC=PW>3yoHjZPNO<6gmnU<MZ&i}h$;`8)OgOA@m-}^gU&;Q-dIlemZ#&FxY z-wquG&{|r*Y1?jZ;NbXUJ3hfxLEwm-;e(Q2D9Ftz%*rbq%F&p@oPxqJf))*oMfNb` znvccs(cW&?1g(t=?$O2#yF>nMJhaCq3%)SFCD8+43cNa`^yr?_t!G+tN_P)@EvQ<_ zkd>O2kz&I*{Kt;vm}<jJd~3%|+%o1?Y3z1e(9-qQx2pJ9?$~h`KN#9OO70nP-Zj1M z<7X=#*b#+ajNaaD-F`J^k8+DJ-t(?1kBpDKV=Nvbf;jUl{4=|yd59J?=$?|1lH4P- zOHScXW2-IL+e6$1n%Dt_FAOiAEU9AT`oxQ4?`od{Q3;Rb2CB}FhyF%n)j-4UyTW1_ zGN>@Ko3X(+#yiR;(Gp{oSZbFz<C^a&dt-sSL`6l3hcu;Uq7pc0E(pncp)fyZz>x9L zg9eU`%E^x&TaY($L_u_3VN8DBfEcdXo>ovWXmoOZ&X_TS##kj@5N6mNVcIH*MpeJ2 zUcTTr!vYbj(Zw&Ins_jDeC0C$p5iGsD6#IH<QFSNF18a9WWy=3fWJ5rHjIV?lM#d| zsDr7bv(OZ?(F${rin-{H66C<(%vUf8r6|H`Ovf6M4OoD6D8_oyQvO+u6|}FVeFN<q zY2U)<c3O8}C3d6vYV6~LL&Qfo;V37Z;Dpmyg){u+_sA}gT_pPl*%h*@*d$&?PQXC1 z8@EHM@tG79;O9*NZj_isfj+2V3N+lSeN(Qlm@2@3RbeOf?WVpx)VGiN-XhtLa2!Nq zlp%o&X^X!ior~$t#q`E0^y6X%;#~~kf`;NO@^KC?;B9I@jzaPY<WtFCB7d2D7WrJ9 z#C)<v=yjSddKa$}t{_}PxE}9|7njozwucyKMQB?qvO4guclki<zk%E;cJtkGpHeD| zt6CxMOyJ3KaWA4KzwIK$U81<l6nBN<Zd2UP6!(C^dxS<(3(cf95~UuVmAYsnVQ44y z(LsWdDm9To-i5p;c{X`(@_ytw5{g{1A!H-SMv{#t8&CG4=x_$Y?yOP&k5_ErlCs2? z0r3-mXa=OS^I`d#OA!W09Hlj34K#yITEHRk2$BTUkwipDD>Rm8x!xqSm$v96$y`@D z*V7RLr89;~Ci0~x*U}qfr5D$ejmfkZNmophZkRznhrF14G5HemQt5-`64C=J3D*#A zBHTi_jc^y?9(j&>Zd6YWus>o1Jgq2Ybm&|DFdAl>1)Gtm&?NyJE2&0(f#v%4jtO$F zsHhdFM}b4ghf!cY1r|`?ND3T9fukvK3<Zv*z;Q^C@#riQ=&OksATME<OsBJFVwB9M zxCNLbC73G36t)O6X`dsrF<0hbA^BqRW#lW!SCX%hI*YMh=3yh@7Q&r`ZxZe$JSdBC zSe8&^_2BjtloRa#KV>~r(I~bAM^$bVvVyW!QPvvDT1QzMC~G5SZKAB#DQg>A$#%-x z!JK*nePk!{WG^PjTa3|B$~cBua*`5`W4@d~3GD{$%V=Lk`&!!9(Y{GeQNbZ>mBV;L znjfW%V>rMGhdALdCmiF16LJKn_{(R>&XZjr`;hFPWLM-grOpp|s!;?~iXbEB#J?!U zYQ%+JFVD=E&4|kfG=2n&T!LLL!(XnTrhJ0>auu<19WCVslH?8*-bK3n#O(Z$O79_4 z?xUA{%j&twin+xMy~B#Ri*cMYk#i<-&NR-MF5fedcj$q;SVXpjY^iwNV|w1lYw`<M zy|z~HpH@|M3364{7quQ#swyQ=$_?(y0-N%HL)j3d?5M4(AYA#Nv8swh<%<;MKu6_= zEL8*jRZR>~p%|>{VVJ6qktzaXR6~qa;dqhuDXKQ6sycX?d=~iv@<rq&<V#f~mZ^|1 zEGJw=xPkC>!Yzbv5bjn{)HAtGo3@XuiVk-Du%-Z4k9)*UAy${?D}|?`z-ll|!R%3H zn0~8src%>WO)0enrN&cg0;MLRhH8Z{)f&;N4VtMG#H;pbqyB<qm5O#M4XG*}=_&~s zsx7*Z_aN_0-j}=|`2g}ksvU-q4JR8#R!BCEY!ca2)js1%_in>AmpAP{>)ua#VMv9P zd0}TOOX)@_nUs=6DZMBqn^JmHN*_w;i{@$o5>zgd)DX%T#OMu1ni@(O{TRjm=t`bR z-iN#&d4KX;^1&(xL&@^VMw5*t8&5WwtVo6Cxumo+H=?9Jl45*c&yO8qb;L7ImkoEB z^0H}E|5~N8QKKlL5EeBKb~OS1id&PKj{0f_V%2Q4RC6g{9v5E1MK4Bo^$L0_1HIHz z`o9#<s|ED`Li)ahzF$n=ze3*|^!-x$zLdUSglS|m$mWqPBwM7smNExRnS;xjX0J7< z5%<TNksD7#+=_5nLd~K9v?nx}ZIWr+XmBR`Fvevcz=U`Yr*%J0$9p<G%kZx7*je8k zofq!-rSZ0Kr!C?jK5}|QIBkcx&+_arDQoj18sa@8-+^aj8F~md!xnFI+V&&c>ABnZ zwqfHU+07lq+y|@ifTB1GWw#HL7->}T9?yk@(qeulN_$BokLQT*oNu1r-a#CPYw6() zOp{Galg&(%txS_`Op_f<lbuYHUG(sqOox4VPQAr6IKc29MA1xDMpqqTksiT%brd_) zF&tILaa^6i8FdnWSEq1OoyHI99Z~9xxT~|`sm@Ck^*8ZTA4)ZKL7q_`NHFc8>YUV4 z?@1VWL-H8%M&ymjo2!cwuilqLvNmMx$<ovXe@Q3oLfBn><jT3#@H6U0v~c{204v5> zaqa=49-<1z#@Yz~`V7#M<B+)-lW;SBvLDkS=9bLN%r!fPE4mf^q89r_ZK-4S3p%VT zqimkGK9>xKwPWN#cxLQ@kK@z*2#j!iR)!FTPBerc!sli*1Ebu+%Mhj!RmRN>@owhi z>xOS+&4dJV_!Xx(-5hJmn9Yc{I^E55xv>I%<)cYiPK#;zCX18JLEz>`$DJ1AR#4ZX zWv&A-!;fV=hGt<e51DV9;ph8Vu5c$U=I1${<u1{FmLv1MJp9{uNQL^C;s2E3|BT`P zoZ-LD-u@*E>?_2muNnRucvjtHle@(f_>SG+HoL$b6sWtHP^5lj_1wc8^)pJe8w_p5 zGVP6(+6U{jA2w=VysjPCPWw)6!!GTGz2pbTkC4Ajew_TY_QzRW1?R}llU*dcM0T0% zD%oc`z!l*_ct1i{Sj(ekMNI~;o)xjKaL)uDq8ZTxv-dE#GYy}h;L1mm<VqU>16r4d zPF`nN9ly|FHo9e>q&ut`tVYjtGce!L*Noivf{u}nAItC)<7!l|UEP=#?d#_XkekzD zRx1O=&u@&4(Iu63O&tWKYr<WJ!lrA(q3gn_!%$l{M1&4U6CH_GIvO2x47%!AWa~KO z=++phlQ2}LB44LrwC;$pIvwM61}4*9q}ySdPQeWFIpoFUi^-Rem+DSft{Zot_fxTk za1-Gc!fk}R2>0mDE-&VoUTgvjyR*xY_l+-OqN4wwos>?i$5Xm_2TY2sZhc7qL^^&m z2E=ZwwC(5~l$}M{*_7RfviqWj?#KM^k7%8P=6VPc^iU+}e6-WU&|VKmI_;fwE;{Rh z=uVzR-k1D&@*MI(dIViE7{ka4$O_5ElT9R>O7@c01?<$taV?8nGCZh@femFy&638G z69E(PG4YfJNUTVJUs=(foV@j^iuMz;dL#UVozAT3DEFu9*y&b=7_*;8INkh&FD-fK zIV2V!-aUeyJL31wZ87sB+v#r9@Q*XT3kobc#_sLGdv7;nvMl=}k9R<`Y*Tsv%fdw7 zd}md>7js#Kw3weflk*ar#c_%2y}XQF7au*EULQ-ZkEhos!cR{^u%1k>PeGI}qSvP( zRnJC-o`Y_BK@l?bJi2*4o+Ic_kV}xK7clGQVFc}?^g_CMI<s#E-8>sp$fuLfBA-n@ zpS)PlV%g8eQnD3ftH{=nZ6w>Qi(Sb!*i5!=X0n-$*7an?y0K(SdHL}-u7>#f{~oi7 tkh$70VH57E4JlhmxS0Q$U|#ql8L>vLXA{@68E<)D@rtyR1m5tR{{{53yAuEa delta 4016 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 BMOXj; diff --git a/domainManager/Domain/bin/db/Dominio.class b/domainManager/Domain/bin/db/Dominio.class index 30e929d158f18f6285ca6adc238f99ed5ba73dae..a4294eecca1c19482f9797ed337bddc548398f5c 100644 GIT binary patch delta 63 zcmaFH@{DD}DMmpa1{MZB22KWkASuKk%pfxPHlr51I0GYtB!krChm69L<(UK-r6(IQ QX>rQ~MP(Qm7?>Dj0dZ3ahyVZp delta 63 zcmaFH@{DD}DMmp)1{MYZ22KV+20jK624M!V$+sD`*d-Yl86+8`CO>2po-EHK$S6D6 SkV%VM5hyCdz`(%7APWF<qY0P* diff --git a/domainManager/Domain/src/code/Domain.java b/domainManager/Domain/src/code/Domain.java index 97fa282..a341688 100644 --- a/domainManager/Domain/src/code/Domain.java +++ b/domainManager/Domain/src/code/Domain.java @@ -134,7 +134,8 @@ public class Domain { server.createContext("/stop/", new StopHandler()); server.createContext("/delete/", new DeleteHandler()); server.createContext("/secured/domains/", new TokenHandler()); - server.createContext("/secured/services/", new ServicesHandler()); + server.createContext("/secured/services", new ServicesHandler()); + server.createContext("/secured/priviledges", new PriviledgesHandler());//TODO server.start(); System.out.println("Domain in ascolto su localhost:"+port); diff --git a/domainManager/Domain/src/code/HttpHandler.java b/domainManager/Domain/src/code/HttpHandler.java new file mode 100644 index 0000000..97dfe32 --- /dev/null +++ b/domainManager/Domain/src/code/HttpHandler.java @@ -0,0 +1,5 @@ +package code; + +public interface HttpHandler { + +} diff --git a/domainManager/Domain/src/code/InstallHandler.java b/domainManager/Domain/src/code/InstallHandler.java index 128b61e..f64df14 100644 --- a/domainManager/Domain/src/code/InstallHandler.java +++ b/domainManager/Domain/src/code/InstallHandler.java @@ -10,6 +10,8 @@ import java.net.HttpURLConnection; import java.net.URL; import java.security.NoSuchAlgorithmException; import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; import org.json.JSONArray; import org.json.JSONException; @@ -30,7 +32,8 @@ public class InstallHandler implements HttpHandler { String requestMethod = he.getRequestMethod(); if (requestMethod.compareToIgnoreCase("options") == 0) { - he.getResponseHeaders().add("Access-Control-Allow-Origin", "*");// se non mettiamo *, viene errore CORS //http://localhost:3001/secured/domains + he.getResponseHeaders().add("Access-Control-Allow-Origin", "*");// se non mettiamo *, viene errore CORS + // //http://localhost:3001/secured/domains he.getResponseHeaders().add("Access-Control-Allow-Methods", "GET, POST, OPTIONS"); he.getResponseHeaders().add("Access-Control-Allow-Headers", "Content-Type,Authorization"); he.sendResponseHeaders(200, -1); @@ -42,40 +45,36 @@ public class InstallHandler implements HttpHandler { // String query = requestedUri.getRawQuery(); String body = readBody(he.getRequestBody()); - //he.getRequestHeaders().get("user").get(0); + // he.getRequestHeaders().get("user").get(0); String user; - - try { - String token=he.getRequestHeaders().get("Authorization").get(0).substring(7); - //JSONObject tok=new JSONObject(token); - //String accessToken=tok.getString("access_token"); - String[] tokSplit=token.split("[.]"); - if(tokSplit.length!=3)return;//controllo che il token abbia header,body e signature(abbia 2 punti :s) - //int scnddot=accessToken.lastIndexOf(".");//dopo questo indice è tutta signature - String signature=tokSplit[2]; - user=TokenHandler.verificaToken(token,signature); - if(user == null){ + String token = he.getRequestHeaders().get("Authorization").get(0).substring(7); + // JSONObject tok=new JSONObject(token); + // String accessToken=tok.getString("access_token"); + String[] tokSplit = token.split("[.]"); + if (tokSplit.length != 3) + return;// controllo che il token abbia header,body e signature(abbia 2 punti :s) + // int scnddot=accessToken.lastIndexOf(".");//dopo questo indice è tutta + // signature + String signature = tokSplit[2]; + user = TokenHandler.verificaToken(token, signature); + if (user == null) { he.sendResponseHeaders(401, -1); - he.getResponseHeaders().add("Access-Control-Allow-Origin", "*");//http://localhost:3001/secured/domains - he.getResponseHeaders().add("Access-Control-Allow-Methods", "GET, POST, OPTIONS");//non c'era POST + he.getResponseHeaders().add("Access-Control-Allow-Origin", "*");// http://localhost:3001/secured/domains + he.getResponseHeaders().add("Access-Control-Allow-Methods", "GET, POST, OPTIONS");// non c'era POST he.getResponseHeaders().add("Access-Control-Allow-Headers", "Content-Type,Authorization"); // questa parte sopra serve anche qui, non solo quando si chiama con OPTIONS return; } - } catch (NoSuchAlgorithmException | IOException | JSONException e2) { e2.printStackTrace(); return; } - - - - //verifica user + // verifica user if (requestMethod.compareToIgnoreCase("POST") == 0) { @@ -84,30 +83,102 @@ public class InstallHandler implements HttpHandler { j = new JSONObject(body); String dm = j.getString("domain"); - //try { - - Dominio d = DBC.getDom(dm); - if (d != null) { - - // String response = "DOMINIO GIA' IN USO"; - OutputStream os = he.getResponseBody(); - he.getResponseHeaders().add("Access-Control-Allow-Origin", "*");//http://localhost:3001/secured/domains - he.getResponseHeaders().add("Access-Control-Allow-Methods", "GET, POST, OPTIONS");//non c'era POST - he.getResponseHeaders().add("Access-Control-Allow-Headers", "Content-Type,Authorization"); - // questa parte sopra serve anche qui, non solo quando si chiama con OPTIONS - he.sendResponseHeaders(403, -1);// response.getBytes().length); - // os.write(response.getBytes()); - os.close(); - return; - } - - + // try { + + Dominio d = DBC.getDom(dm); + if (d != null) { + + // String response = "DOMINIO GIA' IN USO"; + OutputStream os = he.getResponseBody(); + he.getResponseHeaders().add("Access-Control-Allow-Origin", "*");// http://localhost:3001/secured/domains + he.getResponseHeaders().add("Access-Control-Allow-Methods", "GET, POST, OPTIONS");// non c'era POST + he.getResponseHeaders().add("Access-Control-Allow-Headers", "Content-Type,Authorization"); + // questa parte sopra serve anche qui, non solo quando si chiama con OPTIONS + he.sendResponseHeaders(403, -1);// response.getBytes().length); + // os.write(response.getBytes()); + os.close(); + return; + } } catch (JSONException | SQLException e) { e.printStackTrace(); return; } + // inserisco i dati nel DB + + // String s = user + "-A"; + try { + + // qui leggo e parsifico i json nel body, inserisco tutti i campi nel db + + String domain = j.getString("domain"); + DBC.insertDom(domain); + // questa chiamata serve ad assicurarsi che l'utente che ha effettuato la + // chiamata sia anche amministratore del dominio + DBC.insertAmministra(user, domain); + + JSONArray arrUsers = j.getJSONArray("users"); + for (int i = 0; i < arrUsers.length(); i++) { + JSONObject userObj = arrUsers.getJSONObject(i); + String usr = userObj.getString("user"); + if (user.equals(usr)) + continue; + if (userObj.getString("role").equals("A")) { + DBC.insertAmministra(usr, domain); + } else if (userObj.getString("role").equals("U")) { + DBC.insertUsa(usr, domain); + } else + System.err.println(userObj.toString()); + } + + JSONArray arrServ = j.getJSONArray("services");//array con solo il nome dei servizi da installare + ArrayList<String> moduleHosts = new ArrayList<String>(); + for (int i = 0; i < arrServ.length(); i++) { + + // String modul=((JSONObject) arrUsers.get(i)).getString("service"); + // String host=((JSONObject) arrUsers.get(i)).getString("host"); + // DBC.insertService(domain,host,modul); + String modul = arrServ.getString(i); + moduleHosts.addAll(DBC.insertService(domain, modul)); + } + // divido gli host in base al loro module + HashMap<String, ArrayList<String>> hostsMap = new HashMap<String, ArrayList<String>>(); + for (String mh : moduleHosts) { + String[] mhSplit = mh.split("---"); + String module = mhSplit[0]; + String host = mhSplit[1]; + ArrayList<String> hostsList; + if (hostsMap.containsKey(module)) { + hostsList = hostsMap.get(module); + } else { + hostsList = new ArrayList<String>(); + hostsMap.put(module, hostsList); + } + hostsList.add(host); + } + // imposta correttamente l'array dei servizi + JSONArray arrServiziFinale = new JSONArray(); + for(int i=0; i < arrServ.length(); i++) { + JSONObject row = new JSONObject(); + String mod = arrServ.getString(i); + ArrayList<String> ho = hostsMap.get(mod); + for(String h : ho) { + row.put("host", h); + row.put("service", mod); + row.put("uri", DBC.getURI(mod)); + arrServiziFinale.put(row); + } + } + j.put("services", arrServiziFinale); + System.out.println("about to send: " + j.toString()); + // non ci sono controlli!!!! + + } catch (SQLException | JSONException e) { + e.printStackTrace(); + } + + // ora bisogna fare la chiamata al CloudApp, non prima! // effettuo chiamata a CloudAppManager // preso da https://www.baeldung.com/java-http-request @@ -128,15 +199,14 @@ public class InstallHandler implements HttpHandler { URL url = new URL("http://127.0.0.1:3002/install");// maybe, se CloudAppe è in localhost porta 8080 HttpURLConnection con = (HttpURLConnection) url.openConnection(); - - con.setRequestMethod("POST"); con.setRequestProperty("Content-Type", "application/json"); con.setRequestProperty("Accept", "application/json"); con.setDoOutput(true); con.setConnectTimeout(5000); con.setReadTimeout(5000); - DataOutputStream outForCloudApp = new DataOutputStream(con.getOutputStream());// inserimento param in call + DataOutputStream outForCloudApp = new DataOutputStream(con.getOutputStream());// inserimento param + // in call outForCloudApp.writeBytes(j.toString()); outForCloudApp.flush(); outForCloudApp.close(); @@ -157,64 +227,19 @@ public class InstallHandler implements HttpHandler { // finita chiamata a CloudApp // f.close(); + //risposta alla webapp OutputStream os = he.getResponseBody(); - he.getResponseHeaders().add("Access-Control-Allow-Origin", "*");//http://localhost:3001/secured/domains - he.getResponseHeaders().add("Access-Control-Allow-Methods", "GET, POST, OPTIONS");//non c'era POST - he.getResponseHeaders().add("Access-Control-Allow-Headers", "Content-Type,Authorization"); + he.getResponseHeaders().add("Access-Control-Allow-Origin", "*");// http://localhost:3001/secured/domains + he.getResponseHeaders().add("Access-Control-Allow-Methods", "GET, POST, OPTIONS");// non c'era POST + he.getResponseHeaders().add("Access-Control-Allow-Headers", "Content-Type,Authorization"); // questa parte sopra serve anche qui, non solo quando si chiama con OPTIONS - String response = content.toString();//{"result":"done"} - he.sendResponseHeaders(status, -1);//response.getBytes().length); + // String response = content.toString();// {"result":"done"} + he.sendResponseHeaders(status, -1);// response.getBytes().length); // os.write(response.getBytes()); // he.sendResponseHeaders(status, response.length());//status // os.write(response.getBytes()); os.close(); - - - // inserisco i dati nel DB - if (status==200) { - //String s = user + "-A"; - try { - - - //qui leggo e parsifico i json nel body, inserisco tutti i campi nel db - - - String domain=j.getString("domain"); - DBC.insertDom(domain); - // questa chiamata serve ad assicurarsi che l'utente che ha effettuato la chiamata sia anche amministratore del dominio - DBC.insertAmministra(user, domain); - - JSONArray arrUsers = j.getJSONArray("users"); - for(int i=0;i<arrUsers.length();i++) { - JSONObject userObj = arrUsers.getJSONObject(i); - String usr=userObj.getString("user"); - if(user.equals(usr)) continue; - if(userObj.getString("role").equals("A")) { - DBC.insertAmministra(usr, domain); - } - else if(userObj.getString("role").equals("U")) { - DBC.insertUsa(usr, domain); - } else System.err.println(userObj.toString()); - } - - JSONArray arrServ = j.getJSONArray("services"); - for(int i=0;i<arrServ.length();i++) { - - // String modul=((JSONObject) arrUsers.get(i)).getString("service"); - // String host=((JSONObject) arrUsers.get(i)).getString("host"); - // DBC.insertService(domain,host,modul); - String modul = arrServ.get(i).toString(); - DBC.insertService(domain,modul);//FIXME da questo ricavare gli host - } - - //non ci sono controlli!!!! - - - } catch (SQLException | JSONException e) { - e.printStackTrace(); - } - } } } diff --git a/domainManager/Domain/src/code/PriviledgesHandler.java b/domainManager/Domain/src/code/PriviledgesHandler.java new file mode 100644 index 0000000..94c9a15 --- /dev/null +++ b/domainManager/Domain/src/code/PriviledgesHandler.java @@ -0,0 +1,23 @@ +package code; + +import java.io.IOException; +import java.io.OutputStream; +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; + +public class PriviledgesHandler implements HttpHandler{ + + public void handle(HttpExchange he) throws IOException { + // TODO + + he.getResponseHeaders().add("Access-Control-Allow-Origin", "*");// se non mettiamo *, viene errore CORS //http://localhost:3001/secured/domains + he.getResponseHeaders().add("Access-Control-Allow-Methods", "GET, POST, OPTIONS"); + he.getResponseHeaders().add("Access-Control-Allow-Headers", "Content-Type,Authorization"); + byte[] response = "{\"priviledges\":\"admin\"}".getBytes(); + he.sendResponseHeaders(200, response.length); + OutputStream os = he.getResponseBody(); + os.write(response); + os.close(); + } + +} diff --git a/domainManager/Domain/src/code/ServicesHandler.java b/domainManager/Domain/src/code/ServicesHandler.java index c32adea..6e15c16 100644 --- a/domainManager/Domain/src/code/ServicesHandler.java +++ b/domainManager/Domain/src/code/ServicesHandler.java @@ -98,9 +98,9 @@ public class ServicesHandler implements HttpHandler{ // rs.put(k); rs= DBC.getServicesInUseByDomain(domain); res.put("response", rs); + System.out.println("ciao! "+res.toString()); } catch (SQLException | JSONException e) { - // TODO Auto-generated catch block e.printStackTrace(); } @@ -112,19 +112,18 @@ public class ServicesHandler implements HttpHandler{ try { res.put("response",rs); } catch (JSONException e) { - // TODO Auto-generated catch block e.printStackTrace(); } } response = res.toString(); - he.getResponseHeaders().add("Access-Control-Allow-Origin", "*");//http://localhost:3001/secured/domains - he.getResponseHeaders().add("Access-Control-Allow-Methods", "GET, POST, OPTIONS");//non c'era POST - he.getResponseHeaders().add("Access-Control-Allow-Headers", "Content-Type,Authorization"); // questa parte sopra serve anche qui, non solo quando si chiama con OPTIONS OutputStream os = he.getResponseBody(); + he.getResponseHeaders().add("Access-Control-Allow-Origin", "*");//http://localhost:3001/secured/domains + he.getResponseHeaders().add("Access-Control-Allow-Methods", "GET, POST, OPTIONS");//non c'era POST + he.getResponseHeaders().add("Access-Control-Allow-Headers", "Content-Type,Authorization"); he.sendResponseHeaders(200, response.getBytes().length); os.write(response.getBytes()); // he.sendResponseHeaders(status, response.length());//status diff --git a/domainManager/Domain/src/db/DBC.java b/domainManager/Domain/src/db/DBC.java index b8d8ae1..f0020b2 100644 --- a/domainManager/Domain/src/db/DBC.java +++ b/domainManager/Domain/src/db/DBC.java @@ -8,6 +8,8 @@ import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; import org.json.JSONArray; import org.json.JSONException; @@ -665,7 +667,7 @@ public class DBC { /** * finds the host from the database and calls insertService(domain,host,service) to insert the data into the database */ - public static void insertService(String domain, String module) throws JSONException {//FIXME aspettare Alessandro + public static ArrayList<String> insertService(String domain, String module) throws JSONException { // find the host from the database Connection conn = null; try { @@ -702,9 +704,12 @@ public class DBC { } } conn.close(); + ArrayList<String> result = new ArrayList<String>(); for (String host : hosts) { insertService(domain, host, module); + result.add(module+"---"+host); } + return result; } catch (SQLException e) { e.printStackTrace(); @@ -717,6 +722,7 @@ public class DBC { ex.printStackTrace(); } } + return null; } public static JSONArray getServicesInUseByDomain(String domain) throws SQLException, JSONException { @@ -740,18 +746,19 @@ public class DBC { //ArrayList<String> res=new ArrayList<String>(); //JSONArray jsnarr=new JSONArray(); - ArrayList<String> arr=new ArrayList<String>(); + ArrayList<String> arr=new ArrayList<String>();//serve per il contains JSONArray res=new JSONArray(); while (result.next()) { System.out.println("GETSERVICESWHILE"); //JSONObject j= result; + String module=result.getString("Module"); + if(!arr.contains(module)) { - if(!arr.contains(result.getString("Module"))) { - arr.add(result.getString("Module")); - res.put(result.getString("Module")); + arr.add(module); + res.put(module); } - System.out.println(result.getString("Module")); + System.out.println(module); //String dom = result.getString("Domain"); //String desc= result.getString("Desc"); //Integer state = result.getInt("State"); @@ -870,4 +877,36 @@ public class DBC { } return 0; } + + public static String getURI(String module){ + Connection conn = null; + try { + // db parameters + String url = "jdbc:sqlite:../DBPissirDomain.db"; + // create a connection to the database + conn = DriverManager.getConnection(url); + + System.out.println("Connection to SQLite has been established: getURI"); + + PreparedStatement prepared = conn.prepareStatement("SELECT Path FROM Moduli WHERE Module = ?"); + prepared.setString(2, module); + ResultSet result = prepared.executeQuery(); + + if(result.next()) { + return "iotlabgw.edu-al.unipmn.it/lib/"+result.getString("URI"); + } + + } catch (SQLException e) { + e.printStackTrace(); + } finally { + try { + if (conn != null) { + conn.close(); + } + } catch (SQLException ex) { + ex.printStackTrace(); + } + } + return null; + } } diff --git a/keycloak-19.0.1/data/h2/keycloakdb.trace.db b/keycloak-19.0.1/data/h2/keycloakdb.trace.db index f7b106a..daa46cb 100644 --- a/keycloak-19.0.1/data/h2/keycloakdb.trace.db +++ b/keycloak-19.0.1/data/h2/keycloakdb.trace.db @@ -1217,3 +1217,34 @@ org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic c at io.quarkus.runtime.Application.stop(Application.java:203) at io.quarkus.runtime.Application.stop(Application.java:155) at io.quarkus.runtime.ApplicationLifecycleManager$ShutdownHookThread.run(ApplicationLifecycleManager.java:420) +2022-09-07 18:10:24 jdbc[3]: exception +org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-197] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:357) + at org.h2.message.DbException.get(DbException.java:179) + at org.h2.message.DbException.get(DbException.java:155) + at org.h2.message.DbException.get(DbException.java:144) + at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1526) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.checkClosed(JdbcXAConnection.java:470) + at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1512) + at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:516) + at org.h2.jdbcx.JdbcXAConnection$PooledJdbcConnection.close(JdbcXAConnection.java:450) + at org.h2.jdbcx.JdbcXAConnection.close(JdbcXAConnection.java:78) + at io.agroal.pool.ConnectionHandler.closeConnection(ConnectionHandler.java:185) + at io.agroal.pool.ConnectionPool$DestroyConnectionTask.run(ConnectionPool.java:768) + at io.agroal.pool.ConnectionPool.close(ConnectionPool.java:189) + at io.agroal.pool.DataSource.close(DataSource.java:79) + at io.quarkus.agroal.runtime.DataSources.stop(DataSources.java:381) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.agroal.runtime.DataSources_Bean.destroy(Unknown Source) + at io.quarkus.arc.impl.AbstractInstanceHandle.destroyInternal(AbstractInstanceHandle.java:80) + at io.quarkus.arc.impl.ContextInstanceHandleImpl.destroy(ContextInstanceHandleImpl.java:20) + at io.quarkus.arc.impl.AbstractSharedContext.destroy(AbstractSharedContext.java:94) + at io.quarkus.arc.impl.ArcContainerImpl.shutdown(ArcContainerImpl.java:369) + at io.quarkus.arc.Arc.shutdown(Arc.java:52) + at io.quarkus.arc.runtime.ArcRecorder$1.run(ArcRecorder.java:44) + at io.quarkus.runtime.StartupContext.runAllInReverseOrder(StartupContext.java:84) + at io.quarkus.runtime.StartupContext.close(StartupContext.java:73) + at io.quarkus.runner.ApplicationImpl.doStop(Unknown Source) + at io.quarkus.runtime.Application.stop(Application.java:203) + at io.quarkus.runtime.Application.stop(Application.java:155) + at io.quarkus.runtime.ApplicationLifecycleManager$ShutdownHookThread.run(ApplicationLifecycleManager.java:420) diff --git a/webapp/public/js/authentication/app.js b/webapp/public/js/authentication/app.js index 6cbd01b..6c2e49a 100644 --- a/webapp/public/js/authentication/app.js +++ b/webapp/public/js/authentication/app.js @@ -40,6 +40,11 @@ class App { } }); } + tr.querySelector('th > h4 > a').addEventListener('click', (event) => { + event.preventDefault(); + sessionStorage.setItem('domain', domainObject.nome); + window.location.href = '/secured/home/'; + }); } diff --git a/webapp/public/js/mqtt/mqtthat.js b/webapp/public/js/mqtt/mqtthat.js index 6612179..f7b18c7 100644 --- a/webapp/public/js/mqtt/mqtthat.js +++ b/webapp/public/js/mqtt/mqtthat.js @@ -150,7 +150,8 @@ function onMessageArrived(message) { Api.overlayAntifurtoAntifurto(rawValue == 'true'); else if (from === 'antifurto') // dopo rpc per descrizione - Api.sendWebGetAntifurto(JSON.parse(message.payloadString)); + if(message.payloadJSON.antifurto != null) + Api.sendWebGetAntifurto(JSON.parse(message.payloadString)); else if (from === 'valore') Api.setAntifurtoAttenzione(valueInt); else if (from === 'allarme') diff --git a/webapp/public/js/scriptIndex.js b/webapp/public/js/scriptIndex.js index e5f9536..bf99932 100644 --- a/webapp/public/js/scriptIndex.js +++ b/webapp/public/js/scriptIndex.js @@ -13,7 +13,7 @@ logout.addEventListener('click', () => { }); // ask domain to know which service should be used -const servicesArray = await RequestToDomain.getUsedServices(); +const servicesArray = await RequestToDomain.getUsedServices(sessionStorage.getItem('domain')); const userPriviledges = await RequestToDomain.getUserPriviledges(); new Sensori(); -- GitLab