Edit File: clpassenger.cpython-311.pyc
� ����=�9e�h���������������������������d�dl�mZ�d�dl�mZ�d�dl�mZ�d�dlZd�dlZd�dlZd�dlmZ�d�dlm Z �d�dl mZ�d�dl Z d�dlZd�dlZd�dlZd�dlZd�dlmZmZ�d�d lmZ�d�d lmZ�d�dlmZmZ�d�dlmZ�d�d lmZmZmZm Z m!Z!m"Z"m#Z#�d�dl$m%Z%m&Z&�d�dl'm(Z(m)Z)�d�dl*m+Z+m,Z,�ddl-m.Z.�ddlm/Z/m0Z0m1Z1�ddlm2Z2m3Z3m4Z4m5Z5�ddlm6Z6m7Z7��ej8��������e9������������Z:e:�;��������������������ej<����������������������ej=���������e>dd������������������������Z?e:�@��������������������e?�������������dZAdZBdZCdZDdZEdZFdZGdZHd ZId!��ZJd"��ZKd#��ZLd$��ZMd%��ZNd&��ZOd'��ZPd(��ZQd)��ZRd*��ZSd+��ZTd,��ZUd-��ZVd.��ZWd/��ZXd0ddeHdfd1�ZYd2��ZZd@d3�Z[d4��Z\eHfd5�Z]d6��Z^dAd7�Z_d8��Z`d9��ZadAd:�Zbd;��Zcd<��Zdd=��Zed>��Zfd?��ZgdS�)B�����)�absolute_import)�print_function)�divisionN)�datetime)� iteritems)�configparser)� clcaptain�utils)�userdomains)�*get_file_system_in_which_file_is_stored_on)�get_file_lines�write_file_lines)�mod_makedirs)�QuotaWrapper�NoSuchUserException�InsufficientPrivilegesException�IncorrectLimitFormatException�GeneralException�NoSuchPackageException�QuotaDisabledException)�PyLve� PyLveError)� set_user_perm� set_root_perm)�Dict�Union����)�ClSelectExcept)�file_readlines� file_write�s_partition)�get_abs_rel�mkdir_p� file_read�file_writelines)�get_using_realpath_keys�realpaths_are_equalz /dev/null�wz9# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION BEGINz7# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION ENDz config.ruz�app = proc do |env| message = "It works!\n" version = "Ruby %s\n" % RUBY_VERSION response = [message, version].join("\n") [200, {"Content-Type" => "text/plain"}, [response]] end run app ztmp/restart.txtzpassenger_wsgi.pyaM��import os import sys sys.path.insert(0, os.path.dirname(__file__)) def application(environ, start_response): start_response('200 OK', [('Content-Type', 'text/plain')]) message = 'It works!\n' version = 'Python %s\n' % sys.version.split()[0] response = '\n'.join([message, version]) return [response.encode()] zapp.jsaC��var http = require('http'); var server = http.createServer(function(req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); var message = 'It works!\n', version = 'NodeJS ' + process.versions.node + '\n', response = [message, version].join('\n'); res.end(response); }); server.listen(); c������������������f�����t����������j��������|�������������}t����������|j��������|j��������d��������������d�S�)NF��exit)�pwd�getpwnamr����pw_uid�pw_gid��user�userpwds��� �K/opt/cloudlinux/venv/lib64/python3.11/site-packages/clselect/clpassenger.py�drop_root_permr4���^���s0�������l�4� � �G��'�.�'�.��?�?�?�?�?�?�����c����������������������� �t����������|�|d�������������}t����������j��������|�����������������������������������t����������j���������������������|S�#�t ����������$�r�Y�d�S�w�xY�w)N�surrogateescape��errors)�open�fcntl�flock�fileno�LOCK_EX�IOError)�config_path�mode� conf_files��� r3����get_config_lockrC���c���sd���������d�3D�E�E�E� � ��I�$�$�&�&�� �6�6�6������������t�t����s����AA�� A�Ac������������������@����� �|��������������������������������������d�S�#��Y�d�S�xY�w�N)�close)� lock_files��� r3����release_lockrH���l���s-������ ���������� ������s������c�����������������������d}t����������j����������������������dk����st����������j����������������������dk����rt����������|��������������d}d} �t ����������|�������������t����������|d������������}t ����������j����������������������}|���������������������|�������������t����������j��������||� �����������������������������������������������ng#�t����������t����������t����������j��������t����������j��������f$�r=}t#����������j��������t"����������j��������d���������������������||�������������������������Y�d}~nd}~ww�xY�wt)����������|�������������|rt+����������d��������������dS�dS�#�t)����������|�������������|rt+����������d��������������w�w�xY�w)zS Write config with locking. Drop permissions if method called as root. Fr���TN�rzCan't write {}: {}r*���)�os�getegid�geteuidr4����check_and_createdirrC����io�StringIO�writer ����getvaluer?����OSErrorr����UnableToSaveDatar ����ExternalProgramFailed�syslog�LOG_WARNING�formatrH���r���)r1���r@����config�permissions_dropped�config_file�file_content�es��� r3����write_configr^���s���s������ � �� � �z�|�|�q���B�J�L�L�A�-�-��t����"���K�&��K�(�(�(�%�k�3�7�7���{�}�}�����\�"�"�"����\�%:�%:�%<�%<�=�=�=�=��� �W�n�=�u�?Z�[��C��C��C�� �f�(�*�1�1�+�q�A�A� C�� C�� C�� C�� C�� C�� C�� C�����C����� �[�!�!�!��� &��u�%�%�%�%�%�%� &�� &��� �[�!�!�!��� &��u�%�%�%�%�%� &���s1����A.B4��3E���4'D�3D�E���D�E����$E$c������������������,����t�����������j�����������������������������|�������������}t�����������j�����������������������������|������������sU �t ����������j��������|�������������d�S�#�t����������t����������j��������t����������j��������f$�r}t����������j ��������||�������������d�}~ww�xY�wd�S�rE���)rK����path�dirname�isdirr ����mkdirrS���r���rU���r ���rT���)r`����user_backup_pathr]���s��� r3���rN���rN�������s��������w���t�,�,�� �7�=�=�)�*�*��G� G��O�,�-�-�-�-�-�����=�u�?Z�[�� G�� G�� G� �1�2B�A�F�F�F����� G����G��Gs�����A��!B�7B�Bc������������������v�����t����������j��������|�������������}t����������j�����������������������������|j��������dd������������S�)Nz.cl.selector�htaccess_cache)r,���r-���rK���r`����join�pw_dirr0���s��� r3����get_htaccess_cache_pathri�������s,�������l�4� � �G� �7�<�<����8H�I�I�Ir5���c������������������|����d}d}i�}t�����������j�����������������������������|��������������r� �t����������j��������|�������������}|j��������|d<���|j��������|d<���|j��������|d<���t����������|j��������������������|d<���t����������j ��������|j�����������������������������������������|������������|d<���t����������j ��������|j �����������������������������������������|������������|d<���|d���������d k����r|S� �t����������|�d ������������5�}|���������������������|������������|d<���|���������������������|�d�������������|���������������������|������������|d <���ddd�������������n#�1�swxY�w�Y���n,#�t"����������t$����������f$�r}d|�d|��d|��|d<���Y�d}~nd}~ww�xY�wt'����������|�������������d���������|d<���n)#�t"����������t$����������f$�r}d|��d|��|d<���Y�d}~nd}~ww�xY�w|S�)zp Get info (stat, first n symbols and file system in which file is stored) about htaccess_cache file z%Y-%m-%d %H:%M:%S�d���� file_size�gid�uid�permissions�last_access�last_modificationr���rJ���� first_symbols�����last_symbolsNzWe cannot get first and last z symbols from "z" file. Exception: �error�details�file_systemzWe cannot get info about ")rK���r`����exists�stat�st_size�st_gid�st_uid�oct�st_moder���� fromtimestamp�st_atime�strftime�st_mtimer:����read�seekrS���r?���r���)�path_to_file�time_format�number_of_symbols� file_info� file_stat�f�errs��� r3����#_get_info_about_htaccess_cache_filer��������so������&�K����I� �w�~�~�l�#�#��� ����-�-�I�%.�%6�I�k�"�(�/�I�e��(�/�I�e��'*�9�+<�'=�'=�I�m�$�'/�'=�i�>P�'Q�'Q�'Z�'Z�[f�'g�'g�I�m�$�-5�-C�I�DV�-W�-W�-`�-`�al�-m�-m�I�)�*���%��*�*� � � ��,��,�,��J��12���8I�1J�1J�I�o�.��F�F�-�-�q�1�1�1�01���7H�0I�0I�I�n�-� J��J��J��J��J��J��J��J��J��J��J�����J��J��J��J��� ��W�%�� �� �� �� �%�%�%� �L�L��C�&� �'�"�"�"�"�"�"����� �����(R�R^�'_�'_�`i�'j�I�m�$�$����!�� �� �� �� ������"�I�g����������� ������sg����B4F��E��.AE�6E��E�E�� E� E�� F��E7�E2�-F��2E7�7F��F9�$F4�4F9c������������������t����t������������������������} �t������������������������}|������������������������������������|���������������������|�������������}|j��������|j��������z��|d<���|j��������|d<���|j��������|d<���|j��������|d<���|j ��������|d<���|j ��������|d<���|j��������|d<���n"#�t����������$�r}d|��d |��|d <���Y�d}~nd}~ww�xY�w|S�)zB Getting user lve limits for logging those for next debug �cpu�pmem�vmemrO����iops�ep�nprocz,We cannot get lve limits for user with uid "�". Exception: ru���N) �dictr���� initialize�lve_info�ls_cpu� ls_cpu_weight� ls_memory_phy� ls_memory�ls_io�ls_iops� ls_enters�ls_nprocr���)�user_uid�result�py_lve�user_limitsr����s��� r3����_get_user_lve_limitsr��������s���������V�V�F� ������������o�o�h�/�/��#�*�[�-F�F��u� �$�2��v��$�.��v��"�(��t��$�,��v��"�,��t��%�.��w������ �� �� �� ������ ��w����������� ���� ��Ms����BB�� B5� B0�0B5c����������� �������4����t������������������������}t����������|�������������}� �t������������������������}|���������������������|�������������|����������}|}nM#�t����������t ����������t����������t����������t����������t����������t����������t����������f$�r}d|��d|��|d<���Y�d}~nd}~ww�xY�w|S�)zD Getting user quota limits for logging those for next debug z.We cannot get quota limits for user with uid "r����ru���N)r�����strr����get_user_limitsr���r���r���r���r���r���r?���rS���)r����r����� quota_wrapper�user_quotasr����s��� r3����_get_user_quota_limitsr��������s���������V�V�F��8�}�}�H� �$��� �#�3�3�H�=�=�h�G�������"�+��)�"��� �� �� �� �� �� �H�H��C� ��w����������� ������Ms����+A��5B��B�Bc������������������H����t����������|������������}t������������������������}||d<���t������������������������|d<��� �t����������j��������|�������������j��������}n*#�t ����������$�r}d|��d|��|d���������d<���d}Y�d}~nd}~ww�xY�w|��t������������������������|d���������d<���|d���������d������������������������������t����������|�������������������������t������������������������|d���������d<���|d���������d������������������������������t����������|�������������������������t����������� ��������������������|d |� �������������dS�)zy Logging info (lve & quota limits) about user and info (stat info, first & last n symbols) about config file �config_file_info� user_infozUser "z" does not exists. Exception: ru���N� lve_limits�quota_limitsT)�exc_info�extra)r����r����r,���r-���r.����KeyError�updater����r�����logger� exception)r1���r@���ru���r����� debug_infor����r����s��� r3����*_log_debug_info_about_user_and_config_filer������s;������4�K�@�@�I����J�%.�J�!�"�"�f�f�J�{����<��%�%�,��������������D�D��C�, � �;���(��������������������04��� �;���-��;���-�4�4�5I�(�5S�5S�T�T�T�26�&�&� �;���/��;���/�6�6�7M�h�7W�7W�X�X�X� ���U�T���<�<�<�<�<s����A�� A6�A1�1A6c������������������.����t����������j��������d�������������}t����������|�������������}t����������|d������������}|�� �|���������������������|�������������n�#�t ����������t����������f$�r}t����������|�||�������������Y�d�}~nzd�}~wt�����������j��������t�����������j ��������f$�rY�t����������|�������������t����������j��������t����������j��������d� ��������������������|�������������������������t����������j��������d�������������}Y�nw�xY�wt����������|�������������n#�t����������|�������������w�xY�w||fS�)NF)�strictrJ���zConfig {} is broken.)�ConfigParser�RawConfigParserri���rC����readfpr?���rS���r�����ParsingError�MissingSectionHeaderError�_unlinkrV���rW���rX���rH���)r1���rY���r@���r[���r����s��� r3����read_configr����"��s@����� � )�� 7� 7� 7�F�)�$�/�/�K�!�+�s�3�3�K��� &��M�M�+�&�&�&�&����!�� O�� O�� O�6�t�[�#�N�N�N�N�N�N�N�N������)�<�+Q�R�� @�� @�� @��K� � � ��M�&�,�0�7�7��D�D� F�� F�� F��"�1��?�?�?�F�F�F� @����� ��%�%�%�%��L��%�%�%�%�����;��s<����A�� C?��C,�A5�0C?��5A4C,�)C?��+C,�,C?��?Dc������������������������t����������|�������������\��}}|���������������������|������������rB �|���������������������|d���������������������������������d������������}|S�#�t����������j��������$�r�Y�d�S�w�xY�wd�S�)N� htaccess_list�,)r�����has_section�get�splitr����� NoOptionError)r1����doc_rootrY����_r����s��� r3����get_htaccess_cacher����9��s�������D�!�!�I�F�A� ���(�#�#��� �"�J�J�x��A�A�G�G��L�L�M� � ���)�� �� �� ��4�4� �����4s����*A��A'�&A'c������������������b����|����������������������d������������}t����������t����������t����������|������������������������}t ����������|�������������\��}}|���������������������|������������s|���������������������|�������������|���������������������|dd���������������������|�������������������������t����������|�||�������������d�S�)N� r����r����) r�����list�filter�boolr����r�����add_section�setrg���r^���)r1���r�����datarY���r@���s��� r3����write_htaccess_cacher����D��s��������:�:�d���D���t�T�"�"�#�#�D�%�d�+�+��F�K����h�'�'��%����8�$�$�$� �J�J�x��#�(�(�4�.�.�9�9�9���{�F�+�+�+�+�+r5���c�����������������������t����������|�������������\��}}|���������������������|������������r*|���������������������|d���������������������������������d������������}n.|���������������������|�������������|���������������������|dd�������������g�}||vrt|���������������������|�������������t����������t����������t����������|������������������������}|���������������������|dd� ��������������������|�������������������������t����������|�||�������������d�S�d�S�)Nr����r������)r����r����r����r����r����r�����appendr����r����r����rg���r^���)r1���r����r����rY���r@���r����s��� r3����update_htaccess_cacher����P��s�������%�d�+�+��F�K� ���(�#�#���� � �8�_�=�=�C�C�C�H�H� � ����8�$�$�$�� � �8�_�b�1�1�1�� ��=�(�(����\�*�*�*��V�D�-�8�8�9�9� �� � �8�_�c�h�h�}�.E�.E�F�F�F��T�;��/�/�/�/�/� �)�(r5���c����������������������t����������|�d�������������}g�}d}|D�]R}|���������������������t����������������������rd}|���������������������t����������������������rd}�;|s|���������������������|��������������St����������|������������}t ����������|�|dd��������������dS�)z� Removes clpassenger lines from .htaccess to stop application :param htaccess_filename: Application .htaccess path :return: None r7���r8���FTr(���N)r���� startswith�HTACCESS_BEGIN�HTACCESS_ENDr�����rm_double_empty_linesr%���)�htaccess_filename�lines� new_lines� in_config�lines��� r3����$remove_passenger_lines_from_htaccessr����_��s�������� �,�5F�G�G�G�E��I��I���#��#���?�?�>�*�*�� ��I��?�?�<�(�(�� ��I���� #����T�"�"�"��%�i�0�0�I��%�y�#�>O�P�P�P�P�P�Pr5���Tc �����������������������t����������|�|������������\��} }t����������j�����������������������������| ������������r3t����������j�����������������������������| ������������st����������j��������d�������������|dvrt����������j��������d|z���������������t����������|�������������} �t����������|�||������������} |dk����r| d���������}t����������j��������d|z���������������|s| d���������}n)#�t����������$�r�|�t����������j��������d |z���������������Y�nw�xY�w|d k����rt����������j�����������������������������|������������}t����������|�t����������j��������� ��������������������||������������������������\��}}t����������j��������� ��������������������|d������������}d}t����������j�����������������������������|������������r�t����������|d �������������}t����������|v�r�|�����������������������������������D�]�}t����������j�����������������������������|d���������������������t����������j��������z���}t����������j�����������������������������t����������j�����������������������������||t����������j��������z���g������������������������d k����r'|d���������}|| k����rt����������j��������d|z���������������d}��|�����������������������������������}ng�}|�rC|���������������������d �������������|���������������������t�����������������������|���������������������d| z���������������|���������������������d|z���������������|���������������������d|������������������������������������d|�d��������������|dk����r-|���������������������d�������������|���������������������d|z���������������| r|dv�r|���������������������d| z���������������|���������������������t.�����������������������t1����������|������������}t3����������|�������������t5����������|d��|D���������������d ��������������t7����������|�||�������������|rt9����������|�|||��������������dS�dS�)aX�� Configure passenger application :param user: name of unix user :param directory: name of dir in user home :param alias: alias of application :param interpreter: interpreter which execute application :param binary: binary of interpreter that execute application :param populate: True if application have to be be populated :param action: action with apllication. can be transit or None :param doc_root: doc_root :param startup_file: start application file :param passenger_log_file: Passenger log filename to write to app's .htaccess :return: None z,Destination exists and it is not a directory)�python�ruby�nodejszUnsupported interpreter ('%s')�transit� directoryz(Specified directory already used by '%s'�docrootNz8No such application (or application not configured) "%s"r����� .htaccessTr7���r8����aliaszhSpecified alias is already used by the other application: '%s'. Please, specify another application url.FzPassengerAppRoot "%s"zPassengerBaseURI "/%s"� Passengerz "�"r����zPassengerAppType nodezPassengerStartupFile %s)r����r����zPassengerAppLogFile "%s"c��������������3���� ���K����|�] }d�|z��V���� dS��z%s N����.0r����s��� r3���� <genexpr>zconfigure.<locals>.<genexpr>���s&����������"C�"C�T�6�D�=�"C�"C�"C�"C�"C�"Cr5���)�startup_file)r"���rK���r`���rx���rb���r����WebAppError�InterpreterError�summaryr&���r�����NoSuchApplication�normpathrg���r$���r�����values�sepra����commonprefix� splitlinesr�����titler����r����r#���r%���r�����populate_app)r1���r����r�����interpreter�binary�populate�actionr����r�����passenger_log_file�abs_dirr�����user_summary�app_summary� exists_dir� abs_alias�htaccess�htaccess_needs_update�htaccess_raw�item� item_aliasr����s��� r3���� configurer��v��s����� ��T�9�-�-�J�G�Q� �w�~�~�g����<�r�w�}�}�W�'=�'=��<��(�:�<��<�� <���6�6�6��-�,�{�:�<��<�� <���4�=�=�L�.�-�d�I�|�L�L����Y���$�[�1�J� �,�-W�Zd�-d�e�e�e��� .�"�9�-�H������X��X��X��� �2�J�Y�V�X��X�� X����X����� ��{�{��� � ��'�'���t�R�W�\�\�(�E�%B�%B�C�C�L�I�q��w�|�|�I�{�3�3�H� �� �w�~�~�h����� ��2C�D�D�D���\�)�)�$�+�+�-�-�� 6�� 6��� �W�-�-�d�7�m�<�<�r�v�E� ��7�?�?�2�7�#7�#7��U�R�V�^�8T�#U�#U�V�V�Z\�\�\�!%�k�!2�J�!�W�,�,�,�8�Z�\f�g�h��h��h� �16�-���'�'�)�)�������8� ���R���� ���^�$�$�$� ���,�w�6�7�7�7� ���-��5�6�6�6� ����;�+<�+<�+>�+>�+>�+>����G�H�H�H��(�"�"��L�L�0�1�1�1��L�L�2�\�A�B�B�B��� J�+�1E�"E�"E��L�L�3�6H�H�I�I�I� ���\�"�"�"�%�e�,�,��� ������"C�"C�U�"C�"C�"C�L]�^�^�^�^��d�H�h�7�7�7���N��T�9�k��M�M�M�M�M�M�N��Ns����C��#C8�7C8c����������� �������z����t����������t����������|�������������������������D��]\��}}|\��}}t����������j�����������������������������|d���������|d���������f������������}t����������|d���������|������������\��}}}t����������j�����������������������������|d���������������������}t����������j�����������������������������|d���������������������}t����������||������������\��}}} t����������j�����������������������������t����������|�| ������������d���������|������������} |d���������}t����������|�������������t����������|�|||d���������| |d�������������������������d�S�)Nr����r��r���r ��r���r����)r����)r����_summaryrK���r`���r����r!���ra����basenamerg���r"����_unconfigurer��)r1����domain_aliasr����r����r�����old_homer����� binary_dir�binary_name�_binaryr��� htaccess_paths��� r3����fix_homedirr�����s%�����'�����7�7��a��a���d����5��7�'�'��k�):�D��N�(K�L�L��%�d�;�&7��B�B���1�i� ��W�_�_�T�(�^�4�4� ��g�&�&�t�H�~�6�6��#�J��9�9� ��1�g�����k�$��8�8��;�[�I�I���Z�(� ��]�#�#�#��$� �5�$�}�*=�v�PT�U^�P_�`�`�`�`�`�a��ar5���c������������������P����t����������|�|t����������|�������������������������}|p|d���������}|p|}t����������j�����������������������������||������������}t����������j�����������������������������|d������������}t����������j�����������������������������||������������} t����������j�����������������������������| d������������} t����������|�|| ������������sht ����������|�������������t����������|d�������������}t����������|d������������� �����������������������������������t����������| |dd��������������t����������|�| |�������������d�S�d�S�)Nr����r����r7���r8���r(����a)r&���r����rK���r`���rg���r'���r��r���r:���rF���r%���r����)r1���r����� old_alias� new_alias�old_doc_root�new_doc_root�app_data� old_abs_alias�old_htaccess� new_abs_alias�new_htaccessr����s��� r3����mover&�����s�����&�t�Y��� � �F�F�H��6�8�I�#6�L��/�<�L��G�L�L��y�9�9�M��7�<�<� �{�;�;�L��G�L�L��y�9�9�M��7�<�<� �{�;�;�L��t�\�<�@�@��@��\�"�"�"��|�4E�F�F�F���\�3���%�%�'�'�'���e�S�9J�K�K�K�K��d�L�,�?�?�?�?�?�@��@r5���c������������������J�����t����������|�������������D�]}t����������|�|��������������d�S�rE���)r�����unconfigure)r1���r����s��� r3����purger)�����s4�������T�]�]��%��%� ��D�)�$�$�$�$�%��%r5���c������������������N����t����������|�|������������\��}}t����������j�����������������������������|d������������}t����������j�����������������������������|d������������}t ����������|�������������t ����������|�������������t����������j�����������������������������|t ����������������������}t����������j�����������������������������|t����������������������} t����������j�����������������������������||������������} t����������j�����������������������������|������������}t����������j�����������������������������| ������������}t����������j�����������������������������| ������������} |rt����������|������������t����������k����}|rt����������| ������������t����������k����}| rt����������| ������������t����������k����}|dk����r:|st����������| t�����������������������|r |rt����������|�������������t����������| �������������n�|dk����r;|st����������|t����������d�������������|r |rt����������| �������������t����������| �������������n�|dk����r�| sct����������j�����������������������������| ������������}t����������j�����������������������������|������������st!����������|d�������������t����������| t�����������������������| r |rt����������|�������������t����������| �������������t#����������|�|�������������dS�) z� Populate application :param user: name of unix user :param directory: application path in user's home :param interpreter: interpreter which run application :param startup_file: main application file :return: None �public�tmpr����r����r(���r����i���N)r"���rK���r`���rg���r#���� RACK_PATH� WSGI_PATH�isfiler$���� RACK_TEMPLATE� WSGI_TEMPLATE�APPJS_TEMPLATEr ���r����ra���rb���r����restart)r1���r����r���r����r���rel_dir� app_public�app_tmp�app_configru�app_wsgi�app_js�configru_installed�wsgi_installed�appjs_installed�configru_unchanged�wsgi_unchanged�appjs_unchanged�dir_paths��� r3���r����r�������sa������#�4��3�3��G�W�����g�x�0�0�J��g�l�l�7�E�*�*�G��J�����G�����7�<�<���3�3�L��w�|�|�G�Y�/�/�H� �W�\�\�'�<� 0� 0�F������5�5���W�^�^�H�-�-�N��g�n�n�V�,�,�O���F�&�|�4�4� �E����>�"�8�,�,� �=����>�#�F�+�+�~�=���h����� 0��x��/�/�/��� �"4�� ��L�!�!�!��F�O�O�O�� �� � �!�� 9��|�]�C�8�8�8��� �n�� ��H�����F�O�O�O�� �� � ��� /���w���v�.�.�H��7�=�=��*�*�� .��X�u�-�-�-��v�~�.�.�.��� ��� ��L�!�!�!��H�����D�)�����r5���c������������������R����� �t����������j��������|��������������d�S�#�t����������$�r�Y�d�S�w�xY�wrE���)rK����unlinkrS���)r`���s��� r3���r����r����1��s:������ � � �$��������� �� �� ���� ���s������ &�&c�����������������������|�t����������|�������������n|}g�}|D�]�\��}}|��t����������|�|������������}|sht����������j��������d|ddgt����������j��������t����������j��������d�������������}|�����������������������������������\��}} t ����������|�||�������������t����������|�|������������}|���|D�];} | r7t����������j��������� ��������������������| ������������}|� ��������������������|||f��������������<��t����������|�|������������S�)Nz /bin/findz-namer����T)�stdout�stderr�text)r���r����� subprocess�Popen�PIPE�communicater����rK���r`���ra���r�����_htaccess_summary)r1����userdomains_data�domain_docroot_pairs�domain_alias_docroot�domainr����rf����p� stdoutdatar�����ht_pathr����s��� r3���r��r��8��s)����� �1A�0H�;�t�,�,�,�N^����0��G��G�������+�D�(�;�;���� D��$�k�8�W�k�%R�,6�O�,6�O�*.�0��0��0�� �#$�-�-�/�/���Q�$�T�8�Z�@�@�@�!3�D�(�!C�!C���!��%�� G�� G�G��� G������0�0��$�+�+�V�U�H�,E�F�F�F�� G� ��T�#7�8�8�8r5���c������������������^����i�}|D��]�\��}}}t�����������j�����������������������������|d������������} �t����������|d�������������}n#�t����������t ����������f$�r�Y��Mw�xY�wt ����������j��������d|t����������j��������������������}|s�tt ����������j��������d|t����������j��������������������} | s��t����������|�|������������\��} }t����������|�|������������\��}}t����������| |������������\��}}}|���������������������t�����������j��������������������}||f} t ����������j��������d|t����������j��������������������}|r*t����������|�����������������������������������d���������|������������s��@||||�����������������������������������d���������| �����������������������������������d ��������������������������������������������| �����������������������������������d ���������d�|| <������|S�)Nr����r7���r8���z+^PassengerAppRoot\s+"?(?P<directory>.+?)"?$zD^Passenger(?P<interpreter>Python|Ruby|Nodejs)\s+"?(?P<binary>.+?)"?$z(^PassengerBaseURI\s+"?(?P<appuri>.+?)"?$�appurir����r���r��)r ��rO��r����r����r���r��)rK���r`���rg���r$���r?���rS����re�search� MULTILINEr"���r!����lstripr�����compare_aliases� groupdict�lower)r1���rN���summrO��r����r����r ��r���approotr���� alias_absr�����doc_root_absr��rT��s��� r3���rK��rK��X��s������ �D�#7��' ��' ����x��7�<�<��{�3�3�� �$�X�6G�H�H�H�L�L����!�� �� �� ��H� ������)�9��"�,�(��(����� ���i� #��"�,�(��(����� ��"�4��/�/�� �1�%�d�H�5�5���a�!�)�\�:�:���1�e����R�V�$�$����'�����E�'���7��7���� �/�&�*:�*:�*<�*<�X�*F��N�N�� ���!��� �*�*�,�,�[�9�&�0�0�2�2�=�A�G�G�I�I�!�+�+�-�-�h�7� �� ��\�����Ks����?�A�Ac������������������������t�����������j�����������������������������|����������������������d������������������������t�����������j�����������������������������|���������������������d������������������������k����S�)N�/)rK���r`���r�����strip)�alias1�alias2s��� r3���rY��rY�����sF������ �7���F�L�L��-�-�.�.�"�'�2B�2B�6�<�<�PS�CT�CT�2U�2U�U�Ur5���c����������������������i�}t����������t����������|�|�������������������������D�]�\��}}|\��}}|d���������} �t����������|�|������������\��}} nf#�t����������j��������$�rT�t����������j��������t ����������j��������d���������������������t����������j ��������� ��������������������|d������������|�������������������������Y���w�xY�w||d<��� �t����������|�| |������������} d| vrg�| d<�����| d������������������������������|���������������#�t����������$�r�|g|d<���||| <���Y���w�xY�w|S�)N)rL��r����z1{} is broken, directory {} is not in user's home.r����r�����domains)r���r��r"���r���� WrongDatarV���rW���rX���rK���r`���rg���r&���r����r����)r1���rL���summ_resultr���valuerO��r�����app_rootr����r����r��s��� r3���r����r�������s^������K�(��$�IY�)Z�)Z�)Z�[�[��6��6���e�$� �����%�� �&�t�X�6�6�L�A�y�y���'�� �� �� ��M��"�D�K�K��G�L�L���4�4����� �� �� �� �H� �������g�� 6�1�$� �;�O�O�K����+�+�)+��I�&�&��I�&�-�-�f�5�5�5�5����� +�� +�� +� &�x�E�)��%*�K� �"�"�"� +������s$����A�A B+�*B+�4C+�+D�Dc������������������p�����t����������|�|t����������|�������������������������}|d���������}t����������|�������������d�S�)Nr ��)r&���r����r��)r1���r����r!��r ��s��� r3���r(��r(�����s7������&�t�Y��� � �F�F�H�� �#�H�������r5���c������������������"����t����������|�d�������������}|�����������������������������������}g�}d}|D�]6}|t����������k����rd}�|t����������k����rd}�|r�!|���������������������|��������������7t����������|������������}t ����������|�d��|D���������������dd��������������d�S�)Nr7���r8���FTc��������������3���� ���K����|�] }d�|z��V���� dS�r����r����r����s��� r3���r����z_unconfigure.<locals>.<genexpr>���s&����������?�?��v��}�?�?�?�?�?�?r5���r(���)r$���r����r����r����r����r����r%���)r ��r��r����r����r����r����s��� r3���r��r�����s��������X�.?�@�@�@�L��#�#�%�%�E��I��I��� �� ���>�!�!��I���<����I���� ����������!�)�,�,�E��H�?�?��?�?�?��M^�_�_�_�_�_�_r5���c��������������#�������K����|����������������������t����������j��������������������D�]&}t����������j�����������������������������|�|������������}�|�V����'d�S�rE���)r����rK���r����r`���rg���)�root�subrP��s��� r3���� iter_pathrq�����sM���������� �Y�Y�r�v� � �������w�|�|�D�!�$�$��� � � � ���r5���c������������������<����t����������|�|������������\��}}t����������j�����������������������������|������������st ����������j��������dd|iz���������������t����������j�����������������������������|d������������}t����������j�����������������������������|������������st����������j��������|�������������t����������j�����������������������������|t����������������������}t����������j�����������������������������|������������rt����������j ��������|d��������������d�S�t����������|d������������������������������������������������d�S�)NzMissing directory %(abs_dir)sr��r,��r��)r"���rK���r`���rx���r����MissingApprootDirectoryrg���rc����RESTART_PATH�utimer:���rF���)r1���r����r��r�����tmp_dir�app_restarts��� r3���r3��r3�����s��������T�9�-�-�J�G�Q� �7�>�>�'�"�"��m��4�5T�Xa�cj�Wk�5k�l�l�l��g�l�l�7�E�*�*�G� �7�>�>�'�"�"��� �������'�,�,�w��5�5�K� �w�~�~�k�"�"��'� ���d�#�#�#�#�#��[�#���$�$�&�&�&�&�&r5���c�����������������������g�}d}|�D�]3}|������������������������������������rd}n|r�d}|���������������������|��������������4|r |d�d����������S�|S�)NTF���)rb��r����)r�����_lines� empty_liner����s��� r3���r����r�������sr������ �F��J��������:�:�<�<�� ��J�J� �� ���J�� � �d���������c�r�c�{���Mr5���)NNrE���)h� __future__r���r���r���r;���r,���rV���r����future.utilsr����future.movesr���r����rO����loggingrK���rU��rG���clcommonr ���r ����clcommon.cpapir����clcommon.utilsr���r ���r���r����clquotar���r���r���r���r���r���r����lveapir���r����secureior���r����typingr���r����clselectexceptr���r���r ���r!���r"���r#���r$���r%���r&���r'���� getLogger�__name__r�����setLevel�ERROR� StreamHandlerr:����null_handler� addHandlerr����r����r-��r0��rt��r.��r1��� APPJS_PATHr2��r4���rC���rH���r^���rN���ri���r����r����r����r����r����r����r����r����r����r��r��r&��r)��r����r����r��rK��rY��r����r(��r��rq��r3��r����r����r5���r3����<module>r������s������'��&��&��&��&��&��%��%��%��%��%��%������������������� � � � �� � � � ��������������"��"��"��"��"��"��5��5��5��5��5��5�� � � � ������� � � � �� � � � ����������%��%��%��%��%��%��%��%��&��&��&��&��&��&��E��E��E��E��E��E��;��;��;��;��;��;��;��;��'��'��'��'��'��'�E��E��E��E��E��E��E��E��E��E��E��E��E��E��E��E��E��E��$��$��$��$��$��$��$��$��1��1��1��1��1��1��1��1������������������*��*��*��*��*��*��:��:��:��:��:��:��:��:��:��:��C��C��C��C��C��C��C��C��C��C��C��C��?��?��?��?��?��?��?��?�� �� �8� $� $������� �������$�w�$�T�T�+�s�%;�%;�<�<��������,��������M��H��� � � � ��!��� � � ��� � ��@��@��@� ����� �� �� �&��&��&�>G��G��G�J��J��J� *��*��*�Z�����4�����<=��=��=�6�����.����� ,�� ,�� ,�0��0��0�Q��Q��Q�.�EI��D�z�VZ�WN��WN��WN��WN�ta��a��a�$@��@��@��@�&%��%��%� �=G��4��4��4��4�n �� �� �9��9��9��9�@*��*��*�ZV��V��V��������B�����`��`��`�*�����'��'��'���������r5���