예제 #1
0
파일: main.py 프로젝트: rudresh2319/Xpra
def run_client(parser, opts, extra_args, mode):
    if mode == "screenshot":
        if len(extra_args) == 0:
            parser.error("invalid number of arguments for screenshot mode")
        screenshot_filename = extra_args[0]
        extra_args = extra_args[1:]

    if mode in ("attach"):
        sys.stdout.write("xpra client version %s\n" % xpra.__version__)
        sys.stdout.flush()

    conn = connect_or_fail(pick_display(parser, opts, extra_args))
    if opts.compression_level < 0 or opts.compression_level > 9:
        parser.error("Compression level must be between 0 and 9 inclusive.")
    if opts.quality != -1 and (opts.quality < 0 or opts.quality > 100):
        parser.error(
            "Quality must be between 0 and 100 inclusive. (or -1 to disable)")

    if mode == "screenshot":
        from xpra.client_base import ScreenshotXpraClient
        app = ScreenshotXpraClient(conn, opts, screenshot_filename)
    elif mode == "info":
        from xpra.client_base import InfoXpraClient
        app = InfoXpraClient(conn, opts)
    elif mode == "version":
        from xpra.client_base import VersionXpraClient
        app = VersionXpraClient(conn, opts)
    else:
        from xpra.client import XpraClient
        app = XpraClient(conn, opts)
    return do_run_client(app, conn.target, mode)
예제 #2
0
def run_client(parser, opts, extra_args, mode):
    if mode == "screenshot":
        if len(extra_args) == 0:
            parser.error("invalid number of arguments for screenshot mode")
        screenshot_filename = extra_args[0]
        extra_args = extra_args[1:]

    conn = connect_or_fail(pick_display(parser, opts, extra_args))
    if opts.compression_level < 0 or opts.compression_level > 9:
        parser.error("Compression level must be between 0 and 9 inclusive.")
    if opts.jpegquality < 0 or opts.jpegquality > 100:
        parser.error("Jpeg quality must be between 0 and 100 inclusive.")

    if mode == "screenshot":
        from xpra.client_base import ScreenshotXpraClient
        app = ScreenshotXpraClient(conn, opts, screenshot_filename)
    elif mode == "info":
        from xpra.client_base import InfoXpraClient
        app = InfoXpraClient(conn, opts)
    elif mode == "version":
        from xpra.client_base import VersionXpraClient
        app = VersionXpraClient(conn, opts)
    else:
        from xpra.client import XpraClient
        app = XpraClient(conn, opts)

    def got_gibberish_msg(obj, data):
        if str(data).find("assword") > 0:
            sys.stdout.write(
                "Your ssh program appears to be asking for a password.\n" +
                GOT_PASSWORD_PROMPT_SUGGESTION)
            sys.stdout.flush()
        if str(data).find("login") >= 0:
            sys.stdout.write(
                "Your ssh program appears to be asking for a username.\n"
                "Perhaps try using something like 'ssh:USER@host:display'?\n")
            sys.stdout.flush()

    app.connect("received-gibberish", got_gibberish_msg)

    def handshake_complete(*args):
        if mode == "detach":
            sys.stdout.write("handshake-complete: detaching")
            app.quit(0)
        elif mode == "attach":
            sys.stdout.write("Attached (press Control-C to detach)\n")
            sys.stdout.flush()

    app.connect("handshake-complete", handshake_complete)

    def client_SIGINT(*args):
        print("received SIGINT, closing")
        app.quit(-signal.SIGINT)

    signal.signal(signal.SIGINT, client_SIGINT)
    try:
        try:
            return app.run()
        except KeyboardInterrupt, e:
            return -signal.SIGINT
    finally:
        app.cleanup()
예제 #3
0
파일: main.py 프로젝트: svn2github/Xpra
def run_client(parser, opts, extra_args, mode):
    if mode=="screenshot":
        if len(extra_args)==0:
            parser.error("invalid number of arguments for screenshot mode")
        screenshot_filename = extra_args[0]
        extra_args = extra_args[1:]

    if mode in ("info", "attach"):
        sys.stdout.write("xpra client version %s\n" % xpra.__version__)
        sys.stdout.flush()

    conn = connect_or_fail(pick_display(parser, opts, extra_args))
    if opts.compression_level < 0 or opts.compression_level > 9:
        parser.error("Compression level must be between 0 and 9 inclusive.")
    if opts.quality!=-1 and (opts.quality < 0 or opts.quality > 100):
        parser.error("Quality must be between 0 and 100 inclusive. (or -1 to disable)")

    if mode=="screenshot":
        from xpra.client_base import ScreenshotXpraClient
        app = ScreenshotXpraClient(conn, opts, screenshot_filename)
    elif mode=="info":
        from xpra.client_base import InfoXpraClient
        app = InfoXpraClient(conn, opts)
    elif mode=="version":
        from xpra.client_base import VersionXpraClient
        app = VersionXpraClient(conn, opts)
    else:
        from xpra.client import XpraClient
        app = XpraClient(conn, opts)
    def got_gibberish_msg(obj, data):
        if str(data).find("assword")>0:
            sys.stdout.write("Your ssh program appears to be asking for a password.\n"
                             + GOT_PASSWORD_PROMPT_SUGGESTION)
            sys.stdout.flush()
        if str(data).find("login")>=0:
            sys.stdout.write("Your ssh program appears to be asking for a username.\n"
                             "Perhaps try using something like 'ssh:USER@host:display'?\n")
            sys.stdout.flush()
    app.connect("received-gibberish", got_gibberish_msg)
    def handshake_complete(*args):
        from wimpiggy.log import Logger
        log = Logger()
        if mode=="detach":
            log.info("handshake-complete: detaching")
            app.quit(0)
        elif mode=="attach":
            log.info("Attached to %s (press Control-C to detach)\n" % conn.target)
    app.connect("handshake-complete", handshake_complete)
    def client_SIGINT(*args):
        print("received SIGINT, closing")
        app.quit(-signal.SIGINT)
    signal.signal(signal.SIGINT, client_SIGINT)
    try:
        try:
            return app.run()
        except KeyboardInterrupt, e:
            return -signal.SIGINT
    finally:
        app.cleanup()
