7d07a6cf50
Those files are actually common for dom0 and VM, but as we splitted the repos, move them accordingly.
49 lines
1.3 KiB
Python
Executable File
49 lines
1.3 KiB
Python
Executable File
#!/usr/bin/python
|
|
|
|
##
|
|
## This script is for dom0
|
|
## The syntax is modelled after "xl block-attach"
|
|
##
|
|
|
|
import sys
|
|
import os
|
|
import xen.lowlevel.xl
|
|
|
|
|
|
# parse command line
|
|
if (len(sys.argv)<4) or (len(sys.argv)>5):
|
|
print 'usage: xl-qvm-usb-attach.py <frontendvm-xid> <backendvm-device> <frontendvm-device> [<backendvm-xid>]'
|
|
sys.exit(1)
|
|
|
|
frontendvm_xid=sys.argv[1]
|
|
backendvm_device=sys.argv[2]
|
|
|
|
frontend=sys.argv[3].split('-')
|
|
if len(frontend)!=2:
|
|
print 'Error: frontendvm-device must be in <controller>-<port> format'
|
|
sys.exit(1)
|
|
(controller, port)=frontend
|
|
|
|
if len(sys.argv)>4:
|
|
backendvm_xid=int(sys.argv[4])
|
|
backendvm_name=xen.lowlevel.xl.ctx().domid_to_name(backendvm_xid)
|
|
else:
|
|
backendvm_xid=0
|
|
|
|
# FIXME: command injection
|
|
os.system("xenstore-write /local/domain/%s/backend/vusb/%s/%s/port/%s '%s'"
|
|
% (backendvm_xid, frontendvm_xid, controller, port, backendvm_device))
|
|
|
|
cmd = "/usr/lib/qubes/vusb-ctl.py bind '%s'" % backendvm_device
|
|
if backendvm_xid == 0:
|
|
os.system("sudo %s" % cmd)
|
|
else:
|
|
from qubes.qubes import QubesVmCollection
|
|
qvm_collection = QubesVmCollection()
|
|
qvm_collection.lock_db_for_reading()
|
|
qvm_collection.load()
|
|
qvm_collection.unlock_db()
|
|
|
|
# launch
|
|
qvm_collection.get_vm_by_name(backendvm_name).run(cmd, user="root")
|