L^ddlZddlZddlZddlZddlZddlZddlZddlmZddl m Z m Z m Z ddl mZejeZGddeZGddeZd e ed e d e fd ZGd deZdejejejejffdZdddZd efdZd efdZdS)N)Path)AnyCallableType)LazyLockceZdZdS) RulesLockN__name__ __module__ __qualname__I/opt/imunify360/venv/lib/python3.11/site-packages/im360/utils/__init__.pyr r Drr ceZdZdS) ModSecLockNr rrrrrrrrerrorvaluereturncfd}|S)a. Decorator that causes coroutine to return *value* if it raises *error*. For example: return await return_value_on_error(FileNotFoundError, X)(coro)(*args) is equivalent to: try: return await coro(*args) except FileNotFoundError: return X cLtjfd}|S)NcK |i|d{VS#$r)}td|cYd}~Sd}~wwxYw)NzReplacing %s from %s with %s)loggerinfo)argskwargsecororrs rwrapperz9return_value_on_error..decorator..wrapper)sz !T426222222222    :AtUKKK  s A<AA) functoolswraps)rr rrs` r decoratorz(return_value_on_error..decorator(sC            rr)rrr#s`` rreturn_value_on_errorr$s*       rceZdZfdZxZS)PasswordChangeErrorcVtd|d|dS)Nz)Password change process exited with code z: )super__init__)selfstderr returncode __class__s rr)zPasswordChangeError.__init__7s<  N N Nf N N     r)r r r r) __classcell__)r-s@rr&r&6s8         rr&c|t|kr"td|dt|ttt|s Jdd| dfdt |Dtfd|DrSL)z Return password with *length* char. It is guaranteed that password have at least one character from each given *required_char_groups* z Given length=zR is too short. Can't get chars from all required groups len(required_char_groups)=zgot empty char groupTc8g|]}tjSr)secretschoice).0_alphabets r z,generate_strong_password..]s#LLLGN844LLLrc3PK|]tfdDV dS)c3 K|]}|vV dS)Nr)r5cgroups r z5generate_strong_password...`s'--qU ------rN)any)r5r<passwords @rr=z+generate_strong_password.._sR  27C----H--- - -      r)len ValueErrorallmapjoinrange)lengthrequired_char_groupsr7r?s @@rgenerate_strong_passwordrH=s()))) ,V , ,'(( , ,            ww+,,H 77LLLLeFmmLLLMM     ;O      O r) passwd_cmdch|!tjdtjg}t |t sJ t jg||d| gdzdddS#t j $r}t|j |j d}~wwxYw)Npasswd)path T)inputcapture_outputcheck)shutilwhichosdefpath isinstancelist subprocessrunrDencodeCalledProcessErrorr&r+r,)username new_passwordrIrs rchange_system_passwordr^esl8"*===> j$ ' ''' ': #j #( #**l11334q899        (:::!!(AL999:sABB1B,,B1ctd}|rW |}|dkS#t$rt dYnwxYwdS)zHCheck if apache2nginx is enabled by reading /var/lib/apache2nginx/state.z/var/lib/apache2nginx/stateonz&Failed to read apache2nginx state fileF)ris_file read_textstripOSErrorr exception) state_filecontents ris_apache2nginx_enabledrhts344JG G **,,2244Gd? " G G G   E F F F F F G 5s+A$A87A8ctd} |dkS#t$rYn1t$r%}t d|Yd}~nd}~wwxYwdS)z7Check if coraza4cpanel is enabled by reading flag file.z./usr/share/imunify360-webshield/standalone_wafcorazaz*Failed to read coraza4cpanel flag file: %sNF)rrbrcFileNotFoundError Exceptionrr)rLrs ruse_coraza4cpanelrms @ A ADJ~~%%''833      JJJ A5IIIIIIIIJ 5s); A5 A5A00A5) r!loggingrTr3rRstringrXpathlibrtypingrrrdefence360agent.utilsr getLoggerr rr rrlr$r&ascii_lowercaseascii_uppercasedigits punctuationrHr^boolrhrmrrrrys  &&&&&&&&&&******  8 $ $                i<     )      %%%%PBF : : : : :      4      r