+
    ˜qgj©  ã                   ó$  a € R t 0 t R t^ RIt^ RIt^ RIHtHt ^ RIHt ^ RI	H
t
 ^ RIHt ^ RIHt RRR	R
.R]RR./t] ^ k ]P                   ! ]4      t]! . R O4      tRtRtR!tR R ltR R ltR R ltR R ltR R ltR R ltR tR R ltR# )"Ú	WireguardN)ÚsubpÚutil©ÚCloud)ÚConfig)Ú
MetaSchema)ÚPER_INSTANCEÚidÚcc_wireguardÚdistrosÚubuntuÚ	frequencyÚactivate_by_schema_keysÚ	wireguardi€  Ú
c                ó$   € V ^8„  d   QhR\         /# ©é   Úwg_int©Údict)Úformats   "Ú?/usr/lib/python3/dist-packages/cloudinit/config/cc_wireguard.pyÚ__annotate__r      s   € ÷ 
ñ 
¬4ñ 
ó    c                óü  € . p\         P                  \        V P                  4       4      4      pV'       d/   RP	                  \        V4      4      pVP                  RV 24       \        V P                  4       4       FK  w  rEVR8X  g   VR8X  g
   VR8X  g   K  \        V\        4      '       d   K4  VP                  RV RV 24       KM  	  V'       d(   \        R\         \        P	                  V4       24      hR	# )
a>  Validate user-provided wg:interfaces option values.

This function supplements flexible jsonschema validation with specific
value checks to aid in triage of invalid user-provided configuration.

@param wg_int: Dict of configuration value under 'wg:interfaces'.

@raises: ValueError describing invalid values provided.
z, z%Missing required wg:interfaces keys: ÚnameÚconfig_pathÚcontentz$Expected a string for wg:interfaces:ú. Found z*Invalid wireguard interface configuration:N)ÚREQUIRED_WG_INT_KEYSÚ
differenceÚsetÚkeysÚjoinÚsortedÚappendÚitemsÚ
isinstanceÚstrÚ
ValueErrorÚNL)r   ÚerrorsÚmissingr$   ÚkeyÚvalues   &     r   Úsupplemental_schema_validationr1      sÐ   € ð €FÜ"×-Ñ-¬c°&·+±+³-Ó.@ÓA€GßØ�y‰yœ ›Ó)ˆØ�‰Ð=¸d¸VÐDÔEä˜VŸ\™\›^Ö,‰
ˆØ�&Œ=˜C =Ô0°C¸9Ö4DÜ˜e¤S×)Ô)Ø—‘Ø:¸3¸%¸xÈÀwÐOöñ -÷ ÜØ8¼¸¼R¿W¹WÀV»_Ð<MÐNó
ð 	
ñ r   c                ó$   € V ^8„  d   QhR\         /# r   r   )r   s   "r   r   r   ;   s   € ÷ ñ œñ r   c           
     óH  € \         P                  RV R,          4        \         P                  RV R,          4       \        P                  ! V R,          V R,          \        R7       R	#   \
         d.   p\        RT R,           R\         \        T4       24      ThR	p?ii ; i)
zÕWriting user-provided configuration into Wireguard
interface configuration file.

@param wg_int: Dict of configuration value under 'wg:interfaces'.

@raises: RuntimeError for issues writing of configuration file.
z"Configuring Wireguard interface %sr   z#Writing wireguard config to file %sr   r   )Úmodez-Failure writing Wireguard configuration file Ú:N)	ÚLOGÚdebugr   Ú
write_fileÚWG_CONFIG_FILE_MODEÚ	ExceptionÚRuntimeErrorr,   r*   )r   Úes   & r   Úwrite_configr=   ;   s•   € ô ‡I�IÐ2°F¸6µNÔCð	Ü�	‰	Ð7¸ÀÕ9NÔOÜ�ŠØ�=Õ! 6¨)Õ#4Ô;N÷	
øô ô ÜðØ�}Õ%Ð& a¬ t¬C°«F¨8ð5ó
ð ð	ûðús   ŸAA) Á)B!Á4(BÂB!c                ó0   € V ^8„  d   QhR\         R\        /# )r   r   Úcloud)r   r   )r   s   "r   r   r   P   s   € ÷ ñ ”dð ¤5ñ r   c                óŠ  €  \         P                  RV R,          4       VP                  P                  RRV R,           24       \         P                  RV R,          4       VP                  P                  RRV R,           24       R#   \        P
                   d$   p\        R\         \        T4       24      ThRp?ii ; i)	z¡Enable and start Wireguard interface

