def ztptemplate():
    authOK = classes.checkAuth("ztptemplateaccess", "submenu")
    if authOK != 0:
        sysvars = classes.globalvars()
        formresult = request.form
        # Obtain the relevant device information from the database
        result = classes.ztptemplatedbAction(formresult)
        if authOK['hasaccess'] == True:
            authOK['hasaccess'] = "true"
            print(result['message'])
            return render_template("ztptemplate.html",
                                   result=result['result'],
                                   message=result['message'],
                                   formresult=formresult,
                                   totalentries=int(result['totalentries']),
                                   pageoffset=int(result['pageoffset']),
                                   entryperpage=int(result['entryperpage']),
                                   authOK=authOK,
                                   sysvars=sysvars)
        else:
            return render_template("noaccess.html",
                                   authOK=authOK,
                                   sysvars=sysvars)
    else:
        return render_template("login.html")
Beispiel #2
0
def switches():
    authOK = classes.checkAuth("switchaccess", "submenu")
    if authOK != 0:
        sysvars = classes.globalvars()
        formresult = request.form
        # Obtain the relevant device information from the database
        result = classes.devicedbAction(formresult)
        if authOK['hasaccess'] == True:
            authOK['hasaccess'] = "true"
            return render_template("switch.html",
                                   result=result['result'],
                                   switchos=result['switchos'],
                                   platforms=result['platforms'],
                                   formresult=formresult,
                                   totalentries=int(result['totalentries']),
                                   pageoffset=int(result['pageoffset']),
                                   entryperpage=int(result['entryperpage']),
                                   authOK=authOK,
                                   sysvars=sysvars,
                                   entryExists=result['entryExists'])
        else:
            return render_template("noaccess.html",
                                   authOK=authOK,
                                   sysvars=sysvars)
    else:
        return render_template("login.html")
Beispiel #3
0
def afcswitches():
    authOK = classes.checkAuth("afcswitchesaccess", "submenu")
    if authOK != 0:
        sysvars = classes.globalvars()
        try:
            formresult = request.form
        except:
            formresult = []
        result = classes.getafcSwitches(formresult)
        message = ""
        if result['afcfabrics'] == "Authentication token header required":
            result['afcswitches'] = []
            result['afcfabric'] = ""
            result['afcfabrics'] = []
            message = result['afcfabrics']
        if authOK['hasaccess'] == True:
            authOK['hasaccess'] = "true"
            return render_template("afcswitches.html",
                                   formresult=formresult,
                                   afcfabrics=result['afcfabrics'],
                                   afcswitches=result['afcswitches'],
                                   afcfabric=result['afcfabric'],
                                   message=message,
                                   totalentries=result['totalentries'],
                                   pageoffset=result['pageoffset'],
                                   entryperpage=result['entryperpage'],
                                   authOK=authOK,
                                   sysvars=sysvars)
        else:
            return render_template("noaccess.html",
                                   authOK=authOK,
                                   sysvars=sysvars)
    else:
        return render_template("login.html")
Beispiel #4
0
def afcvmareinventory():
    authOK = classes.checkAuth("afcvmwareinventoryaccess", "submenu")
    if authOK != 0:
        sysvars = classes.globalvars()
        try:
            formresult = request.form
        except:
            formresult = []
        queryStr = "select * from afc where infotype='vmwareinventory'"
        afcvmwareinventory = classes.sqlQuery(queryStr, "selectone")
        if afcvmwareinventory == None:
            afcvmwareinventory = {}
            afcvmwareinventory['jsondata'] = []
            afcvmwareinventory[
                'message'] = "No VMWare inventory information available"
        if authOK['hasaccess'] == True:
            authOK['hasaccess'] = "true"
            return render_template(
                "afcvmwareinventory.html",
                formresult=formresult,
                afcvmwareinventory=json.dumps(afcvmwareinventory),
                authOK=authOK,
                sysvars=sysvars)
        else:
            return render_template("noaccess.html",
                                   authOK=authOK,
                                   sysvars=sysvars)
    else:
        return render_template("login.html")
Beispiel #5
0
def telemetry():
    authOK = classes.checkAuth("telemetry", "menu")
    if authOK != 0:
        # Check on which IP address the server is listening
        # Obtain the active IP address
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(("8.8.8.8", 80))
        hostip = s.getsockname()[0]
        sysvars = classes.globalvars()
        formresult = request.form
        # Obtain the relevant device information from the database
        result = classes.telemetrydbAction(formresult)
        if authOK['hasaccess'] == True:
            authOK['hasaccess'] = "true"
            return render_template("telemetry.html",
                                   result=result['result'],
                                   formresult=formresult,
                                   totalentries=int(result['totalentries']),
                                   pageoffset=int(result['pageoffset']),
                                   entryperpage=int(result['entryperpage']),
                                   authOK=authOK,
                                   sysvars=sysvars,
                                   hostip=hostip)
        else:
            return render_template("noaccess.html",
                                   authOK=authOK,
                                   sysvars=sysvars)
    else:
        return render_template("login.html")
Beispiel #6
0
def gateways():
    authOK = classes.checkAuth("mobilityaccess", "submenu")
    if authOK != 0:
        sysvars = classes.globalvars()
        formresult = request.form
        # Obtain the relevant Mobility Controller information from the database
        result = classes.mobilitydbAction(formresult)
        if authOK['hasaccess'] == True:
            authOK['hasaccess'] = "true"
            return render_template("gateways.html",
                                   result=result['result'],
                                   platformResult=result['platformResult'],
                                   osversionResult=result['osversionResult'],
                                   formresult=formresult,
                                   totalentries=int(result['totalentries']),
                                   pageoffset=int(result['pageoffset']),
                                   entryperpage=int(result['entryperpage']),
                                   authOK=authOK,
                                   sysvars=sysvars)
        else:
            return render_template("noaccess.html",
                                   authOK=authOK,
                                   sysvars=sysvars)
    else:
        return render_template("login.html")
Beispiel #7
0
def afcintegrations():
    authOK = classes.checkAuth("afcintegrationsaccess", "submenu")
    if authOK != 0:
        sysvars = classes.globalvars()
        try:
            formresult = request.form
        except:
            formresult = []
        queryStr = "select * from afc where infotype='integrations'"
        result = classes.sqlQuery(queryStr, "selectone")
        if result is not None:
            if isinstance(result, str):
                result = json.loads(result)
            if result['jsondata'] == '"Authentication token header required"':
                message = "Authentication token header required"
                afcintegrations = "[]"
            else:
                message = ""
                afcintegrations = result['jsondata']
        else:
            afcintegrations = "[]"
            message = "No AFC integration information available"
        if authOK['hasaccess'] == True:
            authOK['hasaccess'] = "true"
            return render_template("afcintegrations.html",
                                   formresult=formresult,
                                   afcintegrations=afcintegrations,
                                   authOK=authOK,
                                   message=message,
                                   sysvars=sysvars)
        else:
            return render_template("noaccess.html", authOK=authOK)
    else:
        return render_template("login.html")
def ztpDeactivate():
    authOK = classes.checkAuth("ztpdevice", "feature")
    if authOK != 0:
        sysvars = classes.globalvars()
        formresult = request.form
        # Obtain the relevant device information from the database
        result = classes.ztpDeactivate(formresult)
        return json.dumps(result)
    else:
        return render_template("login.html")
def psmdss ():
    authOK=classes.checkAuth("psmdssaccess","submenu")
    if authOK!=0:
        sysvars=classes.globalvars()
        url="configs/cluster/v1/distributedservicecards"
        psminfo=classes.getRestpsm(url)
        if authOK['hasaccess']==True:
            authOK['hasaccess']="true"
        return render_template("psmdss.html", authOK=authOK, psminfo=psminfo, sysvars=sysvars)
    else:
        return render_template("login.html")
