diff --git a/bin/installfog.sh b/bin/installfog.sh
index aa7a8197c6..56beb2ecde 100755
--- a/bin/installfog.sh
+++ b/bin/installfog.sh
@@ -23,7 +23,30 @@ if [[ ! $EUID -eq 0 ]]; then
echo "FOG Installation must be run as root user"
exit 1
fi
-which useradd >/dev/null 2>&1
+
+[[ -z $OS ]] && OS=$(uname -s)
+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
+ if [[ -f /etc/os-release ]]; then
+ [[ -z $linuxReleaseName ]] && linuxReleaseName=$(sed -n 's/^NAME=\(.*\)/\1/p' /etc/os-release | tr -d '"')
+ [[ -z $OSVersion ]] && OSVersion=$(sed -n 's/^VERSION_ID=\([^.]*\).*/\1/p' /etc/os-release | tr -d '"')
+ elif [[ -f /etc/redhat-release ]]; then
+ [[ -z $linuxReleaseName ]] && linuxReleaseName=$(cat /etc/redhat-release | awk '{print $1}')
+ [[ -z $OSVersion ]] && OSVersion=$(cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*// | awk -F. '{print $1}')
+ elif [[ -f /etc/debian_version ]]; then
+ [[ -z $linuxReleaseName ]] && linuxReleaseName='Debian'
+ [[ -z $OSVersion ]] && OSVersion=$(cat /etc/debian_version)
+ fi
+fi
+
+if [[ $linuxReleaseName == "Alpine Linux" ]]; then
+ echo "Linuxname = ${linuxReleaseName}"
+ which adduser >/dev/null 2>&1
+else
+ which useradd >/dev/null 2>&1
+fi
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"
@@ -360,6 +383,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..2e15066e29
--- /dev/null
+++ b/lib/alpine/config.sh
@@ -0,0 +1,54 @@
+#!/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 nginx 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}"
diff --git a/lib/common/config.sh b/lib/common/config.sh
index e5c1bb06cf..42d54cf2ef 100755
--- a/lib/common/config.sh
+++ b/lib/common/config.sh
@@ -1,3 +1,4 @@
+# lib/common/config.sh
# FOG is a computer imaging solution.
# Copyright (C) 2007 Chuck Syperski & Jian Zhang
#
@@ -72,6 +73,9 @@ else
*[Uu][Bb][Uu][Nn][Tt][Uu]*|*[Bb][Ii][Aa][Nn]*|*[Mm][Ii][Nn][Tt]*)
initdsrc="../packages/init.d/ubuntu"
;;
+ *[Aa][Ll][Pp][Ii][Nn][Ee]*)
+ initdsrc="../packages/init.d/alpine"
+ ;;
*)
initdsrc="../packages/init.d/redhat"
;;
diff --git a/lib/common/functions.sh b/lib/common/functions.sh
index bc3ec59591..30af7c22a5 100755
--- a/lib/common/functions.sh
+++ b/lib/common/functions.sh
@@ -426,29 +426,31 @@ installFOGServices() {
errorStat $?
}
configureUDPCast() {
- dots "Setting up UDPCast"
- cp -Rf "$udpcastsrc" "$udpcasttmp"
- cur=$(pwd)
- cd /tmp
- tar xvzf "$udpcasttmp" >>$workingdir/error_logs/fog_error_${version}.log 2>&1
- cd $udpcastout
- grep -q 'BCM[0-9][0-9][0-9][0-9]' /proc/cpuinfo >>$workingdir/error_logs/fog_error_${version}.log 2>&1
- if [[ $? -eq 0 ]]; then
- wget -qO config.guess "https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess" >>$workingdir/error_logs/fog_error_${version}.log 2>&1
- wget -qO config.sub "https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub" >>$workingdir/error_logs/fog_error_${version}.log 2>&1
- chmod +x config.guess config.sub >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ if [[ $osid -ne 4 ]]; then
+ dots "Setting up UDPCast"
+ cp -Rf "$udpcastsrc" "$udpcasttmp"
+ cur=$(pwd)
+ cd /tmp
+ tar xvzf "$udpcasttmp" >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ cd $udpcastout
+ grep -q 'BCM[0-9][0-9][0-9][0-9]' /proc/cpuinfo >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ if [[ $? -eq 0 ]]; then
+ wget -qO config.guess "https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess" >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ wget -qO config.sub "https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub" >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ chmod +x config.guess config.sub >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ fi
+ errorStat $?
+ dots "Configuring UDPCast"
+ ./configure >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ errorStat $?
+ dots "Building UDPCast"
+ make >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ errorStat $?
+ dots "Installing UDPCast"
+ make install >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ errorStat $?
+ cd $cur
fi
- errorStat $?
- dots "Configuring UDPCast"
- ./configure >>$workingdir/error_logs/fog_error_${version}.log 2>&1
- errorStat $?
- dots "Building UDPCast"
- make >>$workingdir/error_logs/fog_error_${version}.log 2>&1
- errorStat $?
- dots "Installing UDPCast"
- make install >>$workingdir/error_logs/fog_error_${version}.log 2>&1
- errorStat $?
- cd $cur
}
configureFTP() {
dots "Setting up and starting VSFTP Server..."
@@ -530,7 +532,7 @@ configureTFTPandPXE() {
if [[ -f $tftpconfig ]]; then
cp -Rf $tftpconfig ${tftpconfig}.fogbackup >>$workingdir/error_logs/fog_error_${version}.log 2>&1
fi
- if [[ $noTftpBuild != "true" ]]; then
+ 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
case $systemctl in
@@ -571,6 +573,10 @@ configureTFTPandPXE() {
sleep 2
$initdpath/xinetd start >>$workingdir/error_logs/fog_error_${version}.log 2>&1
sleep 2
+ elif [[ $osid -eq 4 ]]; then
+ $initdpath/in.tftpd stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ sleep 2
+ $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
@@ -762,7 +768,7 @@ installPackages() {
done
;;
php${php_ver}-mysql*)
- for phpmysql in $(echo php${php_ver}-mysqlnd php${php_ver}-mysql); do
+ for phpmysql in $(echo php${php_ver}-mysqli php${php_ver}-mysqlnd php${php_ver}-mysql); do
eval $packagelist "$phpmysql" >>$workingdir/error_logs/fog_error_${version}.log 2>&1
if [[ $? -eq 0 ]]; then
x=$phpmysql
@@ -969,6 +975,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
@@ -1092,7 +1104,11 @@ installInitScript() {
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 '@')
+ if [[ $osid -eq 4 ]]; then
+ dbservice=$(rc-service -l | grep mariadb)
+ else
+ dbservice=$(systemctl list-units | grep -o -e "mariadb\.service" -e "mysqld\.service" -e "mysql\.service" | tr -d '@')
+ fi
[[ -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
@@ -1387,7 +1403,14 @@ configureUsers() {
echo "Skipped"
fi
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
+ adduser -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"
+ else
+ useradd -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
@@ -1402,7 +1425,9 @@ configureUsers() {
#errorStat $?
fi
dots "Locking $username as a system account"
- chsh -s /bin/bash $username >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ if [[ $osid -ne 4 ]]; then
+ chsh -s /bin/bash $username >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ fi
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 'fog' account \npassword and therefore lock you out of the system!\n\nTake care, \nyour FOGproject team"
grep -q "exit 1" /home/$username/.bashrc || cat >>/home/$username/.bashrc <>$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 " 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"
+ if [[ $osid -eq 4 ]]; then
+ dots "Setting up Nginx host${sslenabled}"
+ echo "server {" > "$etcconf"
+ echo "listen 80;" >> "$etcconf"
+ echo "root ${docroot};" >> "$etcconf"
+ echo "index index.html index.htm index.php;" >> "$etcconf"
+ echo "server_name localhost;" >> "$etcconf"
+ echo "client_max_body_size 32m;" >> "$etcconf"
+ echo "error_page 500 502 503 504 /50x.html;" >> "$etcconf"
+ echo "location = /50x.html {" >> "$etcconf"
+ echo " root /var/lib/nginx/html;" >> "$etcconf"
+ echo "}" >> "$etcconf"
+ echo "location ~ \.php$ {" >> "$etcconf"
+ echo " set \$phproot /var/www;" >> "$etcconf"
+ echo " root /var/www;" >> "$etcconf"
+ echo " fastcgi_pass 127.0.0.1:9000;" >> "$etcconf"
+ echo " fastcgi_index index.php;" >> "$etcconf"
+ echo " include fastcgi.conf;" >> "$etcconf"
+ echo " fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;" >> "$etcconf"
+
+ echo "}" >> "$etcconf"
+ echo "}" >> "$etcconf"
+ cat $etcconf >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ if [[ ${DEBUGMODE} == true ]]; then
+ sed -i "s/display_errors = Off/display_errors = On/g" /etc/php7/php.ini >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ fi
+ else
+ 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"
@@ -1925,73 +1957,94 @@ EOF
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 " KeepAlive Off" >> "$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"
- 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';
- ;;
- 2)
- if [[ $php_ver == 5 ]]; then
- phpfpmconf="/etc/php$php_ver/fpm/pool.d/www.conf"
+ 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
- phpfpmconf="/etc/php/$php_ver/fpm/pool.d/www.conf"
+ echo " SetHandler \"proxy:fcgi://127.0.0.1:9000/\"" >> "$etcconf"
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
- 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
+ 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 " KeepAlive Off" >> "$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"
+ 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';
+ ;;
+ 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
+ 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
+ fi
dots "Starting and checking status of web services"
case $systemctl in
yes)
@@ -2026,6 +2079,18 @@ EOF
service apache2 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
+ sleep 2
+ rc-service nginx start >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ sleep 2
+ rc-service $phpfpm stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ sleep 2
+ rc-service $phpfpm start >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ sleep 2
+ 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
sleep 2
@@ -2070,6 +2135,11 @@ configureHttpd() {
errorStat $?
service php${php_ver}-fpm stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1
;;
+ 4)
+ rc-service nginx stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1 && sleep 2
+ errorStat $?
+ service php-fpm${php_ver} stop >>$workingdir/error_logs/fog_error_${version}.log 2>&1
+ ;;
esac
;;
esac
@@ -2085,7 +2155,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 3 ]]; then
if [[ ! -f $httpdconf ]]; then
echo " Apache configs not found!"
exit 1
@@ -2337,6 +2421,9 @@ die();
fi
elif [[ $systemctl == yes ]]; then
systemctl enable httpd 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 nginx >>$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
@@ -2389,7 +2476,11 @@ downloadfiles() {
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
diff --git a/lib/common/input.sh b/lib/common/input.sh
index bb8385923a..68fa479451 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/packages/init.d/alpine/FOGImageReplicator b/packages/init.d/alpine/FOGImageReplicator
new file mode 100644
index 0000000000..34afd740d8
--- /dev/null
+++ b/packages/init.d/alpine/FOGImageReplicator
@@ -0,0 +1,24 @@
+#!/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
+}
\ No newline at end of file
diff --git a/packages/init.d/alpine/FOGImageSize b/packages/init.d/alpine/FOGImageSize
new file mode 100644
index 0000000000..563a77fdc8
--- /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
+}
\ No newline at end of file
diff --git a/packages/init.d/alpine/FOGMulticastManager b/packages/init.d/alpine/FOGMulticastManager
new file mode 100644
index 0000000000..e991ffe38c
--- /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
+}
\ No newline at end of file
diff --git a/packages/init.d/alpine/FOGPingHosts b/packages/init.d/alpine/FOGPingHosts
new file mode 100644
index 0000000000..bb7f8b6940
--- /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
+}
\ No newline at end of file
diff --git a/packages/init.d/alpine/FOGScheduler b/packages/init.d/alpine/FOGScheduler
new file mode 100644
index 0000000000..3e2792aad3
--- /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
+}
\ No newline at end of file
diff --git a/packages/init.d/alpine/FOGSnapinHash b/packages/init.d/alpine/FOGSnapinHash
new file mode 100644
index 0000000000..43dda24d21
--- /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
+}
\ No newline at end of file
diff --git a/packages/init.d/alpine/FOGSnapinReplicator b/packages/init.d/alpine/FOGSnapinReplicator
new file mode 100644
index 0000000000..6087d752ba
--- /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
+}
\ No newline at end of file