VULN_CHECK_I913V6 5 k}=RddlZddlZddlZddlZddlZddlZddlZddlmZGdde Z Gdde Z dZ d"d Z d Zd ed efd Zd#dZiZd$dZejdZdZd%dZejdejejzejzZdZdZdZdZdZ dZ!dZ"dZ#edgdZ$dZ%d ed efd!Z&dS)&N) namedtupleceZdZdZdS)WebConfigParsingErrorc||_dSNmessageselfr s /builddir/build/BUILDROOT/alt-python27-cllib-3.4.41-1.el10.cloudlinux.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/clconfpars.py__init__zWebConfigParsingError.__init__  N__name__ __module__ __qualname__r rr rr#rrceZdZdZdS)WebConfigMissingc||_dSrrr s r r zWebConfigMissing.__init__rrNrrrr rrrrrasectionFc&tjddd}|r t|_|rbt |d5}|tjd}dddn #1swxYwYn>t |dd5}|}dddn #1swxYwY| d td |z| t| t S) NTF)allow_no_value interpolationstrictrbreplacerutf-8encoding[z] )source)section) configparser ConfigParserstr optionxformopenreaddecodelocalegetpreferredencoding read_stringSECHEADdictitems)pathcase_sensitiveignore_bad_encodingconfigfraws r loadr: s  &d59.3555F!  $   L&&((//&"="?"?KKC L L L L L L L L L L L L L L L$g . . . !&&((C                '7'''#-d;;;  W -- . ..s#:A>>BBB==CC)'"valreturnc|tr$|tr |ddS|S)zW Strips single or double quote char only if the quote present from both sides. ) startswith_QUOTESendswith)r=s r $_strip_escape_quotes_of_config_valuerE2s> ~~g3<<#8#81R4y Jr=cfi}t|ddd5}|D]m}||d} |\}}n#t$rY+wxYw|}|rt |n|}|||<n dddn #1swxYwY|S)Nr r!surrogateescape)r#errorsr@)r+ readlinessplit ValueErrorstriprE) r4 delimiter strip_quotesdatar8linepartskeyvalues r load_fastrU;s D dC'2C D D D&KKMM & &DJJy!,,E " UU    KKMME 4U;;;  !&D   &&&&&&&&&&&&&&&& Ks6-B&A  B& AB&AAB&&B*-B*c t|}nV#t$rI t|x}t|<n+#ttjf$r|six}t|<YnwxYwYnwxYw|S)zD Read ini file once (cached) and return its content as dict )cacheKeyErrorr:IOErrorr'Error)r4 ignore_errorsress r load_oncer]Rs#Dk ### #!%d +C5;;+, # # #   " "C%+++ ## Js/  A#5A#%AA#AA#"A#z^[A-Za-z0-9_.\\-]+$ct|std|dt|vsdt|vrtd|dS)z>Reject keys/values that would inject config directives (F-11).zchange_settings: invalid key   z*change_settings: newline in value for key N) _SAFE_KEY_REmatchrLr))rSrTs r _validate_conf_kvrcesp   c " "B@@@AAA s5zzTSZZ//McMMNNN0/rc |D]\}}t||g}|rHtj|tjtjztjztjzd}nYtj tj |pdtj |dzd\}} tj |dd5}t|dd5} tj|} tj|tj| j tj|| j| jn#t,$rYnwxYwn#t.$rYnwxYw|D]} | } | r}| d sh| d d \} } | } | |vr7|| d || d || || |D]'} | |vr!|| d || d ( dddn #1swxYwYdddn #1swxYwYtj||dS#t<$r( tj|n#t@$rYnwxYwwxYw) Ni.z.tmp)dirprefixsuffixwr!r"r #rFr@r_)!r3rcosr+O_CREATO_EXCLO_WRONLY O_NOFOLLOWtempfilemkstempr4dirnamebasenamefdopenstatfchmodfilenoS_IMODEst_modefchownst_uidst_gidPermissionErrorFileNotFoundErrorrMrBrKwriteappendr BaseExceptionunlinkOSError) settings_dictr4tmp_pathkv used_keysfdfoutfinorigrQ stripped_linerS_s r change_settingsrms##%%  1!QI@ WXZ")+bk9BMI5RR '%%,7##D))C/@@@ H " Yr3 1 1 1 @TT3111 @58 wt}} $++--dl)C)CDDDIdkkmmT[$+FFFF&D$     ! ! $  !)A)A#)F)F!*00a88FC))++Cm++ c#B#BM#,>#B#B#BCCC!((---  4    $ @ @i''JJ#>> c(:>>>??? @1 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @6 8T"""""   Ih        D  sK(J;J=AF2FF F FFFJ F!J F!!CJ< JJ JJ J KJ##K&J#'K K3 K! K3! K.+K3-K..K3a ( # Comments (:? \# .* $ ) # Single-, double-quoted strings and bare strings without whitespaces | (:? "[^"\n]*?" ) | (:? '[^'\n]*?' ) | (:? [^"';\s\{\}]+ ) # Structural characters | ; | \{ | \} | \n ) cbdt|D}d|DS)Nc3nK|]0}||d|dV1dS)rN)group).0rbs r z _ngx_tokenize..sZ  [[^^ Arc3DK|]}|d|VdS)rjN)rB)rtoks r rz _ngx_tokenize..s3 = =C)<)< =C = = = = = =r)_NGINX_TOKENS_REfinditer)rPtokenss r _ngx_tokenizersD%..t44F > =6 = = ==rc#*K|D] }||vrdS|VdSrr)itr=rs r _ngx_take_untilrs: #:: FF rc#`Kd}|D]&}|dkr|dz }n |dkr|dz}|dkrdS|V'dS)Nr@{}r)rlvlts r _ngx_take_until_block_endrse C  88 1HCC #XX 1HC 77 FFrci}|D]@}|dkrt|D]}||vr"t|d}t|||<A|S)z5Scan a block for required fields, skips nested blocksrz; )rrlist) block_tokens need_fieldsinforr value_tokenss r _ngx_scan_block_inforsj D++ #::.|<<   +  *<??L\**DI Krc#zKt|}|D]}|dkr t|dD]}t|}t|d} |d}|d}n#t$rYYwxYw|s|sbt |dt |dd|dgvd Vd S) aq Parse content of NGINX configuration in a manner tolerant to minor mistakes and extract relevant fields from all `server` directives. Relevant fields are: - `server_name` - `root` - returned as `document_root` - `ssl` - if `listen` field contains "ssl" word Doesn't handle interpolated values (ex. `${val}`) outside of quoted strings serverr) server_namerootlistenrrrsslr)r document_rootrN)rrrrrXrEget)rPrrrrrrrs r nginx_conf_loose_parserrs4 F   (??  !--  A 188 $L2STT }-K>) $ $DByBBCCC7 BBJ ' 33 4 44rc tj|std|g}t |}d|D}d}d}i}g}t |dkr|d}d|vr|d} d} | d\} } | d d } n#t$r| } YnwxYw| | | | d }d |vr|||<|dz }d}g}|r| |t |dk| D]} dd d dt| ddd }| D]O} d| vrD| d dd |d<Kd| vrC| dd|d<d| vr=dd| ddD|d<d| vr/| d|d<d| vrE| ddk|d<Q| ||S)Nrc<g|]}tjd||S)z ^((?!#).)*$)research)ris r z&apache_conf_parser..'s) ? ? ?!29]A#>#> ?A ? ? ?rrFz Tzuserrr server_aliasportr ServerNamezwww.r DocumentRootr<r ServerAlias,c34K|]}t|VdSr)r))rns r rz%apache_conf_parser..\s(/Q/Q1A/Q/Q/Q/Q/Q/QrrSuexecUserGroupr SSLEngineonr)rkr4rrr splitlineslenpoprKrrLrvaluesintrMjoinlower)r conf_datadata_allrPIDenableresultvhostoutip_portriprTrQs r apache_conf_parserrs* 7>>) $ $DByBBCCCI5i@@KKMMH ? ?x ? ? ?D B F F E d))a--hhqkk S iikk!nGD "==--D||C,,     LL    LL   F  s " "F2J EBFE    LL    1 d))a--4 ""$!%U1X  F FDt##&*jjll1o&;&;&=&=&E&Efb&Q&Q]#%%(, Q(=(=(?(?(E(Ec(J(J_%$$'*xx/Q/Q QRR@P/Q/Q/Q'Q'Q^$ D((#zz||A4466V d"""jjll1o3355;;==EU  s2.C!! C0/C0c|tj|std|g}t |}d}|D]}|}|dr^|r||ddddddd}tj d|}|r"t| dnd|d<||d r3| }t|d kr |d|d <|d r4| }t|d kr |d|d <|d r4| }t|d kr |d|d<g|dr4| }t|d kr |d|d<|drd|d<|r|||S)z Parsing Open Litespeed config Retrieves data from user's openlitespeed.conf :param: full httpd.conf path (/usr/local/directadmin/data/users//openlitespeed.conf) :return: list of virtual host configurations. zFile does not exist N virtualHostFrz-(\d+)r@rrdocRootrvhDomainr vhAliasesrvhsslTr)rkr4rrrrrMrBrrrrrrKr)rrr vhost_dictrQ match_portrRs r openlitespeed_conf_parserrhsC 7>>) $ $CAiAABBBI5i@@KKMMHJ"%"%zz|| ??= ) ) R -  ,,,"&td*.ULLJ9d33J=G!QZ%5%5a%8%8!9!9!9TJv     ??6 " " %JJLLE5zzQ%*1X 6" __Y ' ' %JJLLE5zzQ.3Ah ?+ __Z ( ( %JJLLE5zzQ,1!H =) __[ ) ) %JJLLE5zzQ-21X >* __W % % % $Ju %$$$ r PamLVECfg)min_uidcagefs_enabledgroupscZt|dd5}|D]}|dr|}t|dkr|ddkrt|dkrt |dnd }t|d kr"t t |dnd }t|d kr|d d ndg}t |||ccdddS dddn #1swxYwYdS)aD Parse string like: "session required pam_lve.so 500 1 group1,group2" :param configfile: path to config file to parse :type configfile: str :return: PamLVECfg instance when pam_lve configuratiom is found, None otherwise :rtype: namedtuple :raises: IOError, ValueError r r!r"rjrz pam_lve.soiFrwheelN)r+rBrKrrboolr) configfiler8rQsrrrs r parse_pam_lve_configrs j# 0 0 0 BA B BDs##  A1vv{{qt|33'*1vv{{#ad)))47FFaKKc!A$iiU,/FFaKK1CgY .&AAAA B B B B B B B B B B B B B B B B B B B B B B B B 4sC2D D  D$'D$ file_pathc6t|d5}|}dddn #1swxYwY |S#t$r<t jtjd|d|dcYSwxYw)NrzFailed to decode "zL" content as utf-8 - loading with placeholders for invalid unicode sequencesr)rI)r+r,r-UnicodeDecodeErrorsyslog LOG_WARNING)rr8raw_datas r rrs i  !66881   111   x x x x   i00000 1s266AABB)FF)rFF)Fr)'r'r.rkrrurrp collectionsr Exceptionrrr1r:rCr)rErUrWr]compilerarcr IGNORECASE MULTILINEVERBOSErrrrrrrrrrrrrrr rs` """"""I y  / / / / cc*      rz011 OOO9999x2:"MBL 2:-%,>>>       ( ( ( V555FFFR666r J{$K$K$K L L 2 1c 1c 1 1 1 1 1 1r