示例#1
0
def do_managed_server():
    """Start the managed-proxy protocol as a server."""

    should_start_event_loop = False

    ptserver = ServerTransportPlugin()
    try:
        ptserver.init(transports.transports.keys())
    except EnvError, err:
        log.warning("Server managed-proxy protocol failed (%s)." % err)
        return
示例#2
0
def do_managed_server():
    """Start the managed-proxy protocol as a server."""

    should_start_event_loop = False

    ptserver = ServerTransportPlugin()
    try:
        ptserver.init(transports.transports.keys())
    except EnvError, err:
        log.warning("Server managed-proxy protocol failed (%s)." % err)
        return
示例#3
0
文件: cli.py 项目: sr14978/ICproxy
def do_managed_server():

    log = logging.get_obfslogger()
    """Start the managed-proxy protocol as a server."""

    should_start_event_loop = False

    ptserver = ServerTransportPlugin()
    try:
        ptserver.init([FTE_PT_NAME])
    except EnvError, err:
        log.warning("Server managed-proxy protocol failed (%s)." % err)
        return
示例#4
0
def do_managed_server():

    log = logging.get_obfslogger()

    """Start the managed-proxy protocol as a server."""

    should_start_event_loop = False

    ptserver = ServerTransportPlugin()
    try:
        ptserver.init([FTE_PT_NAME])
    except EnvError, err:
        log.warning("Server managed-proxy protocol failed (%s)." % err)
        return
示例#5
0
def main():
    logging.basicConfig(\
        filename=DIRNAME + '/log/tweakable_server.log', \
        filemode='w', \
        level=logging.DEBUG)
    logging.debug("test")

    #Init the pyptlib plugin
    bridge = ServerTransportPlugin()

    try:
        bridge.init(["twkbl"])
    except EnvError, err:
        logging.warning("pyptlib could not bootstrap ('%s')." % str(err))
示例#6
0
def do_managed_server():
    """Start the managed-proxy protocol as a server."""

    should_start_event_loop = False

    ptserver = ServerTransportPlugin()
    try:
        ptserver.init(transports.transports.keys())
    except EnvError as err:
        log.warning("Server managed-proxy protocol failed (%s)." % err)
        return

    log.debug("pyptlib gave us the following data:\n'%s'",
              pprint.pformat(ptserver.getDebugData()))

    ext_orport = ptserver.config.getExtendedORPort()
    authcookie = ptserver.config.getAuthCookieFile()
    orport = ptserver.config.getORPort()
    server_transport_options = ptserver.config.getServerTransportOptions()

    for transport, transport_bindaddr in ptserver.getBindAddresses().items():

        # Will hold configuration parameters for the pluggable transport module.
        pt_config = transport_config.TransportConfig()
        pt_config.setStateLocation(ptserver.config.getStateLocation())
        if ext_orport:
            pt_config.setListenerMode("ext_server")
        else:
            pt_config.setListenerMode("server")
        pt_config.setObfsproxyMode("managed")

        transport_options = ""
        if server_transport_options and transport in server_transport_options:
            transport_options = server_transport_options[transport]
            pt_config.setServerTransportOptions(transport_options)

        # Call setup() method for this tranpsort.
        transport_class = transports.get_transport_class(transport, 'server')
        try:
            transport_class.setup(pt_config)
        except base.TransportSetupFailed as err:
            log.warning("Transport '%s' failed during setup()." % transport)
            ptserver.reportMethodError(transport,
                                       "setup() failed: %s." % (err))
            continue

        try:
            if ext_orport:
                addrport = launch_transport.launch_transport_listener(
                    transport,
                    transport_bindaddr,
                    'ext_server',
                    ext_orport,
                    pt_config,
                    ext_or_cookie_file=authcookie)
            else:
                addrport = launch_transport.launch_transport_listener(
                    transport, transport_bindaddr, 'server', orport, pt_config)
        except transports.TransportNotFound:
            log.warning("Could not find transport '%s'" % transport)
            ptserver.reportMethodError(transport, "Could not find transport.")
            continue
        except error.CannotListenError as e:
            error_msg = "Could not set up listener (%s:%s) for '%s' (%s)." % \
                        (e.interface, e.port, transport, e.socketError[1])
            log.warning(error_msg)
            ptserver.reportMethodError(transport, error_msg)
            continue

        should_start_event_loop = True

        extra_log = ""  # Include server transport options in the log message if we got 'em
        if transport_options:
            extra_log = " (server transport options: '%s')" % str(
                transport_options)
        log.debug("Successfully launched '%s' at '%s'%s" %
                  (transport, log.safe_addr_str(str(addrport)), extra_log))

        # Invoke the transport-specific get_public_server_options()
        # method to potentially filter the server transport options
        # that should be passed on to Tor and eventually to BridgeDB.
        public_options_dict = transport_class.get_public_server_options(
            transport_options)
        public_options_str = None

        # If the transport filtered its options:
        if public_options_dict:
            optlist = []
            for k, v in public_options_dict.items():
                optlist.append("%s=%s" % (k, v))
            public_options_str = ",".join(optlist)

            log.debug(
                "do_managed_server: sending only public_options to tor: %s" %
                public_options_str)

        # Report success for this transport.
        # If public_options_str is None then all of the
        # transport options from ptserver are used instead.
        ptserver.reportMethodSuccess(transport, addrport, public_options_str)

    ptserver.reportMethodsEnd()

    if should_start_event_loop:
        log.info("Starting up the event loop.")
        reactor.run()
    else:
        log.info("No transports launched. Nothing to do.")
示例#7
0
文件: server.py 项目: notem/pyptlib3
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""This is a server-side example of the pyptlib API."""

import sys

from pyptlib.server import ServerTransportPlugin
from pyptlib.config import EnvError

if __name__ == '__main__':
    server = ServerTransportPlugin()
    try:
        server.init(["blackfish", "bluefish"])
    except EnvError as err:
        print("pyptlib could not bootstrap ('%s')." % str(err))
        sys.exit(1)

    for transport, transport_bindaddr in list(
            server.getBindAddresses().items()):
        # Try to spawn transports and make them listen in the ports
        # that Tor wants. Report failure or success appropriately.

        # 'transport' is a string with the name of the transport.
        # 'transport_bindaddr' is the (<ip>,<port>) where that
        # transport should listen for connections.

        try:
            bind_addrport = your_function_that_launches_transports(
                transport, transport_bindaddr)
        except YourFailException as err:
            reportFailure(transport, "Failed to launch ('%s')." % str(err))
示例#8
0
文件: server.py 项目: Yawning/pyptlib
#!/usr/bin/python
# -*- coding: utf-8 -*-

"""This is a server-side example of the pyptlib API."""

import sys

from pyptlib.server import ServerTransportPlugin
from pyptlib.config import EnvError

if __name__ == '__main__':
    server = ServerTransportPlugin()
    try:
        server.init(["blackfish", "bluefish"])
    except EnvError, err:
        print "pyptlib could not bootstrap ('%s')." % str(err)
        sys.exit(1)

    for transport, transport_bindaddr in server.getBindAddresses().items():
        # Try to spawn transports and make them listen in the ports
        # that Tor wants. Report failure or success appropriately.

        # 'transport' is a string with the name of the transport.
        # 'transport_bindaddr' is the (<ip>,<port>) where that
        # transport should listen for connections.

        try:
            bind_addrport = your_function_that_launches_transports(transport, transport_bindaddr)
        except YourFailException, err:
            reportFailure(transport, "Failed to launch ('%s')." % str(err))
            continue