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()