+
    *je  ã                   ól   € R t ^ RIt^ RIt^ RIt^ RItRtRtRtR t	R	R lt
R t]R8X  d
   ]! 4        R# R# )
uÑ  paas-cmk-sync â€” runs ON the Checkmk server (systemd timer).

Model: ONE Checkmk host per paas project, named after the project's MAIN
domain (uptime + cert via folder-scoped custom_checks rules on $HOSTNAME$).
Every OTHER configured domain of the project gets its own
"Certificate <domain>" service on that same host, via host-scoped
custom_checks rules that this script reconciles (marker in the rule
description). Changing a project's main domain simply renames the host:
old host deleted, new one created, secondary cert rules follow.

Config: /etc/paas-cmk-sync.conf  (KEY=VALUE)
  PANEL_URL=https://deploy.younex.de
  TOKEN=<CMK_AGENT_TOKEN>
  SITE=monitoring
  VIP=188.40.238.163
  EXTRA_DOMAINS=deploy.younex.de
Nz/etc/paas-cmk-sync.confÚ
paas_sitesz	paas-certc                  óÞ   € / p \        \        4       FW  pVP                  4       pV'       g   K  VP                  R 4      '       d   K6  RV9   g   K?  VP	                  R^4      w  r#W0V&   KY  	  V # )Ú#Ú=)ÚopenÚCONFÚstripÚ
startswithÚsplit)ÚcfgÚlineÚkÚvs       ÚI/Users/younes/Documents/develop/phpstorm/dotnews-paas/infra/paas-cmk-syncÚ	load_confr      sY   € Ø
€CÜ”T–
ˆØ�z‰z‹|ˆß‰4˜Ÿ™¨×,Ô,°¸¶Ø—:‘:˜c 1Ó%‰DˆAØ�‹Fñ	 ð
 €Jó    c                 óÖ  € \         P                  P                  YVe%   \        P                  ! V4      P                  4       MR R7      pVP                  RR4       VP                  RR4       T;'       g    / P                  4        F  w  rgVP                  Wg4       K  	   \         P                  P                  WT^R7      ;_uu_ 4       pVP                  VP                  4       P                  4       3uuR R R 4       #   + '       g   i     R # ; i  \         P                  P                   d5   p	T	P                  T	P                  4       P                  4       3u R p	?	# R p	?	ii ; i)N)ÚmethodÚdatazContent-Typezapplication/jsonÚAccept)ÚcontextÚtimeout)ÚurllibÚrequestÚRequestÚjsonÚdumpsÚencodeÚ
add_headerÚitemsÚurlopenÚstatusÚreadÚdecodeÚerrorÚ	HTTPErrorÚcode)
r   ÚurlÚbodyÚheadersÚctxÚreqr   r   ÚrÚes
   &&&&&     r   Úhttpr.   '   sÿ   € Ü
�.‰.×
 Ñ
  ØCGÒCS¤d§j¢j°Ó&6×&=Ñ&=Ô&?ÐY]ð !ó _€Cà‡N�N�>Ð#5Ô6Ø‡N�N�8Ð/Ô0Ø—�˜B×%Ñ%Ö'‰ˆØ�‰�qÖñ (ð)Ü�^‰^×#Ñ# C¸bÐ#×AÔAÀQØ—8‘8˜QŸV™V›XŸ_™_Ó.Ð.÷ B×A×AÓAûä�<‰<×!Ñ!ô )Ø�v‰v�q—v‘v“x—‘Ó(Ð(Õ(ûð)ús<   Â#)D Ã*DÃ6
D ÄD	ÄD ÄD ÄE(Ä4)E#ÅE(Å#E(c                  ól  € \        4       p \        R V R,           R24      P                  4       P                  4       pRV R,           R2pRRV 2/p\	        RV R,           R	2RR
V R,           2/\
        P                  ! 4       R7      w  rEV^È8w  d5   \        RV 2\        P                  R7       \        P                  ! ^4       / p\        P                  ! V4      P                  R. 4       FÕ  pVP                  R. 4       Uu. uF8  qˆP                  4       '       g   K  VP                  4       P                  4       NK:  	  p	pV	'       g   Ka  \        VP                  R4      ;'       g
    V	^ ,          4      P                  4       P                  4       p
W©9  d
   V	^ ,          p
