Cherrypy / Python:如何通过端口对特定页面进行块访问

时间:2016-12-03 11:32:20

标签: python cherrypy ports

我正在使用cherrypy在两个不同的端口上提供服务。 一个端口可从外部到达,一个仅在本地使用。 如果您使用正确的端口,某些页面应该只显示。

目前,我正在检查cp.request.local.port以找出答案 页面调用的当前端口号,如下例所示。

此处在端口1700上仅允许索引页面,/secret页面被阻止。在端口1701上都显示了。

有没有更好的方法将RootServer2类绑定到特定端口?

import cherrypy as cp

class RootServer:
    def __init__(self):
        pass

    # Starting page
    @cp.expose
    def index(self):
        return '<html><body>Access from port: {}'.format(cp.request.local.port)+'</body></html>'

class RootServer2:
    @cp.expose
    def index(self):
        if cp.request.local.port <> 1701:
            raise cp.HTTPError(403)
        return '<html><body>Access from port: {}'.format(cp.request.local.port) + '</body></html>'

if __name__ == '__main__':

    cp.server.unsubscribe()  # remove the default port 8080
    cp.tree.mount(RootServer(),'',{})
    cp.tree.mount(RootServer2(),'/secret',{})
    cp._cprequest.Request.show_tracebacks = False

    server1 = cp._cpserver.Server()
    server1.socket_port = 1700
    server1._socket_host = '0.0.0.0'
    server1.thread_pool = 200
    server1.subscribe()
    server2 = cp._cpserver.Server()
    server2.socket_port = 1701
    server2._socket_host = '0.0.0.0'
    server2.thread_pool = 200
    server2.subscribe()

    cp.engine.start()
    cp.engine.block()

0 个答案:

没有答案