def psmsecuritypolicies ():
    authOK=classes.checkAuth("psmsecuritypoliciesccess","submenu")
    if authOK!=0:
        sysvars=classes.globalvars()
        url="configs/security/v1/networksecuritypolicies"
        psminfo=classes.getRestpsm(url)
        if psminfo['items']==None:
            psminfo['items']=[]
        if authOK['hasaccess']==True:
            authOK['hasaccess']="true"
        return render_template("psmsecuritypolicies.html", authOK=authOK, psminfo=psminfo, sysvars=sysvars)
    else:
        return render_template("login.html")
Beispiel #11
0
def sysmon():
    authOK=classes.checkAuth("servicesstatusaccess","submenu")
    if authOK!=0:
        sysvars=classes.globalvars()
        formresult=request.form
        if formresult:
            classes.processAction(formresult['name'],formresult['action'])
        if authOK['hasaccess']==True:
            authOK['hasaccess']="true"
            return render_template("sysmon.html",authOK=authOK, sysvars=sysvars)
        else:
            return render_template("noaccess.html",authOK=authOK, sysvars=sysvars)
    else:
        return render_template("login.html")
def dsservice():
    authOK = classes.checkAuth("ubtserviceaccess", "submenu")
    if authOK != 0:
        sysvars = classes.globalvars()
        authMethod = [
            "EAP PEAP", "EAP-TLS", "Allow All MAC", "Mac Auth", "PAP", "CHAP"
        ]
        authSource = [
            "Active Directory", "Local User Database", "Guest User Repository"
        ]
        result = {}
        editService = {}
        mcInfo = {}
        profileInfo = {}
        profileresult = {}
        message = []
        try:
            formresult = request.form
            result = classes.dsservicedbAction(formresult)
            queryStr = "select id, description, ipaddress from devices where ostype='Mobility Controller'"
            mcInfo = classes.sqlQuery(queryStr, "select")
            queryStr = "select * from dsprofiles"
            profileInfo = classes.sqlQuery(queryStr, "select")
            if formresult['action'] == "Edit":
                editService = classes.sqlQuery(
                    "select * from dsservices where id='{}'".format(
                        formresult['id']), "selectone")
                profileresult = classes.getProfile()
        except:
            formresult = []
        if authOK['hasaccess'] == True:
            authOK['hasaccess'] = "true"
            return render_template("dsservice.html",
                                   result=result,
                                   formresult=formresult,
                                   mcInfo=mcInfo,
                                   profileInfo=profileInfo,
                                   editService=editService,
                                   profileresult=profileresult,
                                   authMethod=authMethod,
                                   authSource=authSource,
                                   message=message,
                                   authOK=authOK,
                                   sysvars=sysvars)
        else:
            return render_template("noaccess.html",
                                   authOK=authOK,
                                   sysvars=sysvars)
    else:
        return render_template("login.html")
Beispiel #13
0
def deviceattributes():
    authOK=classes.checkAuth("deviceattributesaccess","submenu")
    if authOK!=0:
        sysvars=classes.globalvars()
        formresult=request.form
        dictform=formresult.to_dict(flat=True)
        # Obtain the relevant information from the database
        result=classes.deviceattributesdbAction(dictform)
        if authOK['hasaccess']==True:
            authOK['hasaccess']="true"
            return render_template("deviceattributes.html",result=result,formresult=formresult, totalentries=int(result['totalentries']),pageoffset=int(result['pageoffset']),entryperpage=int(result['entryperpage']), authOK=authOK, sysvars=sysvars)
        else:
            return render_template("noaccess.html",authOK=authOK, sysvars=sysvars)
    else:
        return render_template("login.html")
