initial commit of file from CVS for smeserver-phpvirtualbox on Sat Sep 7 20:54:21 AEST 2024

This commit is contained in:
Trevor Batley
2024-09-07 20:54:21 +10:00
parent 8a9fe01cda
commit a8d97be1bd
26 changed files with 1202 additions and 2 deletions

View File

@@ -0,0 +1 @@
DefineExternalGroup ugroup environment /usr/bin/unixgroup

View File

@@ -0,0 +1,51 @@
{
my $status = $phpvirtualbox{'status'} || "disabled";
return " # phpvirtualbox is disabled in this VirtualHost"
unless $status eq 'enabled';
$OUT = "";
my $satisfy = 'all';
my $name = $phpvirtualbox{'Name'} || 'phpvirtualbox';
my @phpvboxusers = split(",", ($phpvirtualbox{'Users'} || "") );
my @phpvboxgroups = split(",", ($phpvirtualbox{'userGroups'} || "") );
my $alias = ($phpvirtualbox{'URL'} || 'phpvirtualbox');
$OUT .= "#------------------------------------------------------------\n";
$OUT .= "# phpvirtualbox - $name\n";
$OUT .= "#------------------------------------------------------------\n";
$OUT .= "Alias /$alias /opt/phpvirtualbox\n";
$OUT .= "\n";
if ($phpvirtualbox{'authtype'} ne 'disabled') {
$OUT .= "<Location /$alias>\n";
if ($phpvirtualbox{'authtype'} eq 'WebAuth') {
$OUT .= " AuthName \"$name\"\n";
$OUT .= " AuthType Basic\n";
$OUT .= " AuthBasicProvider external\n";
$OUT .= " AuthExternal pwauth\n";
$OUT .= " GroupExternal ugroup\n";
$OUT .= " Require user admin @phpvboxusers\n";
$OUT .= " Require external-group @phpvboxgroups\n";
} elsif ($phpvirtualbox{'authtype'} eq 'httpd_LDAP') {
$OUT .= " AuthName \"$name\"\n";
$OUT .= " AuthType Basic\n";
$OUT .= " AuthBasicProvider ldap\n";
$OUT .= " AuthLDAPURL = ldap://localhost/0=$smb{'Workgroup'},%uid\n";
$OUT .= " Require ldap-user admin @phpvboxusers\n";
foreach my $group (@phpvboxgroups) {
$OUT .= " Require ldap-group cn=@group, o=*\n";
}
}
$OUT .= "</Location>\n";
$OUT .= "\n";
}
$OUT .= "<Directory /opt/phpvirtualbox>\n";
$OUT .= " SSLRequireSSL\n";
$OUT .= " Require ip $localAccess\n";
$OUT .= " <FilesMatch .php\$>\n";
$OUT .= " SetHandler \"proxy:unix:/var/run/php-fpm/php74-phpvirtualbox.sock|fcgi://localhost\"\n";
$OUT .= " </FilesMatch>\n";
$OUT .= " AddType application/x-httpd-php .php\n";
$OUT .= "</Directory>\n";
}

View File

@@ -0,0 +1,11 @@
{
if ($port ne "443")
{
$OUT .= " ## Redirect phpvirtualbox Address to Secure Address\n";
$OUT .= "RewriteEngine on\n";
$OUT .= "RewriteRule ^/phpvirtualbox https://%{HTTP_HOST}/phpvirtualbox\n";
if ((exists $phpvirtualbox{'URL'}) && ($phpvirtualbox{'URL'} ne ''))
{ $OUT .= "RewriteRule ^/$phpvirtualbox{'URL'} https://%{HTTP_HOST}/$phpvirtualbox{'URL'}\n"; }
$OUT .= "##End of redirection\n";
}
}

View File

