def start_http(address, port):
    import sys
    from ZServer import asyncore
    from ZServer import zhttp_server, zhttp_handler
    import socket

    import Zope # Sigh, make product initialization happen
    try:
        Zope.startup()
    except: # Zope > 2.6
        pass

    from ZServer import setNumberOfThreads
    setNumberOfThreads(4)

    try:
        hs = zhttp_server(
            ip=address,
            port=port,
            resolver=None,
            logger_object=None)
    except socket.error, why:
        if why[0] == 98: # address in use
            raise port_err % {'port':port,
                              'socktype':'TCP',
                              'protocol':'HTTP',
                              'switch':'-w'}
        raise
Beispiel #2
0
    def setUpServer(self):
        """Create a ZServer server instance and save it in self.zserver
        """
        from ZServer import zhttp_server, zhttp_handler, logger
        from StringIO import StringIO

        log = self.log
        if log is None:
            log = StringIO()

        zopeLog = logger.file_logger(log)

        server = zhttp_server(
            ip=self.host,
            port=self.port,
            resolver=None,
            logger_object=zopeLog,
        )

        # If we dynamically set the host/port, we want to reset it to localhost
        # Otherwise this will depend on, for example, the local network setup
        if self.host in (
                '',
                '0.0.0.0',
                '127.0.0.1',
        ):
            server.server_name = 'localhost'
        # Refresh the hostname and port in case we dynamically picked them
        self['host'] = self.host = server.server_name
        self['port'] = self.port = server.server_port

        zhttpHandler = zhttp_handler(module='Zope2', uri_base='')
        server.install_handler(zhttpHandler)

        self.zserver = server
Beispiel #3
0
    def setUpServer(self):
        """Create a ZServer server instance and save it in self.zserver
        """
        from ZServer import zhttp_server, zhttp_handler, logger
        from StringIO import StringIO

        log = self.log
        if log is None:
            log = StringIO()

        zopeLog = logger.file_logger(log)

        server = zhttp_server(
            ip=self.host,
            port=self.port,
            resolver=None,
            logger_object=zopeLog,
        )

        # If we dynamically set the host/port, we want to reset it to localhost
        # Otherwise this will depend on, for example, the local network setup
        if self.host in ('', '0.0.0.0', '127.0.0.1', ):
            server.server_name = 'localhost'
        # Refresh the hostname and port in case we dynamically picked them
        self['host'] = self.host = server.server_name
        self['port'] = self.port = server.server_port

        zhttpHandler = zhttp_handler(module='Zope2', uri_base='')
        server.install_handler(zhttpHandler)

        self.zserver = server
Beispiel #4
0
def zserverRunner(host, port, log=None):
    '''Runs an HTTP ZServer on host:port.'''
    from ZServer import logger, asyncore
    from ZServer import zhttp_server, zhttp_handler
    if log is None: log = dummyLOG
    lg = logger.file_logger(log)
    hs = zhttp_server(ip=host, port=port, resolver=None, logger_object=lg)
    zh = zhttp_handler(module='Zope2', uri_base='')
    hs.install_handler(zh)
    asyncore.loop()
Beispiel #5
0
def zserverRunner(host, port, log=None):
    '''Runs an HTTP ZServer on host:port.'''
    from ZServer import logger, asyncore
    from ZServer import zhttp_server, zhttp_handler
    if log is None: log = dummyLOG
    lg = logger.file_logger(log)
    hs = zhttp_server(ip=host, port=port, resolver=None, logger_object=lg)
    zh = zhttp_handler(module='Zope2', uri_base='')
    hs.install_handler(zh)
    asyncore.loop()
Beispiel #6
0
    def setUpServer(self):
        """Create a ZServer server instance and save it in self.zserver
        """

        from ZServer import zhttp_server, zhttp_handler, logger
        from StringIO import StringIO

        log = self.log
        if log is None:
            log = StringIO()

        zopeLog = logger.file_logger(log)

        server = zhttp_server(ip=self.host, port=self.port, resolver=None, logger_object=zopeLog)
        zhttpHandler = zhttp_handler(module='Zope2', uri_base='')
        server.install_handler(zhttpHandler)

        self.zserver = server
Beispiel #7
0
    def setUpServer(self):
        """Create a ZServer server instance and save it in self.zserver
        """

        from ZServer import zhttp_server, zhttp_handler, logger
        from StringIO import StringIO

        log = self.log
        if log is None:
            log = StringIO()

        zopeLog = logger.file_logger(log)

        server = zhttp_server(ip=self.host,
                              port=self.port,
                              resolver=None,
                              logger_object=zopeLog)
        zhttpHandler = zhttp_handler(module='Zope2', uri_base='')
        server.install_handler(zhttpHandler)

        self.zserver = server
    def setUpZServerThread(self):
        """Create a ZServer server instance and its thread

        Save them, respectively, in self.zserver and self.thread
        """

        from ZServer import zhttp_server, zhttp_handler, logger
        from cStringIO import StringIO

        zlog = logger.file_logger(StringIO())

        zserver = zhttp_server(ip=self.host,
                               port=self.port, 
                               resolver=None,
                               logger_object=zlog)
        zhandler = zhttp_handler(module=bobo_app_name, uri_base='')
        zserver.install_handler(zhandler)

        self.zserver = zserver
        name = self.__class__.__name__
        self.zthread = ZServerThread(name="%s server" % name)
        self.zthread.start()
Beispiel #9
0
    sys.__lg = lg

    port_err=('\n\nZope wants to use %(socktype)s port %(port)s for its '
              '%(protocol)s service, but it is already in use by another '
              'application on this machine.  Either shut the application down '
              'which is using this port, or start Zope with a different '
              '%(protocol)s port via the "%(switch)s" command-line switch.\n')

    # HTTP Server
    if HTTP_PORT:
        if isinstance(HTTP_PORT, IntType): HTTP_PORT=((IP_ADDRESS, HTTP_PORT),)
        for address, port in HTTP_PORT:
            try:
                hs = zhttp_server(
                    ip=address,
                    port=port,
                    resolver=rs,
                    logger_object=lg)
            except socket.error, why:
                if why[0] == 98: # address in use
                    raise port_err % {'port':port,
                                      'socktype':'TCP',
                                      'protocol':'HTTP',
                                      'switch':'-w'}
                raise
            # Handler for a published module. zhttp_handler takes 3 arguments:
            # The name of the module to publish, and optionally the URI base
            # which is basically the SCRIPT_NAME, and optionally a dictionary
            # with CGI environment variables which override default
            # settings. The URI base setting is useful when you want to
            # publish more than one module with the same HTTP server. The CGI