#!/usr/bin/python
import sys
import cgi
import os
import socket
import time
import shutil
try:
import cgitb
cgitb.enable()
except ImportError:
sys.stderr = sys.stdout
def cgiprint(inline=''):
sys.stdout.write(inline)
sys.stdout.write('\r\n')
sys.stdout.flush()
contentheader = 'Content-Type: text/html'
thepage = '''
%s
%s
'''
h1 = '%s
'
def getform(theform, valuelist, notpresent='', nolist=False):
"""
This function, given a CGI form as a
FieldStorage instance, extracts the
data from it, based on valuelist
passed in. Any non-present values are
set to '' - although this can be
changed. (e.g. to return None so you
can test for missing keywords - where
'' is a valid answer but to have the
field missing isn't.) It also takes a
keyword argument 'nolist'. If this is
True list values only return their
first value.
"""
data = {}
for field in valuelist:
if not theform.has_key(field):
# if the field is not present (or was empty)
data[field] = notpresent
else:
# the field is present
data[field] = theform.getlist(field)
# print type(theform[field])
return data
def getall(theform, nolist=False):
"""
Passed a form (cgi.FieldStorage
instance) return *all* the values.
This doesn't take into account
multipart form data (file uploads).
It also takes a keyword argument
'nolist'. If this is True list values
only return their first value.
"""
data = {}
for field in theform.keys():
# we can't just iterate over it, but must use the keys() method
if type(theform[field]) == type([]):
if not nolist:
data[field] = theform.getlist(field)
else:
data[field] = theform.getfirst(field)
else:
data[field] = theform[field].value
return data
def isblank(indict):
"""
Passed an indict of values it checks
if any of the values are set. Returns
True if the indict is empty, else
returns False. I use it on the a form
processed with getform to tell if my
CGI has been activated without any
form values.
"""
for key in indict.keys():
if indict[key]:
return False
return True
def update_mvp_list(maclist):
outfile = open("/etc/dnsmasq.mvpmc.conf","w")
mvpline="dhcp-boot=net:mvp,dongle.bin"
mvpmacline='dhcp-host=net:mvp,%s'
results="The following media mvp devices have been added:"
results+=''
havemvp = "false"
#print maclist
for i in range(len(maclist)):
if maclist[i] != '':
# print mvpmacline % maclist[i]
outfile.write(mvpmacline % maclist[i] + '\n' )
havemvp="true"
results+=maclist[i]
results+=''
if havemvp == "true":
# print mvpline
outfile.write(mvpline + '\n' )
outfile.flush
outfile.close
#time.sleep(5)
else:
outfile.close
return results
mainpage = '''
Receiving a Form
%s'''
error = '''
Removed all media mvp devices
'''
result = '''
%s
'''
possible_parameters = ['activemvp', 'othermac','hiddenparam']
if __name__ == '__main__':
cgiprint(contentheader) # content header
cgiprint() # finish headers with blank line
theform = cgi.FieldStorage()
#print theform
formdict = getform(theform, possible_parameters)
#print possible_parameters
#print formdict
oldurl = '/mvpmc.shtml'
if isblank(formdict):
body = error
all_active=[]
else:
all_active=[]
activemac_checkbox = formdict['activemvp']
for i in range(len(activemac_checkbox)):
active_string=activemac_checkbox[i]
active_string=active_string.strip()
all_active.append(active_string)
body = result % ("MVP mac address")
print mainpage % body
# mylogfile=update_mvp_list(all_active)
box='''
'''
endbox='''
'''
javascript='''
'''
if all_active != []:
mylogfile=update_mvp_list(all_active)
command="sudo /sbin/sv stop dnsmasq"
os.system(command)
command="sudo /sbin/sv start dnsmasq"
os.system(command)
print box
print mylogfile
print endbox
print ' Back '
#print oldurl
print javascript