#!/usr/bin/env python3.2
# This script converts SquidGuard database into format that can be imported to
# squid-tagger. It should be run in SquidGuard database directory and it would
# produce csv stream that can be redirected to squid-tagger for imports:
# cd /var/db/squidGuard ; path/to/sg_import.py | path/to/squid-tagger.py -l -f
# This one will flush squid-tagger's database and load selected SquidGuard
# database.
import codecs, csv, os, re, sys
data = {}
for (path, names, files) in os.walk('.'):
tag = path.lstrip('./')
for file in files:
if file in ('domains', 'expressions', 'urls'):
with codecs.open(path + os.sep + file, 'r', 'L1') as source:
for full_line in source:
line = full_line.strip()
if not re.compile('^(#|$)').match(line):
regexp = None
if file == 'expressions':
regexp = line
line = None
if file == 'urls':
(line, sep, regexp) = line.partition('/')
regexp = '^' + re.escape(regexp)
if line in data:
if regexp in data[line]:
data[line][regexp].add(tag)
else:
data[line][regexp] = set([tag])
else:
data[line] = {regexp: set([tag])}
cw = csv.writer(sys.stdout)
cw.writerow(['site', 'tag', 'regexp'])
for domain in data:
for regexp in data[domain]:
cw.writerow([domain, '{' + ','.join(data[domain][regexp]) + '}', regexp])