\!        \#        V	4      V
0,
          4      Wj&   K×  	  V P                  RR4      P%                  R4       F=  pVP                  4       P                  4       pV'       g   K+  VP'                  V. 4       K?  	  Rp\	        RV R\(         R2VR7      w  rEV^È8w  d?   \        RV RVR,           2\        P                  R7       \        P                  ! ^4       \        P                  ! V4      P                  R. 4       Uu0 uF  qÌR,          kK  	  pp\!        \#        V4      V,
          4       FT  p\	        RV R2R R!\(         2R"VR#R$V R%,          R&R'R(R)V 2//VR*7      w  rE\        R+V R,V 24       T;'       g    V^È8H  pKV  	  \!        V\#        V4      ,
          4       F8  p\	        R-V R.V 2VR7      w  rE\        R/V R,V 24       T;'       g    V^Ì8H  pK:  	  \	        RV R02VR7      w  rEV^È8w  d?   \        R1V RVR,           2\        P                  R7       \        P                  ! ^4       / p\        P                  ! V4      P                  R. 4       F¢  pVP                  R24      ;'       g    / P                  R34      ;'       g    / P                  R44      ;'       g    RpVP%                  4       p\+        V4      ^8X  g   Kr  V^ ,          \,        8X  g   K†  VR,          VV^,          V^,          3&   K¤  	  VP/                  4        UUUu0 uF  w  ppV F  pVV3kK	  	  K  	  pppp\!        V\#        V4      ,
          4       Fn  w  ppR5V: R6V: R72p\	        RV R82R9R:R R!\(         2R3R4\,         R;V R;V 2/R<VR=R"R>V.R?R@///VR*7      w  rE\        RAV RBV R,V 24       T;'       g    V^È8H  pKp  	  \!        \#        V4      V,
          4       FF  w  pp\	        R-V RCWþV3,           2VR7      w  rE\        RDV RBV R,V 24       T;'       g    V^Ì8H  pKH  	  V'       d9   \	        RV RE2RFRRV R,          .RGRH// VCRIRJ/CR*7      w  rE\        RKV 24       RM# \        RL4       RM# u upi u upi u upppi )Nz/omd/sites/ÚSITEz./var/check_mk/web/automation/automation.secretzhttp://localhost/z/check_mk/api/1.0ÚAuthorizationzBearer automation ÚGETÚ	PANEL_URLz
/cmk-siteszBearer ÚTOKEN)r)   r*   zpanel unreachable: )ÚfileÚsitesÚdomainsÚmainÚEXTRA_DOMAINSÚ Ú,Fz/objects/folder_config/~z/collections/hosts)r)   zcannot list folder hosts (z): :NéÈ   NÚvalueÚidÚPOSTz)/domain-types/host_config/collections/allÚfolderÚ/Ú	host_nameÚ
attributesÚ	ipaddressÚVIPÚ	tag_agentzno-agentÚaliaszpaas website )r(   r)   z	add host z: ÚDELETEz/objects/host_config/zremove host z=/domain-types/rule/collections/all?ruleset_name=custom_checkszcannot list rules (Ú
extensionsÚ
propertiesÚdescriptionz%{'service_description': 'Certificate z"', 'command_line': 'check_http -H z -S --sni -C 21,7'}z"/domain-types/rule/collections/allÚrulesetÚcustom_checksÚ Ú	value_rawÚ
conditionsÚmatch_onÚoperatorÚone_ofzadd cert rule z on z/objects/rule/zremove cert rule z</domain-types/activation_run/actions/activate-changes/invokeÚredirectÚforce_foreign_changesTzIf-MatchÚ*z
activate: zin syncN)r   r   r"   r   r.   ÚsslÚcreate_default_contextÚprintÚsysÚstderrÚexitr   ÚloadsÚgetÚlowerÚstrÚsortedÚsetr
   Ú
