50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
|
#! /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()
|