本文整理汇总了Python中xpra.dotxpra.DotXpra类的典型用法代码示例。如果您正苦于以下问题:Python DotXpra类的具体用法?Python DotXpra怎么用?Python DotXpra使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了DotXpra类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: run_stop
def run_stop(parser, opts, extra_args):
assert "gtk" not in sys.modules
magic_string = bencode(["hello", {"__prerelease_version": xpra.__version__}]) + bencode(["shutdown-server"])
display_desc = pick_display(parser, opts, extra_args)
conn = connect_or_fail(display_desc)
while magic_string:
magic_string = magic_string[conn.write(magic_string):]
while conn.read(4096):
pass
if display_desc["local"]:
sockdir = DotXpra(opts.sockdir)
for _ in xrange(6):
final_state = sockdir.server_state(display_desc["display"])
if final_state is DotXpra.LIVE:
break
time.sleep(0.5)
if final_state is DotXpra.DEAD:
print("xpra at %s has exited." % display_desc["display"])
sys.exit(0)
elif final_state is DotXpra.UNKNOWN:
print("How odd... I'm not sure what's going on with xpra at %s"
% display_desc["display"])
sys.exit(1)
elif final_state is DotXpra.LIVE:
print("Failed to shutdown xpra at %s" % display_desc["display"])
sys.exit(1)
else:
assert False, "invalid state: %s" % final_state
else:
print("Sent shutdown command")
开发者ID:svn2github,项目名称:Xpra,代码行数:31,代码来源:main.py
示例2: client_sock
def client_sock(parser, opts, display_name):
if display_name.startswith("ssh:"):
sshspec = display_name[len("ssh:"):]
if ":" in sshspec:
(host, display) = sshspec.split(":", 1)
display_args = [":" + display]
else:
host = sshspec
display_args = []
(a, b) = socket.socketpair()
if opts.remote_xpra is not None:
remote_xpra = opts.remote_xpra.split()
else:
remote_xpra = ["$HOME/.xpra/run-xpra"]
p = subprocess.Popen(["ssh", host, "-e", "none"]
+ remote_xpra + ["_proxy"] + display_args,
stdin=b.fileno(), stdout=b.fileno(),
bufsize=0)
return a, False
elif display_name.startswith(":"):
sockdir = DotXpra()
sock = socket.socket(socket.AF_UNIX)
sock.connect(sockdir.socket_path(display_name))
return sock, True
elif display_name.startswith("tcp:"):
host_spec = display_name[4:]
(host, port) = host_spec.split(":", 1)
if host == "":
host = "127.0.0.1"
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, int(port)))
return sock, True
else:
parser.error("unknown format for display name")
开发者ID:dmgerman,项目名称:hacking,代码行数:35,代码来源:main.py
示例3: run_stop
def run_stop(parser, opts, extra_args):
magic_string = bencode(["hello", []]) + bencode(["shutdown-server"])
display_name = pick_display(parser, extra_args)
sock, local = client_sock(parser, opts, display_name)
sock.sendall(magic_string)
while sock.recv(4096):
pass
if local:
sockdir = DotXpra()
for i in xrange(6):
final_state = sockdir.server_state(display_name)
if final_state is DotXpra.LIVE:
time.sleep(0.5)
else:
break
if final_state is DotXpra.DEAD:
print "xpra at %s has exited." % display_name
sys.exit(0)
elif final_state is DotXpra.UNKNOWN:
print ("How odd... I'm not sure what's going on with xpra at %s"
% display_name)
sys.exit(1)
elif final_state is DotXpra.LIVE:
print "Failed to shutdown xpra at %s" % display_name
sys.exit(1)
else:
assert False
else:
print "Sent shutdown command"
开发者ID:dmgerman,项目名称:hacking,代码行数:30,代码来源:main.py
示例4: __init__
def __init__(self):
dotxpra = DotXpra()
display = os.environ.get("DISPLAY")
from xpra.scripts.config import make_defaults_struct
opts = make_defaults_struct()
target = dotxpra.socket_path(display)
log.info("attempting to connect to socket: %s", target)
sock = socket.socket(socket.AF_UNIX)
sock.connect(target)
conn = SocketConnection(sock, sock.getsockname(), sock.getpeername(), target, "scroll-test")
log.info("successfully created our socket connection: %s", conn)
self.server = ServerMessenger(conn, opts)
self.vscroll_events = maxdeque(1000)
self.hscroll_events = maxdeque(1000)
browser = WebBrowser()
#hook some events:
browser.content_tabs.connect("focus-view-title-changed", self.title_changed)
vscroll_listeners.append(self.vscroll)
hscroll_listeners.append(self.hscroll)
#the things we tune:
self.quality = -1
self.speed = -1
self.encoding = None
self.strict = False
开发者ID:svn2github,项目名称:Xpra,代码行数:26,代码来源:webkit_scrolling_window.py
示例5: run_proxy
def run_proxy(parser, opts, script_file, args, start_server=False):
from xpra.proxy import XpraProxy
assert "gtk" not in sys.modules
if start_server:
assert len(args)==1
display_name = args[0]
#we must use a subprocess to avoid messing things up - yuk
cmd = [script_file, "start"]+args
if opts.start_child and len(opts.start_child)>0:
for x in opts.start_child:
cmd.append("--start-child=%s" % x)
if opts.exit_with_children:
cmd.append("--exit-with-children")
def setsid():
os.setsid()
Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, preexec_fn=setsid)
dotxpra = DotXpra()
start = time.time()
while dotxpra.server_state(display_name, 1)!=DotXpra.LIVE:
if time.time()-start>5:
warn("server failed to start after %.1f seconds - sorry!" % (time.time()-start))
return
time.sleep(0.10)
server_conn = connect_or_fail(pick_display(parser, opts, args))
app = XpraProxy(TwoFileConnection(sys.stdout, sys.stdin, info="stdin/stdout"), server_conn)
signal.signal(signal.SIGINT, app.quit)
signal.signal(signal.SIGTERM, app.quit)
app.run()
return 0
开发者ID:svn2github,项目名称:Xpra,代码行数:29,代码来源:main.py
示例6: guess_xpra_display
def guess_xpra_display(socket_dir, socket_dirs):
dotxpra = DotXpra(socket_dir, socket_dirs)
results = dotxpra.sockets()
live = [display for state, display in results if state==DotXpra.LIVE]
if len(live)==0:
raise InitException("no existing xpra servers found")
if len(live)>1:
raise InitException("too many existing xpra servers found, cannot guess which one to use")
return live[0]
开发者ID:svn2github,项目名称:Xpra,代码行数:9,代码来源:server.py
示例7: get_sessions
def get_sessions(self):
uid = self.get_uid()
gid = self.get_gid()
try:
sockdir = DotXpra(socket_dir, actual_username=self.username)
results = sockdir.sockets(check_uid=uid)
displays = [display for state, display in results if state==DotXpra.LIVE]
except Exception, e:
log.error("cannot get socker directory for %s: %s", self.username, e)
displays = []
开发者ID:svn2github,项目名称:Xpra,代码行数:10,代码来源:sys_auth_base.py
示例8: get_sessions
def get_sessions(self):
uid = self.get_uid()
gid = self.get_gid()
try:
sockdir = DotXpra(socket_dir, socket_dirs, actual_username=self.username)
results = sockdir.sockets(check_uid=uid)
displays = [display for state, display in results if state==DotXpra.LIVE]
except Exception as e:
log.error("Error: cannot get socket directory for '%s':", self.username)
log.error(" %s", e)
displays = []
return uid, gid, displays, {}, {}
开发者ID:svn2github,项目名称:Xpra,代码行数:12,代码来源:sys_auth_base.py
示例9: create_control_socket
def create_control_socket(self):
dotxpra = DotXpra(self.socket_dir)
name = "proxy-%s" % os.getpid()
sockpath = dotxpra.norm_make_path(name, dotxpra.sockdir())
state = dotxpra.get_server_state(sockpath)
if state in (DotXpra.LIVE, DotXpra.UNKNOWN):
log.warn("You already have a proxy server running at %s, the control socket will not be created!", sockpath)
return False
try:
sock = create_unix_domain_socket(sockpath, None)
sock.listen(5)
except Exception, e:
log.warn("failed to setup control socket %s: %s", sockpath, e)
return False
开发者ID:svn2github,项目名称:Xpra,代码行数:14,代码来源:proxy_instance_process.py
示例10: pick_display
def pick_display(parser, opts, extra_args):
if len(extra_args) == 0:
# Pick a default server
sockdir = DotXpra(opts.sockdir or get_default_socket_dir())
servers = sockdir.sockets()
live_servers = [display for (state, display) in servers if state is DotXpra.LIVE]
if len(live_servers) == 0:
parser.error("cannot find a live server to connect to")
elif len(live_servers) == 1:
return parse_display_name(parser, opts, live_servers[0])
else:
parser.error("there are multiple servers running, please specify")
elif len(extra_args) == 1:
return parse_display_name(parser, opts, extra_args[0])
else:
parser.error("too many arguments")
开发者ID:svn2github,项目名称:Xpra,代码行数:16,代码来源:main.py
示例11: create_control_socket
def create_control_socket(self):
dotxpra = DotXpra(self.socket_dir)
name = "proxy-%s" % os.getpid()
sockpath = dotxpra.norm_make_path(name, dotxpra.sockdir())
state = dotxpra.get_server_state(sockpath)
if state in (DotXpra.LIVE, DotXpra.UNKNOWN):
log.warn("You already have a proxy server running at %s, the control socket will not be created!", sockpath)
return False
try:
sock = create_unix_domain_socket(sockpath, None, 0o600)
sock.listen(5)
except:
log.warn("failed to setup control socket %s", sockpath, exc_info=True)
return False
self.control_socket = sock
self.control_socket_path = sockpath
log.info("proxy instance now also available using unix domain socket: %s", self.control_socket_path)
return True
开发者ID:svn2github,项目名称:Xpra,代码行数:18,代码来源:proxy_instance_process.py
示例12: show_final_state
def show_final_state(display):
sockdir = DotXpra(opts.sockdir)
for _ in range(6):
final_state = sockdir.server_state(display)
if final_state is DotXpra.LIVE:
time.sleep(0.5)
if final_state is DotXpra.DEAD:
print("xpra at %s has exited." % display)
return 0
elif final_state is DotXpra.UNKNOWN:
print("How odd... I'm not sure what's going on with xpra at %s" % display)
return 1
elif final_state is DotXpra.LIVE:
print("Failed to shutdown xpra at %s" % display)
return 1
else:
assert False, "invalid state: %s" % final_state
return 1
开发者ID:svn2github,项目名称:Xpra,代码行数:18,代码来源:main.py
示例13: run_list
def run_list(parser, opts, extra_args):
if extra_args:
parser.error("too many arguments for mode")
sockdir = DotXpra()
results = sockdir.sockets()
if not results:
sys.stdout.write("No xpra sessions found\n")
else:
sys.stdout.write("Found the following xpra sessions:\n")
for state, display in results:
sys.stdout.write("\t%s session at %s" % (state, display))
if state is DotXpra.DEAD:
try:
os.unlink(sockdir.socket_path(display))
except OSError:
pass
else:
sys.stdout.write(" (cleaned up)")
sys.stdout.write("\n")
开发者ID:dmgerman,项目名称:hacking,代码行数:19,代码来源:main.py
示例14: run_proxy
def run_proxy(parser, opts, script_file, args, mode):
from xpra.server.proxy import XpraProxy
assert "gtk" not in sys.modules
if mode in ("_proxy_start", "_shadow_start"):
#we must use a subprocess to avoid messing things up - yuk
cmd = [script_file]
if mode=="_proxy_start":
cmd.append("start")
assert len(args)==1, "proxy/shadow-start: expected 1 argument but got %s" % len(args)
display_name = args[0]
else:
assert mode=="_shadow_start"
cmd.append("shadow")
if len(args)==1:
#display_name was provided:
display_name = args[0]
else:
display_name = guess_X11_display()
cmd += args
if opts.start_child and len(opts.start_child)>0:
for x in opts.start_child:
cmd.append("--start-child=%s" % x)
if opts.exit_with_children:
cmd.append("--exit-with-children")
if opts.exit_with_client or mode=="_shadow_start":
cmd.append("--exit-with-client")
def setsid():
os.setsid()
Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, preexec_fn=setsid)
dotxpra = DotXpra()
start = time.time()
while dotxpra.server_state(display_name, 1)!=DotXpra.LIVE:
if time.time()-start>5:
warn("server failed to start after %.1f seconds - sorry!" % (time.time()-start))
return
time.sleep(0.10)
server_conn = connect_or_fail(pick_display(parser, opts, args))
app = XpraProxy(TwoFileConnection(sys.stdout, sys.stdin, info="stdin/stdout"), server_conn)
signal.signal(signal.SIGINT, app.quit)
signal.signal(signal.SIGTERM, app.quit)
app.run()
return 0
开发者ID:Brainiarc7,项目名称:xpra,代码行数:42,代码来源:main.py
示例15: pick_display
def pick_display(parser, opts, extra_args):
if len(extra_args) == 0:
if not XPRA_LOCAL_SERVERS_SUPPORTED:
parser.error("need to specify a display")
# Pick a default server
sockdir = DotXpra()
servers = sockdir.sockets()
live_servers = [display
for (state, display) in servers
if state is DotXpra.LIVE]
if len(live_servers) == 0:
parser.error("cannot find a live server to connect to")
elif len(live_servers) == 1:
return parse_display_name(parser, opts, live_servers[0])
else:
parser.error("there are multiple servers running, please specify")
elif len(extra_args) == 1:
return parse_display_name(parser, opts, extra_args[0])
else:
parser.error("too many arguments")
开发者ID:jmesmon,项目名称:xpra,代码行数:20,代码来源:main.py
示例16: pick_display
def pick_display(parser, opts, extra_args):
if len(extra_args) == 0:
# Pick a default server
sockdir = DotXpra(opts.socket_dir or get_default_socket_dir())
servers = sockdir.sockets()
live_servers = [display
for (state, display) in servers
if state is DotXpra.LIVE]
if len(live_servers) == 0:
if not LOCAL_SERVERS_SUPPORTED:
parser.error("this installation does not support local servers, you must specify a remote display")
parser.error("cannot find a live server to connect to")
elif len(live_servers) == 1:
return parse_display_name(parser.error, opts, live_servers[0])
else:
parser.error("there are multiple servers running, please specify")
elif len(extra_args) == 1:
return parse_display_name(parser.error, opts, extra_args[0])
else:
parser.error("too many arguments")
开发者ID:svn2github,项目名称:Xpra,代码行数:20,代码来源:main.py
示例17: create_control_socket
def create_control_socket(self):
assert self.socket_dir
dotxpra = DotXpra(self.socket_dir)
sockpath = dotxpra.socket_path(":proxy-%s" % os.getpid())
state = dotxpra.get_server_state(sockpath)
if state in (DotXpra.LIVE, DotXpra.UNKNOWN):
log.warn("You already have a proxy server running at %s, the control socket will not be created!", sockpath)
return False
try:
sock = create_unix_domain_socket(sockpath, None, 0o600)
sock.listen(5)
except Exception as e:
log("create_unix_domain_socket failed for '%s'", sockpath, exc_info=True)
log.error("Error: failed to setup control socket '%s':", sockpath)
log.error(" %s", e)
return False
self.control_socket = sock
self.control_socket_path = sockpath
log.info("proxy instance now also available using unix domain socket:")
log.info(" %s", self.control_socket_path)
return True
开发者ID:svn2github,项目名称:Xpra,代码行数:21,代码来源:proxy_instance_process.py
示例18: setup_local_socket
def setup_local_socket(socket_dir, socket_dirs, display_name, clobber, mmap_group, socket_permissions):
if sys.platform.startswith("win"):
return None, None
from xpra.log import Logger
log = Logger("network")
dotxpra = DotXpra(socket_dir or socket_dirs[0])
try:
dotxpra.mksockdir()
display_name = normalize_local_display_name(display_name)
sockpath = dotxpra.socket_path(display_name)
except Exception as e:
raise InitException("socket path error: %s" % e)
setup_server_socket_path(dotxpra, sockpath, display_name, clobber, wait_for_unknown=5)
sock = create_unix_domain_socket(sockpath, mmap_group, socket_permissions)
def cleanup_socket():
log.info("removing socket %s", sockpath)
try:
os.unlink(sockpath)
except:
pass
_cleanups.append(cleanup_socket)
return ("unix-domain", sock, sockpath), cleanup_socket
开发者ID:svn2github,项目名称:Xpra,代码行数:22,代码来源:server.py
示例19: run_list
def run_list(parser, opts, extra_args):
assert "gtk" not in sys.modules
if extra_args:
parser.error("too many arguments for mode")
sockdir = DotXpra(opts.socket_dir)
results = sockdir.sockets()
if not results:
sys.stdout.write("No xpra sessions found\n")
return 1
sys.stdout.write("Found the following xpra sessions:\n")
for state, display in results:
may_cleanup_socket(sockdir, state, display)
#now, re-probe the "unknown" ones:
unknown = [display for state, display in results if state==DotXpra.UNKNOWN]
if len(unknown)>0:
sys.stdout.write("Re-probing unknown sessions: %s\n" % (", ".join(unknown)))
counter = 0
while len(unknown)>0 and counter<5:
time.sleep(1)
counter += 1
probe_list = list(unknown)
unknown = []
for display in probe_list:
state = sockdir.server_state(display)
if state is DotXpra.DEAD:
may_cleanup_socket(sockdir, state, display)
elif state is DotXpra.UNKNOWN:
unknown.append(display)
else:
sys.stdout.write("\t%s session at %s\n" % (state, display))
#now cleanup those still unknown:
clean_states = [DotXpra.DEAD, DotXpra.UNKNOWN]
for display in unknown:
state = sockdir.server_state(display)
may_cleanup_socket(sockdir, state, display, clean_states=clean_states)
return 0
开发者ID:svn2github,项目名称:Xpra,代码行数:36,代码来源:main.py
示例20: run_server
def run_server(parser, opts, mode, xpra_file, extra_args):
if len(extra_args) != 1:
parser.error("need exactly 1 extra argument")
display_name = extra_args.pop(0)
if opts.exit_with_children and not opts.children:
print("--exit-with-children specified without any children to spawn; exiting immediately")
return
atexit.register(run_cleanups)
signal.signal(signal.SIGINT, deadly_signal)
signal.signal(signal.SIGTERM, deadly_signal)
assert mode in ("start", "upgrade")
upgrading = (mode == "upgrade")
dotxpra = DotXpra(opts.sockdir)
# This used to be given a display-specific name, but now we give it a
# single fixed name and if multiple servers are started then the last one
# will clobber the rest. This isn't great, but the tradeoff is that it
# makes it possible to use bare 'ssh:hostname' display names and
# autodiscover the proper numeric display name when only one xpra server
# is running on the remote host. Might need to revisit this later if
# people run into problems or autodiscovery turns out to be less useful
# than expected.
scriptpath = os.path.join(dotxpra.confdir(), "run-xpra")
# Save the starting dir now, because we'll lose track of it when we
# daemonize:
starting_dir = os.getcwd()
clobber = upgrading or opts.use_display
try:
sockpath = dotxpra.server_socket_path(display_name, clobber)
except ServerSockInUse:
parser.error("You already have an xpra server running at %s\n"
" (did you want 'xpra upgrade'?)"
% (display_name,))
# Daemonize:
if opts.daemon:
logpath = dotxpra.conf_path(display_name) + ".log"
sys.stderr.write("Entering daemon mode; "
+ "any further errors will be reported to:\n"
+ (" %s\n" % logpath))
# Do some work up front, so any errors don't get lost.
if os.path.exists(logpath):
os.rename(logpath, logpath + ".old")
logfd = os.open(logpath, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, o0666)
assert logfd > 2
os.chdir("/")
if os.fork():
os._exit(0)
os.setsid()
if os.fork():
os._exit(0)
close_all_fds(exceptions=[logfd])
fd0 = os.open("/dev/null", os.O_RDONLY)
if fd0 != 0:
os.dup2(fd0, 0)
os.close(fd0)
os.dup2(logfd, 1)
os.dup2(logfd, 2)
os.close(logfd)
# Make these line-buffered:
sys.stdout = os.fdopen(1, "w", 1)
sys.stderr = os.fdopen(2, "w", 1)
# Write out a shell-script so that we can start our proxy in a clean
# environment:
scriptfile = open(scriptpath, "w")
# Unix is a little silly sometimes:
umask = os.umask(0)
os.umask(umask)
if hasattr(os, "fchmod"):
os.fchmod(scriptfile.fileno(), o0700 & ~umask)
else:
os.chmod(scriptpath, o0700 & ~umask)
scriptfile.write(xpra_runner_shell_script(xpra_file, starting_dir))
scriptfile.close()
# Do this after writing out the shell script:
os.environ["DISPLAY"] = display_name
if not clobber:
# We need to set up a new server environment
xauthority = os.environ.get("XAUTHORITY",
os.path.expanduser("~/.Xauthority"))
xvfb_cmd = opts.xvfb.replace("$XAUTHORITY", xauthority).split()
xvfb_executable = xvfb_cmd[0]
xvfb_cmd[0] = "%s-for-Xpra-%s" % (xvfb_executable, display_name)
try:
xvfb = subprocess.Popen(xvfb_cmd+[display_name],
executable=xvfb_executable)
except OSError, e:
sys.stderr.write("Error starting Xvfb: %s\n" % (e,))
return
raw_cookie = os.urandom(16)
baked_cookie = raw_cookie.encode("hex")
#.........这里部分代码省略.........
开发者ID:svn2github,项目名称:Xpra,代码行数:101,代码来源:server.py
注:本文中的xpra.dotxpra.DotXpra类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论