OpenSecurity/bin/vmmanager.pyw
changeset 95 cdebb7e0ba10
parent 90 bfd41c38d156
child 96 630b62946c9e
     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()