From eefcd344d7f6f71fe435b2e759e7048c7b1eafe1 Mon Sep 17 00:00:00 2001 From: Dominik Perpeet Date: Mon, 10 Apr 2017 17:13:01 +0200 Subject: [PATCH 01/16] Fix follow up issues resulting to connections between multiple hosts Upstream commits: b6881f5 ws: Disconnect correct signal 8e4541c ws: Auth commands to set credentials that can be used for future challenges e5d7ee8 ssh: Include "host-key" in "authorize" prompt about keys 1331c16 ssh: Use ssh_get_server_publickey when available b7f192e common: Allow parsing the conversation out 30c7f6e common: Fix errno check in cockpit_frame_read a190dea ssh: cockpit-ssh now requires exactly 1 argument 348a307 ssh: Enforce not connecting to unknown hosts even as secondary machines 569c027 bridge: Add a --rules options to bridges to output the rules f313634 bridge: Ensure our host handling bridge has priority Closes #6405 Signed-off-by: Dominik Perpeet --- config.h.in | 3 + configure | 47 ++++++++++++++ configure.ac | 4 ++ dist/base1/cockpit.js | Bin 145351 -> 145435 bytes dist/base1/cockpit.min.js | Bin 109718 -> 109777 bytes dist/base1/cockpit.min.js.map | Bin 229101 -> 229228 bytes dist/dashboard/Makefile.deps | Bin 4116 -> 4116 bytes dist/dashboard/dashboard.min.js | Bin 205151 -> 205431 bytes dist/dashboard/dashboard.min.js.map | Bin 907668 -> 909059 bytes dist/docker/Makefile.deps | Bin 6353 -> 6353 bytes dist/docker/console.min.js.map | Bin 477072 -> 477072 bytes dist/docker/docker.min.js.map | Bin 2824336 -> 2824336 bytes dist/docker/test-docker.min.js.map | Bin 1030192 -> 1030192 bytes dist/kdump/Makefile.deps | Bin 4350 -> 4350 bytes dist/kdump/kdump.min.js.map | Bin 394008 -> 394008 bytes dist/kdump/test-config-client.min.js.map | Bin 409492 -> 409492 bytes dist/kubernetes/Makefile.deps | Bin 30370 -> 30370 bytes dist/kubernetes/kubernetes.min.js.map | Bin 7290033 -> 7290033 bytes dist/kubernetes/registry.min.js.map | Bin 5134480 -> 5134480 bytes dist/kubernetes/scripts/test-connection.min.js.map | Bin 3391363 -> 3391363 bytes dist/kubernetes/scripts/test-images.min.js.map | Bin 4617360 -> 4617360 bytes .../kubernetes/scripts/test-kube-client.min.js.map | Bin 4286056 -> 4286056 bytes dist/kubernetes/scripts/test-nodes.min.js.map | Bin 5613581 -> 5613581 bytes dist/kubernetes/scripts/test-projects.min.js.map | Bin 3575678 -> 3575678 bytes dist/kubernetes/scripts/test-tags.min.js.map | Bin 2637095 -> 2637095 bytes dist/kubernetes/scripts/test-utils.min.js.map | Bin 2640062 -> 2640062 bytes dist/kubernetes/scripts/test-volumes.min.js.map | Bin 4646505 -> 4646505 bytes dist/machines/Makefile.deps | Bin 5132 -> 5132 bytes dist/machines/machines.min.js.map | Bin 2466714 -> 2466714 bytes dist/machines/test-machines.min.js.map | Bin 401627 -> 401627 bytes dist/networkmanager/Makefile.deps | Bin 4668 -> 4668 bytes dist/networkmanager/network.min.js.map | Bin 1081328 -> 1081328 bytes dist/networkmanager/test-utils.min.js.map | Bin 419740 -> 419740 bytes dist/ostree/Makefile.deps | Bin 3739 -> 3739 bytes dist/ostree/ostree.min.js.map | Bin 4364584 -> 4364584 bytes dist/ostree/test-utils.min.js.map | Bin 2634944 -> 2634944 bytes dist/pcp/Makefile.deps | Bin 897 -> 897 bytes dist/playground/Makefile.deps | Bin 9946 -> 9946 bytes dist/playground/jquery-patterns.min.js.map | Bin 57028 -> 57028 bytes dist/playground/metrics.min.js.map | Bin 6969 -> 6969 bytes dist/playground/plot.min.js.map | Bin 483471 -> 483471 bytes dist/playground/react-patterns.min.js.map | Bin 345424 -> 345424 bytes dist/playground/service.min.js.map | Bin 34889 -> 34889 bytes dist/playground/speed.min.js.map | Bin 15729 -> 15729 bytes dist/playground/test.min.js.map | Bin 15321 -> 15321 bytes dist/playground/translate.min.js.map | Bin 2361146 -> 2361146 bytes dist/realmd/Makefile.deps | Bin 1548 -> 1548 bytes dist/selinux/Makefile.deps | Bin 3120 -> 3120 bytes dist/selinux/selinux.min.js.map | Bin 1341403 -> 1341403 bytes dist/shell/Makefile.deps | Bin 7721 -> 7721 bytes dist/shell/index-no-machines.min.js.map | Bin 410226 -> 410226 bytes dist/shell/index-stub.min.js | Bin 182935 -> 183259 bytes dist/shell/index-stub.min.js.map | Bin 764977 -> 766478 bytes dist/shell/index.min.js | Bin 183781 -> 184061 bytes dist/shell/index.min.js.map | Bin 770650 -> 772049 bytes dist/sosreport/Makefile.deps | Bin 2600 -> 2600 bytes dist/sosreport/sosreport.min.js.map | Bin 21422 -> 21422 bytes dist/ssh/Makefile.deps | Bin 897 -> 897 bytes dist/storaged/Makefile.deps | Bin 7115 -> 7115 bytes dist/storaged/storage.min.js.map | Bin 1425486 -> 1425486 bytes dist/storaged/test-util.min.js.map | Bin 528295 -> 528295 bytes dist/subscriptions/Makefile.deps | Bin 3625 -> 3625 bytes dist/subscriptions/subscriptions.min.js.map | Bin 364241 -> 364241 bytes dist/systemd/Makefile.deps | Bin 5599 -> 5599 bytes dist/systemd/logs.min.js.map | Bin 137649 -> 137649 bytes dist/systemd/services.min.js.map | Bin 1446165 -> 1446165 bytes dist/systemd/system.min.js.map | Bin 957770 -> 957770 bytes dist/systemd/terminal.min.js.map | Bin 613676 -> 613676 bytes dist/tuned/Makefile.deps | Bin 2085 -> 2085 bytes dist/tuned/performance.min.js.map | Bin 283823 -> 283823 bytes dist/users/Makefile.deps | Bin 2488 -> 2488 bytes dist/users/users.min.js.map | Bin 391039 -> 391039 bytes pkg/dashboard/manifest.json.in | 2 +- pkg/lib/machine-dialogs.js | 21 ++++-- pkg/lib/machines.js | 1 + pkg/shell/index-stub.js | 1 + pkg/ssh/manifest.json.in | 10 +-- src/base1/cockpit.js | 2 + src/bridge/bridge.c | 66 +++++++++++++++---- src/bridge/cockpitrouter.c | 23 +++---- src/bridge/cockpitrouter.h | 2 + src/bridge/stub.c | 48 ++++++++++++-- src/common/cockpitauthorize.c | 5 +- src/common/cockpitauthorize.h | 3 +- src/common/cockpitframe.c | 2 +- src/common/test-authorize.c | 2 +- src/ssh/cockpitsshoptions.c | 2 +- src/ssh/cockpitsshrelay.c | 72 ++++++++++++++------- src/ssh/ssh.c | 2 +- src/ssh/test-sshoptions.c | 2 +- src/ws/cockpitauth.c | 20 +++++- src/ws/mock-auth-command.c | 19 +++++- src/ws/session.c | 3 +- src/ws/test-auth.c | 8 +++ test/common/testlib.py | 1 + 95 files changed, 296 insertions(+), 75 deletions(-) diff --git a/config.h.in b/config.h.in index 2ef188d..e1e001b 100644 --- a/config.h.in +++ b/config.h.in @@ -39,6 +39,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_PCP_PMDA_H +/* Whether ssh_get_server_publickey is available */ +#undef HAVE_SSH_GET_SERVER_PUBLICKEY + /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H diff --git a/configure b/configure index f4b68e3..e77d53b 100755 --- a/configure +++ b/configure @@ -6821,6 +6821,53 @@ cat >>confdefs.h <<_ACEOF _ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ssh_get_server_publickey in -lssh" >&5 +$as_echo_n "checking for ssh_get_server_publickey in -lssh... " >&6; } +if ${ac_cv_lib_ssh_ssh_get_server_publickey+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lssh $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char ssh_get_server_publickey (); +int +main () +{ +return ssh_get_server_publickey (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ssh_ssh_get_server_publickey=yes +else + ac_cv_lib_ssh_ssh_get_server_publickey=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssh_ssh_get_server_publickey" >&5 +$as_echo "$ac_cv_lib_ssh_ssh_get_server_publickey" >&6; } +if test "x$ac_cv_lib_ssh_ssh_get_server_publickey" = xyes; then : + + +cat >>confdefs.h <<_ACEOF +#define HAVE_SSH_GET_SERVER_PUBLICKEY 1 +_ACEOF + + +fi + + COCKPIT_SSH_SESSION_CFLAGS="$COCKPIT_CFLAGS $LIBSSH_CFLAGS $KRB5_CFLAGS" COCKPIT_SSH_SESSION_LIBS="$COCKPIT_LIBS $LIBSSH_LIBS $KRB5_LIBS" diff --git a/configure.ac b/configure.ac index b5ac5d3..9f5fa04 100644 --- a/configure.ac +++ b/configure.ac @@ -128,6 +128,10 @@ if test "$enable_ssh" != "no"; then AC_DEFINE_UNQUOTED(WITH_COCKPIT_SSH, 1, [Build cockpit-ssh and include libssh dependency]) + AC_CHECK_LIB(ssh, ssh_get_server_publickey, [ + AC_DEFINE_UNQUOTED(HAVE_SSH_GET_SERVER_PUBLICKEY, 1, Whether ssh_get_server_publickey is available) + ]) + COCKPIT_SSH_SESSION_CFLAGS="$COCKPIT_CFLAGS $LIBSSH_CFLAGS $KRB5_CFLAGS" COCKPIT_SSH_SESSION_LIBS="$COCKPIT_LIBS $LIBSSH_LIBS $KRB5_LIBS" AC_SUBST(COCKPIT_SSH_SESSION_LIBS) diff --git a/dist/base1/cockpit.js b/dist/base1/cockpit.js index 24f5cc11543d83310fc837f31e09111f0a138643..453ed89e1cf11eb17514cbcca47dd0e5d833755f 100644 GIT binary patch delta 35 rcmX^9o@4e0j)pCar(f`t=4I#Qm*?qbmC7ETSly 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 delta 80 zcmbQxFFOHK|_)3?fFvi3E`(Qbd}_5LqHea82xmbv$Sc$dR#9_R(uU}yBPN@I@ diff --git a/dist/docker/test-docker.min.js.map b/dist/docker/test-docker.min.js.map index b2a47018c3d314d26b19cc1218b62cb3b0782869..85969291b1cd9a6bef05eec26b84fe3c633f5a60 100644 GIT binary patch delta 124 zcmdn+!EVC`y9u$9X_lsjmWd`NW{D}uCW(fY$tlLE_GYPR<`dt`PM4d=$=A5Bbs=Nx zLZ;S*%&iMqS{JgmE@W$6$lkh;W9vfB9VH^z3~0|SQ9w6ogV!rLUrTmAT E04S~>md2Kb<|b(-_9iLDrW4=GPM4d=$=A5Bbs=Nx zLZ;S*%&iMqS{JgmE@W$6$lkh;W9vfB9VH^z3~0|SQ9w6ogV!rLUrTmAT E01R?0tpET3 diff --git a/dist/kdump/Makefile.deps b/dist/kdump/Makefile.deps index 79339b443c9e6a300b22f4cf3150a1eaf057b0e1..136b36230a7bf4f9160dfca22339b2639f033ea6 100644 GIT binary patch delta 49 zcmeyT_)l?yu3AV&se)H&o`R8)f{}rtxq_jAm5I5Pp^<{SZ-}meseyrlhHG%h#^BWg E0CD3Dz5oCK delta 49 zcmeyT_)l?yu9|Oto`PdRk%FOtf{}rtxq_jgm4S(siGhN@m198&-Q delta 81 zcmbQyCNZN;VnUdRWlCzAp-Gxa5)h=BrWhGo7@AHlWRh-dZEa<2ZDrcp%6w}FR#olA PJDGu)Wqa{X)}@{RcqJUE diff --git a/dist/kdump/test-config-client.min.js.map b/dist/kdump/test-config-client.min.js.map index 4e927330d020fe4625498d246c797502a83728fc..b9160808a2257a2bed87bbafa3e57357ccb1890c 100644 GIT binary patch delta 92 zcmbR8Ut-FCi3!P)DQT%@X$A&~rj{lqX%>lQhKVWW_9mv5rj0eNHH@t_Oj~Q1yHAQ> dQ#SpADVx~z)KAPd?YXCzftY1`?kQIFQUKd|AeI0C delta 92 zcmbR8Ut-FCi3!P)mMN)eh9+qyNkEWhnqp*VVQ6Y^V3wHHSkqd=*jmH1wT8L-qzE=; c(=V8^iA_)a#B9@^dx{x|S+?h%VpT5%00liELI3~& diff --git a/dist/kubernetes/Makefile.deps b/dist/kubernetes/Makefile.deps index ee6250f99cd87e6c1d858a5c31a93ef97200ec1a..b0d8916cd3ab6103e63a384575ad30c05ebfdce5 100644 GIT binary patch delta 51 zcmZ4VmT}Qr#tBAhAsM9#UZr^oMn(!o28QMeh6Yw9=2nJA3hurkx(22O1_~Ok!66$X GyvhKd=nk&{ delta 51 zcmZ4VmT}Qr#tBAhzWI3yjs-;uh6V~o28QMehK5!KCRQc}3hurk+6F+Npb;A4yfMP7 F3;>)!4vzo; diff --git a/dist/kubernetes/kubernetes.min.js.map b/dist/kubernetes/kubernetes.min.js.map index 2bc50d3285e7e6780e4885860869cbcc3f9f267b..ad9672e16ca8b3144c5b2e0d7b59cf21b013e7f3 100644 GIT binary patch delta 470 zcmZwCIZ_h<0EOX!pka|66xlZgMIj-CeN|9Ekf4YN$`S%7+Z`z0*utbp&k0Duq~RWa z$q}qg!SD`1@g3kx|Gx>O?R>jxe=r)3?8Fm8y951^Xgm}OM?%Sq#^&TzZhoq%cq*7o z1Y1-8E@Q#eNky#a43Q&pML^_3R*TvUikQ6;LyQ}ImH zi07hK)QNi0AR0xJXcjG^RkVqA@j|>59imgb60b#3rm*G%4KD<3##(krXsz~AiMq)pj7dvDV=V;}6J&DxyJ+b3JFMf+?^ z7PDphVqa~=zS*jMw>A4=>$YJ(?U!xZmTlXP#ckITwrBfxV888;9omr{+es#ScbXZy E2gqgw5&!@I delta 471 zcmZwCIZ~4W0EXd#2tio{L>Ac>Wl{|aHx`eF zQ^{~k`roFU*37fRn_Qu}YJDaj;o3ZycYjgI& z<}Gd?ZNV08$(C)!R_&90wlDV8zS(zMvvu3BP1~}BC2iYw?1$~zp8d36_S^O|+3P=< F(HoDX1iSzM diff --git a/dist/kubernetes/registry.min.js.map b/dist/kubernetes/registry.min.js.map index 3034542f4e7deb19dddf687d74ce12d8fe4fef6c..04d3656dd8a5249ba8f439c2bcce9b37d82f3ce9 100644 GIT binary patch delta 365 zcmZwByDmck00!VFRjo^v<5G7;-Kx&%ae6t2*8Nhfk}eXhcnuNxW3V(aob?|~5`&0A zJb-jy@d#Fr;I|vT{i{E|1nPfI;}?0yvd^mLg<39aJ5|%PY_n8wYMHy3k?@P(<}8ekvT4-SBXU>qC*hrtnW6dVJ` z!3l5@On_71G&ln$!C7z)oCg=c#V4lT-i`mN{?~_h?N?sIN&oWGi}?2yE9(C|q=PqZ zBPC0cmSr);l8o50B93GwCwVD|E1s;%niQoZ>#`x6vL)NHBfGLE`*I*JT<*AS6E21^seS^v=_F^Cw% z14suJk6`r(e!Jn@zsBQBsPX44<=f7MY1x)<<_kv2FwOI#UvV7Ux=SR}LHWBDxgyvC zhQL;^4Ge?rU%+Sa>aWpEaQW%Qg8RA|4}KnU;TyM^ zl@-a!su*I*npk2>UJ6o_k~rduC+o5yWvNJ2Hf2k;Wk+^pPxj?N4y7hXa{TNzPfl-t E0eZldQ~&?~ diff --git a/dist/kubernetes/scripts/test-connection.min.js.map b/dist/kubernetes/scripts/test-connection.min.js.map index 723f07f7f3bbcabbe5d9d5f704d9743369be946f..6680b9b34b919e75ec2af8cb2e06805cd10d73dc 100644 GIT binary patch delta 251 zcmZwAOHRU200q!Ifg<=pq#`N^hysG*t4&2ltOaVEu>}*-+&F4NH0d_(2-yH*mctb9 z0vMd}iFO+k$zoRdd=ET-GW{5Z!#6*eTI>0CJPN|!FVmY7G~fZ40@Gjybigcl2>D%rh(Dt!3^sGi`yyz8XP^xxz;iGOUVteu4PJs7 zFbiIRIq(|Hg9We%mcTMt0juB*cnj9RJMbQ?|Iqncm;Z}*)~}zmm#eKK4Qa}QJW5O2 e(vhz8q%W>`@+1R!mKPbytN3DMv|DY1gL?u`t7b6( diff --git a/dist/kubernetes/scripts/test-images.min.js.map b/dist/kubernetes/scripts/test-images.min.js.map index 28ca712a5fad4973be165130b0329c3f008e33f2..aef166cbcd47f514aa94ad838e6c3f728c511e3e 100644 GIT binary patch delta 322 zcmZwBIZi?W07cONiqm(-0q0r7>BE=N0R^RC7lJXdcLOHA*pgTnD_3E-o$Il52R?g? z)1U75d%XMSA$?yi&?bOcf+%BwUmv&`! OYuL5j^nzCNIr|F=*>76_ delta 322 zcmZwBIZgrr0EOWQircv3g8MGw#yG<=xS*gETmxfb?*&YJu_duER-VG}cb>=68~E%k zzW(cezo)u?9&(*Hxeuc_>V&0ov04nnyGo~?Bysfm(^q)=Xyk(@M4w2BwCEQDA|nRH zkQf#tVpIfTOpJ>OF)60Rw3rcDF)QZ8yjT!9u_%_rvRDzTVoj`z4Y4V<#J1QGyJGK? ze65xJuh;u}Y-Z9gK|62zR}m>5xk4yofGIb#J@ zKoyR!0D~|8df!U)?CBwQUyX|4ZT&88RLWsg4}xMC)Z(a7dj2i6U(>0~Bce|vM86mi zgCZ%0L`n>c5iu&pL|TlC2{9=$VoFSlte6qAVouD9oLCTxVo5BE6|pMT#JboJn_}yo z{8uykU#flmQoiYaB%`-Pv(w7kw(Z!i?b*H+?7$A~$c`xN Oc43!R>vmdKpFe-)rG*6m delta 305 zcmZwBxlsZE0EOWZ74bkt@xc4S3lG*^j`adtu!VID?ZMy;0f|NgCPq}CL+bcP&RBsJ zP=(_wz~IZj{$aPpKYwV;gnihS$vKC$mvtbSoUw@#EjB_Ng60<^Dob1jaSbX?L%|$?;`Oik z{S&L&$7}K>7p20d@^ikD&4f`o2vT8C$VZhlh#CwrhK~ZwGd0M|Nx{c4}vKZWnfG VS5~x=UE7V_+MV5h#Y+#rkAGA`cD(=q delta 357 zcmZwBH%ihS$vFqFcO8~wa>gb~^hSt7(EMUVWr@omu0h3VD3}9Ky#Cd` ze-btOcuiNM_$3IVuo~p@nPMggo(t7d97iFDI*}0dqCqr@CebWfM5|~M?V>|;iZ0PD zdPGw6iawDN{bE22iXo8}!(v2?iZL-RCd8ze64PQv%!)ZNFBZh2SQ5)(MXZW7u`V`5 zMg*T^-^!`~&hN=e) zo`L7!1sDb+;3aqkUV}H_EogvuU=)mjaqu2YfJra~K7eWP5qtto&;m1HcF)|WnfULq v{TTOOzjjtm@=}nZl%y;bsY*@i(hysk(vr4xq$`fN(i2bm;vaU_;CJx{qH|@} delta 270 zcmZwBJ5s_>00q!NL{K4$A_|EDg1;!3M_zzb6z;$+#Idn)EbS=n*ve4YkyS91cONva z!3{9n1z4Q^tmmuDTE5@h#Kx~Cv|(bRK`;u8c^M|-IJTkh&;GLQnUgO}ht7mx2HXO( z;5L{8cfdSY0C&MXa33s!CC~v6z(cSM9)ZVT1v~+(;3;?p*1$UGf*yDdUM$%7bSwWo we%_z#^H=IMq$w@Al(ux_O0MNbZsksVxt9m&N>3go5F>pF#Y(hHy}|Ft1~pt|Qvd(} diff --git a/dist/kubernetes/scripts/test-tags.min.js.map b/dist/kubernetes/scripts/test-tags.min.js.map index c10639bfbc5b702370ed928e68bc7deca24d8718..1932788e439337268addb5256cf6c705fe489852 100644 GIT binary patch delta 207 zcmZw9ITFDD00q#o#lG*mSlf^ZQaOvnFixQTia%OM&^dw8r7+_bPNMP;pm^=Oe{Z3? zTo29t+L_y1Z|C}}rR{i@HMgye>-dW^h!7DbB1Dvk5e5+_5=4?n5osbrWQiP+CkjN7 zC=q3%LR259jbD|2|I_?TjL0Q;*Q72DX-Z4l(vhz8q%Q+8Whf&V%S5Kn;5|E@e)3vW Af&c&j delta 207 zcmZw9ITFDD00q#AeP1K?B?xUYi6xc8#4t{v{fa+YN6w%~13&T>OLy&h-gXsj!Z7epAPgc##EArvBvM40$Pif~N92hDQ6x%4nWzv| zqDIsSlW5#wO<(4}|6zZeRQ&vWThf%4w520m=}BJ(GL(_nGM0%<#gWxjQfAM3>5gfo$?7HSw{sAoB_C@!H5y|c3 z9M^&8Z+C}qzgqgi&UHQC-Gsq@0T2ceBjQAYND?U`O=O5Hkt6a%fhZCsqD)i>lc*9k s!XoM~*yoS+@4uQ~TN=_7M_SUBj&!9beHqA5MlzO(Ol9^qzw_ti2SJ}k-T(jq delta 201 zcmZw9xebB<00q$CeJhG6-nT6TJg6K7V;sW7{Nl$}M{od3V@EAp`3JCg?Ta5zBbNKw ziGuLt`GFsKo2|QdJ@2@S4q+Jh0AUa*B28q7ERiGfM1d$0C8A7Jh$>Md>O_Mui6+q^ rETa8}efe7d{+pTD(vhw>(v!XnWGEvU%S5I!lesKpDXWi}tY6n3@dZX& diff --git a/dist/kubernetes/scripts/test-volumes.min.js.map b/dist/kubernetes/scripts/test-volumes.min.js.map index 75a91ad2c2470c3c8b254528a82e696ff5f813a8..9b92c68d22e99edbcf4d937c9f545e329ff7bd3b 100644 GIT binary patch delta 337 zcmZwBJ5Is?00!V#Me76cfubUUZ!DrMwLlR?1U!H@5R8MHM{xM#YElyhW8&h##-L&S z55UR=985Tai~j)}zWp2aUyY$W-^cHYp5xv$Z~ayw?|Mz!c3ivSd##*h1=VCMNF^e{ zyJ5C7KW6xm;0S1dqu>}A0>{A#&;%#JDR3H`0mI-d7y;+Nd2j(-1f$>*xD3X?6>t?? z1LNR2m;g7xB$xs>!7Xqb+yQsNJ#hbv>EDm&f6?~Ccj>y q zz602D0Sgn(VBuV-r@kGHAN4{nU-d!Z?o+=^?=bvdjDf$up^)XXHKY&ssj zT6U-KW5@0Z4uKXp432=K;21a#+Ta8@2~L62U<{lAr46cBy zUISK E07_d7`~Uy| delta 49 zcmeCt=+T&9pyr#Or{Gvnq+n>EU}Ruuu3%_rWnf}uVxZve8=`Fh1PU6VA)r&%?>& zesQDVoTOoB)A(eMVPfMTx`J?s0#PJNM46}%RiZ{1qE0l3Ceb3=M2F}SJ)%#z#DEwQ kBVzo5cQF6{TW&m=$W&%BmxU~4CBCd>BU{9hA kBHAx_OY`r)#m1A4bfqVK8OTsZGM0%@X(lEHY39ZTh9=1d=0>LWi77_Oja98xjIC8nTdSDYY!$|$ Ss@-xMGZ3?Ex7^0MC<_2XRvLx? delta 80 zcmcb8P~!GMi3v#(X_m%D1{Ox9mWC;o$>yeJNy(}9=7uKbja98xjIC8nTdSDYY!$|$ Ss@-xMGZ3?Ex7^0MC<_2ZR2t&| diff --git a/dist/networkmanager/Makefile.deps b/dist/networkmanager/Makefile.deps index c0181b085813b62f5b00898e05371715d5b8d68e..7767a4975d9ad61c4b5c4b57dd76d3200bdf4df5 100644 GIT binary patch delta 49 zcmdm^vPWftnOaCjse)H&o`R8)f{}rtxq_jAm5I5Pp^<{SZ-}meseyrlhHG%h#+V0! E09;QEhyVZp delta 49 zcmdm^vPWftnVN5Yo`PdRk%FOtf{}rtxq_jgm4S(siGhNqW diff --git a/dist/networkmanager/network.min.js.map b/dist/networkmanager/network.min.js.map index 3e53f1ca47d445223b114153c0857c6ddcf247bc..3f13ded0078fa4d6a51dedd3bfd1aee93bcf1954 100644 GIT binary patch delta 128 zcmezH-|@qL#|eodspiQBW(MX41}RDACYFijW~nL0lk*uxC;sD~?lp;rw{cnPGRD?r zOs&h9TbHr4E@N$7#@4!wy>%JK)@7VI_ps`p-anZqsJ-GoClGT1F*gwN05LBR^KGxV I&tI_s0ADULk^lez delta 128 zcmezH-|@qL#|eodMwW?bMh1x%1_nuK2Il6*rb(uzlk*uxC;sD~?lp;rw{cnPGRD?r zOs&h9TbHr4E@N$7#@4!wy>%JK)@7VI_ps`p-anZqsJ-GoClGT1F*gwN05LBR^KGxV I&tI_s06_pUAOHXW diff --git a/dist/networkmanager/test-utils.min.js.map b/dist/networkmanager/test-utils.min.js.map index 3643de47faa4a8f76434a8f97d3e4c2189b98585..ab49fec99a2ef09ad8e658b0f146cc39a4a31d59 100644 GIT binary patch delta 94 zcmbPpUUJTP$q6ZvspiQBW(MX41}RDACYFijW~nL0_7l((^HB4LAFdNl((^HB4LAFdNwo?1vose)H&o`R8)f{}rtxq_jAm5I5Pp^<{SZ-}meseyrlhHG%h#t?Tt E07|e7i~s-t delta 49 zcmbO&J6m>wo|U delta 292 zcmZwBIZgs$0EXd+`+^(b#;@WAxHB+=Gq`&S8yk$bFfkTid_!fzC7>lSUeE6U7Ek{S zM!np?zMqRx+;~mnxZ8}gdcC?tHoNyyfw*wimYRY#rBgecPz`Z6kgmXn-Lw3`W2x7z5*A0!)G_Fb!tF zESLlHpa~YhB3J^;VCBi`?Op!&yv)zI6~69*s??+|mNcX(Eonyxhxc~qF delta 214 zcmZwAxe);Y00q!l_kFH)-&eZJt|8Kb0wfq>fd&MBg#6KfCX7U|Rp>z%egT3PKmYqM ze7UVFj%)AcuDhK$^Zj<=%{*r@T{@e?-8QUy(}`*0W5+hSbEaBzRiElEB6^Tf|r$VNm(jVm73J0Ax&vXTRPH}p7doPLm9nR I{`h$M0k!u}KmY&$ diff --git a/dist/pcp/Makefile.deps b/dist/pcp/Makefile.deps index e754c1f59510601cf9620bc9d0bcddb5f546dbbe..f77560cac2c32a2405bdec035d9e02acad43ac2c 100644 GIT binary patch delta 49 zcmZo&Abr{Gvnq+n>EU}Ruuu3%_rWnf}uVxZve8=`Fh1PU6VAR delta 49 zcmccRd&_r%k(zIQo`PdRk%FOtf{}rtxq_jgm4S(siGhNwAcskynaL28PjnW=F~s;NbaeX5y7>cm-6jlHeCjIF&)t-Z`! hds&VZiepo(q@y%lE|O8Ey{(7^h*`I{6|r%?0{|maAM5}C delta 96 zcmeA_DBFKfc0!b-p@orAvW2Ckfk|?bg`ruhxruqQy@j!v>BL!5jlHeCjIF&)t-Z`! hds&VZiepo(q@y%lE|O8Ey{(7^h*`I{6|r%?0|3k%9((`* diff --git a/dist/playground/react-patterns.min.js.map b/dist/playground/react-patterns.min.js.map index 18b07d67d162a9d15ff03ef4fa6b810e46abf448..7a92f9a09f1973099f5855265856490ed758f37e 100644 GIT binary patch delta 91 zcmcc6C3>MtbV7=xX>wAcskynaL28PjnW=F~s;NbaeX5y7YGZ9{En{mf)7Dz%%O2v` elqu;bO@G74C_DXVDvM7022bYg8$4MS{00DUe;&#J delta 91 zcmcc6C3>MtbV7=xp@orAvW2Ckfk|?bg`ruhxruqQy@j!vX=80`En{mf)7Dz%%O2v` elqu;bO@G74C_DXVDvM7022bYg8$4MS{00CWT^(8g diff --git a/dist/playground/service.min.js.map b/dist/playground/service.min.js.map index f5a486bed24cd8bf8fbc86bc3e5baffef8e1603f..aa70a0dd6426aa9ed0fc9c3cb5fa37632910e48e 100644 GIT binary patch delta 76 zcmX>(f$8J~rU|i9rpZZ(rsn3x2B|5AW~Rm|siqbw_NitTsag}~OK+US5h8+3#bk$2 Pk;x5G+?&sa)EEN*v2qxC delta 76 zcmX>(f$8J~rU|i9h89Lf$rhHD1}4c#7KUc2<|gLJ_7=uwrdku{OK+US5h8+3#bk$2 Pk;x5G+?&sa)EEN*aXl9b diff --git a/dist/playground/speed.min.js.map b/dist/playground/speed.min.js.map index 6c944d11bce32a65a840cb62ecc7ad54bea2970b..fc86f400f38006a2a213ab9a6523128d747bade9 100644 GIT binary patch delta 77 zcmexZ^|5L~w3KObQlhE3xv@cNilLdQaZ0MGMT&i@nMJDB#Cb9sC%)4X$EHF_M``i{ Q5t+%ZI_8^SYIg_%02y5x4FCWD delta 77 zcmexZ^|5L~w3MNRkx{aRrKN#Ma*~CiS*p2-d9uBQv6-pX#Cb9sC%)4X$EHF_M``i{ Q5t+%ZI_8^SYIg_%0MyACod5s; diff --git a/dist/playground/test.min.js.map b/dist/playground/test.min.js.map index 39eb1cb06a79b7eae5e5ba0c6935f4afbd503497..cbe50988377c7f5e45d7b03892a73f9353899413 100644 GIT binary patch delta 66 zcmcavezSZ+l$2?5QlhE3xv@cNilLdQaZ0MGMT&i@nMJDB#CftCCkknbU{kSqyQY#5 E0POx15C8xG delta 66 zcmcavezSZ+l$4=`kx{aRrKN#Ma*~CiS*p2-d9uBQv6-pX#CftCCkknbU{kSqyQY#5 E0JupLpa1{> diff --git a/dist/playground/translate.min.js.map b/dist/playground/translate.min.js.map index bb5f524d90cacc676a57d1a3242eb6e05675bdcc..360d5fccdcf74fdbaff4cc7d88b076d54f2681d5 100644 GIT binary patch delta 201 zcmZw9xebB<7zWTN-uHpvffu$&Gz7473M&gyVFVLfi!U}`j8;ryOc=u2IF0`R7O#ED z?Vd`+eW$y}!`}6MXAy-<&vnAcU4`q&d%U#^!4#MV6)*#4!5o+e3t$l}fn~4)R>2xr z2OD4$Y=P}3)zkcMZCYl$Ju61M@l@*?*sACVP3WR4dZI4|!Vp6-5@RtDQ(?XWd-nbO E02lN^j{pDw delta 203 zcmZw9xebB<7zWUI-!~p8Uf3cLM8L`^tSlrFM=-Iq_+sbb?i;0*D{TZ0E G@8<`?EkV8j diff --git a/dist/realmd/Makefile.deps b/dist/realmd/Makefile.deps index 20869213f58ce08bb34aafb9404fb7a1485cf586..b733cf20404aca30aea87c69a82bf297740725a3 100644 GIT binary patch delta 49 zcmeC->EW56rxub?s^C?cr(k5HU}Ruuu3%_jWnyk+Xr$oo8=`AqYG9zC;TjyWF=PiT E06(h?v;Y7A delta 49 zcmeC->EW56r{EU}Ruuu3%_rWnf}uVxZve8=`Fh1PU6VAYUM<-~=OjZ<2uFt$!%+B$_< m_KFBLmD2;RGK)+PFlFSPUb=xrr(NJGGZ3?E7r4rrlnVfLJs_3< delta 99 zcmey=BKfIBazc`XxrMQ5N}8p)v8ADA^(*v$Di%btNW#pb-x`9QfUEnG+5VLF-xXPN83jjFwAG81f diff --git a/dist/shell/index-stub.min.js b/dist/shell/index-stub.min.js index bc9f85b323e42554f2551254fd87899a701bc43f..d5b45223cb633267f3885aa40cb7f6dc733b8c86 100644 GIT binary patch delta 387 zcmbO}mHYN|?hWhoCo6i0PZp45kt~f?D$UEz%P-H<&B!kJky4n~&Eam$R<_;nPLfu>d0>L{cD>5|EXT*8|d zpRs4uMKMxI!4@c~pr)pvk*rsoT3no&p9gY8K~ZK|Vo9nJ(5b?coLMALG-an&0^O*P z15`Mff3Fl5&?-&6w8YFDjmeF1N_r)F1x5KuIjOk{inc(@?G;k>ic<4ZQj6kKi;D7# zG)goTtQ0hgK&}G%W%349(aClRf|F~{Z4y+#@UrIlZq4ccPcZQaDp{e1hSKEIKV>!_ i{Nc|y{lf_+>1NJf+c|$RYMckF7C=|MUGXGS86yCteTP;6 delta 175 zcmV;g08szimkXDb3$U&)lR=dflaNLTv*RzCbCbKH5woSE&H|Tli2)n4r=~I{lNb>W zm!Ql61he|gKmh@4lOM|-1ukY`X>5}XDkCm#E^u;hVr*q?AR#>GOevGl d`VF(U`A-3ZDEqf4`vD=(lZg5fw};9CQ~?$$M;QPB diff --git a/dist/shell/index-stub.min.js.map b/dist/shell/index-stub.min.js.map index 5846b7623b906c74e8952966adee91a8ea062bae..eeaac631e899933e0a02127efeb669769bc06eba 100644 GIT binary patch delta 43563 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 delta 155 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 delta 42022 zcmcJ&33!}WbvOQ8IU$mrcuBm+Yn(WCM)B;M6_UI&8q2aQOY$y5LS$Q(W=12;NTY2^ z5m0EM1p?mymzI{bYy|=#rG`RD;45waAJEX9vW6|}Bv7^j3E%H`&V8kk>;Qef=l?v3 zU%mIe_uO;Oe$QRzpY9EQ_65P0pInk0f@>S^mZRE%c2TaS6(v5}tE4$tdrZ|m$Dsjqp? zy6dO?FXIRF3;#WKu&t|m<^k_HPi!@*`W=7TYDOOz`P25ROr?JRn?p^(!UJD@^Q$)Q zoi4U3)Zkek>apl>ZgKx@9mn(aH-32IszN?DoNep!DjBb>&l`K-A3l7uF@q2M;BVe# z>i_uQwg>+H!C=!hZ9^F^$02*(*ntODee50UP4@#I{LI_T#;g}!teYpZ?s08Lzj0{?_Zzl=!p)anGxrZtM4^>o5O&*VvV~=cUDj%#r`Gu|ZTfV$zeds(0;(1llEbF;3R_lFV-nTMx0zk3=-v?fd*I)YO zP0g_bfz!W- z9;uwrw`^-as~!|smCQWPvR<*Hbqs{_%8p!PN3=!$q(E=ONI`Yb-t(sFfA^Iiv?vZ| zgM;;lzPhnFaY{hO>yLbOb927Wy)=C-)fzjcWKDNS;bc~b)mkE?XcvIzyrEto(&5EB z>RTV*UVq`&64zkpBotVhMR))3wLfnOokB^@3!bY_e*J-!vj-b^Rjnr;EwxMxXM|kU z`nw*zYp&Ga79+-4l?wSgc(RSd=`~< z9(k=EI3XXEF$E<68$p-qFZ#xYmZBqNq5k%7+_Y*8ZxrbR(s`l&`EP(w1M)InfASmK zHWc-xaIy`I07FiSevQqqn^_P8P(@kj%9THf|9G2p?A+!&- z16lSrq+mzu@BC(K^VootmFr*n<~B21fAX6fmvd}rJeDcdcYLee)arxZ>TZTKvh7U$ zufKI@)%1Y|Vh2yvulx4m%qB99{TQ8bCXB4t;pMqa%xEBRX$7|k}(D@NW;TU zF3B-UuGkE4s^l!htYg6u(OpNUiccp>#S9hN^AfJ{dPPXkoD{kZof2_Rg2uGnp?0xN zsb2ZmI)GMru}JtxJDcp%p_WmfL$0uX)*GvT;PEY?5jC7r63Gz(FO``(FSf63(95MW zv*)B0-AWgX^%Xxjb#Ul{bTz8<7SoUrvCevxvobQFry8#Dvw|f&*D3UxIHTV=wvqaq zfAI44=(PW!2$K zgF4QVqWDf9oak)$P_2LAhaXy%Kznha0${5Cw*TtfnnIb_aVbk5lwrs85wBnKBN%g< zxvW>N-}fAB}=){c!R?aO$QXCOkhzVpX#tN-M+*VZ5V z@s%c2|M8E<=jcM)PI-gg6i1%*rVq-HhP$K@kY?eSjspSG?C z#n|4_kNj@yI2ozG_NSYg!iD-@{dAC;Pj5R@-}SS7*9@IOYp}fs(Nwj5_s?FqdG?S{ zp8R%-4Oj#@YF}}!S-WrkyEM!S`Q@LeHuS#>lw|#m|K2oL>=I49Y=tvKKj#G$DRk