Beispiel #14
0
def afcfabrics():
    authOK = classes.checkAuth("afcfabricsaccess", "submenu")
    if authOK != 0:
        sysvars = classes.globalvars()
        afcfabricuuid = []
        afcfabrics = []
        message = ""
        try:
            formresult = request.form
        except:
            formresult = []
        queryStr = "select * from afc where infotype='fabrics'"
        afcfabrics = classes.sqlQuery(queryStr, "selectone")
        if afcfabrics is not None:
            if "jsondata" in afcfabrics:
                try:
                    if isinstance(afcfabrics['jsondata'], str):
                        afcfabricNames = json.loads(afcfabrics['jsondata'])
                    else:
                        afcfabricNames = afcfabrics['jsondata']
                    for items in afcfabricNames:
                        afcfabricuuid.append(items['uuid'])
                except:
                    if isinstance(afcfabrics['jsondata'], str):
                        message = afcfabrics['jsondata']
                    else:
                        message = "Error obtaining fabric information"
                    afcfabrics['jsondata'] = []
        else:
            message = "No AFC integration information available"
            afcfabrics = []

        if authOK['hasaccess'] == True:
            authOK['hasaccess'] = "true"
            return render_template("afcfabrics.html",
                                   formresult=formresult,
                                   afcfabrics=json.dumps(afcfabrics),
                                   afcfabricuuid=afcfabricuuid,
                                   message=message,
                                   authOK=authOK,
                                   sysvars=sysvars)
        else:
            return render_template("noaccess.html",
                                   authOK=authOK,
                                   sysvars=sysvars)
    else:
        return render_template("login.html")
def psmalertpolicies ():
    authOK=classes.checkAuth("psmalertpoliciesaccess","submenu")
    if authOK!=0:
        sysvars=classes.globalvars()
        url="configs/monitoring/v1/alertPolicies"
        psmalertpolicies=classes.getRestpsm(url)
        if psmalertpolicies['items']==None:
            psmalertpolicies['items']=[]
        url="configs/monitoring/v1/alertDestinations"
        psmalertdestinations=classes.getRestpsm(url)
        if psmalertdestinations['items']==None:
            psmalertdestinations['items']=[]
        if authOK['hasaccess']==True:
            authOK['hasaccess']="true"
        return render_template("psmalertpolicies.html", authOK=authOK, psmalertpolicies=psmalertpolicies, psmalertdestinations=psmalertdestinations, sysvars=sysvars)
    else:
        return render_template("login.html")
Beispiel #16
0
def index():
    authOK = classes.checkAuth("anycliaccess", "submenu")
    if authOK != 0:
        sysvars = classes.globalvars()
        try:
            formresult = request.form
        except:
            formresult = []
        queryStr = "select id, description, ipaddress, ostype, platform, osversion from devices where ostype='arubaos-switch'"
        devicelist = classes.sqlQuery(queryStr, "select")
        if formresult:
            if classes.checkifOnline(formresult['deviceid'],
                                     "arubaos-switch") == "Online":
                if formresult['cmd']:
                    cmdResult = classes.anycli(formresult['cmd'],
                                               formresult['deviceid'])
                    if cmdResult:
                        cmdContent = classes.b64decode(
                            cmdResult['result_base64_encoded']).decode('utf_8')
                    else:
                        cmdContent = "Could not obtain information"
                else:
                    cmdResult = []
                    cmdContent = "No command entered..."
            else:
                cmdResult = []
                cmdContent = "Switch is offline"
        else:
            cmdResult = []
            cmdContent = []
        if authOK['hasaccess'] == True:
            authOK['hasaccess'] = "true"
            return render_template("anycli.html",
                                   formresult=formresult,
                                   devicelist=devicelist,
                                   cmdResult=cmdResult,
                                   cmdContent=cmdContent,
                                   authOK=authOK,
                                   sysvars=sysvars)
        else:
            return render_template("noaccess.html",
                                   authOK=authOK,
                                   sysvars=sysvars)
    else:
        return render_template("login.html")
