xpra icon
Bug tracker and wiki

Ticket #731: iana-port.patch

File iana-port.patch, 5.1 KB (added by Antoine Martin, 14 months ago)

when we get assigned a port, add this to make specifying the port number optional

  • xpra/scripts/main.py

     
    2222from xpra.platform.dotxpra import DotXpra, norm_makepath
    2323from xpra.platform.features import LOCAL_SERVERS_SUPPORTED, SHADOW_SUPPORTED, CAN_DAEMONIZE
    2424from xpra.platform.options import add_client_options
    25 from xpra.util import csv, envbool
     25from xpra.util import csv, envbool, DEFAULT_PORT
    2626from xpra.scripts.config import OPTION_TYPES, \
    2727    InitException, InitInfo, InitExit, \
    2828    fixup_debug_option, fixup_options, dict_to_validated_config, \
     
    425425                          help="Listen for connections over unix domain sockets. You may specify this option multiple times to listen on different locations.")
    426426        group.add_option("--bind-tcp", action="append",
    427427                          dest="bind_tcp", default=list(defaults.bind_tcp or []),
    428                           metavar="[HOST]:PORT",
     428                          metavar="[HOST]:[PORT]",
    429429                          help="Listen for connections over TCP (use --tcp-auth to secure it)."
    430430                            + " You may specify this option multiple times with different host and port combinations")
    431431        group.add_option("--bind-ssl", action="append",
     
    12241224        upos = host.find("@")
    12251225        username = None
    12261226        password = None
    1227         port = 0
     1227        port = DEFAULT_PORT
    12281228        if upos>=0:
    12291229            #HOST=username@host
    12301230            username = host[:upos]
     
    12601260        if port_str:
    12611261            try:
    12621262                port = int(port_str)
    1263                 desc["port"] = int(port_str)
    1264             except:
    1265                 error_cb("invalid port specified: %s" % port_str)
    1266             if port<=0 or port>=65536:
    1267                 error_cb("invalid port number: %s" % port)
     1263            except ValueError:
     1264                error_cb("invalid port number specified: %s" % port_str)
     1265        if port<=0 or port>=2**16:
     1266            error_cb("invalid port number: %s" % port)
     1267        desc["port"] = port
    12681268        if host=="":
    12691269            host = "127.0.0.1"
    12701270        desc["host"] = host
     
    13681368                     })
    13691369        parts = display_name.split(separator)
    13701370        if len(parts) not in (2, 3, 4):
    1371             error_cb("invalid %s connection string, use %s/[username[:password]@]host:port[/display] or %s:[username[:password]@]host:port" % (ctype * 3))
     1371            error_cb("invalid %s connection string, use %s/[username[:password]@]host[:port][/display] or %s:[username[:password]@]host[:port]" % (ctype * 3))
    13721372        #display (optional):
    13731373        if separator=="/" and len(parts)==3:
    13741374            display = parts[2]
     
    14111411        ws_proto, host = display_name.split(separator, 1)
    14121412        if host.find("?")>=0:
    14131413            host, _ = host.split("?", 1)
    1414         port = 0
    1415         if host.find(":")>=0:
    1416             if host.find("/")>=0:
    1417                 host, extra = host.split("/", 1)
    1418             else:
    1419                 extra = ""
    1420             username, password, host, port = parse_host_string(host)
    1421             host += extra
    1422             #TODO: parse attrs after "?"
     1414        if host.find("/")>=0:
     1415            host, extra = host.split("/", 1)
    14231416        else:
    1424             raise InitException("missing port number from websocket connection string")
     1417            extra = ""
     1418        username, password, host, port = parse_host_string(host)
     1419        host += extra
     1420        #TODO: parse attrs after "?"
    14251421        desc.update({
    14261422                "type"          : ws_proto,     #"ws" or "wss"
    14271423                "local"         : False,
  • xpra/scripts/server.py

     
    2121from xpra.scripts.main import warn, no_gtk, validate_encryption
    2222from xpra.scripts.config import InitException, TRUE_OPTIONS, FALSE_OPTIONS
    2323from xpra.os_util import SIGNAMES
    24 from xpra.util import envint, envbool
     24from xpra.util import envint, envbool, DEFAULT_PORT
    2525from xpra.platform.dotxpra import DotXpra, norm_makepath, osexpand
    2626
    2727
     
    395395            host, port = spec.rsplit(":", 1)
    396396            if host == "":
    397397                host = "127.0.0.1"
    398             try:
    399                 iport = int(port)
    400             except:
    401                 raise InitException("invalid port number: %s" % port)
     398            if not port:
     399                iport = DEFAULT_PORT
     400            else:
     401                try:
     402                    iport = int(port)
     403                    assert iport>0 and iport<2**16
     404                except:
     405                    raise InitException("invalid port number: %s" % port)
    402406            tcp_sockets.add((host, iport))
    403407    return tcp_sockets
    404408
  • xpra/util.py

     
    3838CLIENT_EXIT             = "client exit"
    3939
    4040
     41DEFAULT_PORT = 14500
     42
    4143#magic value for "workspace" window property, means unset
    4244WORKSPACE_UNSET = 65535
    4345WORKSPACE_ALL = 0xffffffff