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