From 899d6766c53e616f9bd576f55a520358af61a227 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 10 May 2017 00:30:11 +0200 Subject: [PATCH 1/7] Pump version to 0.24 --- hassio/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hassio/const.py b/hassio/const.py index acdd79fcb..5eb153a77 100644 --- a/hassio/const.py +++ b/hassio/const.py @@ -1,7 +1,7 @@ """Const file for HassIO.""" from pathlib import Path -HASSIO_VERSION = '0.23' +HASSIO_VERSION = '0.24' URL_HASSIO_VERSION = ('https://raw.githubusercontent.com/home-assistant/' 'hassio/master/version.json') From 2ded05be83051e7231d5554ddce8c4073dafe3fa Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 10 May 2017 10:39:00 +0200 Subject: [PATCH 2/7] Add files via upload --- misc/security.png | Bin 0 -> 36629 bytes misc/security.xml | 1 + 2 files changed, 1 insertion(+) create mode 100644 misc/security.png create mode 100644 misc/security.xml diff --git a/misc/security.png b/misc/security.png new file mode 100644 index 0000000000000000000000000000000000000000..c4a6216ca55d2d97166154ea367219f98fb2fae6 GIT binary patch literal 36629 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

NP+`5jc% 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 literal 0 HcmV?d00001 diff --git a/misc/security.xml b/misc/security.xml new file mode 100644 index 000000000..2fa37bc0e --- /dev/null +++ b/misc/security.xml @@ -0,0 +1 @@ +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 \ No newline at end of file From 61d9301dcc0afdd7463a753b18e8a45d2767ebff Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 10 May 2017 11:06:34 +0200 Subject: [PATCH 3/7] Add files via upload --- misc/security.png | Bin 36629 -> 36755 bytes misc/security.xml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/security.png b/misc/security.png index c4a6216ca55d2d97166154ea367219f98fb2fae6..4a9d7bb3e7527e5bdd1a7a0c9fbbb22ed2b891c6 100644 GIT binary patch literal 36755 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 S@9e<8T|0udSAX!y=l=#Cy05(e literal 36629 zcmeFad0bQHw*QZ{O6x?e2%nu*&kfKWbG0a6_w?O5B+jNMP-3ZMP(81o5jEz8|(>z^cXK z>M!TxH*UVLGxitmxKt(53@3~8o6s?id(f~~MWy<{CC+N#m#F*r3sp}2(XFad-LN`F zZia@c>)n(Q-$s!MQ5Z5oDrS8}9k{M37uOJKf^GN`R+ZfA*L>pvo*IjX@l{bt>vWee zIFvBHBge*>%LsZ9Er+8+%|z)7R05s{#>m|`KV^yz;>R2=PRb{w#b%3=Xt-6iYASbm zTWaMnd&e98d?C!1b!ey=UhojrEEY#HTefn0zoi*+;%*Ol;s#ABxnPkQbZ9p?nYvb&IQg_rtzXdpS#P z3v@B#>~X>rih(K-sS;kr?{#3Eyw3Zce9=XoW@gkwn2I-B)EMYc)H8xGnOv`;a?>5o z2kq*Lu#Gs=93JR-R-112bT!zMD6r`Phcl#u56QS1>OIi{6^G&v-C+7)2Gca+#%PH&Oy$&-UY z+R%g1Ae9kyUFkQ!0k7_trW{dDS@uEv`&i6=UI64KD0O=o{q<=bRQz^P=xG=q%Dz*l za)sXOD6xRNl12`#&_O-1js@K^n_Ar6nYNI{!E5162qLwczNeZ&DgkcJwZ`c|Kcqi< zhBPUYTeVMsxJwK>J z4R|ZZBwA7xm4GGwK=)_ARtKx79M~G6qH-PRkII_+z~F7)tC)M=08`@s^$QzHH8IE4 zL%9VXq_#dc%|2jw@s!3Lk9KlN`xU7G{TvVk_Gh9 z{+Ip+jM1-dvxqsOh2?!M$+VM|eT#l1BOUmv0nMo<_~OgWOAkc|GP>0|6V065^9}r- znz<2`u38t}P1aNVglz+@y^kwS@nM9R!;5Rx4|y>FMl!1?`9f?7(^;Y;N(TGX!*q$?dA>h zUQ#=y+^nsv zJ`U6HdeM6k2t+1ag|2-2kr=Z0FiXYC#^%F~EJZK7v_6VlxfBi+cMy)@cVA_aF>rIl z0yEg`96%J-m5HEL;kg8YC3_87*al;E{P!(lR0_LGiOeJ_pufv=5*%0G=rS_RM%=5c(L z>;=6KTbhAyeG>4g-DbYiEkYc1PtxN!4>$)NSEtd+>WqFMAxoMV)P4G<41e#W2VBoL zl_%b|>osG?gYYj)+U0q1eXu0FJB2$=bL*S<{=Ibkh*2ELGiR)X(btCXH;ARpUpU%t zooJ`+kAyg8c<(ndh2X`+^cE`QYip>*8PuA)I6zxbXcM zbQC9iq#Q#ud|N2JoR7SKn0jp}>*WK_NksD|;>YKHapt@{s?%v2yI{JY#sx-sC6=NS-*xNjKz`*Kc>7}4Dx2>R~pgn$hXOd(A z`r+JX=mE~1ggi&W6d{s-TRa8dyX6QP#z){>M#igdDz(rvYF)ZZ^`FY05n+_CQv2@H zr&naPA-r{Fx?0g$ED$h9=5JRUF$~CVC@Cz9f(6Ig)P3=tnwnaec%m@+!7B!X@o}As zQfFf%S+y+bL%50#2sHfphXO+nSVV{#yV&C#Y9^i>%HPXlkzJ09r0F1f$c?MLFXx&w zYF1V&AMLXR9zF0j$6;z}JfAUt2JDx;>2_EO?%Oqgw~ZrnAIXZJ^OUBkSEy*TuNhd= zpIb41anDTUPdkrdxc@b~_{>W9wDT#(S+T49`-lI92j;(gsJTy`Ha$3Y+%z)PHX)cG zhCY4TRN{;p3T|>MTnnMqYZL4EtB-qX09$?}M9a1AttsUGgRQ}V!AF(m9<$YH8xIE0 z)5>C?x{J~%VK>aPWXo!e?R-Oem1eGG{O0#gsfIi*hVaJUF9DL3_x@r!Z$cet#i*~8 z$hctK9sPBIbm1kRoGY|FWis{NtuyY6;Un^)k5F4#)J3T~#zOle=^wN^l>&DBE-*Djwo zEPZq$MmFg?lHx%N;e6=j_@`Cp#FB%e<)>#2x13Sg6bCmoL4%Krd1UDM8&^Ul>5dZ3 zpczXot%Q-%Ehq1pWgnbjl$*!TgODA zLtQn|J*>%R{?wC)T4&9{m<5sDzUv>B8at#kd%wv-q**15V1WWFv>tkJy{S* zD=NN~R;b4tYQCOPiNR>Si4+rft2D)%{)+NF;+OYKcuO--?=|E`pUKBE5oWSa6D?>l zn;OW$jhfAx3S#g?MvhUJd2oM;t?@pK;#$@gT(Q1{VX@vkYan3< zLR@L4f|2m+6WYJ|vz}#Miz!ZJr&r!#Kl8dWHnEDm0yDV(@D`h%q{_l6=ip@G{WaX> z<;ByMUrP%Lg8>n@RF97!?D^24Y-Em6Ux$|0^C0*4E$@5>DaR$N>c6{KHug61D?I!w zjmyl-{YJOIGn1|y$&dAD3KC7CdEaLcJb9b2`KlV^4{neSOii)5&97Qmp6yG|>fdHg zO8PF|i!3YCOW#tu#>qJ=T2X^OhhiiA?hO=TD}zrqu*Gi*>qn;)_T?Am{M}SDvTbUA zRK?O>%FK~z-`DphoAZpmXp}v(=pB(2BaKtr5x+@hCU`Y4WyoIKAkBcznXegF?YBzC zgVG3B*3C41>k=dXl;+`^zy&?C7ifSrce#S=E0&gDnlYGv^SzslE&~mK@{FBA-bd;8k}3g zg)xZdALSou;hrCm;!B%~iB}Y6xKFP?BuQ*I?Df~Kwuq&~3sbS$i3k_Ee_=_U(|87z zAuo-v8JE1K(#QuO_zRpsyym^!U8uz{e=TpMwZe1Ih{NYj^c5U{6f;tE)cLR^ajxM+ znR5rJ?mZ{H;?oMq{!q2&u$R0}V@IM(@0|Z|Y9;b5rCkil*2Us=Q49OkIWfxentPYm2EeOt7@ju3HO#pt)elCu)YAMRn%-G!U4f~;LNWD2++}$D zqhjJ$O5UOmt}|7yqlD!j47Z_SN%`{R7^r_?-Vo>owcQ7ft1dMB)d1J1c>0OaU67I( zw8&iitX`$1znbK&D%94OIZ{B-eUSZfKXhuadmXSA0_#TIX4eALfiGNPlzK_Lyu$85 z+SS;;G$gv#yp?`6(^Vi#^fW0MYGJ;X)-lYZ_8*rl5Y?N2)WNsNPgi5ylOjp^sid5s z*c(ka5$a%}8i+MSj>=$C0Tj5z&6udzZq-p>`Mb2eaGvN~cQgw0tNqxU z*R6xb;!e)H_*io=FFJ-SUz%)H?H|etsm|c6J0t0-STSv_3i@w&%~`Y8fXA4TMe&7$ z4D-Ve?Swz7Zl-XvdeYmV6BCz6eG@uQz$e9jEQ`Sm{yEZxj*Ne0)dMb=d(eEdHyYHy ziU$mKDdFf+X_{9`@lY=A3}z<8BbJBYm&H_Jx>FcZb#m4d5dk~4yt=1nQ?1&X z(4uZ0I{t#Qae6uYqHBCDwnsz$&N9;*s%iOtwFz4g-@Kf1y`BYl z^5!JtU<4w^0c$e=xSK9o&GCYiZq>b>9+FIJOg>q^ zZ~MpIqQn+bBUhHYaEDPnID>Ob1LG#j^}EscdbS0uZcsQbLTp&fl}d`eEM)xZxLEOG zs%N7BCDHFrL=;wLPSr0V_v}iXWZSh`AlquU_?D+x#ryESb?~6{j>l%0uF93L(V%HJ zgqMPz9PRrkg?T5VneItl^geK~H9Q@jRe}{Rob!a5>4LIg#PLThm((*sh1b2B_eN&o z;yoY7Qy(9)U()_J{v?zlGwNkt0uiXZc9X`PPCljd+mYT?@9lc`md#pUEzh;!Y2@2Mtk~pWClcq8?kb^C4V$IhG3I%fOvE@K zrxg38_3E*a;A@II;mjJt4@_ZBlzUf@8rK$@Q{a^Tp^cSpd*<;|Cirm?Ib+~AB+2Y+ zRaN2PBT!6tXO+zFI-KtygZ-4iBZ3aj_4;x%3gsZFvVqc2&dSbpcBS=Fhe?(6ZjAC5 z{{hdad4K=#&1_J(1`~}S3AIISA26HYu%gKN^eMW0Xz8N#a@q*~MsGLB`EisTeR%E1sKUP;ea!Py6&e^63;}q}S_NArk8oQ^KG^VWA)SKlG z^3a#|)}Gq}1DVIl-wAmR(38GFI#(DyZ#a0hAiH#9%ue})SnRFI(yBOijEA=v7pJC* zPm#pebQinb-rOoaqtPnsX;qZ8e`r)>|;LCYpyBn9d7S=*DA10dMlL*H!2|CckdC!q*GqcNWnW9;hSPVHp5@aw3@zr4)#$cDSq!`-hxu2`>-80f zS^^Luh}ERVpkcqd$?>RIR9@rK1hQ`q-R?nRFL1;oSGGXt1k| z8{MOsX&w=mVi(6X%6p5>u(2|hH^y{dw}vgK1y|-{&T`}P>z|=*_sq=^kJHT3X!-lA ze$jhtC+^{;;wyZh{e(ky?n#aQslTr;VhzM}F9W&crAbbD12gTl#3UNiyLV4L1|tXp zL9L@P+Z64Od1)!+Tv#fVgqr@2!Pr(2c^ld24KsS(v>E=B0ER#2Fszy*GF~MT_k3;B zymzh@fY7QY6bcXW5K0nD1FNPcl1W5ny5PJ91Z+xX?2K`x&;(|`uR`ZP*m@a(0Ce-} zFZ7V}d<1x4-IegPwYb zgOWeYcgDPWjc4V)PYUs@(KX4rISA61C~H1fqdv)f^QD}BR(bya%b5GZM*dsL`yc+W z4-@I$=961VnmFy3;8W;)Bd?@=pcZ=G8o{|rWJ`aTd-Xo;NVwmBGB1%SQMBXmi~D`p)$8<-*VR!mBB;0W>Gp}Se%H19x+$A!GT zsZpkR(b6IzAe2+U&XUF+M64}{)vibAgT++1XX)bD?|K|a_HfVJ1*&+2JRO_Hmab9s zqzb8e)vRoFDr|p_JK2%IjD_)aV?p||CqpPav^*nc!g(3o*zYOHY;ohdzjDL1nh?y` z%(?Kw*;K?a*zK^Zq2;w!q4dUX(8X<71DSMmf-qt1G2Ib{J)d{RlBcU!+d(Y^mOpkV z&w)#W??Ch=awB-WK^Mo|HQbF3SWCPJk8@8HdwxtR02&=z)tc)mRmUVM`i|_kHYm(K z5|W^Xf6msSCsohqmoAm(nh3fWr%)nM)61u^!dBX!^v2R|Xf8)0zNI!JtlL6fYgR?$39S zw)UU3K1r?NyG`LW+qd(utL8-5z~xAUZ^k;4;0aQ$pbLxoHPx%aEU&2q)0O@@W@MRh zxJmgHN+(^S8Qk03A*wST2^vG}GUIGxB(E_3bG83+fy`Xdk)(7yW;KByHMTStkGO}J zAU*k$QvTR(Duw1rW3-LkOb^0HB*G}dv$u{DHjTZDe%sQj_o#+;6Mg5Wl<~Cj$_;K0 zeJEnK;&k`e$IR^84LNO>kahtPz?E{5K}Hwj4Kj0^8AjX^*pzQq^FxuZkM&hUS?&F~ z7hCiL?{#5IE~EYYO0zat3~*4>9-$b$-4+b?K#f3vC62Vb?}0f*;1G@@?*t9@Sr3 zTf)K3ZD!di%`<& zK8Ga#;r^_MY$;C6|A8txaV9LPu9tT>t&|bu z;npq-)3$~%mzG2ARZI@Ep^z5;@|4I2)pt z@n|r_7DTr>!DTOkp3UGQ2im9JS&Vym3l^Vo#sX5wQlXy5V7ox}L9wIbn^6aj9};^n zxK_XLq5FdY=V4&qXH*#y$0ocQhnw;so?asJ@e_g}FJq*)$y57*H5uZS&rHG}27D`P z-6o5vm9P7(zjZqxNVu>gox8;gIJ(Cvy&g2 zoiLJRyIVc0Z_G%)>ih45B1C&wXkof+k_|#jM3;oC@v$Hhq(fg9E2Xbhc6FtmBhC3jB?}OZZtf^MFn#CUMRM6a#C{-d=|mLYBdh6*q*n2`avA;>q&)9O9ziYY`~sDe(V}kSCE6jD z0G?HC=#eFg=|+un(gEbGQ=`a9QnT0UxP**mp)L=jnji}>yP1j#S_9G?t&6~^Qi5&3boJTCV8H{Q$6UYz7MQXDj|>KyUnyMyd>iKmfc%Ub=y6E*7KGz>d4x47ea4b_gh!$*8s8h_D`ih#azbr0ZojsAJtL%W_`l zYuy;K%d5;2lmdk$XFK16M<`lBAh@AtSVff($1Tz z#XbA$QXOdf?gg)MO@zy#o#xS)5eq`k(gRg2hv{+py?OMjIfk=TQ(jDYkq&TnCpSg| zVmUzC-B2K;rR5qglF{?q)1n#T###1xIi$+6_R%iFVx&QnKEGUGOQ&x z_?`$?r-+uc2+9Cr;7zv0I>`Rq%3&BwhIec8xu5rXPsJ`sAc_}UDc3RLyz|>a0iZf> z&d+@44Mhwp6_5>>iDOQGl?7LHth)s}pM&}~EEWz)@_eS7?Nv&E3sV|XV~eS2PghV8 zf@0!NiWA6;BEHj&rQeXhm_EZCQQFzj@?HxMR!jY8lj0nrTk#x2#<6ry%tKLqMydwV zF`e0so!s%_DI?qf_fpY???%%cE5VN}X^5A)J0&4){%7ZFpO18oIwPr<1IoOw$3iuk}h2;?2tOaov6+dD=KJIQwdlk~-=Aq0-3}e*}L!=D~YrnQ6$k11<3oZk3K( z?f`5ZK|PpvyFDQVn4_`+EWs!7sm$eu0fInegoWS$wF#e8&BeI{{xvjgk(D%TgsbxN zMk=ct9=uN$R(pNm4S=oy9=jHq-?vybk zp?(X;(t{mY&*=2NaaCC>jas}2Tn53yhI8Co90_md>sGPEmC0_c0oq~kb8pOys+61Y z+n#Ml21yGZrTkTYIo8ru(x@>}(9JT2%U8ZQ1t6#~N^UIk{*$i}gu!@mi2DSA(KEmm zK7$FePwb#C!rCBUd^i+uAS7^6J^&h5nlHbi#J~+(O4dRhHxtIb2zzK>Poh&XtA08@ z7!*TBk$%SsgOyuoLH|hn>VWcR-N7i0_XcXpBurPAOeO=uSzqY2Mb9TcQ>4n@p#aL1 zhKEDcuX4HE11yz!yb7?FP3ym0UG%~ck?7n!55LCb4Zp@=1sKqabx6|M7|k%bj1>Kx zr|bg2ka6T#}$7P0X2QAlT%A){|O%kSLOozS8X3{EqlpC!C+kvU8J z5Gco%txuS%5VfXa(~SE=_PF*_p8W6L0*4A%-V&4@W=-rjLorn8tPGzY0gBZW) zwNq;08vwc6d*KsuSHb;^+&wT{WHu; z>bpZTp8bR;M{%F-BFB1j5)9zZb=-;JAiOZAc}T9~_jF(s!PyB$xF_Xcbj?csKw|6^ zs>0@8|Gd-8#9!ScgwwW1j7W02Vf&c5f8kFIJ8Os}vTtWw9D`k&n0$7v>j5}vS5|lk zZUq#Mmu(`~XCH}1^#Vc7)CX<1>ZeNx=$=kh_ZBXh` zayVJX6{kCV1k_ySE{|jNymywGSKvlgHaX5^xBpeZ%3p#D0FkTY;?WR zx9lG(JFb1{=oUfY@Og9jV0wXf&~m=Tq>X<}d z@6jyjB(yoQcfkD;8hxzuDR&{j}JSOXxf0xGRxan8b%mhEQ$C`|4r+3 zCyj*_OLxzt2wcgX{u`tK9d{=r*`^k$D%$h11%UsOVioY;d_Co#Nk#fEIj@yNK+bGMXF`$s1zUHJ?&wSQ<%YjMFUHonXtY9|5+{aCB_Km7;xD zbR8oI%o;3%cy593zJ^+;apsb@)@OIDdlVoNHPIJfd~7&ZBHrabHSjEwX10J}DED!t zpIrQzcq}K97^A6_5d?wbuv%WgzG=W~Ktnpfe*$p?rq^$qm9K6f#;bn3p-xU|S%A@1 zVEDDweLLs+<((&!|Y_II!Z_jU!SE%?1RN`_3iRD_w|Bax@m&wI@eAl z`%teNph|NtV+`8NqYeREtP;&9jmP>6AGTWC>yf*8+E;DD!%O9@VPULd-b3&Ld1z7n zOqSKQhz$TTjDgr)^iiv7xh%TW|BJEqaDl8utt!lV@~%KoR4x*eZo6xLKRsw-*nRc>`vd~vwVBE^lBhd82%bU! z=ZHCJr+0@Vw79)%{8;uGXUWx5+cw2<+XW}Cow0*<_I3jCBFma=o#U!VaGblLh`YZk}zl0@RR zfyAllbO@%`hDH%RMVqyOQ}za%k0&>G$sNEwJVw0+IqPpMdE8Hlx@^;0wLdD$MF)Ab zs{7z}TU`sk3mvJr(Jc9v-Y_S*GsdOq*H?|6hN-A{hSX8@w8u@174?T1ri8k-IdirJ zRkdJ|mvqAYG($Y;O}Z@U`E3(OxV$LyHd`oic>!d)&G`eL-R|q|4O#HR^wx0~f<+jo4xJP&RcygyH|3wF-o25!veT-X;0}MO{csq#5=d~1 zC=k6Z;V~k*!ZJR%?;w%@Ou9%=h1#?u!FbaoMXU&E`Ai^H`?ln|{2Ar`5`Z5JWX}>u z8>c;LvY-6XUyO4+H#oejF@5eOyUF`njUVwpCV0$35jTV-?wc)}Pp+Lz%|xkbrY z7WP*fPAnsD#4CUNAE5>fMneuVby+uf=z|eYr=T6F@tg_)2t{f!TilMkby`CpTc)sJ z*N1>=KQJLRQMtEuv&}Nf1?hsv?RkHjUW#LlhFTVs2vktN>__ zhXC#2T$L;6#iE|g(H?s;UdITQ8UJZg{+QC4Ce<7t>~;Otw@A2+(Xq_l_PE z>)!Ay6B{}A>MFQIX+G@+_#yN(iL{VZI-0dVylxTv4VBJa!7D0340%X;*tKAKa7IRx z@bFEdtYAFi`A_Yq7y?=NykXEWtk3QC%j;DqMh1-{D5*iuQqO4Fd2&Nyl7ioYEm>d1 zVA{i`p+G&w`wMD7U0xb|!3E*=!tN=p8!Z0aY|zWB;v;Zs7wAE11QS@|hSv8z4?@N% z9=v#C$}_az&x-l|0}o)6tjpo3t~4Ow3PSqbn)AC^qlG$YDQ&$DB4FzG-8JVarz8 zJxN-%ueD;f!jOMoqnXxWl(T*R6*>)ZhVY1-COjlx5FX5V*+M`Hc?0WjknIrV7TCss z4JCJ!1g-tDIoNu>D$~^kpx*xG-2!nq zh#F*w%#aY7wnu&a^8j&ba4q?FZeeQod|2{ZMJy~Mvv3R zl&rtRL1O$B`>Z=V-Qc(E6Ky}r^PPhMO=%aH#NOG)oseck&M>CxUY{7#uD})TrN<#o zgFN!d;~8Co+i5ky7xLo9i&EkW&?G7;&YdFmQ$U{pY_kV>6uf;~%tH@V_eXY+p(DOy z{2Z?wfS-sa9B&&=v?)hFq*Inwy|iKo-V~1K1`m?z`jdm;VJ4lCiN-+h5} z$M5H1BLI}+xw0ieozayzavcCqBZj-77cz#2?WR_~EDrv_M6|OfF7lz;bH>?dJCdzY zHxksvIQX@HVIbm;C}Qd5LHwURI zvTQ293b3N30BYmnwrPXTOk(7$C-tk-siOp5Pkk%_7jVfE z&%R9fBGr^&D1$~!?q`JyZbVEC=mOdm2JdCK;m#MAMIn(3Rg{xgr`3g@Tjw z?gX-5%ipYBz@PVpxfxF?MUSMYP-~`>I)UU@U53bwmK2~AP;+=7a;Z`1G=rl+(6r

NP+`5jc% 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 diff --git a/misc/security.xml b/misc/security.xml index 2fa37bc0e..e18c4eafb 100644 --- a/misc/security.xml +++ b/misc/security.xml @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file From b76cd5c004406a624bb257cf646dde8bb84d751c Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 10 May 2017 17:01:35 +0200 Subject: [PATCH 4/7] Add files via upload --- misc/security.png | Bin 36755 -> 37213 bytes misc/security.xml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/security.png b/misc/security.png index 4a9d7bb3e7527e5bdd1a7a0c9fbbb22ed2b891c6..8343b0e8426a16cf7ba66c41004df63354ffa96e 100644 GIT binary patch literal 37213 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 Dd2c8G literal 36755 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 S@9e<8T|0udSAX!y=l=#Cy05(e diff --git a/misc/security.xml b/misc/security.xml index e18c4eafb..162e082f7 100644 --- a/misc/security.xml +++ b/misc/security.xml @@ -1 +1 @@ -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 \ No newline at end of file +5Vxdd5s4EP01fmwOkgCbx9hp2j7sNrvpnnYfiVFsTjDyghwn++tXGMmAxileEB9O+9BjBhjM3GHmzjXKhCw2L58Sf7v+jQU0mmAreJmQmwnGU4eI/zPDa24gyM0NqyQMchMqDPfhv1QaLWndhQFNKwdyxiIebqvGJYtjuuQVm58kbF897JFF1atu/RUFhvulH0Hr9zDg69w6w25h/0zD1VpdGblevufBXz6tEraL5fUmmDwe/uW7N77yJW80XfsB25dM5OOELBLGeP5p87KgURZaFbb8vNs39h6/d0Jjfs4JOD/h2Y928tZvwyTlwnTP/YTLL8lfVWA4fRF+52u+iYQBiY8pT9gTXbCIJcISs1gcOX8Mo0gz+VG4isXmUnwzKuzzZ5rwUIT8Wu7YhEGQXWa+X4ec3m/9ZXbNvcivzCGL+b38Go7aztMGeWIb3rcMRXYV+lIyyTh8omxDefIqDpF7ySw/Q6asKxHaF/gjS9rWJewVkr5MudXRcRF28UFG/jQKBKDwVypipAe/FPUtC2N+uKIznzg3mYUmobhwFtoblvA1W7HYj+4KawcxQhgGyT0Vo5mBINkgSJ/9NB1hkDAiw0XJAVFaiyhdffk6wkDZ7oCBckGg2JbGh1uKs2b2drT0wvXAOGcbsYPGwXXWfDJbxJZPP4uSqK4ryiuZTYNKU4JhK4VFRSChkc/D52rbOhUW6e0uQ7pAwNOeZ1sLbMp2yZLKk8ptRPMjoNMc4aqj/HaBowNIxzs8C7cpwE2ckdLlLgm5uNPbMH5kvaLnDIYenmrPj9sQPuLUODIH3wzCNxVxFtdz/9llrGcexiEvtibkOiNwfpTS7KjpTVtsD085mQd+uqaBPE/slmRilm29hPyH+PzBurIcuf232LauCFH7S5XwxvpZpuQQVDKlyaPfMlNsy60AjK2mmYJrHJnLFA9kip8+ZfsP+WHdfe8+E856/kk/EOqsApOGECJS48gchGqcK2GYUm4Sw8vss7hpoT5GVDlyvM6wg6NhtdGyLQ9ZLAi4G2WF+kHMK+7qULK1gr4VBHTPkkAv6nrJt7b70iFGir1Kj/K4iC6vsWPPUGMHjgzmCxxiq/mS0jQVCfNGvvyvZOk1VxQdQFcWmlbowNRtRQfsMacc0XWNpikHHL2RcgIG/7V0mJxJWyYlFA306lSk5Rv5Jg94oq+mM66egDSqW31xSm16J9OmGTOrcWSwSEF5xMi43xGSA1FL0rTd6NQSODKIJNRvfmfJxodQvmPJGlfZoN2nZo2gEHMZorWDYJQ6UxkR1DsuRLXuN0xw2L8c2brXSGE4Ug+mW6vkHn6gdpqKIbpw7RDcVcc6JtpolGv11I1g3HAcQ+MGcGQQwBOKyBnaNU/E0XhROY4zvn2fGrfKqUZ1wrDK7TSWTXCNI4NJBWWTXOYejb6tiF7fU4jbVIHQpxDgyCB6UF/IZ4Xete3x9GK3aSnXxW3X7kzcPvHrfzdi5SAypVuVKV3itqros1EzhykyxByAoz6FylOvNbx7obI3XqANbNPG70nMahwZrFBQOBizUjkUSZjqM3VTkgAcGYQSihuXoZR5fQobBAobF6KU9RsmqCJcjlLWb6TguD6YUqaSe3h27plSyrzulDJS9ypB70qZeupGwHc9U0oZcGQQwPqf3dsoZflxFy6UkTZlwrBQ5pkSyoAjgzkFf7ovhLLbb1+/3XWfDGfVCnzubGyYCiPLlGAGPRmEESovZcXMCJAX2pqRZUo5Q1Z30hmpW4DRjXSWdYVDLzgcNcu64gVqaSrZRsotEDIlpkFPfapppH6VyftT03ojD/qqvebLjmZ1ngyWLSjCjFlPG4xEIFOCGvRkDky1TPHEy3+iSooiia2TPOLXeRVw5kqeVWoauKtXAW2oSY1U4LQ1noQ9G4SpuwXsGIRptAqnM2ScoPwzZolz0FBBouMvRTvwOT3WQJ2GywJZEHAzHLrgzIpB54wZ2a0Ys32iOaoHaQDGfHyd+rjQXWld7ZfMqwbaQb+E5Kc6s0mVzeDANsR6LNIy1fCJVDt3CUYXw5lWWWyvYaoRp85Tn8OZA8nbH39+WLCAts2YrtZTnVtuWg9Wem1pysXJTAPcsc8DvAmckPyNHM5z9ZbWo5UOgtvw+UWkzpNBOCFJ/ZKvzv7lJiqtPx8LV3l1lXpNp+VIJTaLv/mWo1b8XT3y8T8= \ No newline at end of file From 956af2bd62fdbf83a9f8ebb93cb541def78a2765 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 10 May 2017 22:02:47 +0200 Subject: [PATCH 5/7] Add security api and TOTP on supervisor (#41) * Add security api and TOTP on supervisor * finish security api * fix lint * fix lint p2 * add new api view to init * Task session cleanup / fix hass wachdog * fix lint * fix api return * fix check --- API.md | 34 ++++++++++++ hassio/api/__init__.py | 10 ++++ hassio/api/homeassistant.py | 4 +- hassio/api/security.py | 102 ++++++++++++++++++++++++++++++++++++ hassio/api/util.py | 9 ++++ hassio/config.py | 65 +++++++++++++++++++++++ hassio/const.py | 5 ++ hassio/core.py | 44 ++++++++++------ hassio/tasks.py | 13 +++++ setup.py | 2 + 10 files changed, 268 insertions(+), 20 deletions(-) create mode 100644 hassio/api/security.py diff --git a/API.md b/API.md index 69736bb3f..794b99f09 100644 --- a/API.md +++ b/API.md @@ -108,6 +108,40 @@ Reload addons/version. Output the raw docker log +### Security + +- GET `/security/info` +```json +{ + "initialize": "bool", + "totp": "bool" +} +``` + +- POST `/security/options` +```json +{ + "password": "xy" +} +``` + +- POST `/security/totp` +```json +{ + "password": "xy" +} +``` + +Return QR-Code + +- POST `/security/session` +```json +{ + "password": "xy", + "totp": "null|123456" +} +``` + ### Host - POST `/host/shutdown` diff --git a/hassio/api/__init__.py b/hassio/api/__init__.py index caca6d2f0..c037ee53c 100644 --- a/hassio/api/__init__.py +++ b/hassio/api/__init__.py @@ -8,6 +8,7 @@ from .homeassistant import APIHomeAssistant from .host import APIHost from .network import APINetwork from .supervisor import APISupervisor +from .security import APISecurity _LOGGER = logging.getLogger(__name__) @@ -86,6 +87,15 @@ class RestAPI(object): '/addons/{addon}/options', api_addons.options) self.webapp.router.add_get('/addons/{addon}/logs', api_addons.logs) + def register_security(self): + """Register security function.""" + api_security = APISecurity(self.config, self.loop) + + self.webapp.router.add_get('/security/info', api_security.info) + self.webapp.router.add_post('/security/options', api_security.options) + self.webapp.router.add_post('/security/totp', api_security.totp) + self.webapp.router.add_post('/security/session', api_security.session) + async def start(self): """Run rest api webserver.""" self._handler = self.webapp.make_handler(loop=self.loop) diff --git a/hassio/api/homeassistant.py b/hassio/api/homeassistant.py index 35c8f67d5..8410fe7d5 100644 --- a/hassio/api/homeassistant.py +++ b/hassio/api/homeassistant.py @@ -26,13 +26,11 @@ class APIHomeAssistant(object): @api_process async def info(self, request): """Return host information.""" - info = { + return { ATTR_VERSION: self.homeassistant.version, ATTR_LAST_VERSION: self.config.last_homeassistant, } - return info - @api_process async def update(self, request): """Update homeassistant.""" diff --git a/hassio/api/security.py b/hassio/api/security.py new file mode 100644 index 000000000..12a09f638 --- /dev/null +++ b/hassio/api/security.py @@ -0,0 +1,102 @@ +"""Init file for HassIO security rest api.""" +from datetime import datetime, timedelta +import io +import logging +import hashlib +import os + +from aiohttp import web +import voluptuous as vol +import pyotp +import pyqrcode + +from .util import api_process, api_validate, hash_password +from ..const import ATTR_INITIALIZE, ATTR_PASSWORD, ATTR_TOTP, ATTR_SESSION + +_LOGGER = logging.getLogger(__name__) + +SCHEMA_PASSWORD = vol.Schema({ + vol.Required(ATTR_PASSWORD): vol.Coerce(str), +}) + +SCHEMA_SESSION = SCHEMA_PASSWORD.extend({ + vol.Optional(ATTR_TOTP, default=None): vol.Coerce(str), +}) + + +class APISecurity(object): + """Handle rest api for security functions.""" + + def __init__(self, config, loop): + """Initialize security rest api part.""" + self.config = config + self.loop = loop + + def _check_password(self, body): + """Check if password is valid and security is initialize.""" + if not self.config.security_initialize: + raise RuntimeError("First set a password") + + password = hash_password(body[ATTR_PASSWORD]) + if password != self.config.security_password: + raise RuntimeError("Wrong password") + + @api_process + async def info(self, request): + """Return host information.""" + return { + ATTR_INITIALIZE: self.config.security_initialize, + ATTR_TOTP: self.config.security_totp is not None, + } + + @api_process + async def options(self, request): + """Set options / password.""" + body = await api_validate(SCHEMA_PASSWORD, request) + + if self.config.security_initialize: + raise RuntimeError("Password is already set!") + + self.config.security_password = hash_password(body[ATTR_PASSWORD]) + self.config.security_initialize = True + return True + + @api_process + async def totp(self, request): + """Set and initialze TOTP.""" + body = await api_validate(SCHEMA_PASSWORD, request) + self._check_password(body) + + # generate TOTP + totp_init_key = pyotp.random_base32() + totp = pyotp.TOTP(totp_init_key) + + # init qrcode + buff = io.BytesIO() + + qrcode = pyqrcode.create(totp.provisioning_uri("Hass.IO")) + qrcode.svg(buff) + + # finish + self.config.security_totp = totp_init_key + return web.Response(body=buff.getvalue(), content_type='image/svg+xml') + + @api_process + async def session(self, request): + """Set and initialze session.""" + body = await api_validate(SCHEMA_SESSION, request) + self._check_password(body) + + # check TOTP + if self.config.security_totp: + totp = pyotp.TOTP(self.config.security_totp) + if body[ATTR_TOTP] != totp.now(): + raise RuntimeError("Invalid TOTP token!") + + # create session + valid_until = datetime.now() + timedelta(days=1) + session = hashlib.sha256(os.urandom(54)).hexdigest() + + # store session + self.config.security_sessions = (session, valid_until) + return {ATTR_SESSION: session} diff --git a/hassio/api/util.py b/hassio/api/util.py index 5204e9079..b59352dea 100644 --- a/hassio/api/util.py +++ b/hassio/api/util.py @@ -1,5 +1,6 @@ """Init file for HassIO util for rest api.""" import json +import hashlib import logging from aiohttp import web @@ -32,6 +33,8 @@ def api_process(method): if isinstance(answer, dict): return api_return_ok(data=answer) + if isinstance(answer, web.Response): + return answer elif answer: return api_return_ok() return api_return_error() @@ -101,3 +104,9 @@ async def api_validate(schema, request): raise RuntimeError(humanize_error(data, ex)) from None return data + + +def hash_password(password): + """Hash and salt our passwords.""" + key = ")*()*SALT_HASSIO2123{}6554547485HSKA!!*JSLAfdasda$".format(password) + return hashlib.sha256(key.encode()).hexdigest() diff --git a/hassio/config.py b/hassio/config.py index 8965ced69..363325e4e 100644 --- a/hassio/config.py +++ b/hassio/config.py @@ -1,4 +1,5 @@ """Bootstrap HassIO.""" +from datetime import datetime import logging import json import os @@ -13,6 +14,8 @@ from .tools import ( _LOGGER = logging.getLogger(__name__) +DATETIME_FORMAT = "%Y%m%d %H:%M:%S" + HOMEASSISTANT_CONFIG = PurePath("homeassistant") HOMEASSISTANT_LAST = 'homeassistant_last' @@ -32,6 +35,11 @@ UPSTREAM_BETA = 'upstream_beta' API_ENDPOINT = 'api_endpoint' +SECURITY_INITIALIZE = 'security_initialize' +SECURITY_TOTP = 'security_totp' +SECURITY_PASSWORD = 'security_password' +SECURITY_SESSIONS = 'security_sessions' + # pylint: disable=no-value-for-parameter SCHEMA_CONFIG = vol.Schema({ @@ -41,6 +49,11 @@ SCHEMA_CONFIG = vol.Schema({ vol.Optional(HASSIO_LAST): vol.Coerce(str), vol.Optional(HASSIO_CLEANUP): vol.Coerce(str), vol.Optional(ADDONS_CUSTOM_LIST, default=[]): [vol.Url()], + vol.Optional(SECURITY_INITIALIZE, default=False): vol.Boolean(), + vol.Optional(SECURITY_TOTP): vol.Coerce(str), + vol.Optional(SECURITY_PASSWORD): vol.Coerce(str), + vol.Optional(SECURITY_SESSIONS, default={}): + {vol.Coerce(str): vol.Coerce(str)}, }, extra=vol.REMOVE_EXTRA) @@ -235,3 +248,55 @@ class CoreConfig(Config): self._data[ADDONS_CUSTOM_LIST].remove(repo) self.save() + + @property + def security_initialize(self): + """Return is security was initialize.""" + return self._data[SECURITY_INITIALIZE] + + @security_initialize.setter + def security_initialize(self, value): + """Set is security initialize.""" + self._data[SECURITY_INITIALIZE] = value + self.save() + + @property + def security_totp(self): + """Return the TOTP key.""" + return self._data.get(SECURITY_TOTP) + + @security_totp.setter + def security_totp(self, value): + """Set the TOTP key.""" + self._data[SECURITY_TOTP] = value + self.save() + + @property + def security_password(self): + """Return the password key.""" + return self._data.get(SECURITY_PASSWORD) + + @security_password.setter + def security_password(self, value): + """Set the password key.""" + self._data[SECURITY_PASSWORD] = value + self.save() + + @property + def security_sessions(self): + """Return api sessions.""" + return {session: datetime.strptime(until, DATETIME_FORMAT) for + session, until in self._data[SECURITY_SESSIONS].items()} + + @security_sessions.setter + def security_sessions(self, value): + """Set the a new session.""" + session, valid = value + if valid is None: + self._data[SECURITY_SESSIONS].pop(session, None) + else: + self._data[SECURITY_SESSIONS].update( + {session: valid.strftime(DATETIME_FORMAT)} + ) + + self.save() diff --git a/hassio/const.py b/hassio/const.py index 5eb153a77..0997d2af6 100644 --- a/hassio/const.py +++ b/hassio/const.py @@ -18,6 +18,7 @@ RUN_UPDATE_INFO_TASKS = 28800 RUN_UPDATE_SUPERVISOR_TASKS = 29100 RUN_RELOAD_ADDONS_TASKS = 28800 RUN_WATCHDOG_HOMEASSISTANT = 15 +RUN_CLEANUP_API_SESSIONS = 900 RESTART_EXIT_CODE = 100 @@ -62,6 +63,10 @@ ATTR_REPOSITORY = 'repository' ATTR_REPOSITORIES = 'repositories' ATTR_URL = 'url' ATTR_MAINTAINER = 'maintainer' +ATTR_PASSWORD = 'password' +ATTR_TOTP = 'totp' +ATTR_INITIALIZE = 'initialize' +ATTR_SESSION = 'session' STARTUP_BEFORE = 'before' STARTUP_AFTER = 'after' diff --git a/hassio/core.py b/hassio/core.py index 8f2c59830..cbcb4cc46 100644 --- a/hassio/core.py +++ b/hassio/core.py @@ -11,12 +11,14 @@ from .api import RestAPI from .host_control import HostControl from .const import ( SOCKET_DOCKER, RUN_UPDATE_INFO_TASKS, RUN_RELOAD_ADDONS_TASKS, - RUN_UPDATE_SUPERVISOR_TASKS, RUN_WATCHDOG_HOMEASSISTANT, STARTUP_AFTER, - STARTUP_BEFORE) + RUN_UPDATE_SUPERVISOR_TASKS, RUN_WATCHDOG_HOMEASSISTANT, + RUN_CLEANUP_API_SESSIONS, STARTUP_AFTER, STARTUP_BEFORE) from .scheduler import Scheduler from .dock.homeassistant import DockerHomeAssistant from .dock.supervisor import DockerSupervisor -from .tasks import hassio_update, homeassistant_watchdog, homeassistant_setup +from .tasks import ( + hassio_update, homeassistant_watchdog, homeassistant_setup, + api_sessions_cleanup) from .tools import get_arch_from_image, get_local_ip _LOGGER = logging.getLogger(__name__) @@ -71,6 +73,12 @@ class HassIO(object): self.supervisor, self.addons, self.host_control) self.api.register_homeassistant(self.homeassistant) self.api.register_addons(self.addons) + self.api.register_security() + + # schedule api session cleanup + self.scheduler.register_task( + api_sessions_cleanup(self.config), RUN_CLEANUP_API_SESSIONS, + now=True) # schedule update info tasks self.scheduler.register_task( @@ -102,24 +110,26 @@ class HassIO(object): await self.api.start() _LOGGER.info("Start hassio api on %s", self.config.api_endpoint) - # HomeAssistant is already running / supervisor have only reboot - if await self.homeassistant.is_running(): - _LOGGER.info("HassIO reboot detected") - return + try: + # HomeAssistant is already running / supervisor have only reboot + if await self.homeassistant.is_running(): + _LOGGER.info("HassIO reboot detected") + return - # start addon mark as before - await self.addons.auto_boot(STARTUP_BEFORE) + # start addon mark as before + await self.addons.auto_boot(STARTUP_BEFORE) - # run HomeAssistant - await self.homeassistant.run() + # run HomeAssistant + await self.homeassistant.run() - # schedule homeassistant watchdog - self.scheduler.register_task( - homeassistant_watchdog(self.loop, self.homeassistant), - RUN_WATCHDOG_HOMEASSISTANT) + # start addon mark as after + await self.addons.auto_boot(STARTUP_AFTER) - # start addon mark as after - await self.addons.auto_boot(STARTUP_AFTER) + finally: + # schedule homeassistant watchdog + self.scheduler.register_task( + homeassistant_watchdog(self.loop, self.homeassistant), + RUN_WATCHDOG_HOMEASSISTANT) async def stop(self, exit_code=0): """Stop a running orchestration.""" diff --git a/hassio/tasks.py b/hassio/tasks.py index bc55eae99..32e4c8a6d 100644 --- a/hassio/tasks.py +++ b/hassio/tasks.py @@ -1,10 +1,23 @@ """Multible tasks.""" import asyncio +from datetime import datetime import logging _LOGGER = logging.getLogger(__name__) +def api_sessions_cleanup(config): + """Create scheduler task for cleanup api sessions.""" + async def _api_sessions_cleanup(): + """Cleanup old api sessions.""" + now = datetime.now() + for session, until_valid in config.security_sessions.items(): + if now >= until_valid: + config.security_sessions = (session, None) + + return _api_sessions_cleanup + + def hassio_update(config, supervisor): """Create scheduler task for update of supervisor hassio.""" async def _hassio_update(): diff --git a/setup.py b/setup.py index 31f333ffe..14374be3a 100644 --- a/setup.py +++ b/setup.py @@ -38,5 +38,7 @@ setup( 'colorlog', 'voluptuous', 'gitpython', + 'pyotp', + 'pyqrcode' ] ) From f4cb16ad0951a6270a570e473f8665f3551d8212 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 12 May 2017 01:37:03 +0200 Subject: [PATCH 6/7] WIP: Add support for build docker on local repository (#42) * Add support for build docker on local repository * Add docker support * finish build * change api * add dockerfile generator * finish it * fix lint * fix path * fix path * fix copy * add debug stuff * fix docker template * cleanups * fix addons * change handling * fix lint / cleanup code * fix lint * tag --- hassio/addons/data.py | 33 ++++++++++++--- hassio/bootstrap.py | 5 +++ hassio/config.py | 12 ++++-- hassio/const.py | 1 + hassio/dock/addon.py | 81 ++++++++++++++++++++++++++++++++---- hassio/dock/homeassistant.py | 4 +- hassio/dock/util.py | 32 ++++++++++++++ 7 files changed, 149 insertions(+), 19 deletions(-) create mode 100644 hassio/dock/util.py diff --git a/hassio/addons/data.py b/hassio/addons/data.py index 11589831e..4627434b2 100644 --- a/hassio/addons/data.py +++ b/hassio/addons/data.py @@ -14,7 +14,7 @@ from ..const import ( FILE_HASSIO_ADDONS, ATTR_NAME, ATTR_VERSION, ATTR_SLUG, ATTR_DESCRIPTON, ATTR_STARTUP, ATTR_BOOT, ATTR_MAP, ATTR_OPTIONS, ATTR_PORTS, BOOT_AUTO, DOCKER_REPO, ATTR_SCHEMA, ATTR_IMAGE, MAP_CONFIG, MAP_SSL, MAP_ADDONS, - MAP_BACKUP, ATTR_REPOSITORY, ATTR_URL, ATTR_ARCH) + MAP_BACKUP, ATTR_REPOSITORY, ATTR_URL, ATTR_ARCH, ATTR_LOCATON) from ..config import Config from ..tools import read_json_file, write_json_file @@ -109,6 +109,7 @@ class AddonsData(Config): # store addon_config[ATTR_REPOSITORY] = repository + addon_config[ATTR_LOCATON] = str(addon.parent) self._addons_cache[addon_slug] = addon_config except OSError: @@ -303,13 +304,31 @@ class AddonsData(Config): def get_image(self, addon): """Return image name of addon.""" addon_data = self._system_data.get( - addon, self._addons_cache.get(addon)) + addon, self._addons_cache.get(addon) + ) - if ATTR_IMAGE not in addon_data: + # core repository + if addon_data[ATTR_REPOSITORY] == REPOSITORY_CORE: return "{}/{}-addon-{}".format( DOCKER_REPO, self.arch, addon_data[ATTR_SLUG]) - return addon_data[ATTR_IMAGE].format(arch=self.arch) + # Repository with dockerhub images + if ATTR_IMAGE in addon_data: + return addon_data[ATTR_IMAGE].format(arch=self.arch) + + # Local build addon + if addon_data[ATTR_REPOSITORY] == REPOSITORY_LOCAL: + return "local/{}-addon-{}".format(self.arch, addon_data[ATTR_SLUG]) + + _LOGGER.error("No image for %s", addon) + + def need_build(self, addon): + """Return True if this addon need a local build.""" + addon_data = self._system_data.get( + addon, self._addons_cache.get(addon) + ) + return addon_data[ATTR_REPOSITORY] == REPOSITORY_LOCAL \ + and not addon_data.get(ATTR_IMAGE) def map_config(self, addon): """Return True if config map is needed.""" @@ -333,12 +352,16 @@ class AddonsData(Config): def path_extern_data(self, addon): """Return addon data path external for docker.""" - return str(PurePath(self.config.path_extern_addons_data, addon)) + return PurePath(self.config.path_extern_addons_data, addon) def path_addon_options(self, addon): """Return path to addons options.""" return Path(self.path_data(addon), "options.json") + def path_addon_location(self, addon): + """Return path to this addon.""" + return Path(self._addons_cache[addon][ATTR_LOCATON]) + def write_addon_options(self, addon): """Return True if addon options is written to data.""" schema = self.get_schema(addon) diff --git a/hassio/bootstrap.py b/hassio/bootstrap.py index b55b63f59..89a37cdcf 100644 --- a/hassio/bootstrap.py +++ b/hassio/bootstrap.py @@ -42,6 +42,11 @@ def initialize_system_data(websession): config.path_addons_git) config.path_addons_git.mkdir(parents=True) + if not config.path_addons_build.is_dir(): + _LOGGER.info("Create Home-Assistant addon build folder %s", + config.path_addons_build) + config.path_addons_build.mkdir(parents=True) + # homeassistant backup folder if not config.path_backup.is_dir(): _LOGGER.info("Create Home-Assistant backup folder %s", diff --git a/hassio/config.py b/hassio/config.py index 363325e4e..fad13e98a 100644 --- a/hassio/config.py +++ b/hassio/config.py @@ -27,6 +27,7 @@ ADDONS_CORE = PurePath("addons/core") ADDONS_LOCAL = PurePath("addons/local") ADDONS_GIT = PurePath("addons/git") ADDONS_DATA = PurePath("addons/data") +ADDONS_BUILD = PurePath("addons/build") ADDONS_CUSTOM_LIST = 'addons_custom_list' BACKUP_DATA = PurePath("backup") @@ -205,7 +206,7 @@ class CoreConfig(Config): @property def path_extern_addons_local(self): """Return path for customs addons.""" - return str(PurePath(self.path_extern_hassio, ADDONS_LOCAL)) + return PurePath(self.path_extern_hassio, ADDONS_LOCAL) @property def path_addons_data(self): @@ -215,7 +216,12 @@ class CoreConfig(Config): @property def path_extern_addons_data(self): """Return root addon data folder extern for docker.""" - return str(PurePath(self.path_extern_hassio, ADDONS_DATA)) + return PurePath(self.path_extern_hassio, ADDONS_DATA) + + @property + def path_addons_build(self): + """Return root addon build folder.""" + return Path(HASSIO_SHARE, ADDONS_BUILD) @property def path_backup(self): @@ -225,7 +231,7 @@ class CoreConfig(Config): @property def path_extern_backup(self): """Return root backup data folder extern for docker.""" - return str(PurePath(self.path_extern_hassio, BACKUP_DATA)) + return PurePath(self.path_extern_hassio, BACKUP_DATA) @property def addons_repositories(self): diff --git a/hassio/const.py b/hassio/const.py index 0997d2af6..d7df6ffc4 100644 --- a/hassio/const.py +++ b/hassio/const.py @@ -67,6 +67,7 @@ ATTR_PASSWORD = 'password' ATTR_TOTP = 'totp' ATTR_INITIALIZE = 'initialize' ATTR_SESSION = 'session' +ATTR_LOCATON = 'location' STARTUP_BEFORE = 'before' STARTUP_AFTER = 'after' diff --git a/hassio/dock/addon.py b/hassio/dock/addon.py index 1c3399bc6..88ace43d7 100644 --- a/hassio/dock/addon.py +++ b/hassio/dock/addon.py @@ -1,15 +1,16 @@ """Init file for HassIO addon docker object.""" import logging +from pathlib import Path +import shutil import docker from . import DockerBase +from .util import dockerfile_template from ..tools import get_version_from_env _LOGGER = logging.getLogger(__name__) -HASS_DOCKER_NAME = 'homeassistant' - class DockerAddon(DockerBase): """Docker hassio wrapper for HomeAssistant.""" @@ -30,31 +31,31 @@ class DockerAddon(DockerBase): def volumes(self): """Generate volumes for mappings.""" volumes = { - self.addons_data.path_extern_data(self.addon): { + str(self.addons_data.path_extern_data(self.addon)): { 'bind': '/data', 'mode': 'rw' }} if self.addons_data.map_config(self.addon): volumes.update({ - self.config.path_extern_config: { + str(self.config.path_extern_config): { 'bind': '/config', 'mode': 'rw' }}) if self.addons_data.map_ssl(self.addon): volumes.update({ - self.config.path_extern_ssl: { + str(self.config.path_extern_ssl): { 'bind': '/ssl', 'mode': 'rw' }}) if self.addons_data.map_addons(self.addon): volumes.update({ - self.config.path_extern_addons_local: { + str(self.config.path_extern_addons_local): { 'bind': '/addons', 'mode': 'rw' }}) if self.addons_data.map_backup(self.addon): volumes.update({ - self.config.path_extern_backup: { + str(self.config.path_extern_backup): { 'bind': '/backup', 'mode': 'rw' }}) @@ -102,7 +103,69 @@ class DockerAddon(DockerBase): self.container = self.dock.containers.get(self.docker_name) self.version = get_version_from_env( self.container.attrs['Config']['Env']) - _LOGGER.info("Attach to image %s with version %s", - self.image, self.version) + + _LOGGER.info( + "Attach to image %s with version %s", self.image, self.version) except (docker.errors.DockerException, KeyError): pass + + def _install(self, tag): + """Pull docker image or build it. + + Need run inside executor. + """ + if self.addons_data.need_build(self.addon): + return self._build(tag) + + return super()._install(tag) + + async def build(self, tag): + """Build a docker container.""" + if self._lock.locked(): + _LOGGER.error("Can't excute build while a task is in progress") + return False + + async with self._lock: + return await self.loop.run_in_executor(None, self._build, tag) + + def _build(self, tag): + """Build a docker container. + + Need run inside executor. + """ + build_dir = Path(self.config.path_addons_build, self.addon) + try: + # prepare temporary addon build folder + try: + source = self.addons_data.path_addon_location(self.addon) + shutil.copytree(str(source), str(build_dir)) + except shutil.Error as err: + _LOGGER.error("Can't copy %s to temporary build folder -> %s", + source, build_dir) + return False + + # prepare Dockerfile + try: + dockerfile_template( + Path(build_dir, 'Dockerfile'), self.addons_data.arch, tag) + except OSError as err: + _LOGGER.error("Can't prepare dockerfile -> %s", err) + + # run docker build + try: + build_tag = "{}:{}".format(self.image, tag) + + _LOGGER.info("Start build %s on %s", build_tag, build_dir) + image = self.dock.images.build( + path=str(build_dir), tag=build_tag, pull=True) + + _LOGGER.info("Build %s done", build_tag) + image.tag(self.image, tag='latest') + except (docker.errors.DockerException, TypeError) as err: + _LOGGER.error("Can't build %s -> %s", build_tag, err) + return False + + return True + + finally: + shutil.rmtree(str(build_dir), ignore_errors=True) diff --git a/hassio/dock/homeassistant.py b/hassio/dock/homeassistant.py index 0f314bb2d..f33ea5124 100644 --- a/hassio/dock/homeassistant.py +++ b/hassio/dock/homeassistant.py @@ -45,9 +45,9 @@ class DockerHomeAssistant(DockerBase): 'HASSIO': self.config.api_endpoint, }, volumes={ - self.config.path_extern_config: + str(self.config.path_extern_config): {'bind': '/config', 'mode': 'rw'}, - self.config.path_extern_ssl: + str(self.config.path_extern_ssl): {'bind': '/ssl', 'mode': 'rw'}, }) diff --git a/hassio/dock/util.py b/hassio/dock/util.py new file mode 100644 index 000000000..b851e9b6f --- /dev/null +++ b/hassio/dock/util.py @@ -0,0 +1,32 @@ +"""HassIO docker utilitys.""" +import re + +from ..const import ARCH_AARCH64, ARCH_ARMHF, ARCH_I386, ARCH_AMD64 + + +RESIN_BASE_IMAGE = { + ARCH_ARMHF: "resin/armhf-alpine:3.5", + ARCH_AARCH64: "resin/aarch64-alpine:3.5", + ARCH_I386: "resin/i386-alpine:3.5", + ARCH_AMD64: "resin/amd64-alpine:3.5", +} + +TMPL_VERSION = re.compile(r"%%VERSION%%") +TMPL_IMAGE = re.compile(r"%%BASE_IMAGE%%") + + +def dockerfile_template(dockerfile, arch, version): + """Prepare a Hass.IO dockerfile.""" + buff = [] + resin_image = RESIN_BASE_IMAGE[arch] + + # read docker + with dockerfile.open('r') as dock_input: + for line in dock_input: + line = TMPL_VERSION.sub(version, line) + line = TMPL_IMAGE.sub(resin_image, line) + buff.append(line) + + # write docker + with dockerfile.open('w') as dock_output: + dock_output.writelines(buff) From eb3cdbfeb9dbfc1b96f55248e3c1bbc9ddfc16fb Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 12 May 2017 01:37:42 +0200 Subject: [PATCH 7/7] update Hass.IO 0.24 --- version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.json b/version.json index 13299eb24..fbbe3e5d6 100644 --- a/version.json +++ b/version.json @@ -1,5 +1,5 @@ { - "hassio": "0.23", + "hassio": "0.24", "homeassistant": "0.44.2", "resinos": "0.7", "resinhup": "0.1",