#!/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 ()
cookieExpiry = time.gmtime(time.time())
if cookieExpiry[3] == 23: cookieExpiry[3] = 0
else: cookieExpiry[3] += 1
cookie = Cooke.Cookie (os.environ.get("HTTP_COOKIE", ""))
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 += """
Number |
Description |
Connected |
VLAN |
Duplex |
Speed |
Media |
Portfast |
Errors |
"""
even = True
for port in ports:
pageText += """
%s |
%s |
%s |
%s |
%s | %s | %s |
%s |
%s |
""" % (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 += "
"
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