⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 proxy.py

📁 Network Administration Visualized 网络管理可视化源码
💻 PY
字号:
# -*- coding: ISO8859-1 -*-## $Id: proxy.py 3743 2006-11-13 12:55:33Z mortenv $## Copyright 2004 Norwegian University of Science and Technology## This file is part of Network Administration Visualized (NAV)## NAV is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## NAV is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with NAV; if not, write to the Free Software# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA### Authors: Magnus Nordseth <magnun@itea.ntnu.no>#import osimport sysimport timeimport warningsimport tracebackimport httplibimport forgetHTML as htmlfrom mod_python import apacheimport nav.webfrom nav.web.templates.DeviceBrowserTemplate import DeviceBrowserTemplateSERVERBASE='localhost'SERVERPORT=8080def handler(req):    remotecookie = req.session.get('navadmin-cookie')    if req.args:        proxyreq = "%s?%s" % (req.uri, req.args)    else:        proxyreq = req.uri    if req.method == 'POST':        postdata = req.read()    else:        postdata = ''    user = None    if req.session.has_key('user') and req.session['user'].id > 0:        user = req.session['user'].login    try:        response = doRequest(proxyreq, req.method, remotecookie, query=postdata,                             user=user, session=req.session.id)    except Exception, e:        remoteanswer = html.Division()        remoteanswer.append(html.Header("Could not connect to servlet", 2))        trace = traceback.format_exception(*sys.exc_info())        message = "".join(trace)        remoteanswer.append(html.Pre(message, _class="warning"))        remoteanwser = str(remoteanswer)        req.content_type = "text/html"        else:        remoteanswer = response.read()        req.content_type = response.msg.get('content-type', 'text/html')        if not req.content_type.startswith('text/html') or \               req.uri.startswith("/vPServer"):            req.send_http_header()            req.write(remoteanswer)            return apache.OK        try:            cookie = response.msg.dict['set-cookie']            cookie = cookie[:cookie.find(';')]            req.session['navadmin-cookie'] = cookie            req.session.save()        except KeyError:            pass        req.session.setdefault('uris', [])    templatePath = [] # add logical paths to thhis    templatePath.append(("Home", "/"))    templatePath.append(("Network explorer",                         "/navAdmin/servlet/navAdmin?section=ni&func=visTopologi"))    template = DeviceBrowserTemplate()    template.path = []    # Our template defines the variable myContent and treeselect.    # Of course we can add more of them            template.myContent = remoteanswer    template.treeselect = None    template.path = templatePath    response = template.respond()    req.send_http_header()    req.write(response)    return apache.OK    def doRequest(path, method, cookie, query='', user=None, session=None):    request = httplib.HTTPConnection(SERVERBASE, SERVERPORT)    if method == 'POST':        headers = {"Content-type": "application/x-www-form-urlencoded",                   "Accept": "text/plain"}    else:        headers = {}    if user is not None:        headers.update({'x-authenticated-user': user})    if session is not None:        headers.update({'x-session': session})            headers['Cookie']=cookie    request.request(method, path, query, headers)    response = request.getresponse()    return response        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -