§ WèÄj‰'ãó¾—ddlZddlZddlZddlZddlZddlZddlmZej e ¦«Z Gd„d¦«Z Gd„de ¦«Z de iZd„Zd efd „Zd „Zd „ZdS) éN)ÚgettextcóN—eZdZdZdZdZdZdZdZd„Z d„Z d„Z de de fd „Z d „ZdS) ÚPluginz\ Helper class which hides differences of WordPress plugins behind abstract methods. ÚNcó´—| ¦«x}€dS|D]}d||vr||dcSŒt d|j¦«dS)z'Get the plugin version from plugin dataNÚversionz Can't get the %s plugin version.)Ú_get_data_dictÚloggerÚerrorÚNAME)ÚselfÚ plugin_dataÚsections ú\/opt/cloudlinux/venv/lib64/python3.11/site-packages/xray/adviser/wordpress_plugin_manager.pyÚ _get_versionzPlugin._get_versionsv€à×.Ò.Ñ0Ô0Ð 0ˆKÐ 9Ø�4à"ð 7ð 7ˆGؘK¨Ô0Ð0Ð0Ø" 7Ô+¨IÔ6Ð6Ð6Ð6ð1õ � Š Ð8¸$¼)ÑDÔDÐD؈tóc󢇗tj¦«Š‰ |j¦«ˆfd„‰ ¦«D¦«}|S)zRead the ini filecóV•—i|]%}|t‰ |¦«¦«“Œ&S©)ÚdictÚitems)Ú.0ÚsÚ config_objects €rú z)Plugin._read_ini_file..-s1ø€ÐTÐTÐT°a�!•T˜-×-Ò-¨aÑ0Ô0Ñ1Ô1ÐTÐTÐTr)Ú configparserÚ ConfigParserÚreadÚINFO_FILE_PATHÚsections)r Úoutputrs @rÚ_read_ini_filezPlugin._read_ini_file)sRø€å$Ô1Ñ3Ô3ˆ Ø×Ò˜4Ô.Ñ/Ô/Ð/ØTÐTÐTÐT¸=×;QÒ;QÑ;SÔ;SÐTÑTÔTˆØˆ rcóâ—|j€btj |j¦«r| ¦«}||_n"t  d|j¦«dS|jS)ú!Get the plugin data from ini fileNzCan't read the %s plugin data.) Ú PLUGIN_DATAÚosÚpathÚexistsrr"r r r )r Údatas rr zPlugin._get_data_dict0se€à Ô Ð #ÝŒw�~Š~˜dÔ1Ñ2Ô2ð Ø×*Ò*Ñ,Ô,�Ø#'�Ô Ð å— ’ Ð>ÀÄ ÑJÔJÐJØ�tØÔÐrÚplugin_versionÚdest_dircó„ —|r|s"t d|j¦«dStj |¦«}tj |¦«sMtd¦« |¦«}t |¦«td|¬¦«Stj d¦«}|€:td¦«}t |¦«td|¬¦«S tj t|¦«¦«j}nQ#tt f$r=td¦«}t |¦«td|¬¦«cYSwxYwtj |¦«}| |d z¦«sS||krMtd ¦« |¦«}t |¦«td|¬¦«S| ¦«}|€Rtd ¦« |j¦«}t |¦«td|¬¦«S||krDtd ¦«|j|fz}t |¦«td|¬¦«S|jd z|z}tj ||dz¦«}||k�rÃ|��À tj|¦«} t-j| j¦«rMtd¦« |¦«}t |¦«td|¬¦«Std|¬¦«S#t2$rYnwxYwd} d} tj|tjtjztjz¦«} tjd| ›�¦«} |  |d z¦«s€| |krztd¦« | ¦«}t |¦«td|¬¦«| �tj| ¦«| �tj| ¦«SS|dz} tj| tj tj!ztj"ztjzd| ¬¦«} t5|j#d¦«5} | $d¦«}|sn3tK|¦«}|r!tj&| |¦«}||d…}|°!ŒK ddd¦«n #1swxYwYtj'| ¦«}tj(| |j)|j*¦«nÛ#tV$rYnÏtX$rÃ}td¦« |jt[|¦«¦«}t |¦«| �*| �( tj.| | ¬¦«n#tX$rYnwxYwtd|¬¦«cYd}~| �tj| ¦«| �tj| ¦«SSd}~wwxYw| �tj| ¦«| �tj| ¦«n2#| �tj| ¦«| �tj| ¦«wwxYwtd|¬¦«S)z“ Get plugin info if there is a new version and the update is true copy the plugin archive to the given folder for updating z:Can't get old plugin version or destination folder for %s.Nz(Destination directory does not exist: {}F©r Ú XRAYEXEC_UIDz+XRAYEXEC_UID is not set, refusing operationz-Cannot resolve requesting user home directoryú/z.Destination directory is outside user home: {}z&Cannot determine plugin version for {}zCThe %s plugin is already at version %s, there is nothing to installú-z.zipz&Plugin path is a symlink, refusing: {}T)Úpackagez/proc/self/fd/z0Resolved directory path is outside user home: {}i¤)Údir_fdÚrbizCError happened while copying WordPress {} plugin archive. Error: {})/r r r r&r'ÚrealpathÚisdirÚ_ÚformatÚformat_responseÚgetenvÚpwdÚgetpwuidÚintÚpw_dirÚKeyErrorÚ ValueErrorÚ startswithrÚinfoÚjoinÚlstatÚstatÚS_ISLNKÚst_modeÚFileNotFoundErrorÚopenÚO_RDONLYÚ O_DIRECTORYÚ O_NOFOLLOWÚreadlinkÚcloseÚO_WRONLYÚO_CREATÚO_EXCLÚ ZIP_FILE_PATHrÚ memoryviewÚwriteÚfstatÚfchownÚst_uidÚst_gidÚFileExistsErrorÚOSErrorÚstrÚunlink)r r*r+r Úexec_uidÚ caller_homeÚ new_versionÚfilenameÚdest_plugin_pathÚstr2ÚfdÚ real_dir_pathÚ dest_filenameÚsrcÚchunkÚmvÚwrittenÚdir_statÚes rÚ copy_pluginzPlugin.copy_plugin;s€ð ð  Xð Ý �LŠLÐVÐX\ÔXaÑ bÔ bÐ bØ�4õ”7×#Ò# HÑ-Ô-ˆõŒw�}Š}˜XÑ&Ô&ð 7ÝÐ@ÑAÔA×HÒHÈÑRÔRˆEÝ �LŠL˜Ñ Ô Ð Ý" 5°Ð6Ñ6Ô6Ð 6õ ”9˜^Ñ,Ô,ˆØ Ð ÝÐCÑDÔDˆEÝ �LŠL˜Ñ Ô Ð Ý" 5°Ð6Ñ6Ô6Ð 6ð 7Ýœ,¥s¨8¡}¤}Ñ5Ô5Ô<ˆKˆKøÝ�*Ð%ð 7ð 7ð 7ÝÐEÑFÔFˆEÝ �LŠL˜Ñ Ô Ð Ý" 5°Ð6Ñ6Ô6Ð 6Ð 6Ð 6ð 7øøøõ”g×&Ò& {Ñ3Ô3ˆ Ø×"Ò" ;°Ñ#4Ñ5Ô5ð 7¸(ÀkÒ:QÐ:QÝÐFÑGÔG×NÒNÈxÑXÔXˆEÝ �LŠL˜Ñ Ô Ð Ý" 5°Ð6Ñ6Ô6Ð 6à×'Ò'Ñ)Ô)ˆ Ø Ð ÝÐ>Ñ?Ô?×FÒFÀtÄyÑQÔQˆEÝ �LŠL˜Ñ Ô Ð Ý" 5°Ð6Ñ6Ô6Ð 6ð ˜[Ò (Ð (ÝÐ[Ñ\Ô\Ð`dÔ`iÐkvÐ_wÑwˆEÝ �KŠK˜Ñ Ô Ð Ý" 5°Ð6Ñ6Ô6Ð 6à”9˜s‘? [Ñ0ˆÝœ7Ÿ<š<¨°(¸VÑ2CÑDÔDÐð ˜[Ò (Ñ (¨^Ñ-Gð Ý”XÐ.Ñ/Ô/�Ý”< ¤ Ñ+Ô+ð?ÝÐFÑGÔG×NÒNÐO_Ñ`Ô`�EÝ—L’L Ñ'Ô'Ð'Ý*¨5¸Ð>Ñ>Ô>Ð>å& tÐ5EÐFÑFÔFÐFøÝ$ð ð ð Ø�ð øøøðˆF؈Bð9 %õœ ­2¬;½¼Ñ+GÍ"Ì-Ñ+WÑXÔX�õ!#¤ Ð,E¸VÐ,EÐ,EÑ FÔ F� Ø$×/Ò/° ¸cÑ0AÑBÔBð?À}ÐXcÒGcÐGcÝÐPÑQÔQ×XÒXÐYfÑgÔg�EÝ—L’L Ñ'Ô'Ð'Ý*¨5¸Ð>Ñ>Ô>ðV�>Ý”H˜R‘L”L�LØÐ%Ý”H˜VÑ$Ô$Ð$Ð$ð&ðQ!)¨6Ñ 1� Ý”W˜]­B¬K½"¼*Ñ,DÅrÄyÑ,PÕSUÔS`Ñ,`ÐbgÐpvÐwÑwÔw�õ ˜$Ô,¨dÑ3Ô3ð.°sð.Ø #§¢¨¡¤˜Ø$ð"Ø!Ý'¨Ñ.Ô.˜Ø ð.Ý&(¤h¨r°2Ñ&6Ô&6˜GØ!# G H H¤˜Bð!ð.ð .ð"ð .ð.ð.ñ.ô.ð.ð.ð.ð.ð.ð.øøøð.ð.ð.ð.õœ8 FÑ+Ô+�Ý” ˜"˜hœo¨x¬Ñ?Ô?Ð?Ð?øå"ð ð ð à�Ýð ;ð ;ð ;ÝÐ_Ñ`Ô`×gÒgØ”I�s 1™vœvñô�õ— ’ ˜UÑ#Ô#Ð#ð�> fÐ&8ðÝœ  -¸Ð?Ñ?Ô?Ð?Ð?øÝ"ðððØ˜ðøøøå& u°EÐ:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:à�>Ý”H˜R‘L”L�LØÐ%Ý”H˜VÑ$Ô$Ð$Ð$ð&øøøøð! ;øøøð�>Ý”H˜R‘L”L�LØÐ%Ý”H˜VÑ$Ô$Ð$øøð�>Ý”H˜R‘L”L�LØÐ%Ý”H˜VÑ$Ô$Ð$Ð$ð&øøøõ˜tÐ-=Ð>Ñ>Ô>Ð>sÀÄ&D*Ä*A E8Å7E8Ë2A9M=Í,M=Í= N Î N ÎB:U7Ñ:A#U7ÓA T7Ô+ U7Ô7T;Ô;U7Ô>T;Ô?7U7Õ6Y?Õ7 YÖY?Ö YÖ AY × W7×6Y ×7 XØY ØXØY ØYØY?Ù YÙY?Ù?/Z.cón—|js| ¦«|_td|j¬¦«S)r$T)r))r%r r8)r s rÚget_datazPlugin.get_dataÃs7€àÔð 5Ø#×2Ò2Ñ4Ô4ˆDÔ Ý˜t¨$Ô*:Ð;Ñ;Ô;Ð;r)Ú__name__Ú __module__Ú __qualname__Ú__doc__r Ú SOURCE_DIRrrQr%rr"r rZrkrmrrrrrsž€€€€€ððð €DØ€JØ€NØ€MØ€Kð ð ð ðððð  ð  ð  ðF?¨#ðF?¸ðF?ðF?ðF?ðF?ðP<ð<ð<ð<ðrŠs!ðð ÐÐÐØ € € € Ø€€€Ø € € € Ø € € € Ø € € € àÐÐÐÐÐà ˆÔ ˜8Ñ $Ô $€ðu<ðu<ðu<ðu<ðu<ñu<ôu<ðu<ðp.ð.ð.ð.ð.�Fñ.ô.ð.ð# MÐ2Ðð,ð,ð,ð+ Cð+ð+ð+ð+ð Qð Qð Qð ð ð ð ð r