OpenSecurity/bin/vmmanager.py
changeset 41 76d9177ca509
parent 40 b44a603b0b95
child 43 7c2e34bcdf3d
     1.1 --- a/OpenSecurity/bin/vmmanager.py	Wed Dec 11 12:07:16 2013 +0100
     1.2 +++ b/OpenSecurity/bin/vmmanager.py	Wed Dec 11 14:34:19 2013 +0100
     1.3 @@ -225,7 +225,14 @@
     1.4      def startVM(self, vm_name):
     1.5          print('starting ' +  vm_name)
     1.6          cmd = 'VBoxManage startvm ' + vm_name + ' --type headless' 
     1.7 -        print self.execute(cmd) #verify against (0, 'Waiting for VM "SecurityDVM0" to power on...\r\nVM "SecurityDVM0" has been successfully started.\r\n', '')
     1.8 +        result = self.execute(cmd)
     1.9 +        while result[0] != 0:
    1.10 +            print "Failed to start SDVM: ", vm_name, " retrying"
    1.11 +            time.sleep(1)
    1.12 +            result = self.execute(cmd)
    1.13 +        #verify against (0, 'Waiting for VM "SecurityDVM0" to power on...\r\nVM "SecurityDVM0" has been successfully started.\r\n', '')
    1.14 +        return result[0]
    1.15 +        
    1.16          
    1.17      # stop VM    
    1.18      def stopVM(self, vm_name):
    1.19 @@ -319,25 +326,37 @@
    1.20                      new_sdvm = self.generateSDVMName()
    1.21                      self.createVM(new_sdvm)
    1.22                      self.attachRSD(new_sdvm, connected_device)
    1.23 -                    #sleep like method
    1.24 -                    self.listSDVM()
    1.25 +
    1.26 +
    1.27                      self.startVM(new_sdvm)
    1.28 -                   
    1.29 +                    # wait for machine to come up
    1.30                      while new_ip == None:
    1.31                          time.sleep(1)
    1.32                          new_ip = self.getHostOnlyIP(new_sdvm)
    1.33                      while new_ip not in self.startNotifications:
    1.34                          time.sleep(1)
    1.35 +                    if new_ip != None:
    1.36 +                        self.mapNetworkDrive('h:', '\\\\' + new_ip + '\\USB', None, None)
    1.37                      #TODO: cleanup notifications somwhere else (eg. machine shutdown)
    1.38                      self.startNotifications.remove(new_ip)
    1.39              VMManager.handleDeviceChangeLock.release()
    1.40              return new_ip
    1.41      
    1.42      def handleBrowsingRequest(self):
    1.43 -        new_sdvm = self.generateSDVMName()
    1.44 -        self.createVM(new_sdvm)
    1.45 -        self.genCertificateISO(new_sdvm)
    1.46 -        self.attachCertificateISO(new_sdvm)
    1.47 +        if VMManager.handleDeviceChangeLock.acquire(True):
    1.48 +            new_ip = None
    1.49 +            new_sdvm = self.generateSDVMName()
    1.50 +            self.createVM(new_sdvm)
    1.51 +            self.genCertificateISO(new_sdvm)
    1.52 +            self.attachCertificateISO(new_sdvm)
    1.53 +            self.startVM(new_sdvm)
    1.54 +            # wait for machine to come up
    1.55 +            while new_ip == None:
    1.56 +                time.sleep(1)
    1.57 +                new_ip = self.getHostOnlyIP(new_sdvm)
    1.58 +            while new_ip not in self.startNotifications:
    1.59 +                time.sleep(1)
    1.60 +            VMManager.handleDeviceChangeLock.release()
    1.61          return new_sdvm
    1.62      
    1.63      # executes command over ssh on guest vm
    1.64 @@ -350,7 +369,7 @@
    1.65          return self.execute(cmd)
    1.66      
    1.67      # executes command over ssh on guest vm with X forwarding
    1.68 -    def sshGuestX11Execute(self, vm_name, prog, user_name='opensec'):
    1.69 +    def sshGuestX11Execute(self, vm_name, prog, user_name='osecuser'):
    1.70          #TODO: verify if X server is running on user account 
    1.71          #TODO: set DISPLAY accordingly
    1.72          address = self.getHostOnlyIP(vm_name)
    1.73 @@ -410,13 +429,13 @@
    1.74              return -1
    1.75          return 1
    1.76  
    1.77 -if __name__ == '__main__':
    1.78 +#if __name__ == '__main__':
    1.79  
    1.80 -    man = VMManager.getInstance()
    1.81 +    #man = VMManager.getInstance()
    1.82      #man.removeVM('SecurityDVM0')
    1.83      #man.netUse('192.168.56.134', 'USB\\')
    1.84 -    ip = '192.168.56.139'
    1.85 -    man.mapNetworkDrive('h:', '\\\\' + ip + '\USB', None, None)
    1.86 +    #ip = '192.168.56.139'
    1.87 +    #man.mapNetworkDrive('h:', '\\\\' + ip + '\USB', None, None)
    1.88      
    1.89      #man.cygwin_path = 'c:\\cygwin64\\bin\\'
    1.90      #man.handleDeviceChange()