}
-class SuricataExporter(TextExporter):
+class SuricataRulesExporter(TextExporter):
"""
Export domains as a set of rules for Suricata
"""
return h
-class SuricataDNSExporter(SuricataExporter):
+class SuricataDNSExporter(SuricataRulesExporter):
"""
Exports the lists as a Suricata ruleset that filters DNS queries.
"""
)
-class SuricataHTTPExporter(SuricataExporter):
+class SuricataHTTPExporter(SuricataRulesExporter):
"""
Exports the lists as a Suricata ruleset that filters HTTP requests.
"""
)
-class SuricataTLSExporter(SuricataExporter):
+class SuricataTLSExporter(SuricataRulesExporter):
"""
Exports the lists as a Suricata ruleset that filters TLS connections.
"""
)
-class SuricataQUICExporter(SuricataExporter):
+class SuricataQUICExporter(SuricataRulesExporter):
"""
Exports the lists as a Suricata ruleset that filters QUIC connections.
"""
)
+class SuricataExporter(TarballExporter):
+ """
+ Export a list in the format that squidguard can process it
+ """
+ files = {
+ "%(list)s-dns.rules" : SuricataDNSExporter,
+ "%(list)s-http.rules" : SuricataHTTPExporter,
+ "%(list)s-tls.rules" : SuricataTLSExporter,
+ "%(list)s-quic.rules" : SuricataQUICExporter,
+ }
+
+
class MultiExporter(abc.ABC):
"""
This is a base class that can export multiple lists at the same time
# Create a tar file
with tarfile.open(fileobj=f, mode="w|gz") as tarball:
for list in self.lists:
- for file, exporter in self.files.items():
- e = exporter(self.backend, list)
- e.export_to_tarball(tarball, file)
+ exporter = SuricataExporter(self.backend, list)
+ exporter(tarball)
class DirectoryExporter(MultiExporter):