예제 #1
0
 /**
  * Get a list of USB devices attached to a given VM
  *
  * @param array $args array of arguments. See function body for details.
  * @return array list of devices
  */
 public function remote_consoleGetUSBDevices($args)
 {
     // Connect to vboxwebsrv
     $this->connect();
     /* @var $machine IMachine */
     $machine = $this->vbox->findMachine($args['vm']);
     $this->session = $this->websessionManager->getSessionObject($this->vbox->handle);
     $machine->lockMachine($this->session->handle, 'Shared');
     $response = array();
     foreach ($this->session->console->USBDevices as $u) {
         /* @var $u IUSBDevice */
         $response[$u->id] = array('id' => $u->id, 'remote' => $u->remote);
         $u->releaseRemote();
     }
     $this->session->unlockMachine();
     unset($this->session);
     $machine->releaseRemote();
     return $response;
 }
예제 #2
0
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 * OTHER DEALINGS IN THE SOFTWARE.
 */
require_once './vboxServiceWrappers.php';
//Connect to webservice
$connection = new SoapClient("vboxwebService.wsdl", array('location' => "http://localhost:18083/"));
//Logon to webservice
$websessionManager = new IWebsessionManager($connection);
// Dummy username and password (change to appropriate values or set authentication method to null)
$virtualbox = $websessionManager->logon("username", "password");
//Get a list of registered machines
$machines = $virtualbox->machines;
//Take a screenshot of the first vm we find that is running
foreach ($machines as $machine) {
    if ('Running' == $machine->state) {
        $session = $websessionManager->getSessionObject($virtualbox->handle);
        $uuid = $machine->id;
        $virtualbox->openExistingSession($session, $uuid);
        try {
            $console = $session->console;
            $display = $console->display;
            $screenWidth = $display->width;
            $screenHeight = $display->height;
            $imageraw = $display->takeScreenShotSlow($screenWidth, $screenHeight);
            $session->close();
            $filename = './screenshot.png';
            echo "Saving screenshot of " . $machine->name . " ({$screenWidth}x{$screenHeight}) to {$filename}\n";
            $image = imagecreatetruecolor($screenWidth, $screenHeight);
            for ($height = 0; $height < $screenHeight; $height++) {
                for ($width = 0; $width < $screenWidth; $width++) {
                    $start = ($height * $screenWidth + $width) * 4;