@@ -0,0 +1,65 @@
{
my $phpversion = ($phpvirtulabox{Version} || '74');
if ($PHP_VERSION eq $phpversion) {
if (($phpvirtualbox{'status'} || 'disabled') eq 'enabled') {
my $max_upload_size = ($phpvirtualbox{MaxUploadSize} || '4096');
$max_upload_size .= 'M' if ($max_upload_size =~ m/^\d+$/);
my $memory_limit = ($phpvirtualbox{MemoryLimit} || '500M');
$memory_limit .= 'M' if ($memory_limit =~ m/^\d+$/);
my $open_basedir= $phpvirtualbox{PHPBaseDir} || '';
my $id = 'phpvirtualbox';
$open_basedir = "/opt/phpvirtualbox/:/var/log/php/$id/:/var/lib/php/$id/:$open_basedir";
my $max_children = $phpvirtualbox{'PHPmaxChildren'} || 20;
my $min_spare_servers = $phpvirtualbox{'PHPminServers'} || 4;
my $start_servers = $phpvirtualbox{'PHPstartServers'} || 6;
my $max_spare_servers = $phpvirtualbox{'PHPmaxServers'} || 8;
my $max_requests = $phpvirtualbox{'PHPmaxRequests'} || 1000;
$min_spare_servers = ( $min_spare_servers > $max_spare_servers ) ? printf("%.0f",$max_spare_servers/2) : $min_spare_servers;
$start_servers = ( $start_servers > $max_spare_servers ) ? printf("%.0f", $max_spare_servers /2 + $min_spare_servers/2 ) : $start_servers;
$OUT .=<<_EOF;
[php$PHP_VERSION-$id]
user = www
group = www
listen.owner = root
listen.group = www
listen.mode = 0660
listen = /var/run/php-fpm/php$PHP_VERSION-$id.sock
pm = dynamic
pm.max_children = $max_children
pm.start_servers = $start_servers
pm.min_spare_servers = $min_spare_servers
pm.max_spare_servers = $max_spare_servers
pm.max_requests = $max_requests
php_admin_value[session.save_path] = /var/lib/php/$id/session
php_admin_value[session.gc_maxlifetime] = 86400
php_admin_value[opcache.file_cache] = /var/lib/php/$id/opcache
php_admin_value[upload_tmp_dir] = /var/lib/php/$id/tmp
php_admin_value[error_log] = /var/log/php/$id/error.log
slowlog = /var/log/php/$id/slow.log
php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f php@{ $DomainName }
php_admin_flag[display_errors] = off
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = $memory_limit
php_admin_value[max_execution_time] = 3600
php_admin_value[post_max_size] = $max_upload_size
php_admin_value[upload_max_filesize] = $max_upload_size
php_admin_value[disable_functions] = system, show_source, symlink, dl, passthru, phpinfo, escapeshellarg, escapeshellcmd
php_admin_value[open_basedir] = $open_basedir
php_admin_flag[allow_url_fopen] = on
php_admin_flag[file_uploads] = on
php_admin_flag[session.cookie_httponly] = on
php_admin_flag[allow_url_include] = off
php_admin_value[session.save_handler] = files
php_admin_flag[output_buffering] = off
php_admin_flag[eaccelerator.enable] = on
_EOF
} else {
$OUT .= '; phpvirtualbox is disabled';
}
}
}

View File

@@ -0,0 +1,55 @@
{
if ($phpvirtualbox{'status'} ne 'enabled') {
return;
}
my $samba = ($phpvirtualbox{'samba'} || 'all');
if ($samba ne 'all' && $samba ne 'adminUser') {
return;
}
my $validusers = '';
my @phpvboxusers = split(",", ($phpvirtualbox{'Users'} || "") );
my @phpvboxgroups = split(",", ($phpvirtualbox{'userGroups'} || "") );
if ($samba eq 'all' || $samba eq 'adminUser') {
if ($phpvirtualbox{'adminUser'}) {
$validusers = "$phpvirtualbox{'adminUser'}";
}
}
if ($samba eq 'all') {
if ($phpvirtualbox{'Users'}) {
foreach my $user (@phpvboxusers) {
if ($validusers) {
$validusers .= ",$user";
} else {
$validusers = "$user";
}
}
}
if ($phpvirtualbox{'userGroups'}) {
foreach my $group (@phpvboxgroups) {
if ($validusers) {
$validusers .= ",\@$group";
} else {
$validusers = "\@$group";
}
}
}
}
$OUT .=<<_VBOX;
[virtualbox]
comment = virtualbox ISO directory
path = /opt/vbox/ISOs
read only = no
writable = yes
printable = no
inherit permissions = yes
create mode = 0777
_VBOX
if ($validusers) {
$OUT .= "valid users = $validusers\n";
}
}

View File

