#!/usr/bin/python import sys, re, pexpect import Log, common try: from Config import libPaths, dbName, dbUser, dbPass, dbHost, dbPort except: Log.Message ("Error occured in finding basic configuration paramaters. Reverting to installer.", "index.py", "ERROR") import install sys.exit () for path in libPaths: sys.path.append (path) try: import pycisco, pyaaa except: Log.Message ("Couldn't import pycisco or pyaaa. Reverting to installer.", "index.py", "ERROR") import install sys.exit () import cgi, cgitb cgitb.enable () form = cgi.FieldStorage () # Cookie stuff cookieExpiry = time.gmtime(time.time()) if cookieExpiry[3] == 23: cookieExpiry[3] = 0 else: cookieExpiry[3] += 1 cookie = Cooke.Cookie (os.environ.get("HTTP_COOKIE", "")) if cookie.has_key ("sid"): session = cookie["sid"] else: # Not logged in, send them packing. print "Location: login.py" defaultCursor = None def GetDefaultCursor (): global defaultCursor if defaultCursor == None: defaultCursor = pyaaa.SafeBase () defaultCursor._username = "me" return defaultCursor def GetSwitchList (): global switchList if switchList == []: switchList = GetDefaultCursor ()._GetRecords ("NetworkDevice") return switchList def ShowDefaultPage (): pageText = """

Select a switch to get started!

""" return pageText def ShowSwitchStatus (switchName): pageText = """

Port summary for %(switchName)s

""" % {'switchName' : switchName} try: switch = pyaaa.SafeObject (pycisco.NetworkDevice (), switchName) switch._username = "me" switch._Remap ("Connect", {"hostname" : "hostname", "username" : "usern", "password" : "passw", "enable" : "enablepw"}) switch.Connect () ports = switch.GetPortSummary () except pexpect.TIMEOUT: pageText += "

Switch appears to be down.

" return pageText pageText += """ """ even = True for port in ports: pageText += """ """ % (even and "even" or "odd", port["name"], port["name"], port["description"] or "(not set)", port["connectstate"], port["vlan"], port["duplex"], port["speed"], port["media"], port["portfast"], port["errors"]) even = not even pageText += "
Number Description Connected VLAN Duplex Speed Media Portfast Errors
%s %s %s %s %s%s%s %s %s
" return pageText def GetBody (): if not form.has_key ("action"): pageText = ShowDefaultPage () elif form["action"].value == "status": if not form.has_key ("switch"): pageText = "Missing switch argument, please stop trying to craft your own URLs!" else: pageText = ShowSwitchStatus (form["switch"].value) return pageText def GetSidebar (): pageText = """
Navigation
Switches
' return pageText switchList = [] pageBuffer = "" pageBuffer += "Content-Type: text/html\n\n" pageBuffer += common.GetHeader ("Port Administration Configuration Tool", GetSidebar ()) pageBuffer += GetBody () pageBuffer += common.GetFooter () print pageBuffer