From f6d4fe7e71d05296ba8bb4613853b61369a2fc31 Mon Sep 17 00:00:00 2001 From: smege1001 Date: Tue, 4 Aug 2020 03:03:31 +0100 Subject: [PATCH] add anti-cf filter compiler --- tool/anti-cf_filter_adblock/generate.py | 48 +++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 tool/anti-cf_filter_adblock/generate.py diff --git a/tool/anti-cf_filter_adblock/generate.py b/tool/anti-cf_filter_adblock/generate.py new file mode 100644 index 0000000..680e26f --- /dev/null +++ b/tool/anti-cf_filter_adblock/generate.py @@ -0,0 +1,48 @@ +import glob +import getopt +import os +import sys + +print("Anti-CF filter compiler for Adblock Plus/uBlock Origin/etc. v1.0") +print("Licensed under CC0 1.0") +print("") +#functions +def progress(value, filename): + sys.stdout.write('\033[2K\033[1G') #wipe the line before printing + sys.stdout.write("Compiling rules [%s] %s" % ("{:,}".format(value), filename)) + sys.stdout.flush() + +opts, argv = getopt.getopt(sys.argv[1:], "o:d:") + +def process(outputf, inputd): + if not os.path.isdir(inputd): + print("Input not directory"); + sys.exit(1) + + with open(outputf, 'a') as outfile: + rulescom = 0 #counter for counting how much rules compiled + + files = glob.glob(os.path.join(inputd, "*.txt")) #filter out anything but txt files + + for f in files: + with open(f) as ruleso: + for line in ruleso: + outfile.write("||{}^$all\n".format(line.rstrip())) #this does the job + rulescom = rulescom + 1 + progress(rulescom, f) + + + +if len(sys.argv) < 5: #check if theres argv + print("Usage: generate.py -o -d ") + print("Example: generate.py -o filter.txt -d ../../cloudflare_users/domains/") + sys.exit(1) + +#argv parsing +for k, v in opts: + if k == '-o': + outputfile = v + if k == '-d': + inputdirectory = v + +process(outputfile, inputdirectory)