#!/bin/bash ### BEGIN INIT INFO # Provides: EMA Libre Carpincho # Required-Start: $syslog # Required-Stop: $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: EMA Libre Carpincho demonio # Description: Start/stop/Restart EMA Libre Carpincho ### END INIT INFO ### CONFIG ZONE # Get function from functions library #set -e . /lib/lsb/init-functions RETVAL=0 # Nombre del servicio. serviceName="emalibre" # Ubicacion de la APP appFilePath="/usr/share/emalibre" # Archivo de Inicio. web="gui_web/express.js" ### END CONFIG ZONE # Ubicacion de logs y del pid. pidFile="/var/run/$serviceName.pid" logFile="/var/run/$serviceName.log" # Ubicacion de node como modulo de carpincho. nodemodule="$appFilePath/node_modules/node/bin" # Ubicacion de forever como modulo de carpincho. foreverApp="$appFilePath/node_modules/forever/bin/forever" # Ubicacion de logs de EMA Libre emaLogs="$appFilePath/logs/debug.log" export PATH=$PATH:$nodemodule start() { if [ ! -f /etc/emalibre_modo ] then `echo "web" > /etc/emalibre_modo` fi MODO=`cat /etc/emalibre_modo` if [ -f $pidFile ]; then log_daemon_msg "EMA libre Carpincho se encuentra corriendo." RETVAL=$? else if [ $MODO = 'web' ] then log_daemon_msg "Comenzando EMA Libre Carpincho en modo web" echo "$(date '+%d/%m/%Y %H:%M:%S') - 0|SERVICIO|Inicio el servicio en modo web." >> $emaLogs $foreverApp start --uid "EMA_Web" --id "EMA_Web" --minUptime 5000 --spinSleepTime 5000 --sourceDir $appFilePath --workingDir $appFilePath --pidFile $pidFile -l $logFile -a -d -c node "$web" iniciar RETVAL=$? fi fi RETVAL=$? } restart() { log_daemon_msg "Reiniciando EMA Libre Carpincho" echo "$(date '+%d/%m/%Y %H:%M:%S') - 0|SERVICIO|Reiniciando el servicio." >> $emaLogs $foreverApp restart $nodemodule RETVAL=$? } stop() { if [ -f $pidFile ]; then log_daemon_msg "Deteniendo EMA Libre Carpincho." echo "$(date '+%d/%m/%Y %H:%M:%S') - 0|SERVICIO|Detenido el servicio." >> $emaLogs $foreverApp stopall RETVAL=$? else log_daemon_msg "EMA libre Carpincho no se encuentra ejecutandose." fi RETVAL=$? } status() { log_daemon_msg "Mostrando estado nativo del servicio." RETVAL=$? } uptime() { echo "$(date '+%d/%m/%Y %H:%M:%S') - 0|SERVICIO|Mostrando el uptime del servicio (consola)." >> $emaLogs $foreverApp list RETVAL=$? } reporte() { echo "$(date '+%d/%m/%Y %H:%M:%S') - 0|SERVICIO|Mostrando el reporte de consola." >> $emaLogs pushd "$appFilePath" "$nodemodule/node" core/reporte.js RETVAL=$? } if [ -d /usr/share/emalibre/gui_web ] then # SI EXISTE EL MODULO GUI_WEB se habilitan algunas opciones case "$1" in start) start ;; stop) stop ;; status) status ;; restart) restart ;; reporte) reporte ;; uptime) uptime ;; set-inicio-enabled) log_daemon_msg "Se Habilito el servicio para inicio automatico." systemctl enable emalibre "$nodemodule/node" -e " const fs = require('fs'); const cfgPath = '/usr/share/emalibre/conf/ConfiguracionGeneral.js'; const cfg = require(cfgPath); cfg.ConfGeneral.inicio_automatico = true; fs.writeFileSync( cfgPath, 'module.exports = ' + JSON.stringify(cfg, null, 2) + ';\n' ); " ;; set-inicio-disable) log_daemon_msg "Se Deshabilito el inicio automatico del servicio." systemctl disable emalibre "$nodemodule/node" -e " const fs = require('fs'); const cfgPath = '/usr/share/emalibre/conf/ConfiguracionGeneral.js'; const cfg = require(cfgPath); cfg.ConfGeneral.inicio_automatico = false; fs.writeFileSync( cfgPath, 'module.exports = ' + JSON.stringify(cfg, null, 2) + ';\n' ); " ;; view-conf) log_daemon_msg "Configuración de EMA Libre Carpincho" log_daemon_msg "-------------------------------------" CFG=/usr/share/emalibre/conf/ConfiguracionGeneral.js if [ -f /etc/emalibre_modo ] then log_daemon_msg "Modo actual: `cat /etc/emalibre_modo` " else `echo "consola" > /etc/emalibre_modo` log_daemon_msg "Modo actual: `cat /etc/emalibre_modo` " fi log_daemon_msg "Inicio Automatico (servicio): `systemctl is-enabled emalibre 2> echo`" log_daemon_msg "" log_daemon_msg "----------------------" log_daemon_msg "Configuracion Global:" log_daemon_msg "->`grep "Version" /usr/share/emalibre/conf/ConfiguracionGlobal.js`" log_daemon_msg "->`grep "Nombre" /usr/share/emalibre/conf/ConfiguracionGlobal.js`" log_daemon_msg "----------------------" log_daemon_msg "Configuracion General:" log_daemon_msg "" CFG=/usr/share/emalibre/conf/ConfiguracionGeneral.js log_daemon_msg "-> Tiempo de Recolección: $(sed -nE 's/^[[:space:]]*"Tiempo_de_Recoleccion"[[:space:]]*:[[:space:]]*([0-9]+),?/\1/p' $CFG)" log_daemon_msg "-> UTC: $(sed -nE 's/^[[:space:]]*"UTC"[[:space:]]*:[[:space:]]*(-?[0-9]+),?/\1/p' $CFG)" log_daemon_msg "-> Sistema Métrico: $(sed -nE 's/^[[:space:]]*"SistemaMetrico"[[:space:]]*:[[:space:]]*"([^"]+)",?/\1/p' $CFG)" log_daemon_msg "-> Nivel Debug: $(sed -nE 's/^[[:space:]]*"debug"[[:space:]]*:[[:space:]]*([0-9]+),?/\1/p' $CFG)" log_daemon_msg "-> Tamaño Debug: $(sed -nE 's/^[[:space:]]*"debugTamanio"[[:space:]]*:[[:space:]]*([0-9]+),?/\1/p' $CFG)" log_daemon_msg "-> Nombre Estación: $(sed -nE 's/^[[:space:]]*"NombreEstacion"[[:space:]]*:[[:space:]]*"([^"]+)",?/\1/p' $CFG)" log_daemon_msg "-> Modo: $(sed -nE 's/^[[:space:]]*"Modo"[[:space:]]*:[[:space:]]*"([^"]+)",?/\1/p' $CFG)" log_daemon_msg "-> Llave R: $(sed -nE 's/^[[:space:]]*"Llave_R"[[:space:]]*:[[:space:]]*"([^"]+)",?/\1/p' $CFG)" log_daemon_msg "-> Inicio automático: $(sed -nE 's/^[[:space:]]*"inicio_automatico"[[:space:]]*:[[:space:]]*(true|false),?/\1/p' $CFG)" log_daemon_msg "-> Audio: $(sed -nE 's/^[[:space:]]*"Audio"[[:space:]]*:[[:space:]]*(true|false),?/\1/p' $CFG)" log_daemon_msg "-> Notificar cambios: $(sed -nE 's/^[[:space:]]*"notificar_cambios"[[:space:]]*:[[:space:]]*(true|false),?/\1/p' $CFG)" log_daemon_msg "-> Audio Voces: $(sed -nE 's/^[[:space:]]*"audioVoces"[[:space:]]*:[[:space:]]*"([^"]+)",?/\1/p' $CFG)" log_daemon_msg "-> IP: $(sed -nE 's/^[[:space:]]*"IP"[[:space:]]*:[[:space:]]*"([^"]+)",?/\1/p' $CFG)" log_daemon_msg "-> Puerto: $(sed -nE 's/^[[:space:]]*"Puerto"[[:space:]]*:[[:space:]]*"([^"]+)",?/\1/p' $CFG)" log_daemon_msg "-> Ruta: $(sed -nE 's/^[[:space:]]*"Ruta"[[:space:]]*:[[:space:]]*"([^"]+)",?/\1/p' $CFG)" ;; *) echo "Utilice: {start|stop|status|restart|set-inicio-enabled|set-inicio-disable|view-conf|reporte|uptime}" exit 1 ;; esac fi exit $RETVAL