§ ½@¾jW!ãó$—ddlmZddlZddlmZddlmZmZmZddl m Z ddl m Z m Z mZmZmZddlmZmZmZddlmZdd lmZd d lmZd ZeGd „d¦«¦«Zeddgdd¬¦«Zeddgdd¬¦«ZGd„de¦«ZdS)é)Ú dataclassN)Úcontextmanager)ÚAnyÚDictÚList)ÚFeature)ÚExternalProgramFailedÚis_ea4Úis_litespeed_runningÚis_testing_enabled_repoÚ is_ubuntu)Úget_apache_modulesÚget_boolean_paramÚis_da)ÚMODULES_LOGS_DIR)ÚInstallationFailedExceptioné)ÚWizardInstallerz(/usr/local/directadmin/custombuild/buildcó:—eZdZUeeed<eed<eed<dS)ÚLsapiPackageSetÚgeneralÚ general_lsapiÚ ea4_lsapiN)Ú__name__Ú __module__Ú __qualname__rÚstrÚ__annotations__©óúpy/clwizard/modules/lsapi.pyrrs5€€€€€€à �#ŒYÐÐÑØÐÐÑØ€N€N�N€N€Nr rÚliblsapizliblsapi-develÚ mod_lsapizea-apache24-mod_lsapi)rrrz liblsapi-devz mod-lsapizea-apache24-mod-lsapicóB‡—eZdZej ed¦«ZdZe j Z ˆfd„Z d„Z d„Zd„Zedefd„¦«Zded d fd „Zd „Zed „¦«Zd eeeeeeefzffd„Zd eeeeeeefzffd„Zd„ZˆxZS)ÚLsapiInstallerz lsapi.logz/usr/bin/switch_mod_lsapicóš•—t¦« ¦«| ¦«t¦«pg|_dS©N)ÚsuperÚ__init__Ú_prepare_lsapi_packagesrÚapache_modules)ÚselfÚ __class__s €r!r)zLsapiInstaller.__init__4sDø€Ý ‰Œ×ÒÑÔÐØ ×$Ò$Ñ&Ô&Ð&Ý0Ñ2Ô2Ð8°bˆÔÐÐr có—t¦«rtnt}|jdd…|_t ¦«r!|j |j¦«dS|j |j¦«dSr') r Úubuntu_lsapi_setÚ cl_lsapi_setrÚlsapi_packagesr Úappendrr)r,Ú package_sets r!r*z&LsapiInstaller._prepare_lsapi_packages9sw€Ý*3©+¬+ÐGÕ&Ð&½<ˆ Ø)Ô1°!°!°!Ô4ˆÔå ‰8Œ8ð BØ Ô × &Ò & {Ô'<Ñ =Ô =Ð =Ð =Ð =à Ô × &Ò & {Ô'@Ñ AÔ AÐ AÐ AÐ Ar cóŽ—g}|jD],}| |¦«s| |¦«Œ-|rr |j|Ž}nI#t$r<}|j dt|¦«¦«t¦«|‚d}~wwxYw|j  d|¦«dS|j  d¦«dS)zH Install lsapi packages if needed :return: None z*Package installation failed with error: %sNz&Package was installed successfully: %sz=Skip package installation, all packages are already installed) r1Ú_is_package_installedr2Ú_install_packager Ú app_loggerÚerrorrrÚinfo)r,Úpackages_to_installÚpackageÚoutÚerrs r!Ú_install_lsapi_packagesz&LsapiInstaller._install_lsapi_packagesBsõ€ð !ÐØÔ*ð 4ð 4ˆGØ×-Ò-¨gÑ6Ô6ð 4Ø#×*Ò*¨7Ñ3Ô3Ð3øØ ð bð =Ø+�dÔ+Ð-@ÐA��øÝ(ð =ð =ð =Ø”×%Ò%Ð&RÕTWÐX[ÑT\ÔT\Ñ]Ô]Ð]Ý1Ñ3Ô3¸Ð<øøøøð =øøøð ŒO× Ò Ð!IÈ3Ñ OÔ OÐ OÐ OÐ Oà ŒO× Ò Ð!`Ñ aÔ aÐ aÐ aÐ asº AÁ B Á7BÂB có‚— | |jdg¦«dS#t$r}t¦«|‚d}~wwxYw)zU Configure lsapi on base package installation. :return: None z--setupN)Ú _run_commandÚUTILITYr r)r,r=s r!Ú_initialize_lsapiz LsapiInstaller._initialize_lsapiUsU€ð  9Ø × Ò ˜tœ|¨YÐ7Ñ 8Ô 8Ð 8Ð 8Ð 8øÝ$ð 9ð 9ð 9Ý-Ñ/Ô/°SÐ 8øøøøð 9øøøs‚   >ª9¹>Úuse_betac#óK—tdd¦«}|r |s| tdddg¦« dV—|r"|s"| tdddg¦«dSdSdS#|r!|s | tdddg¦«wwwxYw)z¶ Context manager to set the option `cloudlinux_beta` in DA custombuild options. @param use_beta: True == `cloudlinux_beta=yes`, False == `cloudlinux_beta=no` z//usr/local/directadmin/custombuild/options.confÚcloudlinux_betaÚsetÚyesNÚno)rr@Ú_DA_CUSTOMBUILD)r,rCÚ inital_states r!Úuse_cl_beta_on_daz LsapiInstaller.use_cl_beta_on_da_såèè€õ)Ð)ZÐ\mÑnÔnˆ Ø ð R˜Lð RØ × Ò �°Ð7HÈ%ÐPÑ QÔ QÐ Qð UØ ˆEˆEˆEàð U  ð UØ×!Ò!¥?°EÐ;LÈdÐ"SÑTÔTÐTÐTÐTð Uð Uð Uð Uøˆxð U  ð UØ×!Ò!¥?°EÐ;LÈdÐ"SÑTÔTÐTÐTð Uð Uøøøs ¶A"Á"&BÚreturnNcóŽ— | |¬¦«5| tdg¦«| tdddg¦«| tddg¦«| tdg¦«d d d ¦«d S#1swxYwYd S#t$r}t ¦«|‚d }~wwxYw) z£ Configure and build lsapi on DirectAdmin. :param use_beta: Whether to use the beta version of CloudLinux packages. :return: None )rCÚupdaterFÚ php1_modeÚlsphpÚphpÚnÚapacheN)rKr@rIr r)r,rCr=s r!Ú_install_lsapi_on_daz#LsapiInstaller._install_lsapi_on_daos€ð 9Ø×'Ò'°Ð'Ñ:Ô:ð ?ð ?Ø×!Ò!¥?°HÐ"=Ñ>Ô>Ð>Ø×!Ò!¥?°E¸;ÈÐ"PÑQÔQÐQØ×!Ò!¥?°E¸3Ð"?Ñ@Ô@Ð@Ø×!Ò!¥?°HÐ"=Ñ>Ô>Ð>ð  ?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?ð ?ð ?øõ %ð 9ð 9ð 9Ý-Ñ/Ô/°SÐ 8øøøøð 9øøøs;‚B&˜A4B B&ÂBÂB& BÂ!B&Â& CÂ0B?Â?CcóÖ—t¦«r2d|vr |d}nt¦«}| |¦«dS| ¦«| ¦«dS)zO Install the lsapi module on the system. :return: None Úuse_beta_for_daN)rr rTr>rB)r,ÚoptionsrVs r!Úrun_installationzLsapiInstaller.run_installationsw€õ ‰7Œ7ð %Ø  GÐ+Ð+Ø")Ð*;Ô"<��å"9Ñ";Ô";�Ø × %Ò % oÑ 6Ô 6Ð 6Ð 6Ð 6à × (Ò (Ñ *Ô *Ð *Ø × "Ò "Ñ $Ô $Ð $Ð $Ð $r có—dhS)NrVr)Úclss r!Úsupported_optionsz LsapiInstaller.supported_optionsŽs €à!Ð"Ð"r cóš—g}t¦«r| ddi¦«d|jvr| dddidœ¦«|S)ap Get a list of warnings that should be shown in Wizard before the module installation. :return: List of warnings to be shown in UI. Warning is a dictionary with the following keys and values: - message: str - warning message with placeholders for additional context - context: dict - additional context for the message Úmessagez?Installation will be performed via DirectAdmin CustomBuild toolÚ suexec_modulezŸmod_suexec is not installed. It is recommended to use mod_suexec with mod_lsapi. It is also required for CRIU to work. Please see %(url)s for more information.Úurlú1https://docs.cloudlinux.com/apache_mod_lsapi.html©r]Úcontext)rr2r+)r,Úwarningss r!Ú _get_warningszLsapiInstaller._get_warnings’st€ð;=ˆÝ ‰7Œ7ð lØ �OŠO˜YÐ(iÐjÑ kÔ kÐ kØ  $Ô"5Ð 5Ð 5Ø �OŠOðDð !&Ð'ZÐ[ððñ ô ð ðˆr cóæ—g}t¦«r| dddidœ¦«d|jvr| dddidœ¦«d|jvr| dddidœ¦«|S) a` Get a list of possible blockers that may disable module in Wizard UI. :return: List of blockers to be shown in UI. Blocker is a dictionary with the following keys and values: - message: str - blocker message with placeholders for additional context - context: dict - additional context for the message z|The server is running under Litespeed. mod_lsapi works with the Apache server only. Please see %(url)s for the requirements.r_r`raÚ ruid2_modulezcmod_ruid2 is enabled, it is not compatible with mod_lsapi. Please see %(url)s for the requirements.Úmpm_itk_modulezaMPM ITK is enabled, it is not compatible with mod_lsapi. Please see %(url)s for the requirements.)r r2r+)r,Úblockerss r!Ú _get_blockerszLsapiInstaller._get_blockers¬sÕ€ðˆÝ Ñ !Ô !ð Ø �OŠOð @ð!&Ð'ZÐ[ð ðñ ô ð ð ˜TÔ0Ð 0Ð 0Ø �OŠOð @ðÐRð ððñ ô ð ð ˜tÔ2Ð 2Ð 2Ø �OŠOð @ðÐRð ððñ ô ð ðˆr có‡—dtˆfd„‰jD¦«¦«i}‰ ¦«}|r| d|i¦«‰ ¦«}|r| d|i¦«|S)NÚalready_configuredc3óB•K—|]}‰ |¦«V—ŒdSr')r5)Ú.0Úpkgr,s €r!ú z0LsapiInstaller.initial_status..×s1øèè€Ð%eÐ%eÈ# d×&@Ò&@ÀÑ&EÔ&EÐ%eÐ%eÐ%eÐ%eÐ%eÐ%er rcrh)Úallr1rdrNri)r,Úresultrcrhs` r!Úinitial_statuszLsapiInstaller.initial_statusÕs—ø€à ¥#Ð%eÐ%eÐ%eÐ%eÐQUÔQdÐ%eÑ%eÔ%eÑ"eÔ"eð" ˆð×%Ò%Ñ'Ô'ˆØ ð 2Ø �MŠM˜: xÐ0Ñ 1Ô 1Ð 1Ø×%Ò%Ñ'Ô'ˆØ ð 2Ø �MŠM˜: xÐ0Ñ 1Ô 1Ð 1؈ r )rrrÚosÚpathÚjoinrÚLOG_FILErArÚLSAPIÚ_REQUIRED_CL_COMPONENT_SUPPORTr)r*r>rBrÚboolrKrTrXÚ classmethodr[rrrÚdictrdrirrÚ __classcell__)r-s@r!r%r%.s„ø€€€€€ØŒw�|Š|Ð,¨kÑ:Ô:€Hà)€GØ%,¤]Ð"ð9ð9ð9ð9ð9ð BðBðBðbðbðbð&9ð9ð9ðð U¨$ð Uð Uð Uñ„^ð Uð9¨Tð9°dð9ð9ð9ð9ð %ð %ð %ðð#ð#ñ„[ð#ð˜t D¨¨c°D¸¸c¸´NÑ.BÐ)BÔ$CÔDððððð4'˜t D¨¨c°D¸¸c¸´NÑ.BÐ)BÔ$CÔDð'ð'ð'ð'ðR ð ð ð ð ð ð r r%) Ú dataclassesrrsÚ contextlibrÚtypingrrrÚclcommon.constrÚclcommon.utilsr r r r r Ú cldetectlibrrrÚclwizard.constantsrÚclwizard.exceptionsrÚbaserrIrr0r/r%rr r!úr†s§ðð"Ð!Ð!Ð!Ð!Ð!Ø € € € Ø%Ð%Ð%Ð%Ð%Ð%Ø"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"à"Ð"Ð"Ð"Ð"Ð"ØrÐrÐrÐrÐrÐrÐrÐrÐrÐrÐrÐrÐrÐrØDÐDÐDÐDÐDÐDÐDÐDÐDÐDØ/Ð/Ð/Ð/Ð/Ð/Ø;Ð;Ð;Ð;Ð;Ð;à!Ð!Ð!Ð!Ð!Ð!à<€ð  ðððððñôñ „ðð ˆØ Ð)Ð *ØØ%ðñô€ ð #�?Ø ˜Ð (ØØ%ðñôÐðrðrðrðrðr�_ñrôrðrðrðrr