예제 #4
0
def run_client(parser, opts, extra_args, mode):
    if mode == "screenshot":
        screenshot_filename = extra_args[0]
        extra_args = extra_args[1:]

    conn = connect_or_fail(pick_display(parser, opts, extra_args))
    if opts.compression_level < 0 or opts.compression_level > 9:
        parser.error("Compression level must be between 0 and 9 inclusive.")
    if opts.jpegquality < 0 or opts.jpegquality > 100:
        parser.error("Jpeg quality must be between 0 and 100 inclusive.")
    if opts.title_suffix is not None and opts.title != "@title@ on @client-machine@":
        parser.error("use --title or --title-suffix but not both!")

    if mode == "screenshot":
        from xpra.client_base import ScreenshotXpraClient
        app = ScreenshotXpraClient(conn, opts, screenshot_filename)
    elif mode == "version":
        from xpra.client_base import VersionXpraClient
        app = VersionXpraClient(conn, opts)
    else:
        from xpra.client import XpraClient
        app = XpraClient(conn, opts)

    def got_gibberish_msg(obj, data):
        if "assword" in data:
            sys.stdout.write(
                "Your ssh program appears to be asking for a password.\n" +
                GOT_PASSWORD_PROMPT_SUGGESTION)
            sys.stdout.flush()
        if "login" in data:
            sys.stdout.write(
                "Your ssh program appears to be asking for a username.\n"
                "Perhaps try using something like 'ssh:USER@host:display'?\n")
            sys.stdout.flush()

    app.connect("received-gibberish", got_gibberish_msg)

    def handshake_complete(*args):
        if mode == "detach":
            sys.stdout.write("handshake-complete: detaching")
            app.quit()
        elif mode == "attach":
            sys.stdout.write("Attached (press Control-C to detach)\n")
            sys.stdout.flush()

    app.connect("handshake-complete", handshake_complete)
    signal.signal(signal.SIGINT, app.quit)
    try:
        app.run()
    finally:
        app.cleanup()
예제 #5
0
파일: main.py 프로젝트: svn2github/Xpra
def run_client(parser, opts, extra_args, mode):
    if mode=="screenshot":
        screenshot_filename = extra_args[0]
        extra_args = extra_args[1:]

    conn = connect_or_fail(pick_display(parser, opts, extra_args))
    if opts.compression_level < 0 or opts.compression_level > 9:
        parser.error("Compression level must be between 0 and 9 inclusive.")
    if opts.jpegquality < 0 or opts.jpegquality > 100:
        parser.error("Jpeg quality must be between 0 and 100 inclusive.")
    if opts.title_suffix is not None and opts.title!="@title@ on @client-machine@":
        parser.error("use --title or --title-suffix but not both!")

    if mode=="screenshot":
        from xpra.client_base import ScreenshotXpraClient
        app = ScreenshotXpraClient(conn, opts, screenshot_filename)
    elif mode=="version":
        from xpra.client_base import VersionXpraClient
        app = VersionXpraClient(conn, opts)
    else:
        from xpra.client import XpraClient
        app = XpraClient(conn, opts)
    def got_gibberish_msg(obj, data):
        if str(data).find("assword")>0:
            sys.stdout.write("Your ssh program appears to be asking for a password.\n"
                             + GOT_PASSWORD_PROMPT_SUGGESTION)
            sys.stdout.flush()
        if str(data).find("login")>=0:
            sys.stdout.write("Your ssh program appears to be asking for a username.\n"
                             "Perhaps try using something like 'ssh:USER@host:display'?\n")
            sys.stdout.flush()
    app.connect("received-gibberish", got_gibberish_msg)
    def handshake_complete(*args):
        if mode=="detach":
            sys.stdout.write("handshake-complete: detaching")
            app.quit()
        elif mode=="attach":
            sys.stdout.write("Attached (press Control-C to detach)\n")
            sys.stdout.flush()
    app.connect("handshake-complete", handshake_complete)
    signal.signal(signal.SIGINT, app.quit)
    try:
        app.run()
    finally:
        app.cleanup()