summaryrefslogtreecommitdiffstats
path: root/installer/opengnsys_installer.sh
diff options
context:
space:
mode:
Diffstat (limited to 'installer/opengnsys_installer.sh')
-rwxr-xr-xinstaller/opengnsys_installer.sh354
1 files changed, 187 insertions, 167 deletions
diff --git a/installer/opengnsys_installer.sh b/installer/opengnsys_installer.sh
index 93f26622..72d02115 100755
--- a/installer/opengnsys_installer.sh
+++ b/installer/opengnsys_installer.sh
@@ -6,131 +6,151 @@
#####################################################################
-#### AVISO: Puede editar configuración de acceso por defecto.
-#### WARNING: Edit default access configuration if you wish.
-DEFAULT_MYSQL_ROOT_PASSWORD="passwordroot" # Clave por defecto root de MySQL
-DEFAULT_OPENGNSYS_DB_USER="usuog" # Usuario por defecto de acceso a la base de datos
-DEFAULT_OPENGNSYS_DB_PASSWD="passusuog" # Clave por defecto de acceso a la base de datos
-DEFAULT_OPENGNSYS_CLIENT_PASSWD="og" # Clave por defecto de acceso del cliente
-
-# Sólo ejecutable por usuario root
-if [ "$(whoami)" != 'root' ]; then
- echo "ERROR: this program must run under root privileges!!"
- exit 1
-fi
-
-echo -e "\\nOpenGnsys Installation"
-echo "=============================="
+#####################################################################
+####### Funciones de configuración
+#####################################################################
-# Clave root de MySQL
-while : ; do
- echo -n -e "\\nEnter root password for MySQL (${DEFAULT_MYSQL_ROOT_PASSWORD}): ";
- read -r MYSQL_ROOT_PASSWORD
- if [ -n "${MYSQL_ROOT_PASSWORD//[a-zA-Z0-9]/}" ]; then # Comprobamos que sea un valor alfanumerico
- echo -e "\\aERROR: Must be alphanumeric, try again..."
- else
- # Si esta vacio ponemos el valor por defecto
- MYSQL_ROOT_PASSWORD="${MYSQL_ROOT_PASSWORD:-$DEFAULT_MYSQL_ROOT_PASSWORD}"
- break
- fi
-done
+# Devuelve en la variable PASSWORD la clave introducida por el usuario (o la indicada por defecto)
+function enterPassword ()
+{
+ local PASSWORD2
+ local DEFAULT_PASSWORD="$1"
+
+ while : ; do
+ stty -echo
+ read -r PASSWORD
+ stty echo
+ if [ -z "$PASSWORD" ]; then
+ # Si esta vacio ponemos el valor por defecto
+ PASSWORD="${PASSWORD:-$DEFAULT_PASSWORD}"
+ break
+ else
+ if [ -n "${PASSWORD//[a-zA-Z0-9]/}" ]; then # Comprobamos que sea un valor alfanumerico
+ echo -e "\\aERROR: Password must be alphanumeric, try again..."
+ else
+ echo -n -e "\\nConfirm password: "
+ stty -echo
+ read -r PASSWORD2
+ stty echo
+ if [ "$PASSWORD" == "$PASSWORD2" ]; then
+ break
+ else
+ echo -e "\\aERROR: Passwords don't match, try again."
+ fi
+ fi
+ fi
+ echo -n -e "Please, enter a new password (${DEFAULT_PASSWORD}): "
+ done
+}
-# Usuario de acceso a la base de datos
-while : ; do
- echo -n -e "\\nEnter username for OpenGnsys console (${DEFAULT_OPENGNSYS_DB_USER}): "
- read -r OPENGNSYS_DB_USER
- if [ -n "${OPENGNSYS_DB_USER//[a-zA-Z0-9]/}" ]; then # Comprobamos que sea un valor alfanumerico
- echo -e "\\aERROR: Must be alphanumeric, try again..."
- else
- # Si esta vacio ponemos el valor por defecto
- OPENGNSYS_DB_USER="${OPENGNSYS_DB_USER:-$DEFAULT_OPENGNSYS_DB_USER}"
- break
- fi
-done
+# Recoge los datos de configuración introducidos por el usuario.
+function userData ()
+{
+ #### AVISO: Puede editar configuración de acceso por defecto.
+ #### WARNING: Edit default access configuration if you wish.
+ DEFAULT_MYSQL_ROOT_PASSWORD="passwordroot" # Clave por defecto root de MySQL
+ DEFAULT_OPENGNSYS_DB_USER="usuog" # Usuario por defecto de acceso a la base de datos
+ DEFAULT_OPENGNSYS_DB_PASSWD="passusuog" # Clave por defecto de acceso a la base de datos
+ DEFAULT_OPENGNSYS_CLIENT_PASSWD="og" # Clave por defecto de acceso del cliente
+ DEFAULT_OGLIVE="ogLive-bionic-5.0.0-27-generic-amd64-r20190830.7208cc9.iso" # Cliente ogLive
+
+ echo -e "\\nOpenGnsys Installation"
+ echo "=============================="
+
+ if [[ $- =~ s ]]; then
+ echo -e "\\nNot interactive mode: setting default configuration values.\\n"
+ MYSQL_ROOT_PASSWORD="$DEFAULT_MYSQL_ROOT_PASSWORD"
+ OPENGNSYS_DB_USER="$DEFAULT_OPENGNSYS_DB_USER"
+ OPENGNSYS_DB_PASSWD="$DEFAULT_OPENGNSYS_DB_PASSWD"
+ OPENGNSYS_CLIENT_PASSWD="$DEFAULT_OPENGNSYS_CLIENT_PASSWD"
+ OGLIVE="$DEFAULT_OGLIVE"
+ return
+ fi
+
+ # Clave root de MySQL
+ echo -n -e "\\nEnter root password for MySQL (${DEFAULT_MYSQL_ROOT_PASSWORD}): "
+ enterPassword "$DEFAULT_MYSQL_ROOT_PASSWORD"
+ MYSQL_ROOT_PASSWORD="$PASSWORD"
+
+ # Usuario de acceso a la base de datos
+ while : ; do
+ echo -n -e "\\n\\nEnter username for OpenGnsys console (${DEFAULT_OPENGNSYS_DB_USER}): "
+ read -r OPENGNSYS_DB_USER
+ if [ -n "${OPENGNSYS_DB_USER//[a-zA-Z0-9]/}" ]; then # Comprobamos que sea un valor alfanumerico
+ echo -e "\\aERROR: Must be alphanumeric, try again..."
+ else
+ # Si esta vacio ponemos el valor por defecto
+ OPENGNSYS_DB_USER="${OPENGNSYS_DB_USER:-$DEFAULT_OPENGNSYS_DB_USER}"
+ break
+ fi
+ done
-# Clave de acceso a la base de datos
-while : ; do
+ # Clave de acceso a la base de datos
echo -n -e "\\nEnter password for OpenGnsys console (${DEFAULT_OPENGNSYS_DB_PASSWD}): "
- read -r OPENGNSYS_DB_PASSWD
- if [ -n "${OPENGNSYS_DB_PASSWD//[a-zA-Z0-9]/}" ]; then # Comprobamos que sea un valor alfanumerico
- echo -e "\\aERROR: Must be alphanumeric, try again..."
- else
- # Si esta vacio ponemos el valor por defecto
- OPENGNSYS_DB_PASSWD="${OPENGNSYS_DB_PASSWD:-$DEFAULT_OPENGNSYS_DB_PASSWD}"
- break
- fi
-done
-
-# Clave de acceso del cliente
-while : ; do
- echo -n -e "\\nEnter root password for OpenGnsys client (${DEFAULT_OPENGNSYS_CLIENT_PASSWD}): "
- read -r OPENGNSYS_CLIENT_PASSWD
- if [ -n "${OPENGNSYS_CLIENT_PASSWD//[a-zA-Z0-9]/}" ]; then # Comprobamos que sea un valor alfanumerico
- echo -e "\\aERROR: Must be alphanumeric, try again..."
- else
- # Si esta vacio ponemos el valor por defecto
- OPENGNSYS_CLIENT_PASSWD="${OPENGNSYS_CLIENT_PASSWD:-$DEFAULT_OPENGNSYS_CLIENT_PASSWD}"
- break
- fi
-done
-
-# Selección de clientes ogLive para descargar.
-while : ; do
- echo -e "\\nChoose ogLive client to install."
- echo -e "1) Kernel 4.13, 64-bit, EFI-compatible"
- echo -e "2) Kernel 3.2, 32-bit"
- echo -e "3) Both"
- echo -n -e "Please, type a valid number (1): "
- read -r OPT
- case "$OPT" in
- 1|"") OGLIVE="ogLive-xenial-4.13.0-17-generic-amd64-r5520.iso"
- break ;;
- 2) OGLIVE="ogLive-precise-3.2.0-23-generic-r5159.iso"
- break ;;
- 3) OGLIVE="ogLive-xenial-4.13.0-17-generic-amd64-r5520.iso ogLive-precise-3.2.0-23-generic-r5159.iso";
- break ;;
- *) echo -e "\\aERROR: unknown option, try again."
- esac
-done
-
-echo -e "\\n=============================="
-
-# Comprobar si se ha descargado el paquete comprimido (REMOTE=0) o sólo el instalador (REMOTE=1).
-PROGRAMDIR=$(readlink -e "$(dirname "$0")")
-PROGRAMNAME=$(basename "$0")
-OPENGNSYS_SERVER="opengnsys.es"
-DOWNLOADURL="https://$OPENGNSYS_SERVER/trac/downloads"
-if [ -d "$PROGRAMDIR/../installer" ]; then
- REMOTE=0
-else
- REMOTE=1
-fi
-BRANCH="devel"
-CODE_URL="https://codeload.github.com/opengnsys/OpenGnsys/zip/$BRANCH"
-API_URL="https://api.github.com/repos/opengnsys/OpenGnsys/branches/$BRANCH"
-
-WORKDIR=/tmp/opengnsys_installer
-mkdir -p $WORKDIR
-
-# Directorio destino de OpenGnsys.
-INSTALL_TARGET=/opt/opengnsys
-PATH=$PATH:$INSTALL_TARGET/bin
-
-# Registro de incidencias.
-OGLOGFILE=$INSTALL_TARGET/log/${PROGRAMNAME%.sh}.log
-LOG_FILE=/tmp/$(basename $OGLOGFILE)
-
-# Usuario del cliente para acceso remoto.
-OPENGNSYS_CLIENT_USER="opengnsys"
-
-# Nombre de la base datos y fichero SQL para su creación.
-OPENGNSYS_DATABASE="ogAdmBD"
-OPENGNSYS_DB_CREATION_FILE=opengnsys/admin/Database/${OPENGNSYS_DATABASE}.sql
+ enterPassword "$DEFAULT_OPENGNSYS_DB_PASSWD"
+ OPENGNSYS_DB_PASSWD="$PASSWORD"
+
+ # Clave de acceso del cliente
+ echo -n -e "\\n\\nEnter root password for OpenGnsys client (${DEFAULT_OPENGNSYS_CLIENT_PASSWD}): "
+ enterPassword "$DEFAULT_OPENGNSYS_CLIENT_PASSWD"
+ OPENGNSYS_CLIENT_PASSWD="$PASSWORD"
+ unset PASSWORD
+
+ # Selección de clientes ogLive para descargar.
+ while : ; do
+ echo -e "\\n\\nChoose ogLive client to install."
+ echo -e "1) Kernel 5.0, 64-bit, EFI-compatible"
+ echo -e "2) Kernel 3.2, 32-bit"
+ echo -e "3) Both"
+ echo -n -e "Please, type a valid number (1): "
+ read -r OPT
+ case "$OPT" in
+ 1|"") OGLIVE="$DEFAULT_OGLIVE"
+ break ;;
+ 2) OGLIVE="ogLive-precise-3.2.0-23-generic-r5159.iso"
+ break ;;
+ 3) OGLIVE=" $DEFAULT_OGLIVE ogLive-precise-3.2.0-23-generic-r5159.iso";
+ break ;;
+ *) echo -e "\\aERROR: unknown option, try again."
+ esac
+ done
+ echo -e "\\n=============================="
+}
-#####################################################################
-####### Funciones de configuración
-#####################################################################
+# Asigna valores globales de configuración para el script.
+function globalSetup ()
+{
+ PROGRAMDIR=$(readlink -e "$(dirname "$0")")
+ PROGRAMNAME=$(basename "$0")
+
+ # Comprobar si se ha descargado el paquete comprimido (REMOTE=0) o sólo el instalador (REMOTE=1).
+ OPENGNSYS_SERVER="opengnsys.es"
+ DOWNLOADURL="https://$OPENGNSYS_SERVER/trac/downloads"
+ if [ -d "$PROGRAMDIR/../installer" ]; then
+ REMOTE=0
+ else
+ REMOTE=1
+ fi
+ BRANCH="devel"
+ CODE_URL="https://codeload.github.com/opengnsys/OpenGnsys/zip/$BRANCH"
+ API_URL="https://api.github.com/repos/opengnsys/OpenGnsys/branches/$BRANCH"
+
+ # Directorios de instalación y destino de OpenGnsys.
+ WORKDIR=/tmp/opengnsys_installer
+ INSTALL_TARGET=/opt/opengnsys
+ PATH=$PATH:$INSTALL_TARGET/bin
+
+ # Registro de incidencias.
+ OGLOGFILE=$INSTALL_TARGET/log/${PROGRAMNAME%.sh}.log
+ LOG_FILE=/tmp/$(basename $OGLOGFILE)
+
+ # Usuario del cliente para acceso remoto.
+ OPENGNSYS_CLIENT_USER="opengnsys"
+ # Nombre de la base datos y fichero SQL para su creación.
+ OPENGNSYS_DATABASE="ogAdmBD"
+ OPENGNSYS_DB_CREATION_FILE=opengnsys/admin/Database/${OPENGNSYS_DATABASE}.sql
+}
# Generar variables de configuración del instalador
# Variables globales:
@@ -145,7 +165,6 @@ OPENGNSYS_DB_CREATION_FILE=opengnsys/admin/Database/${OPENGNSYS_DATABASE}.sql
# - APACHEENABLEOG, APACHEOGSITE, - habilitar sitio web de OpenGnsys
# - PHPFPMSERV - servicio PHP FastCGI Process Manager para Apache
# - INETDSERV - servicio Inetd
-# - FIREWALLSERV - servicio de cortabuegos IPTables/FirewallD
# - DHCPSERV, DHCPCFGDIR - servicio y configuración de DHCP
# - MYSQLSERV, TMPMYCNF - servicio MySQL y fichero temporal con credenciales de acceso
# - MARIADBSERV - servicio MariaDB (sustituto de MySQL en algunas distribuciones)
@@ -170,7 +189,7 @@ OSVERSION="${OSVERSION%%.*}"
# Configuración según la distribución GNU/Linux (usar minúsculas).
case "$OSDISTRIB" in
ubuntu|debian|linuxmint)
- DEPENDENCIES=( subversion apache2 php php-ldap php-fpm mysql-server php-mysql isc-dhcp-server bittorrent tftp-hpa tftpd-hpa xinetd build-essential g++-multilib libmysqlclient-dev wget curl doxygen graphviz bittornado ctorrent samba rsync unzip netpipes debootstrap schroot squashfs-tools btrfs-tools procps arp-scan realpath php-curl gettext moreutils jq wakeonlan udpcast shim-signed grub-efi-amd64-signed python-pip )
+ DEPENDENCIES=( subversion apache2 php php-ldap php-fpm mysql-server php-mysql isc-dhcp-server bittorrent tftp-hpa tftpd-hpa xinetd build-essential g++-multilib libmysqlclient-dev wget curl doxygen graphviz bittornado ctorrent samba rsync unzip netpipes debootstrap schroot squashfs-tools btrfs-tools procps arp-scan realpath php-curl gettext moreutils jq wakeonlan udpcast libev-dev libjansson-dev shim-signed grub-efi-amd64-signed python-pip )
UPDATEPKGLIST="apt-get update"
INSTALLPKG="apt-get -y install --force-yes"
CHECKPKG="dpkg -s \$package 2>/dev/null | grep Status | grep -qw install"
@@ -207,7 +226,7 @@ case "$OSDISTRIB" in
TFTPCFGDIR=/var/lib/tftpboot
;;
fedora|centos)
- DEPENDENCIES=( subversion httpd mod_ssl php-ldap php-fpm mysql-server mysql-devel mysql-devel.i686 php-mysql dhcp tftp-server tftp xinetd binutils gcc gcc-c++ glibc-devel glibc-devel.i686 glibc-static glibc-static.i686 libstdc++-devel.i686 make wget curl doxygen graphviz ctorrent samba samba-client rsync unzip debootstrap schroot squashfs-tools python-crypto arp-scan procps-ng gettext moreutils jq net-tools udpcast shim-x64 grub2-efi-x64 grub2-efi-x64-modules python-pip http://ftp.altlinux.org/pub/distributions/ALTLinux/5.1/branch/$(arch)/RPMS.classic/netpipes-4.2-alt1.$(arch).rpm )
+ DEPENDENCIES=( subversion httpd mod_ssl php-ldap php-fpm mysql-server mysql-devel mysql-devel.i686 php-mysql dhcp tftp-server tftp xinetd binutils gcc gcc-c++ glibc-devel glibc-devel.i686 glibc-static glibc-static.i686 libstdc++-devel.i686 make wget curl doxygen graphviz ctorrent samba samba-client rsync unzip debootstrap schroot squashfs-tools python-crypto arp-scan procps-ng gettext moreutils jq net-tools udpcast libev-devel shim-x64 grub2-efi-x64 grub2-efi-x64-modules http://ftp.altlinux.org/pub/distributions/ALTLinux/5.1/branch/$(arch)/RPMS.classic/netpipes-4.2-alt1.$(arch).rpm python-pip )
[ "$OSDISTRIB" == "centos" ] && UPDATEPKGLIST="yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$OSVERSION.noarch.rpm http://rpms.remirepo.net/enterprise/remi-release-$OSVERSION.rpm"
INSTALLEXTRADEPS=( 'pushd /tmp; wget -t3 http://ftp.acc.umu.se/mirror/bittornado/BitTornado-0.3.18.tar.gz && tar xvzf BitTornado-0.3.18.tar.gz && cd BitTornado-CVS && python setup.py install && ln -fs btlaunchmany.py /usr/bin/btlaunchmany && ln -fs bttrack.py /usr/bin/bttrack; popd' )
INSTALLPKG="yum install -y libstdc++ libstdc++.i686"
@@ -232,11 +251,6 @@ case "$OSDISTRIB" in
APACHEREWRITEMOD="sed -i '/rewrite/s/^#//' $APACHECFGDIR/../*.conf"
DHCPSERV=dhcpd
DHCPCFGDIR=/etc/dhcp
- if firewall-cmd --state &>/dev/null; then
- FIREWALLSERV=firewalld
- else
- FIREWALLSERV=iptables
- fi
INETDSERV=xinetd
INETDCFGDIR=/etc/xinetd.d
MYSQLSERV=mysqld
@@ -263,18 +277,17 @@ TMPMYCNF=/tmp/.my.cnf.$$
# Modificar variables de configuración tras instalar paquetes del sistema.
function autoConfigurePost()
{
-local f
+local f MKNETDIR
# Configuraciones específicas para Samba y TFTP en Debian 6.
[ -z "$SYSTEMD" -a ! -e /etc/init.d/$SAMBASERV ] && SAMBASERV=samba
[ ! -e $TFTPCFGDIR ] && TFTPCFGDIR=/srv/tftp
-# Configuraciones específicas para SELinux permisivo en distintas versiones.
-[ -f /selinux/enforce ] && echo 0 > /selinux/enforce
-for f in /etc/sysconfig/selinux /etc/selinux/config; do
- [ -f $f ] && perl -pi -e 's/SELINUX=enforcing/SELINUX=permissive/g' $f
+# Preparar arranque en red con Grub.
+for f in grub-mknetdir grub2-mknetdir; do
+ if which $f &>/dev/null; then MKNETDIR=$f; fi
done
-selinuxenabled 2>/dev/null && setenforce 0 2>/dev/null
+$MKNETDIR --net-directory=$TFTPCFGDIR --subdir=grub
}
@@ -825,13 +838,7 @@ function downloadCode()
# Comprobar si existe conexión.
function checkNetworkConnection()
{
- echoAndLog "${FUNCNAME}(): Disabling Firewall: $FIREWALLSERV."
- if [ -n "$FIREWALLSERV" ]; then
- service=$FIREWALLSERV
- $STOPSERVICE; $DISABLESERVICE
- fi
-
- echoAndLog "${FUNCNAME}(): Checking OpenGnsys server conectivity."
+ echoAndLog "${FUNCNAME}(): Checking OpenGnsys server connectivity."
OPENGNSYS_SERVER=${OPENGNSYS_SERVER:-"opengnsys.es"}
if which wget &>/dev/null; then
wget --spider -q $OPENGNSYS_SERVER
@@ -876,17 +883,18 @@ function getNetworkSettings()
exit 1
fi
for dev in ${DEVICE[*]}; do
- SERVERIP[i]=$(ip -o addr show dev "$dev" | awk '$3~/inet$/ {sub (/\/.*/, ""); print ($4)}')
+ SERVERIP[i]=$(ip -o addr show dev "$dev" | awk '$3~/inet$/ {sub (/\/.*/, ""); print ($4); exit;}')
if [ -n "${SERVERIP[i]}" ]; then
- NETMASK[i]=$( cidr2mask $(ip -o addr show dev "$dev" | awk '$3~/inet$/ {sub (/.*\//, "", $4); print ($4)}') )
- NETBROAD[i]=$(ip -o addr show dev "$dev" | awk '$3~/inet$/ {print ($6)}')
- NETIP[i]=$(ip route list proto kernel | awk -v d="$dev" '$3==d && /src/ {sub (/\/.*/,""); print $1}')
- ROUTERIP[i]=$(ip route list default | awk -v d="$dev" '$5==d {print $3}')
+ NETMASK[i]=$( cidr2mask $(ip -o addr show dev "$dev" | awk '$3~/inet$/ {sub (/.*\//, "", $4); print ($4); exit;}') )
+ NETBROAD[i]=$(ip -o addr show dev "$dev" | awk '$3~/inet$/ {print ($6); exit;}')
+ NETIP[i]=$(ip route list proto kernel | awk -v d="$dev" '$3==d && /src/ {sub (/\/.*/,""); print $1; exit;}')
+ ROUTERIP[i]=$(ip route list default | awk -v d="$dev" '$5==d {print $3; exit;}')
DEFAULTDEV=${DEFAULTDEV:-"$dev"}
fi
let i++
done
- DNSIP=$(awk '/nameserver/ {print $2}' /etc/resolv.conf | head -n1)
+ DNSIP=$(systemd-resolve --status 2>/dev/null | awk '/DNS Servers:/ {print $3; exit;}')
+ [ -z "$DNSIP" ] && DNSIP=$(awk '/nameserver/ {print $2; exit;}' /etc/resolv.conf)
if [ -z "${NETIP[*]}" -o -z "${NETMASK[*]}" ]; then
errorAndLog "${FUNCNAME}(): Network not detected."
exit 1
@@ -986,12 +994,6 @@ function rsyncConfigure()
# Configurar acceso a Rsync.
sed -e "s/CLIENTUSER/$OPENGNSYS_CLIENT_USER/g" \
$WORKDIR/opengnsys/repoman/etc/rsyncd.conf.tmpl > $RSYNCCFGDIR/rsyncd.conf
- sed -e "s/CLIENTUSER/$OPENGNSYS_CLIENT_USER/g" \
- -e "s/CLIENTPASSWORD/$OPENGNSYS_CLIENT_PASSWD/g" \
- $WORKDIR/opengnsys/repoman/etc/rsyncd.secrets.tmpl > $RSYNCCFGDIR/rsyncd.secrets
- chown root.root $RSYNCCFGDIR/rsyncd.secrets
- chmod 600 $RSYNCCFGDIR/rsyncd.secrets
-
# Habilitar Rsync y reiniciar Inetd.
if [ -n "$RSYNCSERV" ]; then
if [ -f /etc/default/rsync ]; then
@@ -1102,7 +1104,6 @@ function installWebFiles()
# Copiar ficheros en la zona de descargas de OpenGnsys Web Console.
function installDownloadableFiles()
{
- INSTVERSION=1.1.0 ### Temporal.
local FILENAME=ogagentpkgs-$INSTVERSION.tar.gz
local TARGETFILE=$WORKDIR/$FILENAME
@@ -1153,7 +1154,7 @@ function installWebConsoleApacheConf()
echoAndLog "${FUNCNAME}(): configuring PHP-FPM"
service=$PHPFPMSERV
$ENABLESERVICE; $STARTSERVICE
- sockfile=$(find /run/php -name "php*.sock" -type s -print 2>/dev/null)
+ sockfile=$(find /run/php -name "php*.sock" -type s -print 2>/dev/null | tail -1)
# Activar módulos de Apache.
$APACHEENABLEMODS
@@ -1374,12 +1375,11 @@ function copyInterfaceAdm ()
echoAndLog "${FUNCNAME}(): error while copying Administration Interface Folder"
hayErrores=1
fi
- chown $OPENGNSYS_CLIENT_USER:$OPENGNSYS_CLIENT_USER $INSTALL_TARGET/client/interfaceAdm/CambiarAcceso
- chmod 700 $INSTALL_TARGET/client/interfaceAdm/CambiarAcceso
return $hayErrores
}
+
####################################################################
### Funciones instalacion cliente opengnsys
####################################################################
@@ -1413,6 +1413,18 @@ function copyClientFiles()
}
+# Crear certificados para la firma de cargadores de arranque.
+function createCerts ()
+{
+ local SSLCFGDIR=$INSTALL_TARGET/client/etc/ssl
+ echoAndLog "${FUNCNAME}(): creating certificate files"
+ mkdir -p $SSLCFGDIR/{certs,private}
+ openssl req -new -x509 -newkey rsa:2048 -keyout $SSLCFGDIR/private/opengnsys.key -out $SSLCFGDIR/certs/opengnsys.crt -nodes -days 3650 -subj "/CN=OpenGnsys/"
+ openssl x509 -in $SSLCFGDIR/certs/opengnsys.crt -out $SSLCFGDIR/certs/opengnsys.cer -outform DER
+ echoAndLog "${FUNCNAME}(): certificate successfully created"
+}
+
+
# Crear cliente OpenGnsys.
function clientCreate()
{
@@ -1441,8 +1453,6 @@ function clientCreate()
echoAndLog "${FUNCNAME}(): Installing ogLive Client"
echo -ne "$OPENGNSYS_CLIENT_PASSWD\n$OPENGNSYS_CLIENT_PASSWD\n" | \
oglivecli install $FILENAME
- # Adaptar permisos.
- chown -R $APACHE_RUN_USER:$APACHE_RUN_GROUP $INSTALL_TARGET/tftpboot/menu.lst
echoAndLog "${FUNCNAME}(): Client generation success"
}
@@ -1484,6 +1494,7 @@ function openGnsysConfigure()
-e "s/DBUSER/$OPENGNSYS_DB_USER/g" \
-e "s/DBPASSWORD/$OPENGNSYS_DB_PASSWD/g" \
-e "s/DATABASE/$OPENGNSYS_DATABASE/g" \
+ -e "s/REPOKEY/$OPENGNSYS_REPOKEY/g" \
$WORKDIR/opengnsys/admin/Sources/Services/ogAdmServer/ogAdmServer.cfg > $INSTALL_TARGET/etc/ogAdmServer-$dev.cfg
sed -e "s/SERVERIP/${SERVERIP[i]}/g" \
-e "s/REPOKEY/$OPENGNSYS_REPOKEY/g" \
@@ -1514,10 +1525,6 @@ function openGnsysConfigure()
ln -f $INSTALL_TARGET/etc/ogAdmAgent-$DEFAULTDEV.cfg $INSTALL_TARGET/etc/ogAdmAgent.cfg
ln -f $INSTALL_TARGET/client/etc/ogAdmClient-$DEFAULTDEV.cfg $INSTALL_TARGET/client/etc/ogAdmClient.cfg
ln -f $INSTALL_TARGET/www/controlacceso-$DEFAULTDEV.php $INSTALL_TARGET/www/controlacceso.php
- chown root:root $INSTALL_TARGET/etc/{ogAdmServer,ogAdmAgent}*.cfg
- chmod 600 $INSTALL_TARGET/etc/{ogAdmServer,ogAdmAgent}*.cfg
- chown $APACHE_RUN_USER:$APACHE_RUN_GROUP $INSTALL_TARGET/www/controlacceso*.php
- chmod 600 $INSTALL_TARGET/www/controlacceso*.php
# Configuración del motor de clonación.
# - Zona horaria del servidor.
@@ -1560,7 +1567,7 @@ function installationSummary()
# de código o si no está incluida en el fichero de versión.
if [ $REMOTE -eq 1 ] || [ -z "$(jq -r '.release' $VERSIONFILE)" ]; then
# Revisión: rAñoMesDía.Gitcommit (8 caracteres de fecha y 7 primeros de commit).
- REVISION=$(curl -s "$API_URL" | jq '"r" + (.commit.commit.committer.date | gsub("-"; "")[:8]) + "." + (.commit.sha[:7])')
+ REVISION=$(curl -s "$API_URL" | jq '"r" + (.commit.commit.committer.date | split("-") | join("")[:8]) + "." + (.commit.sha[:7])')
jq ".release=$REVISION" $VERSIONFILE | sponge $VERSIONFILE
fi
VERSION="$(jq -r '[.project, .version, .codename, .release] | join(" ")' $VERSIONFILE 2>/dev/null)"
@@ -1578,16 +1585,15 @@ function installationSummary()
echoAndLog "Installed ogLive client(s): $(oglivecli list | awk '{print $2}')"
echoAndLog "Samba configuration directory: $SAMBACFGDIR"
echoAndLog "Web Console URL: $OPENGNSYS_CONSOLEURL"
- echoAndLog "Web Console access data: specified in installer script"
+ echoAndLog "Web Console access data: entered by the user"
if grep -q "^RUN_BTTRACK.*no" /etc/default/opengnsys; then
echoAndLog "BitTorrent service is disabled."
fi
echo
echoAndLog "Post-Installation Instructions:"
echo "==============================="
- echoAndLog "Firewall service has been disabled and SELinux mode set to"
- echoAndLog " permissive during OpenGnsys installation. Please check"
- echoAndLog " ${FIREWALLSERV:-firewall} and SELinux configuration, if needed."
+ echoAndLog "You can improve server security by configuring firewall and SELinux,"
+ echoAndLog " running \"$INSTALL_TARGET/lib/security-config\" script as root."
echoAndLog "It's strongly recommended to synchronize this server with an NTP server."
echoAndLog "Review or edit all configuration files."
echoAndLog "Insert DHCP configuration data and restart service."
@@ -1604,7 +1610,18 @@ echo
####### Proceso de instalación de OpenGnsys
#####################################################################
+# Sólo ejecutable por usuario root
+if [ "$(whoami)" != 'root' ]; then
+ echo "ERROR: this program must run under root privileges!!"
+ exit 1
+fi
+
+globalSetup
echoAndLog "OpenGnsys installation begins at $(date)"
+# Introducir datos de configuración y establecer variables globales.
+userData
+
+mkdir -p $WORKDIR
pushd $WORKDIR
# Detectar datos iniciales de auto-configuración del instalador.
@@ -1803,6 +1820,9 @@ if [ $? -ne 0 ]; then
errorAndLog "Error creating client structure"
fi
+# Crear certificado para firmar cargadores
+createCerts
+
# Crear la estructura del cliente de OpenGnsys.
for i in $OGLIVE; do
if ! clientCreate "$i"; then