setdefaultÚFOLDERÚlenÚ	RULE_MARKr   )r   ÚsecretÚapiÚauthÚstr(   ÚdesiredÚsiteÚdr7   r8   ÚchangedÚhÚcurrent_hostsÚhostÚcurrent_rulesr,   ÚdescÚpartsÚsecsÚdomÚdesired_rulesr=   s                          r   r8   r8   5   sø  € Ü
‹+€CÜ�K  F¥˜}Ð,ZÐ[Ó\×aÑaÓc×iÑiÓk€FØ˜c &�k˜]Ð*;Ð
<€CØÐ1°&°Ð:Ð;€Dô �E˜c +Õ.Ð/¨zÐ:Ø,°¸¸G½°~Ð.FÐGÜ×2Ò2Ó4ô6�H€Bð 
ˆS„yÜÐ# B 4Ð(¬s¯z©zÕ:Ü�Š�ŒØ€GÜ—
’
˜4Ó ×$Ñ$ W¨bÖ1ˆØ.2¯h©h°yÀ"Ô.EÓSÑ.E¨ÏÉÏÔ$�1—7‘7“9—?‘?Ö$Ñ.EˆÐSßÙÜ�4—8‘8˜FÓ#×1Ð1 w¨q¥zÓ2×8Ñ8Ó:×@Ñ@ÓBˆØÔØ˜1•:ˆDÜœs 7›|¨t¨fÕ4Ó5ˆ‹ñ 2ð �W‰W�_ bÓ)×/Ñ/°Ö4ˆØ�G‰G‹I�O‰OÓˆß‰1Ø×Ñ˜q "Ö%ñ 5ð
 €Gô �E˜c˜UÐ":¼6¸(ÐBTÐUÐ_cÔd�H€BØ	ˆS„yÜÐ*¨2¨$¨c°$°tµ*°Ð>ÄSÇZÁZÕPÜ�Š�ŒÜ&*§j¢j°Ó&6×&:Ñ&:¸7ÀBÔ&GÓHÑ&G �t—W�WÑ&G€MÐHä”s˜7“| mÕ3Ö4ˆÜ˜ 3 %Ð'PÐ QØ˜œ&˜�lØ˜Ø˜;¨¨E­
°KÀØ" m°D°6Ð$:ð<ðY
ð
 ô‰ˆô 	�	˜$˜˜r " Ð&Ô'Ø×&Ð&˜R 3™YŠñ 5ô �}¤s¨7£|Õ3Ö4ˆÜ˜ S EÐ)>¸t¸fÐ"EÈtÔT‰ˆÜ�˜T˜F " R DÐ)Ô*Ø×&Ð&˜R 3™YŠñ 5ô �E˜c˜UÐ"_Ð`Ø ô"�H€Bà	ˆS„yÜÐ# B 4 s¨4°­:¨,Ð7¼c¿j¹jÕIÜ�Š�ŒØ€MÜ�ZŠZ˜Ó×!Ñ! '¨2Ö.ˆØ—%‘%˜Ó%×+Ð+¨×0Ñ0°Ó>×DÐDÀ"×IÑIÈ-ÓX×^Ð^Ð\^ˆØ—
‘
“ˆÜˆu‹:˜Ž?˜u Q�x¬9Ö4Ø23°Dµ'ˆM˜5 �8 U¨1¥XÐ.Ó/ñ	 /ð 4;·=±=´?ÕS±?¡Z T¨4ËdÀs�d˜C“[Éd‘[±?€MÒSä˜M¬C°Ó,>Õ>Ö?‰	ˆ‰cãKNÓPSðUˆä˜ 3 %Ð'IÐ JØ�Ø˜œ&˜�lØ˜=¬Y¨K°q¸¸¸aÀ¸uÐ*EÐFØ˜Ø˜;¨°d°V¸ZÈÐ(RÐSðR
ð ô‰ˆô 	�˜s˜e 4¨ v¨R°¨tÐ4Ô5Ø×&Ð&˜R 3™YŠñ @ô œc -Ó0°=Õ@ÖA‰ˆˆsÜ˜ S E¨¸ÈSÀkÕ8RÐ7SÐ"TÐ^bÔc‰ˆÜÐ! #  d¨4¨&°°2°$Ð7Ô8Ø×&Ð&˜R 3™YŠñ B÷
 Ü˜ 3 %Ð'cÐ dØ(¨%°¸3¸v½;¸-ÐI`ÐbfÐgØ 9 4Ð 9¨°SÑ 9ô;‰ˆô 	�
˜2˜$ÐÖ äˆiÖùòS Tùò& Iùô: Ts   ÄX%Ä!"X%Ê2X*Ó	X/Ú__main__)NNN)Ú__doc__r   rW   rZ   Úurllib.requestr   r   rd   rf   r   r.   r8   Ú__name__© r   r   Ú<module>r}      sL   ðñó" Û 
Û 
Û à €Ø	€Ø€	òô)òXðv ˆzÔÙ†Fñ r   