#!/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 = '''<html><head>
<title>%s</title>
</head><body>
%s
</body></html>
'''
h1 = '<h1>%s</h1>'

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+='</br>'
    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+='</br>'
    if havemvp == "true":
#        print mvpline
    	outfile.write(mvpline + '\n' )
        outfile.flush
    	outfile.close
        #time.sleep(5)

    else:
        outfile.close
    return  results


mainpage = '''
 <html><head>
 <style type="text/css">@import "/frame.css";</style>
 <!--<meta http-equiv="refresh" content="6">-->
 <title>Receiving a Form</title>
 </head><body>%s</body></html>'''

error = '''

    <h2>Removed all media mvp devices</h2>'''

result = '''
    <h1>%s</h1>
'''
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='''
     <div style="border: 1px solid #aaa; width:600px; height:500px; overflow:auto; color:#FFF;text-align:left;">
         <code id="box" style="display: block; height: 500px; width: 600px; overflow: auto;">
    '''

    endbox='''
         </code>
     </div>
    '''
    javascript='''
    <script type="text/javascript">
        var objDiv = document.getElementById("box");
        objDiv.scrollTop = objDiv.scrollHeight;
    </script>
     '''
    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 '<a href=',  oldurl,     '  > Back </a> '
    #print oldurl
    print javascript

