# This is not a standalone script. It provides common functions to server-*.sh scripts function installBase { local urlBaseTrusted="$1" local urlBaseSandbox="$2" local urlBasePublic="$3" yum -y install epel-release curl --silent --location https://rpm.nodesource.com/setup_11.x | bash - cat > /etc/yum.repos.d/mongodb-org.repo < server/config/production.yaml <> server/services/workers/reports/config/production.yaml < /etc/logrotate.d/mailtrain /var/log/mailtrain.log { daily rotate 12 compress delaycompress missingok notifempty copytruncate nomail } EOM # Set up systemd service script cp setup/mailtrain-centos7.service /etc/systemd/system/mailtrain.service systemctl enable mailtrain.service # Start the service systemctl daemon-reload systemctl start mailtrain.service echo "Success! Open http://$urlBaseTrusted/" echo "If this is a fresh installation, log in as admin:test". If this is an upgrade over existing Mailtrain DB, use the original admin password." } function installHttps { local hostTrusted="$1" local portTrusted="$2" local hostSandbox="$3" local portSandbox="$4" local hostPublic="$5" local portPublic="$6" local certificateFile="$7" local certificateKey="$8" local caChainFile="$9" local skipHttpRedirect="$10" echo > /etc/httpd/conf.d/mailtrain.conf if [ "$skipHttpRedirect" = "--skip-http-redirect" ]; then cat >> /etc/httpd/conf.d/mailtrain.conf < ServerName ${hostTrusted} ServerSignature Off RewriteEngine On RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent] ErrorLog logs/${hostTrusted}_redirect_error.log LogLevel warn ServerName ${hostSandbox} ServerSignature Off RewriteEngine On RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent] ErrorLog logs/${hostSandbox}_redirect_error.log LogLevel warn ServerName ${hostPublic} ServerSignature Off RewriteEngine On RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent] ErrorLog logs/${hostPublic}_redirect_error.log LogLevel warn EOT fi cat >> /etc/httpd/conf.d/mailtrain.conf < ServerName ${hostTrusted}:${portTrusted} ErrorLog logs/${hostTrusted}_ssl_error.log TransferLog logs/${hostTrusted}_ssl_access.log LogLevel warn SSLEngine on SSLCertificateFile ${certificateFile} SSLCertificateKeyFile ${certificateKey} SSLCertificateChainFile ${caChainFile} ProxyPreserveHost On ProxyPass "/" "http://127.0.0.1:3000/" ProxyPassReverse "/" "http://127.0.0.1:3000/" ServerName ${hostSandbox}:${portSandbox} ErrorLog logs/${hostSandbox}_ssl_error.log TransferLog logs/${hostSandbox}_ssl_access.log LogLevel warn SSLEngine on SSLCertificateFile ${certificateFile} SSLCertificateKeyFile ${certificateKey} SSLCertificateChainFile ${caChainFile} ProxyPreserveHost On ProxyPass "/" "http://127.0.0.1:3003/" ProxyPassReverse "/" "http://127.0.0.1:3003/" ServerName ${hostPublic}:${portPublic} ErrorLog logs/${hostPublic}_ssl_error.log TransferLog logs/${hostPublic}_ssl_access.log LogLevel warn SSLEngine on SSLCertificateFile ${certificateFile} SSLCertificateKeyFile ${certificateKey} SSLCertificateChainFile ${caChainFile} ProxyPreserveHost On ProxyPass "/" "http://127.0.0.1:3004/" ProxyPassReverse "/" "http://127.0.0.1:3004/" EOT } function installHttps { local hostTrusted="$1" local portTrusted="$2" local hostSandbox="$3" local portSandbox="$4" local hostPublic="$5" local portPublic="$6" local certificateFile="$7" local certificateKey="$8" local caChainFile="$9" local installHttpRedirect="$10" yum -y install httpd mod_ssl echo > /etc/httpd/conf.d/mailtrain.conf if [ "$installHttpRedirect" != "yes" ]; then cat >> /etc/httpd/conf.d/mailtrain.conf < ServerName ${hostTrusted} ServerSignature Off RewriteEngine On RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent] ErrorLog logs/${hostTrusted}_redirect_error.log LogLevel warn ServerName ${hostSandbox} ServerSignature Off RewriteEngine On RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent] ErrorLog logs/${hostSandbox}_redirect_error.log LogLevel warn ServerName ${hostPublic} ServerSignature Off RewriteEngine On RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent] ErrorLog logs/${hostPublic}_redirect_error.log LogLevel warn EOT # Enable port 80 on the firewall firewall-cmd --add-port=80/tcp --permanent fi cat >> /etc/httpd/conf.d/mailtrain.conf < ServerName ${hostTrusted}:${portTrusted} ErrorLog logs/${hostTrusted}_ssl_error.log TransferLog logs/${hostTrusted}_ssl_access.log LogLevel warn SSLEngine on SSLCertificateFile ${certificateFile} SSLCertificateKeyFile ${certificateKey} SSLCertificateChainFile ${caChainFile} ProxyPreserveHost On ProxyPass "/" "http://127.0.0.1:3000/" ProxyPassReverse "/" "http://127.0.0.1:3000/" ServerName ${hostSandbox}:${portSandbox} ErrorLog logs/${hostSandbox}_ssl_error.log TransferLog logs/${hostSandbox}_ssl_access.log LogLevel warn SSLEngine on SSLCertificateFile ${certificateFile} SSLCertificateKeyFile ${certificateKey} SSLCertificateChainFile ${caChainFile} ProxyPreserveHost On ProxyPass "/" "http://127.0.0.1:3003/" ProxyPassReverse "/" "http://127.0.0.1:3003/" ServerName ${hostPublic}:${portPublic} ErrorLog logs/${hostPublic}_ssl_error.log TransferLog logs/${hostPublic}_ssl_access.log LogLevel warn SSLEngine on SSLCertificateFile ${certificateFile} SSLCertificateKeyFile ${certificateKey} SSLCertificateChainFile ${caChainFile} ProxyPreserveHost On ProxyPass "/" "http://127.0.0.1:3004/" ProxyPassReverse "/" "http://127.0.0.1:3004/" EOT # Enable and start httpd systemctl start httpd systemctl enable httpd # Enable SSL ports on the firewall for port in "${portTrusted}/tcp" "${portSandbox}/tcp" "${portPublic}/tcp"; do firewall-cmd --add-port=$port --permanent done # Activate the firefall settings firewall-cmd --reload } function createCertificates { local hostTrusted="$1" local hostSandbox="$2" local hostPublic="$3" local email="$4" yum install -y certbot # Temporarily enable port 80 on the firewall firewall-cmd --add-port=80/tcp certbot certonly --agree-tos --email "${email}" --standalone -n -d "${hostPublic}" -d "${hostTrusted}" -d "${hostSandbox}" # Revert firewall to original state firewall-cmd --reload }