Beispiel #1
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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #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))
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
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
Beispiel #8
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
Beispiel #9
0
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))
Beispiel #10
0
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
Beispiel #11
0
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")
Beispiel #12
0
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))
Beispiel #13
0
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))
Beispiel #14
0
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
Beispiel #15
0
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'))
Beispiel #16
0
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
Beispiel #17
0
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'))
Beispiel #18
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()
Beispiel #19
0
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'))
Beispiel #20
0
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
Beispiel #21
0
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
Beispiel #22
0
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
Beispiel #23
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
Beispiel #24
0
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'))
Beispiel #25
0
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'))
Beispiel #26
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))
Beispiel #27
0
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))
Beispiel #28
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))
Beispiel #29
0
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))
Beispiel #30
0
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