update phpvirtualbox

This commit is contained in:
kev 2019-10-21 16:21:10 +08:00
parent 79d8dac378
commit 3185a204b4
8 changed files with 137 additions and 293 deletions

View File

@ -3,28 +3,23 @@
#
FROM alpine
MAINTAINER kev <noreply@easypi.pro>
MAINTAINER EasyPi Software Foundation
ENV PHPVBOX_VERSION=5.2-1
ENV PHPVBOX_URL=https://github.com/phpvirtualbox/phpvirtualbox/archive/${PHPVBOX_VERSION}.tar.gz
WORKDIR /var/www
RUN set -xe \
&& apk add --no-cache bash nginx php5-fpm php5-cli php5-json php5-soap \
&& apk add --no-cache --virtual build-dependencies wget unzip \
&& apk add --no-cache --virtual build-dependencies curl tar \
&& touch /etc/php5/fpm.d/empty.conf \
&& wget --no-check-certificate https://sourceforge.net/projects/phpvirtualbox/files/latest/download -O phpvirtualbox.zip \
&& unzip phpvirtualbox.zip -d phpvirtualbox \
&& mkdir -p /var/www \
&& mv -v phpvirtualbox/*/* /var/www/ \
&& rm phpvirtualbox.zip \
&& rm phpvirtualbox/ -R \
&& curl -sSL ${PHPVBOX_URL} | tar xz --strip 1 \
&& apk del build-dependencies \
&& rm -rf /var/cache/apk/* \
&& echo "<?php return array(); ?>" > /var/www/config-servers.php \
&& echo "<?php return array(); ?>" > /var/www/config-override.php \
&& chown nobody:nobody -R /var/www
COPY config.php /var/www/config.php
COPY nginx.conf /etc/nginx/nginx.conf
COPY servers-from-env.php /servers-from-env.php
EXPOSE 80
CMD php /servers-from-env.php && php-fpm && nginx
CMD php-fpm && nginx

View File

@ -2,29 +2,24 @@
# Dockerfile for phpvirtualbox-arm
#
FROM easypi/alpine-arm
MAINTAINER kev <noreply@easypi.pro>
FROM arm32v7/alpine:3
MAINTAINER EasyPi Software Foundation
ENV PHPVBOX_VERSION=5.2-1
ENV PHPVBOX_URL=https://github.com/phpvirtualbox/phpvirtualbox/archive/${PHPVBOX_VERSION}.tar.gz
WORKDIR /var/www
RUN set -xe \
&& apk add --no-cache bash nginx php5-fpm php5-cli php5-json php5-soap \
&& apk add --no-cache --virtual build-dependencies wget unzip \
&& apk add --no-cache --virtual build-dependencies curl tar \
&& touch /etc/php5/fpm.d/empty.conf \
&& wget --no-check-certificate https://sourceforge.net/projects/phpvirtualbox/files/latest/download -O phpvirtualbox.zip \
&& unzip phpvirtualbox.zip -d phpvirtualbox \
&& mkdir -p /var/www \
&& mv -v phpvirtualbox/*/* /var/www/ \
&& rm phpvirtualbox.zip \
&& rm phpvirtualbox/ -R \
&& curl -sSL ${PHPVBOX_URL} | tar xz --strip 1 \
&& apk del build-dependencies \
&& rm -rf /var/cache/apk/* \
&& echo "<?php return array(); ?>" > /var/www/config-servers.php \
&& echo "<?php return array(); ?>" > /var/www/config-override.php \
&& chown nobody:nobody -R /var/www
COPY config.php /var/www/config.php
COPY nginx.conf /etc/nginx/nginx.conf
COPY servers-from-env.php /servers-from-env.php
EXPOSE 80
CMD php /servers-from-env.php && php-fpm && nginx
CMD php-fpm && nginx

View File

@ -1,29 +1,19 @@
<?php
/**
* phpVirtualBox example configuration.
* @version $Id: config.php-example 452 2012-10-17 12:22:12Z imooreyahoo@gmail.com $
* phpVirtualBox example configuration.
* @version $Id: config.php-example 585 2015-04-04 11:39:31Z imoore76 $
*
* rename to config.php and edit as needed.
*
*/
class phpVBoxConfig {
public function __construct() {
// getting servers array
$this->servers = require __DIR__ . '/config-servers.php';
// getting override settings
$overrides = require __DIR__.'/config-override.php';
foreach ($overrides as $key => $value) {
$this->$key = $value;
}
}
/* Username / Password for system user that runs VirtualBox */
var $username = '';
var $password = '';
var $username = 'vbox';
var $password = 'pass';
/* SOAP URL of vboxwebsrv (not phpVirtualBox's URL) */
var $location = 'http://127.0.0.1:18083/';
var $location = 'http://vboxwebsrv:18083/';
/* Default language. See languages folder for more language options.
* Can also be changed in File -> Preferences -> Language in
@ -33,6 +23,8 @@ class phpVBoxConfig {
/* Set the standard VRDE Port Number / Range, e.g. 1010-1020 or 1027 */
var $vrdeports = '9000-9100';
/* Set the default VRDE address, e.g. 192.168.1.1 */
#var $vrdeaddress = '192.168.1.1';
/*
*
@ -43,27 +35,26 @@ class phpVBoxConfig {
// Multiple servers example config. Uncomment (remove /* and */) to use.
// Add ALL the servers you want to use. Even if you have the server set
// above. The default server will be the first one in the list.
/*
var $servers = array(
array(
'name' => 'London',
'username' => 'user',
'password' => 'pass',
'location' => 'http://192.168.1.1:18083/',
'authMaster' => true // Use this server for authentication
),
array(
'name' => '',
'username' => 'user2',
'password' => 'pass2',
'location' => 'http://192.168.1.2:18083/'
),
);
*/
var $servers = array(
array(
'name' => 'London',
'username' => 'user',
'password' => 'pass',
'location' => 'http://192.168.1.1:18083/',
'authMaster' => true // Use this server for authentication
),
array(
'name' => 'New York',
'username' => 'user2',
'password' => 'pass2',
'location' => 'http://192.168.1.2:18083/'
),
);
*/
// Disable authentication
var $noAuth = true;
#var $noAuth = true;
// Host / ip to use for console connections
#var $consoleHost = '192.168.1.40';
@ -80,7 +71,7 @@ class phpVBoxConfig {
// Max number of progress operations to keep in list
var $maxProgressList = 5;
// Change default preview aspect ratio to 1.
// Change default preview aspect ratio to 1.
// http://www.wikipedia.org/wiki/Aspect_ratio_%28image%29#Previous_and_presently_used_aspect_ratios
#var $previewAspectRatio = 1.6;
@ -88,24 +79,24 @@ class phpVBoxConfig {
#var $enableCustomIcons = true;
/*
Exclusively use phpVirtualBox's groups configuration rather than VirtualBox groups.
This has the following effects:
Exclusively use phpVirtualBox's groups configuration rather than VirtualBox groups.
This has the following effects:
*) Group changes made in phpVirtualBox will not be reflected in VirtualBox programs such as
VirtualBox and VBoxManage
*) Group changes will not affect which folder a VM is placed in
*) You can rename groups that contain running VMs and move / copy running VMs to groups
*/
#var $phpVboxGroups = true;
*) Group changes made in phpVirtualBox will not be reflected in VirtualBox programs such as
VirtualBox and VBoxManage
*) Group changes will not affect which folder a VM is placed in
*) You can rename groups that contain running VMs and move / copy running VMs to groups
*/
#var $phpVboxGroups = true;
/*
Allow to prompt deletion hard disk files on removal from Virtual Media Manager.
If this is not set, files are always kept. If this is set, you will be PROMPTED
to decide whether or not you would like to delete the hard disk file(s) when you
remove a hard disk from virtual media manager. You may still choose not to delete
the file when prompted.
*/
Allow to prompt deletion hard disk files on removal from Virtual Media Manager.
If this is not set, files are always kept. If this is set, you will be PROMPTED
to decide whether or not you would like to delete the hard disk file(s) when you
remove a hard disk from virtual media manager. You may still choose not to delete
the file when prompted.
*/
var $deleteOnRemove = true;
/*
@ -116,7 +107,7 @@ class phpVBoxConfig {
var $browserRestrictFiles = array('.iso','.vdi','.vmdk','.img','.bin','.vhd','.hdd','.ovf','.ova','.xml','.vbox','.cdr','.dmg','.ima','.dsk','.vfd');
// Restrict locations / folders
var $browserRestrictFolders = array('/'); // Or something like array('/home/vbox','/var/ISOs')
#var $browserRestrictFolders = array('D:\\','C:\\Users\\Ian'); // Or something like array('/home/vbox','/var/ISOs')
// Force use of local, web server based file browser instead of going through vboxwebsrv
#var $browserLocal = true;
@ -146,7 +137,7 @@ class phpVBoxConfig {
/*
* VM Memory warnings.
*
*
* If $vmMemoryStartLimitWarn is enabled, each time a VM is started through
* phpVirtualBox, it will check that the available host memory is greater than
* the base and video memory of the VM + 50MB (a little bit of overhead). If it
@ -158,8 +149,8 @@ class phpVBoxConfig {
* performed by $vmMemoryStartLimitWarn logic. For instance it may be a good
* idea to always have VM memory requirements + 100MB free. 100 is the default.
*/
#var $vmMemoryStartLimitWarn = true;
#var $vmMemoryOffset = 100;
#var $vmMemoryStartLimitWarn = true;
#var $vmMemoryOffset = 100;
/*
@ -181,7 +172,7 @@ class phpVBoxConfig {
var $nicMax = 4;
/* Enable advanced configuration items (normally hidden in the VirtualBox GUI)
* Note that some of these items may not be translated to languages other than English.
* Note that some of these items may not be translated to languages other than English.
*/
#var $enableAdvancedConfig = true;
@ -192,7 +183,7 @@ class phpVBoxConfig {
#var $startStopConfig = true;
// Authentication library.
var $authLib = 'Builtin';
// var $authLib = 'Builtin';
// VM ownership
#var $enforceVMOwnership = true;
@ -204,26 +195,29 @@ class phpVBoxConfig {
// Allow VDE network configuration. This must be supported by the underlying VirtualBox installation!
// If you do not know what VDE networking is - you do not need it, it is probably not supported by your
// VirtualBox installation and will cause errors if enabled.
#var $enableVDE = true;
#var $enableVDE = true;
// Disable setting SATA controllers port count to the max port number found when saving VMs.
#var $disableSataPortCount = true;
/* Enable Parallel Port configuration - EXPERIMENTAL
LPT support may or may not work for you.
!!! VirtualBox LPT support only works in Linux. !!!
*/
LPT support may or may not work for you.
!!! VirtualBox LPT support only works in Linux. !!!
*/
#var $enableLPTConfig = true;
/* Enable HardDisk IgnoreFlush configuration. This controls the "ExtraData" setting
* in "VBoxInternal/Devices/[controller type]/0/LUN#[x]/Config/IgnoreFlush". See
* Responding to guest IDE/SATA flush requests at:
* http://www.virtualbox.org/manual/ch12.html#idp12757424
*/
*/
#var $enableHDFlushConfig = true;
/*
* Event listener timeout in seconds. This is an advanced option that most people will
* probably not need to change.
*/
#var $eventListenerTimeout = 20;
/* END SETTINGS */
}

View File

@ -2,10 +2,8 @@ phpvirtualbox:
image: easypi/phpvirtualbox-arm
ports:
- "8888:80"
environment:
- ID_PORT_18083_TCP=remote-server:18083
- ID_NAME=Vbox
- ID_USER=username
- ID_PW=password
- CONF_browserRestrictFolders=/data,
volumes:
- ./data/config.php:/var/www/config.php:ro
extra_hosts:
- vboxwebsrv:x.x.x.x
restart: always

View File

@ -1,65 +0,0 @@
<?php
$servers = array();
$config_overrides = array();
// getting config overrides for all servers
foreach ($_SERVER as $key => $value) {
preg_match('/(.*?)(?:_ENV_|_)?CONF_(.+)/', $key, $matches);
if ($matches) {
$value= (strpos($value, ',')) ? split(',',$value) : $value;
$config_overrides[$matches[1]] = array($matches[2] => $value);
}
}
echo 'Exposing the following linked server instances:' . PHP_EOL;
// getting servers from linked vboxwebsrv containers or environment variables
foreach ($_SERVER as $key => $value) {
if (substr($key, -15) === '_PORT_18083_TCP') {
$prefix = substr($key, 0, -15);
$name = getenv($prefix . '_NAME');
$pos = strrpos($name, '/');
if ($pos !== false) {
$name = substr($name, $pos + 1);
}
if (!$name) {
$name = strtolower($prefix);
}
$name = ucfirst($name);
$location = 'http://' . str_replace('tcp://', '', $value) . '/';
echo '- ' . $name . ' (' . $location .')' . PHP_EOL;
$username = getenv($prefix.'_USER');
$password = getenv($prefix.'_PW');
if ($username == "") $username = 'username';
if ($password == "") $password = 'username';
$servers []= array_merge(array(
'name' => $name,
'username' => $username,
'password' => $password,
'authMaster' => true,
'location' => $location),
(array_key_exists($prefix, $config_overrides)) ? $config_overrides[$prefix] : array());
}
}
// check if there are any servers
if (!$servers) {
echo 'Error: No vboxwebsrv instance linked? Use "--link containername:myname"' . PHP_EOL;
echo 'Use environment variables if no vboxwebsrv containers are used!';
exit(1);
}
// put servers array to file
file_put_contents('/var/www/config-servers.php', '<?php return ' . var_export($servers, true) . ';');
if (array_key_exists("", $config_overrides)) {
// getting global config overrides
file_put_contents('/var/www/config-override.php','<?php return ' . var_export($config_overrides[""], true) . ';' );
}

View File

@ -1,29 +1,19 @@
<?php
/**
* phpVirtualBox example configuration.
* @version $Id: config.php-example 452 2012-10-17 12:22:12Z imooreyahoo@gmail.com $
* phpVirtualBox example configuration.
* @version $Id: config.php-example 585 2015-04-04 11:39:31Z imoore76 $
*
* rename to config.php and edit as needed.
*
*/
class phpVBoxConfig {
public function __construct() {
// getting servers array
$this->servers = require __DIR__ . '/config-servers.php';
// getting override settings
$overrides = require __DIR__.'/config-override.php';
foreach ($overrides as $key => $value) {
$this->$key = $value;
}
}
/* Username / Password for system user that runs VirtualBox */
var $username = '';
var $password = '';
var $username = 'vbox';
var $password = 'pass';
/* SOAP URL of vboxwebsrv (not phpVirtualBox's URL) */
var $location = 'http://127.0.0.1:18083/';
var $location = 'http://vboxwebsrv:18083/';
/* Default language. See languages folder for more language options.
* Can also be changed in File -> Preferences -> Language in
@ -33,6 +23,8 @@ class phpVBoxConfig {
/* Set the standard VRDE Port Number / Range, e.g. 1010-1020 or 1027 */
var $vrdeports = '9000-9100';
/* Set the default VRDE address, e.g. 192.168.1.1 */
#var $vrdeaddress = '192.168.1.1';
/*
*
@ -43,27 +35,26 @@ class phpVBoxConfig {
// Multiple servers example config. Uncomment (remove /* and */) to use.
// Add ALL the servers you want to use. Even if you have the server set
// above. The default server will be the first one in the list.
/*
var $servers = array(
array(
'name' => 'London',
'username' => 'user',
'password' => 'pass',
'location' => 'http://192.168.1.1:18083/',
'authMaster' => true // Use this server for authentication
),
array(
'name' => '',
'username' => 'user2',
'password' => 'pass2',
'location' => 'http://192.168.1.2:18083/'
),
);
*/
var $servers = array(
array(
'name' => 'London',
'username' => 'user',
'password' => 'pass',
'location' => 'http://192.168.1.1:18083/',
'authMaster' => true // Use this server for authentication
),
array(
'name' => 'New York',
'username' => 'user2',
'password' => 'pass2',
'location' => 'http://192.168.1.2:18083/'
),
);
*/
// Disable authentication
var $noAuth = true;
#var $noAuth = true;
// Host / ip to use for console connections
#var $consoleHost = '192.168.1.40';
@ -80,7 +71,7 @@ class phpVBoxConfig {
// Max number of progress operations to keep in list
var $maxProgressList = 5;
// Change default preview aspect ratio to 1.
// Change default preview aspect ratio to 1.
// http://www.wikipedia.org/wiki/Aspect_ratio_%28image%29#Previous_and_presently_used_aspect_ratios
#var $previewAspectRatio = 1.6;
@ -88,24 +79,24 @@ class phpVBoxConfig {
#var $enableCustomIcons = true;
/*
Exclusively use phpVirtualBox's groups configuration rather than VirtualBox groups.
This has the following effects:
Exclusively use phpVirtualBox's groups configuration rather than VirtualBox groups.
This has the following effects:
*) Group changes made in phpVirtualBox will not be reflected in VirtualBox programs such as
VirtualBox and VBoxManage
*) Group changes will not affect which folder a VM is placed in
*) You can rename groups that contain running VMs and move / copy running VMs to groups
*/
#var $phpVboxGroups = true;
*) Group changes made in phpVirtualBox will not be reflected in VirtualBox programs such as
VirtualBox and VBoxManage
*) Group changes will not affect which folder a VM is placed in
*) You can rename groups that contain running VMs and move / copy running VMs to groups
*/
#var $phpVboxGroups = true;
/*
Allow to prompt deletion hard disk files on removal from Virtual Media Manager.
If this is not set, files are always kept. If this is set, you will be PROMPTED
to decide whether or not you would like to delete the hard disk file(s) when you
remove a hard disk from virtual media manager. You may still choose not to delete
the file when prompted.
*/
Allow to prompt deletion hard disk files on removal from Virtual Media Manager.
If this is not set, files are always kept. If this is set, you will be PROMPTED
to decide whether or not you would like to delete the hard disk file(s) when you
remove a hard disk from virtual media manager. You may still choose not to delete
the file when prompted.
*/
var $deleteOnRemove = true;
/*
@ -116,7 +107,7 @@ class phpVBoxConfig {
var $browserRestrictFiles = array('.iso','.vdi','.vmdk','.img','.bin','.vhd','.hdd','.ovf','.ova','.xml','.vbox','.cdr','.dmg','.ima','.dsk','.vfd');
// Restrict locations / folders
var $browserRestrictFolders = array('/'); // Or something like array('/home/vbox','/var/ISOs')
#var $browserRestrictFolders = array('D:\\','C:\\Users\\Ian'); // Or something like array('/home/vbox','/var/ISOs')
// Force use of local, web server based file browser instead of going through vboxwebsrv
#var $browserLocal = true;
@ -146,7 +137,7 @@ class phpVBoxConfig {
/*
* VM Memory warnings.
*
*
* If $vmMemoryStartLimitWarn is enabled, each time a VM is started through
* phpVirtualBox, it will check that the available host memory is greater than
* the base and video memory of the VM + 50MB (a little bit of overhead). If it
@ -158,8 +149,8 @@ class phpVBoxConfig {
* performed by $vmMemoryStartLimitWarn logic. For instance it may be a good
* idea to always have VM memory requirements + 100MB free. 100 is the default.
*/
#var $vmMemoryStartLimitWarn = true;
#var $vmMemoryOffset = 100;
#var $vmMemoryStartLimitWarn = true;
#var $vmMemoryOffset = 100;
/*
@ -181,7 +172,7 @@ class phpVBoxConfig {
var $nicMax = 4;
/* Enable advanced configuration items (normally hidden in the VirtualBox GUI)
* Note that some of these items may not be translated to languages other than English.
* Note that some of these items may not be translated to languages other than English.
*/
#var $enableAdvancedConfig = true;
@ -192,7 +183,7 @@ class phpVBoxConfig {
#var $startStopConfig = true;
// Authentication library.
var $authLib = 'Builtin';
// var $authLib = 'Builtin';
// VM ownership
#var $enforceVMOwnership = true;
@ -204,26 +195,29 @@ class phpVBoxConfig {
// Allow VDE network configuration. This must be supported by the underlying VirtualBox installation!
// If you do not know what VDE networking is - you do not need it, it is probably not supported by your
// VirtualBox installation and will cause errors if enabled.
#var $enableVDE = true;
#var $enableVDE = true;
// Disable setting SATA controllers port count to the max port number found when saving VMs.
#var $disableSataPortCount = true;
/* Enable Parallel Port configuration - EXPERIMENTAL
LPT support may or may not work for you.
!!! VirtualBox LPT support only works in Linux. !!!
*/
LPT support may or may not work for you.
!!! VirtualBox LPT support only works in Linux. !!!
*/
#var $enableLPTConfig = true;
/* Enable HardDisk IgnoreFlush configuration. This controls the "ExtraData" setting
* in "VBoxInternal/Devices/[controller type]/0/LUN#[x]/Config/IgnoreFlush". See
* Responding to guest IDE/SATA flush requests at:
* http://www.virtualbox.org/manual/ch12.html#idp12757424
*/
*/
#var $enableHDFlushConfig = true;
/*
* Event listener timeout in seconds. This is an advanced option that most people will
* probably not need to change.
*/
#var $eventListenerTimeout = 20;
/* END SETTINGS */
}

View File

@ -2,10 +2,8 @@ phpvirtualbox:
image: vimagick/phpvirtualbox
ports:
- "8888:80"
environment:
- ID_PORT_18083_TCP=remote-server:18083
- ID_NAME=Vbox
- ID_USER=username
- ID_PW=password
- CONF_browserRestrictFolders=/data,
volumes:
- ./data/config.php:/var/www/config.php:ro
extra_hosts:
- vboxwebsrv:x.x.x.x
restart: always

View File

@ -1,65 +0,0 @@
<?php
$servers = array();
$config_overrides = array();
// getting config overrides for all servers
foreach ($_SERVER as $key => $value) {
preg_match('/(.*?)(?:_ENV_|_)?CONF_(.+)/', $key, $matches);
if ($matches) {
$value= (strpos($value, ',')) ? split(',',$value) : $value;
$config_overrides[$matches[1]] = array($matches[2] => $value);
}
}
echo 'Exposing the following linked server instances:' . PHP_EOL;
// getting servers from linked vboxwebsrv containers or environment variables
foreach ($_SERVER as $key => $value) {
if (substr($key, -15) === '_PORT_18083_TCP') {
$prefix = substr($key, 0, -15);
$name = getenv($prefix . '_NAME');
$pos = strrpos($name, '/');
if ($pos !== false) {
$name = substr($name, $pos + 1);
}
if (!$name) {
$name = strtolower($prefix);
}
$name = ucfirst($name);
$location = 'http://' . str_replace('tcp://', '', $value) . '/';
echo '- ' . $name . ' (' . $location .')' . PHP_EOL;
$username = getenv($prefix.'_USER');
$password = getenv($prefix.'_PW');
if ($username == "") $username = 'username';
if ($password == "") $password = 'username';
$servers []= array_merge(array(
'name' => $name,
'username' => $username,
'password' => $password,
'authMaster' => true,
'location' => $location),
(array_key_exists($prefix, $config_overrides)) ? $config_overrides[$prefix] : array());
}
}
// check if there are any servers
if (!$servers) {
echo 'Error: No vboxwebsrv instance linked? Use "--link containername:myname"' . PHP_EOL;
echo 'Use environment variables if no vboxwebsrv containers are used!';
exit(1);
}
// put servers array to file
file_put_contents('/var/www/config-servers.php', '<?php return ' . var_export($servers, true) . ';');
if (array_key_exists("", $config_overrides)) {
// getting global config overrides
file_put_contents('/var/www/config-override.php','<?php return ' . var_export($config_overrides[""], true) . ';' );
}