diff options
author | Jacob Appelbaum <jacob@appelbaum.net> | 2011-08-13 04:39:04 +0200 |
---|---|---|
committer | Jacob Appelbaum <jacob@appelbaum.net> | 2011-08-13 04:39:04 +0200 |
commit | a56b3841d2adb8c995d6fe4603a7e7751bfa6d78 (patch) | |
tree | 75a5c6285f155c4d36154001c3d06b8b5414e6f3 /packages/torouter-web/tui | |
parent | 2196124bf23eb9a9e4b708b2ed098011eb54df2c (diff) | |
parent | f54fe96d36551fc61d746d875365e6722d56afd2 (diff) | |
download | torouter-a56b3841d2adb8c995d6fe4603a7e7751bfa6d78.tar.gz torouter-a56b3841d2adb8c995d6fe4603a7e7751bfa6d78.zip |
Merge branch 'master' of ssh://git-rw.torproject.org/torouter
Diffstat (limited to 'packages/torouter-web/tui')
-rw-r--r-- | packages/torouter-web/tui/controllers/network.py | 56 | ||||
-rw-r--r-- | packages/torouter-web/tui/controllers/tor.py | 4 | ||||
-rw-r--r-- | packages/torouter-web/tui/utils/configuration.py | 85 | ||||
-rw-r--r-- | packages/torouter-web/tui/utils/parsing.py | 66 | ||||
-rw-r--r-- | packages/torouter-web/tui/views/firewall.html | 8 | ||||
-rw-r--r-- | packages/torouter-web/tui/views/wired.html | 8 |
6 files changed, 191 insertions, 36 deletions
diff --git a/packages/torouter-web/tui/controllers/network.py b/packages/torouter-web/tui/controllers/network.py index 7022ca4..b5da4e3 100644 --- a/packages/torouter-web/tui/controllers/network.py +++ b/packages/torouter-web/tui/controllers/network.py @@ -1,7 +1,7 @@ import web import view, config from view import render -from tui.utils import session +from tui.utils import session,configuration """ This function is used to generate the network @@ -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> @@ -28,6 +28,10 @@ def menu(n): The main page for network configuration """ class main: + # XXX do all the backend stuff + def update_config(self, data): + return True + def GET(self): if session.is_logged() > 0: return render.base(render.main(),menu(0)) @@ -36,6 +40,7 @@ class main: def POST(self): if session.is_logged() > 0: + self.update_config(web.input()) return render.base(render.main(),menu(0)) else: return render.base(render.login()) @@ -44,14 +49,19 @@ class main: The firewall configuration page """ class firewall: + # XXX do all the backend stuff + def update_config(self, data): + return True + def GET(self): if session.is_logged() > 0: - return render.base(render.main(),menu(0)) + return render.base(render.firewall(configuration.get_form("firewall")),menu(0)) else: return render.base(render.login()) def POST(self): if session.is_logged() > 0: + self.update_config(web.input()) return render.base(render.firewall(),menu(1)) else: return render.base(render.login()) @@ -62,46 +72,19 @@ class firewall: Wireless network configuration page """ class wireless: - def get_current_config(self): - conf = {'essid' : None, 'encryption' : None, 'key' : None} - - # XXX Dummy default config for testing purposes - # plugin here the actual code for config retreival - conf['essid'] = "Torouter" - conf['encryption'] = "WPA2" - conf['key'] = "ljdasjkbcuBH12389Ba" - - - return conf - - def build_form(self): - c = self.get_current_config() - ret_form = web.form.Form( - web.form.Textbox(name='essid', - description='Wireless ESSID', value=c['essid']), - web.form.Dropdown(name='enctype', args=['WPA2', 'WPA', 'WEP (not reccomended)', 'open'], - description='Wireless encryption scheme', value=c['encryption']), - web.form.Password(name='key', - description='key', value=c['key']), - web.form.Button('save') - ) - self.form = ret_form - - return True - + # XXX do all the backend stuff def update_config(self, data): return True def GET(self): if session.is_logged() > 0: - if self.build_form(): - return render.base(render.wireless(self.form()),menu(2)) + return render.base(render.wireless(configuration.get_form("wireless")),menu(2)) else: return render.base(render.login()) def POST(self): if session.is_logged() > 0: - self.update_config(None) + self.update_config(web.input()) print web.input() return render.base(render.saved(web.input()),menu(2)) else: @@ -111,14 +94,19 @@ class wireless: Wired network configuration page """ class wired: + # XXX do all the backend stuff + def update_config(self, data): + return True + def GET(self): if session.is_logged() > 0: - return render.base(render.wired(),menu(3)) + return render.base(render.wired(configuration.get_form("wired")),menu(3)) else: return render.base(render.login()) def POST(self): if session.is_logged() > 0: + self.update_config(web.input()) return render.base(render.wired(),menu(3)) else: return render.base(render.login()) diff --git a/packages/torouter-web/tui/controllers/tor.py b/packages/torouter-web/tui/controllers/tor.py index ca96209..d07cb71 100644 --- a/packages/torouter-web/tui/controllers/tor.py +++ b/packages/torouter-web/tui/controllers/tor.py @@ -17,9 +17,13 @@ class status: Tor configuration page """ class config: + def update_config(self, data): + return True + def GET(self): return render.base(render.torconfig()) def POST(self): + self.update_config(web.input()) return render.base(render.torconfig()) diff --git a/packages/torouter-web/tui/utils/configuration.py b/packages/torouter-web/tui/utils/configuration.py new file mode 100644 index 0000000..88bbc05 --- /dev/null +++ b/packages/torouter-web/tui/utils/configuration.py @@ -0,0 +1,85 @@ +import web +import config + +def get(name): + conf = {} + # XXX The content of these functions are just + # skeletons + if name == "wireless": + conf['essid'] = "Torouter" + conf['encryption'] = "WPA2" + conf['key'] = "ljdasjkbcuBH12389Ba" + return conf + elif name == "firewall": + conf['el1'] = "Element 1" + conf['el2'] = "Element 2" + conf['el3'] = "Element 3" + return conf + elif name == "wired": + conf['el1'] = "Element 1" + conf['el2'] = "Element 2" + conf['el3'] = "Element 3" + return conf + elif name == "tor": + conf['el1'] = "Element 1" + conf['el2'] = "Element 2" + conf['el3'] = "Element 3" + return conf + +def write(name, data): + if name == "wireless": + return True + elif name == "firewall": + return True + elif name == "wired": + return True + elif name == "tor": + return True + +def get_form(name): + # Also these are just skeletons + if name == "wireless": + c = get(name) + return web.form.Form( + web.form.Textbox(name='essid', + description='Wireless ESSID', value=c['essid']), + web.form.Dropdown(name='enctype', args=['WPA2', 'WPA', 'WEP (not reccomended)', 'open'], + description='Wireless encryption scheme', value=c['encryption']), + web.form.Password(name='key', + description='key', value=c['key']), + web.form.Button('save') + ) + elif name == "firewall": + c = get(name) + return web.form.Form( + web.form.Textbox(name='el1', + description='The first element', value=c['el2']), + web.form.Dropdown(name='el2', args=['WPA2', 'WPA', 'WEP (not reccomended)', 'open'], + description='The second selement', value=c['el2']), + web.form.Password(name='el3', + description='The third element', value=c['el3']), + web.form.Button('save') + ) + elif name == "wired": + c = get(name) + return web.form.Form( + web.form.Textbox(name='el1', + description='The first element', value=c['el2']), + web.form.Dropdown(name='el2', args=['WPA2', 'WPA', 'WEP (not reccomended)', 'open'], + description='The second selement', value=c['el2']), + web.form.Password(name='el3', + description='The third element', value=c['el3']), + web.form.Button('save') + ) + elif name == "tor": + c = get(name) + return web.form.Form( + web.form.Textbox(name='el1', + description='The first element', value=c['el2']), + web.form.Dropdown(name='el2', args=['WPA2', 'WPA', 'WEP (not reccomended)', 'open'], + description='The second selement', value=c['el2']), + web.form.Password(name='el3', + description='The third element', value=c['el3']), + web.form.Button('save') + ) + 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) + diff --git a/packages/torouter-web/tui/views/firewall.html b/packages/torouter-web/tui/views/firewall.html index c3a244d..30f5a9b 100644 --- a/packages/torouter-web/tui/views/firewall.html +++ b/packages/torouter-web/tui/views/firewall.html @@ -1 +1,7 @@ -the firewall page +$def with (form) + +<h2>Firewall configuration page</h2> + +<form action="" method="POST"> +$:form.render() +</form> diff --git a/packages/torouter-web/tui/views/wired.html b/packages/torouter-web/tui/views/wired.html index 3a517d1..3676f63 100644 --- a/packages/torouter-web/tui/views/wired.html +++ b/packages/torouter-web/tui/views/wired.html @@ -1 +1,7 @@ -the wired page +$def with (form) + +<h2>Wired configuration page</h2> + +<form action="" method="POST"> +$:form.render() +</form> |