def removeSsid5GhzRadius(): if request.method == 'GET': if session.get("username") is not None: conn = cardinalSql() status = request.args.get('status') removeSsidCursor = conn.cursor() removeSsidCursor.execute( "SELECT ap_ssid_id,ap_ssid_name FROM ssids_5ghz_radius") ssids = removeSsidCursor.fetchall() removeSsidCursor.close() conn.close() return render_template("remove-ssid-5ghz-radius.html", status=status, ssids=ssids) else: return msgAuthFailed, 401 elif request.method == 'POST': if session.get("username") is not None: conn = cardinalSql() ssidId = request.form["ssid_id"] apId = session.get('apId') apName = session.get('apName') ssidInfo = getSsidInfo(ssidId=ssidId, ssidType="ssid_5ghz_radius") checkSsidRelationship = ssidCheck(apId=apId, ssidId=ssidId, ssidType="ssid_5ghz_radius", action="remove", commit="False") if checkSsidRelationship: apInfoCursor = conn.cursor() apInfoCursor.execute( "SELECT ap_ip,ap_ssh_username,ap_ssh_password FROM access_points WHERE ap_id = %s", [apId]) apInfo = apInfoCursor.fetchall() apInfoCursor.close() encryptedSshPassword = bytes(apInfo[0][2], 'utf-8') apSshPassword = cipherSuite.decrypt( encryptedSshPassword).decode('utf-8') scout_ssid.scoutDeleteSsid5(ip=apInfo[0][0], username=apInfo[0][1], password=apSshPassword, ssid=ssidInfo[0][0], vlan=ssidInfo[0][1], radioSub=ssidInfo[0][3], gigaSub=ssidInfo[0][4]) commitRelationship = ssidCheck(apId=apId, ssidId=ssidId, ssidType="ssid_5ghz_radius", action="remove", commit="True") status = "Removal of 5GHz RADIUS SSID {0} for AP {1} Has Been Successfully Initiated!".format( ssidInfo[0][0], apName) conn.close() return redirect( url_for('cardinal_ssid_ops_bp.removeSsid5GhzRadius', status=status)) else: return msgAuthFailed, 401
def addAp(): if request.method == 'GET': if session.get("username") is not None: status = request.args.get('status') conn = cardinalSql() apGroupCursor = conn.cursor() apGroupCursor.execute( "SELECT ap_group_id,ap_group_name FROM access_point_groups") apGroups = apGroupCursor.fetchall() apGroupCursor.close() conn.close() return render_template("add-ap.html", status=status, apGroups=apGroups) else: return msgAuthFailed, 401 elif request.method == 'POST': if session.get("username") is not None: apName = request.form["ap_name"] apIp = request.form["ap_ip"] apSshUsername = request.form["ssh_username"] apSshPassword = bytes(request.form["ssh_password"], 'utf-8') apGroupId = request.form["group_id"] if len(apGroupId) <= 0: apGroupId = None apSnmp = bytes(request.form["ap_snmp"], 'utf-8') status = msgResourceAdded(resource=apName) encryptedSshPassword = cipherSuite.encrypt(apSshPassword).decode( 'utf-8') encryptedSnmpCommunity = cipherSuite.encrypt(apSnmp).decode( 'utf-8') conn = cardinalSql() try: if apGroupId is None: addApCursor = conn.cursor() addApCursor.execute( "INSERT INTO access_points (ap_name, ap_ip, ap_ssh_username, ap_ssh_password, ap_snmp, ap_group_id) VALUES (%s, %s, %s, %s, %s, NULL)", (apName, apIp, apSshUsername, encryptedSshPassword, encryptedSnmpCommunity)) addApCursor.close() else: addApCursor = conn.cursor() addApCursor.execute( "INSERT INTO access_points (ap_name, ap_ip, ap_ssh_username, ap_ssh_password, ap_snmp, ap_group_id) VALUES (%s, %s, %s, %s, %s, %s)", (apName, apIp, apSshUsername, encryptedSshPassword, encryptedSnmpCommunity, apGroupId)) addApCursor.close() except MySQLdb.Error as e: conn.close() return redirect(url_for('cardinal_ap_bp.addAp', status=e)) else: conn.commit() conn.close() return redirect(url_for('cardinal_ap_bp.addAp', status=status)) else: return msgAuthFailed, 401
def deleteApGroup(): if request.method == 'GET': if session.get("username") is not None: conn = cardinalSql() status = request.args.get('status') deleteApGroupCursor = conn.cursor() deleteApGroupCursor.execute( "SELECT ap_group_id,ap_group_name FROM access_point_groups") apGroups = deleteApGroupCursor.fetchall() deleteApGroupCursor.close() conn.close() return render_template("delete-ap-group.html", status=status, apGroups=apGroups) else: return msgAuthFailed, 401 elif request.method == 'POST': if session.get("username") is not None: apGroupId = request.form["ap_group_id"] if len(apGroupId) <= 0: status = msgSpecifyValidApGroup return redirect( url_for('cardinal_ap_group_bp.deleteApGroup', status=status)) else: conn = cardinalSql() deleteApGroupNameCursor = conn.cursor() deleteApGroupNameCursor.execute( "SELECT ap_group_name FROM access_point_groups WHERE ap_group_id = %s", [apGroupId]) apGroupName = deleteApGroupNameCursor.fetchone()[0] status = msgResourceDeleted(resource=apGroupName) try: deleteApGroupCursor = conn.cursor() deleteApGroupCursor.execute( "DELETE FROM access_point_groups WHERE ap_group_id = %s", [apGroupId]) deleteApGroupCursor.close() except MySQLdb.Error as e: conn.close() return redirect( url_for('cardinal_ap_group_bp.deleteApGroup', status=e)) else: conn.commit() conn.close() return redirect( url_for('cardinal_ap_group_bp.deleteApGroup', status=status)) else: return msgAuthFailed, 401
def configApName(): if request.method == 'GET': if session.get("username") is not None: status = request.args.get('status') return render_template("config-ap-name.html", status=status) elif request.method == 'POST': apId = session.get('apId') apNewName = request.form["ap_name"] conn = cardinalSql() apInfoCursor = conn.cursor() apInfoCursor.execute("SELECT ap_name,ap_ip,ap_ssh_username,ap_ssh_password FROM access_points WHERE ap_id = %s", [apId]) apInfo = apInfoCursor.fetchall() apInfoCursor.close() for info in apInfo: apName = info[0] apIp = info[1] apSshUsername = info[2] encryptedSshPassword = bytes(info[3], 'utf-8') apSshPassword = cipherSuite.decrypt(encryptedSshPassword).decode('utf-8') scout_sys.scoutChangeName(ip=apIp, username=apSshUsername, password=apSshPassword, apName=apNewName) status = "AP Name Changed from {0} to {1}".format(apName,apNewName) try: changeApNameCursor = conn.cursor() changeApNameCursor.execute("UPDATE access_points SET ap_name = %s WHERE ap_id = %s", (apNewName,apId)) changeApNameCursor.close() except MySQLdb.Error as e: return redirect(url_for('cardinal_ap_ops_bp.configApName', status=e)) else: conn.commit() conn.close() return redirect(url_for('cardinal_ap_ops_bp.configApName', status=status))
def addSsid5GhzRadius(): if request.method == 'GET': if session.get("username") is not None: status = request.args.get('status') return render_template("add-ssid-5ghz-radius.html", status=status) else: return msgAuthFailed, 401 elif request.method == 'POST': if session.get("username") is not None: ssidName = request.form["ssid_name"] vlan = request.form["vlan"] bridgeGroup = request.form["bridge_group_id"] radioId = request.form["radio_sub_id"] gigaId = request.form["giga_sub_id"] radiusIp = request.form["radius_ip"] sharedSecret = bytes(request.form["shared_secret"], 'utf-8') authPort = request.form["auth_port"] acctPort = request.form["acct_port"] radiusTimeout = request.form["radius_timeout"] radiusGroup = request.form["radius_group"] methodList = request.form["method_list"] encryptedSharedSecret = cipherSuite.encrypt(sharedSecret).decode('utf-8') conn = cardinalSql() addSsid5GhzRadiusCursor = conn.cursor() addSsid5GhzRadiusCursor.execute("INSERT INTO ssids_5ghz_radius (ap_ssid_name, ap_ssid_vlan, ap_ssid_bridge_id, ap_ssid_radio_id, ap_ssid_ethernet_id, ap_ssid_radius_server, ap_ssid_radius_secret, ap_ssid_authorization_port, ap_ssid_accounting_port, ap_ssid_radius_timeout, ap_ssid_radius_group, ap_ssid_radius_method_list) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", (ssidName,vlan,bridgeGroup,radioId,gigaId,radiusIp,encryptedSharedSecret,authPort,acctPort,radiusTimeout,radiusGroup,methodList)) addSsid5GhzRadiusCursor.close() conn.commit() conn.close() status = msgResourceAdded(resource=ssidName) return redirect(url_for('cardinal_ssid_bp.addSsid5GhzRadius', status=status)) else: return msgAuthFailed, 401
def addSsid5Ghz(): if request.method == 'GET': if session.get("username") is not None: status = request.args.get('status') return render_template("add-ssid-5ghz.html", status=status) else: return msgAuthFailed, 401 elif request.method == 'POST': if session.get("username") is not None: ssidName = request.form["ssid_name"] vlan = request.form["vlan"] wpa2Psk = bytes(request.form["wpa2_psk"], 'utf-8') bridgeGroup = request.form["bridge_group_id"] radioId = request.form["radio_sub_id"] gigaId = request.form["giga_sub_id"] encryptedWpa2 = cipherSuite.encrypt(wpa2Psk).decode('utf-8') conn = cardinalSql() addSsid5GhzCursor = conn.cursor() addSsid5GhzCursor.execute("INSERT INTO ssids_5ghz (ap_ssid_name, ap_ssid_vlan, ap_ssid_wpa2, ap_ssid_bridge_id, ap_ssid_radio_id, ap_ssid_ethernet_id) VALUES (%s, %s, %s, %s, %s, %s)", (ssidName,vlan,encryptedWpa2,bridgeGroup,radioId,gigaId)) addSsid5GhzCursor.close() conn.commit() conn.close() status = msgResourceAdded(resource=ssidName) return redirect(url_for('cardinal_ssid_bp.addSsid5Ghz', status=status)) else: return msgAuthFailed, 401
def configApIp(): if request.method == 'GET': if session.get("username") is not None: status = request.args.get('status') return render_template("config-ap-ip.html", status=status) else: return msgAuthFailed, 401 elif request.method == 'POST': if session.get("username") is not None: apId = session.get('apId') if apId is None: apId = request.form["ap_id"] apNewIp = request.form["ap_new_ip"] apSubnetMask = request.form["ap_subnetmask"] apInfo = getApInfo(apId=apId) encryptedSshPassword = bytes(apInfo[0][3], 'utf-8') apSshPassword = cipherSuite.decrypt(encryptedSshPassword).decode('utf-8') scout_sys.scoutChangeIp(ip=apInfo[0][1], username=apInfo[0][2], password=apSshPassword, newIp=apNewIp, subnetMask=apSubnetMask) status = "{}'s IP was successfully updated!".format(apInfo[0][0]) try: conn = cardinalSql() changeApIpCursor = conn.cursor() changeApIpCursor.execute("UPDATE access_points SET ap_ip = %s WHERE ap_id = %s", (apNewIp,apId)) changeApIpCursor.close() except MySQLdb.Error as e: conn.close() return redirect(url_for('cardinal_ap_ops_bp.configApIp', status=e)) else: conn.close() conn.commit() return redirect(url_for('cardinal_ap_ops_bp.configApIp', status=status)) else: return msgAuthFailed, 401
def configApName(): if request.method == 'GET': if session.get("username") is not None: status = request.args.get('status') return render_template("config-ap-name.html", status=status) else: return msgAuthFailed, 401 elif request.method == 'POST': if session.get("username") is not None: apId = session.get('apId') if apId is None: apId = request.form["ap_id"] apNewName = request.form["ap_name"] apInfo = getApInfo(apId=apId) encryptedSshPassword = bytes(apInfo[0][3], 'utf-8') apSshPassword = cipherSuite.decrypt(encryptedSshPassword).decode('utf-8') scout_sys.scoutChangeName(ip=apInfo[0][1], username=apInfo[0][2], password=apSshPassword, apName=apNewName) status = "AP Name Changed from {0} to {1}".format(apInfo[0][0],apNewName) try: conn = cardinalSql() changeApNameCursor = conn.cursor() changeApNameCursor.execute("UPDATE access_points SET ap_name = %s WHERE ap_id = %s", (apNewName,apId)) changeApNameCursor.close() except MySQLdb.Error as e: conn.close() return redirect(url_for('cardinal_ap_ops_bp.configApName', status=e)) else: conn.close() conn.commit() return redirect(url_for('cardinal_ap_ops_bp.configApName', status=status)) else: return msgAuthFailed, 401
def doDeleteSsid5GhzRadius(): if request.method == 'POST': ssidId = request.form["ssid_id"] if len(ssidId) <= 0: status = "Please select a valid 5GHz RADIUS SSID." return redirect( url_for('cardinal_ssid_bp.deleteSsid5GhzRadius', status=status)) conn = cardinalSql() deleteSsidNameCursor = conn.cursor() deleteSsidNameCursor.execute( "SELECT ap_ssid_name FROM ssids_5ghz_radius WHERE ap_ssid_id = %s", [ssidId]) ssidName = deleteSsidNameCursor.fetchone()[0] deleteSsidNameCursor.close() status = "{} was successfully deleted!".format(ssidName) try: deleteSsidCursor = conn.cursor() deleteSsidCursor.execute( "DELETE FROM ssids_5ghz_radius WHERE ap_ssid_id = %s", [ssidId]) deleteSsidCursor.close() except MySQLdb.Error as e: status = e finally: conn.commit() conn.close() return redirect( url_for('cardinal_ssid_bp.deleteSsid5GhzRadius', status=status))
def addApGroup(): if request.method == 'GET': if session.get("username") is not None: status = request.args.get('status') return render_template("add-ap-group.html", status=status) else: return msgAuthFailed, 401 elif request.method == 'POST': if session.get('username') is not None: apGroupName = request.form["ap_group_name"] status = msgResourceAdded(resource=apGroupName) conn = cardinalSql() try: addApGroupCursor = conn.cursor() addApGroupCursor.execute( "INSERT INTO access_point_groups (ap_group_name) VALUES (%s)", [apGroupName]) addApGroupCursor.close() except MySQLdb.Error as e: conn.close() return redirect( url_for('cardinal_ap_group_bp.addApGroup', status=e)) else: conn.commit() conn.close() return render_template('add-ap-group.html', status=status) else: return msgAuthFailed, 401
def manageApDashboard(): if request.method == 'POST': apId = request.form['ap_id'] if len(apId) <= 0: status = "Please select a valid access point." return redirect(url_for('cardinal_ap_bp.chooseApDashboard', status=status)) else: conn = cardinalSql() apInfoCursor = conn.cursor() apInfoCursor.execute("SELECT ap_name,ap_ip,ap_total_clients,ap_bandwidth,ap_model FROM access_points WHERE ap_id = %s", [apId]) apInfo = apInfoCursor.fetchall() apInfoCursor.close() conn.close() for info in apInfo: apName = info[0] apIp = info[1] apTotalClients = info[2] apBandwidth = info[3] apModel = info[4] session['apId'] = apId session['apName'] = apName session['apIp'] = apIp session['apTotalClients'] = apTotalClients session['apBandwidth'] = apBandwidth session['apModel'] = apModel return render_template("manage-ap-dashboard.html")
def doAddSsid5GhzRadius(): if request.method == 'POST': ssidName = request.form["ssid_name"] vlan = request.form["vlan"] bridgeGroup = request.form["bridge_group_id"] radioId = request.form["radio_sub_id"] gigaId = request.form["giga_sub_id"] radiusIp = request.form["radius_ip"] sharedSecret = bytes(request.form["shared_secret"], 'utf-8') authPort = request.form["auth_port"] acctPort = request.form["acct_port"] radiusTimeout = request.form["radius_timeout"] radiusGroup = request.form["radius_group"] methodList = request.form["method_list"] encryptedSharedSecret = cipherSuite.encrypt(sharedSecret).decode( 'utf-8') conn = cardinalSql() addSsid5GhzRadiusCursor = conn.cursor() addSsid5GhzRadiusCursor.execute( "INSERT INTO ssids_5ghz_radius (ap_ssid_name, ap_ssid_vlan, ap_ssid_bridge_id, ap_ssid_radio_id, ap_ssid_ethernet_id, ap_ssid_radius_server, ap_ssid_radius_secret, ap_ssid_authorization_port, ap_ssid_accounting_port, ap_ssid_radius_timeout, ap_ssid_radius_group, ap_ssid_radius_method_list) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", (ssidName, vlan, bridgeGroup, radioId, gigaId, radiusIp, encryptedSharedSecret, authPort, acctPort, radiusTimeout, radiusGroup, methodList)) addSsid5GhzRadiusCursor.close() conn.commit() conn.close() status = "{} was successfully registered!".format(ssidName) return redirect( url_for('cardinal_ssid_bp.addSsid5GhzRadius', status=status))
def doAddAp(): if request.method == 'POST': apName = request.form["ap_name"] apIp = request.form["ap_ip"] apSshUsername = request.form["ssh_username"] apSshPassword = bytes(request.form["ssh_password"], 'utf-8') apGroupId = request.form["group_id"] if len(apGroupId) <= 0: apGroupId = None apSnmp = bytes(request.form["ap_snmp"], 'utf-8') status = "{} was successfully registered!".format(apName) encryptedSshPassword = cipherSuite.encrypt(apSshPassword).decode('utf-8') encryptedSnmpCommunity = cipherSuite.encrypt(apSnmp).decode('utf-8') conn = cardinalSql() try: if apGroupId is None: addApCursor = conn.cursor() addApCursor.execute("INSERT INTO access_points (ap_name, ap_ip, ap_ssh_username, ap_ssh_password, ap_snmp, ap_group_id) VALUES (%s, %s, %s, %s, %s, NULL)", (apName, apIp, apSshUsername, encryptedSshPassword, encryptedSnmpCommunity)) addApCursor.close() else: addApCursor = conn.cursor() addApCursor.execute("INSERT INTO access_points (ap_name, ap_ip, ap_ssh_username, ap_ssh_password, ap_snmp, ap_group_id) VALUES (%s, %s, %s, %s, %s, %s)", (apName, apIp, apSshUsername, encryptedSshPassword, encryptedSnmpCommunity, apGroupId)) addApCursor.close() except MySQLdb.Error as e: return redirect(url_for('cardinal_ap_bp.addAp', status=e)) else: conn.commit() conn.close() return redirect(url_for('cardinal_ap_bp.addAp', status=status))
def manageApDashboard(): if request.method == 'GET': if session.get("username") is not None: conn = cardinalSql() status = request.args.get('status') apCursor = conn.cursor() apCursor.execute("SELECT ap_id,ap_name FROM access_points") aps = apCursor.fetchall() apCursor.close() conn.close() return render_template("choose-ap-dashboard.html", aps=aps, status=status) else: return msgAuthFailed, 401 elif request.method == 'POST': if session.get("username") is not None: apId = request.form['ap_id'] if len(apId) <= 0: status = msgSpecifyValidAp return redirect( url_for('cardinal_ap_bp.manageApDashboard', status=status)) else: conn = cardinalSql() apInfoCursor = conn.cursor() apInfoCursor.execute( "SELECT ap_name,ap_ip,ap_total_clients,ap_bandwidth,ap_model FROM access_points WHERE ap_id = %s", [apId]) apInfo = apInfoCursor.fetchall() apInfoCursor.close() conn.close() for info in apInfo: apName = info[0] apIp = info[1] apTotalClients = info[2] apBandwidth = info[3] apModel = info[4] session['apId'] = apId session['apName'] = apName session['apIp'] = apIp session['apTotalClients'] = apTotalClients session['apBandwidth'] = apBandwidth session['apModel'] = apModel return render_template("manage-ap-dashboard.html") else: return msgAuthFailed, 401
def totalAps(): if session.get("username") is not None: conn = cardinalSql() totalApsCursor = conn.cursor() totalApsCursor.execute("SELECT COUNT(*) FROM access_points") totalAps = totalApsCursor.fetchone()[0] totalApsCursor.close() conn.close() return render_template('total-aps.html', totalAps=totalAps) else: return redirect(url_for('cardinal_auth_bp.index'))
def totalApGroups(): if session.get("username") is not None: conn = cardinalSql() totalApGroupsCursor = conn.cursor() totalApGroupsCursor.execute("SELECT COUNT(*) FROM access_point_groups") totalApGroups = totalApGroupsCursor.fetchone()[0] totalApGroupsCursor.close() conn.close() return render_template('total-ap-groups.html', totalApGroups=totalApGroups) else: return msgAuthFailed, 401
def deleteAp(): if session.get("username") is not None: status = request.args.get('status') conn = cardinalSql() apCursor = conn.cursor() apCursor.execute("SELECT ap_id,ap_name FROM access_points") aps = apCursor.fetchall() apCursor.close() conn.close() return render_template("delete-ap.html", aps=aps, status=status) else: return redirect(url_for('cardinal_auth_bp.index'))
def gatherAllApInfo(): """Uses scoutFetcher() to fetch access point information and populate the DB (for all APs)""" conn = cardinalSql() apIdCursor = conn.cursor() apIdCursor.execute("SELECT ap_id FROM access_points WHERE ap_all_id = 2") apIdsSql = apIdCursor.fetchall() apIdCursor.close() for apId in apIdsSql: apInfoCursor = conn.cursor() apInfoCursor.execute( "SELECT ap_ip,ap_ssh_username,ap_ssh_password,ap_name FROM access_points WHERE ap_id = %s", [apId]) apInfo = apInfoCursor.fetchall() apInfoCursor.close() for info in apInfo: apIp = info[0] apSshUsername = info[1] encryptedSshPassword = bytes(info[2], 'utf-8') apName = info[3] apSshPassword = cipherSuite.decrypt(encryptedSshPassword).decode( 'utf-8') # Use a try..except to fetch access point information try: startTime = time.time() apInfo = scout_info.scoutFetcher(ip=apIp, username=apSshUsername, password=apSshPassword) apMacAddr = apInfo[0] apBandwidth = apInfo[1].strip("Mbps") apIosInfo = apInfo[2] apUptime = apInfo[3] apSerial = apInfo[4] apModel = apInfo[5] apClientCount = apInfo[6] apLocation = apInfo[7] inputSqlCursor = conn.cursor() inputSqlCursor.execute( "UPDATE access_points SET ap_bandwidth = %s, ap_mac_addr = %s, ap_model = %s, ap_serial = %s, ap_location = %s," "ap_ios_info = %s, ap_uptime = %s, ap_total_clients = %s WHERE ap_id = %s", (apBandwidth, apMacAddr, apModel, apSerial, apLocation, apIosInfo, apUptime, apClientCount, apId)) inputSqlCursor.close() conn.commit() endTime = time.time() completionTime = endTime - startTime status = "{0} INFO: Gathered device information for {1} in: {2}".format( timeStamp, apName, completionTime) print(status) except MySQLdb.Error as e: return ("{0} ERROR: {1}".format(timeStamp, e)) return status conn.close()
def totalClients(): if session.get("username") is not None: conn = cardinalSql() totalClientsCursor = conn.cursor() totalClientsCursor.execute( "SELECT FORMAT(SUM(ap_total_clients),0) AS totalClients FROM access_points" ) totalClients = totalClientsCursor.fetchone()[0] totalClientsCursor.close() conn.close() return render_template('total-clients.html', totalClients=totalClients) else: return redirect(url_for('cardinal_auth_bp.index'))
def deleteSsid5GhzRadius(): if request.method == 'GET': if session.get("username") is not None: conn = cardinalSql() status = request.args.get('status') deleteSsidCursor = conn.cursor() deleteSsidCursor.execute("SELECT ap_ssid_id,ap_ssid_name FROM ssids_5ghz_radius") ssids = deleteSsidCursor.fetchall() deleteSsidCursor.close() conn.close() return render_template("delete-ssid-5ghz-radius.html", status=status, ssids=ssids) else: return msgAuthFailed, 401 elif request.method == 'POST': if session.get("username") is not None: ssidId = request.form["ssid_id"] if len(ssidId) <= 0: status = "Please select a valid 5GHz RADIUS SSID." return redirect(url_for('cardinal_ssid_bp.deleteSsid5GhzRadius', status=status)) conn = cardinalSql() deleteSsidNameCursor = conn.cursor() deleteSsidNameCursor.execute("SELECT ap_ssid_name FROM ssids_5ghz_radius WHERE ap_ssid_id = %s", [ssidId]) ssidName = deleteSsidNameCursor.fetchone()[0] deleteSsidNameCursor.close() status = "{} was successfully deleted!".format(ssidName) try: deleteSsidCursor = conn.cursor() deleteSsidCursor.execute("DELETE FROM ssids_5ghz_radius WHERE ap_ssid_id = %s", [ssidId]) deleteSsidCursor.close() except MySQLdb.Error as e: conn.close() return redirect(url_for('cardinal_ssid_bp.deleteSsid5GhzRadius', status=status)) else: conn.commit() conn.close() return redirect(url_for('cardinal_ssid_bp.deleteSsid5GhzRadius', status=status)) else: return msgAuthFailed, 401
def chooseApGroupDashboard(): if request.method == 'GET': if session.get("username") is not None: conn = cardinalSql() status = request.args.get('status') apGroupCursor = conn.cursor() apGroupCursor.execute( "SELECT ap_group_id,ap_group_name FROM access_point_groups") apGroups = apGroupCursor.fetchall() apGroupCursor.close() conn.close() return render_template("choose-ap-group-dashboard.html", apGroups=apGroups, status=status) else: return redirect(url_for('cardinal_auth_bp.index')) elif request.method == 'POST': if session.get("username") is not None: apGroupId = request.form["ap_group_id"] if len(apGroupId) <= 0: status = msgSpecifyValidApGroup return redirect( url_for('cardinal_ap_group_bp.chooseApGroupDashboard', status=status)) else: conn = cardinalSql() apGroupNameCursor = conn.cursor() apGroupNameCursor.execute( "SELECT ap_group_name FROM access_point_groups WHERE ap_group_id = %s", [apGroupId]) apGroupName = apGroupNameCursor.fetchone()[0] apGroupNameCursor.close() session['apGroupId'] = apGroupId session['apGroupName'] = apGroupName conn.close() return render_template("manage-ap-group-dashboard.html") else: return msgAuthFailed, 401
def deleteSsid24Ghz(): if request.method == 'GET': if session.get("username") is not None: conn = cardinalSql() status = request.args.get('status') deleteSsidCursor = conn.cursor() deleteSsidCursor.execute("SELECT ap_ssid_id,ap_ssid_name FROM ssids_24ghz") ssids = deleteSsidCursor.fetchall() deleteSsidCursor.close() conn.close() return render_template("delete-ssid-24ghz.html", status=status, ssids=ssids) else: return msgAuthFailed, 401 elif request.method == 'POST': if session.get("username") is not None: ssidId = request.form["ssid_id"] if len(ssidId) <= 0: status = "Please select a valid 2.4GHz SSID." return redirect(url_for('cardinal_ssid_bp.deleteSsid24Ghz', status=status)) conn = cardinalSql() deleteSsidNameCursor = conn.cursor() deleteSsidNameCursor.execute("SELECT ap_ssid_name FROM ssids_24ghz WHERE ap_ssid_id = %s", [ssidId]) ssidName = deleteSsidNameCursor.fetchone()[0] deleteSsidNameCursor.close() status = msgResourceDeleted(resource=ssidName) try: deleteSsidCursor = conn.cursor() deleteSsidCursor.execute("DELETE FROM ssids_24ghz WHERE ap_ssid_id = %s", [ssidId]) deleteSsidCursor.close() except MySQLdb.Error as e: conn.close() return redirect(url_for('cardinal_ssid_bp.deleteSsid24Ghz', status=e)) else: conn.commit() conn.close() return redirect(url_for('cardinal_ssid_bp.deleteSsid24Ghz', status=status)) else: return msgAuthFailed, 401
def deploySsid5GhzRadiusGroup(): if request.method == 'GET': if session.get("username") is not None: conn = cardinalSql() status = request.args.get('status') deploySsidCursor = conn.cursor() deploySsidCursor.execute( "SELECT ap_ssid_id,ap_ssid_name FROM ssids_5ghz_radius") ssids = deploySsidCursor.fetchall() deploySsidCursor.close() conn.close() return render_template("deploy-ssid-5ghz-radius-group.html", status=status, ssids=ssids) else: return msgAuthFailed, 401 elif request.method == 'POST': if session.get("username") is not None: ssidId = request.form["ssid_id"] apGroupId = session.get('apGroupId') apGroupName = session.get('apGroupName') ssidInfo = getSsidInfo(ssidId=ssidId, ssidType="ssid_5ghz_radius") encryptedSharedSecret = bytes(ssidInfo[0][6], 'utf-8') sharedSecret = cipherSuite.decrypt(encryptedSharedSecret).decode( 'utf-8') apList = apGroupIterator(apGroupId=apGroupId, ssid=ssidInfo[0][0], vlan=ssidInfo[0][1], bridgeGroup=ssidInfo[0][2], radioSub=ssidInfo[0][3], gigaSub=ssidInfo[0][4], radiusIp=ssidInfo[0][5], sharedSecret=sharedSecret, authPort=ssidInfo[0][7], acctPort=ssidInfo[0][8], radiusTimeout=ssidInfo[0][9], radiusGroup=ssidInfo[0][10], methodList=ssidInfo[0][11]) startTime = time.time() task = processor(operation=scout_ssid.scoutCreateSsid5Radius, apInfo=apList) endTime = time.time() - startTime status = "Deployment of 5GHz SSID {0} for AP Group {1} Has Been Successfully Initiated!".format( ssidInfo[0][0], apGroupName) completionTime = printCompletionTime(endTime) return redirect( url_for('cardinal_ssid_ops_bp.deploySsid5GhzRadiusGroup', status=status)) else: return msgAuthFailed, 401
def totalApGroupClients(): if session.get("username") is not None: apGroupId = session.get("apGroupId") conn = cardinalSql() totalApGroupClientsCursor = conn.cursor() totalApGroupClientsCursor.execute( "SELECT FORMAT(SUM(ap_total_clients),0) FROM access_points WHERE ap_group_id = %s", [apGroupId]) totalApGroupClients = totalApGroupClientsCursor.fetchone()[0] totalApGroupClientsCursor.close() conn.close() return render_template('total-ap-group-clients.html', totalApGroupClients=totalApGroupClients) else: return redirect(url_for('cardinal_auth_bp.index'))
def deleteSsid5GhzRadius(): if session.get("username") is not None: conn = cardinalSql() status = request.args.get('status') deleteSsidCursor = conn.cursor() deleteSsidCursor.execute( "SELECT ap_ssid_id,ap_ssid_name FROM ssids_5ghz_radius") ssids = deleteSsidCursor.fetchall() deleteSsidCursor.close() conn.close() return render_template("delete-ssid-5ghz-radius.html", status=status, ssids=ssids) else: return redirect(url_for('cardinal_auth_bp.index'))
def disableApHttp(): apId = session.get('apId') conn = cardinalSql() apInfoCursor = conn.cursor() apInfoCursor.execute("SELECT ap_name,ap_ip,ap_ssh_username,ap_ssh_password FROM access_points WHERE ap_id = %s", [apId]) apInfo = apInfoCursor.fetchall() apInfoCursor.close() for info in apInfo: apName = info[0] apIp = info[1] apSshUsername = info[2] encryptedSshPassword = bytes(info[3], 'utf-8') apSshPassword = cipherSuite.decrypt(encryptedSshPassword).decode('utf-8') scout_sys.scoutDisableHttp(ip=apIp, username=apSshUsername, password=apSshPassword) status = "HTTP Server for {} Successfully Disabled".format(apName) conn.close() return redirect(url_for('cardinal_ap_ops_bp.configApHttp', status=status))
def doAddSsid5Ghz(): if request.method == 'POST': ssidName = request.form["ssid_name"] vlan = request.form["vlan"] wpa2Psk = bytes(request.form["wpa2_psk"], 'utf-8') bridgeGroup = request.form["bridge_group_id"] radioId = request.form["radio_sub_id"] gigaId = request.form["giga_sub_id"] encryptedWpa2 = cipherSuite.encrypt(wpa2Psk).decode('utf-8') conn = cardinalSql() addSsid5GhzCursor = conn.cursor() addSsid5GhzCursor.execute( "INSERT INTO ssids_5ghz (ap_ssid_name, ap_ssid_vlan, ap_ssid_wpa2, ap_ssid_bridge_id, ap_ssid_radio_id, ap_ssid_ethernet_id) VALUES (%s, %s, %s, %s, %s, %s)", (ssidName, vlan, encryptedWpa2, bridgeGroup, radioId, gigaId)) addSsid5GhzCursor.close() conn.commit() conn.close() status = "{} was successfully registered!".format(ssidName) return redirect(url_for('cardinal_ssid_bp.addSsid5Ghz', status=status))
def enableApSnmp(): if request.method == 'POST': apId = session.get('apId') conn = cardinalSql() apInfoCursor = conn.cursor() apInfoCursor.execute("SELECT ap_name,ap_ip,ap_ssh_username,ap_ssh_password,ap_snmp FROM access_points WHERE ap_id = %s", [apId]) apInfo = apInfoCursor.fetchall() apInfoCursor.close() for info in apInfo: apName = info[0] apIp = info[1] apSshUsername = info[2] encryptedSshPassword = bytes(info[3], 'utf-8') encryptedSnmp = bytes(info[4], 'utf-8') apSshPassword = cipherSuite.decrypt(encryptedSshPassword).decode('utf-8') apSnmp = cipherSuite.decrypt(encryptedSnmp).decode('utf-8') scout_sys.scoutEnableSnmp(ip=apIp, username=apSshUsername, password=apSshPassword, snmp=apSnmp) status = "SNMP for {} Successfully Enabled!".format(apName) conn.close() return redirect(url_for('cardinal_ap_ops_bp.configApSnmp', status=status))
def doDeleteAp(): if request.method == 'POST': apId = request.form["ap_id"] if len(apId) <= 0: status = "Please select a valid access point." return redirect(url_for('cardinal_ap_bp.deleteAp', status=status)) conn = cardinalSql() deleteApNameCursor = conn.cursor() deleteApNameCursor.execute("SELECT ap_name FROM access_points WHERE ap_id = %s", [apId]) apName = deleteApNameCursor.fetchone()[0] deleteApNameCursor.close() status = "{} was deleted successfully!".format(apName) try: deleteApCursor = conn.cursor() deleteApCursor.execute("DELETE FROM access_points WHERE ap_id = %s", [apId]) deleteApCursor.close() except MySQLdb.Error as e: return redirect(url_for('cardinal_ap_bp.deleteAp', status=e)) else: conn.commit() conn.close() return redirect(url_for('cardinal_ap_bp.deleteAp', status=status))
def removeSsid5GhzRadiusGroup(): if request.method == 'GET': if session.get("username") is not None: conn = cardinalSql() status = request.args.get('status') deploySsidCursor = conn.cursor() deploySsidCursor.execute( "SELECT ap_ssid_id,ap_ssid_name FROM ssids_5ghz_radius") ssids = deploySsidCursor.fetchall() deploySsidCursor.close() conn.close() return render_template("remove-ssid-5ghz-radius-group.html", status=status, ssids=ssids) else: return msgAuthFailed, 401 elif request.method == 'POST': if session.get("username") is not None: ssidId = request.form["ssid_id"] apGroupId = session.get('apGroupId') apGroupName = session.get('apGroupName') ssidInfo = getSsidInfo(ssidId=ssidId, ssidType="ssid_5ghz_radius") apList = apGroupIterator(apGroupId=apGroupId, ssid=ssidInfo[0][0], vlan=ssidInfo[0][1], radioSub=ssidInfo[0][3], gigaSub=ssidInfo[0][4]) startTime = time.time() task = processor(operation=scout_ssid.scoutDeleteSsid5, apInfo=apList) endTime = time.time() - startTime status = "Deployment of 5GHz RADIUS SSID {0} for AP Group {1} Has Been Successfully Initiated!".format( ssidInfo[0][0], apGroupName) completionTime = printCompletionTime(endTime) return redirect( url_for('cardinal_ssid_ops_bp.removeSsid5GhzRadiusGroup', status=status)) else: return msgAuthFailed, 401