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 +--------