aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsmege1001 <smege1001@aaathats3as.com>2020-08-04 03:03:31 +0100
committersmege1001 <smege1001@aaathats3as.com>2020-08-04 03:03:31 +0100
commitf6d4fe7e71d05296ba8bb4613853b61369a2fc31 (patch)
treec2a2ccd812bee22a8388ef0a8feec6f024326355
parentf92a7b34d570c6ee621335b5711ebcb1eb435225 (diff)
downloadcloudflare-tor-f6d4fe7e71d05296ba8bb4613853b61369a2fc31.tar.lz
cloudflare-tor-f6d4fe7e71d05296ba8bb4613853b61369a2fc31.tar.xz
cloudflare-tor-f6d4fe7e71d05296ba8bb4613853b61369a2fc31.zip
add anti-cf filter compiler
-rw-r--r--tool/anti-cf_filter_adblock/generate.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/tool/anti-cf_filter_adblock/generate.py b/tool/anti-cf_filter_adblock/generate.py
new file mode 100644
index 00000000..680e26fd
--- /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 <output file> -d <input directory>")
+ 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)