summaryrefslogtreecommitdiffstats
path: root/ogcp/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'ogcp/views.py')
-rw-r--r--ogcp/views.py23
1 files changed, 21 insertions, 2 deletions
diff --git a/ogcp/views.py b/ogcp/views.py
index e41e242..ae07f31 100644
--- a/ogcp/views.py
+++ b/ogcp/views.py
@@ -102,6 +102,13 @@ def normalize_mac(mac):
def prettify_mac(mac):
return (':'.join(mac[i:i+2] for i in range(0, 12, 2))).lower()
+def is_valid_normalized_mac(mac):
+ if len(mac) != 12:
+ return False
+ if not all(c in '0123456789abcdef' for c in mac):
+ return False
+ return True
+
def ogserver_down(view):
flash(_('Cannot talk to ogserver. Is ogserver down?'), category='error')
return redirect(url_for(view))
@@ -1302,6 +1309,12 @@ def action_client_update():
flash(_('Invalid IP address'), category='error')
return redirect(url_for("scopes"))
+ mac_address = normalize_mac(form.mac.data)
+
+ if not is_valid_normalized_mac(mac_address):
+ flash(_('Invalid MAC address'), category='error')
+ return redirect(url_for("scopes"))
+
payload = {"ip": form.ip.data,
"serial_number": form.serial_number.data,
"netdriver": "generic",
@@ -1313,7 +1326,7 @@ def action_client_update():
"room": int(form.room.data),
"name": form.name.data,
"boot": form.boot.data,
- "mac": normalize_mac(form.mac.data) }
+ "mac": mac_address }
server = get_server_from_ip_port(form.server.data)
r = server.post('/client/update', payload)
if r.status_code != requests.codes.ok:
@@ -1553,10 +1566,16 @@ def action_client_add():
flash(_('Invalid IP address'), category='error')
return redirect(url_for("scopes"))
+ mac_address = normalize_mac(form.mac.data)
+
+ if not is_valid_normalized_mac(mac_address):
+ flash(_('Invalid MAC address'), category='error')
+ return redirect(url_for("scopes"))
+
payload = {"boot": form.boot.data,
"ip": form.ip.data,
"livedir": form.livedir.data,
- "mac": normalize_mac(form.mac.data),
+ "mac": mac_address,
"maintenance": form.maintenance.data,
"name": form.name.data,
"netdriver": "generic",