@param wg_int: Dict of configuration value under 'wg:interfaces'.

@raises: RuntimeError for issues enabling WG interface.
zEnabling wg-quick@%s at bootr   Úenablez	wg-quick@z!Bringing up interface wg-quick@%sÚrestartz0Failed enabling/starting Wireguard interface(s):N)	r6   r7   ÚdistroÚmanage_servicer   ÚProcessExecutionErrorr;   r,   r*   )r   r?   r<   s   && r   Ú	enable_wgrF   P   s¥   € ðÜ�	‰	Ð0°&¸µ.ÔAØ�‰×#Ñ# H°	¸&À½.Ð9IÐ.JÔKÜ�	‰	Ð5°v¸fµ~ÔFØ�‰×#Ñ# I°¸6À&½>Ð:JÐ/KÖLøÜ×%Ñ%ô ÜØ>¼r¸dÄ3ÀqÃ6À(ÐKó
àð	ûðús   ‚BB
 Â
CÂB=Â=Cc                ó$   € V ^8„  d   QhR\         /# ©r   Úwg_readinessprobes©Úlist)r   s   "r   r   r   b   s   € ÷ 
ñ 
¼$ñ 
r   c                óî   € . p^ pV  F;  p\        V\        4      '       d   K  VP                  RV RV 24       V^,          pK=  	  V'       d(   \        R\         \        P                  V4       24      hR# )z¢Basic validation of user-provided probes

@param wg_readinessprobes: List of readinessprobe probe(s).

@raises: ValueError of wrong datatype provided for probes.
z(Expected a string for readinessprobe at r    z Invalid readinessProbe commands:N)r)   r*   r'   r+   r,   r%   )rI   r-   ÚposÚcs   &   r   Ú!readinessprobe_command_validationrO   b   sz   € ð €FØ
€CÛˆÜ˜!œS×!Ô!Ø�M‰MØ:¸3¸%¸xÈÀsÐKôð �1�HŠCñ  ÷ ÜØ.¬r¨d´2·7±7¸6³?Ð2CÐDó
ð 	
ñ r   c                ó$   € V ^8„  d   QhR\         /# rH   rJ   )r   s   "r   r   r   x   s   € ÷ 
ñ 
¤tñ 
r   c                ó^  € . pV  F<  p \         P                  R\        V4      4       \        P                  ! VRRR7       K>  	  V'       d(   \        R\         \        P                  V4       24      hR#   \        P                   d"   pTP                  T RT 24        Rp?K¢  Rp?ii ; i)z¨Execute provided readiness probe(s)

@param wg_readinessprobes: List of readinessprobe probe(s).

@raises: ProcessExecutionError for issues during execution of probes.
zRunning readinessprobe: '%s'T©ÚcaptureÚshellz: Nz&Failed running readinessprobe command:)	r6   r7   r*   r   rE   r'   r;   r,   r%   )rI   r-   rN   r<   s   &   r   ÚreadinessproberU   x   sš   € ð €FÛˆð	'Ü�I‰IÐ4´c¸!³fÔ=Ü�IŠI�a ¨T×2ñ  ÷ ÜØ4´R°D¼¿¹À»Ð8IÐJó
ð 	
ñ øô ×)Ñ)ô 	'Ø�M‰M˜Q˜C˜r ! ˜+×&Ò&ûð	'ús   ‰8A6Á6B,ÂB'Â'B,c                ó$   € V ^8„  d   QhR\         /# )r   r?   r   )r   s   "r   r   r   �   s   € ÷ ñ ¬Eñ r   c                óÀ  € R.p\         P                  ! R4      '       d   R# \        P                  ! 4       \        8  d   VP                  R4        V P                  P                  4         T P                  P                  T4       R#   \         d    \        P                  ! \        R4       h i ; i  \         d    \        P                  ! \        R4       h i ; i)z}Install wireguard packages and tools

@param cloud: Cloud object

