diff options
author | Ramón M. Gómez <ramongomez@us.es> | 2019-05-03 14:12:45 +0200 |
---|---|---|
committer | Ramón M. Gómez <ramongomez@us.es> | 2019-05-03 14:12:45 +0200 |
commit | 5bb60e2b95f57e07b8aa97537302b886bc83c550 (patch) | |
tree | 36eb1c4baa71ddba9a4fcc98baccb3662ab40f2b | |
parent | 7e55dff0d084855ef421295e2eae3fef6fddc501 (diff) |
#761 First installer for OpenGnsys 3.
-rwxr-xr-x | installer/console3_installer.sh | 256 | ||||
-rwxr-xr-x | installer/opengnsys_installer.sh | 256 |
2 files changed, 86 insertions, 426 deletions
diff --git a/installer/console3_installer.sh b/installer/console3_installer.sh deleted file mode 100755 index f4081dda..00000000 --- a/installer/console3_installer.sh +++ /dev/null @@ -1,256 +0,0 @@ -#!/usr/bin/env bash -#### AVISO: NO EDITAR variables de configuracion. -#### WARNING: DO NOT EDIT configuration variables. -INSTALL_TARGET=/opt/opengnsys # Directorio de instalación -PATH=$PATH:$INSTALL_TARGET/bin -OPENGNSYS_CLIENTUSER="opengnsys" # Usuario Samba - - -# Solo ejecutable por usuario root -if [ "$(whoami)" != 'root' ]; then - echo "ERROR: this program must run under root privileges!!" - exit 1 -fi -# Error si OpenGnsys no esta instalado (no existe el directorio del proyecto) -if [ ! -d $INSTALL_TARGET ]; then - echo "ERROR: OpenGnsys is not installed, cannot update!!" - exit 1 -fi -# Cargar configuracion de acceso a la base de datos. -if [ -r $INSTALL_TARGET/etc/ogAdmServer.cfg ]; then - source $INSTALL_TARGET/etc/ogAdmServer.cfg -elif [ -r $INSTALL_TARGET/etc/ogAdmAgent.cfg ]; then - source $INSTALL_TARGET/etc/ogAdmAgent.cfg -fi -OPENGNSYS_DATABASE=${OPENGNSYS_DATABASE:-"$CATALOG"} # Base de datos -OPENGNSYS_DBUSER=${OPENGNSYS_DBUSER:-"$USUARIO"} # Usuario de acceso -OPENGNSYS_DBPASSWORD=${OPENGNSYS_DBPASSWORD:-"$PASSWORD"} # Clave del usuario -if [ -z "$OPENGNSYS_DATABASE" -o -z "$OPENGNSYS_DBUSER" -o -z "$OPENGNSYS_DBPASSWORD" ]; then - echo "ERROR: set OPENGNSYS_DATABASE, OPENGNSYS_DBUSER and OPENGNSYS_DBPASSWORD" - echo " variables, and run this script again." - exit 1 -fi - -# Comprobar si se ha descargado el paquete comprimido (USESVN=0) o sólo el instalador (USESVN=1). -PROGRAMDIR=$(readlink -e $(dirname "$0")) -PROGRAMNAME=$(basename "$0") -OPENGNSYS_SERVER="opengnsys.es" -if [ -d "$PROGRAMDIR/../installer" ]; then - USESVN=0 -else - USESVN=1 -fi -# SVN_URL="https://$OPENGNSYS_SERVER/svn/branches/version1.1/" - -WORKDIR=/tmp/console3_installer -mkdir -p $WORKDIR - -# Registro de incidencias. -OGLOGFILE=$INSTALL_TARGET/log/${PROGRAMNAME%.sh}.log -LOG_FILE=/tmp/$(basename $OGLOGFILE) - - -############################################################ -### Detectar red -############################################################ - -# Comprobar si existe conexión. -function checkNetworkConnection() -{ - OPENGNSYS_SERVER=${OPENGNSYS_SERVER:-"opengnsys.es"} - wget --spider -q $OPENGNSYS_SERVER -} - - -# Obtener los parametros de red del servidor. -function getNetworkSettings() -{ - # Variables globales definidas: - # - SERVERIP: IP local de la interfaz por defecto. - - local DEVICES - local dev - - echoAndLog "${FUNCNAME}(): Detecting network parameters" - SERVERIP="$ServidorAdm" - DEVICES="$(ip -o link show up | awk '!/loopback/ {sub(/:.*/,"",$2); print $2}')" - for dev in $DEVICES; do - [ -z "$SERVERIP" ] && SERVERIP=$(ip -o addr show dev $dev | awk '$3~/inet$/ {sub (/\/.*/, ""); print ($4)}') - done -} - - - -function downloadFiles() { - cp -rf /root/opengnsys/* $WORKDIR - #git clone gituser@opengnsys.es:/git/opengnsys -b webconsole3 $WORKDIR -} - - -function installDependencies() { - apt-add-repository ppa:ondrej/php - apt-get update - apt-get upgrade - apt-get install php7.0 php7.0-mysql php7.0-xml libcurl3 php7.0-curl - apt-get install git - apt-get install nodejs - apt-get install npm - npm config set ca="" - npm install -g bower - ln -s /usr/bin/nodejs /usr/bin/node -} - -function configureApache() { - # Usar el fichero de configuración de apache y moverlo al directorio sites-available de apache - configFile="opengnsys3.conf" - template=$WORKDIR/server/etc/apache-console3.conf.tmpl - sed -e "s,CONSOLEDIR,$INSTALL_TARGET/www3,g" $template > /etc/apache2/sites-available/$configFile - - a2ensite $configFile - a2dismod php5 - a2enmod php7.0 - service apache2 reload -} - -function configureClient() { - local clientFilesDir ogClientFilesDir - clientFilesDir=$WORKDIR/client/shared - ogClientFilesDir=$INSTALL_TARGET"/client" - - # Copiar haciendo backup de los originales - cp -rb $clientFilesDir $ogClientFilesDir -} - -function configureBackend() { - mkdir -p $INSTALL_TARGET/www3 - INSTALL_BACKEND=$INSTALL_TARGET/www3/backend - echo $INSTALL_BACKEND - cp -rf $WORKDIR/admin/WebConsole3/backend $INSTALL_BACKEND - pushd $INSTALL_TARGET/www3/backend - - - #echo "Configuración de la base de datos MYSQL" - #echo "Usuario: " - #read MYSQL_USER - #if [ -z $MYSQL_USER ] || [ $MYSQL_USER = "" ] - #then - # MYSQL_USER="u1consola1OG" - #fi - #sed -i -e "s/database_user:.*/database_user: "$MYSQL_USER"/g" $INSTALL_BACKEND/app/config/parameters.yml - # - #echo "Password: " - #read MYSQL_PASSWORD - #if [ -z $MYSQL_PASSWORD ] || [ $MYSQL_PASSWORD = "" ] - #then - # MYSQL_PASSWORD="c1consola1OG" - #fi - #sed -i -e "s/database_password:.*/database_password: "$MYSQL_PASSWORD"/g" $INSTALL_BACKEND/app/config/parameters.yml - # - #echo "Nombre de la base de datos. (En caso de que el usuario tenga permiso de crear nueva base de datos, dejar este campo vacío)" - #read MYSQL_DB - #if [ -z $MYSQL_DB ] || [ $MYSQL_DB = "" ] - #then - # MYSQL_DB="ogAdmBD3" - #fi - #sed -i -e "s/^database_name:.*/database_name: "$MYSQL_DB"/g" $INSTALL_BACKEND/app/config/parameters.yml - - php composer.phar update - chmod 777 -R var/cache - chmod 777 -R var/logs - - # Pedir usuario y contraseña de la base de datos Mysql y guardar en en parameters.yml - - php app/console doctrine:database:create --if-not-exists - php app/console doctrine:schema:update --force - php app/console doctrine:fixtures:load - php app/console fos:user:create test test@opengnsys.es test - - # Preguntar si quiere migrar de la versión 1.1 anterior. - php app/console opengnsys:migration:execute - - popd - ## Añadir al fichero de configuracion del cliente "ogAdmClient.cfg" la Url de la nueva API Rest - #echo "UrlApi=https://$SERVERIP/opengnsys3/rest/web/app_dev.php/api/" >> $INSTALL_TARGET/client/etc/ogAdmClient.cfg - ## TODO - añadir la url del endpoint para la gestion de menus cuando este hecho - #sed -e "s,\(UrlMenu=.*\),UrlMenu=nuevaurl,g" $INSTALL_TARGET/client/etc/ogAdmClient.cfg >> $WORKDIR/ogAdmClient.cfg - ## - #cp $WORKDIR/ogAdmClient.cfg $INSTALL_TARGET/client/etc/ogAdmClient.cfg -} - -function configureFrontend() { - local frontendDir constantsFile - frontendDir=$INSTALL_TARGET/www3/frontend - mkdir -p $frontendDir - # copiar todos los ficheros del frontend - cp -r $WORKDIR/admin/WebConsole3/frontend/ $frontendDir - # TODO - Modificar el fichero de constantes con la ruta de la api - constantsFile=console/assets/js/config.constants.js - sed -e "s,\(var OGSERVER = \)\(\"[0-9\.]*\"\),var OGSERVER = \"$SERVERIP\",g" $WORKDIR/admin/WebConsole3/frontend/$constantsFile > $frontendDir/$constantsFile - pushd $frontendDir - bower --allow-root -V install - popd -} - -# Logs -function getDateTime() -{ - date "+%Y%m%d-%H%M%S" -} - -# Escribe a fichero y muestra por pantalla -function echoAndLog() -{ - echo $1 - DATETIME=`getDateTime` - echo "$DATETIME;$SSH_CLIENT;$1" >> $LOG_FILE -} - -function errorAndLog() -{ - echo "ERROR: $1" - DATETIME=`getDateTime` - echo "$DATETIME;$SSH_CLIENT;ERROR: $1" >> $LOG_FILE -} - -# Escribe a fichero y muestra mensaje de aviso -function warningAndLog() -{ - local DATETIME=`getDateTime` - echo "Warning: $1" - echo "$DATETIME;$SSH_CLIENT;Warning: $1" >> $LOG_FILE -} - -##################################################################### -####### Proceso de actualización de OpenGnsys -##################################################################### - - -echoAndLog "OpenGnsys WebConsole 3 installation begins at $(date)" - -pushd $WORKDIR - -# Comprobar si hay conexion y detectar parámetros de red por defecto. -checkNetworkConnection -if [ $? -ne 0 ]; then - errorAndLog "Error connecting to server. Causes:" - errorAndLog " - Network is unreachable, check device parameters" - errorAndLog " - You are inside a private network, configure the proxy service" - errorAndLog " - Server is temporally down, try again later" - exit 1 -fi -getNetworkSettings -echoAndLog "Install dependencies" -installDependencies -echoAndLog "Download source files" -downloadFiles -echoAndLog "Configuring apache" -configureApache -echoAndLog "Configuring opengnsys client" -configureClient -echoAndLog "Configuring backend" -configureBackend -echoAndLog "Configuring frontend" -configureFrontend - - -popd diff --git a/installer/opengnsys_installer.sh b/installer/opengnsys_installer.sh index f559552c..211b096f 100755 --- a/installer/opengnsys_installer.sh +++ b/installer/opengnsys_installer.sh @@ -9,8 +9,8 @@ #### 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_DB_USER="admin" # Usuario por defecto de acceso a la base de datos +DEFAULT_OPENGNSYS_DB_PASSWD="admin" # 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 @@ -123,9 +123,8 @@ 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 +# Nombre de la base datos. +OPENGNSYS_DATABASE="opengnsys" ##################################################################### @@ -135,7 +134,7 @@ OPENGNSYS_DB_CREATION_FILE=opengnsys/admin/Database/${OPENGNSYS_DATABASE}.sql # Generar variables de configuración del instalador # Variables globales: # - OSDISTRIB, OSVERSION - tipo y versión de la distribución GNU/Linux -# - DEPENDENCIES - array de dependencias que deben estar instaladas +# - PREREQS, DEPENDENCIES - arrays de prerrequisitos y dependencias que deben estar instaladas # - UPDATEPKGLIST, INSTALLPKGS, CHECKPKGS - comandos para gestión de paquetes # - INSTALLEXTRADEPS - instalar dependencias no incluidas en la distribución # - STARTSERVICE, ENABLESERVICE - iniciar y habilitar un servicio @@ -169,9 +168,10 @@ 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 udpcast libev-dev shim-signed grub-efi-amd64-signed ) + PREREQS=( curl software-properties-common ) + 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 doxygen graphviz bittornado ctorrent samba rsync unzip netpipes debootstrap schroot squashfs-tools btrfs-tools procps arp-scan realpath php-curl gettext moreutils jq udpcast libev-dev shim-signed grub-efi-amd64-signed git php-mbstring php-xml nodejs ) UPDATEPKGLIST="apt-get update" - INSTALLPKG="apt-get -y install --force-yes" + INSTALLPKG="apt-get -y install" CHECKPKG="dpkg -s \$package 2>/dev/null | grep Status | grep -qw install" if which service &>/dev/null; then STARTSERVICE="eval service \$service restart" @@ -206,7 +206,8 @@ 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 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 ) + PREREQS=( curl ) + 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 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 ) [ "$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" @@ -248,6 +249,10 @@ case "$OSDISTRIB" in *) echo "ERROR: Distribution not supported by OpenGnsys." exit 1 ;; esac +# Instalar Composer y Angular-CLI. +INSTALLEXTRADEPS=( ${INSTALLEXTRADEPS[@]} \ + 'if [ ! -f /usr/local/bin/composer.phar ]; then php -r "copy(\"https://getcomposer.org/installer\", \"/tmp/composer-setup.php\");"; php /tmp/composer-setup.php --install-dir=/usr/local/bin; rm -f /tmp/composer-setup.php; else /usr/local/bin/composer.phar self-update; fi' \ + 'npm install -g @angular/cli@6.2.3' ) # Fichero de credenciales de acceso a MySQL. TMPMYCNF=/tmp/.my.cnf.$$ @@ -257,8 +262,6 @@ TMPMYCNF=/tmp/.my.cnf.$$ # Modificar variables de configuración tras instalar paquetes del sistema. function autoConfigurePost() { -local f - # 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 @@ -271,12 +274,14 @@ function updatePackageList() { local DHCPVERSION PHP7VERSION -# Si es necesario, actualizar la lista de paquetes disponibles. +# Si es necesario, actualizar la lista de paquetes disponibles e instalar prerrequisitos. [ -n "$UPDATEPKGLIST" ] && eval $UPDATEPKGLIST +[ ${#PREREQS[@]} -gt 0 ] && eval $INSTALLPKG ${PREREQS[@]} # Configuración personallizada de algunos paquetes. case "$OSDISTRIB" in ubuntu|linuxmint) # Postconfiguación personalizada para Ubuntu. + # Instalar prerrequisitos. # Configuración para DHCP v3. DHCPVERSION=$(apt-cache show $(apt-cache pkgnames|egrep "dhcp.?-server$") | \ awk '/Version/ {print substr($2,1,1);}' | \ @@ -288,10 +293,9 @@ case "$OSDISTRIB" in fi # Configuración para PHP 7 en Ubuntu. if [ -z "$(apt-cache pkgnames php7)" ]; then - eval $INSTALLPKG software-properties-common add-apt-repository -y ppa:ondrej/php eval $UPDATEPKGLIST - PHP7VERSION=$(apt-cache pkgnames php7 | sort | head -1) + PHP7VERSION=$(apt-cache pkgnames php7. | sort | tail -1) PHPFPMSERV="${PHP7VERSION}-fpm" DEPENDENCIES=( ${DEPENDENCIES[@]//php/$PHP7VERSION} ) fi @@ -299,6 +303,8 @@ case "$OSDISTRIB" in [ -z "$(apt-cache pkgnames libmysqlclient-dev)" ] && [ -n "$(apt-cache pkgnames libmysqlclient15)" ] && DEPENDENCIES=( ${DEPENDENCIES[@]//libmysqlclient-dev/libmysqlclient15} ) # Paquete correcto para realpath. [ -z "$(apt-cache pkgnames realpath)" ] && DEPENDENCIES=( ${DEPENDENCIES[@]//realpath/coreutils} ) + # Instalar NodeJS. + curl -sL https://deb.nodesource.com/setup_10.x | bash - ;; centos) # Postconfiguación personalizada para CentOS. # Configuración para PHP 7. @@ -312,12 +318,16 @@ case "$OSDISTRIB" in # Instalar ctorrent de EPEL para CentOS 6 (no disponible en CentOS 7). DEPENDENCIES=( ${DEPENDENCIES[*]/ctorrent/http://dl.fedoraproject.org/pub/epel/6/$(arch)/Packages/c/ctorrent-1.3.4-14.dnh3.3.2.el6.$(arch).rpm} ) fi + # Instalar NodeJS. + curl -sL https://rpm.nodesource.com/setup_10.x | bash - ;; fedora) # Postconfiguación personalizada para Fedora. # Incluir paquetes específicos. DEPENDENCIES=( ${DEPENDENCIES[@]} btrfs-progs ) # Sustituir MySQL por MariaDB a partir de Fedora 20. [ $OSVERSION -ge 20 ] && DEPENDENCIES=( ${DEPENDENCIES[*]/mysql-/mariadb-} ) + # Instalar NodeJS. + curl -sL https://rpm.nodesource.com/setup_10.x | bash - ;; esac } @@ -725,23 +735,20 @@ function mysqlCreateDb() # Comprueba si ya está definido el usuario de acceso a la BD. function mysqlCheckUserExists() { - if [ $# -ne 1 ]; then - errorAndLog "${FUNCNAME}(): invalid number of parameters" - exit 1 - fi - - local userdb="$1" - - echoAndLog "${FUNCNAME}(): checking if $userdb exists..." - echo "select user from user where user='${userdb}'\\G" |mysql --defaults-extra-file=$TMPMYCNF mysql | grep user - if [ $? -ne 0 ]; then - echoAndLog "${FUNCNAME}(): user doesn't exists" - return 1 - else - echoAndLog "${FUNCNAME}(): user already exists" - return 0 - fi +if [ $# -ne 1 ]; then + errorAndLog "${FUNCNAME}(): invalid number of parameters" + exit 1 +fi +local userdb="$1" +echoAndLog "${FUNCNAME}(): checking if $userdb exists..." +if [ "$(mysql --defaults-extra-file=$TMPMYCNF -Nse "SELECT user FROM mysql.user WHERE user='$userdb'")" == "$userdb" ]; then + echoAndLog "${FUNCNAME}(): user already exists" + return 0 +else + echoAndLog "${FUNCNAME}(): user doesn't exists" + return 1 +fi } # Crea un usuario administrativo para la base de datos @@ -810,16 +817,9 @@ function downloadCode() # Comprobar si existe conexión. function checkNetworkConnection() { - echoAndLog "${FUNCNAME}(): Checking OpenGnsys server connectivity." - OPENGNSYS_SERVER=${OPENGNSYS_SERVER:-"opengnsys.es"} - if which wget &>/dev/null; then - wget --spider -q $OPENGNSYS_SERVER - elif which curl &>/dev/null; then - curl --connect-timeout 10 -s $OPENGNSYS_SERVER -o /dev/null - else - echoAndLog "${FUNCNAME}(): Cannot execute \"wget\" nor \"curl\"." - return 1 - fi +echoAndLog "${FUNCNAME}(): Checking OpenGnsys server connectivity." +OPENGNSYS_SERVER=${OPENGNSYS_SERVER:-"opengnsys.es"} +curl --connect-timeout 10 -s $OPENGNSYS_SERVER -o /dev/null } # Convierte nº de bits (notación CIDR) en máscara de red (gracias a FriedZombie en openwrt.org). @@ -1045,37 +1045,53 @@ function dhcpConfigure() ####### Funciones específicas de la instalación de Opengnsys ##################################################################### -# Copiar ficheros del OpenGnsys Web Console. +# Instalar OpenGnsys Web Console. function installWebFiles() { - local COMPATDIR f - local SLIMFILE="slim-2.6.1.zip" - local SWAGGERFILE="swagger-ui-2.2.5.zip" +local $tmpdir - echoAndLog "${FUNCNAME}(): Installing web files..." - # Copiar ficheros. - cp -a $WORKDIR/opengnsys/admin/WebConsole/* $INSTALL_TARGET/www #*/ comentario para Doxygen. - if [ $? != 0 ]; then - errorAndLog "${FUNCNAME}(): Error copying web files." - exit 1 - fi +echoAndLog "${FUNCNAME}(): Copying backend files..." +chown -R $OPENGNSYS_CLIENT_USER:$OPENGNSYS_CLIENT_USER $WORKDIR/opengnsys/admin/WebConsole3 +cp -a $WORKDIR/opengnsys/admin/WebConsole3/backend $INSTALL_TARGET/www +if [ $? != 0 ]; then + errorAndLog "${FUNCNAME}(): Error copying backend files." + exit 1 +fi - # Descomprimir librerías: Slim y Swagger-UI. - unzip -o $WORKDIR/opengnsys/admin/$SLIMFILE -d $INSTALL_TARGET/www/rest - unzip -o $WORKDIR/opengnsys/admin/$SWAGGERFILE -d $INSTALL_TARGET/www/rest +echoAndLog "${FUNCNAME}(): Installing backend framework..." +pushd $INSTALL_TARGET/www/backend +sudo -u $OPENGNSYS_CLIENT_USER composer.phar install +chmod 777 -R var/cache var/logs +php app/console doctrine:database:create --if-not-exists +php app/console doctrine:schema:update --force +echo yes | php app/console doctrine:fixtures:load +php app/console fos:user:create "$OPENGNSYS_DB_USER" "${OPENGNSYS_DB_USER}@localhost.localdomain" "$OPENGNSYS_DB_USER" +# Generar nuevos tokens de seguridad. +read -e ID SECRET <<<"$(php app/console opengnsys:oauth-server:client:create --no-ansi | \ + awk 'BEGIN {RS=" "} /^(id|secret)$/ {getline; gsub(/(,|.*_)/,""); printf("%s ", $0)}')" +popd - # Compatibilidad con dispositivos móviles. - COMPATDIR="$INSTALL_TARGET/www/principal" - for f in acciones administracion aula aulas hardwares imagenes menus repositorios softwares; do - sed 's/clickcontextualnodo/clicksupnodo/g' $COMPATDIR/$f.php > $COMPATDIR/$f.device.php - done - cp -a $COMPATDIR/imagenes.device.php $COMPATDIR/imagenes.device4.php - # Acceso al manual de usuario - ln -fs ../doc/userManual $INSTALL_TARGET/www/userManual - # Ficheros de log de la API REST. - touch $INSTALL_TARGET/log/{ogagent,remotepc,rest}.log +echoAndLog "${FUNCNAME}(): Installing frontend framework..." +pushd $WORKDIR/opengnsys/admin/WebConsole3/frontend +$tmpdir=$(mktemp -d) +echo "cache = $tmpdir" > .npmrc +sudo -u $OPENGNSYS_CLIENT_USER npm install +sed -i -e "s/SERVERIP/$SERVERIP/" \ + -e "s/CLIENTID/$ID/" \ + -e "s/CLIENTSECRET/$SECRET/" src/environments/environment.ts +sed -i 's,base href=.*,base href="/opengnsys/">,' src/index.html +sudo -u $OPENGNSYS_CLIENT_USER ng build + +echoAndLog "${FUNCNAME}(): Copying frontend files..." +cp -a dist/opengnsysAngular6/* $INSTALL_TARGET/www/frontend +if [ $? != 0 ]; then + errorAndLog "${FUNCNAME}(): Error copying frontend files." + exit 1 +fi +popd +rm -fr $tmpdir - echoAndLog "${FUNCNAME}(): Web files installed successfully." +echoAndLog "${FUNCNAME}(): Web files installed successfully." } # Copiar ficheros en la zona de descargas de OpenGnsys Web Console. @@ -1297,45 +1313,6 @@ function copyServerFiles () popd } -#################################################################### -### Funciones de compilación de código fuente de servicios -#################################################################### - -# Compilar los servicios de OpenGnsys -function servicesCompilation () -{ - local hayErrores=0 - - # Compilar OpenGnsys Server - echoAndLog "${FUNCNAME}(): Compiling OpenGnsys Admin Server" - pushd $WORKDIR/opengnsys/admin/Sources/Services/ogAdmServer - make && mv ogAdmServer $INSTALL_TARGET/sbin - if [ $? -ne 0 ]; then - echoAndLog "${FUNCNAME}(): error while compiling OpenGnsys Admin Server" - hayErrores=1 - fi - popd - # Compilar OpenGnsys Agent - echoAndLog "${FUNCNAME}(): Compiling OpenGnsys Agent" - pushd $WORKDIR/opengnsys/admin/Sources/Services/ogAdmAgent - make && mv ogAdmAgent $INSTALL_TARGET/sbin - if [ $? -ne 0 ]; then - echoAndLog "${FUNCNAME}(): error while compiling OpenGnsys Agent" - hayErrores=1 - fi - popd - # Compilar OpenGnsys Client - echoAndLog "${FUNCNAME}(): Compiling OpenGnsys Admin Client" - pushd $WORKDIR/opengnsys/admin/Sources/Clients/ogAdmClient - make && mv ogAdmClient ../../../../client/shared/bin - if [ $? -ne 0 ]; then - echoAndLog "${FUNCNAME}(): error while compiling OpenGnsys Admin Client" - hayErrores=1 - fi - popd - - return $hayErrores -} #################################################################### ### Funciones de copia de la Interface de administración @@ -1460,43 +1437,15 @@ function openGnsysConfigure() for dev in ${DEVICE[*]}; do if [ -n "${SERVERIP[i]}" ]; then sed -e "s/SERVERIP/${SERVERIP[i]}/g" \ - -e "s/DBUSER/$OPENGNSYS_DB_USER/g" \ - -e "s/DBPASSWORD/$OPENGNSYS_DB_PASSWD/g" \ - -e "s/DATABASE/$OPENGNSYS_DATABASE/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" \ $WORKDIR/opengnsys/repoman/etc/ogAdmRepo.cfg.tmpl > $INSTALL_TARGET/etc/ogAdmRepo-$dev.cfg - sed -e "s/SERVERIP/${SERVERIP[i]}/g" \ - -e "s/DBUSER/$OPENGNSYS_DB_USER/g" \ - -e "s/DBPASSWORD/$OPENGNSYS_DB_PASSWD/g" \ - -e "s/DATABASE/$OPENGNSYS_DATABASE/g" \ - $WORKDIR/opengnsys/admin/Sources/Services/ogAdmAgent/ogAdmAgent.cfg > $INSTALL_TARGET/etc/ogAdmAgent-$dev.cfg - CONSOLEURL="https://${SERVERIP[i]}/opengnsys" - sed -e "s/SERVERIP/${SERVERIP[i]}/g" \ - -e "s/DBUSER/$OPENGNSYS_DB_USER/g" \ - -e "s/DBPASSWORD/$OPENGNSYS_DB_PASSWD/g" \ - -e "s/DATABASE/$OPENGNSYS_DATABASE/g" \ - -e "s/OPENGNSYSURL/${CONSOLEURL//\//\\/}/g" \ - $INSTALL_TARGET/www/controlacceso.php > $INSTALL_TARGET/www/controlacceso-$dev.php - sed -e "s/SERVERIP/${SERVERIP[i]}/g" \ - -e "s/OPENGNSYSURL/${CONSOLEURL//\//\\/}/g" \ - $WORKDIR/opengnsys/admin/Sources/Clients/ogAdmClient/ogAdmClient.cfg > $INSTALL_TARGET/client/etc/ogAdmClient-$dev.cfg if [ "$dev" == "$DEFAULTDEV" ]; then OPENGNSYS_CONSOLEURL="$CONSOLEURL" fi fi let i++ done - ln -f $INSTALL_TARGET/etc/ogAdmServer-$DEFAULTDEV.cfg $INSTALL_TARGET/etc/ogAdmServer.cfg ln -f $INSTALL_TARGET/etc/ogAdmRepo-$DEFAULTDEV.cfg $INSTALL_TARGET/etc/ogAdmRepo.cfg - 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. @@ -1517,10 +1466,6 @@ EOT service=$MYSQLSERV $DISABLESERVICE fi - - echoAndLog "${FUNCNAME}(): Starting OpenGnsys services." - service="opengnsys" - $ENABLESERVICE; $STARTSERVICE } @@ -1647,19 +1592,12 @@ else ln -fs "$(dirname $PROGRAMDIR)" opengnsys fi -# Compilar código fuente de los servicios de OpenGnsys. -servicesCompilation -if [ $? -ne 0 ]; then - errorAndLog "Error while compiling OpenGnsys services" - exit 1 -fi - # Copiar carpeta Interface entre administración y motor de clonación. -copyInterfaceAdm -if [ $? -ne 0 ]; then - errorAndLog "Error while copying Administration Interface" - exit 1 -fi +#copyInterfaceAdm +#if [ $? -ne 0 ]; then +# errorAndLog "Error while copying Administration Interface" +# exit 1 +#fi # Configuración de TFTP. tftpConfigure @@ -1735,28 +1673,6 @@ if [ $? -ne 0 ]; then fi fi - -mysqlCheckDbIsEmpty ${OPENGNSYS_DATABASE} -if [ $? -eq 0 ]; then - echoAndLog "Creating tables..." - if [ -f $WORKDIR/$OPENGNSYS_DB_CREATION_FILE ]; then - mysqlImportSqlFileToDb ${OPENGNSYS_DATABASE} $WORKDIR/$OPENGNSYS_DB_CREATION_FILE - else - errorAndLog "Unable to locate $WORKDIR/$OPENGNSYS_DB_CREATION_FILE!!" - exit 1 - fi -else - # Si existe fichero ogBDAdmin-VersLocal-VersRepo.sql; aplicar cambios. - REPOVERSION=$(jq -r '.version' $WORKDIR/opengnsys/doc/VERSION.json) - OPENGNSYS_DB_UPDATE_FILE="opengnsys/admin/Database/$OPENGNSYS_DATABASE-$INSTVERSION-$REPOVERSION.sql" - if [ -f $WORKDIR/$OPENGNSYS_DB_UPDATE_FILE ]; then - echoAndLog "Updating tables from version $INSTVERSION to $REPOVERSION" - mysqlImportSqlFileToDb ${OPENGNSYS_DATABASE} $WORKDIR/$OPENGNSYS_DB_UPDATE_FILE - else - echoAndLog "Database unchanged." - fi -fi -# Eliminar fichero temporal con credenciales de acceso a MySQL. rm -f $TMPMYCNF # Copiando páqinas web. |