Beispiel #17
0
def afcauditlog():
    authOK = classes.checkAuth("afcauditlogaccess", "submenu")
    if authOK != 0:
        if authOK['hasaccess'] == True:
            sysvars = classes.globalvars()
            queryStr = "select COUNT(*) as totalentries from afcaudit"
            navResult = classes.sqlQuery(queryStr, "selectone")
            authOK['hasaccess'] = "true"
            return render_template("afcauditlog.html",
                                   pageoffset=1,
                                   entryperpage=25,
                                   totalentries=navResult['totalentries'],
                                   authOK=authOK,
                                   sysvars=sysvars)
        else:
            return render_template("noaccess.html", authOK=authOK)
    else:
        return render_template("login.html")
Beispiel #18
0
def deviceimages():
    authOK = classes.checkAuth("imageaccess", "submenu")
    message = ""
    filename = ""
    if authOK != 0:
        sysvars = classes.globalvars()
        formresult = request.form
        if formresult:
            if formresult['action'] == "Submit image" or formresult[
                    'action'] == "Submit changes":
                # check if the post request has the file part
                if request.files['softwareimage']:
                    file = request.files['softwareimage']
                    if file.filename == '':
                        message = 'No file selected for uploading'
                    if file and allowed_file(file.filename):
                        file.save(
                            os.path.join('/var/www/html/images/',
                                         file.filename))
                        message = ''
                        filename = file.filename
                    else:
                        message = 'Allowed file type is swi'
            # Obtain the relevant device information from the database
            result = classes.imagedbAction(formresult, filename, message)
        else:
            # Obtain the relevant device information from the database
            result = classes.imagedbAction(formresult, '', '')
        if authOK['hasaccess'] == True:
            authOK['hasaccess'] = "true"
            return render_template("deviceimages.html",
                                   result=result['result'],
                                   formresult=formresult,
                                   totalentries=int(result['totalentries']),
                                   pageoffset=int(result['pageoffset']),
                                   entryperpage=int(result['entryperpage']),
                                   authOK=authOK,
                                   sysvars=sysvars)
        else:
            return render_template("noaccess.html",
                                   authOK=authOK,
                                   sysvars=sysvars)
    else:
        return render_template("login.html")
Beispiel #19
0
def sysconf():
    authOK=classes.checkAuth("sysadminaccess","submenu")
    if authOK!=0:
        sysvars=classes.globalvars()
        formresult=request.form
        try:
            if formresult['action']=="Submit changes":
                classes.submitsysConf(formresult)
                sysvars=classes.globalvars()
        except:
            pass
        if authOK['hasaccess']==True:
            authOK['hasaccess']="true"
            timezoneregion=["Africa","America","Asia","Europe","Indian","Pacific","Antarctica"]
            return render_template("sysconf.html",authOK=authOK, sysvars=sysvars, timezoneregion=timezoneregion)
        else:
            return render_template("noaccess.html",authOK=authOK, sysvars=sysvars)
    else:
        return render_template("login.html")
Beispiel #20
0
def useradmin():
    authOK=classes.checkAuth("sysuseraccess","submenu")
    if authOK!=0:
        sysvars=classes.globalvars()
        formresult=request.form
        # Obtain the relevant information from the database
        if "selectauthsource" in formresult:
            if formresult['selectauthsource']=="ldap":
                result=classes.userldapAction(formresult)
            else:
                result=classes.userdbAction(formresult)
        else:
            result=classes.userdbAction(formresult)
        if authOK['hasaccess']==True:
            authOK['hasaccess']="true"
            return render_template("useradmin.html",result=result['userresult'],roleresult=result['roleresult'],formresult=formresult,totalentries=int(result['totalentries']),pageoffset=int(result['pageoffset']),entryperpage=int(result['entryperpage']), authOK=authOK, sysvars=sysvars)
        else:
            return render_template("noaccess.html", authOK=authOK, sysvars=sysvars)
    else:
        return render_template("login.html")
