changed handleBrowsingRequest and startVM
authormb
Wed, 11 Dec 2013 14:34:19 +0100
changeset 4176d9177ca509
parent 40 b44a603b0b95
child 43 7c2e34bcdf3d
changed handleBrowsingRequest and startVM
OpenSecurity/bin/opensecurityd.py
OpenSecurity/bin/vmmanager.py
     1.1 --- a/OpenSecurity/bin/opensecurityd.py	Wed Dec 11 12:07:16 2013 +0100
     1.2 +++ b/OpenSecurity/bin/opensecurityd.py	Wed Dec 11 14:34:19 2013 +0100
     1.3 @@ -81,9 +81,8 @@
     1.4      """OpenSecurity '/device_change' handler"""
     1.5      
     1.6      def GET(self):
     1.7 -        new_ip = gvm_mgr.handleDeviceChange()
     1.8 -        if new_ip != None:
     1.9 -            gvm_mgr.mapNetworkDrive('h:', '\\\\' + new_ip + '\\USB', None, None)
    1.10 +        gvm_mgr.handleDeviceChange()
    1.11 +        
    1.12          return "os_device_change"
    1.13  
    1.14          
    1.15 @@ -96,7 +95,6 @@
    1.16      def GET(self):
    1.17          try:
    1.18              browsingVM = gvm_mgr.handleBrowsingRequest()
    1.19 -            gvm_mgr.startVM(browsingVM)
    1.20              return browsingVM
    1.21          except:
    1.22              raise web.internalerror()
     2.1 --- a/OpenSecurity/bin/vmmanager.py	Wed Dec 11 12:07:16 2013 +0100
     2.2 +++ b/OpenSecurity/bin/vmmanager.py	Wed Dec 11 14:34:19 2013 +0100
     2.3 @@ -225,7 +225,14 @@
     2.4      def startVM(self, vm_name):
     2.5          print('starting ' +  vm_name)
     2.6          cmd = 'VBoxManage startvm ' + vm_name + ' --type headless' 
     2.7 -        print self.execute(cmd) #verify against (0, 'Waiting for VM "SecurityDVM0" to power on...\r\nVM "SecurityDVM0" has been successfully started.\r\n', '')
     2.8 +        result = self.execute(cmd)
     2.9 +        while result[0] != 0:
    2.10 +            print "Failed to start SDVM: ", vm_name, " retrying"
    2.11 +            time.sleep(1)
    2.12 +            result = self.execute(cmd)
    2.13 +        #verify against (0, 'Waiting for VM "SecurityDVM0" to power on...\r\nVM "SecurityDVM0" has been successfully started.\r\n', '')
    2.14 +        return result[0]
    2.15 +        
    2.16          
    2.17      # stop VM    
    2.18      def stopVM(self, vm_name):
    2.19 @@ -319,25 +326,37 @@
    2.20                      new_sdvm = self.generateSDVMName()
    2.21                      self.createVM(new_sdvm)
    2.22                      self.attachRSD(new_sdvm, connected_device)
    2.23 -                    #sleep like method
    2.24 -                    self.listSDVM()
    2.25 +
    2.26 +
    2.27                      self.startVM(new_sdvm)
    2.28 -                   
    2.29 +                    # wait for machine to come up
    2.30                      while new_ip == None:
    2.31                          time.sleep(1)
    2.32                          new_ip = self.getHostOnlyIP(new_sdvm)
    2.33                      while new_ip not in self.startNotifications:
    2.34                          time.sleep(1)
    2.35 +                    if new_ip != None:
    2.36 +                        self.mapNetworkDrive('h:', '\\\\' + new_ip + '\\USB', None, None)
    2.37                      #TODO: cleanup notifications somwhere else (eg. machine shutdown)
    2.38                      self.startNotifications.remove(new_ip)
    2.39              VMManager.handleDeviceChangeLock.release()
    2.40              return new_ip
    2.41      
    2.42      def handleBrowsingRequest(self):
    2.43 -        new_sdvm = self.generateSDVMName()
    2.44 -        self.createVM(new_sdvm)
    2.45 -        self.genCertificateISO(new_sdvm)
    2.46 -        self.attachCertificateISO(new_sdvm)
    2.47 +        if VMManager.handleDeviceChangeLock.acquire(True):
    2.48 +            new_ip = None
    2.49 +            new_sdvm = self.generateSDVMName()
    2.50 +            self.createVM(new_sdvm)
    2.51 +            self.genCertificateISO(new_sdvm)
    2.52 +            self.attachCertificateISO(new_sdvm)
    2.53 +            self.startVM(new_sdvm)
    2.54 +            # wait for machine to come up
    2.55 +            while new_ip == None:
    2.56 +                time.sleep(1)
    2.57 +                new_ip = self.getHostOnlyIP(new_sdvm)
    2.58 +            while new_ip not in self.startNotifications:
    2.59 +                time.sleep(1)
    2.60 +            VMManager.handleDeviceChangeLock.release()
    2.61          return new_sdvm
    2.62      
    2.63      # executes command over ssh on guest vm
    2.64 @@ -350,7 +369,7 @@
    2.65          return self.execute(cmd)
    2.66      
    2.67      # executes command over ssh on guest vm with X forwarding
    2.68 -    def sshGuestX11Execute(self, vm_name, prog, user_name='opensec'):
    2.69 +    def sshGuestX11Execute(self, vm_name, prog, user_name='osecuser'):
    2.70          #TODO: verify if X server is running on user account 
    2.71          #TODO: set DISPLAY accordingly
    2.72          address = self.getHostOnlyIP(vm_name)
    2.73 @@ -410,13 +429,13 @@
    2.74              return -1
    2.75          return 1
    2.76  
    2.77 -if __name__ == '__main__':
    2.78 +#if __name__ == '__main__':
    2.79  
    2.80 -    man = VMManager.getInstance()
    2.81 +    #man = VMManager.getInstance()
    2.82      #man.removeVM('SecurityDVM0')
    2.83      #man.netUse('192.168.56.134', 'USB\\')
    2.84 -    ip = '192.168.56.139'
    2.85 -    man.mapNetworkDrive('h:', '\\\\' + ip + '\USB', None, None)
    2.86 +    #ip = '192.168.56.139'
    2.87 +    #man.mapNetworkDrive('h:', '\\\\' + ip + '\USB', None, None)
    2.88      
    2.89      #man.cygwin_path = 'c:\\cygwin64\\bin\\'
    2.90      #man.handleDeviceChange()