1.1 --- a/OpenSecurity/bin/vmmanager.pyw Fri Mar 07 14:32:12 2014 +0100
1.2 +++ b/OpenSecurity/bin/vmmanager.pyw Tue Mar 18 16:28:15 2014 +0100
1.3 @@ -220,6 +220,7 @@
1.4
1.5 # list storage snaphots for VM
1.6 def updateTemplate(self):
1.7 +
1.8 self.cleanup()
1.9 self.poweroffVM('SecurityDVM')
1.10 self.waitShutdown('SecurityDVM')
1.11 @@ -303,7 +304,7 @@
1.12
1.13 # stop VM
1.14 def hibernateVM(self, vm_name):
1.15 - logger.info('Sending shutdown signal to ' + vm_name)
1.16 + logger.info('Sending hibernate-disk signal to ' + vm_name)
1.17 checkResult(Cygwin.sshExecute( '"sudo hibernate-disk&"', VMManager.getHostOnlyIP(vm_name), 'osecuser', Cygwin.cygPath(self.machineFolder) + '/' + vm_name + '/dvm_key', wait_return=False))
1.18
1.19 # poweroff VM
1.20 @@ -518,7 +519,7 @@
1.21 return result
1.22
1.23 # handles browsing request
1.24 -class BrowsingHandler(threading.Thread):
1.25 +class BrowsingHandler(threading.Thread):
1.26 vmm = None
1.27 def __init__(self, vmmanager):
1.28 threading.Thread.__init__(self)
1.29 @@ -526,6 +527,7 @@
1.30
1.31 def run(self):
1.32 try:
1.33 + Cygwin.start_X11()
1.34 new_sdvm = self.vmm.generateSDVMName()
1.35 self.vmm.createVM(new_sdvm)
1.36 self.vmm.storageAttach(new_sdvm)
1.37 @@ -536,7 +538,10 @@
1.38 drive = self.vmm.genNetworkDrive()
1.39 if new_ip != None:
1.40 self.vmm.mapNetworkDrive(drive, '\\\\' + new_ip + '\\Download', None, None)
1.41 - result = checkResult(Cygwin.sshExecuteX11('/usr/bin/iceweasel', new_ip, 'osecuser', Cygwin.cygPath(self.vmm.getMachineFolder()) + '/' + new_sdvm + '/dvm_key'))
1.42 + #browser = '/usr/bin/iceweasel'
1.43 + #browser = '/usr/bin/midori'
1.44 + browser = '/usr/bin/chromium'
1.45 + result = checkResult(Cygwin.sshExecuteX11(browser, new_ip, 'osecuser', Cygwin.cygPath(self.vmm.getMachineFolder()) + '/' + new_sdvm + '/dvm_key'))
1.46 except:
1.47 logger.error("BrowsingHandler failed. Cleaning up")
1.48
1.49 @@ -546,7 +551,6 @@
1.50
1.51 class DeviceHandler(threading.Thread):
1.52 vmm = None
1.53 - #handleDeviceChangeLock = threading.Lock()
1.54 attachedRSDs = None
1.55 connectedRSDs = None
1.56 running = True
1.57 @@ -559,9 +563,21 @@
1.58
1.59 def run(self):
1.60 self.connectedRSDs = dict()
1.61 - self.attachedRSDs = self.vmm.getAttachedRSDs()
1.62 while self.running:
1.63 tmp_rsds = self.vmm.getConnectedRSDS()
1.64 +
1.65 + self.attachedRSDs = self.vmm.getAttachedRSDs()
1.66 + for vm_name in self.attachedRSDs.keys():
1.67 + if self.attachedRSDs[vm_name] not in tmp_rsds.values():
1.68 + drive = self.vmm.getNetworkDrive(vm_name)
1.69 + self.vmm.unmapNetworkDrive(drive)
1.70 + #self.stopVM(vm_name)
1.71 + self.vmm.detachRSD(vm_name)
1.72 + self.vmm.poweroffVM(vm_name)
1.73 + self.vmm.removeVM(vm_name)
1.74 + break
1.75 +
1.76 +
1.77 if tmp_rsds.keys() == self.connectedRSDs.keys():
1.78 logger.debug("Nothing's changed. sleep(3)")
1.79 time.sleep(3)
1.80 @@ -569,16 +585,9 @@
1.81
1.82 logger.info("Something's changed")
1.83 self.connectedRSDs = tmp_rsds
1.84 - self.attachedRSDs = self.vmm.getAttachedRSDs()
1.85
1.86 - for vm_name in self.attachedRSDs.keys():
1.87 - if self.attachedRSDs[vm_name] not in self.connectedRSDs.values():
1.88 - drive = self.vmm.getNetworkDrive(vm_name)
1.89 - self.vmm.unmapNetworkDrive(drive)
1.90 - #self.stopVM(vm_name)
1.91 - self.vmm.detachRSD(vm_name)
1.92 - self.vmm.poweroffVM(vm_name)
1.93 - self.vmm.removeVM(vm_name)
1.94 +
1.95 +
1.96 #create new vm for attached device if any
1.97 self.attachedRSDs = self.vmm.getAttachedRSDs()
1.98 self.connectedRSDs = self.vmm.getConnectedRSDS()