yo4hddlmZddlmZmZmZmZmZmZm Z m Z m Z ddl m Z mZmZe dZGddeeZGddeeZd Zdd ZGd d ZdS))Enum) IPV4LENGTH IPV6LENGTHAddressValueError IPv4Address IPv4Network IPv6Address IPv6Network ip_address ip_network)LiteralOptionalUnion)ipv4ipv6ceZdZdZdZdZdS) LocalhostIPz 127.0.0.1z::1c|jSN)valueselfs S/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/utils/validate.py__str__zLocalhostIP.__str__s zN)__name__ __module__ __qualname__rrrrrrrs- D DrrcXeZdZdZdZdZdZedee dedfdZ dS) NumericIPVersionz=Example: (IPListRecord.version==NumericIPVersion[ip_version])c*t|jSr)strrrs rrzNumericIPVersion.__str__ s4:r ip_versionreturncF|dS|tjkr|jn|jSr)IPV4rr)clsr&s rfrom_ip_versionz NumericIPVersion.from_ip_version#s)  4%..sxxCHz"IP.check_ip_ver..;s'>>c7c>>>>>>>r)anyr*r7)r+r<s `r check_ip_verzIP.check_ip_ver9s/>>>>cfcf-=>>>>>>rcJ t|n#t$rYdSwxYwdSNFT)r ValueErrorr+r2s r is_valid_ipzIP.is_valid_ip=s?  t       55 t   c6|j|i|p |j|i|Sr)r4is_valid_ipv6_network)r+argskwargss ris_valid_ip_networkzIP.is_valid_ip_networkEs>(s(    8 &S & 7 7 7 8rcJ t|n#t$rYdSwxYwdSrA)rrrCs rr1zIP.is_valid_ipv4_addrK?          55 trEcJ t|n#t$rYdSwxYwdSrA)r rrCs ris_valid_ipv6_addrzIP.is_valid_ipv6_addrSrLrEFr2cn t|}n#t$rYdSwxYw|r|jtkSdSrA)rrB prefixlenrr+r2r5ips rr4zIP.is_valid_ipv4_network[T T""BB   55   .<:- -trEcn t|}n#t$rYdSwxYw|r|jtkSdSrA)r rBrPrrQs rrGzIP.is_valid_ipv6_networkirSrEc||r tjS||r tjSt d)NzInvalid ip address)r4r)r*rGr7rBrCs rtype_ofz IP.type_ofwsK  $ $T * * 5L  & &t , , 5L-...r/64cHt||zd}t|S)zConver ipv6 addr to ipv6 network with mask :param str ip: ip for converting :param str mask: ip network mask F)r5)r r%)r+rRmasknetworks rconvert_to_ipv6_networkzIP.convert_to_ipv6_networks&b4i6667||rip_argr'ct|ttfr|St|ttfr7|jdkrt nt}tt||fSt|S)zt Eliminate str from the Union :raise ValueError: if cannot convert ip_arg str to ip network r") isinstancerr rr r<rrr int)r\rPs radopt_to_ipvX_networkzIP.adopt_to_ipvX_networkss f{K8 9 9 8M k : ; ; 8&,n&9&9 zIs6{{I677 7&!!!rnetcpt|jst|jSt|S)zz IPv4Network('192.168.1.1/32') -> '192.168.1.1' IPv4Network('192.168.1.0/24') -> '192.168.1.0/24' )r_hostmaskr%network_address)r+ras rip_net_to_stringzIP.ip_net_to_strings2 3<   ,s*++ +3xxrrRct|tr/t|t |S|Sr)r^r r r[r%)r+rRs ripv6_to_64networkzIP.ipv6_to_64networks> b+ & & Es::3r77CCDD D rNF)rW)rrrr*r/__annotations__r7r.r?rDrJr1rNrr%rr r4rGrVr[ staticmethodrr r`rergrrrr)r)5s6B B ??[?[88[8 [[@E  k;67   [ @E  k;67   [ //[/[ "c; [+MN " {K' ( " " "\ "5k)A#Bs[{K45 {K' ([rr)Nrh)enumr ipaddressrrrrrr r r r typingr rrr/r%rr_r!r1r4r)rrrrnsf                      ,+++++++++ N # #t=====sD===&'''2222uuuuuuuuuur