Beispiel #21
0
def syspsm():
    authOK=classes.checkAuth("sysadminaccess","submenu")
    if authOK!=0:
        sysvars=classes.globalvars()
        formresult=request.form
        try:
            if formresult['action']=="Submit changes":
                classes.submitIntegration(formresult)             
        except:
            pass
        if authOK['hasaccess']==True:
            authOK['hasaccess']="true"
            psmvars=classes.obtainVars('syspsm')
            if isinstance(psmvars, str):
                psmvars=json.loads(psmvars)
            sysvars=classes.globalvars()
            return render_template("syspsm.html",authOK=authOK, psmvars=psmvars, sysvars=sysvars)
        else:
            return render_template("noaccess.html",authOK=authOK)
    else:
        return render_template("login.html")
def dhcptracker():
    authOK = classes.checkAuth("dhcptrackeraccess", "submenu")
    if authOK != 0:
        sysvars = classes.globalvars()
        formresult = request.form
        try:
            if formresult['action'] == "Delete":
                classes.deleteEntry("dhcptracker", formresult['id'])
        except:
            pass
        result = classes.dhcpdbAction()
        if authOK['hasaccess'] == True:
            authOK['hasaccess'] = "true"
        return render_template("dhcptracker.html",
                               formresult=formresult,
                               totalentries=result['totalentries'],
                               dhcptypeInfo=result['dhcptypeInfo'],
                               pageoffset=0,
                               entryperpage=25,
                               authOK=authOK,
                               sysvars=sysvars)
    else:
        return render_template("login.html")
Beispiel #23
0
def upgradescheduler():
    authOK = classes.checkAuth("upgradescheduleraccess", "submenu")
    message = ""
    filename = ""
    upgradeStatus = {
        0: 'Not started',
        1: 'Upgrade initiated',
        5: 'Copy software onto the switch',
        10: 'Software copied successfully',
        20: 'Software copied successfully: switch is rebooted',
        50: 'There is another software upgrade in progress',
        100: 'Software upgrade completed successfully',
        110: 'Software upgrade completed successfully: reboot is required'
    }
    if authOK != 0:
        sysvars = classes.globalvars()
        formresult = request.form
        result = classes.upgradescheduledbAction(formresult)
        if authOK['hasaccess'] == True:
            authOK['hasaccess'] = "true"
            return render_template("upgradescheduler.html",
                                   upgraderesult=result['upgraderesult'],
                                   upgradestatus=upgradeStatus,
                                   switchresult=result['switchresult'],
                                   formresult=formresult,
                                   totalentries=int(result['totalentries']),
                                   pageoffset=int(result['pageoffset']),
                                   entryperpage=int(result['entryperpage']),
                                   authOK=authOK,
                                   sysvars=sysvars)
        else:
            return render_template("noaccess.html",
                                   authOK=authOK,
                                   sysvars=sysvars)
    else:
        return render_template("login.html")
Beispiel #24
0
def upgradeprofiles():
    authOK = classes.checkAuth("upgradeprofilesaccess", "submenu")
    message = ""
    filename = ""
    if authOK != 0:
        sysvars = classes.globalvars()
        formresult = request.form
        result = classes.upgradeprofiledbAction(formresult)
        if authOK['hasaccess'] == True:
            authOK['hasaccess'] = "true"
            return render_template("upgradeprofiles.html",
                                   profileresult=result['profileresult'],
                                   formresult=formresult,
                                   totalentries=int(result['totalentries']),
                                   pageoffset=int(result['pageoffset']),
                                   entryperpage=int(result['entryperpage']),
                                   authOK=authOK,
                                   sysvars=sysvars)
        else:
            return render_template("noaccess.html",
                                   authOK=authOK,
                                   sysvars=sysvars)
    else:
        return render_template("login.html")
