|
|
|
@@ -10,6 +10,8 @@
|
|
|
|
#
|
|
|
|
#
|
|
|
|
function initialize {
|
|
|
|
function initialize {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lock
|
|
|
|
|
|
|
|
|
|
|
|
log_write "Run initialize"
|
|
|
|
log_write "Run initialize"
|
|
|
|
|
|
|
|
|
|
|
|
# Imposta l'alimentazione con voltaggio negativo e setta i gpio in scrittura per le elettrovalvole bistabili
|
|
|
|
# Imposta l'alimentazione con voltaggio negativo e setta i gpio in scrittura per le elettrovalvole bistabili
|
|
|
|
@@ -21,7 +23,7 @@ function initialize {
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# Elimina tutti gli stati delle elettrovalvole preesistenti
|
|
|
|
# Elimina tutti gli stati delle elettrovalvole preesistenti
|
|
|
|
rm -f "$STATUS_DIR"/*
|
|
|
|
rm -f "$STATUS_DIR"/ev*
|
|
|
|
|
|
|
|
|
|
|
|
# Inizializza i gpio delle elettrovalvole e ne chiude l'alimentazione
|
|
|
|
# Inizializza i gpio delle elettrovalvole e ne chiude l'alimentazione
|
|
|
|
for i in $(seq $EV_TOTAL)
|
|
|
|
for i in $(seq $EV_TOTAL)
|
|
|
|
@@ -50,8 +52,13 @@ function initialize {
|
|
|
|
|
|
|
|
|
|
|
|
log_write "End initialize"
|
|
|
|
log_write "End initialize"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unlock
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Elimina i file contenente i messaggi da inserire nel json status
|
|
|
|
|
|
|
|
#
|
|
|
|
function reset_messages {
|
|
|
|
function reset_messages {
|
|
|
|
rm -f "$LAST_INFO_FILE.$!"
|
|
|
|
rm -f "$LAST_INFO_FILE.$!"
|
|
|
|
rm -f "$LAST_WARNING_FILE.$!"
|
|
|
|
rm -f "$LAST_WARNING_FILE.$!"
|
|
|
|
@@ -64,7 +71,7 @@ function reset_messages {
|
|
|
|
# $2 se specificata la string "force" apre l'elettrovalvola anche se c'é pioggia
|
|
|
|
# $2 se specificata la string "force" apre l'elettrovalvola anche se c'é pioggia
|
|
|
|
#
|
|
|
|
#
|
|
|
|
function ev_open {
|
|
|
|
function ev_open {
|
|
|
|
|
|
|
|
|
|
|
|
cron_del open_in $1 > /dev/null 2>&1
|
|
|
|
cron_del open_in $1 > /dev/null 2>&1
|
|
|
|
|
|
|
|
|
|
|
|
if [ ! "$2" = "force" ]; then
|
|
|
|
if [ ! "$2" = "force" ]; then
|
|
|
|
@@ -105,6 +112,8 @@ function ev_open {
|
|
|
|
ev_number2gpio $EVNUM
|
|
|
|
ev_number2gpio $EVNUM
|
|
|
|
g=$?
|
|
|
|
g=$?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lock
|
|
|
|
|
|
|
|
|
|
|
|
# Gestisce l'apertura dell'elettrovalvola in base alla tipologia (monostabile / bistabile)
|
|
|
|
# Gestisce l'apertura dell'elettrovalvola in base alla tipologia (monostabile / bistabile)
|
|
|
|
if [ "$EV_MONOSTABLE" == "1" ]; then
|
|
|
|
if [ "$EV_MONOSTABLE" == "1" ]; then
|
|
|
|
$GPIO -g write $g $RELE_GPIO_CLOSE
|
|
|
|
$GPIO -g write $g $RELE_GPIO_CLOSE
|
|
|
|
@@ -117,6 +126,8 @@ function ev_open {
|
|
|
|
|
|
|
|
|
|
|
|
ev_set_state $EVNUM $state
|
|
|
|
ev_set_state $EVNUM $state
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unlock
|
|
|
|
|
|
|
|
|
|
|
|
log_write "Solenoid '$1' open"
|
|
|
|
log_write "Solenoid '$1' open"
|
|
|
|
message_write "success" "Solenoid open"
|
|
|
|
message_write "success" "Solenoid open"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -194,6 +205,8 @@ function ev_close {
|
|
|
|
ev_number2gpio $EVNUM
|
|
|
|
ev_number2gpio $EVNUM
|
|
|
|
g=$?
|
|
|
|
g=$?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lock
|
|
|
|
|
|
|
|
|
|
|
|
# Gestisce l'apertura dell'elettrovalvola in base alla tipologia (monostabile / bistabile)
|
|
|
|
# Gestisce l'apertura dell'elettrovalvola in base alla tipologia (monostabile / bistabile)
|
|
|
|
if [ "$EV_MONOSTABLE" == "1" ]; then
|
|
|
|
if [ "$EV_MONOSTABLE" == "1" ]; then
|
|
|
|
$GPIO -g write $g $RELE_GPIO_OPEN
|
|
|
|
$GPIO -g write $g $RELE_GPIO_OPEN
|
|
|
|
@@ -206,6 +219,8 @@ function ev_close {
|
|
|
|
|
|
|
|
|
|
|
|
ev_set_state $EVNUM 0
|
|
|
|
ev_set_state $EVNUM 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unlock
|
|
|
|
|
|
|
|
|
|
|
|
log_write "Solenoid '$1' close"
|
|
|
|
log_write "Solenoid '$1' close"
|
|
|
|
message_write "success" "Solenoid close"
|
|
|
|
message_write "success" "Solenoid close"
|
|
|
|
|
|
|
|
|
|
|
|
@@ -474,6 +489,10 @@ function close_all_for_rain {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Chiude tutte le elettrovalvole
|
|
|
|
|
|
|
|
# $1 indica se forzare la chiusura anche per le elettrovalvole con stato di inattività
|
|
|
|
|
|
|
|
#
|
|
|
|
function close_all {
|
|
|
|
function close_all {
|
|
|
|
|
|
|
|
|
|
|
|
for i in $(seq $EV_TOTAL)
|
|
|
|
for i in $(seq $EV_TOTAL)
|
|
|
|
@@ -491,6 +510,9 @@ function close_all {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Stampa la lista degli alias delle elettrovalvole
|
|
|
|
|
|
|
|
#
|
|
|
|
function list_alias {
|
|
|
|
function list_alias {
|
|
|
|
|
|
|
|
|
|
|
|
for i in $(seq $EV_TOTAL)
|
|
|
|
for i in $(seq $EV_TOTAL)
|
|
|
|
@@ -503,7 +525,10 @@ function list_alias {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
#
|
|
|
|
|
|
|
|
# Stampa un json contanente lo status della centralina
|
|
|
|
# $1 .. $6 parametri opzionali
|
|
|
|
# $1 .. $6 parametri opzionali
|
|
|
|
|
|
|
|
# - get_cron: aggiunge i dati relativi ai crontab delle scehdulazioni di apertura/chisura delle elettrovalvole
|
|
|
|
|
|
|
|
# - get_cron_open_in: aggiunge i dati relativi ai crontab degli avvii ritardati eseguiti con il comando open_in
|
|
|
|
#
|
|
|
|
#
|
|
|
|
function json_status {
|
|
|
|
function json_status {
|
|
|
|
local json=""
|
|
|
|
local json=""
|
|
|
|
@@ -695,6 +720,7 @@ function cron_add {
|
|
|
|
local CRON_ARG=$7
|
|
|
|
local CRON_ARG=$7
|
|
|
|
local CRON_ARG2=$8
|
|
|
|
local CRON_ARG2=$8
|
|
|
|
local CRON_COMMAND=""
|
|
|
|
local CRON_COMMAND=""
|
|
|
|
|
|
|
|
local CRON_DISABLED=""
|
|
|
|
local PATH_SCRIPT=`$READLINK -f "$DIR_SCRIPT/$NAME_SCRIPT"`
|
|
|
|
local PATH_SCRIPT=`$READLINK -f "$DIR_SCRIPT/$NAME_SCRIPT"`
|
|
|
|
local TMP_CRON_FILE2="$TMP_CRON_FILE-2"
|
|
|
|
local TMP_CRON_FILE2="$TMP_CRON_FILE-2"
|
|
|
|
|
|
|
|
|
|
|
|
@@ -787,6 +813,9 @@ function cron_add {
|
|
|
|
|
|
|
|
|
|
|
|
open)
|
|
|
|
open)
|
|
|
|
CRON_COMMAND="$PATH_SCRIPT open $CRON_ARG"
|
|
|
|
CRON_COMMAND="$PATH_SCRIPT open $CRON_ARG"
|
|
|
|
|
|
|
|
if [ "$CRON_ARG2" == "disabled" ]; then
|
|
|
|
|
|
|
|
CRON_DISABLED="#"
|
|
|
|
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
|
|
open_in)
|
|
|
|
open_in)
|
|
|
|
@@ -799,6 +828,9 @@ function cron_add {
|
|
|
|
|
|
|
|
|
|
|
|
close)
|
|
|
|
close)
|
|
|
|
CRON_COMMAND="$PATH_SCRIPT close $CRON_ARG"
|
|
|
|
CRON_COMMAND="$PATH_SCRIPT close $CRON_ARG"
|
|
|
|
|
|
|
|
if [ "$CRON_ARG2" == "disabled" ]; then
|
|
|
|
|
|
|
|
CRON_DISABLED="#"
|
|
|
|
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
|
|
*)
|
|
|
|
*)
|
|
|
|
@@ -823,7 +855,7 @@ function cron_add {
|
|
|
|
if [ "$NEW_CRON" -eq "0" ]; then
|
|
|
|
if [ "$NEW_CRON" -eq "0" ]; then
|
|
|
|
echo "$PREVIOUS_CONTENT" >> "$TMP_CRON_FILE2"
|
|
|
|
echo "$PREVIOUS_CONTENT" >> "$TMP_CRON_FILE2"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
echo "$CRON_M $CRON_H $CRON_DOM $CRON_MON $CRON_DOW $CRON_COMMAND" >> "$TMP_CRON_FILE2"
|
|
|
|
echo "$CRON_DISABLED$CRON_M $CRON_H $CRON_DOM $CRON_MON $CRON_DOW $CRON_COMMAND" >> "$TMP_CRON_FILE2"
|
|
|
|
echo "# END cron $CRON_TYPE $CRON_ARG" >> "$TMP_CRON_FILE2"
|
|
|
|
echo "# END cron $CRON_TYPE $CRON_ARG" >> "$TMP_CRON_FILE2"
|
|
|
|
|
|
|
|
|
|
|
|
$CRONTAB "$TMP_CRON_FILE2"
|
|
|
|
$CRONTAB "$TMP_CRON_FILE2"
|
|
|
|
@@ -883,6 +915,9 @@ function cron_get {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Imposta il cron di inizializzazione della centralina
|
|
|
|
|
|
|
|
#
|
|
|
|
function set_cron_init {
|
|
|
|
function set_cron_init {
|
|
|
|
|
|
|
|
|
|
|
|
cron_del "init" 2> /dev/null
|
|
|
|
cron_del "init" 2> /dev/null
|
|
|
|
@@ -890,12 +925,18 @@ function set_cron_init {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Elimina il cron di inizializzazione della centralina
|
|
|
|
|
|
|
|
#
|
|
|
|
function del_cron_init {
|
|
|
|
function del_cron_init {
|
|
|
|
|
|
|
|
|
|
|
|
cron_del "init"
|
|
|
|
cron_del "init"
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Imposta il cron per l'avvio del socket server
|
|
|
|
|
|
|
|
#
|
|
|
|
function set_cron_start_socket_server {
|
|
|
|
function set_cron_start_socket_server {
|
|
|
|
|
|
|
|
|
|
|
|
cron_del "start_socket_server" 2> /dev/null
|
|
|
|
cron_del "start_socket_server" 2> /dev/null
|
|
|
|
@@ -903,41 +944,62 @@ function set_cron_start_socket_server {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Elimina il cron per l'avvio del socket server
|
|
|
|
|
|
|
|
#
|
|
|
|
function del_cron_start_socket_server {
|
|
|
|
function del_cron_start_socket_server {
|
|
|
|
|
|
|
|
|
|
|
|
cron_del "start_socket_server"
|
|
|
|
cron_del "start_socket_server"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Imposta il cron che esegue il controllo di presenza pioggia tramite sensore
|
|
|
|
|
|
|
|
#
|
|
|
|
function set_cron_check_rain_sensor {
|
|
|
|
function set_cron_check_rain_sensor {
|
|
|
|
|
|
|
|
|
|
|
|
cron_del "check_rain_sensor" 2> /dev/null
|
|
|
|
cron_del "check_rain_sensor" 2> /dev/null
|
|
|
|
cron_add "check_rain_sensor"
|
|
|
|
cron_add "check_rain_sensor"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Elimina il cron che esegue il controllo di presenza pioggia tramite sensore
|
|
|
|
|
|
|
|
#
|
|
|
|
function del_cron_check_rain_sensor {
|
|
|
|
function del_cron_check_rain_sensor {
|
|
|
|
|
|
|
|
|
|
|
|
cron_del "check_rain_sensor"
|
|
|
|
cron_del "check_rain_sensor"
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Imposta il cron che esegue il controllo di presenza pioggia tramite servizio online
|
|
|
|
|
|
|
|
#
|
|
|
|
function set_cron_check_rain_online {
|
|
|
|
function set_cron_check_rain_online {
|
|
|
|
|
|
|
|
|
|
|
|
cron_del "check_rain_online" 2> /dev/null
|
|
|
|
cron_del "check_rain_online" 2> /dev/null
|
|
|
|
cron_add "check_rain_online"
|
|
|
|
cron_add "check_rain_online"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Elimina il cron che esegue il controllo di presenza pioggia tramite servizio online
|
|
|
|
|
|
|
|
#
|
|
|
|
function del_cron_check_rain_online {
|
|
|
|
function del_cron_check_rain_online {
|
|
|
|
|
|
|
|
|
|
|
|
cron_del "check_rain_online"
|
|
|
|
cron_del "check_rain_online"
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Imposta il cron che gestisce la chiusura delle elettrovalvole in caso di pioggia
|
|
|
|
|
|
|
|
#
|
|
|
|
function set_cron_close_all_for_rain {
|
|
|
|
function set_cron_close_all_for_rain {
|
|
|
|
|
|
|
|
|
|
|
|
cron_del "close_all_for_rain" 2> /dev/null
|
|
|
|
cron_del "close_all_for_rain" 2> /dev/null
|
|
|
|
cron_add "close_all_for_rain"
|
|
|
|
cron_add "close_all_for_rain"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Elimina il cron che gestisce la chiusura delle elettrovalvole in caso di pioggia
|
|
|
|
|
|
|
|
#
|
|
|
|
function del_cron_close_all_for_rain {
|
|
|
|
function del_cron_close_all_for_rain {
|
|
|
|
|
|
|
|
|
|
|
|
cron_del "close_all_for_rain"
|
|
|
|
cron_del "close_all_for_rain"
|
|
|
|
@@ -952,6 +1014,7 @@ function del_cron_close_all_for_rain {
|
|
|
|
# $4 giorno del mese cron
|
|
|
|
# $4 giorno del mese cron
|
|
|
|
# $5 mese cron
|
|
|
|
# $5 mese cron
|
|
|
|
# $6 giorno della settimana cron
|
|
|
|
# $6 giorno della settimana cron
|
|
|
|
|
|
|
|
# $7 disabled
|
|
|
|
#
|
|
|
|
#
|
|
|
|
function add_cron_open {
|
|
|
|
function add_cron_open {
|
|
|
|
|
|
|
|
|
|
|
|
@@ -962,7 +1025,7 @@ function add_cron_open {
|
|
|
|
return 1
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
cron_add "open" "$2" "$3" "$4" "$5" "$6" "$1"
|
|
|
|
cron_add "open" "$2" "$3" "$4" "$5" "$6" "$1" "$7"
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1043,6 +1106,7 @@ function get_cron_close {
|
|
|
|
# $4 giorno del mese cron
|
|
|
|
# $4 giorno del mese cron
|
|
|
|
# $5 mese cron
|
|
|
|
# $5 mese cron
|
|
|
|
# $6 giorno della settimana cron
|
|
|
|
# $6 giorno della settimana cron
|
|
|
|
|
|
|
|
# $7 disabled
|
|
|
|
#
|
|
|
|
#
|
|
|
|
function add_cron_close {
|
|
|
|
function add_cron_close {
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1053,7 +1117,7 @@ function add_cron_close {
|
|
|
|
return 1
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
cron_add "close" "$2" "$3" "$4" "$5" "$6" "$1"
|
|
|
|
cron_add "close" "$2" "$3" "$4" "$5" "$6" "$1" "$7"
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1074,8 +1138,9 @@ function del_cron_close {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Mostra il i parametri dello script
|
|
|
|
|
|
|
|
#
|
|
|
|
function show_usage {
|
|
|
|
function show_usage {
|
|
|
|
echo -e "piGarden v. $VERSION.$SUB_VERSION.$RELEASE_VERSION"
|
|
|
|
echo -e "piGarden v. $VERSION.$SUB_VERSION.$RELEASE_VERSION"
|
|
|
|
echo -e ""
|
|
|
|
echo -e ""
|
|
|
|
@@ -1106,11 +1171,11 @@ function show_usage {
|
|
|
|
echo -e "\t$NAME_SCRIPT set_cron_close_all_for_rain set crontab for close all solenoid when raining"
|
|
|
|
echo -e "\t$NAME_SCRIPT set_cron_close_all_for_rain set crontab for close all solenoid when raining"
|
|
|
|
echo -e "\t$NAME_SCRIPT del_cron_close_all_for_rain remove crontab for close all solenoid when raining"
|
|
|
|
echo -e "\t$NAME_SCRIPT del_cron_close_all_for_rain remove crontab for close all solenoid when raining"
|
|
|
|
|
|
|
|
|
|
|
|
echo -e "\t$NAME_SCRIPT add_cron_open alias m h dom mon dow add crontab for open a solenoid"
|
|
|
|
echo -e "\t$NAME_SCRIPT add_cron_open alias m h dom mon dow [disbled] add crontab for open a solenoid"
|
|
|
|
echo -e "\t$NAME_SCRIPT del_cron_open alias remove all crontab for open a solenoid"
|
|
|
|
echo -e "\t$NAME_SCRIPT del_cron_open alias remove all crontab for open a solenoid"
|
|
|
|
echo -e "\t$NAME_SCRIPT get_cron_open alias get all crontab for open a solenoid"
|
|
|
|
echo -e "\t$NAME_SCRIPT get_cron_open alias get all crontab for open a solenoid"
|
|
|
|
echo -e "\t$NAME_SCRIPT del_cron_open_in alias remove all crontab for open_in a solenoid"
|
|
|
|
echo -e "\t$NAME_SCRIPT del_cron_open_in alias remove all crontab for open_in a solenoid"
|
|
|
|
echo -e "\t$NAME_SCRIPT add_cron_close alias m h dom mon dow add crontab for close a solenoid"
|
|
|
|
echo -e "\t$NAME_SCRIPT add_cron_close alias m h dom mon dow [disabled] add crontab for close a solenoid"
|
|
|
|
echo -e "\t$NAME_SCRIPT del_cron_close alias remove all crontab for close a solenoid"
|
|
|
|
echo -e "\t$NAME_SCRIPT del_cron_close alias remove all crontab for close a solenoid"
|
|
|
|
echo -e "\t$NAME_SCRIPT get_cron_close alias get all crontab for close a solenoid"
|
|
|
|
echo -e "\t$NAME_SCRIPT get_cron_close alias get all crontab for close a solenoid"
|
|
|
|
echo -e "\n"
|
|
|
|
echo -e "\n"
|
|
|
|
@@ -1118,24 +1183,20 @@ function show_usage {
|
|
|
|
echo -e "\t$NAME_SCRIPT debug2 [parameter]|[parameter]|..] Run debug code 2"
|
|
|
|
echo -e "\t$NAME_SCRIPT debug2 [parameter]|[parameter]|..] Run debug code 2"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Avvia il socket server
|
|
|
|
|
|
|
|
#
|
|
|
|
function start_socket_server {
|
|
|
|
function start_socket_server {
|
|
|
|
|
|
|
|
|
|
|
|
rm -f "$TCPSERVER_PID_FILE"
|
|
|
|
rm -f "$TCPSERVER_PID_FILE"
|
|
|
|
echo $TCPSERVER_PID_SCRIPT > "$TCPSERVER_PID_FILE"
|
|
|
|
echo $TCPSERVER_PID_SCRIPT > "$TCPSERVER_PID_FILE"
|
|
|
|
$TCPSERVER -v -RHl0 $TCPSERVER_IP $TCPSERVER_PORT $0 socket_server_command
|
|
|
|
$TCPSERVER -v -RHl0 $TCPSERVER_IP $TCPSERVER_PORT $0 socket_server_command
|
|
|
|
|
|
|
|
|
|
|
|
#if [ $? -eq 0 ]; then
|
|
|
|
|
|
|
|
# echo $TCPSERVER_PID_SCRIPT > "$TCPSERVER_PID_FILE"
|
|
|
|
|
|
|
|
# trap stop_socket_server EXIT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# log_write "start socket server ";
|
|
|
|
|
|
|
|
# return 0
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
# log_write "start socket server failed";
|
|
|
|
|
|
|
|
# return 1
|
|
|
|
|
|
|
|
#fi
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Ferma il socket server
|
|
|
|
|
|
|
|
#
|
|
|
|
function stop_socket_server {
|
|
|
|
function stop_socket_server {
|
|
|
|
|
|
|
|
|
|
|
|
if [ ! -f "$TCPSERVER_PID_FILE" ]; then
|
|
|
|
if [ ! -f "$TCPSERVER_PID_FILE" ]; then
|
|
|
|
@@ -1151,11 +1212,29 @@ function stop_socket_server {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Esegue un comando ricevuto dal socket server
|
|
|
|
|
|
|
|
#
|
|
|
|
function socket_server_command {
|
|
|
|
function socket_server_command {
|
|
|
|
|
|
|
|
|
|
|
|
RUN_FROM_TCPSERVER=1
|
|
|
|
RUN_FROM_TCPSERVER=1
|
|
|
|
|
|
|
|
|
|
|
|
local line=""
|
|
|
|
local line=""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if [ ! -z "$TCPSERVER_USER" ] && [ ! -z "$TCPSERVER_PWD" ]; then
|
|
|
|
|
|
|
|
local user=""
|
|
|
|
|
|
|
|
local password=""
|
|
|
|
|
|
|
|
read -t 3 user
|
|
|
|
|
|
|
|
read -t 3 password
|
|
|
|
|
|
|
|
user=$(echo "$user" | $TR -d '[\r\n]')
|
|
|
|
|
|
|
|
password=$(echo "$password" | $TR -d '[\r\n]')
|
|
|
|
|
|
|
|
if [ "$user" != "$TCPSERVER_USER" ] || [ "$password" != "$TCPSERVER_PWD" ]; then
|
|
|
|
|
|
|
|
log_write "socket connection from: $TCPREMOTEIP - Bad socket server credentials - user:$user"
|
|
|
|
|
|
|
|
json_error 0 "Bad socket server credentials"
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
read line
|
|
|
|
read line
|
|
|
|
line=$(echo "$line " | $TR -d '[\r\n]')
|
|
|
|
line=$(echo "$line " | $TR -d '[\r\n]')
|
|
|
|
arg1=$(echo "$line " | $CUT -d ' ' -f1)
|
|
|
|
arg1=$(echo "$line " | $CUT -d ' ' -f1)
|
|
|
|
@@ -1165,8 +1244,9 @@ function socket_server_command {
|
|
|
|
arg5=$(echo "$line " | $CUT -d ' ' -f5)
|
|
|
|
arg5=$(echo "$line " | $CUT -d ' ' -f5)
|
|
|
|
arg6=$(echo "$line " | $CUT -d ' ' -f6)
|
|
|
|
arg6=$(echo "$line " | $CUT -d ' ' -f6)
|
|
|
|
arg7=$(echo "$line " | $CUT -d ' ' -f7)
|
|
|
|
arg7=$(echo "$line " | $CUT -d ' ' -f7)
|
|
|
|
|
|
|
|
arg8=$(echo "$line " | $CUT -d ' ' -f8)
|
|
|
|
|
|
|
|
|
|
|
|
log_write "socket connection from: $TCPREMOTEIP - command: $arg1 $arg2 $arg3 $arg4 $arg5 $arg6 $arg7"
|
|
|
|
log_write "socket connection from: $TCPREMOTEIP - command: $arg1 $arg2 $arg3 $arg4 $arg5 $arg6 $arg7 $arg8"
|
|
|
|
|
|
|
|
|
|
|
|
reset_messages &> /dev/null
|
|
|
|
reset_messages &> /dev/null
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1271,10 +1351,10 @@ function socket_server_command {
|
|
|
|
|
|
|
|
|
|
|
|
;;
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
|
|
add_cron_open)
|
|
|
|
add_cron_open)
|
|
|
|
local vret=""
|
|
|
|
local vret=""
|
|
|
|
|
|
|
|
|
|
|
|
vret=`add_cron_open "$arg2" "$arg3" "$arg4" "$arg5" "$arg6" "$arg7"`
|
|
|
|
vret=`add_cron_open "$arg2" "$arg3" "$arg4" "$arg5" "$arg6" "$arg7" $arg8`
|
|
|
|
|
|
|
|
|
|
|
|
if [[ ! -z $vret ]]; then
|
|
|
|
if [[ ! -z $vret ]]; then
|
|
|
|
json_error 0 "Cron set failed"
|
|
|
|
json_error 0 "Cron set failed"
|
|
|
|
@@ -1289,7 +1369,7 @@ function socket_server_command {
|
|
|
|
add_cron_close)
|
|
|
|
add_cron_close)
|
|
|
|
local vret=""
|
|
|
|
local vret=""
|
|
|
|
|
|
|
|
|
|
|
|
vret=`add_cron_close "$arg2" "$arg3" "$arg4" "$arg5" "$arg6" "$arg7"`
|
|
|
|
vret=`add_cron_close "$arg2" "$arg3" "$arg4" "$arg5" "$arg6" "$arg7" $arg8`
|
|
|
|
|
|
|
|
|
|
|
|
if [[ ! -z $vret ]]; then
|
|
|
|
if [[ ! -z $vret ]]; then
|
|
|
|
json_error 0 "Cron set failed"
|
|
|
|
json_error 0 "Cron set failed"
|
|
|
|
@@ -1311,6 +1391,11 @@ function socket_server_command {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Mostra un json per una risposta di errore
|
|
|
|
|
|
|
|
# $1 codice errore
|
|
|
|
|
|
|
|
# $2 messaggio di errore
|
|
|
|
|
|
|
|
#
|
|
|
|
json_error()
|
|
|
|
json_error()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
echo "{\"error\":{\"code\":$1,\"description\":\"$2\"}}"
|
|
|
|
echo "{\"error\":{\"code\":$1,\"description\":\"$2\"}}"
|
|
|
|
@@ -1328,16 +1413,86 @@ list_descendants ()
|
|
|
|
echo "$children"
|
|
|
|
echo "$children"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Gestisce l'apertura di un lock
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
function lock {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sleep 0.$((100 * $RANDOM / 32767)) | sed 's/..$/.&/'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
local max_time=10
|
|
|
|
|
|
|
|
local current_time=$(($1 + 1))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
local lock_content=`cat "$LOCK_FILE" 2> /dev/null`
|
|
|
|
|
|
|
|
if [ -z $lock_content ]; then
|
|
|
|
|
|
|
|
lock_content="0"
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$lock_content" -eq "1" ]; then
|
|
|
|
|
|
|
|
if [ "$current_time" -gt "$max_time" ]; then
|
|
|
|
|
|
|
|
log_write "Maximum locked time reached"
|
|
|
|
|
|
|
|
sleep $max_time
|
|
|
|
|
|
|
|
unlock
|
|
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
log_write "Sleep 1 second for locked state"
|
|
|
|
|
|
|
|
sleep 1
|
|
|
|
|
|
|
|
lock $current_time
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "1" > "$LOCK_FILE"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Chidue un lock
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
function unlock {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
echo "0" > "$LOCK_FILE"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# Invia l'identificativo univoco ad uso statistico di utilizzo
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
function send_identifier {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if [ "$NO_SEND_IDENTIFIER" == "1" ]; then
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
local FILE_ID="/tmp/pigarden.id"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if [ -f "$FILE_ID" ]; then
|
|
|
|
|
|
|
|
# Se il file è più vecchio di un giorno esce
|
|
|
|
|
|
|
|
local max_age_file=86400
|
|
|
|
|
|
|
|
local time_file=`$STAT -c %Y "$FILE_ID"`
|
|
|
|
|
|
|
|
local age_file=$((`date +"%s"` - $time_file ))
|
|
|
|
|
|
|
|
if [ "$age_file" -lt "$max_age_file" ]; then
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
local ID=`ifconfig | $GREP --color=never -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' | head -1 | md5sum | $CUT -d" " -f 1`
|
|
|
|
|
|
|
|
if [ -z "$ID" ]; then
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "$ID" > "$FILE_ID"
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$CURL https://www.lejubila.net/statistic/collect_usage/piGarden/$ID/$VERSION/$SUB_VERSION/$RELEASE_VERSION > /dev/null 2>&1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function debug1 {
|
|
|
|
function debug1 {
|
|
|
|
. "$DIR_SCRIPT/debug/debug1.sh"
|
|
|
|
. "$DIR_SCRIPT/debug/debug1.sh"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function debug2 {
|
|
|
|
function debug2 {
|
|
|
|
. "$DIR_SCRIPT/debug/debug1.sh"
|
|
|
|
. "$DIR_SCRIPT/debug/debug2.sh"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
VERSION=0
|
|
|
|
VERSION=0
|
|
|
|
SUB_VERSION=3
|
|
|
|
SUB_VERSION=4
|
|
|
|
RELEASE_VERSION=0
|
|
|
|
RELEASE_VERSION=0
|
|
|
|
|
|
|
|
|
|
|
|
DIR_SCRIPT=`dirname $0`
|
|
|
|
DIR_SCRIPT=`dirname $0`
|
|
|
|
@@ -1351,6 +1506,7 @@ TCPSERVER_PID_FILE="$TMP_PATH/piGardenTcpServer.pid"
|
|
|
|
TCPSERVER_PID_SCRIPT=$$
|
|
|
|
TCPSERVER_PID_SCRIPT=$$
|
|
|
|
RUN_FROM_TCPSERVER=0
|
|
|
|
RUN_FROM_TCPSERVER=0
|
|
|
|
TMP_CRON_FILE="$TMP_PATH/pigarden.user.cron.$$"
|
|
|
|
TMP_CRON_FILE="$TMP_PATH/pigarden.user.cron.$$"
|
|
|
|
|
|
|
|
LOCK_FILE="$TMP_PATH/piGarden.lock"
|
|
|
|
|
|
|
|
|
|
|
|
if [ -f $CONFIG_ETC ]; then
|
|
|
|
if [ -f $CONFIG_ETC ]; then
|
|
|
|
. $CONFIG_ETC
|
|
|
|
. $CONFIG_ETC
|
|
|
|
@@ -1363,6 +1519,19 @@ LAST_INFO_FILE="$STATUS_DIR/last_info"
|
|
|
|
LAST_WARNING_FILE="$STATUS_DIR/last_worning"
|
|
|
|
LAST_WARNING_FILE="$STATUS_DIR/last_worning"
|
|
|
|
LAST_SUCCESS_FILE="$STATUS_DIR/last_success"
|
|
|
|
LAST_SUCCESS_FILE="$STATUS_DIR/last_success"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Elimina il file di lock se più vecchio di 11 secondi
|
|
|
|
|
|
|
|
if [ -f "$LOCK_FILE" ]; then
|
|
|
|
|
|
|
|
max_age_lock_file=11
|
|
|
|
|
|
|
|
time_lock_file=`$STAT -c %Y "$LOCK_FILE"`
|
|
|
|
|
|
|
|
age_lock_file=$((`date +"%s"` - $time_lock_file ))
|
|
|
|
|
|
|
|
if [ "$age_lock_file" -gt "$max_age_lock_file" ]; then
|
|
|
|
|
|
|
|
rm -f "$age_lock_file"
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
send_identifier &
|
|
|
|
|
|
|
|
|
|
|
|
case "$1" in
|
|
|
|
case "$1" in
|
|
|
|
init)
|
|
|
|
init)
|
|
|
|
initialize
|
|
|
|
initialize
|
|
|
|
@@ -1490,7 +1659,7 @@ case "$1" in
|
|
|
|
;;
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
|
|
add_cron_open)
|
|
|
|
add_cron_open)
|
|
|
|
add_cron_open "$2" "$3" "$4" "$5" "$6" "$7"
|
|
|
|
add_cron_open "$2" "$3" "$4" "$5" "$6" "$7" "$8"
|
|
|
|
;;
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
|
|
del_cron_open)
|
|
|
|
del_cron_open)
|
|
|
|
@@ -1506,7 +1675,7 @@ case "$1" in
|
|
|
|
;;
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
|
|
add_cron_close)
|
|
|
|
add_cron_close)
|
|
|
|
add_cron_close "$2" "$3" "$4" "$5" "$6" "$7"
|
|
|
|
add_cron_close "$2" "$3" "$4" "$5" "$6" "$7" "$8"
|
|
|
|
;;
|
|
|
|
;;
|
|
|
|
|
|
|
|
|
|
|
|
del_cron_close)
|
|
|
|
del_cron_close)
|
|
|
|
|