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
zcmai%2~?G38pr?7`(Eya%N6Oeb&*9xL{>3M6E{#%9I!ML)KVis%@}vF)Dicz5`>R&
z&B1jdvr;H`!>u%HC|ZZ1#WE+;a?8q6WB&KToO3<LQ=B9B`<~zX;q!m~&-1?D{qBi1
z`PNgv?|%b8FG<*CeaU9_#AkwDM!iR(k<rR7Ul`(_;N9EK6{l_Z3O$TkTX1(zoDp~r
zNFSP={!q@qzUkSXI4kgV3*=@D%u2VS2;bVU7W1rFg70iNj|)a!t7Ov;f^N?LA|S1>
zFuPz{(c@zarhB6;F4=GySBwmw1o_b@@(J_)2|ru#iwz05ZdCg8G5zLzaH=WJ@NMlY
zH;staos46xb443%d{e};CdYS@7(?yrj9={WK5eZMA?+*@$-Je#(b?~~bfB8V0D*1b
zq)7$S`WEI*pI$KCA~Av}W0YT%wn&^&=6|2JF9aSi^Y<;I-ajA^zf-^S7Vv`?ns}jb
ztLCPEk`%kxD~Ka|oY6u)I0;rvfgQ8a26GUJxulD6A8XJPOOb)6k&P1Mp^U2xuBbpU
zp2s3=z;bNDbEqWUNK%1SjIU#SBjZ~b-^!~hY{pAigB>jFPIP@9uW`YCE;z&mZ*aj;
zE_f5`ae@!OLsn1r5!okXjbvY7i-_@cV7@40YD6G^M+Eu%i-`(M)R+q|@j!@Ep|LdR
zLbJdU$^c$ua0dmxLV-Ieu$lsENM1uMb|V>k&>efxhuLJ}07V|eNM<t{$B@r##xtu4
zc#9=EiOI}#3TiQf{7Le8<O|3bk}oA+jw5)MtQ2jJ;qQcN2-gu-5^lyj;`Aa0)|<#T
z>O1&Fso&uZSVZ-)AlG~y>NYv%7C9M?W6g4ABaF{~Ksg^%&Zm^qKsgsF=NHPkPQPy9
z9tlSmX^S4x9=)X<QY8}oBnkth4KgGIS>%JsbI3=Kk0c*Wo+n`#OE#YDuVhomrjgAe
zn=QH{Yri5mB>K)7o0(FsSZINlSfOdb`@uJxb6$lgKsr&{J@AlwVU;eh%l&90-4H1$
zh?DL}mY&SFH~LE|9*{KVHIVsaB3}k!f@GsmhBBAom?=5TCl_-WFO~-}Uj}0_`7-hn
z@-p&r@>MbdYbE?4tS77_+(uYMxSjA-!fF{wJrhIv2B;=F;AO!o3kTWtLpPkA73Q*{
zMVQbfDzH&tt7d^U*Frp6rf3~HP+<Z21S*_Jg@sf&i3%rE;S?&IN`=#@a0b$4CLWX`
z7HbwB<MR_`0js?TQ)M~TJ%c$?f_d^Bm94-M#+S(wESIHNL0(3_ntUDkdh$w%EX8J7
zhOLBEgs%|pBCH|YE2TIfE2(mQSpPtmN~^m{XVd+WOrMs`A|^b+eY21?l)0WVH&A9J
zWp1L(&6K%?GPhD@6?)2xl)0Tv_7WbJ9e7-J;Yq2XX$L9m5SGdjN~*=Pau_QaHyB^d
z_y)!|GQNrNZE}=~_Toj^hnJ=6LCQLWJzTJ#3l4BWEf*Y>131oyPm<M<)suZl_HVLA
zIY#NWh}$-cKzB=NWo!J0eS6EOjyT)gs|%eyAn#M+hcL^>u*s+Jmj;AMBckOqB*__c
zlW&nGmnrcIGUX@s>yMOr4a4MT443nqrwg2+@7c4LIYU=a#5GTG%^a?o&oztW5}m!w
z5?nzkSvgsScwb|~{*344SEd~i8TzMl<|}u(=Byy{H}^Sff>H_|$^@%2!>&BhMp@BL
zc_UV}LbCEf57ip!$`^ywUC33z7^6b)m<q!<)gBX76sD*cOjpsEsXAgd<9}0aF;7Kc
zA^B4B=g3RRSCUt#SgcmzkyuN(fp81qKMAV{UnbnC;;83V`_w-FpEDNN^~3f9T)Q4q
z2Dc6ZcY9hU&Q6>B#NTC8anuR7ZBQjsY8OhqpHjO~Y6?PBcSNZkNL0PhMfF9B>W5U7
zfxfCg`l$iPPy>;vdLv7vVleqo@{#1D$VZbuMqZ%$U_99qWK+pzkQI^5A)BZ4Unu8f
zhd<v216p$Sjy~z0^I+zj&76lZ=N#so%bbTZ=Ml{LVRTiGqPxmNnkrzvV`)=92C8w)
z_YvAP3PZ?;kv~j6ntTlTSn_dd3?`5jl1(F<Nj8gYE?Kd%jdz_o{hX&xn)B3Y_QK-Y
z4O+In+uhJ^$lVjZLo~FEOijnrZX=^6Q`a<@)eP8F5&YGY2vZ9Xtrj9lEkQT+G&L=w
zmJ;eHMYb}KqslN`m9zF0cvL;Z+CR&>m$2@oth>Rwm$B~Uta}CPz5?^f7Lz?gwt}ow
zd6%>QD%gLk=}Bm8Nas5rO(ux*U_wK)BizP6;^6qO+qxPPV^2goEW7b$il@VKAKn(e
zn>d_Tb%MiKmEsla@QT}uk6&myV;qS}GPcFtUAzkxp19X>gKr!P7e#X~_Y}JXwA_dC
zFKb4epWzZC@#LYr;yu?p-^lhOk(d8q$u_YSwy+hpu@zomD^#%+wzCy>uoYfr$zG-9
z)p$hJ(CXJ|@op?BR(q&@FDLE*Hmif!p$_2<Rf{9)Fixl=_(mPY1$7J;)!VqLPT{($
z!wvN=ZmNF?)O(`Un_^OLiKlv7Z0eNQRh<N=cO{TKm^@USlyI_0vKX>>vP80EvM%a<
zu?Q6yup95i-|ur1HVaNQAso(@F%p6t#jZJT<<>x4?)>?a4r_5q0wu^f>#WZ(y5u}{
zuSu5OGAMp8yt1m%+TOSuL2>ra_aR*20S03C<4f=@E-1kiyN~a~IpIF?wUHDWmgQRh
z4T;0UVX{~5V;geaf7c=6w!oZRhuMvv%jF++yAOJyX{W<%Ob#7VT*Vj1*Ih1Gp_ZS=
zQHT1L`vzuO%ZT%{5od9Z@djQw@0(rUjE=nggswNx^+vk>IbHvf`}1iI%2(*5zNYJE
z&|7`Wjp`ho|Bi!xo&){^hv6a?6{|}qS68uB168c|4(*9*ZNux@iapvJ2N|!`8i%zB
z$H`BU*OAwge?b0;ZiNPIMkCpmWM|3Fk)0>IM0QpCxHgK(@M*#jH17{>T~2neAjx7B
zce0pnAoVVzv{U3CyiugxzGcYW;&6T=;W*r2DXc8WYm#ZVWO1;(GM$!wPmk!`MZutW
z`_+B8W`rgs`q3yqhsj~y4LaoE{5)rjPFm@9*l8XMItU)x0jq8UyAFjzhoPNrhd3RH
zdvz3g>Szqm9Wg}5V1$lEp6-f#oq`EE4TZW7rs@8esrzA;PRCrvi*--T*S)Zqd>MHO
zc^P>*`6@jCYjtue))Q6|ZX>KB+)nr^VYSY16)?|Pz<XilndYkAPsYa134V7t0FBd~
z{Vl<KFL!=nyU{t=@+&J5Z@*!L+_T;7)X;;db1-#2M4dyaGY26$7g2gR67@)Q)jTyc
zPYumeLytv&osUe$AJC8BK|KoD<hkUd$R8!oBQMb7Sc5T`NH&RV2H7mKr^x1!Ezp{$
zhLMrn&EJ)`CxtYh(XL50@{;{y0L`xx>}hUq&aWk&+-Sr3FG`|$XXRB#iRJd^_#d9E
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