#!/usr/bin/env bashio ssl=$(bashio::config 'ssl') website_name=$(bashio::config 'website_name') certfile=$(bashio::config 'certfile') keyfile=$(bashio::config 'keyfile') DocumentRoot=$(bashio::config 'document_root') phpini=$(bashio::config 'php_ini') username=$(bashio::config 'username') password=$(bashio::config 'password') default_conf=$(bashio::config 'default_conf') default_ssl_conf=$(bashio::config 'default_ssl_conf') webrootdocker=/var/www/localhost/htdocs/ if [ $phpini = "get_file" ]; then cp /etc/php7/php.ini /share/apache2addon_php.ini echo "You have requestet a copy of the php.ini file. You will now find your copy at /share/apache2addon_php.ini" echo "Addon will now be stopped. Please remove the config option and change it to the name of your new config file (for example /share/php.ini)" exit 1 fi rm -r $webrootdocker if [ ! -d $DocumentRoot ]; then echo "You haven't put your website to $DocumentRoot" echo "A default website will now be used" mkdir $webrootdocker cp /index.html $webrootdocker else #Create Shortcut to shared html folder ln -s $DocumentRoot /var/www/localhost/htdocs fi #Set rights to web folders and create user find $DocumentRoot -type d -exec chmod 771 {} \; if [ ! -z "$username" ] && [ ! -z "$password" ] && [ ! $username = "null" ] && [ ! $password = "null" ]; then adduser -S $username -G www-data echo "$username:$password" | chpasswd $username find $webrootdocker -type d -exec chown $username:www-data -R {} \; find $webrootdocker -type f -exec chown $username:www-data -R {} \; else echo "No username and/or password was provided. Skipping account set up." fi if [ $phpini != "default" ]; then if [ -f $phpini ]; then echo "Your custom php.ini at $phpini will be used." rm /etc/php7/php.ini cp $phpini /etc/php7/php.ini else echo "You have changed the php_ini variable, but the new file could not be found! Default php.ini file will be used instead." fi else echo "extension=mosquitto.so" >> /etc/php7/php.ini fi if [ $ssl = "true" ] && [ $default_conf = "default" ]; then echo "You have activated SSL. SSL Settings will be applied" if [ ! -f /ssl/$certfile ]; then echo "Cannot find certificate file $certfile" exit 1 fi if [ ! -f /ssl/$keyfile ]; then echo "Cannot find certificate key file $keyfile" exit 1 fi mkdir /etc/apache2/sites-enabled sed -i '/LoadModule rewrite_module/s/^#//g' /etc/apache2/httpd.conf echo "Listen 8099" >> /etc/apache2/httpd.conf echo "" > /etc/apache2/sites-enabled/000-default.conf echo "ServerName $website_name" >> /etc/apache2/sites-enabled/000-default.conf echo "ServerAdmin webmaster@localhost" >> /etc/apache2/sites-enabled/000-default.conf echo "DocumentRoot $webrootdocker" >> /etc/apache2/sites-enabled/000-default.conf echo "#Redirect http to https" >> /etc/apache2/sites-enabled/000-default.conf echo " RewriteEngine On" >> /etc/apache2/sites-enabled/000-default.conf echo " RewriteCond %{HTTPS} off" >> /etc/apache2/sites-enabled/000-default.conf echo " RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}" >> /etc/apache2/sites-enabled/000-default.conf echo "#End Redirect http to https" >> /etc/apache2/sites-enabled/000-default.conf echo " ErrorLog /var/log/error.log" >> /etc/apache2/sites-enabled/000-default.conf echo " #CustomLog /var/log/access.log combined" >> /etc/apache2/sites-enabled/000-default.conf echo "" >> /etc/apache2/sites-enabled/000-default.conf echo "" > /etc/apache2/sites-enabled/000-default-le-ssl.conf echo "" >> /etc/apache2/sites-enabled/000-default-le-ssl.conf echo "ServerName $website_name" >> /etc/apache2/sites-enabled/000-default-le-ssl.conf echo "ServerAdmin webmaster@localhost" >> /etc/apache2/sites-enabled/000-default-le-ssl.conf echo "DocumentRoot $webrootdocker" >> /etc/apache2/sites-enabled/000-default-le-ssl.conf echo " ErrorLog /var/log/error.log" >> /etc/apache2/sites-enabled/000-default-le-ssl.conf echo " #CustomLog /var/log/access.log combined" >> /etc/apache2/sites-enabled/000-default-le-ssl.conf echo "SSLCertificateFile /ssl/$certfile" >> /etc/apache2/sites-enabled/000-default-le-ssl.conf echo "SSLCertificateKeyFile /ssl/$keyfile" >> /etc/apache2/sites-enabled/000-default-le-ssl.conf echo "" >> /etc/apache2/sites-enabled/000-default-le-ssl.conf echo "" >> /etc/apache2/sites-enabled/000-default-le-ssl.conf else echo "SSL is deactivated and/or you are using a custom config." fi if [ "$ssl" = "true" ] || [ "$default_conf" != "default" ]; then echo "Include /etc/apache2/sites-enabled/*.conf" >> /etc/apache2/httpd.conf fi sed -i -e '/AllowOverride/s/None/All/' /etc/apache2/httpd.conf if [ "$default_conf" = "get_config" ]; then if [ -f /etc/apache2/sites-enabled/000-default.conf ]; then if [ ! -d /etc/apache2/sites-enabled ]; then mkdir /etc/apache2/sites-enabled fi cp /etc/apache2/sites-enabled/000-default.conf /share/000-default.conf echo "You have requested a copy of the apache2 config. You can now find it at /share/000-default.conf ." fi if [ -f /etc/apache2/httpd.conf ]; then cp /etc/apache2/httpd.conf /share/httpd.conf echo "You have requested a copy of the apache2 config. You can now find it at /share/httpd.conf ." fi if [ "$default_ssl_conf" != "get_config" ]; then echo "Exiting now..." exit 0 fi fi if [[ ! $default_conf =~ ^(default|get_config)$ ]]; then if [ -f $default_conf ]; then if [ ! -d /etc/apache2/sites-enabled ]; then mkdir /etc/apache2/sites-enabled fi if [ -f /etc/apache2/sites-enabled/000-default.conf ]; then rm /etc/apache2/sites-enabled/000-default.conf fi cp -rf $default_conf /etc/apache2/sites-enabled/000-default.conf echo "Your custom apache config at $default_conf will be used." else echo "Cant find your custom 000-default.conf file $default_conf - be sure you have choosen the full path. Exiting now..." exit 1 fi fi if [ "$default_ssl_conf" = "get_config" ]; then if [ -f /etc/apache2/httpd.conf ]; then cp /etc/apache2/sites-enabled/000-default-le-ssl.conf /share/000-default-le-ssl.conf echo "You have requested a copy of the apache2 ssl config. You can now find it at /share/000-default-le-ssl.conf ." fi echo "Exiting now..." exit 0 fi if [ "$default_ssl_conf" != "default" ]; then if [ -f $default_ssl_conf ]; then if [ ! -d /etc/apache2/sites-enabled ]; then mkdir /etc/apache2/sites-enabled fi if [ -f /etc/apache2/sites-enabled/000-default-le-ssl.conf ]; then rm /etc/apache2/sites-enabled/000-default-le-ssl.conf fi cp -rf $default_ssl_conf /etc/apache2/sites-enabled/000-default-le-ssl.conf echo "Your custom apache config at $default_ssl_conf will be used." else echo "Cant find your custom 000-default-le-ssl.conf file $default_ssl_conf - be sure you have choosen the full path. Exiting now..." exit 1 fi fi echo "Here is your web file architecture." ls -l $webrootdocker echo "Starting Apache2..." exec /usr/sbin/httpd -D FOREGROUND