def startVnc(self, vmid, vncpassword, vncport, websockifyPort=None, websockifyCert=None): vmid = params.convert(vmid, convert=int, gte=1) vncpassword = params.convert(vncpassword, convert=unicode) vncport = params.convert(vncport, convert=int, gte=1, lt=2**16) with locks[vmid]: self._checkStatus(vmid, StateName.STARTED) self._setVncPassword(vmid, vncpassword) self._virsh("qemu-monitor-command", [ "vm_%d" % vmid, "--hmp", "change", "vnc", "unix:/var/run/qemu-server/%d.vnc,password" % vmid ]) vncPid = spawnDaemon([ "socat", "TCP-LISTEN:%d,reuseaddr,fork" % vncport, "UNIX-CLIENT:/var/run/qemu-server/%d.vnc" % vmid ]) websockifyPid = None try: if websockifyPort: websockifyPid = websockify.start(websockifyPort, vncport, websockifyCert) except: self.stopVnc(vncPid) raise return vncPid, websockifyPid
def startVnc(vmid, vncpassword, vncport, websockifyPort=None, websockifyCert=None): vmid = params.convert(vmid, convert=int, gte=1) vncpassword = params.convert(vncpassword, convert=unicode) vncport = params.convert(vncport, convert=int, gte=1, lt=2**16) with locks[vmid]: _checkStatus(vmid, Status.Running) _setVncPassword(vmid, vncpassword) vncPid = spawnDaemon([ "socat", "TCP-LISTEN:%d,reuseaddr,fork" % vncport, "UNIX-CLIENT:/var/run/qemu-server/%d.vnc" % vmid ]) websockifyPid = None try: if websockifyPort: websockifyPid = websockify.start(websockifyPort, vncport, websockifyCert) except: stopVnc(vncPid) raise return vncPid, websockifyPid
def httpd_start(folder, port): folder = params.convert(folder, convert=os.path.realpath, check=os.path.exists) port = params.convert(port, convert=int, gte=1, lt=2**16) netstat.checkPortFree(port) pid = spawnDaemon(["busybox", "httpd", "-f", "-p", str(port)], cwd=folder) try: wait.waitFor(lambda :netstat.isPortUsedBy(port, pid), failCond=lambda :not proc.isAlive(pid)) return pid except wait.WaitError: proc.autoKill(pid, group=True) raise
def start(port, command): port = params.convert(port, convert=int, gte=1, lt=2**16) command = params.convert(command, convert=list) netstat.checkPortFree(port, tcp=True, ipv4=True) pid = spawnDaemon(["tcpserver", "-qHRl", "0", "0", str(port)] + command) try: wait.waitFor(lambda :netstat.isPortUsedBy(port, pid), failCond=lambda :not proc.isAlive(pid)) return pid except wait.WaitError: proc.autoKill(pid, group=True) raise
def start(port, command): port = params.convert(port, convert=int, gte=1, lt=2**16) command = params.convert(command, convert=list) netstat.checkPortFree(port, tcp=True, ipv4=True) pid = spawnDaemon(["tcpserver", "-qHRl", "0", "0", str(port)] + command) try: wait.waitFor(lambda: netstat.isPortUsedBy(port, pid), failCond=lambda: not proc.isAlive(pid)) return pid except wait.WaitError: proc.autoKill(pid, group=True) raise
def start(iface, address, port, network_id, peers): iface = params.convert(iface, convert=str, check=lambda iface: not net.ifaceExists(iface)) address = params.convert(address, convert=str) port = params.convert(port, convert=int, gte=1, lt=2**16) network_id = params.convert(network_id, convert=int, gte=1, lt=1<<64) peers = params.convert(peers, convert=list) netstat.checkPortFree(port, tcp=False, udp=True, ipv4=True) connect = [] for p in peers: connect += ["-c", p] pid = spawnDaemon(["vpncloud", "-d", iface, "-l", "%s:%d" % (address, port), "--network-id", "%d" % network_id] + connect) wait.waitFor(lambda :net.ifaceExists(iface), failCond=lambda :not proc.isAlive(pid)) return pid
def start(port, vncport, sslcert=None): port = params.convert(port, convert=int, gte=1, lt=2**16) vncport = params.convert(vncport, convert=int, gte=1, lt=2**16) sslcert = params.convert(sslcert, convert=str, null=True, check=os.path.exists) WebsockifyError.check(not netstat.isPortFree(vncport), WebsockifyError.CODE_DEST_PORT_FREE, "Destination port is free", {"port": vncport}) netstat.checkPortFree(port, tcp=True, ipv4=True) pid = spawnDaemon(["websockify", "0.0.0.0:%d" % port, "localhost:%d" % vncport] + (["--cert=%s" % sslcert] if sslcert else [])) try: wait.waitFor(lambda :netstat.isPortUsedBy(port, pid), failCond=lambda :not proc.isAlive(pid)) return pid except wait.WaitError: proc.autoKill(pid, group=True) raise
def httpd_start(folder, port): folder = params.convert(folder, convert=os.path.realpath, check=os.path.exists) port = params.convert(port, convert=int, gte=1, lt=2**16) netstat.checkPortFree(port) pid = spawnDaemon(["busybox", "httpd", "-f", "-p", str(port)], cwd=folder) try: wait.waitFor(lambda: netstat.isPortUsedBy(port, pid), failCond=lambda: not proc.isAlive(pid)) return pid except wait.WaitError: proc.autoKill(pid, group=True) raise
def startVnc(vmid, vncpassword, vncport, websockifyPort=None, websockifyCert=None): vmid = params.convert(vmid, convert=int, gte=1) vncpassword = params.convert(vncpassword, convert=unicode) vncport = params.convert(vncport, convert=int, gte=1, lt=2**16) with locks[vmid]: _checkStatus(vmid, Status.Running) _setVncPassword(vmid, vncpassword) vncPid = spawnDaemon(["socat", "TCP-LISTEN:%d,reuseaddr,fork" % vncport, "UNIX-CLIENT:/var/run/qemu-server/%d.vnc" % vmid]) websockifyPid = None try: if websockifyPort: websockifyPid = websockify.start(websockifyPort, vncport, websockifyCert) except: stopVnc(vncPid) raise return vncPid, websockifyPid
def startVnc(self, vmid,vncpassword, vncport, websockifyPort=None, websockifyCert=None): vmid = params.convert(vmid, convert=int, gte=1) vncpassword = params.convert(vncpassword, convert=unicode) vncport = params.convert(vncport, convert=int, gte=1, lt=2 ** 16) with locks[vmid]: self._checkStatus(vmid, StateName.STARTED) self._setVncPassword(vmid, vncpassword) self._virsh("qemu-monitor-command", ["vm_%d" % vmid, "--hmp", "change", "vnc", "unix:/var/run/qemu-server/%d.vnc,password" % vmid]) vncPid = spawnDaemon( ["socat", "TCP-LISTEN:%d,reuseaddr,fork" % vncport, "UNIX-CLIENT:/var/run/qemu-server/%d.vnc" % vmid]) websockifyPid = None try: if websockifyPort: websockifyPid = websockify.start(websockifyPort, vncport, websockifyCert) except: self.stopVnc(vncPid) raise return vncPid, websockifyPid
def start(port, vncport, sslcert=None): port = params.convert(port, convert=int, gte=1, lt=2**16) vncport = params.convert(vncport, convert=int, gte=1, lt=2**16) sslcert = params.convert(sslcert, convert=str, null=True, check=os.path.exists) WebsockifyError.check(not netstat.isPortFree(vncport), WebsockifyError.CODE_DEST_PORT_FREE, "Destination port is free", {"port": vncport}) netstat.checkPortFree(port, tcp=True, ipv4=True) pid = spawnDaemon( ["websockify", "0.0.0.0:%d" % port, "localhost:%d" % vncport] + ["--cert=%s" % sslcert] if sslcert else []) try: wait.waitFor(lambda: netstat.isPortUsedBy(port, pid), failCond=lambda: not proc.isAlive(pid)) return pid except wait.WaitError: proc.autoKill(pid, group=True) raise
def start(iface, output): iface = params.convert(iface, convert=str, check=net.ifaceExists) output = params.convert(output, convert=str) return spawnDaemon(["ipspy", "-i", iface, "-o", output, "--dhcp"])