diff --git a/mikrotik_configurator/generator.py b/mikrotik_configurator/generator.py index 5abe8da..047f3e1 100644 --- a/mikrotik_configurator/generator.py +++ b/mikrotik_configurator/generator.py @@ -3,6 +3,7 @@ from textwrap import indent from typing import Dict, List from jinja2 import Environment, FileSystemLoader +from netaddr import * from utils import read_text_file @@ -82,6 +83,12 @@ def render_file(path: str, include_dirs: List[str], variables: Dict[str, str]): env.globals['rollback_delete_chain'] = rollback_delete_chain env.globals = {**env.globals, **variables} + env.filters["ipnet"] = lambda x: str(IPNetwork(x)) + env.filters["network"] = lambda x: str(IPNetwork(x).cidr) + env.filters["host"] = lambda x: str(IPNetwork(x).ip) + env.filters["netmask"] = lambda x: str(IPNetwork(x).netmask) + env.filters["with_host"] = lambda x, host: IPNetwork(x).network + IPAddress(f"0.0.0.{host}") + content = env.get_template(os.path.basename(path)) content = content.render(load_file=load_file) diff --git a/requirements.txt b/requirements.txt index df67e0d..8510632 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ jinja2 -pyyaml \ No newline at end of file +pyyaml +netaddr