Beispiel #1
0
def init_all():
    for x in list(ALL_ENCODERS) + ["none"]:
        if not envbool("XPRA_%s" % (x.upper()), True):
            continue
        fn = globals().get("init_%s" % x)
        try:
            e = fn()
            assert e
            ENCODERS[x] = e
        except (ImportError, AttributeError):
            logger = Logger("network", "protocol")
            logger.debug("no %s", x, exc_info=True)
Beispiel #2
0
def init_compressors(*names):
    for x in names:
        if not envbool("XPRA_%s" % (x.upper()), True):
            continue
        fn = globals().get("init_%s" % x)
        try:
            c = fn()
            assert c
            COMPRESSION[x] = c
        except (TypeError, ImportError, AttributeError):
            from xpra.log import Logger
            logger = Logger("network", "protocol")
            logger.debug("no %s", x, exc_info=True)
Beispiel #3
0
def init_all():
    for x in list(ALL_COMPRESSORS) + ["none"]:
        if not envbool("XPRA_%s" % (x.upper()), True):
            continue
        fn = globals().get("init_%s" % x)
        try:
            c = fn()
            assert c
            COMPRESSION[x] = c
        except (ImportError, AttributeError):
            from xpra.log import Logger
            logger = Logger("network", "protocol")
            logger.debug("no %s", x, exc_info=True)
Beispiel #4
0
def init_encoders(*names):
    for x in names:
        if x not in ALL_ENCODERS:
            logger = Logger("network", "protocol")
            logger.warn("Warning: invalid encoder '%s'", x)
            continue
        if not envbool("XPRA_%s" % (x.upper()), True):
            continue
        fn = globals().get("init_%s" % x)
        try:
            e = fn()
            assert e
            ENCODERS[x] = e
        except (ImportError, AttributeError):
            logger = Logger("network", "protocol")
            logger.debug("no %s", x, exc_info=True)
Beispiel #5
0
def platform_release(release):
    if sys.platform.startswith("darwin"):
        SYSTEMVERSION_PLIST = "/System/Library/CoreServices/SystemVersion.plist"
        try:
            import plistlib
            load = getattr(plistlib, "load", None)
            if load:
                with open(SYSTEMVERSION_PLIST, "rb") as f:
                    pl = load(f)  #@UndefinedVariable
            else:
                pl = plistlib.readPlist(
                    '/System/Library/CoreServices/SystemVersion.plist')
            return pl['ProductUserVisibleVersion']
        except Exception as e:
            from xpra.log import Logger
            log = Logger("util")
            log.debug("platform_release(%s)", release, exc_info=True)
            log.warn("Warning: failed to get release information")
            log.warn(" from '%s':", SYSTEMVERSION_PLIST)
            log.warn(" %s", e)
    return release
Beispiel #6
0
def do_wrap_socket(tcp_socket, context, **kwargs):
    wrap_socket = context.wrap_socket
    assert tcp_socket
    from xpra.log import Logger
    ssllog = Logger("ssl")
    ssllog("do_wrap_socket(%s, %s)", tcp_socket, context)
    import ssl
    if WIN32:
        #on win32, setting the tcp socket to blocking doesn't work?
        #we still hit the following errors that we need to retry:
        from xpra.net import bytestreams
        bytestreams.CAN_RETRY_EXCEPTIONS = (ssl.SSLWantReadError, ssl.SSLWantWriteError)
    else:
        tcp_socket.setblocking(True)
    try:
        ssl_sock = wrap_socket(tcp_socket, **kwargs)
    except Exception as e:
        ssllog.debug("wrap_socket(%s, %s)", tcp_socket, kwargs, exc_info=True)
        SSLEOFError = getattr(ssl, "SSLEOFError", None)
        if SSLEOFError and isinstance(e, SSLEOFError):
            return None
        raise InitExit(EXIT_SSL_FAILURE, "Cannot wrap socket %s: %s" % (tcp_socket, e)) from None
    return ssl_sock
Beispiel #7
0
def start_dbus(dbus_launch):
    if not dbus_launch or dbus_launch.lower() in FALSE_OPTIONS:
        return 0, {}
    try:

        def preexec():
            assert POSIX
            os.setsid()
            close_fds()

        proc = Popen(dbus_launch,
                     stdin=PIPE,
                     stdout=PIPE,
                     shell=True,
                     preexec_fn=preexec)
        out = proc.communicate()[0]
        assert proc.poll() == 0, "exit code is %s" % proc.poll()
        #parse and add to global env:
        dbus_env = {}
        for l in bytestostr(out).splitlines():
            parts = l.split("=", 1)
            if len(parts) != 2:
                continue
            k, v = parts
            if v.startswith("'") and v.endswith("';"):
                v = v[1:-2]
            dbus_env[k] = v
        dbus_pid = int(dbus_env.get("DBUS_SESSION_BUS_PID", 0))
        return dbus_pid, dbus_env
    except Exception as e:
        from xpra.log import Logger
        log = Logger("dbus")
        log.debug("start_dbus(%s)", dbus_launch, exc_info=True)
        error("dbus-launch failed to start using command '%s':\n" %
              dbus_launch)
        error(" %s\n" % e)
        return 0, {}
Beispiel #8
0
def debug(msg, *args, **kwargs):
    from xpra.log import Logger
    logger = Logger("network", "protocol")
    logger.debug(msg, *args, **kwargs)
Beispiel #9
0
def debug(*msg):
    """ delay import of logger to prevent cycles """
    from xpra.log import Logger
    log = Logger("util")
    log.debug(*msg)
    return None
Beispiel #10
0
def debug(*msg):
    """ delay import of logger to prevent cycles """
    from xpra.log import Logger
    log = Logger("util")
    log.debug(*msg)
    return None