예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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))
예제 #5
0
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
예제 #6
0
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))
예제 #7
0
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()
예제 #8
0
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
예제 #9
0
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))
예제 #10
0
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
예제 #11
0
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))
예제 #12
0
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