#! /usr/bin/python3 import os import logging from logging.handlers import RotatingFileHandler import click import nat as _nat import mac_ip as _mac_ip BASE_DIR = os.path.dirname(os.path.abspath(__file__)) LOG_LEVEL = logging.INFO logger = logging.getLogger() logger.setLevel(LOG_LEVEL) formatter = logging.Formatter('%(levelname)s :: %(message)s') file_handler = RotatingFileHandler('/var/log/firewall.log', 'a', 1000000, 1) file_handler.setLevel(LOG_LEVEL) file_handler.setFormatter(formatter) logger.addHandler(file_handler) stream_handler = logging.StreamHandler() stream_handler.setFormatter(formatter) stream_handler.setLevel(LOG_LEVEL) logger.addHandler(stream_handler) @click.group(invoke_without_command=True) @click.pass_context def cli(ctx): logger.info("Starting Re2o firewall manager.") if ctx.invoked_subcommand is None: logger.info("Loading firewall.") os.system('nft -I {install_dir} -f {firewall}'.format( install_dir=BASE_DIR, firewall=os.path.join(BASE_DIR, 'firewall.nft') )) _mac_ip.update_macip() _nat.main() @cli.command() def macip(): _mac_ip.update_macip() @cli.command() def nat(): _nat.main() if __name__ == '__main__': cli()