| #!/sbin/runscript |
| |
| description="Controls VirtualBox sessions" |
| |
| . /etc/conf.d/vboxwebsrv |
| |
| su_command="su - ${VBOXWEBSRV_USER} -c" |
| |
| depend() { |
| need localmount |
| after bootmisc |
| } |
| |
| start() { |
| einfo "Starting VirtualBox machines" |
| eindent |
| MACHINES=$($su_command "VBoxManage list vms | awk '{ print \$NF }' | sed -e 's/[{}]//g'") |
| for UUID in $MACHINES; do |
| STARTUP=$($su_command "VBoxManage getextradata $UUID 'pvbx/startupMode'" | awk '{ print $NF }') |
| VMNAME=$($su_command "VBoxManage showvminfo $UUID | sed -n '0,/^Name:/s/^Name:[ \t]*//p'") |
| if [ "${STARTUP}" == "auto" ]; then |
| ebegin "Starting machine ${VMNAME}" |
| $su_command "VBoxManage startvm $UUID --type headless" &>> /var/log/vboxinit.log |
| eend $? |
| fi |
| done |
| } |
| |
| stop() { |
| einfo "Saving VirtualBox machines" |
| eindent |
| MACHINES=$($su_command "VBoxManage list runningvms | awk '{ print \$NF }' | sed -e 's/[{}]//g'") |
| for UUID in $MACHINES; do |
| VMNAME=$($su_command "VBoxManage showvminfo $UUID | sed -n '0,/^Name:/s/^Name:[ \t]*//p'") |
| ebegin "Stopping machine ${VMNAME}" |
| $su_command "VBoxManage controlvm $UUID savestate" &>> /var/log/vboxinit.log |
| eend $? |
| done |
| } |