Beispiel #25
0
def deviceinfo():
    sysvars = classes.globalvars()
    authOK = classes.checkAuth("switchaccess", "feature")
    if authOK != 0:
        # Definition for the main device monitoring page. If no switch has been selected, only the select form is rendered (deviceinfo.html).
        # Based on the information that is returned from the deviceInformation definition, a cx or switch page is rendered
        devInfo = {}
        interface = ""
        interfaces = {}
        isOnline = ""
        try:
            formresult = request.form
        except:
            formresult = []
        if formresult:
            queryStr = "select ipaddress, username, password, ostype, sysinfo, interfaces from devices where id='{}'".format(
                formresult['deviceid'])
            devInfo = classes.sqlQuery(queryStr, "selectone")
            if devInfo is not None:
                interfaces = json.loads(devInfo['interfaces'])
                sysinfo = json.loads(devInfo['sysinfo'])
                ostype = devInfo['ostype']
            else:
                ostype = "none"
                sysinfo = "none"
                interfaces = "none"
            if 'interface' in formresult:
                interface = formresult['interface']
            isOnline = classes.checkifOnline(formresult['deviceid'], ostype)
        else:
            ostype = "none"
        queryStr = "select id, description, ipaddress, ostype, platform, osversion from devices where ostype='arubaos-cx' or ostype='arubaos-switch' or ostype is NULL"
        devicelist = classes.sqlQuery(queryStr, "select")
        if ostype == "arubaos-cx":
            return render_template("deviceinfocx.html",
                                   formresult=formresult,
                                   interfaces=interfaces,
                                   interface=interface,
                                   ostype=ostype,
                                   devicelist=devicelist,
                                   isOnline=isOnline,
                                   authOK=authOK,
                                   sysvars=sysvars)
        elif ostype == "arubaos-switch":
            return render_template("deviceinfoswitch.html",
                                   devicelist=devicelist,
                                   sysinfo=sysinfo,
                                   formresult=formresult,
                                   interfaces=interfaces,
                                   interface=interface,
                                   ostype=ostype,
                                   isOnline=isOnline,
                                   authOK=authOK,
                                   sysvars=sysvars)
        else:
            return render_template("deviceinfo.html",
                                   formresult=formresult,
                                   devInfo=devInfo,
                                   devicelist=devicelist,
                                   authOK=authOK,
                                   sysvars=sysvars)
    else:
        return render_template("login.html")
def ztpdevice():
    authOK = classes.checkAuth("ztpdeviceaccess", "submenu")
    parameterValues = {}
    link1 = []
    link2 = []
    formresult = ""
    if authOK != 0:
        sysvars = classes.globalvars()
        if request.form:
            formresult = request.form.to_dict()
            # If there are template parameters in the formresult, we need to convert those and get them into a proper dictionary because Python does not really understand form array submission
            for key in request.form.keys():
                for value in request.form.getlist(key):
                    if "parameterValues" in key:
                        parameterKey = (key[key.find('[') +
                                            len('['):key.rfind(']')])
                        parameterValues.update({parameterKey: value})
                    elif "link1" in key:
                        link1.append(quote(value, safe=''))
                    elif "link2" in key:
                        link2.append(quote(value, safe=''))
            formresult.update({'link1': json.dumps(link1)})
            formresult.update({'link2': json.dumps(link2)})
            formresult.update({'parameterValues': json.dumps(parameterValues)})
        result = classes.ztpdevicedbAction(formresult)
        # And collect all the different ztp status information
        queryStr = "select distinct ztpstatus from ztpdevices"
        ztpstatusInfo = classes.sqlQuery(queryStr, "select")
        queryStr = "select id, name, filename from deviceimages"
        imageResult = classes.sqlQuery(queryStr, "select")
        queryStr = "select id, name from ztptemplates"
        templateResult = classes.sqlQuery(queryStr, "select")
        # Also need to check whether the IPAM is reachable. If not, we have to disable some buttons on the forms
        if "ipamenabled" in sysvars:
            # IPAM is enabled. Check whether IPAM is online
            if sysvars['ipamsystem'] == "PHPIPAM":
                info = {
                    'phpipamauth': sysvars['phpipamauth'],
                    'ipamipaddress': sysvars['ipamipaddress'],
                    'phpipamappid': sysvars['phpipamappid'],
                    'ipamuser': sysvars['ipamuser'],
                    'ipampassword': sysvars['ipampassword']
                }
                ipamstatus = classes.checkPhpipam(info)
            elif sysvars['ipamsystem'] == "Infoblox":
                info = {
                    'ipamipaddress': sysvars['ipamipaddress'],
                    'ipamuser': sysvars['ipamuser'],
                    'ipampassword': sysvars['ipampassword']
                }
                ipamstatus = classes.checkInfoblox(info)
            else:
                ipamstatus = "Online"
        else:
            ipamstatus = "Online"
        if authOK['hasaccess'] == True:
            authOK['hasaccess'] = "true"
            return render_template("ztpdevice.html",
                                   result=result['result'],
                                   formresult=formresult,
                                   imageResult=imageResult,
                                   templateResult=templateResult,
                                   ipamstatus=ipamstatus,
                                   ztpstatusInfo=ztpstatusInfo,
                                   totalentries=int(result['totalentries']),
                                   pageoffset=int(result['pageoffset']),
                                   entryperpage=int(result['entryperpage']),
                                   authOK=authOK,
                                   sysvars=sysvars)
        else:
            return render_template("noaccess.html",
                                   authOK=authOK,
                                   sysvars=sysvars)
    else:
        return render_template("login.html")
