summaryrefslogtreecommitdiff
path: root/boot/app/cgi-bin
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2014-03-30 16:03:44 -0400
committerschneefux <schneefux+commit@schneefux.xyz>2014-03-30 16:03:44 -0400
commitd31fabf8cff5dae02e3fc759a4203bd374dddc99 (patch)
tree888ec4e6d98154f862a3b9cd17a3394b657bc02e /boot/app/cgi-bin
parent4182b5e096e081158dddd4ad5d031af94fcc63de (diff)
downloadjasper-client-d31fabf8cff5dae02e3fc759a4203bd374dddc99.tar.gz
jasper-client-d31fabf8cff5dae02e3fc759a4203bd374dddc99.zip
Initial commit
Diffstat (limited to 'boot/app/cgi-bin')
-rwxr-xr-xboot/app/cgi-bin/index.cgi42
-rwxr-xr-xboot/app/cgi-bin/wifi.py60
2 files changed, 102 insertions, 0 deletions
diff --git a/boot/app/cgi-bin/index.cgi b/boot/app/cgi-bin/index.cgi
new file mode 100755
index 0000000..bcb85b5
--- /dev/null
+++ b/boot/app/cgi-bin/index.cgi
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+
+from wifi import *
+import os
+import cgi
+import cgitb; cgitb.enable() # for troubleshooting
+
+# some housekeeping
+print "Content-type: text/html"
+print
+
+# get the form input
+form = cgi.FieldStorage()
+network = form.getvalue("network", "")
+password = form.getvalue("password", "")
+
+# if not submitted yet, show them the network selection form
+if not network:
+
+ wifi = Wifi()
+
+ networks = [x.replace("\n","") for x in wifi.access_points if x.replace("\n","") != "Jasper"]
+ select_code_split = ["<option value=\"%s\">%s</option>" % (network, network) for network in networks]
+ select_code = "".join(select_code_split)
+
+ response = open("index-template.html","r").read().replace("{{ select_code }}", select_code)
+ print response
+
+# otherwise, show them the password form
+elif not password:
+ response = open("key-template.html","r").read().replace("{{ network }}", cgi.escape(network))
+ print response
+
+# in the final case, process the wifi password and network data
+else:
+ # show the confirmation page
+ response = open("connecting-template.html","r").read()
+ print response
+
+ # save the configuration
+ wifi = Wifi()
+ wifi.add_wifi(network, password) \ No newline at end of file
diff --git a/boot/app/cgi-bin/wifi.py b/boot/app/cgi-bin/wifi.py
new file mode 100755
index 0000000..5cede72
--- /dev/null
+++ b/boot/app/cgi-bin/wifi.py
@@ -0,0 +1,60 @@
+import yaml
+import os, subprocess
+
+class Wifi:
+
+ access_points = []
+
+ def __init__(self):
+
+ subprocess.call("iwlist wlan0 scan > temp.txt", shell = True)
+ output = open("temp.txt")
+ lines = output.readlines()
+
+ for index, line in enumerate(lines):
+
+ if "Address" in line:
+
+ address = line[29:-1]
+ name = lines[index + 1].split("\"")[1]
+ self.access_points.append(name)
+
+ self.access_points = list(set(self.access_points))
+
+ os.system("rm temp.txt")
+
+ def add_wifi(self, SSID, KEY=""):
+ networks = yaml.safe_load(open("../networks.yml", "r"))
+
+ # add new network to front of list
+ network = {"SSID": SSID, "KEY": KEY}
+ networks.insert(0, network)
+
+ with open('../networks.yml', 'w') as outputFile:
+ output = yaml.dump(networks)
+ outputFile.write(output)
+
+ def set_default_wifi(self, SSID, KEY=""):
+
+ text = open("connect.txt", "r").read()
+ text = text.replace("{{ SSID }}", SSID)
+ text = text.replace("{{ KEY }}", KEY)
+
+ outputFile = open("/etc/network/interfaces", "w")
+ outputFile.write(text)
+ outputFile.flush()
+ outputFile.close()
+
+ subprocess.call(["sudo", "/etc/init.d/networking", "restart"])
+
+ def setup_adhoc(self):
+
+ text = open("broadcast.txt", "r").read()
+ outputFile = open("/etc/network/interfaces","w")
+ outputFile.write(text)
+ outputFile.flush()
+ outputFile.close()
+
+ subprocess.call(["sudo", "/etc/init.d/networking", "restart"])
+ subprocess.call(['sudo', '/usr/sbin/dhcpd', '-q', '-cf', '/etc/dhcp/dhcpd.conf', '-pf', '/var/run/dhcpd.pid'])
+ subprocess.call(["sudo", "/etc/init.d/networking", "restart"])