diff -Nur smeserver-php-3.0.0.old/createlinks smeserver-php-3.0.0/createlinks --- smeserver-php-3.0.0.old/createlinks 2020-11-08 21:14:58.600000000 -0500 +++ smeserver-php-3.0.0/createlinks 2020-11-08 21:29:38.439000000 -0500 @@ -105,3 +105,9 @@ $service = "php-fpm.service"; safe_symlink("../$service", "root/usr/lib/systemd/system/multi-user.target.wants/$service"); safe_symlink("../$service", "root/usr/lib/systemd/system/sme-server.target.wants/$service"); + +#webapps +$event = 'webapps-update'; +templates2events("/etc/my.cnf", $event); + +safe_symlink("start", "root/etc/e-smith/events/$event/services2adjust/mysql.init"); diff -Nur smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/81SimpleVHosts smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/81SimpleVHosts --- smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/81SimpleVHosts 1969-12-31 19:00:00.000000000 -0500 +++ smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/81SimpleVHosts 2020-11-08 21:22:23.367000000 -0500 @@ -0,0 +1,35 @@ +{ + $OUT = ''; + + use esmith::DomainsDB; + + my $db = esmith::DomainsDB->open_ro; + unless ($db){ + warn "Couldn't open domains DB in VirtualHosts template fragment"; + return; + } + + my @vhosts = $db->get_all_by_prop('type' => 'vhost'); + foreach my $vhost (@vhosts) { + my $templatePath = $vhost->prop('TemplatePath') || 'WebAppVirtualHost'; + foreach my $port ($httpPort, $httpsPort){ + my %virtualHost = ( + ipAddress => '0.0.0.0', + port => $port, + localAccess => $localAccess, + externalSSLAccess => $externalSSLAccess, + domain => $vhost, + httpPort => $httpPort, + httpsPort => $httpsPort + ); + + $OUT .= esmith::templates::processTemplate ( + { + MORE_DATA => \%virtualHost, + TEMPLATE_PATH => + "/etc/httpd/conf/httpd.conf/$templatePath", + OUTPUT_TYPE => 'string', + }); + } + } +} diff -Nur smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/00Setup smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/00Setup --- smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/00Setup 1969-12-31 19:00:00.000000000 -0500 +++ smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/00Setup 2017-10-01 09:19:18.000000000 -0400 @@ -0,0 +1,9 @@ +{ + use esmith::DomainsDB; + # Convert the passed hash for the domain object back into an object. + $domain = bless \%domain, 'esmith::DB::db::Record'; + + # Make scalars from some of the properties of the domain + $virtualHost = $domain->key; + $OUT = ""; +} diff -Nur smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/02ServerName smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/02ServerName --- smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/02ServerName 1969-12-31 19:00:00.000000000 -0500 +++ smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/02ServerName 2017-10-01 09:19:18.000000000 -0400 @@ -0,0 +1 @@ + ServerName {$virtualHost} diff -Nur smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/03ServerAlias smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/03ServerAlias --- smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/03ServerAlias 1969-12-31 19:00:00.000000000 -0500 +++ smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/03ServerAlias 2017-10-01 09:19:18.000000000 -0400 @@ -0,0 +1,13 @@ + ServerAlias { + + use esmith::HostsDB; + use esmith::DomainsDB; + my $hdb = esmith::HostsDB->open_ro(); + my %domains = map { $_->key => 1 } esmith::DomainsDB->open_ro->domains; + my @hosts = grep { + my $h = $_; + ($h->prop('HostType') eq 'Self') && !$domains{$h->key} + } $hdb->get_hosts_by_domain($virtualHost); + $OUT = join " ", map { $_->key } @hosts; +} + diff -Nur smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/25SSLDirectives smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/25SSLDirectives --- smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/25SSLDirectives 1969-12-31 19:00:00.000000000 -0500 +++ smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/25SSLDirectives 2020-11-08 21:23:48.335000000 -0500 @@ -0,0 +1,28 @@ +{ + my $ssl = $domain->prop('RequireSSL') || 'disabled'; + my $auth = $domain->prop('Authentication') || 'none'; + + if (($httpsPort eq $port){ + $OUT .= " SSLEngine on\n"; + } + elsif (($ssl =~ m/^enabled|yes|on|1$/i) || ($auth =~ /^LemonLDAP/)){ + $OUT .=<<'EOF'; + RewriteEngine on + RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/.* + RewriteRule ^/(.*|$) https://%{HTTP_HOST}/$1 [L,R] + +EOF + } + elsif ($ssl =~ m#/#){ + $OUT .= " RewriteEngine on\n"; + foreach my $loc (split(/[;,]/, $ssl)){ + $OUT .= " # Rewriting $loc to use SSL\n"; + $loc =~ s#^/##; + $OUT .= " RewriteRule ^/$loc(/.*|\$) https://%\{HTTP_HOST\}/$loc\$1 \[L,R\]\n"; + } + } + else{ + $OUT .= ''; + } +} + diff -Nur smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/26RewriteTraceAndTrack smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/26RewriteTraceAndTrack --- smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/26RewriteTraceAndTrack 1969-12-31 19:00:00.000000000 -0500 +++ smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/26RewriteTraceAndTrack 2017-10-01 09:19:18.000000000 -0400 @@ -0,0 +1,8 @@ +{ + $OUT =<<'HERE'; + RewriteEngine on + RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) + RewriteRule .* - [F] +HERE +} + diff -Nur smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/40ApacheIconAlias smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/40ApacheIconAlias --- smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/40ApacheIconAlias 1969-12-31 19:00:00.000000000 -0500 +++ smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/40ApacheIconAlias 2017-10-01 09:19:18.000000000 -0400 @@ -0,0 +1,13 @@ +{ +my $alias = $domain->prop('IconAlias') || 'enabled'; +$OUT .= ''; + +unless ($alias =~ m/disabled|off|no|0/i){ + $OUT .=<<'EOF'; + + # alias for Apache icons + Alias /icons/ /var/www/icons/ + +EOF +} +} diff -Nur smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/50Content smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/50Content --- smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/50Content 1969-12-31 19:00:00.000000000 -0500 +++ smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/50Content 2020-11-08 21:26:33.645000000 -0500 @@ -0,0 +1,166 @@ +{ + +use esmith::util; +my $base = esmith::util::ldapBase($DomainName); + +my $name = $domain->key; +my $target = $domain->prop('ProxyPassTarget') || ''; +my $proxy_acme = $domain->prop('ProxyPassACMEChallenges') || 'disabled'; +my $redirect = $domain->prop('Redirect') || ''; +my $rewrite = $domain->prop('Rewrite') || ''; +my $allow = $domain->prop('AllowHosts') || ''; +my $preserve = $domain->prop('ProxyPreserveHost') || 'no'; +my $keepalive = $domain->prop('ProxyNoKeepAlive') || 'no'; +my $timeout = $domain->prop('Timeout') || ''; +my $index = $domain->prop('DirectoryIndex') || ''; +my @alias = split /[,;]/, ($domain->prop('Alias') || ''); +my @env = split(/[;,]/, ($domain->prop('SetEnv') || '')); +my $auth = $domain->prop('Authentication') || 'none'; +my @groups = split(/[;,]/, ($domain->prop('AllowGroups') || '')); +my $ssl_port = $httpsPort; +my $proto = ($port eq $ssl_port ) ? 'https' : 'http'; +my $socketio = $domain->prop('ProxySocketIO') || 'disabled'; +my @proxyrules = split /[,;]/, ($domain->prop('ProxyPassRules') || ''); + +# Custom proxypass rules +foreach my $rule (@proxyrules){ + my ($from, $to) = split /=/, $rule; + $OUT .= " ProxyPass $from $to\n"; +} + +if (@proxyrules > 0 || $target =~ m|https?://[\d\w\.\-/]*|){ + $OUT .= " ProxyPreserveHost on\n" if ($preserve eq 'yes'); + $OUT .= " RequestHeader set X-Forwarded-Proto \"$proto\"\n"; +} + +# ProxyPass ? +if ($target =~ m|https?://[\d\w\.\-/]*|){ + $OUT .= " SetEnv proxy-nokeepalive 1\n" if ($keepalive eq 'yes'); + if ($proxy_acme eq 'only'){ + $OUT .= " ProxyPass /.well-known/acme-challenge/ $target" . ".well-known/acme-challenge/\n"; + $OUT .= " ProxyPassReverse / $target" . ".well-known/acme-challenge/\n"; + } + else{ + if ($proxy_acme eq 'disabled'){ + $OUT .= " ProxyPass /.well-known/acme-challenge/ !\n"; + } + if ($socketio eq 'enabled'){ + # Try to handle Socket.IO + my $wstarget = $target; + $wstarget =~ s/^http:/ws:/; + $wstarget =~ s/^https:/wss:/; + $OUT .=<<"_EOF" + + + RewriteCond %{QUERY_STRING} transport=polling [NC] + RewriteRule /socket.io/(.*) ${target}socket.io/\$1 [P,L] + + ProxyPass /socket.io/socket.io.js ${target}socket.io/socket.io.js + ProxyPassReverse /socket.io/socket.io.js ${target}socket.io/socket.io.js + + ProxyPass /socket.io/ ${wstarget}socket.io/ + ProxyPassReverse /socket.io/ ${wstarget}socket.io/ + + +_EOF + } + $OUT .= " ProxyPass / $target\n"; + $OUT .= " ProxyPassReverse / $target\n"; + } +} +# Rewrite ? +elsif ($rewrite =~ m|https?://[\d\w\.\-/]*|){ + $OUT .=<<"HERE"; + + RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/.* + RewriteRule /(.*|\$) $rewrite/\$1 [L,R] + +HERE +} +# Redirect ? +elsif ($redirect =~ m|https?://[\d\w\.\-/]*|){ + $OUT .=<<"HERE"; + + RedirectMatch permanent ^/(.*|\$) $redirect/\$1 + +HERE +} +else{ + my $root = $domain->prop('DocumentRoot') || + '/home/e-smith/files/ibays/Primary/html'; + + $OUT .= " DocumentRoot $root\n"; +} + +if ($timeout =~ m/^\d+$/){ + $OUT .= " Timeout $timeout\n"; +} + +if ($index ne ''){ + $OUT .= " DirectoryIndex $index\n"; +} + +foreach (@alias){ + next unless $_ =~ m/^(\/\w+)=(\/.*)/; + my ($al, $targ) = ($1, $2); + next unless (-e $2); + $OUT .= " Alias $al $targ\n"; +} + +foreach (@env){ + next unless (m/^(.*)=(.*)$/); + $OUT .= " SetEnv $1 $2\n"; +} + +if ($allow ne ''){ + if ($allow eq 'local'){ + $allow = "$localAccess $externalSSLAccess"; + } + else{ + $allow =~ s/[,;]/ /g; + } + $OUT .=<<"EOF"; + + + Order deny,allow + Deny from all + Allow from $allow + + + + Allow from all + + +EOF +} + +if ($auth =~ m/^Basic$/i){ + my $require = "Require valid-user"; + if (scalar(@groups) > 0){ + $require = "Require ldap-group "; + $require .= "cn=$_,ou=Groups,$base " foreach(@groups); + } + + $OUT .=<<"EOF"; + SetEnvIf %{Request_URI} "^/\.well\-known/acme\-challenge" granted=1 + + + Order deny,allow + Satisfy any + Deny from all + Allow from env=granted + AuthType basic + AuthName "$name" + AuthBasicProvider ldap + AuthLDAPURL ldap://localhost/ou=Users,$base?uid + AuthLDAPGroupAttribute memberUid + AuthLDAPGroupAttributeIsDN off + $require + + +EOF + +} + +} + diff -Nur smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/template-begin smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/template-begin --- smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/template-begin 1969-12-31 19:00:00.000000000 -0500 +++ smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/template-begin 2017-10-01 09:19:18.000000000 -0400 @@ -0,0 +1,2 @@ + + diff -Nur smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/template-end smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/template-end --- smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/template-end 1969-12-31 19:00:00.000000000 -0500 +++ smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/WebAppVirtualHost/template-end 2017-10-01 09:19:18.000000000 -0400 @@ -0,0 +1,2 @@ + +