f$&~mx>)4WyVY5`T7_JGDPj{ua0&MYv7e1Rj-)k*b!v*)c@nZH?Aq5 zl%|SbIhw-%`uWCHlggK=E=X$*T6*)(x0-N0_w(&@33NcSF>*qTV(Em4avG&#BJ9$%nn?6`m#1}^LbfP`A8g2s&1A}CF0rKD@e zST3YR>h9B0yH6D$aJ;_m7rUSV>0bm|^3J`C)JwmJdc`Bs*~k%4V_x@5TIje;B$B;S zEy1A2X|BerqxCQUVv`xF|Kb-Xn$ul^Xsmwvm%-&VpbeSLdZGF&ewm7o9u@$l!(!m# zT`CzQtO{(bOFpPksL@fwCDfn%<)+o?et|ly;|dJbZ+;@t96u~fNz@0QINCDhqNq~+ zA5BZm<5zCyzAGsGTd-zy0LCRdL$etcPI`ty2BwUu9N} zNLlZE+03u*S&K3;jy>ph{=-90tbL`~u_}F9$uHJ1aQan2vte%dOe1+{Cy9v4RwvNO zdg{xGFF6^)Q^-z{L1UK57&LILXzgG_?PFfHM~s5&N&<*p06F00&*TN$P9e#0z{#O& z+F^B!4&O=IuJR!r80VTmvmsp2AX`XR0GsBUj~&wCO7n!>XUvACbieH|W@{UKh+q!) z)g$QF`cXO8TU7FCq@^lPcS~kQvMN>f^~UU4In#(+!hYJAXKby)q6_g!!r7esJ>k?P zY!5b>tsBOiT&cVSAs1pC?6aH9`Ib1GiqP18tI6EGwdU#yM=k;P)2q!5mx2=;H)j8A znc22I=z|lMWgS!JSz|xD%-pl9j85pU1z8`v`9d zTQDwmgTn{}^o6701iES(A~%FG-NKL3X^}jZ!*KUNW9Az=64%@i zNpki&V(-4nY>9-NxtcjC0MbVx}5*J7$mb5avhs z+Gcb8et&ckRm?(}-Z$sv%cMA*hEi?(gn*A9RXL-ON9^OxX7lRu1))F)P^sACc5{n) z*XDeu&Xh4^ND;|UR23ezkF=QZj!AUG>LYlb0Iq=p!ub+d$>J#+UT)Sm=R1XD1>3XS zbPc4`kfbT=SqznKY5btnDCz@hK(AaNN`sz{(v0F>JlZ;d79w0z^IAcv8q#FUjD2Fc z*|ay-rSeCl!)FEeWKMcX{R@G_D+WS_RjoZ@TtMHeK1vREcMFgy-F>k-N!nDpg-JJyO22iKw zq8JVGit4JvhooBTUXn(<@38d=Qvr@4ecrUsvp;I>>yb z9g`)I!(sc^SDRSNg4O=DW;S$<*|2PQIAi~5wYhF($vFxP8;;r*uQ4}ujw#^x38v`dI-woWx&NfSf0el|>?RP1UrAw17%6$^gKsG% zVkrm4=0@)kH_KgXV{_KB6|Mu$K%5TI);+NZBFo0q{LEFoMExG`*hXO)RxwuOCk zmASTMMA1rJuuZE?a68DaJ*wjQ^m39lWqVhfEiF!@MlRSpn$1T0($!|=b@S|ETqQmc;XxZmnYi`~&-_%XCJWq#Tvmd$E?3e?+2w;ly zst#}1MfBaU09kKTNjh;v-l|HLSD~@J{CT(P`xz_#=n4BzUCMK75P{~v$FX>=B6I)V|q~zpwA`_oH zhy{~QE|`eIPuO>_H8+@={q$P1X?d*T#Jg<&YpvNiSJ4>|REEYuL*%ORd7__|7QzX8 z1YZsTrJ%;}q=b%AtaDziM@m~~8Ctnz1c1tVX?1CucyS-pa{FJ{h?;1|3T> zStrW*Tq~o?qAEWV|BSzo7!zvpop~4Sg%etiWDHL(ASg;vpu$r48UG{6t`0vwmRY~# ztM=Y)f3U%%CvOC=^NVej0k&?L%Or2!}BjycpCrY1zD zh$xwUMa3yTu5FN>B+*9(TkV4zO-oatV*k%Zvum#40yi!;FsqDO9UgP~?8q!bcAGIIf zWOlS7Ame~EhtlsG@T{k3Bpn(8JYm;tHX9BMb8)R>pr~T+BMR}#o?VI}C-Xr^NPm1v z#VI?w*=*VoIWM?e%3`fGV&AseoE?LdNNO6wOk6cI3Bpry=o+Ss6?CY{A}z6ZZ9|Y#wsYIe zj^$KBU<9eQ@7QJn%L8XPp@7Ox+4tUT)-IP++<<)lPQBKAx;UHOFkWW zohWh6HKn;9KjmGvcW*Z!p{;EZa3kUA!nIJ?ZzEu z%X0rUUADLHfb}1;13S!G`;!f3RVS2RNiB$B)sHHRX$&7Q)O>_NLMm_!F)*=T;t@1S zSFoSjVRr0VYZk7Q?P7z?=)VE^pP!OYPP)7{QL4TFkF^W5!~Hi z_N^-7eSi>L$otY8%!L%%P^ys^q-+p98oOat$3;HIRgrlGdJOC`*ROK!N3x1&ZBOh% z!XTh>A>y6{duVk6W&1a~%(igaiBJkp3jB;CgHu{3tesvBR3}1{_UaqW`E6K^qNq&| z2(rEv3hKK4tbN&y=KAzfKRT@Il&zwRRi_O7;vMo?^2rHO*?#3llbv&f2rxm4{G}7C z1fJyE$XP+hX_7iZ{~H)Bj6qz008Q5}pHdek{{vB$CRih4XULiN*=I*gb9=zW0znrG zq(z`Q7#lPQ=(M1p^@0w`RxVaj!pOb9lb;RZExLe%o2s|SX*q=9_3WkuGnMJTN6%sreN3E zJ-o97$P8sec3_YB%qseCu}{*?q&>LT?A!%@6U|{IG+K%KVm4vIxsxgTlD%eA%fjn@ zd(Gx;{wr2CiLVCBRdi0Fp0tndHM@KL_yyL?bxg837uNU@7Qxxzu&Q24$ClG&vn2EO z9WY|$s9A5vZ!y7@0XJNHU>t=Hw*;6fCILC!cbZRDI@_&kCxC{>?E9l;=OK-GAW0As zVHvl;z&ye=&^C|aNrXeX>JvhjG>ur z2A0zhVyv)w!3*})t!8K9GL7H?HH_}?f=&!4xQv5xXao&O*nY3obSxh`Lm%tKGI4wR ztuVt8J8-Mn*%U6>%`vmXRP0-BHPJcWOiH}X$n*c7c>B_*T4NP^YM;5SC4XMUOycTW zw`fG|GA~OaYWwwlNcwOsg|<=s+(Mv?0q4BY1xqQ${Fv~rF)H$gbWxISma(qZP%Ab_ zRC1mRgJw{JiorY~B`qxPZCHoVNccBJuk#*r+5wocp9q@5Sz2*+~>mi~4=3SL3Dx{|_$579wWzmIenyvgEwfhL|i%sUw`>+>alKIF0I5 z!#nYrdUe8V-$j2Y-kWM(ZKxs~03f8}A30>!?k}NVRzxDHnwgk#xsq{=22!}N!atcA zjdU(ag1kIow$4S*0z+riVyc$oZt#tv6bX+JQNxF!icI#8s_1|Y zDOCpS7*dHOrZjoJTg%zjq*(ym|YYw1xxnflsS6~8%mdc8jAZF z7=|#EB&7KY_8DmtoGXGNlqRmy(Af+DM^+nAhn_wsjZ^2OaICuxo*P>aePGyEN+FYf z{3zU6tVK*pgGme_u(Oko(mc;r(Dvx;Bx%>~H!o;e!0(Ow&H9GdhxVJ+^aRi(1ZQoN z%3I(i0)bL7QjTw=by{~oRP0S{=FW}djuBKk)+{hLj#-%f-8K_SV{LB$g$m2@o4&Cd zh0Np&U0~4pjv*tG(KW#_`)HeK?V18`Qe(PXRiE3w+#W<OtE1Gl-E7JRK=$AE*qOsVUN4gG)y&5gzPvm5iZc;tz}+ zMNW{K9oW$-vpf~5F}Lik;C#CvK}xYt@QW}(mh+R;M8<&K2qU>0gA$y|W1*Zwq_Vn$hbuCljw45#>L(EF{HMg5xZ6lyDS?L=-={~Cx zsSbiQNJ-St=E$p%;A8eDx0~4F*b?OeV6vU@3iJ7-iv}^wdlF93k)7`}Tm{`4*&3mf z_0tL^B{FhIGU}8c+Q{G(-Y|ID=gm1$WJ4J^{$AXpkyJ86ojfefte4Ui}3xR zacA5Kuy!7wY_zip_yAf{{g%cXi4fbM3@Z%^ednXBX?w?=X8T-W>bC%)5T@Ey?3dXHXx|bvE7&kzlx18q7c8imodA^GuutUrag202If$t z&xSA(QJF1zW@kqY6ozJl6XfrNOzN|4RXqxOq2I_A?t-GC>srpjH{w>Y|KgdO_e13x z#ySM=$bQ}2K{xR5YlZH|Rmh2kSgYD$l_JD2@;)Gh?9i92yo^9l~Ig>*7>kgRY>S1t-bN~g&s#*KY1EzK3_&FW1TfUicpi1@)2h8m& zlYLOw9JHe!*hcJk511WWP)5HjKoYv4RH`9gnYVj7%(gx9+JjaD-VqP~KrXZ%_CzqV zk6fXsq8;rpdpAX#hNzj&`MZx&0z%3Q5(wF-(86UMCuodf`DqXh@d?Mg&{% z(5^XXuHS~{2%ZWVhe24CVOHUc*h2@+&RdbJhxtV68o3;L7H+oe_M#vZ(Nuk7SjBJS z_B991_7*Csj^Uw$W>>;bxrvOa9Ml%6>$F65Sx@&R9flxdX~}NtG&h@~^*T*t3(f$L ztPP`}R}+rq?Y*65)21lQhB!VjlD?1|%P5MI_M@FRoIniM?|-A6r2T3DnX>{lD%-q?CqmLyDVnV zPZ$T?Hr1_h8FyUF9zLE1Jw??3RSX$pgCTeDOXo6k5wSFWJSVQB=8B~ES~Ko052Ou|FcPx*%IHA`Of+grSLVAK%*%xC(&5I~ zOY~e#wMJwF(@$1#irZykI|I;i_WYDovMquT=QB{g188I}>CK+-PA60vy%F=GGfi19XHfsA8~s@3sxbTzxO z2SLY}-PdFGm{EHQZz-%C%EDM8%k(+vEw3KuLIZfKo#%TtnMLeNZu;wF_P!n@z-D#T zO!jzV0(L-f&JRkke^jMI(_Lj3(vfnf^aB$)bbA#)Rf7Jq1LE7x3e98lRD+>YpQi#A zM(&ch6zuU{bL}lmGgBn6G%bp*oS2dwU25X}^*H3HJ><}aAp%*jOhaWBy#AiG=eD?qJ#L|{0fxFeb**{ zA@g$qtUUqGEK>#uiWm}*z7ZW0kJRP zxY?r(22;nG#<*A`fF}nwW8ZMxtb6*T;E3o&hyi?X6vO}TVm*dniRL|`puqJJ>7}rI@iB$y-c~Yb>~nqg!mY| z>_plyj}|Qvz$1W~{gZyAJ}XXE#sw{yS{*$IEWDUi8;Wxf185`Tb-RI}!YcM*Ih@z& zjiL!}UFpbAc1P#_?LP$Rbg47OiX?C+d`O)Xe^ z2Ae3y&>4i!_m~1Np&?rp{gZ(Vfj#bDk-qSh!T}VXlOpwD7+21lbTpZAO?7K#N#!uF z=~5*`kmmv5QHy>dfxA_X8Q0q1`7o}@`I5co8D>*+O*dc`?ep-q7S3AY5OT=n<7)Q4 zXPE7bg$YyQG#?*Al=)_Zp`jII#qdF)`YcFBI%99c%4eFuTu}s~-79b(6yhoB$kOCL zs>sa5Szo8zToa(0Kqwn^-X(K#jER68c45@iP*POLMPU{V^Sv0Mw_oRc5@a`>3~t1(|SLCE+SlEKj(xIJ?N{zG z@tv?5>a1Ya2rr325=~a4wJ6)vfGM?9oM4vieFJ98T*AFZooyV+f-yM{D}f?XS&{@t zrCqJ0tA%x@`5hPu*h<1rx;mrGKtb%_kSMcNh2(o4e5L-mWNP#dp*f~mE@tw9L>(_s zF3!U*4^jYe%K{XD_>I~Zo#ozm_gb~@K5NdjRNU)~U40JxD!JEjd)qm)Wn}_7?OV^8JLfPngq08IK8_K%I*J&4mqhhJ4TFXOM|SsMDO~@U0?WxQ z9dSfwJvbdBlmzAIIHImDab#U2yo4aL&Yg!SHFog4iS0-WIIOVijxU_HVS^M(2{2u> zA3SfqVP@?c2N4xa*$)kxJ-e|Nk&47LCMy+HZm{{C1HfTnnY$0$mJ4RTiP`oG=IGuq z^p(Qpw&#XimLuwXW(=c7420WF?1LAKZBCpO$XE{hF?{I*3n!CZ)ES1hk*7#osWi)o^fV?t;%5B@7%(Q1;sz`ZFHo`{ zE|`sh=mG!%gxMM6zxXkL!`L}kw>e%Xz#yp$iKNpe zVK_Ll69igPiOSC+x>Zt#I3=B}3FPfdM$FzbNq8Y~{S;%K_!G;6#5M78d$|1Tk7^JD zD(5Vo{5;yl+SpF!!tcak_HfR{9(Gj;sTl4ppNG%IWFmqTp^UHS=$(e4p)#cKB6>9GH)oV#Etg~1cn=Al3ss+n-p;SK}R;Kw;!MeuFJr`r(j^&c>3us6dFe}vM8)a zes!FFQqP6oh$^%kl|)>Mc1IbB7RG5$+16bwQUI1TCAis4+eRCJQGB35L}&sAkmz$S z)KkLjQ4nQ?dH3akDu%S%3(!??c=-UuPNCo+j&SpszNYc9p+#WSuBn(WB*I`5@k`-J zxzH>ElY0GJO~I3+^J`7^i;>9N8^_Iu=SJMu7@jgVJeivbYv}B+TUH^*oGmaJLtwxW zHjr}4i614K-B1xvN%ND7x~za07%~~p#?)`x5Hz_~3fLy+xi+>kVSY^9dREot zf+n4ePvJ?@^SB0|JWrX!Q5~W_kdD~x&oNtWnsj20 z2tzVV`c?CNe*2g`Q#G4$4B(C_v-JkRm$QC{ylIVI(3I#fAJ1p1YX7oo4(yxZHUL;R zTAOKi3l}{%)SE=c#ayIE?Wj-^OG%UF@CA4FaWUnwD|p9RJ(3~#gF~;_&rZ4n|BR+9_K8X3>F93QSH zQEQ+8R_>(V1qxVi#$31clA${s2LQ8TD>G)tj)K!ioZ#eOV(>=nIWAraDrE1U!GS$s zhR@ji`ah!D0?{yLw{X0aXhIF?8eiCR8DWhWLp(WlW=5_CB+zI8uYriYYZiO>K}fmo zEn$Cu77GsrAV_O5X+J)TyBDer#PM&@NH_;ru&Zlk>y5rrPUzi!y1I;Zw1mzcdv@Ej z*?6dup|lAf$YPg1pLSg+`^)kMZ|+JJ+!VkqNJT1k@qwDT)9fLixjNyM;wsfVpABtw z6E*0%j5Kerf3`Vr`_%lq>i$_F6FEYKfV~F7xLgvTNIonjQs#U^QL?Xpwz*;3{43Ox zpAW0O7edcO?bd0tDeMmu1N3RL*kEA`urSCCF=qGvu6fO7f~MpwwI{Px`{bm#aR*j+ zTm$L(@+LAAb1I;lzI~%uL`!x_g3;nu+#tuZ_M=s73w`c$U>d?v3*$DC1$b6&>bwGF zdD}W?hSFT0X8l<_S(WdcEH}Or8E)wiP?%uxecFC<&ZLiVGXp7^Lb3muZVcC+O1Vo6 z0Vo?4x@D=)3*oEZnJX8UKu8gL`njezJq%(HFF*CecjDFf&Zb<=AgJM_b`h~(ey&-! zH|P{+!u7=F46z%ACH8vAZhxM+xhL$<{eK+>#w|n~KA#BJavL&XvzK}y4 z`hyqZq*?Rx&6WhN`6Kftu-VcbB{|3~9>f^QWiBFP?>>hsZ-_EzZA$jc^G$j;GY$MC z|F~=XaD@`vs!QTudHccVoBhe)Vw7ebN({Q`B9ppjVFI)yrd2#?K}+_Q-@^_$e+mUG zWt>_$tY!lTN9Z(XKxc9>p&>ww_sL)_0Hp+&I?oMx5H7tAP}6y$0q&wK-eW|r<1Dh$ z3QtM~-!~J&)DbnA8qVR3bA_1w>F;4(fQN!bWNhFC#+!5VK^$i4_i&+CkJsyREWfSD zV}Co9CIy;NNs~GxZqOz}$X#MYiQ>o!RmLcS>UnF?E%#WGuj<^%g>}WJ=6MtZKpYyfqe>Tp%di4bf5|P1;!t8$un$z~d zKfwAdvgyL2kbT;V%&vj7V+C17;pcHPxnqYAkk2B!%5Fd@$1Z7~c5+Idvf(^W&%3?4 zI!~OmfA}I~L7gme^5NE+6B@4}JQ1!_nO&5Vc0sQQl%5=h+ET2fqr#x*iKun-tcaZk zPQGtAJ?|N)r;)QDMk^9#S~cceOgyeGM?gl-HXt@>`(A9?uBjc-ZU!(mwH~)FvK}SE zMIbdGF+XBaXGB~a1o3^bIk-HjE@m=2X8ZooY;A_3F^tLEsXsJ<+shFZvjCn1Hkxc8 z11?J;Wt{tuNZ=xQBX{#q(tha=&9;q2&_=9?9=@Cr$!A2q?vKpBr5XOw{_#8-dtmfM zz4zZ4cJY02T$t-EUEK8&(_>ae!W-zC--~r%Y-38{h(+aJE%+=eZ8!B?0!-x!2Vqda9by_~`;0pQ34 z#b40OU;N1{3@*^C+1u+TcGh37l?vS6N-P;6aY$iVx^_|>8Rth7a)kuI#F1cl=qWi$X zf;No*w4AWf0{g#SX=ZN^Lam4g?l~23x_qp$sD48nhi~keD(KhcdoXD`UuCu>mwq1t z@fb2F4=!z`)JWLZy~_OSwsGK1;zZI7CL)SLVi~b7f3?|o2VZfPjceEK-Yj0&yI$#o z<|JXRN5~E!(#|#Ll?G$>8?QDu?Spa)_RdY{5c9B_g8;^GoBA>9_+GR7t=T+0?Otc_ zq`p?%yB_}^!5dL;s6|}-NtpD;Z)B5phvbpp8;7^h+lSHHTmzinvNwwL5X>eeH{@{B zXd~)OnMh{@pD1A{6w-~sw2D|0`>8W3P)U2@HD;rku%oXrp_VEHS?rK~+iT2oHw9r+ z2qA!{upUob;DJo*oqudHYezAa;V7k!o5ktM}P8NWhgU{VPf%anZhjgDwOsp^nf z1n^KRGB&^r-<142K(hqiNTKk;$Y8-VMH91E{;AouR-J8DFI3n224nWNKQ+B`akybj z!3X``PbzL2^eycU0ptZPg|N56`PKnEunk6tg&`n9*M)?opGXq)Be%Nu3?;O|Fzj$Q z_J?|T{6TUvmSRoJH4f~!@6;lc@QE;(+e`dCKT}lXXE6Q8& z>9^-?%zo(4%(HG*9J9TCKMnm;uAH96toJ&zVP0pkUX&-W;48gJ}^0K>(R8p+h4yE)23f z<|sPC!}nM}S1%fOr8wLsnQgb<4!7vDZPoROzLiEa0C9KJS)jUfMG9BZz24k#Q_ST+ z#?g=fro3vuU^9i>bjoi`Y z?I|bT75myZ;Fb!CC_m~|lzP)nK+53M?U&wQZaB=%3dAaiVm?PY(KV(*4rxMg#niMs z)=(DL){ufKl^U|$Z#2<#!AWJR+CZQnY!OG|5-x(3Ggd%g5MRw6na!*6DaB5Mm~p%RP3G4A7?{f#%x#L9IxTU?unTnX5z~)T{Ee0DY0(r; z#HcEM0t-LG!T`-n22@pwuIF+45c)h2aWG@L|hV#S)^bQ1eGP<%@0L%qqKo^S+p)?pm4%38`HYNkk-sGyiVU9>-Wv)S9_ z(`g#?BJ}D!VVpPSS;S`=bY}hYOHgYh&vhaXB-+3g(`SOq~zGL~ZY(MrEY(QU{o)oQ7p_vb6Ksl-@ zKw)tPY+_Ho47xoC1-;FQlN^5ar;8j55g0w78cnO_izn-LJQE;QV-bH0;;Ww~ZS0(6 zrlkB&JGX!PRvog@OT6MqdWr5pa`n>7gni&`rnMP|oG2%=_8V_Adv@W* zIDqMvd&r3+L9nS}%Kj2I@^-Ulc@Q6HPEvV${_W-iEqrHR)Apu!n2t4U$0=S6Pl029 z_Z?>YhP-w?#`|lqxeacPAdB{acNni3dtLc9ZGZU=vw070Q z_M+I^{{m+pX6(>kn0;H2zGQECRecaz@uucr8}?tAb@#9gUf5+)xZj-(6iNN}w3N)Z zB@&u~jDc_L8h1ZX0B|$5dn18db|PkXzth~h-e)m>`e44VRMF<&X?9^Z)JxxqD0tSs z^_|#mM7p^ZzR$hW>|cxbwgJ$F4V{&puzTNSUbeOjhbXMT7wr9`3@_R@fRzL5MQD5&*$C0a`H^^r%$kRhA0#kOJ-oqVT z1VaZ2(W|y6#IFLbebKwk7R=q>@@|ueGEKm0Av{Si5e4pOrw5193#;S{ZX#uc;fme) z9907gFDaqu(j`SeR!NKzT%%PRzvZupYjA{G2`^?6zTu)tyBD~ab0j%OW zVgKbmv-@VwnTZxB(iBckIoM*WaEoFSgR*?z{Jz=#fbTDA2wm+;mH0pVV!5Ll_^0 zNi77AU~=><#Rh_I-VDWD#WWg`2ke#KC+scvn;Tn_PGS=F)cr`(gdONf`+N7B&|DHg z=BZ7!Cjt^;g162jjXA)iEpyVW5JWplZ3<7m>o*zbh`UaQ`UWE>pNlBN>j1yOL=0z3 z_yb5@;f)ru^;f)ctv&QUbM*!WKct_kAosJA3Kd&=pV@rV3)+Ug(Fb#|fc!jwcpz{|EY#TK2vNc;~Zz9oENUMCK+jT8RPZ z!eB&YehJmp(<-iSAG&ZtC_C)#=~i)~&e4ed2JD1&v*!Q}2`@AOj&t5DA|Q%F4NoEs zSdOctqQB_r|GFH1MG5T3@Ht@j(@Yq*U{--mBZ%li)`A3W^tEh_0bsjDO6tZvKg|Mw zIJl*o2ZoNwaC~^ILhlrFfqc~7_I{{f$Uf`+CKmEh47jgB;SIKKXdXBM0t-@jO2)?i z@AqRTSkkWiE3zIP;O{ z!ls_UaUoCexE!a+XHiww!3$ZJORSw0@nP>I9d7jMYw#_z@}pL9FMW1FoKt572NXD4 z$}3LE11BlUfz(;M;-cBKCGKki5gb}1e<6G4MH~RB*=JrfH-$M_Bb2mm>EE|HZ@^#^x+SfjV+IkO z2$6f|%ZK{z*2_7jL`q;*_=|b?oglT=DS#1jXl^B>zw=aek`;^UK#&)pfl_nDj5r*! zU&a3C2XT&oi&zx8n0?}dW^W56NMD10ZPG2HpdRT|vX#F!Ywy&U6o$tUpsdj&Ytb^K zoMNW&lvXGwFn%Yl3H$NCHoN0f_{^jXREVt-5MByx!Joq-CYWE+oG-LHK7@P)a|eVx zWN-fv4sK9^*g-;VkUwFV!G?X-njMjyg4m4h5Xz$qu6raQbRZ?%2OVF<#pVoTC75Ac zMzH?m6N?aHHQcH7anvXHqWuz(2qnbq^Y<>kJu2or(quyRC2t7e~#Hb`Lp$%nDeW>oA0iSWNaY{pjd_!Hf$5V2(M z{2TLRkUL6=qKt3SKa9r^fTiRU2kvV@#Fjo{HgB&&6!@8oJ(LfpnRD^AsL8M1~la% z@RP-HbjV^{z|3gCEo%`z2k7_bFQlo#)t!!9#i0%{$sl@9T;Ms^OLnV=OBz>|*3|E>#scz0lj?1qn;n}hy>Aj5L8{%UYXPGVG;psRcFlfJ3A zEq&B%3Q}zri2a*rowV=&D6;ZA>_W;U?e{-wwwY;r&Bx5GYepf*1eN45Y5ds8knQ>y z4xZO+@ng929qVwE(VW};I?o7tZTy;^NCOiBz?QeAT#tPIR?!}ow!(N%kF2^STc%C!!lKCWfOD}H=N-V`5q zIe`okzk15CVuB;!xw1-)P&KK#Qmm$miRMWo*2cAtB6HljgG&xp|1Eay7VVvQBv^$S zo&q0PRl{d*WJZevt{5~VnUE`@o=w}g{H@8&u`Po_|3noV@!dbdgxZYzgd9a3tqu~j zUJ%(L{46{u7OnAzkPJ_;6Zk1bG6g8`aY$umUQya((isn5jZ zw7q}!aZI(sAP@~z#6I+K6S}K>RymH?iKX~S3~~^TpJRTiEnii&@e|GwUuG*8xQ8&* zcK@A;?5a91S;F9OyahJIjg|$HvI*Na{hjQl{%6$RT9b*jo53z+y50HraH`zSO{yQOK*+kgM0>0UbpB>Ad!rty}~*nv-h%p({QMJHlUdDBc8SItixLgCgiRTuWjepNTY#Qp>tq+@< z0%06HBu-S55d|Zd14H9@eCu6gnpEN7&gAd~tyuu zo6IU)PSF5t%zB^3CHB-P_5kmv@bLSR$L!9B&ARJ&71zK#VmN$;3&-(cgMII(%`;m3 zy^xc3?LV2{X`uoT4sOc(Co^|l9IKWKgG%7-n7#j>vE8F)@BC+Tb0iOWTVP^gOlxDc zT#?}EgN5dFi#>MDKbq_8yZ+g{cvW?L0eFWud9nRp%uAbA#<5LUcuoVDuwVK&^M=)F z1On0x%dlQyKl&Nq|LK1)E%rVCZiZI!kjnh`347yznEzN+19Vy_QIycQ-SHXxsL{*+ z&8*OWy7*W2Gv?f?(TYQZz{e_f&1cQV`aLIC*wW`vrR)FTpYMOh9A1@lnj!#G)r+0~ zX@1vSTWCbB$QS#(FJkMi^z^gOnuk}GAqw-zRWAP9=gfJtCmCxfOyPy`gg_qmWuE9v z*nuyY^Vfzop`sNccsbV4$xpvvKHgHUG2q6QSNriVns?2O!2T`Rfe(6x%<+e}w zKFLNSpLbebQ}*yz%=X=*u*Zxiaapo>9)<>exC2T}Aa))SaMZryE9SZlvu+ttkAY%I zLI91~4}Hb#Ynj2N@fdB#wEf{%Ol#+C)IS9VYXU)?KLy4g8N!G=Lz!xzM-o<@IB*TV zov0lk2DI(ih80mG)EBiwUp4VPAw4ua=x&Vbp6qMu3uk5nJ>?8GTn!)_*VY%x%mnP; ze${v@MwKwbSsWQ${WbjV1_(%8Ynh7O_cgO&xvP-Qlx)w}%!{G#|M@ku!;3*uX$}vE zL1EyMivSSF(Q%T?0Q8u8TJ%C3?gCnT40ou3K3x?^0L=A?g5CdhvnLY)7^1}WX?}M5 z)^h3g5=O;?rpTNCoskSf|I5HB+duz0w#GjdoI);u9vI=F12(U!2vsvR`4yfn%w1`r zyi@#jJ^p0UYzC7oNeSeV*-02d=;JwQDpurJPzaWb3%+oFz`B^RhaWW&lecq^n(Y1> zdgNFz5r=ekmmtL4#gWL!CX2p8Tt5>r_B@o~?`_E7?JpliW@f@Z{tdJ3>5?$2wg;h= zpl?@7V)gDAWF9fz>F}k+pkqJxT;SKslXl`8X6G}hRw&5!rZ27iYk)w+I)j-g@Pq2~ z#S}TD@i{3ti$ftqN0BrIyXu=}k&x*d3Dk2D+xtzkwiz-5rshWN z9gmt__TF!rm7v}0zKN8ZPdkK(q}?n=%SpuP5l7R-a*QPYBZ)%tQF`Ua zcsq;kDg)XJY{6m-J(d}@AN-ctvOffvoT8sjLqDiaXx1?$M!GYBTjywl)q;&W@$pA& zSA82l@`Uq@t>?m-M7rlB#5t5nrh5h}Fv2;$SFwUGp`l$rl={ zgfjtvA_p-)2xW!?J@_Ry+2rbr^_ZBX1fdxx-8D6ggJYqof73cYy(FCoor<(NqKn@OKtlW>DILUztI= zq<5V=xhp4Db4ZM$x6ZuHeFw{F9Ee$uM}FuapgD z^Y$;lW5RPmTu}l2bP%d~RV}8Z@Kk+cZknj{2hn&}Kq!+=_jKTQx6!H_$LnSKas>B< zgB|?|JwJCwewF*gu+yhXN)4g=!QU=!X@f85#;?V$BT6Z~crBeR57K^~irLxknjII) zRS8GqnX3Ef#1mZ*v8#kde-Eei97+@Zr}02f$D;mD7Eh4^C!$X9=(Z?CxUhlD5q|^B;oa~7Vs%*8 zlPj6?X#`i0qGR}NI?#W?i=J`f(>Ov4BAI;OA0UpIgZ2=V%^ST(lG4 zH@jCPF_jR*hF|miR3SMC4M;<%p{R_Uu==E><2s3$-O8CyMjWZInS4&5@I8=?2KF` zb1Dg41wKz@LC`aPk6F$RU{D8DjHOr0OAgUB# zo51<7@tQT!@npBKzX%BeH2@`~V2?%bsaRh=MA;yLJf zgS2%yMBH?KGl@ms9j!Wn99wY?g6Fvz*IF;MKZhFGT6PGQ0|@ue47YC+1)3Pv!hjJS;o^&_o9iEs4BWd*m_3-?q;tGx|%<-GL)aEn%NME)a+EC9!Hu;NdFcDnVNj)v^k zADgW!CW5>ynbH@wxgVRrwZU4i`p$)U!SjD?5*s;Z2Ve74(RY7G8J z3?hVYecb$smTEhqnNp~?7cMc984dLg%&RF)8n%sL;*6?#^#l&4BNXkNMk1iYJLK*d z%|&&7+C5|+M`v^BOs|5?qB}+lU6hvtodp=u26R(!Cs-N6Zb6;<<})LgR?vw;N`6~< z-UUx%+*n$iX%A=`%omf15HCHoFa0TYtq*Hb`fSC%|EDIdekqz63iZ-uMKZ&o-lw)l z(C7+4(O>r+qs1OfV!%QKxTf(;;2c8APOoP?Q$zL$(Rv>n-rH1SFGhZjg_1Qh zAOQ#E0xJAS%)l?O%`0qczc9g#iKsf&3q8&g3j?C~glsy;wGgz;+dF<~?ipZ2-GEPH8!BN0Z6Tv0?PM}07xeqX z2q`bqM1HMfCbJaatDi8p&qWs_JOP9OX+TfjPh~mj6r3<==JcgMq zq8a}Kr|yDGnr!)!+!4C%pDbcmNLc$ ze`VIK9$&&td;C{WRKG4}&%ZJ^VOQ60B7c>0x`j#UP^PnjIS;N`%wU7G7zmxS<$5R4 zAuuaurWW@M(RU22E*6#wWfHzC+Abl{P-bRv!wNpL?*bN*!EALHu~$tt?b$gxBQf34 z5}sf^%ycV)^uclHC{0sp;8h=K+PX>XZXA(%Z!a)oR2jp>rnkTHsvkA&+2_7i8oyTg z6=5tSu#>q&xJ{mm_fAdNL#Anqn(26E5^W$mvCLGg_tYYPG?5vSdzxKquWtfS2rUk4 zh8rl$?G2GbJTu$aIgDCk=M>(K@yxVLn7zR$h;#Td+Bt6oF#jKJFN)FAUx&yJ)?ky+ zxw=uYeVpvaGRau)xrz-pHEoIb%u0Ya)D5r?zY_{KlFY?0<(Y2{C`8EXsMxutrgf{F zPt!t#;BRhf+SfA*_e~Ue|1mNhMS0D_!~jew<9|h%!)zGhx6U!t;LUC#IYSvS{P~RB z>p7c6;(b}u`Z?+`S|r=CYZK79!2{ATm~_HY#FHtj;mn9DSGcUYO5)!F0rXf9up&>++_jw=87B#+Nt6{e`D$ zyIXj&FZsFIY#&+Pl*$jw&$u^a&L@!~!(ip7dQR!IdSZYAHrjXjF zkw01nHn6ngnKAqUisuRlyMz~5GP}BIi_r$R{WcA_AfG+zZpv%~^!BTpT*ft?$tS=s zKjJAQdOL83_yVhaSH3X8B$j8E>Wdp>80++Y^mU>tS1jVUfn_47`=gwUj3s(UaUreW z>v*Dfy1mp%f$ps4N@_Iwd2i3W$N>+yidyD0ZkWHOX={fA6pJ^6Ysq-;sYS@gGl9nM z!-?L0x6I%?$E^L*HBHy!VC^riY1(zqG`Pw54ZkecXbf0Px56_IoI%ksOyzj=978>U zdF4Ek2=)>%bc~v&61~O7^ff}7ntjg7rd@N|OGh%dh$0biK^jIAy}n`T4@h{}KZ2-^ z#)*+uFvHVbRHwxqC;axwh4!b02H4~*d6GL6R++XtRyA!mI4HlWY13RW3G#7FX%XOt z#o{&e~DH0uzcEx!-j>n|Jl}>#)4> zn!UrTn>MA&6Ow)KbZglpoD)P)58-M3kpncRxR^}D)opT0XYG;IO&i+gTVuf%8?1ht z*4UH`?F8+wc&I0DzF4;@1XK{)i1m~*dS53XstWiKzDW_3;+8wc!{ zb8`g=RkE*L)3hxz4#p9Pu7!Dd&F?dZhszAB_()h0$-gKYr|oyvG`%cJdh!#vfNW@| zmj>tfE^{JoM3ezBGc@Y%!KvDJUE9=yEACZqqsR~8n%QI~fAN~@n*R71_L0L)>n=Vv z+Vs$WUi{+0Wv{*B;)C7GK6j-}9A8$nd%fnh7t_a={qTxc|L}@+7iasI1#h#Jx#n&5 z+=s4MW1ri*?COiVUX9Ne&%Soqw~XEL{$*8S z4yU7$aQu8In!Nbj`&*v2?BYu{UG?e1_VK%~T66LB7p{8K!xu*r&BZG&Zf$FR;gxp3 z*F1C)IRE1n_PM{hYK6V$uB)!F_x@hXmA2NuY|q8Qf##>B1%1vO;8np;|~rse)H&o`R8)f{}rtxq_jAm5I5Pp^<{SZ-}meseyrlhHG%h#_)@r E08QQv9{>OV delta 49 zcmZ1>vO;8np_*@go`PdRk%FOtf{}rtxq_jgm4S(siGhNZ(S delta 62 ycmZ3toN?W9#tCsENr}lRhKZ?ZhK2?v=0J98s%i4XJMtSR%9vr5+kDXMtqcIbU>0%! diff --git a/dist/ssh/Makefile.deps b/dist/ssh/Makefile.deps index 46c24bb9656e9b4d84939d10782d98f925ac1830..a4dfb93161ad491b62048b549ffd451383d9e715 100644 GIT binary patch delta 49 zcmZo&Abr{Gvnq+n>EU}Ruuu3%_rWnf}uVxZve8=`Fh1PU6VADo_DN<*i4)(-HBM=r!q_^6sdWnT j)+sE{ZVO{kygl&{D?4-hl>00|%nHP8+o#-T7d8L@pmHO_ delta 92 zcmZ2JUt#%tg$c2emImfVmL|sLiH7Ee$tlLhNya8g_7)aqMibx4HBM=r!q_^6sdWnT c)+sE{Zi`@3+}?MG1&CRJm~DIC9d=1$0H0qVS^xk5 diff --git a/dist/subscriptions/Makefile.deps b/dist/subscriptions/Makefile.deps index cd297d2fe535f83190366801bb1ffabda0dffb7e..dff896979ba9597437c601b9935c91bcfede46a2 100644 GIT binary patch delta 49 zcmZ1}vr=Y)sai-zse)H&o`R8)f{}rtxq_jAm5I5Pp^<{SZ-}meseyrlhHG%h#^`gr E08!`-IsgCw delta 49 zcmZ1}vr=Y)shV$oo`PdRk%FOtf{}rtxq_jgm4S(siGhN?F~8chHI delta 81 zcmcaOSM1_ku?cA+iG~KoN#?1hmIlemsiukMsTO7?lX)4H8|SvpWo(_xv~?~sTNzeW R?c2+kftY3c_A*u}2>@Dz8p{9x diff --git a/dist/systemd/Makefile.deps b/dist/systemd/Makefile.deps index a1077f635d3108225f5abd5a7b9acd190598e1b7..965a9a1c54e6f9d9693244735e16f09af7182d7d 100644 GIT binary patch delta 49 zcmcbweP4TmzFJ5|se)H&o`R8)f{}rtxq_jAm5I5Pp^<{SZ-}meseyrlhHG%h#?UTN E0BR5od;kCd delta 49 zcmcbweP4TmzM5}-o`PdRk%FOtf{}rtxq_jgm4S(siGhNrk2JjW=WQb$rdIihL%Pa7O4h__7)atX^kbVC5){lOsyr%ttBk2 zC9JI_Y^^2ittA|-C7i7#T&*SCttC8LOL&`DMX(vt&c((H#C$-^55xjMEC|FxKr9Tz OB0wyW~mm*i57`QmT6|jX(@&lX$Gbi_K9X`$&DqgC5){lOsyr%ttBk2 zC9JI_Y^^2ittA|-C7i7#T&*SCttC8LOL&`DMX(vt&c((H#C$-^55xjMEC|FxKr9Tz OB0wy`}Xy_IBFLG0F7}VJpcdz delta 92 zcmZ3pOLfgI)d|s(W~mm*i57`QmT6|jX(@&lX$Gbi_K9X`$&DqgC5){lOsyr%ttBj5 cOIX!+iC|OQzJ3=g5VHX>`}Xy_IBFLG0K(KEDF6Tf diff --git a/dist/tuned/Makefile.deps b/dist/tuned/Makefile.deps index 25d0187d582c22cbbe172516cb9c36b7a80bc47b..197bb655af4d0abaf9a7440bb9bb55b588a69a0d 100644 GIT binary patch delta 49 zcmZ1~uvB1zu3AV&se)H&o`R8)f{}rtxq_jAm5I5Pp^<{SZ-}meseyrlhHG%h#^6ir E07{At2mk;8 delta 49 zcmZ1~uvB1zu9|Oto`PdRk%FOtf{}rtxq_jgm4S(siGhNE MrtK*!n7!8k0EKQCO8@`> delta 73 zcmZ3#QgHoB!3iE MrtK*!n7!8k0LAVaF#rGn diff --git a/dist/users/Makefile.deps b/dist/users/Makefile.deps index 2072e5a5509e6fb7e0c9b5ccc7c2a720758d9d9b..8e2be30866ad6ee301e74b47e50cffc7ae576561 100644 GIT binary patch delta 49 zcmdlXyhC_`u3AV&se)H&o`R8)f{}rtxq_jAm5I5Pp^<{SZ-}meseyrlhHG%h#^6*= E08#7=$p8QV delta 49 zcmdlXyhC_`u9|Oto`PdRk%FOtf{}rtxq_jgm4S(siGhN3N9YO#A diff --git a/pkg/dashboard/manifest.json.in b/pkg/dashboard/manifest.json.in index ed6f9d7..1ba5b34 100644 --- a/pkg/dashboard/manifest.json.in +++ b/pkg/dashboard/manifest.json.in @@ -1,7 +1,7 @@ { "version": "@VERSION@", "requires": { - "cockpit": "134.x" + "cockpit": "138.x" }, "dashboard": { diff --git a/pkg/lib/machine-dialogs.js b/pkg/lib/machine-dialogs.js index 87ccff6..80db523 100644 --- a/pkg/lib/machine-dialogs.js +++ b/pkg/lib/machine-dialogs.js @@ -50,6 +50,7 @@ "unknown-hostkey": "unknown-hostkey", "invalid-hostkey": "invalid-hostkey", "not-found": "add-machine", + "unknown-host": "unknown-host", "sync-users": "sync-users" }; @@ -74,7 +75,8 @@ "invalid-hostkey" : translate_and_init(invalid_hostkey_tmpl), "not-supported" : translate_and_init(not_supported_tmpl), "sync-users" : translate_and_init(sync_users_tmpl), - "unknown-hostkey" : translate_and_init(unknown_hosts_tmpl) + "unknown-hostkey" : translate_and_init(unknown_hosts_tmpl), + "unknown-host" : translate_and_init(unknown_hosts_tmpl) }; function full_address(machines_ins, address) { @@ -117,7 +119,7 @@ current_instance = new AddMachine(self); else if (template == "sync-users") current_instance = new SyncUsers(self); - else if (template == "unknown-hostkey") + else if (template == "unknown-hostkey" || template == "unknown-host") current_instance = new HostKey(self, template); else if (template == "invalid-hostkey") current_instance = new HostKey(self, template); @@ -147,6 +149,7 @@ conn_options['temp-session'] = false; /* Compatiblity option */ conn_options['session'] = 'shared'; conn_options['host-key'] = machine.host_key; + conn_options['unknown-host'] = "1"; } var client = cockpit.channel(conn_options); client.send("x"); @@ -532,7 +535,8 @@ var self = this; var error_options = null; var key = null; - var allow_change = problem == "unknown-hostkey"; + var allow_change = (problem == "unknown-hostkey" || + problem == "unknown-host"); function add_key() { var q; @@ -568,6 +572,8 @@ function render() { var promise = null; + var options = {}; + var match_problem = problem; var fp; if (error_options) { @@ -583,9 +589,14 @@ }); if (!key) { - promise = dialog.try_to_connect(dialog.address) + if (problem == "unknown-host") { + options["session"] = "private"; + match_problem = "unknown-hostkey"; + } + + promise = dialog.try_to_connect(dialog.address, options) .fail(function(ex) { - if (ex.problem != problem) { + if (ex.problem != match_problem) { dialog.render_error(ex); } else { error_options = ex; diff --git a/pkg/lib/machines.js b/pkg/lib/machines.js index cb27bc3..5408793 100644 --- a/pkg/lib/machines.js +++ b/pkg/lib/machines.js @@ -518,6 +518,7 @@ options['temp-session'] = false; /* Compatibility option */ options['session'] = 'shared'; options['host-key'] = machine.host_key; + options['unknown-host'] = "1"; } channel = cockpit.channel(options); diff --git a/pkg/shell/index-stub.js b/pkg/shell/index-stub.js index b9d1d97..7da57c4 100644 --- a/pkg/shell/index-stub.js +++ b/pkg/shell/index-stub.js @@ -54,6 +54,7 @@ "authentication-failed": "change-auth", "no-forwarding": "change-auth", "unknown-hostkey": "unknown-hostkey", + "unknown-host": "unknown-host", "invalid-hostkey": "invalid-hostkey", "no-host": "change-port", }); diff --git a/pkg/ssh/manifest.json.in b/pkg/ssh/manifest.json.in index 13fbd76..183ef57 100644 --- a/pkg/ssh/manifest.json.in +++ b/pkg/ssh/manifest.json.in @@ -1,9 +1,9 @@ { "version": "@VERSION@", "requires": { - "cockpit": "137.x" + "cockpit": "138.x" }, - "priority": 1, + "priority": 100, "bridges": [ { "match": { "session": "private", "user": null, "host": null }, @@ -19,13 +19,13 @@ "environ": [ "COCKPIT_SSH_ALLOW_UNKNOWN=true", "COCKPIT_SSH_KNOWN_HOSTS_DATA=authorize", "COCKPIT_PRIVATE_${channel}=${channel}" ], - "spawn": [ "@libexecdir@/cockpit-ssh", "${user}@${host}" ], + "spawn": [ "@libexecdir@/cockpit-ssh", "${host}" ], "timeout": 30, "problem": "not-supported" }, { "match": { "user": null, "host": null }, - "environ": [ "COCKPIT_SSH_ALLOW_UNKNOWN=true", + "environ": [ "COCKPIT_SSH_ALLOW_UNKNOWN=${unknown-host}", "COCKPIT_SSH_KNOWN_HOSTS_DATA=authorize" ], "spawn": [ "@libexecdir@/cockpit-ssh", "${user}@${host}" ], "timeout": 30, @@ -33,7 +33,7 @@ }, { "match": { "host": null }, - "environ": [ "COCKPIT_SSH_ALLOW_UNKNOWN=true", + "environ": [ "COCKPIT_SSH_ALLOW_UNKNOWN=${unknown-host}", "COCKPIT_SSH_KNOWN_HOSTS_DATA=authorize" ], "spawn": [ "@libexecdir@/cockpit-ssh", "${host}" ], "timeout": 30, diff --git a/src/base1/cockpit.js b/src/base1/cockpit.js index 24f5cc1..453ed89 100644 --- a/src/base1/cockpit.js +++ b/src/base1/cockpit.js @@ -3941,6 +3941,8 @@ function factory() { return _("The server refused to authenticate using any supported methods."); else if (problem == "unknown-hostkey") return _("Untrusted host"); + else if (problem == "unknown-host") + return _("Untrusted host"); else if (problem == "invalid-hostkey") return _("Host key is incorrect"); else if (problem == "internal-error") diff --git a/src/bridge/bridge.c b/src/bridge/bridge.c index ea29961..e658fde 100644 --- a/src/bridge/bridge.c +++ b/src/bridge/bridge.c @@ -62,7 +62,7 @@ of the user that is logged into the Server Console. */ -static CockpitPackages *packages; +static CockpitPackages *packages = NULL; static CockpitPayloadType payload_types[] = { { "dbus-json3", cockpit_dbus_json_get_type }, @@ -409,6 +409,33 @@ getpwuid_a (uid_t uid) return ret; } +static CockpitRouter * +setup_router (CockpitTransport *transport, + gboolean privileged_slave, + GList **out_bridges) +{ + CockpitRouter *router = NULL; + GList *bridges = NULL; + GList *l = NULL; + + packages = cockpit_packages_new (); + if (!privileged_slave) + bridges = cockpit_packages_get_bridges (packages); + + router = cockpit_router_new (transport, payload_types, NULL); + add_router_channels (router); + + /* Enumerated in reverse, since the last rule is matched first. + * This has to happen after add_router_channels as the + * packages based bridges should have priority. + */ + for (l = g_list_last (bridges); l != NULL; l = g_list_previous (l)) + cockpit_router_add_bridge (router, l->data); + + *out_bridges = bridges; + return router; +} + static int run_bridge (const gchar *interactive, gboolean privileged_slave) @@ -493,7 +520,6 @@ run_bridge (const gchar *interactive, agent_pid = start_ssh_agent (); } - packages = cockpit_packages_new (); cockpit_dbus_internal_startup (interactive != NULL); if (interactive) @@ -523,14 +549,8 @@ run_bridge (const gchar *interactive, */ g_signal_connect (transport, "control", G_CALLBACK (on_logout_set_flag), &closed); } - else - { - /* All the other bridges we can invoke for specific channels */ - bridges = cockpit_packages_get_bridges (packages); - } - router = cockpit_router_new (transport, payload_types, bridges); - add_router_channels (router); + router = setup_router (transport, privileged_slave, &bridges); cockpit_dbus_user_startup (pwd); cockpit_dbus_setup_startup (); @@ -555,8 +575,6 @@ run_bridge (const gchar *interactive, cockpit_dbus_machines_cleanup (); cockpit_dbus_internal_cleanup (); - cockpit_packages_free (packages); - packages = NULL; if (daemon_pid) kill (daemon_pid, SIGTERM); @@ -574,6 +592,22 @@ run_bridge (const gchar *interactive, } static void +print_rules (gboolean opt_privileged) +{ + CockpitRouter *router = NULL; + GList *bridges = NULL; + CockpitTransport *transport = cockpit_interact_transport_new (0, 1, "--"); + + router = setup_router (transport, opt_privileged, &bridges); + + cockpit_router_dump_rules (router); + + g_object_unref (router); + g_list_free (bridges); + g_object_unref (transport); +} + +static void print_version (void) { gint i, offset, len; @@ -615,6 +649,7 @@ main (int argc, int ret; static gboolean opt_packages = FALSE; + static gboolean opt_rules = FALSE; static gboolean opt_privileged = FALSE; static gboolean opt_version = FALSE; static gchar *opt_interactive = NULL; @@ -623,6 +658,7 @@ main (int argc, { "interact", 0, 0, G_OPTION_ARG_STRING, &opt_interactive, "Interact with the raw protocol", "boundary" }, { "privileged", 0, 0, G_OPTION_ARG_NONE, &opt_privileged, "Privileged copy of bridge", NULL }, { "packages", 0, 0, G_OPTION_ARG_NONE, &opt_packages, "Show Cockpit package information", NULL }, + { "rules", 0, 0, G_OPTION_ARG_NONE, &opt_rules, "Show Cockpit bridge rules", NULL }, { "version", 0, 0, G_OPTION_ARG_NONE, &opt_version, "Show Cockpit version information", NULL }, { NULL } }; @@ -667,6 +703,11 @@ main (int argc, cockpit_packages_dump (); return 0; } + else if (opt_rules) + { + print_rules (opt_privileged); + return 0; + } else if (opt_version) { print_version (); @@ -681,6 +722,9 @@ main (int argc, ret = run_bridge (opt_interactive, opt_privileged); + if (packages) + cockpit_packages_free (packages); + g_free (opt_interactive); return ret; } diff --git a/src/bridge/cockpitrouter.c b/src/bridge/cockpitrouter.c index 4625376..dab359d 100644 --- a/src/bridge/cockpitrouter.c +++ b/src/bridge/cockpitrouter.c @@ -253,7 +253,6 @@ router_rule_invoke (RouterRule *rule, return (rule->callback) (self, channel, options, data, rule->user_data); } -#ifdef WITH_DEBUG static void router_rule_dump (RouterRule *rule) { @@ -261,27 +260,26 @@ router_rule_dump (RouterRule *rule) gchar *text; guint i; - g_debug ("rule:"); + g_print ("rule:\n"); for (i = 0; rule->matches && rule->matches[i].name != NULL; i++) { match = &rule->matches[i]; if (match->node) { text = cockpit_json_write (match->node, NULL); - g_debug (" %s: %s", match->name, text); + g_print (" %s: %s\n", match->name, text); g_free (text); } else if (match->glob) { - g_debug (" %s: glob", match->name); + g_print (" %s: glob\n", match->name); } else { - g_debug (" %s", match->name); + g_print (" %s\n", match->name); } } } -#endif static void process_init (CockpitRouter *self, @@ -999,11 +997,6 @@ cockpit_router_new (CockpitTransport *transport, cockpit_router_add_bridge (router, l->data); } -#ifdef WITH_DEBUG - for (l = router->rules; l != NULL; l = g_list_next (l)) - router_rule_dump (l->data); -#endif - return router; } @@ -1112,3 +1105,11 @@ out: g_bytes_unref (bytes); g_list_free_full (output, (GDestroyNotify) g_bytes_unref); } + +void +cockpit_router_dump_rules (CockpitRouter *self) +{ + GList *l; + for (l = self->rules; l != NULL; l = g_list_next (l)) + router_rule_dump (l->data); +} diff --git a/src/bridge/cockpitrouter.h b/src/bridge/cockpitrouter.h index 49dabb7..21d993e 100644 --- a/src/bridge/cockpitrouter.h +++ b/src/bridge/cockpitrouter.h @@ -53,6 +53,8 @@ void cockpit_router_add_peer (CockpitRoute JsonObject *match, CockpitPeer *peer); +void cockpit_router_dump_rules (CockpitRouter *self); + G_END_DECLS #endif /* __COCKPIT_ROUTER_H__ */ diff --git a/src/bridge/stub.c b/src/bridge/stub.c index 661a17b..e9bf1ce 100644 --- a/src/bridge/stub.c +++ b/src/bridge/stub.c @@ -52,7 +52,7 @@ * should be included here. */ -static CockpitPackages *packages; +static CockpitPackages *packages = NULL; extern gboolean cockpit_dbus_json_allow_external; @@ -120,6 +120,20 @@ on_signal_done (gpointer data) return TRUE; } +static CockpitRouter * +setup_router (CockpitTransport *transport, + GList **out_bridges) +{ + CockpitRouter *router = NULL; + GList *bridges = NULL; + + packages = cockpit_packages_new (); + bridges = cockpit_packages_get_bridges (packages); + router = cockpit_router_new (transport, payload_types, bridges); + *out_bridges = bridges; + return router; +} + static int run_bridge (const gchar *interactive) { @@ -157,7 +171,6 @@ run_bridge (const gchar *interactive) cockpit_dbus_json_allow_external = FALSE; - packages = cockpit_packages_new (); cockpit_dbus_internal_startup (interactive != NULL); if (interactive) @@ -175,8 +188,7 @@ run_bridge (const gchar *interactive) /* Set a path if nothing is set */ g_setenv ("PATH", "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", 0); - bridges = cockpit_packages_get_bridges (packages); - router = cockpit_router_new (transport, payload_types, bridges); + router = setup_router (transport, &bridges); cockpit_dbus_process_startup (); g_signal_connect (transport, "closed", G_CALLBACK (on_closed_set_flag), &closed); @@ -188,8 +200,6 @@ run_bridge (const gchar *interactive) g_object_unref (router); g_object_unref (transport); g_list_free (bridges); - cockpit_packages_free (packages); - packages = NULL; g_source_remove (sig_term); g_source_remove (sig_int); @@ -202,6 +212,22 @@ run_bridge (const gchar *interactive) } static void +print_rules (void) +{ + CockpitRouter *router = NULL; + GList *bridges = NULL; + CockpitTransport *transport = cockpit_interact_transport_new (0, 1, "--"); + + router = setup_router (transport, &bridges); + + cockpit_router_dump_rules (router); + + g_object_unref (router); + g_list_free (bridges); + g_object_unref (transport); +} + +static void print_version (void) { gint i, offset, len; @@ -240,12 +266,14 @@ main (int argc, int ret; static gboolean opt_packages = FALSE; + static gboolean opt_rules = FALSE; static gboolean opt_version = FALSE; static gchar *opt_interactive = NULL; static GOptionEntry entries[] = { { "interact", 0, 0, G_OPTION_ARG_STRING, &opt_interactive, "Interact with the raw protocol", "boundary" }, { "packages", 0, 0, G_OPTION_ARG_NONE, &opt_packages, "Show Cockpit package information", NULL }, + { "rules", 0, 0, G_OPTION_ARG_NONE, &opt_rules, "Show Cockpit bridge rules", NULL }, { "version", 0, 0, G_OPTION_ARG_NONE, &opt_version, "Show Cockpit version information", NULL }, { NULL } }; @@ -297,6 +325,11 @@ main (int argc, cockpit_packages_dump (); return 0; } + else if (opt_rules) + { + print_rules (); + return 0; + } else if (opt_version) { print_version (); @@ -311,6 +344,9 @@ main (int argc, ret = run_bridge (opt_interactive); + if (packages) + cockpit_packages_free (packages); + g_free (opt_interactive); return ret; } diff --git a/src/common/cockpitauthorize.c b/src/common/cockpitauthorize.c index 65e300b..9020469 100644 --- a/src/common/cockpitauthorize.c +++ b/src/common/cockpitauthorize.c @@ -457,7 +457,8 @@ out: } char * -cockpit_authorize_parse_x_conversation (const char *challenge) +cockpit_authorize_parse_x_conversation (const char *challenge, + char **conversation) { unsigned char *buf = NULL; int x_conversation; @@ -478,7 +479,7 @@ cockpit_authorize_parse_x_conversation (const char *challenge) return NULL; } - challenge = cockpit_authorize_subject (challenge, NULL); + challenge = cockpit_authorize_subject (challenge, conversation); if (!challenge) return NULL; diff --git a/src/common/cockpitauthorize.h b/src/common/cockpitauthorize.h index 60b6b77..ef4bd61 100644 --- a/src/common/cockpitauthorize.h +++ b/src/common/cockpitauthorize.h @@ -45,7 +45,8 @@ void * cockpit_authorize_parse_negotiate (const char *challenge char * cockpit_authorize_build_negotiate (const void *input, size_t length); -char * cockpit_authorize_parse_x_conversation (const char *challenge); +char * cockpit_authorize_parse_x_conversation (const char *challenge, + char **conversation); char * cockpit_authorize_build_x_conversation (const char *prompt, char **conversation); diff --git a/src/common/cockpitframe.c b/src/common/cockpitframe.c index 2fff435..18947ef 100644 --- a/src/common/cockpitframe.c +++ b/src/common/cockpitframe.c @@ -181,7 +181,7 @@ cockpit_frame_read (int fd, if (res < 0) { /* A read failure */ - if (errno != EINTR || errno != EAGAIN) + if (errno != EINTR && errno != EAGAIN) { errn = errno; goto out; diff --git a/src/common/test-authorize.c b/src/common/test-authorize.c index 670103d..08b4c6f 100644 --- a/src/common/test-authorize.c +++ b/src/common/test-authorize.c @@ -332,7 +332,7 @@ test_parse_x_conversation (void *data) if (fix->ret == NULL) expect_message = "invalid"; - result = cockpit_authorize_parse_x_conversation (fix->input); + result = cockpit_authorize_parse_x_conversation (fix->input, NULL); if (fix->errn != 0) assert_num_eq (errno, fix->errn); if (fix->ret) diff --git a/src/ssh/cockpitsshoptions.c b/src/ssh/cockpitsshoptions.c index 7943115..277271b 100644 --- a/src/ssh/cockpitsshoptions.c +++ b/src/ssh/cockpitsshoptions.c @@ -108,7 +108,7 @@ cockpit_ssh_options_from_env (gchar **env) options->command = get_environment_val (env, "COCKPIT_SSH_BRIDGE_COMMAND", default_command); options->remote_peer = get_environment_val (env, "COCKPIT_REMOTE_PEER", "localhost"); - if (options->knownhosts_data != NULL) + if (options->knownhosts_data != NULL && !options->knownhosts_authorize) options->allow_unknown_hosts = TRUE; else options->allow_unknown_hosts = get_allow_unknown_hosts (env); diff --git a/src/ssh/cockpitsshrelay.c b/src/ssh/cockpitsshrelay.c index 6dcd8a6..f5bee2b 100644 --- a/src/ssh/cockpitsshrelay.c +++ b/src/ssh/cockpitsshrelay.c @@ -327,6 +327,7 @@ prompt_with_authorize (CockpitSshData *data, const gchar *prompt, const gchar *msg, const gchar *default_value, + const gchar *host_key, gboolean echo) { JsonObject *request = NULL; @@ -352,6 +353,8 @@ prompt_with_authorize (CockpitSshData *data, json_object_set_string_member (request, "message", msg); if (default_value) json_object_set_string_member (request, "default", default_value); + if (host_key) + json_object_set_string_member (request, "host-key", host_key); json_object_set_boolean_member (request, "echo", echo); @@ -376,7 +379,7 @@ prompt_with_authorize (CockpitSshData *data, } else if (!g_str_equal (response, "")) { - result = cockpit_authorize_parse_x_conversation (response); + result = cockpit_authorize_parse_x_conversation (response, NULL); if (!result) g_message ("received unexpected \"authorize\" control message \"response\""); } @@ -507,10 +510,10 @@ prompt_for_host_key (CockpitSshData *data) host, port); prompt = g_strdup_printf ("MD5 Fingerprint (%s):", data->host_key_type); - reply = prompt_with_authorize (data, prompt, message, data->host_fingerprint, TRUE); + reply = prompt_with_authorize (data, prompt, message, data->host_fingerprint, data->host_key, TRUE); out: - if (reply && g_strcmp0 (reply, data->host_fingerprint) == 0) + if (g_strcmp0 (reply, data->host_fingerprint) == 0 || g_strcmp0 (reply, data->host_key) == 0) ret = NULL; else ret = "unknown-hostkey"; @@ -623,14 +626,6 @@ set_knownhosts_file (CockpitSshData *data, } g_debug ("%s: using known hosts file %s", data->logname, data->ssh_options->knownhosts_file); - if (ssh_options_set (data->session, SSH_OPTIONS_KNOWNHOSTS, - data->ssh_options->knownhosts_file) != SSH_OK) - { - g_warning ("Couldn't set knownhosts file location"); - problem = "internal-error"; - goto out; - } - if (!data->ssh_options->allow_unknown_hosts && !host_known) { g_message ("%s: refusing to connect to unknown host: %s:%d", @@ -651,7 +646,6 @@ verify_knownhost (CockpitSshData *data, const guint port) { const gchar *ret = "invalid-hostkey"; - const gchar *r; ssh_key key = NULL; unsigned char *hash = NULL; int state; @@ -664,7 +658,11 @@ verify_knownhost (CockpitSshData *data, goto done; } +#ifdef HAVE_SSH_GET_SERVER_PUBLICKEY + if (ssh_get_server_publickey (data->session, &key) != SSH_OK) +#else if (ssh_get_publickey (data->session, &key) != SSH_OK) +#endif { g_warning ("Couldn't look up ssh host key"); ret = "internal-error"; @@ -691,10 +689,11 @@ verify_knownhost (CockpitSshData *data, ssh_clean_pubkey_hash (&hash); } - r = set_knownhosts_file (data, host, port); - if (r != NULL) + if (ssh_options_set (data->session, SSH_OPTIONS_KNOWNHOSTS, + data->ssh_options->knownhosts_file) != SSH_OK) { - ret = r; + g_warning ("Couldn't set knownhosts file location"); + ret = "internal-error"; goto done; } @@ -816,7 +815,7 @@ do_interactive_auth (CockpitSshData *data) } else { - answer = prompt_with_authorize (data, prompt, msg, NULL, echo != '\0'); + answer = prompt_with_authorize (data, prompt, msg, NULL, NULL, echo != '\0'); if (answer) status = ssh_userauth_kbdint_setanswer (data->session, i, answer); else @@ -1302,6 +1301,23 @@ cockpit_ssh_connect (CockpitSshData *data, g_warn_if_fail (ssh_options_set (data->session, SSH_OPTIONS_HOST, host) == 0);; + if (!data->ssh_options->ignore_hostkey) + { + /* This is a single host, for which we have been told to ignore the host key */ + ignore_hostkey = cockpit_conf_string (COCKPIT_CONF_SSH_SECTION, "host"); + if (!ignore_hostkey) + ignore_hostkey = "127.0.0.1"; + + data->ssh_options->ignore_hostkey = g_str_equal (ignore_hostkey, host); + } + + if (!data->ssh_options->ignore_hostkey) + { + problem = set_knownhosts_file (data, host, port); + if (problem != NULL) + goto out; + } + rc = ssh_connect (data->session); if (rc != SSH_OK) { @@ -1313,13 +1329,7 @@ cockpit_ssh_connect (CockpitSshData *data, g_debug ("%s: connected", data->logname); - /* This is a single host, for which we have been told to ignore the host key */ - ignore_hostkey = cockpit_conf_string (COCKPIT_CONF_SSH_SECTION, "host"); - if (!ignore_hostkey) - ignore_hostkey = "127.0.0.1"; - - if (!g_str_equal (ignore_hostkey, host) && - !data->ssh_options->ignore_hostkey) + if (!data->ssh_options->ignore_hostkey) { problem = verify_knownhost (data, host, port); if (problem != NULL) @@ -1341,6 +1351,22 @@ cockpit_ssh_connect (CockpitSshData *data, goto out; } + if (data->ssh_options->remote_peer) + { + /* Try to set the remote peer env var, this will + * often fail as ssh servers have to be configured + * to allow it. + */ + rc = ssh_channel_request_env (channel, "COCKPIT_REMOTE_PEER", + data->ssh_options->remote_peer); + if (rc != SSH_OK) + { + g_debug ("%s: Couldn't set COCKPIT_REMOTE_PEER: %s", + data->logname, + ssh_get_error (data->session)); + } + } + rc = ssh_channel_request_exec (channel, data->ssh_options->command); if (rc != SSH_OK) { diff --git a/src/ssh/ssh.c b/src/ssh/ssh.c index 133d8e7..bead485 100644 --- a/src/ssh/ssh.c +++ b/src/ssh/ssh.c @@ -65,7 +65,7 @@ main (int argc, goto out; } - if (argc > 2) + if (argc != 2) { g_printerr ("cockpit-ssh: unexpected additional arguments, see --help\n"); ret = INTERNAL_ERROR; diff --git a/src/ssh/test-sshoptions.c b/src/ssh/test-sshoptions.c index fc35be7..a7ada3a 100644 --- a/src/ssh/test-sshoptions.c +++ b/src/ssh/test-sshoptions.c @@ -101,7 +101,7 @@ test_ssh_options (void) env = g_environ_setenv (env, "COCKPIT_SSH_ALLOW_UNKNOWN", "key", TRUE); options = cockpit_ssh_options_from_env (env); g_assert_false (options->ignore_hostkey); - g_assert_true (options->allow_unknown_hosts); + g_assert_false (options->allow_unknown_hosts); g_assert_true (options->knownhosts_authorize); g_free (options); g_strfreev (env); diff --git a/src/ws/cockpitauth.c b/src/ws/cockpitauth.c index d018d19..cee1855 100644 --- a/src/ws/cockpitauth.c +++ b/src/ws/cockpitauth.c @@ -196,7 +196,7 @@ cockpit_session_unref (gpointer data) { if (session->control_sig) g_signal_handler_disconnect (session->transport, session->control_sig); - if (session->control_sig) + if (session->close_sig) g_signal_handler_disconnect (session->transport, session->close_sig); g_object_unref (session->transport); } @@ -581,14 +581,28 @@ reply_authorize_challenge (CockpitSession *session) char *authorize_type = NULL; char *authorization_type = NULL; const gchar *cookie = NULL; + const gchar *response = NULL; JsonObject *login_data = NULL; gboolean ret = FALSE; if (!session->authorize) goto out; - if (!cockpit_json_get_string (session->authorize, "challenge", NULL, &challenge) || !challenge || - !cockpit_json_get_string (session->authorize, "cookie", NULL, &cookie) || !cookie) + if (!cockpit_json_get_string (session->authorize, "cookie", NULL, &cookie) || + !cockpit_json_get_string (session->authorize, "challenge", NULL, &challenge) || + !cockpit_json_get_string (session->authorize, "response", NULL, &response)) + goto out; + + if (response && !cookie) + { + cockpit_memory_clear (session->authorization, -1); + g_free (session->authorization); + session->authorization = g_strdup (response); + ret = TRUE; + goto out; + } + + if (!challenge || !cookie) goto out; if (!cockpit_authorize_type (challenge, &authorize_type)) diff --git a/src/ws/mock-auth-command.c b/src/ws/mock-auth-command.c index 60dff33..71ff8e7 100755 --- a/src/ws/mock-auth-command.c +++ b/src/ws/mock-auth-command.c @@ -95,7 +95,7 @@ static void write_message (const char *message) { if (cockpit_frame_write (STDOUT_FILENO, (unsigned char *)message, strlen (message)) < 0) - err (EX, "coludn't write init message"); + err (EX, "coludn't write message"); } static void @@ -131,6 +131,22 @@ main (int argc, { write_init_message ("\"problem\":\"authentication-failed\""); } + if (strcmp (data, "no-cookie") == 0) + { + write_message ("\n{\"command\":\"authorize\",\"response\": \"user me\"}"); + free (message); + write_authorize_challenge ("*"); + message = read_authorize_response (); + if (!data || strcmp (message, "user me") != 0) + { + write_init_message ("\"problem\": \"authentication-failed\""); + } + else + { + write_init_message ("\"user\": \"me\""); + success = 1; + } + } else if (strcmp (data, "failslow") == 0) { sleep (2); @@ -301,6 +317,7 @@ main (int argc, } out: + free (message); if (success) { if (launch_bridge) diff --git a/src/ws/session.c b/src/ws/session.c index 9cd332b..12aba04 100644 --- a/src/ws/session.c +++ b/src/ws/session.c @@ -453,7 +453,7 @@ pam_conv_func (int num_msg, } authorization = read_authorize_response (msg[i]->msg); - prompt_resp = cockpit_authorize_parse_x_conversation (authorization); + prompt_resp = cockpit_authorize_parse_x_conversation (authorization, NULL); debug ("got prompt response"); if (prompt_resp) @@ -1096,6 +1096,7 @@ static const char *env_names[] = { "G_MESSAGES_DEBUG", "G_SLICE", "PATH", + "COCKPIT_REMOTE_PEER", NULL }; diff --git a/src/ws/test-auth.c b/src/ws/test-auth.c index 345763a..6f84b01 100644 --- a/src/ws/test-auth.c +++ b/src/ws/test-auth.c @@ -679,6 +679,12 @@ static const ErrorFixture fixture_ssh_auth_with_error = { .header = "testsshscheme with-error", }; +static const SuccessFixture fixture_no_cookie = { + .warning = NULL, + .data = NULL, + .header = "testscheme no-cookie" +}; + static const SuccessFixture fixture_no_data = { .warning = NULL, .data = NULL, @@ -1178,6 +1184,8 @@ main (int argc, setup_normal, test_custom_fail, teardown_normal); g_test_add ("/auth/custom-success", Test, &fixture_no_data, setup_normal, test_custom_success, teardown_normal); + g_test_add ("/auth/custom-no-cookie-success", Test, &fixture_no_cookie, + setup_normal, test_custom_success, teardown_normal); g_test_add ("/auth/custom-data-then-success", Test, &fixture_data_then_success, setup_normal, test_custom_success, teardown_normal); g_test_add ("/auth/custom-fail-auth", Test, &fixture_auth_failed, diff --git a/test/common/testlib.py b/test/common/testlib.py index ab9b4b5..0be3f24 100755 --- a/test/common/testlib.py +++ b/test/common/testlib.py @@ -627,6 +627,7 @@ class MachineCase(unittest.TestCase): def allow_hostkey_messages(self): self.allow_journal_messages('.*: .* host key for server is not known: .*', + '.*: refusing to connect to unknown host: .*', '.*: failed to retrieve resource: hostkey-unknown') def allow_restart_journal_messages(self): -- 2.9.4