def dsprofile():
    authOK = classes.checkAuth("ubtprofileaccess", "submenu")
    if authOK != 0:
        sysvars = classes.globalvars()
        result = {}
        editProfile = {}
        devInfo = {}
        cpInfo = {}
        mcInfo = {}
        message = []
        authMethod = [
            "EAP PEAP", "EAP-TLS", "Allow All MAC", "Mac Auth", "PAP", "CHAP"
        ]
        authSource = [
            "Active Directory", "Local User Database", "Guest User Repository"
        ]
        try:
            formresult = request.form
            members = formresult.getlist("members")
            macauthsource = formresult.getlist("macauthsource")
            macauthmethod = formresult.getlist("macauthmethod")
            dot1xsource = formresult.getlist("dot1xsource")
            dot1xmethod = formresult.getlist("dot1xmethod")
            # Perform the database action for the dynamic segmentation profile (add, edit, delete)
            result, message = classes.dsprofiledbAction(
                formresult, members, macauthsource, macauthmethod, dot1xsource,
                dot1xmethod)
            # Obtain ArubaOS-Switch information from the database
            queryStr = "select id, description, ipaddress from devices where ostype='arubaos-switch'"
            devInfo = classes.sqlQuery(queryStr, "select")
            # Obtain ClearPass information
            queryStr = "select id, description, ipaddress from devices where ostype='ClearPass'"
            cpInfo = classes.sqlQuery(queryStr, "select")
            queryStr = "select id, description, ipaddress from devices where ostype='Mobility Controller'"
            mcInfo = classes.sqlQuery(queryStr, "select")
            if formresult['action'] == "Edit":
                editProfile = classes.sqlQuery(
                    "select * from dsprofiles where id='{}'".format(
                        formresult['id']), "selectone")
        except:
            formresult = []
        if authOK['hasaccess'] == True:
            authOK['hasaccess'] = "true"
            return render_template("dsprofile.html",
                                   result=result,
                                   formresult=formresult,
                                   cpInfo=cpInfo,
                                   mcInfo=mcInfo,
                                   devInfo=devInfo,
                                   editProfile=editProfile,
                                   authMethod=authMethod,
                                   authSource=authSource,
                                   message=message,
                                   authOK=authOK,
                                   sysvars=sysvars)
        else:
            return render_template("noaccess.html",
                                   authOK=authOK,
                                   sysvars=sysvars)
    else:
        return render_template("login.html")