@raises: Exception for issues during package
installation.
zwireguard-toolsÚwgNr   zPackage update failedz!Failed to install wireguard-tools)r   Úwhichr   Úkernel_versionÚMIN_KERNEL_VERSIONr'   rC   Úupdate_package_sourcesr:   Úlogexcr6   Úinstall_packages)r?   Úpackagess   & r   Ú maybe_install_wireguard_packagesr`   �   s¯   € ð "Ð"€Hä‡z‚z�$×ÒÙô ×ÒÓÔ1Ô1Ø�‰˜Ô$ðØ�‰×+Ñ+Ô-ðØ�‰×%Ñ% hÖ/øô	 ô Ü�Š”CÐ0Ô1Øðûô
 ô Ü�Š”CÐ<Ô=Øðús   ÁB
 Á-B5 Â
(B2Â5(Cc            	     óš  €  \         P                   ! RRRR7      p \        P                  ! RV P                  P	                  4       4      '       g1   \
        P                  R4       \         P                   ! RRRR7       R# R#   \         P                   d4   p\        P                  ! \
        R\         \        T4       24       h Rp?ii ; i)	zQLoad wireguard kernel module

@raises: ProcessExecutionError for issues modprobe
ÚlsmodTrR   r   zLoading wireguard kernel modulezmodprobe wireguardz Could not load wireguard module:N)r   ÚreÚsearchÚstdoutÚstripr6   r7   rE   r   r]   r,   r*   )Úoutr<   s     r   Úload_wireguard_kernel_modulerh   «   s“   € ð
Ü�iŠi˜¨°TÔ:ˆÜ�yŠy˜ c§j¡j×&6Ñ&6Ó&8×9Ò9Ü�I‰IÐ7Ô8Ü�IŠIÐ*°DÀ×Eñ :øô ×%Ñ%ô Ü�Š”CÐ;¼B¸4ÄÀAÃ¸xÐHÔIØûðús   ‚AB Á.B ÂC
Â.CÃC
c          
      óL   € V ^8„  d   QhR\         R\        R\        R\        RR/# )r   r   Úcfgr?   ÚargsÚreturnN)r*   r   r   rK   )r   s   "r   r   r   º   s6   € ÷ $Añ $A”ð $Aœ6ð $A¬%ð $A´tð $AÀñ $Ar   c                 ó¢  € R pRV9   d    \         P                  R4       VR,          pM\         P                  RV 4       R # \        V4       \        4        VR,           F$  p\	        V4       \        V4       \        WR4       K&  	  RV9   d-   VR,          e"   VR,          p\        V4       \        V4       R # \         P                  R4       R # )Nr   z!Found Wireguard section in configz<Skipping module named %s, no 'wireguard' configuration foundÚ
interfacesrU   z+Skipping readinessprobe - no checks defined)	r6   r7   r`   rh   r1   r=   rF   rO   rU   )r   rj   r?   rk   Ú
wg_sectionr   rI   s   &&&&   r   Úhandlerp   º   s¼   € Ø€Jà�cÔÜ�	‰	Ð5Ô6Ø˜Õ%‰
ä�	‰	ØJØô	
ñ 	ô % UÔ+Ü Ô"à˜\×*Ð*ˆä& vÔ.ô 	�VÔô 	�&Ö ñ +ð 	˜JÔ&ØÐ'Õ(Ò4à'Ð(8Õ9ÐÜ)Ð*<Ô=ÜÐ)Ö*ä�	‰	Ð?Ö@r   c                ó@   € V ^8„  d   Qh/ ^ \         9   d
   \        ;R&   # )r   Úmeta)Ú__conditional_annotations__r   )r   s   "r   r   r      s   € ‡�÷ò „jñ ò r   )r   r   r   )é   é   )!rs   Ú__doc__Úloggingrc   Ú	cloudinitr   r   Úcloudinit.cloudr   Úcloudinit.configr   Úcloudinit.config.schemar   Úcloudinit.settingsr	   rr   Ú	getLoggerÚ__name__r6   Ú	frozensetr!   r9   r,   r[   r1   r=   rF   rO   rU   r`   rh   rp   r   )rs   s   @r   Ú<module>r€      sž   øðö ã Û 	ç  Ý !Ý #Ý .Ý +ð 	ˆ.Ø�ˆzØ�Ø ˜}ð	€ó ð ×Ò˜Ó!€á Ò!CÓDÐ ØÐ Ø	€ØÐ õ
õ:õ*õ$
õ,
õ*ò<÷$Ar   