rpi/pihole/migratePiholeAdlists.py

64 lines
2.0 KiB
Python

# Python-Script: migratePiholeAdlists.py - https://github.com/Zelo72/rpi (/pihole/)
#
# Beschreibung: Migriert die Blocklisten-URLs aus adlists.list von Pihole 4 in die adlist
# Tabelle der gravity DB von von Pihole 5.
# URLs aus adlists.list werden nur hinzugefügt, wenn sie in der Tabelle
# adlist noch nicht vorhanden sind.
#
# Damit die Blocklisten migriert werden, müssen die zu migrierenen URLs in
# der Datei /etc/pihole/adlists.list gespeichert werden.
#
# Um z.B. die aktuellen Firebog Ticked Blocklisten nach Pihole 5 zu übernehmen,
# könnte man folgende Befehle nutzen:
#
# sudo wget -O /etc/pihole/adlists.list https://v.firebog.net/hosts/lists.php?type=tick
# sudo python3 migratePiholeAdlists.py
# sudo pihole -g
#
# Aufruf: sudo python3 migratePiholeAdlists.py
#
# Versionshistorie:
# Version 1.0.0 - [Zelo72] - initiale Version
import sys
import sqlite3
from pathlib import Path
adlists = "/etc/pihole/adlists.list"
gravitydb = "/etc/pihole/gravity.db"
if not Path(adlists).exists():
print(adlists + " nicht gefunden!")
exit(1)
if not Path(gravitydb).exists():
print(gravitydb + " nicht gefunden!")
exit(1)
try:
con = sqlite3.connect(gravitydb)
file = open(adlists)
cur = con.cursor()
for url in file:
cur.execute(
'select * from adlist where address = "{d}"'.format(d=str.strip(url)))
rec = cur.fetchall()
if len(rec) == 0:
s = """INSERT INTO adlist (address) VALUES ('{d}')""".format(
d=str.strip(url))
cur.execute(s)
con.commit()
print("+++ " + str.strip(url) + " hinzugefügt.")
else:
print("=== " + str.strip(url) + " bereits vorhanden.")
except:
print("Unerwarteter Fehler:", sys.exc_info()[0])
raise
finally:
file.close()
cur.close()
con.close()