§ öÒjV™ãó:—ddlmZddlmZddlmZddlZddlZddlZddlmcm cm Z ddl Z ddl Z ddlmZmZddlmZddlmZmZmZmZddlmZmZdd lmZmZdd lmZdd l m!Z!d d l"m#Z#d dl"m$Z$d dl"m%Z%ddl&m'Z'ddl(m)Z)d dl*m+Z+d dl,m-Z-d dl.m/Z/m0Z0d dl1m2Z2m3Z3d dl4m5Z5dZ6e2Z7d1d„Z8d2d„Z9d„Z:d„Z;d2d„Z< d3d„Z=d„Z>d2d „Z?d2d!„Z@d2d"„ZAd2d#„ZBd$ZCeeDfZEd%ZFGd&„d'ejG¦«ZHd(„ZI d4d)„ZJd*„ZKd+„ZLd5d,„ZM d6d.„ZNd/„ZOd0„ZPdS)7é)Úprint_function)Úabsolute_import)ÚdivisionN)ÚurlsplitÚ urlunsplit)Úurljoin)ÚConnectTimeoutÚRequestExceptionÚTimeoutÚTooManyRedirects)ÚDEFAULT_REDIRECT_LIMITÚREDIRECT_STATI)Ú requote_uriÚto_native_string)Ú iteritems)Ú basestringé)Ú clpassenger)Ú clselectctl)Úutils)Ú userdomains)Ú mod_makedirs)ÚClSelectExcept)ÚApplicationsManager)Ú environmentsÚ interpreters)ÚAPP_STARTED_CONSTÚAPP_STOPPED_CONST)Úclprintzapp.jsFcó2—t||¦«}|s|}tj|||¦«}| ¦«r|rV t jd¬¦«|}n"#t $rt j|¦«‚wxYw| ||¬¦«|S)NÚversion)Úkey)Ú destroy_first) Ú _get_prefixrÚ EnvironmentÚexistsrÚKeyErrorrÚNoSuchAlternativeVersionÚcreate)ÚuserÚ directoryr!Úenv_namer#ÚprefixÚ environmentÚ interpreters úU/opt/cloudlinux/venv/lib64/python3.11/site-packages/clselect/clselectctlnodejsuser.pyÚ_create_environmentr1*s¾€Ý ˜˜yÑ )Ô )€FØ ð؈ÝÔ*¨8°T¸6ÑBÔB€KØ × Ò Ñ Ô ðE =ðEð CÝ&Ô3¸ ÐBÑBÔBÀ7ÔKˆKˆKøÝð Cð Cð CÝ Ô9¸'ÑBÔBÐ Bð Cøøøà×Ò˜;°mÐÑDÔDÐDØ Ðs ÁAÁA=cóº—t||¦«}|€Qtj|¦«} tj|||¦«}n%#t $rt jd|z¦«‚wxYw|d}tj   tj   tj   |¦«¦«¦«}tj |||¦«}|S)Nú8No such application (or application not configured) "%s"Úbinary)r$rÚsummaryrÚget_using_realpath_keysr'rÚNoSuchApplicationÚosÚpathÚbasenameÚdirnamerr%)r*r+Ú app_summaryr-Ú user_summaryr4r,r.s r0Ú_get_environmentr>8sÑ€Ý ˜˜yÑ )Ô )€FØÐÝ"Ô*¨4Ñ0Ô0ˆ ð ÝÔ7¸¸iÈÑVÔVˆKˆKøÝð ð ð Ý Ô2ØJÈYÑVñôð ð øøøð˜Ô "€FÝŒw×Ò¥¤§¢µ´·²ÀÑ0GÔ0GÑ HÔ HÑIÔI€HÝÔ*¨8°T¸6ÑBÔB€KØ Ðs ¨?¿"A!có†—tj||¦«\}}tj t j|¦«S©N)rÚ get_abs_relr8r9ÚjoinrÚDEFAULT_PREFIX)r*r+Ú_Úrel_dirs r0r$r$Ls1€ÝÔ" 4¨Ñ3Ô3�J€A€wÝ Œ7�<Š<� Ô3°WÑ =Ô =Ð=ócóŒ—ddlm}| ¦« |¦«st j||d¦«‚dS)z� Check whether particular interpreter version is enabled and raises exception if not :param user: user to include in exception r)Ú node_managerzversion is not enabledN)ÚclselectnodejsrHÚ NodeManagerÚis_version_enabledrÚUnableToSetAlternative)r!r*rHs r0Ú_ensure_version_enabledrMQs[€ð -Ð,Ð,Ð,Ð,Ð,à × #Ò #Ñ %Ô %× 8Ò 8¸Ñ AÔ Að]ÝÔ3°D¸'ÐC[Ñ\Ô\Ð\ð]ð]rFcóD—|€t¦«}tj||¦«\}}| |¦«}| ¦«D]M}tj||¦«\}}|t jz |t jz¦«r|cSŒNdS)z“ Return None if new_app_directory is not nested inside an existing user application, and the name of conflicting application otherwise N)rrrAÚget_user_config_dataÚkeysr8ÚsepÚ startswith)Únew_app_directoryr*Ú apps_managerÚ abs_app_pathrDÚ full_configÚ existing_appÚexisting_app_abs_paths r0Ú_get_existing_nesting_app_forrY]s­€ð ÐÝ*Ñ,Ô,ˆ åÔ'¨Ð.?Ñ@Ô@�O€L�!Ø×3Ò3°DÑ9Ô9€KØ#×(Ò(Ñ*Ô*ð ð ˆ å#(Ô#4°T¸<Ñ#HÔ#HÑ Ð˜qØ �2œ6Ñ !× -Ò -Ð.CÅbÄfÑ.LÑ MÔ Mð ØÐ Ð Ð ð à ˆ4rFc ó:—| €t¦«} |€tjd¦«‚t||¦«|€t}|€i}|€d}t ||| ¦«} | �tj| ¦«‚tj|¦«}t|||¦«} |   ¦«j } tj |||| j| ||| ¬¦«tj||¦«|s2tj|¦«}t#j|||¦«}|d}|||t&||g|dœ}| r| |d<|  |||¦« |  ||||¦«dS#t,$r0}t/jdd t3|¦«d œ¦«Yd}~dSd}~wwxYw) a� Create application :param user: unix user name :param directory: application path in user's home (app-root) :param alias: alias (app-uri) :param version: version of interpreter :param doc_root: doc_root :param app_mode: application mode for nodejs :param env_vars: dict with enviroment variables :param startup_file: main application file :param domain_name: domain name :param apps_manager: Application Manager. Class that responsible for gathering and writing information about applications :param passenger_log_file: Passenger log filename to write to app's .htaccess :return: None NzNot passed version as argumentÚ production)Údoc_rootÚ startup_fileÚpassenger_log_fileÚdomain)Únodejs_versionr_Úapp_uriÚ app_statusr]Úapp_modeÚ config_filesÚenv_varsr^ÚtextÚERROR©ÚstatusÚmessage)rrÚ WrongDatarMÚDEFAULT_STARTUP_FILErYÚBusyApplicationRootrÚ get_aliasr1r/r4rÚ configureÚ INTERPRETERÚrestartr5rr6ÚDEFAULT_APP_STATEÚadd_app_to_configÚadd_env_vars_for_htaccessÚ ExceptionrÚ print_diagÚstr)r*r+Úaliasr!r\rcrer]Ú domain_namerTr^Úconflicting_appr.r4Ú summary_datar<Úapp_dataÚerrs r0r)r)ps€ð<ÐÝ*Ñ,Ô,ˆ à€ÝÔ&Ð'GÑHÔHÐHݘG TÑ*Ô*Ð*àÐÝ+ˆ ØÐ؈ØÐ؈å3°I¸tÀ\ÑRÔR€OØÐ"ÝÔ0°ÑAÔAÐAå Ô ! %Ñ (Ô (€EÝ% d¨I°wÑ?Ô?€KØ × $Ò $Ñ &Ô &Ô -€FåÔØ ØØ ØÔ ØØØ!Ø-ð ñ ô ð õÔ˜˜iÑ(Ô(Ð(Ø ð,å"Ô*¨4Ñ0Ô0ˆ ÝÔ3°D¸)À\ÑRÔRˆ Ø! (Ô+ˆ à!ØØÝ'Ø$ØØØð ð €Hðð<Ø);ˆÐ%Ñ&Ø×"Ò" 4¨°HÑ=Ô=Ð=ðMØ×.Ò.¨t°YÀÈ(ÑSÔSÐSÐSÐSøÝ ðMðMðMÝÔ˜6¨gÅ#ÀcÁ(Ä(Ð#KÐ#KÑLÔLÐLÐLÐLÐLÐLÐLÐLøøøøðMøøøsÅE Å FÅ*%FÆFcó¬—d}tj tj|¦«j|d¦«}tj |¦«r= tj|¦«nZ#t$rtj dd|iz¦«‚wxYwtj  |¦«rtj |¦«‚tj |d¦«}tj  |¦«st|d¦« tj||¦«dS#t$rtjd|z¦«‚wxYw) zÑ Creates symlink to app's node_modules in app_root :param username: user name :param environment_path: Path to app's virtual environment :param app_root: Application root :return: None zôCloudlinux NodeJS Selector demands to store node modules for application in separate folder (virtual environment) pointed by symlink called "node_modules". That`s why application should not contain folder/file with such name in application rootÚ node_modulesz"Can`t remove symlink %(link_name)sÚ link_namezlib/node_modulesiýzError creating symlink. N)r8r9rBÚpwdÚgetpwnamÚpw_dirÚislinkÚremoveÚOSErrorrÚRemoveSymlinkErrorr&Ú SymlinkErrorrÚsymlinkÚCreateSymlinkError)ÚusernameÚenvironment_pathÚapp_rootrjr€Úlink_tos r0Ú_create_symlink_to_node_modulesr�ÈsV€ð -ð õ ”— ’ �Sœ\¨(Ñ3Ô3Ô:¸HÀnÑUÔU€IÝ „w‡~‚~�iÑ Ô ð3ð uÝ ŒI�iÑ Ô Ð Ð øÝð uð uð uÝ Ô3Ð4XÐ\gÐirÐ[sÑ4sÑtÔtÐ tð uøøøå Œ�Š˜ Ñ "Ô "ð3ÝÔ)¨'Ñ2Ô2Ð2ÝŒg�lŠlÐ+Ð-?Ñ@Ô@€GÝ Œ7�>Š>˜'Ñ "Ô "ð%Ý�W˜eÑ$Ô$Ð$ðVÝ Œ �7˜IÑ&Ô&Ð&Ð&Ð&øÝ ðVðVðVÝÔ/Ð0JÈWÑ0TÑUÔUÐUðVøøøsÁA0Á0$BÄD1Ä1"Ecó—tj¦«dkrtd¦«‚|€t¦«}| ||¦«} |�| ||d|¦«n<#t $r/}tjddt|¦«dœ¦«Yd}~nd}~wwxYw|  d¦«tkrÈtj |¦«j}d |d |g¦«} t!j|¦«n#t$$rYnwxYw|�+| |||¦«}t)j|¦«| ||¦« t)j||¦«n#t0j$rYnwxYwdSt5||¦«} t7j|| ¦«\} } t!j| ¦«n#t$$rYnwxYwt)j|¦«} | ||¦«} t7j||| ¦«n*#t>$r| rYdSt1j d |z¦«‚wxYwt)j!||¦« t)j||¦«dS#t0j$rYdSwxYw) aa Destroy web app with specified directory for specified user :param user: username :param app_directory: application directory :param doc_root: Document root for selected domain :param apps_manager: Application Manager. Class that responsible for gathering and writing information about applications :return: None rzOperation not permitted.Nrfrgrhrbú/Únodevenvr3)"r8ÚgeteuidÚPermissionErrorrÚget_app_configrtrurrvrwÚgetrr�r‚rƒrBÚshutilÚrmtreer†Úget_htaccess_by_appdirrÚ$remove_passenger_lines_from_htaccessÚremove_app_from_configrqrÚMissingApprootDirectoryr$rrAr5r6r'rkÚ unconfigure)r*Ú app_directoryr\rTÚ app_configr}Ú user_homeÚ nodevenv_pathÚhtaccess_filenamer-Úabs_dirrDr=Ú app_in_configs r0Údestroyr¥ís€õ$ „z�|„|�qÒÐÝÐ8Ñ9Ô9Ð9àÐÝ*Ñ,Ô,ˆ ð×,Ò,¨T°=ÑAÔA€JðMà Ð Ø × 2Ò 2°4¸ÈÈhÑ WÔ WÐ WøøÝ ðMðMðMÝÔ˜6¨gÅ#ÀcÁ(Ä(Ð#KÐ#KÑLÔLÐLÐLÐLÐLÐLÐLøøøøðMøøøð‡~‚~�lÑ#Ô#Õ'8Ò8Ð8å”L Ñ&Ô&Ô-ˆ àŸš )¨Z¸Ð!GÑHÔHˆ ð å ŒM˜-Ñ (Ô (Ð (Ð (øÝð ð ð Ø ˆDð øøøð Ð à ,× CÒ CÀDÈ-ÐYaÑ bÔ bÐ Ý Ô <Ð=NÑ OÔ OÐ Oà×+Ò+¨D°-Ñ@Ô@Ð@ð Ý Ô   mÑ 4Ô 4Ð 4Ð 4øÝÔ5ð ð ð Ø ˆDð øøøàˆõ ˜˜}Ñ -Ô -€FÝÔ" 4¨Ñ0Ô0�J€GˆQð åŒ �gÑÔÐÐøÝ ð ð ð Ø ˆð øøøåÔ& tÑ,Ô,€Là ×7Ò7¸¸mÑLÔL€MðwÝ Ô% d¨M¸<ÑHÔHÐHÐHøÝ ðwðwðwà ð wØ�4�4å Ô*Ð+eÐhuÑ+uÑvÔvÐ vð wøøøõÔ˜D -Ñ0Ô0Ð0ð ÝÔ˜D -Ñ0Ô0Ð0Ð0Ð0øÝ Ô 1ð ð ð Ø ˆˆð øøøsrÁA)Á) B"Á3%BÂB"Ã5D Ä DÄDÅE4Å4FÆFÆ4G Ç GÇGÈHÈ IÈ*IÉI2É2JÊJcóT—|€t¦«}| ||¦«}|€tjd|z¦«‚| d¦«t krdS| |||¦«| ||t ¦«tj ||¦«dS)a` Starts web app with specified directory for specified user :param user: username :param app_directory: application directory :param doc_root: Document root for selected domain :param apps_manager: Application Manager. Class that responsible for gathering and writing information about applications :return: None Nr3rb) rr•rrkr–rÚupdate_htaccess_fileÚset_app_statusrrq©r*ržr\rTrŸs r0ÚstartrªEs¯€ðÐÝ*Ñ,Ô,ˆ à×,Ò,¨T°=ÑAÔA€JØÐÝÔ&Ð'aÐdqÑ'qÑrÔrÐrà‡~‚~�lÑ#Ô#Õ'8Ò8Ð8؈à×%Ò% d¨M¸8ÑDÔDÐDà×Ò  mÕ5FÑGÔGÐGåÔ˜˜mÑ,Ô,Ð,Ð,Ð,rFcó—|€t¦«}| ||¦«}|€tjd|z¦«‚| d¦«t krt |||¦«dStj||¦«dS)ab Restarts web app with specified directory for specified user :param user: username :param app_directory: application directory :param doc_root: Document root for selected domain :param apps_manager: Application Manager. Class that responsible for gathering and writing information about applications :return: None Nr3rb) rr•rrkr–rrªrrqr©s r0rqrqas‘€ðÐÝ*Ñ,Ô,ˆ à×,Ò,¨T°=ÑAÔA€JØÐÝÔ&Ð'aÐdqÑ'qÑrÔrÐrà‡~‚~�lÑ#Ô#Õ'8Ò8Ð8Ý ˆd�M 8Ñ,Ô,Ð,Ð,Ð,åÔ˜D -Ñ0Ô0Ð0Ð0Ð0rFcó~—|€t¦«}| ||¦«}|€tjd|z¦«‚| d¦«t krdS| ||||¦«}tj|¦«|  ||t ¦«tj ||¦«dS)a_ Stops web app with specified directory for specified user :param user: username :param app_directory: application directory :param doc_root: Document root for selected domain :param apps_manager: Application Manager. Class that responsible for gathering and writing information about applications :return: None Nr3rb) rr•rrkr–rr™rršr¨rq)r*ržr\rTrŸr¢s r0Ústopr­ysÅ€ðÐÝ*Ñ,Ô,ˆ à×,Ò,¨T°=ÑAÔA€JØÐÝÔ&Ð'aÐdqÑ'qÑrÔrÐrà‡~‚~�lÑ#Ô#Õ'8Ò8Ð8؈Ø$×;Ò;¸DÀ-ÐQYÐ[eÑfÔfÐåÔ4Ð5FÑGÔGÐGà×Ò  mÕ5FÑGÔGÐGåÔ˜˜mÑ,Ô,Ð,Ð,Ð,rFéécó—eZdZdZd„ZdS)Ú _ProbeSessionawA session that returns a redirect response as it is. requests reads the body of every redirect it follows, and with allow_redirects=False still reads the body of the redirect it returns (to prepare Response.next), whatever `stream` says. Reporting no redirect target stops both, so the health probe follows redirects itself without reading any body. có—dSr@©)ÚselfÚresps r0Úget_redirect_targetz!_ProbeSession.get_redirect_target¯s€ØˆtrFN)Ú__name__Ú __module__Ú __qualname__Ú__doc__r¶r³rFr0r±r±¥s-€€€€€ðððððððrFr±có¨—|j d¦«}|�"| ¦«r|jtvrdSt | d¦«d¦«}tt|j t|¦«¦«¦«}t|  |j  d¦«d¬¦«¦«S)aTThe absolute URL a redirect response points to, or None. A redirect status without a Location, or with an empty one, is the final response, as requests treats one; so is a blank Location, which requests would follow. The target's userinfo is dropped: requests does not send the credentials of a redirect target either. ÚLocationNÚlatin1Úutf8ú@é)Únetloc)Úheadersr–ÚstripÚ status_coderrÚencoderrÚurlrrÚ_replacerÁÚ rpartition)ÚresponseÚlocationÚpartss r0Ú _redirect_urlr̳s¯€ðÔ×#Ò# JÑ/Ô/€HØÐ §¢Ñ 0Ô 0ÐØÔ#­>Ð9Ð9؈tå §¢°Ñ 9Ô 9¸6ÑBÔB€HÝ •W˜Xœ\­;°xÑ+@Ô+@ÑAÔAÑ BÔ B€EÝ �e—n’n¨E¬L×,CÒ,CÀCÑ,HÔ,HÈÔ,K�nÑLÔLÑ MÔ MÐMrFc 󮇇‡‡‡‡‡‡—d} dŠdŠtjj tj¦«t |¦«stjd¦«‚d  ||¬¦«} ddiЉ€tŠntŠdˆˆˆfd „ Šd „} d „} |�€f tj | ¦«} ‰| ¦«} nŒ#t$r}t|t ¦«rt|t"¦«s‰€‚|  d d¦«} ‰| ¦«} n%#t$rtj| | z¦«‚wxYwYd }~nd }~wwxYw| | | ¦«}|  d ¦«r—| jdkrŒd| t-d ¦«d …z}‰pt.} ‰||¦«}n?#t $r%d }‰r ‰||¦«}n#t$rYnwxYwYnt$rd }YnwxYw|�|j| kr| ||¦«|d<n4| |¦«rd|vr%| |d¦«stjd¦«‚t3|¦«t4us|dkrtjd¦«‚ˆˆˆˆˆˆfd„}|g}d|vr| |d¦«|¦«t9|¦«D](}|rt;j|¦«|D] }||¦«ŒŒ)|S)a˜ Check response from user's webapp before and after calling action. Also compare both responses :param domain: domain associated with webapp :param alias: URI associated with webapp :param action: called action, that make something with webapp: install modules, transit it, etc :param request_timeout: optional per-request timeout; None preserves the legacy unbounded health check used by ordinary Selector operations, except for the optional baseline HTTP probe behind an HTTPS 404, which is bounded by WEBAPP_REQUEST_TIMEOUT :param retry_on_timeout: retry the post-action probe once after a timeout :param strict_status: enforce real HTTP status stability and reject a healthy application that turns 5xx; an application already answering 5xx before the action may keep answering the same status, or recover. Reserved for Shared Store transactions that need rollback evidence :param baseline: an earlier return value from this function; Shared Store migration uses it to compare every post-restart probe with the one pre-migration response instead of comparing a response with itself. Its optional 'alternate' entry is the HTTP vhost that is observed too when HTTPS answers 404 (see docs/design/nodejs-bun-delivery.md, "Health check endpoint and healthy-response policy") :param post_action_observations: number of post-action responses checked against the same baseline :param post_action_interval: delay between post-action observations :return: the normalized pre-action response baseline zTWeb application is inaccessible by its address "%s". The operation wasn't performed.z—The operation was performed, but check availability of application has failed. Web application is inaccessible by its address "%s" after the operation.zÚThe operation was performed, but check availability of application has failed. Web application responds, but its return code "%s" or content type before operation "%s" doesn't equal to contet type after operation "%s".z+Wrong action for calling in checking webappzhttps://{domain}/{alias})r_rxz User-AgentzjMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101209 CentOS/3.6-2.el5.centos Firefox/3.6.13NcóH•—d‰ddœ}|€‰}|�||d<t¦«5}t‰dz¦«D]E}|j|fi|¤Ž}| ¦«t |¦«}|€|ccddd¦«SŒF ddd¦«n #1swxYwYt d‰z¦«‚)NFT)ÚverifyrÂÚstreamÚtimeoutrzExceeded %d redirects.)r±Úranger–ÚcloserÌr ) rÆrÑÚkwargsÚsessionÚ_hoprÉrÂÚ max_redirectsÚrequest_timeouts €€€r0r–z'check_response_from_webapp..gets0ø€ð"¨gÀÐFÐFˆØ ˆ?Ø%ˆGØ Ð Ø 'ˆF�9Ñ å ‰_Œ_ð $ Ý˜m¨aÑ/Ñ0Ô0ð $ð $�Ø&˜7œ; sÐ5Ð5¨fÐ5Ð5�Ø—’Ñ Ô Ð Ý# HÑ-Ô-�Ø�;Ø#�O�Oð  $ð $ð $ð $ñ $ô $ð $ð $ð ð  $ð $ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $õÐ7¸-ÑGÑHÔHÐHs¡A BÁ9BÂB ÂB cóz—||j d¦«|j|j d¦«dœS)Nú Content-TypeÚStatus)rÆÚ content_typerÄÚ legacy_status)rÂr–rÄ)rÆrÉs r0Úsnapshotz,check_response_from_webapp..snapshot6sB€àØ$Ô,×0Ò0°Ñ@Ô@Ø#Ô/Ø%Ô-×1Ò1°(Ñ;Ô;ð  ð ð rFcóΗt|t¦«oPt| d¦«t¦«o(t | d¦«¦«t uS)NrÆrÄ)Ú isinstanceÚdictr–rÚtypeÚint)Úvalues r0Úvalid_snapshotz2check_response_from_webapp..valid_snapshot>sS€Ý˜5¥$Ñ'Ô'ð:ݘuŸyšy¨Ñ/Ô/µÑ<Ô<ð:嘟š =Ñ1Ô1Ñ2Ô2µcÐ9ð ;rFzhttps://zhttp://i”Ú alternatezWrong webapp health baselinerz*Wrong number of webapp health observationsc 󺕗|d}| d¦«}|d}| d¦«} ‰|¦«}n±#t$r„}‰€-t|t¦«rt j‰|z¦«‚‚‰st j‰|z¦«‚ ‰|¦«}n%#t $rt j‰|z¦«‚wxYwYd}~n(d}~wt $rt j‰|z¦«‚wxYw|j d¦«}|j}|j d¦«} |pd  ¦«} |pd  ¦«} ‰r"d |cxkod kncod |cxkod knc } n d |cxkod kncod |cxkod knc} ‰r)d |cxkrd krnnd |cxkrd krnndS||k} n*|| kr|dur|dd …dkp| duo | dd …dk} | | ko-t|¦«ot|¦«ot|¦« }| s|s| sdSg}| rJ‰r||}}n|pd| pd}}||kr|  d|z¦«n|  d|›d|›d�¦«|r |  d|pd›d|pd›d�¦«t j‰|||fzd|›dd  |¦«›d�z¦«‚)zBCompare one post-action response of an endpoint with its baseline.rÆrÜrÄrÝNrÚrÛÚiôiWéÈi+éÚ500zHTTP status is "%s"zHTTP status changed from "z" to "ú"zcontent type changed from "z Failed check at "z": z; ú.)r–r ràr rÚ WebAppErrorÚ_WEBAPP_REQUEST_ERRORSrÂrÄÚlowerÚ_is_healthy_statusÚ_is_json_media_typeÚappendrB)ÚendpointÚ webapp_urlÚbefore_mime_typeÚ before_statusÚbefore_legacy_statusÚrequestÚexcÚafter_mime_typeÚ after_statusÚafter_legacy_statusÚbefore_mime_type_normalizedÚafter_mime_type_normalizedÚrecovered_from_server_errorÚ status_failedÚ mime_failedÚreasonsÚ status_beforeÚ status_afterÚ app_is_brokenÚapp_is_inaccessible_afterr–rØÚretry_on_timeoutÚ strict_statuss €€€€€€r0Úcheck_endpointz2check_response_from_webapp..check_endpoint�s–ø€à˜e”_ˆ Ø#Ÿ<š<¨Ñ7Ô7ÐØ  Ô/ˆ Ø'Ÿ|š|¨OÑ<Ô<Ðð 8Ø�c˜*‘o”oˆGˆGøÝð <ð <ð <ØÐ&õ˜c¥>Ñ2Ô2ð@Ý(Ô4Ø1°JÑ>ñ@ô@ð@àØ#ð <Ý$Ô0Ø-° Ñ:ñ<ô<ð<ð <ؘ#˜j™/œ/��øÝ)ð <ð <ð <Ý$Ô0Ø-° Ñ:ñ<ô<ð<ð <øøøð����øøøøõ&ð 8ð 8ð 8õ!Ô,Ø)¨JÑ6ñ8ô8ð 8ð  8øøøð "œ/×-Ò-¨nÑ=Ô=ˆØÔ*ˆ Ø%œo×1Ò1°(Ñ;Ô;ÐØ'7Ð'=¸2×&DÒ&DÑ&FÔ&FÐ#Ø&5Ð&;¸×%BÒ%BÑ%DÔ%DÐ"ð ð Là�}Ð+Ð+Ò+Ð+¨Ò+Ð+Ð+Ð+ÐN°C¸<Ð4NÐ4NÒ4NÐ4NÈ3Ò4NÐ4NÐ4NÐ4NÐ0Nð (Ð 'ð�}Ð+Ð+Ò+Ð+¨Ò+Ð+Ð+Ð+ÐJ°°|Ð0JÐ0JÒ0JÐ0JÀsÒ0JÐ0JÐ0JÐ0Jð (à ð ;ð�mÐ*Ð*Ò*Ð* sÒ*Ð*Ð*Ð*Ð*¨s°lÐ/IÐ/IÒ/IÐ/IÀcÒ/IÐ/IÐ/IÐ/IÐ/IØ�Ø)¨\Ò9ˆMˆMð&Ð)<Ò<ð7Ø)°Ð5ð7à)¨"¨1¨"Ô-°Ò6ð:ð(¨tÐ3ð9Ø+¨B¨Q¨BÔ/°5Ò8ð ð (Ð+EÒ Eð ?Ý'¨ Ñ6Ô6ð>Ý+¨LÑ9Ô9ð>å,¨_Ñ=Ô=ð?ð ð 'ð ¨{ð ¸mð Ø ˆFØˆØ ð @Øð KØ.;¸\˜|� � ð)Ð.¨BÐ0CÐ0IÀrð ,� à  Ò,Ð,Ø—’Ð4°|ÑCÑDÔDÐDÐDà—’�Ø"/ - -°°°ð ?ñ@ô@ð@à ð NØ �NŠNˆNØ.Ð4°"Ð4Ð4°oÐ6KÈÐ6KÐ6KðMñ Nô Nð NåÔ(Ø ˜lÐ,<¸oÐNÑ NÐ NØ.8¨j¨j¸$¿)º)ÀGÑ:LÔ:LÐ:LÐ:LÐMñ NñOôOð Os0½ A Á C7ÁAC B(Â'CÂ("C à CÃ%C7r@)ÚrequestsÚpackagesÚurllib3Údisable_warningsÚurllib_exceptionsÚInsecureRequestWarningÚcallablerrkÚformatr ÚWEBAPP_MAX_REDIRECTSrÚtransform_wildcard_urlrïràr r ÚreplacerîrRrÄÚlenÚWEBAPP_REQUEST_TIMEOUTrÆrârãrórÒÚtimeÚsleep)r_rxÚactionrØrr ÚbaselineÚpost_action_observationsÚpost_action_intervalÚapp_is_inaccessible_beforerõrÞrårùrúÚhttp_urlÚ http_timeoutÚ http_requestr Ú endpointsÚ observationrôrrr–rÂr×s ``` @@@@@r0Úcheck_response_from_webappr$Åsbøøøøøøøø€ðB"yÐð Sðð  aðõ> ÔÔ×.Ò.Õ/@Ô/WÑXÔXÐXå �FÑ Ô ðVÝÔ&Ð'TÑUÔUÐUØ+×2Ò2ØØð3ñô€Jð ð@ð€GðÐÝ.ˆ ˆ å,ˆ ðIðIðIðIðIðIðIðIð. ð ð ð;ð;ð;ð Ñð =õÔ5°jÑAÔAˆJà�c˜*‘o”oˆGˆGøÝ%ð =ð =ð =õ˜3¥Ñ(Ô(𠵸CÅÑ1PÔ1Pð Ø'Ð/Øð$×+Ò+¨J¸ ÑBÔBˆJð =ؘ#˜j™/œ/��øÝ)ð =ð =ð =Ý$Ô0Ø.°Ñ;ñ=ô=ð=ð =øøøð����øøøøð =øøøð �8˜J¨Ñ0Ô0ˆð × Ò  Ñ ,Ô ,ð I°Ô1DÈÒ1KÐ1KØ  :­c°*©o¬oÐ.>Ð.>Ô#?Ñ?ˆHð +ÐDÕ.DˆLð $Ø"˜s 8¨\Ñ:Ô:� � øÝð ð ð Ø#� Ø#ððØ'* s¨8°\Ñ'BÔ'B˜ ˜ øÝ1ðððØ˜ðøøøøøå)ð $ð $ð $Ø#� � � ð $øøøðÐ'¨LÔ,<À Ò,JÐ,JØ(0¨°¸<Ñ(HÔ(H�˜Ñ%øØˆn˜XÑ&Ô&ðGؘXÐ%Ð%Ø$�n X¨kÔ%:Ñ;Ô;ð&åÔ&Ð'EÑFÔFÐFÝ Ð %Ñ&Ô&­cÐ1Ð1Ø'¨!Ò+Ð+ÝÔ&Ð'SÑTÔTÐTð_Oð_Oð_Oð_Oð_Oð_Oð_Oð_Oð_Oð_OðB� €IØ�hÐÐØ×Ò˜ +Ô.Ñ/Ô/Ð/Ø €F�H„H€HåÐ5Ñ6Ô6ð%ð%ˆ Ø ð -Ý ŒJÐ+Ñ ,Ô ,Ð ,Ø!ð %ð %ˆHØ ˆN˜8Ñ $Ô $Ð $Ð $ð %à €OsmÂB>Â> EÃAEÄ DÄEÄ"D:Ä:EÅEÆ F'Æ'G#Æ6 GÇG#Ç GÇ G#ÇGÇG#Ç G#Ç"G#có"—d|cxkodkncS)Nréi�r³)rÄs r0rñrñïs$€Ø �+Ð $Ð $Ò $Ð $ Ò $Ð $Ð $Ð $Ð$rFcóæ—|pd dd¦«d ¦« ¦«}|dkp)| d¦«o| d¦«S)zh`application/json` or `application/*+json`, case-insensitive, with any parameters after ';' ignored.rèú;rrzapplication/jsonz application/z+json)ÚsplitrÃrðrRÚendswith)räÚ media_types r0ròròóst€ð�+˜2×$Ò$ S¨!Ñ,Ô,¨QÔ/×5Ò5Ñ7Ô7×=Ò=Ñ?Ô?€JØ Ð,Ò ,ð 2Ø×%Ò% nÑ5Ô5ð1Ø×'Ò'¨Ñ0Ô0ð3rFc󇇗‰€tjd¦«‚‰€tjd¦«‚‰d}t‰¦«}ˆˆfd„|D¦«}t|¦«dkrtjd¦«‚|d}||fS)zÜ Get info (alias and domain) about user's web application :param app_summary: dict -> summary info about user's web application :param user: str -> name of unix user :return: tuple -> (alias, domain) Nz3Was passed incorrect summary info about applicationz!Was passed incorrect name of userrxcóR•—g|]#\}}tj‰|‰d¦«¯!|‘Œ$S)Údocroot)rÚrealpaths_are_equal)Ú.0r_r\r<r*s €€r0ú z*_get_info_about_webapp.. sJø€ðððÙ#�6˜8µuÔ7PÐQUÐW_ÐalÐmvÔawÑ7xÔ7xðØðððrFrz-Can not found suitable domain for application)rrkrr)r<r*rxÚ user_domainsÚ found_domainsÚ app_domains`` r0Ú_get_info_about_webappr4üsµøø€ðÐÝÔ&Ð'\Ñ]Ô]Ð]Ø €|ÝÔ&Ð'JÑKÔKÐKØ ˜Ô €EݘtÑ$Ô$€LðððððØ'3ðñô€Mõ ˆ=ÑÔ˜QÒÐÝÔ&Ð'VÑWÔWÐWؘqÔ!€Jà �*Ð ÐrFú-có ‡‡‡‡‡‡‡‡—|€t¦«}| ‰¦«} tj‰‰|¦«}n5#t$r(t jd ‰¦«¦«‚wxYw|dtkrd}n|d} |d} |d} tj ‰‰¦«\Š} t‰‰| ¦«ŠiŠˆˆˆˆˆˆˆˆfd„} |sš t| | | ¬ ¦«dS#t j $rs}‰  d ¦«�B‰  d ¦«r- ‰ ‰d ¦«n#t$rYnwxYwt j d |z¦«‚d}~wwxYw| ¦«dS) aI Install nodejs extension to user's webapp :param user: name os unix user :param directory: directory with webapp (app-root) :param extension: name and version of extension :param skip_web_check: skip check web application after change it's properties :param apps_manager: Application Manager. Class that responsible for gathering and writing information about applications :param before_install: optionally pass the continuously held app-lock fd to npm :param after_install: optionally finish that fd handoff after npm :return: None Nz%Record about application {} is absentrbTrar_r`c󨕗d}‰�‰¦«}|‰d<‰‰dœ}|�||d<‰jdi|¤Ž‰d<‰� ‰¦«tj‰ ‰¦«dS)NÚlock_fd)Ú extensionÚcwdÚnpm_ranr³)Úextension_installrrq) r8Úinstall_kwargsÚ after_installÚbefore_installr:r+r.r9Úhandedr*s €€€€€€€€r0rzinstall..action5s‰ø€àˆØ Ð %Ø$�nÑ&Ô&ˆGØ 'ˆF�9Ñ Ø'0¸Ð=Ð=ˆØ Ð Ø(/ˆN˜9Ñ %Ø9˜KÔ9ÐKÐK¸NÐKÐKˆˆyÑØ Ð $Ø ˆM‰OŒOˆOÝÔ˜D )Ñ,Ô,Ð,Ð,Ð,rF)r_rxrr8r;z3An error occured during installation of modules. %s)rrOrr6r'rrkrrrAr1r$rîr–Ú report_unhealthy_shared_deliveryru)r*r+r9Úskip_web_checkrTr?r>Ú user_configr|rxr3r`rDrr}r:r.r@s``` `` @@@r0ÚinstallrDs#øøøøøøøø€ðÐÝ*Ñ,Ô,ˆ à×3Ò3°DÑ9Ô9€KðbÝÔ0°°yÀ+ÑNÔNˆˆøÝ ðbðbðbÝÔ&Ð'N×'UÒ'UÐV_Ñ'`Ô'`ÑaÔaÐaðbøøøà� ÔÕ!2Ò2Ð2؈ˆà˜Ô#ˆØ˜hÔ'ˆ ØÐ.Ô/€NÝ Ô ˜t YÑ /Ô /�F€CˆÝ% d¨I°~ÑFÔF€KØ €Fð -ð -ð -ð -ð -ð -ð -ð -ð -ð -ð -ð -ð ðð jÝ &Ø!ØØð ñ ô ð ð ð øõ Ô)ð jð jð jØ�zŠz˜)Ñ$Ô$Ð0°V·Z²ZÀ Ñ5JÔ5JÐ0ð Ø×@Ò@ؘyÔ)ñ+ô+ð+ð+øå ðððØ�Dðøøøå Ô,Ð-bÐehÑ-hÑiÔiÐ iøøøøð jøøøð ˆ‰ŒˆˆˆsG¯AÁ2A8Ã!C5Ã5E7Ä*E2Ä/E Å E2Å EÅE2ÅEÅE2Å2E7cól—i}ttj|¦«¦«D]�\}}|dtjkrŒt |||¦« ¦«}|d|d|d|ddœ||<d|vr*t|d¦«dkr|d||d<Œ�|S)Nr/r_rxÚname)r_rxr.r/Údomainsr)rrr5rrpr>Ú as_deepdictr)r*Úsummr+Údatar.s r0r5r5[sÊ€Ø €DÝ$¥[Ô%8¸Ñ%>Ô%>Ñ?Ô?ð 9ð 9‰ˆ �4Ø � Ô Õ"5Ô"AÒ AÐ AØ å& t¨Y¸Ñ=Ô=×IÒIÑKÔKˆ à˜8”nؘ'”]Ø& vÔ.Ø& }Ô5ð  𠈈Y‰ð ˜Ð Ð ¥ T¨)¤_Ñ!5Ô!5¸Ò!9Ð!9Ø)-¨i¬ˆD�ŒO˜IÑ &øà €KrFcóÔ—t|¦«turt‚|D]G}t||t¦«st‚d|vsd|vsd||vs d||vrt ‚ŒH|S)Nú ú )râráÚ TypeErrorràrÚ ValueError)reÚitems r0Úvalidate_env_varsrQos‚€Ý ˆH�~„~�TÐ!Ð!݈ØððˆÝ˜( 4œ.­*Ñ5Ô5ð ݈OØ �4ˆ<ˆ<˜4 4˜<˜<¨4°8¸D´>Ð+AÐ+AÀTÈXÐVZÌ^ÐE[ÐE[ÝÐ ðF\à €OrF)NFr@)NNNNNNNN)NNFFNrr)NN)r5FNNN)QÚ __future__rrrr8r�r Ú$requests.packages.urllib3.exceptionsr r Ú exceptionsrr—rÚ urllib.parserrÚrequests.compatrÚrequests.exceptionsr r r r Úrequests.modelsr rÚrequests.utilsrrÚ future.utilsrÚ past.builtinsrrèrrrÚclcommon.cpapirÚclcommon.utilsrÚclselectexceptrÚclselectnodejs.apps_managerrÚclselectnodejsuserrrÚ baseclselectrrÚ clselectprintrrlrrr1r>r$rMrYr)r�r¥rªrqr­rrOrïrÚSessionr±rÌr$rñròr4rDr5rQr³rFr0úrdsðð&Ð%Ð%Ð%Ð%Ð%Ø&Ð&Ð&Ð&Ð&Ð&ØÐÐÐÐÐà € € € Ø € € € Ø€€€Ø@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ø € € € Ø € € € Ø-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ø#Ð#Ð#Ð#Ð#Ð#ðAðAðAðAðAðAðAðAðAðAðAðAàBÐBÐBÐBÐBÐBÐBÐBØ8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ø"Ð"Ð"Ð"Ð"Ð"Ø$Ð$Ð$Ð$Ð$Ð$àÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØ&Ð&Ð&Ð&Ð&Ð&Ø'Ð'Ð'Ð'Ð'Ð'Ø*Ð*Ð*Ð*Ð*Ð*Ø<Ð<Ð<Ð<Ð<Ð<Ø:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ø>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ø"Ð"Ð"Ð"Ð"Ð"àÐØ%Ðð ð ð ð ð ð ð ð ð(>ð>ð>ð ]ð ]ð ]ððððð. Ø Ø Ø ØØØØðUMðUMðUMðUMðpVðVðVðJU ðU ðU ðU ðp-ð-ð-ð-ð81ð1ð1ð1ð0-ð-ð-ð-ð>Ðð +¨JÐ7Ðð Ðð ð ð ð ð �HÔ$ñ ô ð ðNðNðNð$6:ØFKØ=AØ89Ø45ð gðgðgðgðT %ð%ð%ð3ð3ð3ððððð0