From 345d092aef437a511602ef598df432bec520a0fd Mon Sep 17 00:00:00 2001
From: minoplhy <zebr@m21.kylz.nl>
Date: Thu, 12 Aug 2021 11:13:21 +0700
Subject: [PATCH] support for AdblockPlus

---
 crawler.py   |  3 ++-
 maker_abp.py | 32 ++++++++++++++++++++++++++++++++
 maker_rpz.py |  4 +---
 3 files changed, 35 insertions(+), 4 deletions(-)
 create mode 100644 maker_abp.py

diff --git a/crawler.py b/crawler.py
index 111a6ab..51cb180 100644
--- a/crawler.py
+++ b/crawler.py
@@ -38,6 +38,7 @@ def filteringcon(filters_regex_one):
              file[i] = re.sub('\s\s+#.*', '', file[i])
              file[i] = re.sub(' CNAME .$', '', file[i])
              file[i] = re.sub(' CNAME . $', '', file[i])
+             file[i] = re.sub('^\*.', '', file[i])
     with open(filters_regex_one, 'w') as f1:
          f1.writelines(["%s\n" % item  for item in file])
     print("++ successful!")
@@ -48,7 +49,7 @@ def filteringcon(filters_regex_one):
     with open(filters_regex_one, 'r') as f:
         for line in f:
             for word in a:
-                if word in line and not line.startswith('#') and line.startswith((tuple(a))):
+                if word in line and not line.startswith('#') and line.startswith((tuple(a))) and not '.' in line:
                     line = line.replace(word,'')
                 else:
                     line = line.replace(line, line)
diff --git a/maker_abp.py b/maker_abp.py
new file mode 100644
index 0000000..e9f9fe9
--- /dev/null
+++ b/maker_abp.py
@@ -0,0 +1,32 @@
+import datetime
+import pytz
+
+UTC = pytz.utc
+date = datetime.datetime.now(UTC)
+
+def linecounter(incoming):
+    with open(incoming) as f:
+        for i, l in enumerate(f):
+            pass
+    return i + 1
+
+def ABPbuilding(excluded,incoming,output):
+    ankstanop = linecounter(incoming)
+    with open(excluded ,'r') as f:
+        exclude = f.read().split()
+    with open(incoming ,'r') as f:
+        lines = f.read().splitlines() # read lines
+    with open(output ,'w') as f:
+        f.write('! Title : Minoplhy Personal Blocklist\n')
+        f.write('! Description : My Very Personal DNS Blocklist plus crawling from the source\n')
+        f.write('! Source : Resources/Source.txt\n')
+        f.write('! Rule Counter : ' + str(ankstanop) +' Rules\n')
+        f.write('! Format : AdblockPlus\n')
+        f.write('! Licenses : MIT\n')
+        f.write('! Compiled Date : ' + str(date) +'\n\n')
+        for line in lines:
+            if line.strip() and not line in exclude and not line.startswith(';'):
+               f.write('\n'.join(['||' + line + '^ \n']))
+            elif line.startswith((';','$','@','  IN')):
+               f.write('\n'.join([line + '\n']))
+    f.close()
\ No newline at end of file
diff --git a/maker_rpz.py b/maker_rpz.py
index 40c6c38..d3080da 100644
--- a/maker_rpz.py
+++ b/maker_rpz.py
@@ -29,9 +29,7 @@ def RPZbuilding(excluded,incoming,output):
         f.write('  IN NS  localhost.\n\n')
         for line in lines:
             if line.strip() and not line in exclude and not line.startswith(';'):
-               f.write('\n'.join([line + ' CNAME .\n']))
+               f.write('\n'.join([line + ' CNAME .\n'])) and f.write('\n'.join(['*.'+line+' CNAME .\n']))
             elif line.startswith((';','$','@','  IN')):
                f.write('\n'.join([line + '\n']))
-            elif not line.strip():
-               f.write('\n'.join([line + '\n']))
     f.close()
\ No newline at end of file