@@ -0,0 +1,90 @@
{
# domain stuff
my $baseDN = esmith::util::ldapBase($DomainName);
my $workgroup = $smb{'Workgroup'};
# vboxweb parameters
my $username = (${'vboxweb-service'}{'user'} || 'vbox');
my $password = ${'vboxweb-service'}{'password'};
my $location = ("http://${'vboxweb-service'}{'access'}:${'vboxweb-service'}{'TCPPort'}/" || "http://127.0.0.1:18083/");
# phpvirtualbox parameters for users
my $adminUser = ($phpvirtualbox{'adminUser'} || 'admin');
my $adminGroup = ($phpvirtualbox{'adminGroup'} || 'admin');
my $userGroups = $phpvirtualbox{'userGroups'};
# phpvirtualbox config parameters
my $language = ($phpvirtualbox{'language'} || 'en');
my $vrdeports = ($phpvirtualbox{'vrdeports'} || '19000-19100');
my $maxProgressList = ($phpvirtualbox{'maxProgressList'} || 5);
my $deleteOnRemove = ($phpvirtualbox{'deleteOnRemove'} || true);
my $browserRestrictFiles = ($phpvirtualbox{'browserRestrictFiles'} || "'.iso','.vdi','.vmdk','.img','.bin','.vhd','.hdd','.ovf','.ova','.xml','.vbox','.cdr','.dmg','.ima','.dsk','.vfd'");
my $browserRestrictFolders = ($phpvirtualbox{'browserRestrictFolders'} || "'/opt/vbox/ISOs','/opt/vbox/VMs'");
my $hostMemInfoRefreshInterval = ($phpvirtualbox{'hostMemInfoRefreshInterval'} || 5);
my $consoleResolutions = ($phpvirtualbox{'consoleResolutions'} || "'640x480','800x600','1024x768','1280x720','1440x900'");
my $consoleKeyboardLayout = ($phpvirtualbox{'consoleKeyboardLayout'} || 'EN');
my $nicMax = ($phpvirtualbox{'nicMax'} || 4);
# working
my @phpvboxusers = split(",", ($phpvirtualbox{'Users'} || "") );
my @phpvboxgroups = split(",", ($phpvirtualbox{'userGroups'} || "") );
$OUT .=<<_PARMS;
class phpVBoxConfig {
# default paramaters
var \$username = '$username';
var \$password = '$password';
var \$location = '$location';
var \$language = '$language';
var \$vrdeports = '$vrdeports';
var \$maxProgressList = $maxProgressList;
var \$deleteOnRemove = $deleteOnRemove;
var \$browserRestrictFiles = array($browserRestrictFiles);
var \$browserRestrictFolders = array($browserRestrictFolders);
var \$hostMemInfoRefreshInterval = $hostMemInfoRefreshInterval;
var \$consoleResolutions = array($consoleResolutions);
var \$consoleKeyboardLayout = '$consoleKeyboardLayout';
var \$nicMax = $nicMax;
# authentication parameters
_PARMS
# authentication stuff
my $authtype = ($phpvirtualbox{'authType'} || 'WebAuth');
if ($authtype eq 'Builtin') {
$OUT .= "var \$authLib = 'Builtin';\n";
} elsif ($authtype eq 'WebAuth') {
$OUT .= "var \$authLib = 'WebAuth';\n";
$OUT .= "var \$authConfig = array('adminUser' => '$adminUser');\n";
} elsif ($authtype eq 'LDAP') {
$OUT .= "var \$authLib = 'LDAP';\n";
$OUT .= "var \$authConfig = array(\n";
$OUT .= " 'host' => '127.0.0.1',\n";
$OUT .= " 'bind_dn' => 'uid=%s, ou=Users, $baseDN',\n";
$OUT .= " 'adminUser' => $adminUser);\n";
} elsif ($authtype eq 'AD' && $workgroup ) {
$OUT .= "var \$authLib = 'ActiveDirectory';\n";
$OUT .= "var \$authConfig = array(\n";
$OUT .= " 'host' => '127.0.0.1',\n";
$OUT .= " 'domain' => '$workgroup',\n";
$OUT .= " 'admin_group' => '$adminGroup'";
if ($userGroups) {
foreach my $group (@phpvboxgroups) {
$OUT .= ",\n";
$OUT .= " 'user_group' => '$group'";
}
};
$OUT .= ");\n";
} else {
$OUT .= "var \$noAuth=true;\n";
}
# allow inclusion of any generic parameter stored in config db for phpvirtualbox
$OUT .= "# additional parameters defined in configuration DB\n";
my @stdparms = qw(type status Name samba Users userGroups adminUser adminGroup authtype language vrdeports maxProgressList deleteOnRemove browserRestrictFiles browserRestrictFolders consolresolutions hostMemInfoRefreshInterval consoleKeyboardLayout nicMax);
while (my ($param, $value) = each (%phpvirtualbox)) {
next if ( $param ~~ @stdparms );
$OUT .= "var \$$param = $value;\n";
}
$OUT .= "}\n";
}

View File

@@ -0,0 +1 @@
/etc/e-smith/templates-default/template-begin-php