Added Formatting Options

main
Alexis 2023-07-02 23:14:57 -04:00
rodzic d1ceea1f58
commit 32c7563351
3 zmienionych plików z 41 dodań i 3 usunięć

Wyświetl plik

@ -0,0 +1,7 @@
from typing import Generator
import json
def format_addresses(addresses: list[dict]) -> Generator[str, dict, None]:
for address in addresses:
yield json.dumps(obj=address)

Wyświetl plik

@ -0,0 +1,6 @@
from typing import Generator
def format_addresses(addresses: list[dict]) -> Generator[str, dict, None]:
for address in addresses:
if "route" in address:
yield address["route"]

31
main.py
Wyświetl plik

@ -1,6 +1,19 @@
from functions import whois_lookup, iptables_generator
from functions import plaintext_formatter, whois_lookup, iptables_generator, json_formatter
import argparse
if __name__ == "__main__":
argParser = argparse.ArgumentParser()
argParser.add_argument("-f", "--format",
default="iptables",
const="iptables",
nargs="?",
type=str,
choices=("iptables", "plain", "jsonl"),
help="Output format of IP address list (default: %(default)s)")
args = argParser.parse_args()
addresses: list[dict] = []
# Get IP Addresses To Ban
@ -8,5 +21,17 @@ if __name__ == "__main__":
addresses.append(address)
# Generate IP Table Rules
for rule in iptables_generator.generate_iptable_rules(addresses=addresses):
print(rule)
if args.format == "iptables":
# IP Tables Commands
for rule in iptables_generator.generate_iptable_rules(addresses=addresses):
print(rule)
elif args.format == "plain":
# Just Plain Addresses
for address in plaintext_formatter.format_addresses(addresses=addresses):
print(address)
elif args.format == "jsonl":
# JSON Formatted Addresses
for address in json_formatter.format_addresses(addresses=addresses):
print(address)
else:
print(f"Unknown format: `{args.format}`")