scriptbox/IP_List_generator/ip_gen.py

85 lines
2.3 KiB
Python
Raw Permalink Normal View History

2022-10-02 12:35:37 +00:00
"""
IP List Generator
------------------
Currently, Input file must be in List format for example :
~ ~ ~ ~ ~ ~ ~ ~ ~ ~
1.1.1.1
1.0.0.1
8.8.8.8
2a07:e340::2
2a10:50c0::ad2:ff
~ ~ ~ ~ ~ ~ ~ ~ ~ ~
"""
import pytz
import datetime
filters_set = tuple(["#","###","!"])
def caddy(listname, input, output):
with open(input ,'r') as f:
readinput = f.read().splitlines()
with open(output, 'w') as f:
f.write("# Caddy IP List Generated\n# Date Generated : " + BuildDate()+"\n#\n")
f.write("@"+listname+" {\n")
for line in readinput:
if line.strip() and not line.startswith((filters_set)):
f.write(" remote_ip " + line + "\n")
else:
pass
f.write("}")
def nginx(input, output):
with open(input ,'r') as f:
readinput = f.read().splitlines()
with open(output, 'w') as f:
f.write("# Nginx IP List Generated\n# Date Generated : " + BuildDate()+"\n#\n")
for line in readinput:
if line.strip() and not line.startswith((filters_set)):
f.write("deny " + line + ";\n")
else:
pass
def htaccess(input, output):
with open(input ,'r') as f:
readinput = f.read().splitlines()
with open(output, 'w') as f:
f.write("# htaccess IP List Generated\n# Date Generated : " + BuildDate()+"\n#\n")
f.write("Order Deny,Allow\n")
for line in readinput:
if line.strip() and not line.startswith((filters_set)):
f.write("Deny from " + line + "\n")
else:
pass
"""
Must be in IP List Format!!
"""
def combine(destination, fileadd):
# Append List
with open(fileadd ,'r') as f:
readinput = f.read().splitlines()
with open(destination, 'a') as f:
for line in readinput:
f.write(line + "\n")
f.close()
# Clear Duplicated
with open(destination, 'r') as f:
lines = set(f.readlines())
with open(destination, 'w') as f:
f.writelines(set(lines))
f.close()
# Sort
with open(destination, 'r') as f:
lines = sorted(f.readlines())
with open(destination, 'w') as f:
for line in lines:
f.write(line)
2022-10-02 12:35:37 +00:00
def BuildDate():
UTC = pytz.utc
date = datetime.datetime.now(UTC)
return str(date)