diff --git a/bin/installfog.sh b/bin/installfog.sh index ea55cb858e..fa76956084 100755 --- a/bin/installfog.sh +++ b/bin/installfog.sh @@ -23,7 +23,10 @@ if [[ ! $EUID -eq 0 ]]; then echo "FOG Installation must be run as root user" exit 1 # Fail Sudo fi -which useradd >/dev/null 2>&1 +# Begin adjusting per @redvex2460 in PR 438 +# Use a more appropriate method for user add command lookup +[[ -z $useraddcmd ]] && useraddcmd=$(command -v useradd) || true +[[ -z $useraddcmd ]] && useraddcmd=$(command -v adduser) || true if [[ $? -eq 1 || $(echo $PATH | grep -o "sbin" | wc -l) -lt 2 ]]; then echo "Please switch to a proper root environment to run the installer!" echo "Use 'sudo -i' or 'su -' (skip the ' and note the hyphen at the end" @@ -320,7 +323,8 @@ while getopts "$optspec" o; do done [[ -z $version ]] && version="$(awk -F\' /"define\('FOG_VERSION'[,](.*)"/'{print $4}' ../packages/web/lib/fog/system.class.php | tr -d '[[:space:]]')" [[ -z $OS ]] && OS=$(uname -s) -if [[ $OS =~ ^[^Ll][^Ii][^Nn][^Uu][^Xx] ]]; then +# Minor change to do our checks here. +if [[ $OS =~ [^Ll][^Ii][^Nn][^Uu][^Xx] ]]; then echo "We do not currently support Installation on non-Linux Operating Systems" exit 2 # Fail OS Check else @@ -360,6 +364,8 @@ if [[ ! $exitcode -eq 0 ]]; then *[Aa][Rr][Cc][Hh]*) pacman -Sy --noconfirm lsb-release >>$workingdir/error_logs/fog_error_${version}.log 2>&1 ;; + *[Aa][Ll][Pp][Ii][Nn][Ee]*) + ;; esac fi [[ -z $OSVersion ]] && OSVersion=$(lsb_release -r| awk -F'[^0-9]*' /^[Rr]elease\([^.]*\).*/'{print $2}') diff --git a/lib/alpine/config.sh b/lib/alpine/config.sh new file mode 100644 index 0000000000..981add33da --- /dev/null +++ b/lib/alpine/config.sh @@ -0,0 +1,56 @@ +#!/bin/bash +# lib/alpine/config.sh +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +[[ -z $packages ]] && packages="openrc bc cdrkit curl gcc g++ git gzip lftp m4 make mariadb mariadb-client net-tools nfs-utils openssh openssl perl perl-crypt-passwdmd5 php7 php7-session php7-fpm php7-mbstring php7-mcrypt php7-soap php7-openssl php7-gmp php7-pdo_odbc php7-json php7-dom php7-pdo php7-zip php7-mysqli php7-sqlite3 php7-apcu php7-pdo_pgsql php7-bcmath php7-gd php7-odbc php7-pdo_mysql php7-pdo_sqlite php7-gettext php7-xmlreader php7-xmlrpc php7-bz2 php7-iconv php7-pdo_dblib php7-curl php7-sockets php7-mysqli php7-ctype syslinux tar tftp-hpa vsftpd wget xz" +[[ -z $packageinstaller ]] && packageinstaller="apk add" +[[ -z $packagelist ]] && packagelist="apk info" +[[ -z $packageupdater ]] && packageupdater="apk update && apk upgrade" +[[ -z $packmanUpdate ]] && packmanUpdate="$packageinstaller" +[[ -z $packageQuery ]] && packageQuery="apk info -e \$x " +[[ -z $langPackages ]] && langPackages="iso-codes" +[[ -z $dhcpname ]] && dhcpname="" +if [[ -z $webdirdest ]]; then + if [[ -z $docroot ]]; then + docroot="/var/www/" + webdirdest="${docroot}fog/" + elif [[ "$docroot" != *'fog'* ]]; then + webdirdest="${docroot}fog/" + else + webdirdest="${docroot}/" + fi +fi +[[ -z $webredirect ]] && webredirect="${webdirdest}/index.php" +[[ -z $apacheuser ]] && apacheuser="nginx" +[[ -z $apachelogdir ]] && apachelogdir="/var/log/nginx" +[[ -z $apacheerrlog ]] && apacheerrlog="$apachelogdir/error.log" +[[ -z $apacheacclog ]] && apacheacclog="$apachelogdir/access.log" +[[ -z $httpdconf ]] && httpdconf="/etc/nginx/nginx.conf" +[[ -z $etcconf ]] && etcconf="/etc/nginx/http.d/default.conf" +[[ -z $phpini ]] && phpini="/etc/php7/php.ini" +[[ -z $storageLocation ]] && storageLocation="/images" +[[ -z $storageLocationCapture ]] && storageLocationCapture="${storageLocation}/dev" +[[ -z $dhcpconfig ]] && dhcpconfig="/etc/dhcpd.conf" +[[ -z $dhcpconfigother ]] && dhcpconfigother="/etc/dhcp/dhcpd.conf" +[[ -z $tftpdirdst ]] && tftpdirdst="/var/tftpboot" +[[ -z $tftpconfig ]] && tftpconfig="/etc/xinetd.d/tftpd" +[[ -z $ftpxinetd ]] && ftpxinetd="/etc/xinetd.d/vsftpd" +[[ -z $ftpconfig ]] && ftpconfig="/etc/vsftpd.conf" +[[ -z $dhcpd ]] && dhcpd="dhcpd4" +[[ -z $snapindir ]] && snapindir="/opt/fog/snapins" +[[ -z $php_ver ]] && php_ver="7" +[[ -z $phpfpm ]] && phpfpm="php-fpm${php_ver}" +[[ -z $webserver ]] && webserver="nginx" +packages="${packages} ${webserver}" diff --git a/lib/arch/config.sh b/lib/arch/config.sh index e4ba25200c..1bf154d408 100644 --- a/lib/arch/config.sh +++ b/lib/arch/config.sh @@ -13,7 +13,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . # -[[ -z $packages ]] && packages="apache bc cdrtools curl dhcp gcc git gzip lftp m4 make mariadb mod_fastcgi net-tools nfs-utils openssh openssl perl perl-crypt-passwdmd5 php php-apache php-fpm php-gd syslinux tar tftp-hpa vsftpd wget xinetd xz" +[[ -z $packages ]] && packages="bc cdrtools curl dhcp gcc git gzip lftp m4 make mariadb mod_fastcgi net-tools nfs-utils openssh openssl perl perl-crypt-passwdmd5 php php-apache php-fpm php-gd syslinux tar tftp-hpa vsftpd wget xinetd xz" [[ -z $packageinstaller ]] && packageinstaller="pacman -Sy --noconfirm" [[ -z $packagelist ]] && packagelist="pacman -Si" [[ -z $packageupdater ]] && packageupdater="pacman -Syu --noconfirm" @@ -31,13 +31,21 @@ if [[ -z $webdirdest ]]; then webdirdest="${docroot}/" fi fi +[[ -z $webserver ]] && webserver="apache" [[ -z $webredirect ]] && webredirect="${webdirdest}/index.php" [[ -z $apacheuser ]] && apacheuser="http" -[[ -z $apachelogdir ]] && apachelogdir="/var/log/httpd" +if [[ $webserver == "apache" ]]; then + [[ -z $apachelogdir ]] && apachelogdir="/var/log/httpd" + [[ -z $httpdconf ]] && httpdconf="/etc/httpd/conf/httpd.conf" + [[ -z $etcconf ]] && etcconf="/etc/httpd/conf/extra/fog.conf" +else + # This is all just a guess, will most likely need a ton of refinement + [[ -z $apachelogdir ]] && apachelogdir="/var/log/$webserver" + [[ -z $httpdconf ]] && httpdconf="/etc/$webserver/conf/httpd.conf" + [[ -z $etcconf ]] && etcconf="/etc/$webserver/conf/extra/fog.conf" +fi [[ -z $apacheerrlog ]] && apacheerrlog="$apachelogdir/error_log" [[ -z $apacheacclog ]] && apacheacclog="$apachelogdir/access_log" -[[ -z $httpdconf ]] && httpdconf="/etc/httpd/conf/httpd.conf" -[[ -z $etcconf ]] && etcconf="/etc/httpd/conf/extra/fog.conf" [[ -z $phpini ]] && phpini="/etc/php/php.ini" [[ -z $storageLocation ]] && storageLocation="/images" [[ -z $storageLocationCapture ]] && storageLocationCapture="${storageLocation}/dev" @@ -49,3 +57,4 @@ fi [[ -z $ftpconfig ]] && ftpconfig="/etc/vsftpd.conf" [[ -z $dhcpd ]] && dhcpd="dhcpd4" [[ -z $snapindir ]] && snapindir="/opt/fog/snapins" +packages="${packages} ${webserver}" diff --git a/lib/common/functions.sh b/lib/common/functions.sh index 78a1ba20d7..f647ef165f 100755 --- a/lib/common/functions.sh +++ b/lib/common/functions.sh @@ -38,12 +38,12 @@ checkDatabaseConnection() { registerStorageNode() { [[ -z $webroot ]] && webroot="/" dots "Checking if this node is registered" - storageNodeExists=$(wget --no-check-certificate -qO - ${httpproto}://$ipaddress/${webroot}/maintenance/check_node_exists.php --post-data="ip=${ipaddress}") + storageNodeExists=$(wget --no-check-certificate -qO - ${httpproto}://${ipaddress}${webroot}/maintenance/check_node_exists.php --post-data="ip=${ipaddress}") echo "Done" if [[ $storageNodeExists != exists ]]; then [[ -z $maxClients ]] && maxClients=10 dots "Node being registered" - curl -s -k -X POST -d "newNode" -d "name=$(echo -n $ipaddress|base64)" -d "path=$(echo -n $storageLocation|base64)" -d "ftppath=$(echo -n $storageLocation|base64)" -d "snapinpath=$(echo -n $snapindir|base64)" -d "sslpath=$(echo -n $sslpath|base64)" -d "ip=$(echo -n $ipaddress|base64)" -d "maxClients=$(echo -n $maxClients|base64)" -d "user=$(echo -n $username|base64)" --data-urlencode "pass=$(echo -n $password|base64)" -d "interface=$(echo -n $interface|base64)" -d "bandwidth=1" -d "webroot=$(echo -n $webroot|base64)" -d "fogverified" $httpproto://$ipaddress/${webroot}/maintenance/create_update_node.php + curl -s -k -X POST -d "newNode" -d "name=$(echo -n $ipaddress|base64)" -d "path=$(echo -n $storageLocation|base64)" -d "ftppath=$(echo -n $storageLocation|base64)" -d "snapinpath=$(echo -n $snapindir|base64)" -d "sslpath=$(echo -n $sslpath|base64)" -d "ip=$(echo -n $ipaddress|base64)" -d "maxClients=$(echo -n $maxClients|base64)" -d "user=$(echo -n $username|base64)" --data-urlencode "pass=$(echo -n $password|base64)" -d "interface=$(echo -n $interface|base64)" -d "bandwidth=1" -d "webroot=$(echo -n $webroot|base64)" -d "fogverified" $httpproto://$ipaddress${webroot}/maintenance/create_update_node.php echo "Done" else echo " * Node is registered" @@ -59,7 +59,7 @@ backupDB() { dots "Backing up database" if [[ -d $backupPath/fog_web_${version}.BACKUP ]]; then [[ ! -d $backupPath/fogDBbackups ]] && mkdir -p $backupPath/fogDBbackups >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - curl -skf "${httpproto}://$ipaddress/$webroot/maintenance/backup_db.php" | jq -r '. | ._content' > $backupPath/fogDBbackups/fog_sql_${version}_$(date +"%Y%m%d_%I%M%S").sql + curl -skf "${httpproto}://$ipaddress$webroot/maintenance/backup_db.php" | jq -r '. | ._content' > $backupPath/fogDBbackups/fog_sql_${version}_$(date +"%Y%m%d_%I%M%S").sql fi if [[ $? -ne 0 ]]; then echo "Failed" @@ -80,7 +80,9 @@ updateDB() { local replace='s/[]"\/$&*.^|[]/\\&/g' local escstorageLocation=$(echo $storageLocation | sed -e $replace) sed -i -e "s/'\/images\/'/'$escstorageLocation'/g" $webdirdest/commons/schema.php - wget --no-check-certificate -qO - --post-data="confirm&fogverified" --no-proxy ${httpproto}://${ipaddress}/${webroot}management/index.php?node=schema >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + #echo "wget --no-check-certificate -qO - --post-data=\"confirm&fogverified\" --no-proxy ${httpproto}://${ipaddress}${webroot}management/index.php?node=schema >>$workingdir/error_logs/fog_error_${version}.log 2>&1" + wget --no-check-certificate -qO - --post-data="confirm&fogverified" --no-proxy ${httpproto}://${ipaddress}${webroot}management/index.php?node=schema >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + errorStat $? ;; *) @@ -498,6 +500,9 @@ installFOGServices() { errorStat $? } configureUDPCast() { + # If alpine return + # similar to @redvex2460 but with better pass in. + [[ $osid -eq 4 ]] && return dots "Setting up UDPCast" cp -Rf "$udpcastsrc" "$udpcasttmp" cur=$(pwd) @@ -596,7 +601,8 @@ configureTFTPandPXE() { if [[ -f $tftpconfig ]]; then cp -Rf $tftpconfig ${tftpconfig}.fogbackup >>$workingdir/error_logs/fog_error_${version}.log 2>&1 fi - if [[ $noTftpBuild != "true" ]]; then + # thanks @redvex2460 + if [[ $noTftpBuild != "true" && $osid -ne 4 ]]; then echo -e "# default: off\n# description: The tftp server serves files using the trivial file transfer \n# protocol. The tftp protocol is often used to boot diskless \n# workstations, download configuration files to network-aware printers, \n# and to start the installation process for some operating systems.\nservice tftp\n{\n socket_type = dgram\n protocol = udp\n wait = yes\n user = root\n server = /usr/sbin/in.tftpd\n server_args = -s ${tftpdirdst}\n disable = no\n per_source = 11\n cps = 100 2\n flags = IPv4\n}" > "$tftpconfig" fi dots 'Setting up and starting TFTP Server' @@ -629,6 +635,9 @@ configureTFTPandPXE() { sysv-rc-conf xinetd on >>$workingdir/error_logs/fog_error_${version}.log 2>&1 $initdpath/xinetd stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 $initdpath/xinetd start >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + elif [[ $osid -eq 4 ]]; then + $initdpath/in.tftpd stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + $initdpath/in.tftpd start >>$workingdir/error_logs/fog_error_${version}.log 2>&1 else chkconfig xinetd on >>$workingdir/error_logs/fog_error_${version}.log 2>&1 service xinetd stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 @@ -677,12 +686,13 @@ addOndrejRepo() { ntpdate pool.ntp.org >>$workingdir/error_logs/fog_error_${version}.log 2>&1 locale-gen 'en_US.UTF-8' >>$workingdir/error_logs/fog_error_${version}.log 2>&1 LANG='en_US.UTF-8' LC_ALL='en_US.UTF-8' add-apt-repository -y ppa:ondrej/${repo} >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - LANG='en_US.UTF-8' LC_ALL='en_US.UTF-8' add-apt-repository -y ppa:ondrej/apache2 >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + [[ $webserver == "apache2" ]] && LANG='en_US.UTF-8' LC_ALL='en_US.UTF-8' add-apt-repository -y ppa:ondrej/apache2 >>$workingdir/error_logs/fog_error_${version}.log 2>&1 } installPackages() { [[ $installlang -eq 1 ]] && packages="$packages gettext" packages="$packages jq" packages="$packages unzip" + packages="${packages} ${webserver}" dots "Adjusting repository (can take a long time for cleanup)" case $osid in 1) @@ -731,8 +741,10 @@ installPackages() { esac ;; 2) - packages="${packages// libapache2-mod-fastcgi/}" - packages="${packages// libapache2-mod-evasive/}" + if [[ $webserver == "apache2" ]]; then + packages="${packages// libapache2-mod-fastcgi/}" + packages="${packages// libapache2-mod-evasive/}" + fi packages="${packages// php${php_ver}-mcrypt/}" packages="${packages} php${php_ver}-bcmath bc" packages="${packages/php-gettext/$phpgettext}" @@ -757,7 +769,7 @@ installPackages() { addOndrejRepo # use ppa-purge to not just remove the repo but also downgrade packages to Ubuntu original versions DEBIAN_FRONTEND=noninteractive apt-get install -yq ppa-purge >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - ppa-purge -y ppa:ondrej/apache2 >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + [[ $webserver == "apache2" ]] && ppa-purge -y ppa:ondrej/apache2 >>$workingdir/error_logs/fog_error_${version}.log 2>&1 # for php we want to purge all packages first as we don't want ppa-purge to try downgrading those DEBIAN_FRONTEND=noninteractive apt-get purge -yq 'php5*' 'php7*' 'libapache*' >>$workingdir/error_logs/fog_error_${version}.log 2>&1 ppa-purge -y ppa:ondrej/php >>$workingdir/error_logs/fog_error_${version}.log 2>&1 @@ -856,6 +868,14 @@ installPackages() { break fi done + # Only add myslqi package for osid 4 for better integration + if [[ $osid -eq 4 ]]; then + eval $packagelist php${php_ver}-mysqli >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + if [[ $? -eq 0 ]]; then + x="php${php_ver}-mysqli" + break + fi + fi ;; esac [[ $osid == 2 && -z $dhcpd && $x == +(*'dhcp'*) ]] && dhcpd=$x @@ -1049,6 +1069,12 @@ doOSSpecificIncludes() { . ../lib/arch/config.sh systemctl="yes" ;; + 4) + echo -e "\n\n Starting Alpine Installation\n\n" + osname="Alpine" + . ../lib/alpine/config.sh + systemctl="no" + ;; *) echo -e " Sorry, answer not recognized\n\n" sleep 2 @@ -1173,6 +1199,8 @@ configureMySql() { stopInitScript dots "Setting up and starting MySQL" dbservice=$(systemctl list-units | grep -o -e "mariadb\.service" -e "mysqld\.service" -e "mysql\.service" | tr -d '@') + # Switchout dbservice for alpine + [[ $osid -eq 4 ]] && dbservice=$(rc-service -l | grep mariadb) [[ -z $dbservice ]] && dbservice=$(systemctl list-unit-files | grep -v bad | grep -o -e "mariadb\.service" -e "mysqld\.service" -e "mysql\.service" | tr -d '@') for mysqlconf in $(grep -rl '.*skip-networking' /etc | grep -v init.d); do sed -i '/.*skip-networking/ s/^#*/#/' -i $mysqlconf >>$workingdir/error_logs/fog_error_${version}.log 2>&1 @@ -1472,7 +1500,14 @@ configureUsers() { fi echo "Skipped" else - useradd -s "/bin/bash" -d "/home/${username}" -m ${username} >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + if [[ $osid -eq 4 ]]; then + addgroup -S ${username} >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + $useraddcmd -s "/bin/bash" -h "/home/${username}" -S ${username} >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + touch "/home/${username}/.bashrc" + chown $username:$username "/home/${username}/.bashrc" >/dev/null 2>&1 + else + $useraddcmd -s "/bin/bash" -d "/home/${username}" -m ${username} >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + fi errorStat $? fi if [[ ! -d /home/$username ]]; then @@ -1481,13 +1516,13 @@ configureUsers() { echo "# This may cause issues with capturing images and snapin uploads. #" echo "# If you this move/delete was unintentional you can run: #" echo " userdel $username" - echo " useradd -s \"/bin/bash\" -d \"/home/$username\" -m \"$username\"" + echo " $useraddcmd -s \"/bin/bash\" -d \"/home/$username\" -m \"$username\"" #userdel $username #useradd -s "/bin/bash" -d "/home/${username}" -m ${username} >>$workingdir/error_logs/fog_error_${version}.log 2>&1 #errorStat $? fi dots "Locking $username as a system account" - chsh -s /bin/bash $username >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + [[ $osid -ne 4 ]] && chsh -s /bin/bash $username >>$workingdir/error_logs/fog_error_${version}.log 2>&1 textmessage="You seem to be using the '$username' system account to logon and work \non your FOG Server system.\n\nIt's NOT recommended to use this account! Please create a new\naccount for administrative tasks.\n\nIf you re-run the installer it would reset the '$username' account\npassword and therefore lock you out of the system!\n\nTake care,\nyour FOGProject team" grep -q "exit 1" /home/$username/.bashrc >/dev/null 2>&1 || cat >>/home/$username/.bashrc <>$workingdir/error_logs/fog_error_${version}.log 2>&1 errorStat $? fi - local element='httpd' - [[ $osid -eq 2 ]] && element='apache2' + local element=$webserver chmod -R 755 /var/log/$element >>$workingdir/error_logs/fog_error_${version}.log 2>&1 for i in $(find /var/log/ -type d -name 'php*fpm*' 2>>$workingdir/error_logs/fog_error_${version}.log); do chmod -R 755 $i >>$workingdir/error_logs/fog_error_${version}.log 2>&1 @@ -1639,6 +1673,7 @@ writeUpdateFile() { escphp_ver=$(echo $php_ver | sed -e $replace) escphp_verAdds=$(echo $php_verAdds | sed -e $replace) escsslprivkey=$(echo $sslprivkey | sed -e $replace) + escwebserver=$(echo $webserver | sed -e $replace) [[ -z $copybackold || $copybackold -lt 1 ]] && copybackold=0 if [[ -f $fogprogramdir/.fogsettings ]]; then grep -q "^## Start of FOG Settings" $fogprogramdir/.fogsettings || grep -q "^## Version:.*" $fogprogramdir/.fogsettings @@ -1772,6 +1807,9 @@ writeUpdateFile() { grep -q "sendreports=" $fogprogramdir/.fogsettings && \ sed -i "s/sendreports=.*/sendreports='$sendreports'/g" $fogprogramdir/.fogsettings || \ echo "sendreports='$sendreports'" >> $fogprogramdir/.fogsettings + grep -q "webserver=" $fogprogramdir/.fogsettings && \ + sed -i "s/webserver=.*/webserver='$escwebserver'/g" $fogprogramdir/.fogsettings || \ + echo "webserver='$webserver'" >> $fogprogramdir/.fogsettings else echo "## Start of FOG Settings" > "$fogprogramdir/.fogsettings" echo "## Created by the FOG Installer" >> "$fogprogramdir/.fogsettings" @@ -1819,6 +1857,7 @@ writeUpdateFile() { echo "php_verAdds='$php_verAdds'" >> "$fogprogramdir/.fogsettings" echo "sslprivkey='$sslprivkey'" >> $fogprogramdir/.fogsettings echo "sendreports='$sendreports'" >> $fogprogramdir/.fogsettings + echo "webserver='$webserver'" >> $fogprogramdir/.fogsettings echo "## End of FOG Settings" >> "$fogprogramdir/.fogsettings" fi else @@ -1868,6 +1907,7 @@ writeUpdateFile() { echo "php_verAdds='$php_verAdds'" >> "$fogprogramdir/.fogsettings" echo "sslprivkey='$sslprivkey'" >> $fogprogramdir/.fogsettings echo "sendreports='$sendreports'" >> $fogprogramdir/.fogsettings + echo "webserver='$webserver'" >> $fogprogramdir/.fogsettings echo "## End of FOG Settings" >> "$fogprogramdir/.fogsettings" fi } @@ -1965,149 +2005,259 @@ EOF chown -R $apacheuser:$apacheuser $webdirdest/management/other >>$workingdir/error_logs/fog_error_${version}.log 2>&1 errorStat $? [[ $httpproto == https ]] && sslenabled=" (SSL)" || sslenabled=" (no SSL)" - dots "Setting up Apache virtual host${sslenabled}" - case $novhost in - [Yy]|[Yy][Ee][Ss]) - echo "Skipped" - ;; - *) - if [[ $osid -eq 2 ]]; then - a2dissite 001-fog >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - a2ensite 000-default >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - fi - mv -fv "${etcconf}" "${etcconf}.${timestamp}" >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - echo "" > "$etcconf" - echo " " >> "$etcconf" - if [[ $osid -eq 1 && $OSVersion -lt 7 ]]; then - echo " SetHandler application/x-httpd-php" >> "$etcconf" - else - echo " SetHandler \"proxy:fcgi://127.0.0.1:9000/\"" >> "$etcconf" - fi - echo " " >> "$etcconf" - echo " KeepAlive Off" >> "$etcconf" - echo " ServerName $ipaddress" >> "$etcconf" - echo " ServerAlias $hostname" >> "$etcconf" - echo " DocumentRoot $docroot" >> "$etcconf" - if [[ $httpproto == https ]]; then - echo " RewriteEngine On" >> "$etcconf" - echo " RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)" >> "$etcconf" - echo " RewriteRule .* - [F]" >> "$etcconf" - echo " RewriteRule /management/other/ca.cert.der$ - [L]" >> "$etcconf" - echo " RewriteCond %{HTTPS} off" >> "$etcconf" - echo " RewriteRule (.*) https://%{HTTP_HOST}/\$1 [R,L]" >> "$etcconf" - echo "" >> "$etcconf" - echo "" >> "$etcconf" - echo " KeepAlive Off" >> "$etcconf" - echo " " >> "$etcconf" - if [[ $osid -eq 1 && $OSVersion -lt 7 ]]; then - echo " SetHandler application/x-httpd-php" >> "$etcconf" - else - echo " SetHandler \"proxy:fcgi://127.0.0.1:9000/\"" >> "$etcconf" - fi - echo " " >> "$etcconf" - echo " ServerName $ipaddress" >> "$etcconf" - echo " ServerAlias $hostname" >> "$etcconf" - echo " DocumentRoot $docroot" >> "$etcconf" - echo " SSLEngine On" >> "$etcconf" - echo " SSLProtocol all -SSLv3 -SSLv2" >> "$etcconf" - echo " SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA" >> "$etcconf" - echo " SSLHonorCipherOrder On" >> "$etcconf" - echo " SSLCertificateFile $webdirdest/management/other/ssl/srvpublic.crt" >> "$etcconf" - echo " SSLCertificateKeyFile $sslprivkey" >> "$etcconf" - echo " SSLCACertificateFile $webdirdest/management/other/ca.cert.pem" >> "$etcconf" - echo " " >> "$etcconf" - echo " DirectoryIndex index.php index.html index.htm" >> "$etcconf" - echo " " >> "$etcconf" - echo " RewriteEngine On" >> "$etcconf" - echo " RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)" >> "$etcconf" - echo " RewriteRule .* - [F]" >> "$etcconf" - echo " RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f" >> "$etcconf" - echo " RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-d" >> "$etcconf" - echo " RewriteRule ^/fog/(.*)$ /fog/api/index.php [QSA,L]" >> "$etcconf" - echo "" >> "$etcconf" - else - echo " " >> "$etcconf" - echo " DirectoryIndex index.php index.html index.htm" >> "$etcconf" - echo " " >> "$etcconf" - echo " RewriteEngine On" >> "$etcconf" - echo " RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)" >> "$etcconf" - echo " RewriteRule .* - [F]" >> "$etcconf" - echo " RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f" >> "$etcconf" - echo " RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-d" >> "$etcconf" - echo " RewriteRule ^/fog/(.*)$ /fog/api/index.php [QSA,L]" >> "$etcconf" - echo "" >> "$etcconf" - fi - diffconfig "${etcconf}" - errorStat $? - ln -s $webdirdest $webdirdest/ >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - case $osid in - 1) - phpfpmconf='/etc/php-fpm.d/www.conf'; + case $webserver in + nginx) + case $novhost in + [Yy]|[Yy][Ee][Ss]) + echo "Skipped" ;; - 2) - if [[ $php_ver == 5 ]]; then - phpfpmconf="/etc/php$php_ver/fpm/pool.d/www.conf" + *) + dots "Setting up Nginx virtualhost${sslenabled}" + [[ -z $phploc ]] && phploc="/opt/fog/php.loc" + echo 'location ~ \.php$ {' > "$phploc" + echo " set \$phproot ${docroot};" >> "$phploc" + echo " root $docroot;" >> "$phploc" + echo " fastcgi_pass 127.0.0.1:9000;" >> "$phploc" + echo " fastcgi_index index.php;" >> "$phploc" + echo " include fastcgi.conf;" >> "$phploc" + echo " fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;" >> "$phploc" + echo "}" >> "$phploc" + echo "server {" > "$etcconf" + echo " listen 80;" >> "$etcconf" + echo " server_name $ipaddress $hostname;" >> "$etcconf" + if [[ $httpproto != https ]]; then + echo " root ${docroot};" >> "$etcconf" + echo " index index.html index.htm index.php;" >> "$etcconf" + echo " client_max_body_size 32m;" >> "$etcconf" + echo " error_page 500 502 503 504 /50x.html;" >> "$etcconf" + echo " include ${phploc};" >> "$etcconf" + echo " location = /50x.html {" >> "$etcconf" + echo " root /var/lib/nginx/html;" >> "$etcconf" + echo " }" >> "$etcconf" + echo " location ~ ^/fog/(.*)$ {" >> "$etcconf" + echo " try_files $uri $uri/ /fog/api/index.php?$args;" >> "$etcconf" + echo " }" >> "$etcconf" + echo " location ${docroot} {" >> "$etcconf" + echo " rewrite ^/fog/(.*)$ /fog/api/index.php?\$1 last;" >> "$etcconf" + echo " }" >> "$etcconf" + echo "}" >> "$etcconf" else - phpfpmconf="/etc/php/$php_ver/fpm/pool.d/www.conf" + echo " return 308 https://\$host\$request_uri;" >> "$etcconf" + echo "}" >> "$etcconf" + # Creates the diffie helman param file. + if [[ ! -x "/opt/fog/snapins/ssl/dhparam.pem" ]]; then + echo "Still in progress" + dots "Creating DHParam file" + openssl dhparam -dsaparam -out /etc/ssl/fog/dhparam.pem 4096 >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + echo "Done" + fi + dots "Setting up Nginx virtualhost${sslenabled}" + # In Apache we have SSLCertificateFile, SSLCertificateKeyFile, and SSLCACertificateFile. + # SSLCertificateFile is the public certificate created by the CA + # SSLCACertificateFile is the public certificate of the CA + # SSLCertificateKeyFile is the private key that generated the public certificate. + # In NGINX we have ssl_certificate and ssl_certificate_key + # The ssl_certificate is the concatenated form of the CA Certificate and the public certificate generated. + # The ssl_certificate_key is the private key. + # This generates the concatenated version of the CA and Public certificate. + if [[ ! -x $webdirdest/management/other/ssl/srvchained.crt ]]; then + cat $webdirdest/management/other/{ca.cert.pem,ssl/srvpublic.crt} >> $webdirdest/management/other/ssl/srvchained.crt + fi + echo $webdirdest; + echo "server {" > "$etcconf" + echo " listen 443 ssl;" >> "$etcconf" + echo " server_name $ipaddress $hostname;" >> "$etcconf" + echo " root ${docroot};" >> "$etcconf" + echo " index index.html index.htm index.php;" >> "$etcconf" + echo " ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;" >> "$etcconf" + echo " ssl_prefer_server_ciphers on;" >> "$etcconf" + echo " ssl_dhparam /opt/fog/snapins/ssl/dhparam.pem" + echo " ssl_cipher 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';" >> "$etcconf" + echo " ssl_certificate $webdirdest/management/other/ssl/srvchained.crt" >> "$etcconf" + echo " ssl_certificate_key $sslprivkey" >> "$etcconf" + echo " ssl_session_timeout 1d;" >> "$etcconf" + echo " ssl_session_cache shared:SSL:50m;" >> "$etcconf" + echo " add_header Strict-Transport-Security max-age=15768000;" >> "$etcconf" + echo " include ${phploc};" >> "$etcconf" + echo " location ~ ^/fog/(.*)$ {" >> "$etcconf" + echo " try_files $uri $uri/ /fog/api/index.php?$args;" >> "$etcconf" + echo " }" >> "$etcconf" + echo "}" >> "$etcconf" + # Going to add display errors but only if debugmode is configured + # also going to loop through all php*.ini files in /etc/ and change accordingly + if [[ ${DEBUGMODE} == true ]];then + phpinifiles=$(find /etc/ -type f -name php*.ini) + for i in $phpinifiles; do + sed -i "s/display_errors = Off/display_errors = On/g" $i >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + done + fi fi + echo "Done" + dots "Testing nginx configuration" + nginx -t >> $workingdir/error_logs/fog_error_${version}.log 2>&1 + diffconfig "${etcconf}" + errorStat $? + ln -s $webdirdest $webdirdest/ >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + ;; + esac + ;; + httpd|apache*) + dots "Setting up Apache virtual host${sslenabled}" + case $novhost in + [Yy]|[Yy][Ee][Ss]) + echo "Skipped" ;; - 3) - phpfpmconf='/etc/php/php-fpm.d/www.conf' + *) + if [[ $osid -eq 2 ]]; then + a2dissite 001-fog >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + a2ensite 000-default >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + fi + mv -fv "${etcconf}" "${etcconf}.${timestamp}" >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + echo "" > "$etcconf" + echo " " >> "$etcconf" + if [[ $osid -eq 1 && $OSVersion -lt 7 ]]; then + echo " SetHandler application/x-httpd-php" >> "$etcconf" + else + echo " SetHandler \"proxy:fcgi://127.0.0.1:9000/\"" >> "$etcconf" + fi + echo " " >> "$etcconf" + echo " KeepAlive Off" >> "$etcconf" + echo " ServerName $ipaddress" >> "$etcconf" + echo " ServerAlias $hostname" >> "$etcconf" + echo " DocumentRoot $docroot" >> "$etcconf" + if [[ $httpproto == https ]]; then + echo " RewriteEngine On" >> "$etcconf" + echo " RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)" >> "$etcconf" + echo " RewriteRule .* - [F]" >> "$etcconf" + echo " RewriteRule /management/other/ca.cert.der$ - [L]" >> "$etcconf" + echo " RewriteCond %{HTTPS} off" >> "$etcconf" + echo " RewriteRule (.*) https://%{HTTP_HOST}/\$1 [R,L]" >> "$etcconf" + echo "" >> "$etcconf" + echo "" >> "$etcconf" + echo " KeepAlive Off" >> "$etcconf" + echo " " >> "$etcconf" + if [[ $osid -eq 1 && $OSVersion -lt 7 ]]; then + echo " SetHandler application/x-httpd-php" >> "$etcconf" + else + echo " SetHandler \"proxy:fcgi://127.0.0.1:9000/\"" >> "$etcconf" + fi + echo " " >> "$etcconf" + echo " ServerName $ipaddress" >> "$etcconf" + echo " ServerAlias $hostname" >> "$etcconf" + echo " DocumentRoot $docroot" >> "$etcconf" + echo " SSLEngine On" >> "$etcconf" + echo " SSLProtocol all -SSLv3 -SSLv2" >> "$etcconf" + echo " SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA" >> "$etcconf" + echo " SSLHonorCipherOrder On" >> "$etcconf" + echo " SSLCertificateFile $webdirdest/management/other/ssl/srvpublic.crt" >> "$etcconf" + echo " SSLCertificateKeyFile $sslprivkey" >> "$etcconf" + echo " SSLCACertificateFile $webdirdest/management/other/ca.cert.pem" >> "$etcconf" + echo " " >> "$etcconf" + echo " DirectoryIndex index.php index.html index.htm" >> "$etcconf" + echo " " >> "$etcconf" + echo " RewriteEngine On" >> "$etcconf" + echo " RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)" >> "$etcconf" + echo " RewriteRule .* - [F]" >> "$etcconf" + echo " RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f" >> "$etcconf" + echo " RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-d" >> "$etcconf" + echo " RewriteRule ^/fog/(.*)$ /fog/api/index.php [QSA,L]" >> "$etcconf" + echo "" >> "$etcconf" + else + echo " " >> "$etcconf" + echo " DirectoryIndex index.php index.html index.htm" >> "$etcconf" + echo " " >> "$etcconf" + echo " RewriteEngine On" >> "$etcconf" + echo " RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)" >> "$etcconf" + echo " RewriteRule .* - [F]" >> "$etcconf" + echo " RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f" >> "$etcconf" + echo " RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-d" >> "$etcconf" + echo " RewriteRule ^/fog/(.*)$ /fog/api/index.php [QSA,L]" >> "$etcconf" + echo "" >> "$etcconf" + fi + diffconfig "${etcconf}" + errorStat $? + ln -s $webdirdest $webdirdest/ >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + if [[ $osid -eq 2 ]]; then + a2enmod $phpcmd >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + a2enmod proxy_fcgi setenvif >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + a2enmod rewrite >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + a2enmod ssl >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + a2ensite "001-fog" >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + a2dissite "000-default" >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + fi ;; esac - if [[ -n $phpfpmconf ]]; then - sed -i 's/listen = .*/listen = 127.0.0.1:9000/g' $phpfpmconf >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - sed -i 's/^[;]pm\.max_requests = .*/pm.max_requests = 2000/g' $phpfpmconf >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - sed -i 's/^[;]php_admin_value\[memory_limit\] = .*/php_admin_value[memory_limit] = 256M/g' $phpfpmconf >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - sed -i 's/pm\.max_children = .*/pm.max_children = 50/g' $phpfpmconf >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - sed -i 's/pm\.min_spare_servers = .*/pm.min_spare_servers = 5/g' $phpfpmconf >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - sed -i 's/pm\.max_spare_servers = .*/pm.max_spare_servers = 10/g' $phpfpmconf >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - sed -i 's/pm\.start_servers = .*/pm.start_servers = 5/g' $phpfpmconf >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - fi - if [[ $osid -eq 2 ]]; then - a2enmod $phpcmd >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - a2enmod proxy_fcgi setenvif >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - a2enmod rewrite >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - a2enmod ssl >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - a2ensite "001-fog" >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - a2dissite "000-default" >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + ;; + *) ;; + esac + dots "Configuring PHP FPM" + case $osid in + 1) + phpfpmconf='/etc/php-fpm.d/www.conf'; + ;; + 2) + if [[ $php_ver == 5 ]]; then + phpfpmconf="/etc/php$php_ver/fpm/pool.d/www.conf" + else + phpfpmconf="/etc/php/$php_ver/fpm/pool.d/www.conf" fi ;; + 3) + phpfpmconf='/etc/php/php-fpm.d/www.conf' + ;; esac + if [[ -n $phpfpmconf ]]; then + sed -i 's/listen = .*/listen = 127.0.0.1:9000/g' $phpfpmconf >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/^[;]pm\.max_requests = .*/pm.max_requests = 2000/g' $phpfpmconf >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/^[;]php_admin_value\[memory_limit\] = .*/php_admin_value[memory_limit] = 256M/g' $phpfpmconf >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/pm\.max_children = .*/pm.max_children = 50/g' $phpfpmconf >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/pm\.min_spare_servers = .*/pm.min_spare_servers = 5/g' $phpfpmconf >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/pm\.max_spare_servers = .*/pm.max_spare_servers = 10/g' $phpfpmconf >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/pm\.start_servers = .*/pm.start_servers = 5/g' $phpfpmconf >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + fi + echo "Done" dots "Starting and checking status of web services" case $systemctl in yes) case $osid in 2) - systemctl is-active --quiet apache2 $phpfpm && systemctl stop apache2 $phpfpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 || true - systemctl is-active --quiet apache2 $phpfpm && true || systemctl start apache2 $phpfpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - systemctl status apache2 $phpfpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + systemctl is-active --quiet $webserver $phpfpm && systemctl stop $webserver $phpfpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 || true + systemctl is-active --quiet $webserver $phpfpm && true || systemctl start $webserver $phpfpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + systemctl status $webserver $phpfpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 ;; *) - systemctl is-active --quiet httpd php-fpm && systemctl stop httpd php-fpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 || true + systemctl is-active --quiet $webserver php-fpm && systemctl stop $webserver php-fpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 || true sleep 1 - systemctl is-active --quiet httpd php-fpm && true || systemctl start httpd php-fpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + systemctl is-active --quiet $webserver php-fpm && true || systemctl start $webserver php-fpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 sleep 1 - systemctl status httpd php-fpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + systemctl status $webserver php-fpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 ;; esac ;; *) case $osid in 2) - service apache2 stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - service apache2 start >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + service $webserver stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + service $webserver start >>$workingdir/error_logs/fog_error_${version}.log 2>&1 service $phpfpm stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 service $phpfpm start >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - service apache2 status >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + service $webserver status >>$workingdir/error_logs/fog_error_${version}.log 2>&1 service $phpfpm status >>$workingdir/error_logs/fog_error_${version}.log 2>&1 ;; + 4) + rc-service nginx stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + rc-service nginx start >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + rc-service $phpfpm stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + rc-service $phpfpm start >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + rc-service nginx status >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + rc-service $phpfpm status >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + ;; *) - service httpd stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - service httpd start >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + service $webserver stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + service $webserver start >>$workingdir/error_logs/fog_error_${version}.log 2>&1 service php-fpm stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 service php-fpm start >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - service httpd status >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + service $webserver status >>$workingdir/error_logs/fog_error_${version}.log 2>&1 service php-fpm status >>$workingdir/error_logs/fog_error_${version}.log 2>&1 ;; esac @@ -2122,10 +2272,10 @@ configureHttpd() { yes) case $osid in 1|3) - systemctl is-active --quiet httpd php-fpm && systemctl stop httpd php-fpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 || true + systemctl is-active --quiet $webserver php-fpm && systemctl stop $webserver php-fpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 || true ;; 2) - systemctl is-active --quiet apache2 php${php_ver}-fpm && systemctl stop apache2 php${php_ver}-fpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 || true + systemctl is-active --quiet $webserver php${php_ver}-fpm && systemctl stop $webserver php${php_ver}-fpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 || true ;; esac errorStat $? @@ -2133,15 +2283,20 @@ configureHttpd() { *) case $osid in 1) - service httpd stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + service $webserver stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 service php-fpm stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 errorStat $? ;; 2) - service apache2 stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + service $webserver stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 service php${php_ver}-fpm stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 errorStat $? ;; + 4) + rc-service nginx stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + errorStat $? + service php-fpm${php_ver} stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + ;; esac ;; esac @@ -2157,7 +2312,21 @@ configureHttpd() { echo " Could not find $phpini!" exit 1 fi - if [[ $osid -eq 3 ]]; then + if [[ $osid -eq 4 ]]; then + sed -i 's/;extension=bcmath/extension=bcmath/g' $phpini >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/;extension=curl/extension=curl/g' $phpini >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/;extension=ftp/extension=ftp/g' $phpini >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/;extension=gd/extension=gd/g' $phpini >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/;extension=gettext/extension=gettext/g' $phpini >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/;extension=ldap/extension=ldap/g' $phpini >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/;extension=mysqli/extension=mysqli/g' $phpini >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/;extension=openssl/extension=openssl/g' $phpini >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/;extension=pdo_mysql/extension=pdo_mysql/g' $phpini >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/;extension=posix/extension=posix/g' $phpini >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/;extension=sockets/extension=sockets/g' $phpini >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/;extension=zip/extension=zip/g' $phpini >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sed -i 's/$open_basedir\ =/;open_basedir\ =/g' $phpini >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + elif [[ $osid -eq 4 ]]; then if [[ ! -f $httpdconf ]]; then echo " Apache configs not found!" exit 1 @@ -2392,20 +2561,23 @@ die(); fi fi fi - dots "Enabling apache and fpm services on boot" + dots "Enabling $webserver and fpm services on boot" if [[ $osid -eq 2 ]]; then if [[ $systemctl == yes ]]; then - systemctl is-enabled --quiet apache2 && true || systemctl enable apache2 >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + systemctl is-enabled --quiet $webserver && true || systemctl enable $webserver >>$workingdir/error_logs/fog_error_${version}.log 2>&1 systemctl is-enabled --quiet $phpfpm && true || systemctl enable $phpfpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 else - sysv-rc-conf apache2 on >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + sysv-rc-conf $webserver on >>$workingdir/error_logs/fog_error_${version}.log 2>&1 sysv-rc-conf $phpfpm on >>$workingdir/error_logs/fog_error_${version}.log 2>&1 fi elif [[ $systemctl == yes ]]; then - systemctl is-enabled --quiet httpd php-fpm && true || systemctl enable httpd php-fpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + systemctl is-enabled --quiet $webserver php-fpm && true || systemctl enable $webserver php-fpm >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + elif [[ $osid -eq 4 ]]; then + rc-update add php-fpm${php_ver} >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + rc-update add $webserver >>$workingdir/error_logs/fog_error_${version}.log 2>&1 else chkconfig php-fpm on >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - chkconfig httpd on >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + chkconfig $webserver on >>$workingdir/error_logs/fog_error_${version}.log 2>&1 fi errorStat $? createSSLCA @@ -2453,7 +2625,11 @@ downloadfiles() { curl --silent -kOL $hashurl >>$workingdir/error_logs/fog_error_${version}.log 2>&1 fi while [[ $checksum -ne 0 && $cnt -lt 10 ]]; do - [[ -f $hashfile ]] && sha256sum --check $hashfile >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + if [[ $osid -eq 4 ]]; then + [[ -f $hashfile ]] && sha256sum -c $hashfile >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + else + [[ -f $hashfile ]] && sha256sum --check $hashfile >>$workingdir/error_logs/fog_error_${version}.log 2>&1 + fi checksum=$? if [[ $checksum -ne 0 ]]; then curl --silent -kOL $url >>$workingdir/error_logs/fog_error_${version}.log diff --git a/lib/common/input.sh b/lib/common/input.sh index 758b2c8d22..30a62ed625 100755 --- a/lib/common/input.sh +++ b/lib/common/input.sh @@ -24,6 +24,9 @@ if [[ $guessdefaults == 1 ]]; then *[Aa][Rr][Cc][Hh]*) strSuggestedOS=3 ;; + *[Aa][Ll][Pp][Ii][Nn][Ee]*) + strSuggestedOS=4 + ;; *) strSuggestedOS=1 ;; diff --git a/lib/redhat/config.sh b/lib/redhat/config.sh index 754ebfd520..27c045466a 100755 --- a/lib/redhat/config.sh +++ b/lib/redhat/config.sh @@ -19,6 +19,7 @@ [[ -z $packageQuery ]] && packageQuery="rpm -q \$x" case $linuxReleaseName in *[Mm][Aa][Gg][Ee][Ii][Aa]*) + webserver="apache" [[ -z $packages ]] && packages="apache apache-mod_fcgid apache-mod_php apache-mod_ssl cdrkit-genisoimage curl dhcp-server gcc gcc-c++ git gzip htmldoc lftp m4 make mariadb mariadb-common mariadb-common-core mariadb-core net-tools nfs-utils perl perl-Crypt-PasswdMD5 php-cli php-curl php-fpm php-gd php-gettext php-ldap php-mbstring php-mysqlnd php-pcntl php-pdo php-pdo_mysql tar tftp-server vsftpd wget xinetd" [[ -z $packageinstaller ]] && packageinstaller="urpmi --auto" [[ -z $packagelist ]] && packagelist="urpmq" @@ -30,13 +31,14 @@ case $linuxReleaseName in [[ -z $etcconf ]] && etcconf="/etc/httpd/conf/conf.d/fog.conf" ;; *) - [[ -z $etcconf ]] && etcconf="/etc/httpd/conf.d/fog.conf" + [[ -z $webserver ]] && webserver="httpd" + [[ -z $etcconf ]] && etcconf="/etc/$webserver/conf.d/fog.conf" [[ -z $packages ]] && { if [[ $OSVersion -gt 7 ]]; then - packages="curl dhcp-server gcc gcc-c++ genisoimage git gzip httpd lftp m4 make mod_fastcgi mod_ssl mtools mysql mysql-server net-tools nfs-utils openssl php php-cli php-common php-fpm php-gd php-json php-ldap php-mbstring php-mysqlnd php-process syslinux tar tftp-server vsftpd wget xinetd xz-devel" - [[ -z $dhcpname ]] && dhcpname="dhcp-server" + packages="curl dhcp-server gcc gcc-c++ genisoimage git gzip lftp m4 make mod_fastcgi mod_ssl mtools mysql mysql-server net-tools nfs-utils openssl php php-cli php-common php-fpm php-gd php-json php-ldap php-mbstring php-mysqlnd php-process syslinux tar tftp-server vsftpd wget xinetd xz-devel" + [[ -z $dhcpname ]] && dhcpname="dhcp-server" else - packages="curl dhcp gcc gcc-c++ genisoimage git gzip httpd lftp m4 make mod_fastcgi mod_ssl mtools mysql mysql-server net-tools nfs-utils openssl php php-cli php-common php-fpm php-gd php-ldap php-mbstring php-mysqlnd php-process syslinux tar tftp-server vsftpd wget xinetd xz-devel" + packages="curl dhcp gcc gcc-c++ genisoimage git gzip lftp m4 make mod_fastcgi mod_ssl mtools mysql mysql-server net-tools nfs-utils openssl php php-cli php-common php-fpm php-gd php-ldap php-mbstring php-mysqlnd php-process syslinux tar tftp-server vsftpd wget xinetd xz-devel" fi } pkginst=$(command -v dnf) @@ -72,9 +74,17 @@ if [[ -z $webdirdest ]]; then fi [[ -z $webredirect ]] && webredirect="${webdirdest}/index.php" [[ -z $apacheuser ]] && apacheuser="apache" -[[ -z $apachelogdir ]] && apachelogdir="/var/log/httpd" -[[ -z $apacheerrlog ]] && apacheerrlog="$apachelogdir/error_log" -[[ -z $apacheacclog ]] && apacheacclog="$apachelogdir/access_log" +[[ -z $apachelogdir ]] && apachelogdir="/var/log/$webserver" +if [[ $webserver == httpd ]]; then + httperrlog="error_log" + httpacclog="access_log" +elif [[ $websever == nginx ]]; then + httperrlog="error.log" + httpacclog="access.log" +fi +[[ $webserver == httpd ]] +[[ -z $apacheerrlog ]] && apacheerrlog="$apachelogdir/$httperrlog" +[[ -z $apacheacclog ]] && apacheacclog="$apachelogdir/$httpacclog" [[ -z $phpini ]] && phpini="/etc/php.ini" [[ -z $storageLocation ]] && storageLocation="/images" [[ -z $storageLocationCapture ]] && storageLocationCapture="${storageLocation}/dev" diff --git a/lib/ubuntu/config.sh b/lib/ubuntu/config.sh index 31e81807c2..6b6606ef79 100755 --- a/lib/ubuntu/config.sh +++ b/lib/ubuntu/config.sh @@ -18,6 +18,7 @@ # [[ -z $repo ]] && repo="php" [[ -z $packageQuery ]] && packageQuery="dpkg -l \$x | grep '^ii'" +[[ -z $webserver ]] && webserver="apache2" if [[ $linuxReleaseName == +(*[Bb][Ii][Aa][Nn]*) ]]; then sysvrcconf="sysv-rc-conf" phpgettext="php-gettext" @@ -63,7 +64,7 @@ elif [[ $linuxReleaseName == +(*[Uu][Bb][Uu][Nn][Tt][Uu]*|*[Mm][Ii][Nn][Tt]*) ]] php_ver="7.1" x="*php5* *php-5*" eval $packageQuery >>$workingdir/error_logs/fog_error_${version}.log 2>&1 - if [[ $? -ne 0 ]]; then + if [[ $webserver == "apache2" && $? -ne 0 ]]; then if [[ $autoaccept != yes ]]; then echo " *** Detected a potential need to reinstall apache and php files." echo " *** This will remove the /etc/php* and /etc/apache2* directories" @@ -83,7 +84,7 @@ elif [[ $linuxReleaseName == +(*[Uu][Bb][Uu][Nn][Tt][Uu]*|*[Mm][Ii][Nn][Tt]*) ]] echo "Done" dots "Stopping web services" if [[ $systemctl == yes ]]; then - systemctl is-active --quiet apache2 && systemctl stop apache2 >/dev/null 2>&1 || true + systemctl is-active --quiet $webserver && systemctl stop $webserver >/dev/null 2>&1 || true fi [[ ! $? -eq 0 ]] && echo "Failed" || echo "Done" dots "Removing the apache and php packages" @@ -109,7 +110,10 @@ case $linuxReleaseName in x="mysql-server" eval $packageQuery >>$workingdir/error_logs/fog_error_${version}.log 2>&1 [[ $? -eq 0 ]] && db_packages="mysql-client mysql-server" || db_packages="mariadb-client mariadb-server" - packages="apache2 build-essential cpp curl g++ gawk gcc genisoimage git gzip htmldoc isc-dhcp-server isolinux lftp libapache2-mod-fastcgi libapache2-mod-php${php_ver} libc6 libcurl3 liblzma-dev m4 ${db_packages} net-tools nfs-kernel-server openssh-server $phpfpm php-gettext php${php_ver} php${php_ver}-cli php${php_ver}-curl php${php_ver}-gd php${php_ver}-json $phpldap php${php_ver}-mysql php${php_ver}-mysqlnd ${sysvrcconf} tar tftpd-hpa tftp-hpa vsftpd wget xinetd zlib1g" + if [[ $webserver == "apache2" ]]; then + libapache="libapache2-mod-fastcgi libapache2-mod-php${php_ver}" + fi + packages="build-essential cpp curl g++ gawk gcc genisoimage git gzip htmldoc isc-dhcp-server isolinux lftp ${libapache} libc6 libcurl3 liblzma-dev m4 ${db_packages} net-tools nfs-kernel-server openssh-server $phpfpm php-gettext php${php_ver} php${php_ver}-cli php${php_ver}-curl php${php_ver}-gd php${php_ver}-json $phpldap php${php_ver}-mysql php${php_ver}-mysqlnd ${sysvrcconf} tar tftpd-hpa tftp-hpa vsftpd wget xinetd zlib1g" else # make sure we update all the php version numbers with those specified above packages=${packages//php[0-9]\.[0-9]/php${php_ver}} @@ -140,10 +144,11 @@ if [[ -z $webdirdest ]]; then fi [[ -z $webredirect ]] && webredirect="$docroot/index.php" [[ -z $apacheuser ]] && apacheuser="www-data" -[[ -z $apachelogdir ]] && apachelogdir="/var/log/apache2" +[[ -z $apachelogdir ]] && apachelogdir="/var/log/$webserver" [[ -z $apacheerrlog ]] && apacheerrlog="$apachelogdir/error.log" [[ -z $apacheacclog ]] && apacheacclog="$apachelogdir/access.log" -[[ -z $etcconf ]] && etcconf="/etc/apache2/sites-available/001-fog.conf" +# This will likely need adjustment as apache2 is only known one for now +[[ -z $etcconf ]] && etcconf="/etc/$webserver/sites-available/001-fog.conf" [[ $php_ver != 5 ]] && phpini="/etc/$phpcmd/$php_ver/fpm/php.ini" || phpini="/etc/$phpcmd/fpm/php.ini" [[ -z $storageLocation ]] && storageLocation="/images" [[ -z $storageLocationCapture ]] && storageLocationCapture="${storageLocation}/dev" diff --git a/packages/init.d/alpine/FOGImageReplicator b/packages/init.d/alpine/FOGImageReplicator new file mode 100755 index 0000000000..dee3eb692b --- /dev/null +++ b/packages/init.d/alpine/FOGImageReplicator @@ -0,0 +1,25 @@ + +#!/bin/openrc-run +### BEGIN INIT INFO +# Provides: FOGImageReplicator +# Required-Start: $local_fs $remote_fs $network $syslog $network $inetd $apache2 $mysql +# Required-Stop: $local_fs $remote_fs $network $syslog $network $inetd +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# X-Interactive: true +# Short-Description: Start/Stop FOGMulticastManager +# Long-Description: Created by Chuck Syperski +# Used to stop and start the FOGMulticastManager Service. +# FOGMulticastManager is used to destribute images through +# Multicast. Useful to image large amounts of systems simultaneously. +# It serves this ability only if it's the master node. +### END INIT INFO + +name=FOGImageReplicator +command=/opt/fog/service/$name/$name +pidfile=/var/run/fog/$name.pid +command_background="yes" + +depend() { + need net +} diff --git a/packages/init.d/alpine/FOGImageSize b/packages/init.d/alpine/FOGImageSize new file mode 100755 index 0000000000..4ab7dee7c0 --- /dev/null +++ b/packages/init.d/alpine/FOGImageSize @@ -0,0 +1,21 @@ +#!/bin/openrc-run +### BEGIN INIT INFO +# Provides: FOGImageSize +# Required-Start: $local_fs $remote_fs $network $syslog $network $inetd $apache2 $mysql +# Required-Stop: $local_fs $remote_fs $network $syslog $network $inetd +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# X-Interactive: true +# Short-Description: Start/Stop FOGImageSize +# Long-Description: Created by Chuck Syperski +# Used to stop and start the FOGImageSize Service. +### END INIT INFO + +name=FOGImageSize +command=/opt/fog/service/$name/$name +pidfile=/var/run/fog/$name.pid +command_background="yes" + +depend() { + need net +} diff --git a/packages/init.d/alpine/FOGMulticastManager b/packages/init.d/alpine/FOGMulticastManager new file mode 100755 index 0000000000..da5167f189 --- /dev/null +++ b/packages/init.d/alpine/FOGMulticastManager @@ -0,0 +1,23 @@ +#!/bin/openrc-run +### BEGIN INIT INFO +# Provides: FOGMulticastManager +# Required-Start: $local_fs $remote_fs $network $syslog $network $inetd $apache2 $mysql +# Required-Stop: $local_fs $remote_fs $network $syslog $network $inetd +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# X-Interactive: true +# Short-Description: Start/Stop FOGMulticastManager +# Long-Description: Created by Chuck Syperski +# Used to stop and start the FOGMulticastManager Service. +# FOGMulticastManager is used to destribute images through +# Multicast. Useful to image large amounts of systems simultaneously. +# It serves this ability only if it's the master node. +### END INIT INFO +name=FOGMulticastManager +command=/opt/fog/service/$name/$name +pidfile=/var/run/fog/$name.pid +command_background="yes" + +depend() { + need net +} diff --git a/packages/init.d/alpine/FOGPingHosts b/packages/init.d/alpine/FOGPingHosts new file mode 100755 index 0000000000..0b9d11d295 --- /dev/null +++ b/packages/init.d/alpine/FOGPingHosts @@ -0,0 +1,24 @@ +#!/bin/openrc-run +### BEGIN INIT INFO +# Provides: FOGPingHosts +# Required-Start: $local_fs $remote_fs $network $syslog $network $inetd $apache2 $mysql +# Required-Stop: $local_fs $remote_fs $network $syslog $network $inetd +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# X-Interactive: true +# Short-Description: Start/Stop FOGPingHosts +# Long-Description: Created by Chuck Syperski +# Used to stop and start the FOGPingHosts Service. +# FOGPingHosts is used to destribute images through +# Multicast. Useful to image large amounts of systems simultaneously. +# It serves this ability only if it's the master node. +### END INIT INFO + +name=FOGPingHosts +command=/opt/fog/service/$name/$name +pidfile=/var/run/fog/$name.pid +command_background="yes" + +depend() { + need net +} diff --git a/packages/init.d/alpine/FOGScheduler b/packages/init.d/alpine/FOGScheduler new file mode 100755 index 0000000000..8290912b32 --- /dev/null +++ b/packages/init.d/alpine/FOGScheduler @@ -0,0 +1,24 @@ +#!/bin/openrc-run +### BEGIN INIT INFO +# Provides: FOGScheduler +# Required-Start: $local_fs $remote_fs $network $syslog $network $inetd $apache2 $mysql +# Required-Stop: $local_fs $remote_fs $network $syslog $network $inetd +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# X-Interactive: true +# Short-Description: Start/Stop FOGScheduler +# Long-Description: Created by Chuck Syperski +# Used to stop and start the FOGScheduler Service. +# FOGScheduler is used to destribute images through +# Multicast. Useful to image large amounts of systems simultaneously. +# It serves this ability only if it's the master node. +### END INIT INFO + +name=FOGScheduler +command=/opt/fog/service/$name/$name +pidfile=/var/run/fog/$name.pid +command_background="yes" + +depend() { + need net +} diff --git a/packages/init.d/alpine/FOGSnapinHash b/packages/init.d/alpine/FOGSnapinHash new file mode 100755 index 0000000000..79a96363d1 --- /dev/null +++ b/packages/init.d/alpine/FOGSnapinHash @@ -0,0 +1,24 @@ +#!/bin/openrc-run +### BEGIN INIT INFO +# Provides: FOGSnapinHash +# Required-Start: $local_fs $remote_fs $network $syslog $network $inetd $apache2 $mysql +# Required-Stop: $local_fs $remote_fs $network $syslog $network $inetd +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# X-Interactive: true +# Short-Description: Start/Stop FOGSnapinHash +# Long-Description: Created by Chuck Syperski +# Used to stop and start the FOGSnapinHash Service. +# FOGSnapinHash is used to destribute images through +# Multicast. Useful to image large amounts of systems simultaneously. +# It serves this ability only if it's the master node. +### END INIT INFO + +name=FOGSnapinHash +command=/opt/fog/service/$name/$name +pidfile=/var/run/fog/$name.pid +command_background="yes" + +depend() { + need net +} diff --git a/packages/init.d/alpine/FOGSnapinReplicator b/packages/init.d/alpine/FOGSnapinReplicator new file mode 100755 index 0000000000..4658bc6b51 --- /dev/null +++ b/packages/init.d/alpine/FOGSnapinReplicator @@ -0,0 +1,24 @@ +#!/bin/openrc-run +### BEGIN INIT INFO +# Provides: FOGSnapinReplicator +# Required-Start: $local_fs $remote_fs $network $syslog $network $inetd $apache2 $mysql +# Required-Stop: $local_fs $remote_fs $network $syslog $network $inetd +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# X-Interactive: true +# Short-Description: Start/Stop FOGSnapinReplicator +# Long-Description: Created by Chuck Syperski +# Used to stop and start the FOGSnapinReplicator Service. +# FOGSnapinReplicator is used to destribute images through +# Multicast. Useful to image large amounts of systems simultaneously. +# It serves this ability only if it's the master node. +### END INIT INFO + +name=FOGSnapinReplicator +command=/opt/fog/service/$name/$name +pidfile=/var/run/fog/$name.pid +command_background="yes" + +depend() { + need net +} diff --git a/packages/web/lib/fog/fogpage.class.php b/packages/web/lib/fog/fogpage.class.php index cca7f5aa57..4a138d214d 100644 --- a/packages/web/lib/fog/fogpage.class.php +++ b/packages/web/lib/fog/fogpage.class.php @@ -1718,12 +1718,12 @@ public function kernelfetch() ) { if ($msg == 'dl') { $destFilename = $_SESSION['dest-kernel-file']; - if (preg_match('/\.php$/', $destFilename)) { - throw new Exception(_('Filename not allowed!')); + if (preg_match('/\./', $destFilename)) { + throw new Exception(_('Dot in Filename not allowed!')); } $dlUrl = $_SESSION['dl-kernel-file']; - if (false === stripos($dlUrl, 'https://fogproject.org/') && - false === stripos($dlUrl, 'https://github.com/FOGProject/') + if (!(0 === stripos($dlUrl, 'https://fogproject.org/') || + 0 === stripos($dlUrl, 'https://github.com/FOGProject/')) ) { throw new Exception(_('Specified download URL not allowed!')); } diff --git a/packages/web/lib/fog/system.class.php b/packages/web/lib/fog/system.class.php index a08904cbc4..dd8515f4ee 100644 --- a/packages/web/lib/fog/system.class.php +++ b/packages/web/lib/fog/system.class.php @@ -59,7 +59,7 @@ private static function _versionCompare() public function __construct() { self::_versionCompare(); - define('FOG_VERSION', '1.6.0-alpha.1116'); + define('FOG_VERSION', '1.6.0-alpha.1118'); define('FOG_CHANNEL', 'Alpha'); define('FOG_SCHEMA', 282); define('FOG_BCACHE_VER', 143);