TwɣddlZddlZddlZddlZddlmZddlmZmZddl Z ddl m Z m Z m Z mZddlmZdZejeZGddZGd d ZGd d eeZejejejejejejejejiZGd deZ GddeZ!dedeeddfdZ"deeddfdZ#defdZ$dddZ%ddZ&dZ'dS)N)Enum)ListDict) CheckRunErroratomic_rewrite check_runrun)KWConfigzimunify360-pamceZdZdZdZdZdZdS) PamServicezdovecot-nativez dovecot-pamftpsshdN)__name__ __module__ __qualname__DOVECOT_NATIVE DOVECOT_PAMFTPSSHDE/opt/imunify360/venv/lib/python3.11/site-packages/im360/subsys/pam.pyr r s"%NK C DDDrr ceZdZdZdZdS)PamServiceStatusValueenableddisabledN)rrrrrrrrrrsGHHHrrc eZdZdZdZdZdZdS) DovecotStatusrpamnativec|jSN)value)selfs r__str__zDovecotStatus.__str__#s zrN)rrrDISABLEDPAMNATIVEr%rrrrrs2H C FrrceZdZdS)PAMErrorN)rrrrrrr*r*/sDrr*cNeZdZdZdZdZdZdZdedefdZ e defd Z d S) _Configz^\s*{}\s*=\s*(.*?)\s*$z{}={}z/etc/pam_imunify/i360.iniwhitelisted_ips_pathz /var/i360_pam_imunify/wl/ips.txtdefaultreturnc6|}||n|Sr")get)r$r.vs r get_defaultz_Config.get_default;s HHJJMqqw.rc ||j|jddS#t$r |jcYSwxYw)N,)_IP_WHITELIST_OPTIONr3_IP_WHITELIST_DEFAULTsplitFileNotFoundError)clss rip_whitelist_pathz_Config.ip_whitelist_path?sr -C,--99- sB   ! - - -, , , , -sAAAAN) rrrSEARCH_PATTERN WRITE_PATTERNDEFAULT_FILENAMEr7r8strr3 classmethodr<rrrr,r,3sy.NM21>/3/3//// -# - - -[ - - -rr,pathvaluesr/cKtj}dd|D}tjt ||d}|d|d{VdS)Ncg|]}|dzS) r).0r2s r z _export_list..Ps000Aq4x000rF)backup)asyncioget_event_loopjoin functoolspartialrrun_in_executor)rBrCloopcontentwriters r _export_listrTNs{  ! # #Dgg0000011G  ~tWU K K KF   tV , ,,,,,,,,,,rnetworkscdKtt|d{VdS)z4Save a list of `networks` into IP address whitelist.N)rTr,r<)rUs rexport_ip_whitelistrWUs: w0022H = ==========rcKtddg} t|d{V\}}}|tj kr$td|||t S|dks|dkrtd|d|||fn4#t$r t cYSt$r}td|d}~wwxYwt| tj |dS#ttjt"t$f$r}td ||d}~wwxYw) Nstatus--yamlz:SIGTERM while getting pam status, rc: %s, out: %s, err: %srrzPAM status failed: run(z) = zPAM status failedzCan't get pam status from )_PAM_EXECUTABLEr signalSIGTERMloggerwarning_DEFAULT_STATUSstripr*r:OSErrorlog_response_warningsyaml safe_loaddecodeUnicodeDecodeError YAMLError TypeErrorKeyError)cmd returncodeoutputerrexces r get_statusrqZs Hh /C(+C...... FC &. ( ( NNL     # " 1__ # 5 5(33VS113 !6  555*++45$&!!!G~fmmoo..x88  8 DGGG>F>>??QFGs5BC& C/B??C+D"D=%D88D=FcKtjdgtjddgtjddgtjdgi|} t t g||rdgngdd{V}t|dS#t$r%t d t |YdSt$r}td |z|d}~wwxYw) z#Enable PAM module. Raises PAMError.enable set-dovecotrr z enable-ftpz --dry-runrZNz$%s not found, skipping enable for %szfailed to enable PAM for %s r rrrrrr[rcr:r^r_rr*)moduledry_run pam_commandrmros rrsrsys6 ( 6!M8#<   K H   $+2;--            f%%%%%     2OV       HHH4v=>>CGHs5A99+C' C0CCcKtjdgtjddgtjddgtjdgi|} t t g|dd{V}t|dS#t$r%t dt |YdSt$r}td|z|d}~wwxYw) z$Disable PAM module. Raises PAMError.disablertrz disable-ftprZNz%%s not found, skipping disable for %szfailed to disable PAM for %sru)rvrxrmros rrzrzs ) ;!M:#>   K I /!JK!J!JKKKKKKKKf%%%%%     3_f       III5>??SHIs.A22+C C)B<<Cc@ tj|}n?#tjtf$r&t dt|d}YnwxYw|o|d}|rt d|dSdS)NzNot yaml response for %s: %swarningszimunify360-pam warnings: %s) rdrerfrhrgr^r_r[r1)rmresponser|s rrcrcs>&--//22 N. /5OOO4HLL44H@4h?????@@s&)9A%$A%)F)r/N)(rKrNloggingr\enumrtypingrrrddefence360agent.utilsrrrr defence360agent.utils.kwconfigr r[ getLoggerrr^r rr@rrrrrrr` Exceptionr*r,rTrWrqrsrzrcrrrrs|  OOOOOOOOOOOO333333#  8 $ $ C4=1:N)2O*3      y   -----h---6-S-$s)----->S >d>>>> G$GGGG>HHHHH4IIII&@@@@@r