x^wddlZddlZddlmZddlmZmZmZeje Z dxZ \Z Z ZGddeZedZeeeeeeffZGddZdS) N)Path)ListLiteralUniontcpudpallceZdZdS)IpPortDenyModeErrorN)__name__ __module__ __qualname__S/opt/imunify360/venv/lib/python3.11/site-packages/im360/model/port_ips_deny_mode.pyr r sDrr ceZdZdZedefdZedededefdZede e de e d fde fd Z d S) WhitelistPortIPsDenyModez/etc/imunify360/whitelist/portsreturnctitii}t|jdD]*}|||}+|S)z Read port:networks from the filez*.txt)TCPUDPr _LIST_PATHglob _load_fileabsolute)clsport_to_networkspaths rloadzWhitelistPortIPsDenyMode.loadsg S"-((--g66  D"~~ !1     rrrc t|D]\}}|dd}|s6g}d}|d\}} } t t g} | d\} } }| } | tvr| tkr| g} n| }| sd} t|}| dD]U}|}|r= tj |||C#t$rd}YQwxYwV| D]g} |rc|| |g}||t%t't)||| |<hn#t$rd}YnwxYw|st*d|||S)N#rT:F,z1Wrong IP/Subnet format in %s:%s. Use CIDR format.) enumerateopen readlines partitionstriprrlowerPROTOSALLintsplit ipaddress ip_networkappend ValueError setdefaultextendsortedlistsetloggererror)rrrline_numlineitem network_listvalidport semicolontailprotosproto_networksnetworkexisting_portss rrz#WhitelistPortIPsDenyMode._load_file!sY( (=(=(?(?@@3 3 NHd>>#&&q)//11D LE$(NN3$7$7 !D)T#&*F!%!4!4 E1h ;;==..00EC<<#WF  4yy (~~c22**G%mmooG**%0999(//8888)***$)EEE* *$E#)9%)@)K)K "**'--l;;;8> ^!4!45599(/5     ,  G  s$3G0)E E)(E) G'&G'rCrrr c.|xt|trtd|Dr|}n1xxdkrn xdkrnn|g}ndkrddg}n td|t fd|DS)Nc3K|]}|dvV dS)rHNr).0ps r z1WhitelistPortIPsDenyMode.count..ds866()^#666666rrr r z Invalid inputc3zK|]5}td|DV6dS)c34K|]}t|VdS)N)len)rKrEs rrMz;WhitelistPortIPsDenyMode.count...ps(II(H IIIIIIrN)sumvalues)rKrLproto_to_portss rrMz1WhitelistPortIPsDenyMode.count..os_   IInQ.?.F.F.H.HIII I I      r) isinstancer6r r2r rQ)rrCrBrSs @rcountzWhitelistPortIPsDenyMode.count\sj--#66-266633 111          rN)r rrr classmethodPortNetworkMapr rrrrrr-rUrrrrrs2J ^   [ 8 8 +98 8 8 8 [8 t  ' ($w|/D*E E     [   rr)r/loggingpathlibrtypingrrr getLoggerr r8r+rrr, Exceptionr Protodictr-strrWrrrrr`s''''''''''  8 $ $10#sC     )    #$eT#tCy.112^ ^ ^ ^ ^ ^ ^ ^ ^ ^ r