From 7988d852e2891a4412669698dac88b6cd94fc819 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Ricart?= Date: Wed, 12 Feb 2025 17:36:12 +0100 Subject: [PATCH] add simple parsers && template directory --- parsers/base.py | 36 ++++++++++++++++++++++++++++++++++++ parsers/debian.py | 31 +++++++++++++++++++++++++++++++ parsers/freebox.py | 8 ++++++++ parsers/freebsd.py | 18 ++++++++++++++++++ parsers/nginx.py | 3 ++- template/base.rst.j2 | 4 ++++ template/freebsd.rst.j2 | 3 +++ 7 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 parsers/base.py create mode 100644 parsers/debian.py create mode 100644 parsers/freebox.py create mode 100644 parsers/freebsd.py create mode 100644 template/base.rst.j2 create mode 100644 template/freebsd.rst.j2 diff --git a/parsers/base.py b/parsers/base.py new file mode 100644 index 0000000..1ad7deb --- /dev/null +++ b/parsers/base.py @@ -0,0 +1,36 @@ +#!/bin/env python3 +import sys +from os import listdir +from os.path import isfile, join +from debian import parse_debian +from freebsd import parse_freebsd +from freebox import parse_freebox + +def find_os(content): + version = content.split("###### VERSION ######")[-1] + osystem = [line.split("=")[-1] for line in version.splitlines() if line.startswith("ID=")] + if osystem: + return osystem[0] + else: + return "freebox" + + +def main(): + mypath = "../oxidized/" + + onlyfiles = [mypath + f for f in listdir(mypath) if isfile(join(mypath, f))] + + for file in onlyfiles: + with open(file,"r") as f: + content = f.read() + current_os = find_os(content) + if "freebsd" in current_os: + parse_freebsd(content) + elif "debian" in current_os: + parse_debian(content) + else: + parse_freebox(content) + +if __name__ == "__main__": + main() + diff --git a/parsers/debian.py b/parsers/debian.py new file mode 100644 index 0000000..fa7e2e6 --- /dev/null +++ b/parsers/debian.py @@ -0,0 +1,31 @@ +#!/bin/env python3 +from json import loads + +def parse_ip(raw_ip): + result = [] + ip = loads(raw_ip) + for interface in ip: + if not interface["ifname"].startswith("br-")\ + and not interface["ifname"].startswith("vet") \ + and not interface["ifname"].startswith("dock") \ + and interface["operstate"] != "DOWN" \ + : + result.append(interface) + return result + +def parse_debian(content): + current_section = "" + result = {} + for line in content.splitlines(): + if line.startswith("#####") and line.endswith("#####"): + current_section = line.replace(" ","").replace("#","").lower() + result[current_section] = "" + else: + if current_section: + result[current_section] += line + print(result["hostname"]) + print(parse_ip(result["ip"])) + +if __name__ == "__main__": + main() + diff --git a/parsers/freebox.py b/parsers/freebox.py new file mode 100644 index 0000000..2dbdee9 --- /dev/null +++ b/parsers/freebox.py @@ -0,0 +1,8 @@ +#!/bin/env python3 + +def parse_freebox(content): + pass + +if __name__ == "__main__": + main() + diff --git a/parsers/freebsd.py b/parsers/freebsd.py new file mode 100644 index 0000000..f92a652 --- /dev/null +++ b/parsers/freebsd.py @@ -0,0 +1,18 @@ +#!/bin/env python3 + +def parse_freebsd(content): + current_section = "" + result = {} + for line in content.splitlines(): + if line.startswith("#####") and line.endswith("#####"): + current_section = line.replace(" ","").replace("#","").lower() + result[current_section] = "" + else: + if current_section: + result[current_section] += line + from pprint import pprint + #pprint(result) + +if __name__ == "__main__": + main() + diff --git a/parsers/nginx.py b/parsers/nginx.py index 7607bbb..f669a0a 100644 --- a/parsers/nginx.py +++ b/parsers/nginx.py @@ -32,6 +32,7 @@ def download(domain, icon_url): def main(): mypath = "/var/home/mika/projects/dev/nginx-config/conf.d/" + mypath = "../nginx-config/conf.d/" onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))] url = port = ip = "" @@ -55,7 +56,7 @@ def main(): result[url] = { "dest":ip, "port":port, - "icon": download(url, find_icon(url)) + "icon": find_icon(url) } #print(dict(sorted(result.items(), key=lambda item: item[1]))) diff --git a/template/base.rst.j2 b/template/base.rst.j2 new file mode 100644 index 0000000..c628ff7 --- /dev/null +++ b/template/base.rst.j2 @@ -0,0 +1,4 @@ +{{ "=" * (host|length) }} +{{ host }} +{{ "=" * (host|length) }} + diff --git a/template/freebsd.rst.j2 b/template/freebsd.rst.j2 new file mode 100644 index 0000000..99300f6 --- /dev/null +++ b/template/freebsd.rst.j2 @@ -0,0 +1,3 @@ +{% include "base.rst.j2" %} +services +--------