def enableApSnmp(): if session.get("username") is not None: apId = session.get('apId') if apId is None: apId = request.form["ap_id"] apInfo = getApInfo(apId=apId) encryptedSshPassword = bytes(apInfo[0][3], 'utf-8') encryptedSnmp = bytes(apInfo[0][4], 'utf-8') apSshPassword = cipherSuite.decrypt(encryptedSshPassword).decode('utf-8') apSnmp = cipherSuite.decrypt(encryptedSnmp).decode('utf-8') scout_sys.scoutEnableSnmp(ip=apInfo[0][1], username=apInfo[0][2], password=apSshPassword, snmp=apSnmp) status = "SNMP for {} Successfully Enabled!".format(apInfo[0][0]) return redirect(url_for('cardinal_ap_ops_bp.configApSnmp', 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 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) 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 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 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 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 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 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 configApTftpBackup(): if request.method == 'GET': if session.get("username") is not None: status = request.args.get('status') return render_template("config-ap-tftp-backup.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"] tftpIp = request.form["tftp_ip"] apInfo = getApInfo(apId=apId) encryptedSshPassword = bytes(apInfo[0][3], 'utf-8') apSshPassword = cipherSuite.decrypt(encryptedSshPassword).decode('utf-8') scout_sys.scoutTftpBackup(ip=apInfo[0][1], username=apInfo[0][2], password=apSshPassword, tftpIp=tftpIp) status = "Config Backup for {} Successfully Initiated!".format(apInfo[0][0]) return redirect(url_for('cardinal_ap_ops_bp.configApTftpBackup', status=status)) else: return msgAuthFailed, 401
def configApTftpBackup(): if request.method == 'GET': if session.get("username") is not None: status = request.args.get('status') return render_template("config-ap-tftp-backup.html", status=status) elif request.method == 'POST': apId = session.get('apId') conn = cardinalSql() tftpIp = request.form["tftp_ip"] 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.scoutTftpBackup(ip=apIp, username=apSshUsername, password=apSshPassword, tftpIp=tftpIp) status = "Config Backup for {} Successfully Initiated!".format(apName) conn.close() return redirect(url_for('cardinal_ap_ops_bp.configApTftpBackup', status=status))
def deploySsid24Ghz(): 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_24ghz") ssids = deploySsidCursor.fetchall() deploySsidCursor.close() conn.close() return render_template("deploy-ssid-24ghz.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_24ghz") encryptedWpa2Pass = bytes(ssidInfo[0][2], 'utf-8') wpa2Pass = cipherSuite.decrypt(encryptedWpa2Pass).decode('utf-8') checkSsidRelationship = ssidCheck(apId=apId, ssidId=ssidId, ssidType="ssid_24ghz", action="add", 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.scoutCreateSsid24(ip=apInfo[0][0], username=apInfo[0][1], password=apSshPassword, ssid=ssidInfo[0][0], vlan=ssidInfo[0][1], wpa2Pass=wpa2Pass, bridgeGroup=ssidInfo[0][3], radioSub=ssidInfo[0][4], gigaSub=ssidInfo[0][5]) commitRelationship = ssidCheck(apId=apId, ssidId=ssidId, ssidType="ssid_24ghz", action="add", commit="True") status = "Deployment of 2.4GHz SSID {0} for AP {1} Has Been Successfully Initiated!".format( ssidInfo[0][0], apName) conn.close() return redirect( url_for('cardinal_ssid_ops_bp.deploySsid24Ghz', status=status)) else: conn.close() status = "2.4GHz SSID {0} is already deployed on {1}".format( ssidInfo[0][0], apName) return redirect( url_for('cardinal_ssid_ops_bp.deploySsid24Ghz', status=status)) else: return msgAuthFailed, 401