[tor-commits] [torouter/master] Add parsing function to read and write /etc/network/interfaces files.

hellais at torproject.org hellais at torproject.org
Sat Aug 13 01:20:18 UTC 2011


commit f54fe96d36551fc61d746d875365e6722d56afd2
Author: Arturo Filastò <hellais at torproject.org>
Date:   Sat Aug 13 03:19:24 2011 +0200

    Add parsing function to read and write /etc/network/interfaces files.
---
 packages/torouter-web/static/main.css            |   10 +++-
 packages/torouter-web/tui/controllers/network.py |    2 +-
 packages/torouter-web/tui/utils/parsing.py       |   66 ++++++++++++++++++++++
 3 files changed, 76 insertions(+), 2 deletions(-)

diff --git a/packages/torouter-web/static/main.css b/packages/torouter-web/static/main.css
index 41cb47f..5626e92 100644
--- a/packages/torouter-web/static/main.css
+++ b/packages/torouter-web/static/main.css
@@ -3,13 +3,17 @@
 body { margin: 0;border: 0;padding: 0; }
 
 div.wrapper {
+  min-height: 300px;
   width: 800px;
   margin: 0 auto;
 }
 
 div.footer {
-  background-color: #CCC;
+  text-align: center;
+  background-color: #333;
   color: white;
+  padding-top: 20px;
+  padding-bottom: 20px;
 }
 
 div.header {
@@ -22,8 +26,12 @@ div.header ul {
 }
 
 div.header ul li {
+  font-size: 20px;
   float: left;
   padding: 5px 10px;
 }
 
+div.header ul#submenu li {
+  font-size: 15px;
+}
 
diff --git a/packages/torouter-web/tui/controllers/network.py b/packages/torouter-web/tui/controllers/network.py
index 4eb1991..b5da4e3 100644
--- a/packages/torouter-web/tui/controllers/network.py
+++ b/packages/torouter-web/tui/controllers/network.py
@@ -15,7 +15,7 @@ def menu(n):
     else:
       a.append("")
   print a
-  return """<ul>
+  return """<ul id="submenu">
   <li><a href="/network" class="%s">Main</a></li>
   <li><a href="/network/firewall" class="%s">Firewall</a></li>
   <li><a href="/network/wireless" class="%s">Wireless</a></li>
diff --git a/packages/torouter-web/tui/utils/parsing.py b/packages/torouter-web/tui/utils/parsing.py
new file mode 100644
index 0000000..c6ebe02
--- /dev/null
+++ b/packages/torouter-web/tui/utils/parsing.py
@@ -0,0 +1,66 @@
+# These functions are for parsing /etc/network/interface
+# files, they will be used inside torouter to visualize
+# and edit configuration
+class interfaces:
+  def __init__(self,filename):
+    self.fp = open(filename, "r")
+    self.wifi = {}
+    self.eth1 = {}
+    self.eth0 = {}
+ 
+  def parse_line(self, line, iface):
+    name   = line.split(" ")[0]
+    values = " ".join(line.split(" ")[1:]).rstrip()
+    if iface == "uap0":
+      if self.wifi.has_key(name):
+        if type(self.wifi[name]) is list:
+          self.wifi[name].append(values)
+        else:
+          self.wifi[name] = [self.wifi[name],values]
+      else:
+        self.wifi.update({name : values})
+    elif iface == "eth1":
+      if self.eth1.has_key(name):
+        if type(self.eth1[name]) is list:
+          self.eth1[name].append(values)
+        else:
+          self.eth1[name] = [self.eth1[name],values]
+      else:
+        self.eth1.update({name : values})
+    elif iface == "eth0":
+      if self.eth0.has_key(name):
+        if type(self.eth0[name]) is list:
+          self.eth0[name].append(values)
+        else:
+          self.eth0[name] = [self.eth0[name],values]
+      else:
+        self.eth0.update({name : values})
+  
+  def parse(self):
+    iface = None
+    for line in self.fp.readlines():
+      line = line.lstrip()
+      if line.startswith("#") or line == "":
+        continue
+      if line.startswith("iface"):
+        iface = line.split(" ")[1]
+      if iface:
+        self.parse_line(line, iface)
+
+
+  def output(self, data):
+    print "iface %s" % data['iface']
+    for item in data.items():
+      if item[0] != "iface":
+        if type(item[1]) is list:
+          for i in item[1]:
+            print "%s %s" % (item[0], i)
+        else:
+          print "%s %s" % (item[0],item[1])
+
+itfc = interfaces("/tmp/interfaces")
+itfc.parse()
+itfc.output(itfc.wifi)
+itfc.output(itfc.eth1)
+itfc.output(itfc.eth0)
+  



More information about the tor-commits mailing list