| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | 
							- 'use strict';
 
- const os = require('os');
 
- const exec = require('child_process').exec;
 
- const util = require('./util');
 
- function vboxInfo(callback) {
 
-   
 
-   let result = [];
 
-   return new Promise((resolve) => {
 
-     process.nextTick(() => {
 
-       try {
 
-         exec(util.getVboxmanage() + ' list vms --long', function (error, stdout) {
 
-           let parts = (os.EOL + stdout.toString()).split(os.EOL + 'Name:');
 
-           parts.shift();
 
-           parts.forEach(part => {
 
-             const lines = ('Name:' + part).split(os.EOL);
 
-             const state = util.getValue(lines, 'State');
 
-             const running = state.startsWith('running');
 
-             const runningSinceString = running ? state.replace('running (since ', '').replace(')', '').trim() : '';
 
-             let runningSince = 0;
 
-             try {
 
-               if (running) {
 
-                 const sinceDateObj = new Date(runningSinceString);
 
-                 const offset = sinceDateObj.getTimezoneOffset();
 
-                 runningSince = Math.round((Date.now() - Date.parse(sinceDateObj)) / 1000) + offset * 60;
 
-               }
 
-             } catch (e) {
 
-               util.noop();
 
-             }
 
-             const stoppedSinceString = !running ? state.replace('powered off (since', '').replace(')', '').trim() : '';
 
-             let stoppedSince = 0;
 
-             try {
 
-               if (!running) {
 
-                 const sinceDateObj = new Date(stoppedSinceString);
 
-                 const offset = sinceDateObj.getTimezoneOffset();
 
-                 stoppedSince = Math.round((Date.now() - Date.parse(sinceDateObj)) / 1000) + offset * 60;
 
-               }
 
-             } catch (e) {
 
-               util.noop();
 
-             }
 
-             result.push({
 
-               id: util.getValue(lines, 'UUID'),
 
-               name: util.getValue(lines, 'Name'),
 
-               running,
 
-               started: runningSinceString,
 
-               runningSince,
 
-               stopped: stoppedSinceString,
 
-               stoppedSince,
 
-               guestOS: util.getValue(lines, 'Guest OS'),
 
-               hardwareUUID: util.getValue(lines, 'Hardware UUID'),
 
-               memory: parseInt(util.getValue(lines, 'Memory size', '     '), 10),
 
-               vram: parseInt(util.getValue(lines, 'VRAM size'), 10),
 
-               cpus: parseInt(util.getValue(lines, 'Number of CPUs'), 10),
 
-               cpuExepCap: util.getValue(lines, 'CPU exec cap'),
 
-               cpuProfile: util.getValue(lines, 'CPUProfile'),
 
-               chipset: util.getValue(lines, 'Chipset'),
 
-               firmware: util.getValue(lines, 'Firmware'),
 
-               pageFusion: util.getValue(lines, 'Page Fusion') === 'enabled',
 
-               configFile: util.getValue(lines, 'Config file'),
 
-               snapshotFolder: util.getValue(lines, 'Snapshot folder'),
 
-               logFolder: util.getValue(lines, 'Log folder'),
 
-               hpet: util.getValue(lines, 'HPET') === 'enabled',
 
-               pae: util.getValue(lines, 'PAE') === 'enabled',
 
-               longMode: util.getValue(lines, 'Long Mode') === 'enabled',
 
-               tripleFaultReset: util.getValue(lines, 'Triple Fault Reset') === 'enabled',
 
-               apic: util.getValue(lines, 'APIC') === 'enabled',
 
-               x2Apic: util.getValue(lines, 'X2APIC') === 'enabled',
 
-               acpi: util.getValue(lines, 'ACPI') === 'enabled',
 
-               ioApic: util.getValue(lines, 'IOAPIC') === 'enabled',
 
-               biosApicMode: util.getValue(lines, 'BIOS APIC mode'),
 
-               bootMenuMode: util.getValue(lines, 'Boot menu mode'),
 
-               bootDevice1: util.getValue(lines, 'Boot Device 1'),
 
-               bootDevice2: util.getValue(lines, 'Boot Device 2'),
 
-               bootDevice3: util.getValue(lines, 'Boot Device 3'),
 
-               bootDevice4: util.getValue(lines, 'Boot Device 4'),
 
-               timeOffset: util.getValue(lines, 'Time offset'),
 
-               rtc: util.getValue(lines, 'RTC'),
 
-             });
 
-           });
 
-           if (callback) { callback(result); }
 
-           resolve(result);
 
-         });
 
-       } catch (e) {
 
-         if (callback) { callback(result); }
 
-         resolve(result);
 
-       }
 
-     });
 
-   });
 
- }
 
- exports.vboxInfo = vboxInfo;
 
 
  |