summaryrefslogtreecommitdiffstats
path: root/retiolum/bin/nodes-to-json
diff options
context:
space:
mode:
authorroot <root@pigstarter.retiolum>2013-06-24 19:19:46 +0200
committerroot <root@pigstarter.retiolum>2013-06-24 19:19:46 +0200
commitb28bedc524b1a0f90a1b760ac29fb2d49d7970b3 (patch)
tree17f10fa9c224d089da28f3bb938bf9ee3c609bed /retiolum/bin/nodes-to-json
parentb25a68171162c4a9aaba90e7af181734a527f5ee (diff)
fix symlink
Diffstat (limited to 'retiolum/bin/nodes-to-json')
-rw-r--r--retiolum/bin/nodes-to-json37
1 files changed, 37 insertions, 0 deletions
diff --git a/retiolum/bin/nodes-to-json b/retiolum/bin/nodes-to-json
new file mode 100644
index 00000000..ca9d3c8c
--- /dev/null
+++ b/retiolum/bin/nodes-to-json
@@ -0,0 +1,37 @@
+#!/usr/bin/python
+
+def parse_hosts_path(path="/etc/tinc/retiolum/hosts"):
+ import os
+ import re
+
+ needle_addr = re.compile("Subnet\s*=\s*(.*)/[0-9]+")
+ needle_port = re.compile("Port\s*=\s*(.*)")
+ for f in os.listdir(path):
+ with open(path+"/"+f) as of:
+ addrs = []
+ port = "655"
+
+ for line in of.readlines():
+
+ addr_found = needle_addr.match(line)
+ if addr_found:
+ addrs.append(addr_found.group(1))
+
+ port_found = needle_port.match(line)
+ if port_found:
+ port = port_found.group(1)
+
+ if addrs : yield (f ,[(addr ,int(port)) for addr in addrs])
+
+
+
+if __name__ == "__main__":
+ """
+ usage
+ """
+ import json
+ import sys
+ db={}
+ for host,addrs in parse_hosts_path(sys.argv[1] if len(sys.argv) > 2 else "/etc/tinc/retiolum/hosts"):
+ db[host] = addrs
+ print(json.dumps(db))