diff --git a/install/pialert.cron b/install/pialert.cron index 3a333f00..2c0e1b0a 100644 --- a/install/pialert.cron +++ b/install/pialert.cron @@ -10,5 +10,5 @@ 0 3 * * 1 python ~/pialert/back/pialert.py update_vendors >~/pialert/log/pialert.vendors.log 2>&1 */3 * * * * python ~/pialert/back/pialert.py internet_IP >~/pialert/log/pialert.IP.log 2>&1 */5 * * * * python ~/pialert/back/pialert.py 1 >~/pialert/log/pialert.1.log 2>&1 -#*/15 * * * * python ~/pialert/back/pialert.py 15 >~/pialert/log/pialert.15.log 2>&1 -0 3 * * 1 python ~/pialert/back/pialert.py cleanup >~/pialert/log/pialert.1.log 2>&1 \ No newline at end of file +0 2 * * */4 python ~/pialert/back/pialert.py cleanup >~/pialert/log/pialert.cleanup.log 2>&1 +#*/15 * * * * python ~/pialert/back/pialert.py 15 >~/pialert/log/pialert.15.log 2>&1 \ No newline at end of file diff --git a/install/pialert_install.sh b/install/pialert_install.sh index 9e401712..4c997cd5 100644 --- a/install/pialert_install.sh +++ b/install/pialert_install.sh @@ -387,7 +387,7 @@ install_python() { print_msg "- Using Python 2" else print_msg "- Installing Python 2..." - sudo apt-get install python -y 2>&1 >> "$LOG" + sudo apt-get install python pip -y 2>&1 >> "$LOG" fi PYTHON_BIN="python" elif [ $USE_PYTHON_VERSION -eq 3 ] ; then @@ -395,7 +395,8 @@ install_python() { print_msg "- Using Python 3" else print_msg "- Installing Python 3..." - sudo apt-get install python3 -y 2>&1 >> "$LOG" + sudo apt-get install python3 pip -y 2>&1 >> "$LOG" + python3 -m pip install requests fi PYTHON_BIN="python3" else diff --git a/install/pialert_install_no_webserver.sh b/install/pialert_install_no_webserver.sh deleted file mode 100644 index 3b25e6ad..00000000 --- a/install/pialert_install_no_webserver.sh +++ /dev/null @@ -1,785 +0,0 @@ -#!/bin/bash -# ------------------------------------------------------------------------------ -# Pi.Alert -# Open Source Network Guard / WIFI & LAN intrusion detector -# -# pialert_install.sh - Installation script -# ------------------------------------------------------------------------------ -# Puche 2021 pi.alert.application@gmail.com GNU GPLv3 -# ------------------------------------------------------------------------------ - -# ------------------------------------------------------------------------------ -# Variables -# ------------------------------------------------------------------------------ - COLS=70 - ROWS=12 - - INSTALL_DIR=~ - PIALERT_HOME="$INSTALL_DIR/pialert" - - LIGHTTPD_CONF_DIR="/etc/lighttpd" - WEBROOT="/var/www/html" - PIALERT_DEFAULT_PAGE=false - - LOG="pialert_install_`date +"%Y-%m-%d_%H-%M"`.log" - - # MAIN_IP=`ip -o route get 1 | sed -n 's/.*src \([0-9.]\+\).*/\1/p'` - MAIN_IP=`ip -o route get 1 | sed 's/^.*src \([^ ]*\).*$/\1/;q'` - - PIHOLE_INSTALL=false - PIHOLE_ACTIVE=false - DHCP_ACTIVATE=false - DHCP_ACTIVE=false - - DHCP_RANGE_START="192.168.1.200" - DHCP_RANGE_END="192.168.1.251" - DHCP_ROUTER="192.168.1.1" - DHCP_LEASE="1" - DHCP_DOMAIN="local" - - USE_PYTHON_VERSION=0 - PYTHON_BIN=python - - FIRST_SCAN_KNOWN=true - - REPORT_MAIL=False - REPORT_TO=user@gmail.com - SMTP_SERVER=smtp.gmail.com - SMTP_PORT=587 - SMTP_USER=user@gmail.com - SMTP_PASS=password - - DDNS_ACTIVE=False - DDNS_DOMAIN='your_domain.freeddns.org' - DDNS_USER='dynu_user' - DDNS_PASSWORD='A0000000B0000000C0000000D0000000' - DDNS_UPDATE_URL='https://api.dynu.com/nic/update?' - - -# ------------------------------------------------------------------------------ -# Main -# ------------------------------------------------------------------------------ -main() { - print_superheader "Pi.Alert Installation" - log "`date`" - log "Logfile: $LOG" - - check_pialert_home - ask_config - - set -e - - install_pihole - activate_DHCP - add_pialert_DNS - install_lighttpd - install_arpscan - install_python - install_pialert - - print_header "Installation process finished" - print_msg "Use: - http://pi.alert/" - print_msg " - http://$MAIN_IP/pialert/" - print_msg "To access Pi.Alert web" - print_msg "" - - move_logfile -} - - -# ------------------------------------------------------------------------------ -# Ask config questions -# ------------------------------------------------------------------------------ -ask_config() { - # Ask installation - ask_yesno "This script will install Pi.Alert in this system using this path:\n$PIALERT_HOME" \ - "Do you want to continue ?" - if ! $ANSWER ; then - exit 1 - fi - - # Ask Pi-hole Installation - PIHOLE_ACTIVE=false - if [ -e /usr/local/bin/pihole ] || [ -e /etc/pihole ]; then - PIHOLE_ACTIVE=true - fi - - PIHOLE_INSTALL=false - if $PIHOLE_ACTIVE ; then - msgbox "Pi-hole is already installed in this system." \ - "Perfect: Pi-hole Installation is not necessary" - else - ask_yesno "Pi-hole is not installed." \ - "Do you want to install Pi-hole before installing Pi.Alert ?" "YES" - if $ANSWER ; then - PIHOLE_INSTALL=true - msgbox "In the installation wizard of Pi-hole, select this options" \ - "'Install web admin interface' & 'Install web server lighttpd'" - fi - fi - - # Ask DHCP Activation - DHCP_ACTIVE=false - DHCP_ACTIVATE=false - if $PIHOLE_ACTIVE ; then - DHCP_ACTIVE=`sudo grep DHCP_ACTIVE /etc/pihole/setupVars.conf | awk -F= '/./{print $2}'` - if [ "$DHCP_ACTIVE" = "" ] ; then DHCP_ACTIVE=false; fi - - if ! $DHCP_ACTIVE ; then - ask_yesno "Pi-hole DHCP server is not active." \ - "Do you want to activate Pi-hole DHCP server ?" - if $ANSWER ; then - DHCP_ACTIVATE=true - fi - fi - - elif $PIHOLE_INSTALL ; then - ask_yesno "Pi-hole installation." \ - "Do you want to activate Pi-hole DHCP server ?" - if $ANSWER ; then - DHCP_ACTIVATE=true - fi - fi - - if $DHCP_ACTIVATE ; then - msgbox "Default DHCP options will be used. Range=$DHCP_RANGE_START - $DHCP_RANGE_END / Router=$DHCP_ROUTER / Domain=$DHCP_DOMAIN / Leases=$DHCP_LEASE h." \ - "You can change this values in your Pi-hole Admin Portal" - msgbox "Make sure your router's DHCP server is disabled" \ - "when using the Pi-hole DHCP server!" - fi - - # Ask Pi.Alert deafault page - PIALERT_DEFAULT_PAGE=false - if ! $PIHOLE_ACTIVE && ! $PIHOLE_INSTALL; then - ask_yesno "As Pi-hole is not going to be available in this system," \ - "Do you want to use Pi.Alert as default web server page ?" "YES" - if $ANSWER ; then - PIALERT_DEFAULT_PAGE=true - fi - fi - - # Ask Python version - ask_option "What Python version do you want to use ?" \ - 3 \ - 0 " - Use Python already installed in the system (DEFAULT)" \ - 2 " - Use Python 2" \ - 3 " - Use Python 3" - if [ "$ANSWER" = "" ] ; then - USE_PYTHON_VERSION=0 - else - USE_PYTHON_VERSION=$ANSWER - fi - - # Ask first scan options - ask_yesno "First Scan options" \ - "Do you want to mark the new devices as known devices during the first scan?" "YES" - FIRST_SCAN_KNOWN=$ANSWER - - # Ask e-mail notification config - MAIL_REPORT=false - ask_yesno "Pi.Alert can notify you by e-mail when a network event occurs" \ - "Do you want to activate this feature ?" - if $ANSWER ; then - ask_yesno "e-mail notification needs a SMTP server (i.e. smtp.gmail.com)" \ - "Do you want to continue activating this feature ?" - MAIL_REPORT=$ANSWER - fi - - if $MAIL_REPORT ; then - ask_input "" "Notify alert to this e-mail address:" "user@gmail.com" - REPORT_TO=$ANSWER - - ask_input "" "SMTP server:" "smtp.gmail.com" - SMTP_SERVER=$ANSWER - - ask_input "" "SMTP user:" "user@gmail.com" - SMTP_USER=$ANSWER - - ask_input "" "SMTP password:" "password" - SMTP_PASS=$ANSWER - fi - - # Ask Dynamic DNS config - DDNS_ACTIVE=false - ask_yesno "Pi.Alert can update your Dynamic DNS IP (i.e with www.dynu.net)" \ - "Do you want to activate this feature ?" - if $ANSWER ; then - ask_yesno "Dynamics DNS updater needs a DNS with IP Update Protocol" \ - "(i.e with www.dynu.net). Do you want to continue ?" - DDNS_ACTIVE=$ANSWER - fi - - if $DDNS_ACTIVE ; then - ask_input "" "Domain to update:" "your_domain.freeddns.org" - DDNS_DOMAIN=$ANSWER - - ask_input "" "DDNS user:" "dynu_user" - DDNS_USER=$ANSWER - - ask_input "" "DDNS password:" "A0000000B0000000C0000000D0000000" - DDNS_PASSWORD=$ANSWER - - ask_input "" "URL to update DDNS IP:" "https://api.dynu.com/nic/update?" - DDNS_UPDATE_URL=$ANSWER - fi - - # Final config message - msgbox "Configuration finished. To update the configuration, edit file:" \ - "$PIALERT_HOME/config/pialert.conf" - - msgbox "" "The installation will start now" -} - - -# ------------------------------------------------------------------------------ -# Install Pi-hole -# ------------------------------------------------------------------------------ -install_pihole() { - print_header "Pi-hole" - - if ! $PIHOLE_INSTALL ; then - return - fi - - print_msg "- Checking if Pi-hole is installed..." - if [ -e /usr/local/bin/pihole ] || [ -e /etc/pihole ]; then - print_msg " - Pi-hole already installed" - print_msg "`pihole -v 2>&1`" - print_msg "" - - PIHOLE_ACTIVE=true - return - fi - - print_msg "- Installing Pi-hole..." - print_msg " - Pi-hole has its own logfile" - curl -sSL https://install.pi-hole.net | bash - print_msg "" - PIHOLE_ACTIVE=true -} - - -# ------------------------------------------------------------------------------ -# Activate DHCP -# ------------------------------------------------------------------------------ -activate_DHCP() { - if ! $DHCP_ACTIVATE ; then - return - fi - - if ! $PIHOLE_ACTIVE ; then - return - fi - - print_msg "- Checking if DHCP is active..." - if [ -e /etc/pihole ]; then - DHCP_ACTIVE= `grep DHCP_ACTIVE /etc/pihole/setupVars.conf | awk -F= '/./{print $2}'` - fi - - if $DHCP_ACTIVE ; then - print_msg " - DHCP already active" - fi - - print_msg "- Activating DHCP..." - sudo pihole -a enabledhcp "$DHCP_RANGE_START" "$DHCP_RANGE_END" "$DHCP_ROUTER" "$DHCP_LEASE" "$DHCP_DOMAIN" 2>&1 >> "$LOG" - DHCP_ACTIVE=true -} - - -# ------------------------------------------------------------------------------ -# Add Pi.Alert DNS -# ------------------------------------------------------------------------------ -add_pialert_DNS() { - if ! $PIHOLE_ACTIVE ; then - return - fi - - print_msg "- Checking if 'pi.alert' is configured in Local DNS..." - if grep -Fq pi.alert /etc/pihole/custom.list; then - print_msg " - 'pi.alert' already in Local DNS..." - return - fi - - print_msg "- Adding 'pi.alert' to Local DNS..." - sudo sh -c "echo $MAIN_IP pi.alert >> /etc/pihole/custom.list" 2>&1 >> "$LOG" - sudo pihole restartdns 2>&1 >> "$LOG" -} - - -# ------------------------------------------------------------------------------ -# Install Lighttpd & PHP -# ------------------------------------------------------------------------------ -install_lighttpd() { - print_header "Lighttpd & PHP" - - print_msg "- Installing apt-utils..." - sudo apt-get install apt-utils -y 2>&1 >> "$LOG" - - # print_msg "- Installing lighttpd..." - # sudo apt-get install lighttpd -y 2>&1 >> "$LOG" - - print_msg "- Installing PHP..." - sudo apt-get install php php-cgi php-fpm php-sqlite3 -y 2>&1 >> "$LOG" - - # print_msg "- Activating PHP..." - # ERRNO=0 - # sudo lighttpd-enable-mod fastcgi-php 2>&1 >>"$LOG" || ERRNO=$? - # log_no_screen "-- Command error code: $ERRNO" - # if [ "$ERRNO" = "1" ] ; then - # process_error "Error activating PHP" - # fi - - # print_msg "- Restarting lighttpd..." - # sudo service lighttpd restart 2>&1 >> "$LOG" - # sudo /etc/init.d/lighttpd restart 2>&1 >> "$LOG" - - print_msg "- Installing sqlite3..." - sudo apt-get install sqlite3 -y 2>&1 >> "$LOG" -} - - -# ------------------------------------------------------------------------------ -# Install arp-scan & dnsutils -# ------------------------------------------------------------------------------ -install_arpscan() { - print_header "arp-scan & dnsutils" - - print_msg "- Installing arp-scan..." - sudo apt-get install arp-scan -y 2>&1 >> "$LOG" - - print_msg "- Testing arp-scan..." - sudo arp-scan -l | head -n -3 | tail +3 | tee -a "$LOG" - - print_msg "- Installing dnsutils & net-tools..." - sudo apt-get install dnsutils net-tools -y 2>&1 >> "$LOG" -} - - -# ------------------------------------------------------------------------------ -# Install Python -# ------------------------------------------------------------------------------ -install_python() { - print_header "Python" - - check_python_versions - - if [ $USE_PYTHON_VERSION -eq 0 ] ; then - print_msg "- Using the available Python version installed" - if $PYTHON3 ; then - print_msg " - Python 3 is available" - USE_PYTHON_VERSION=3 - elif $PYTHON2 ; then - print_msg " - Python 2 is available" - USE_PYTHON_VERSION=2 - else - print_msg " - Python is not available in this system" - print_msg " - Python 3 will be installed" - USE_PYTHON_VERSION=3 - fi - echo "" - fi - - if [ $USE_PYTHON_VERSION -eq 2 ] ; then - if $PYTHON2 ; then - print_msg "- Using Python 2" - else - print_msg "- Installing Python 2..." - sudo apt-get install python -y 2>&1 >> "$LOG" - fi - PYTHON_BIN="python" - elif [ $USE_PYTHON_VERSION -eq 3 ] ; then - if $PYTHON3 ; then - print_msg "- Using Python 3" - else - print_msg "- Installing Python 3..." - sudo apt-get install python3 -y 2>&1 >> "$LOG" - fi - PYTHON_BIN="python3" - else - process_error "Unknown Python version to use: $USE_PYTHON_VERSION" - fi -} - - -# ------------------------------------------------------------------------------ -# Check Python versions available -# ------------------------------------------------------------------------------ -check_python_versions() { - print_msg "- Checking Python 2..." - if [ -f /usr/bin/python ] ; then - print_msg " - Python 2 is installed" - print_msg " - `python -V 2>&1`" - PYTHON2=true - else - print_msg " - Python 2 is NOT installed" - PYTHON2=false - fi - echo "" - - print_msg "- Checking Python 3..." - if [ -f /usr/bin/python3 ] ; then - print_msg " - Python 3 is installed" - print_msg " - `python3 -V 2>&1`" - PYTHON3=true - else - print_msg " - Python 3 is NOT installed" - PYTHON3=false - fi - echo "" -} - - -# ------------------------------------------------------------------------------ -# Install Pi.Alert -# ------------------------------------------------------------------------------ -install_pialert() { - print_header "Pi.Alert" - - download_pialert - configure_pialert - test_pialert - add_jobs_to_crontab - publish_pialert - set_pialert_default_page -} - - -# ------------------------------------------------------------------------------ -# Download and uncompress Pi.Alert -# ------------------------------------------------------------------------------ -download_pialert() { - if [ -f "$INSTALL_DIR/pialert_latest.tar" ] ; then - print_msg "- Deleting previous downloaded tar file" - rm -r "$INSTALL_DIR/pialert_latest.tar" - fi - - print_msg "- Downloading installation tar file..." - curl -Lo "$INSTALL_DIR/pialert_latest.tar" https://github.com/leiweibau/Pi.Alert/raw/main/tar/pialert_latest.tar - echo "" - - print_msg "- Uncompressing tar file" - tar xf "$INSTALL_DIR/pialert_latest.tar" -C "$INSTALL_DIR" --checkpoint=100 --checkpoint-action="ttyout=." 2>&1 >> "$LOG" - echo "" - - print_msg "- Deleting downloaded tar file..." - rm -r "$INSTALL_DIR/pialert_latest.tar" -} - - -# ------------------------------------------------------------------------------ -# Configure Pi.Alert parameters -# ------------------------------------------------------------------------------ -configure_pialert() { - print_msg "- Settting Pi.Alert config file" - - set_pialert_parameter PIALERT_PATH "'$PIALERT_HOME'" - - set_pialert_parameter REPORT_MAIL "$REPORT_MAIL" - set_pialert_parameter REPORT_TO "'$REPORT_TO'" - set_pialert_parameter SMTP_SERVER "'$SMTP_SERVER'" - set_pialert_parameter SMTP_PORT "$SMTP_PORT" - set_pialert_parameter SMTP_USER "'$SMTP_USER'" - set_pialert_parameter SMTP_PASS "'$SMTP_PASS'" - - set_pialert_parameter DDNS_ACTIVE "$DDNS_ACTIVE" - set_pialert_parameter DDNS_DOMAIN "'$DDNS_DOMAIN'" - set_pialert_parameter DDNS_USER "'$DDNS_USER'" - set_pialert_parameter DDNS_PASSWORD "'$DDNS_PASSWORD'" - set_pialert_parameter DDNS_UPDATE_URL "'$DDNS_UPDATE_URL'" - - set_pialert_parameter PIHOLE_ACTIVE "$PIHOLE_ACTIVE" - set_pialert_parameter DHCP_ACTIVE "$DHCP_ACTIVE" -} - - -# ------------------------------------------------------------------------------ -# Set Pi.Alert parameter -# ------------------------------------------------------------------------------ -set_pialert_parameter() { - if [ "$2" = "false" ] ; then - VALUE="False" - elif [ "$2" = "true" ] ; then - VALUE="True" - else - VALUE="$2" - fi - - sed -i "/^$1.*=/s|=.*|= $VALUE|" $PIALERT_HOME/config/pialert.conf 2>&1 >> "$LOG" -} - - -# ------------------------------------------------------------------------------ -# Test Pi.Alert -# ------------------------------------------------------------------------------ -test_pialert() { - print_msg "- Testing Pi.Alert HW vendors database update process..." - print_msg "*** PLEASE WAIT A COUPLE OF MINUTES..." - stdbuf -i0 -o0 -e0 $PYTHON_BIN $PIALERT_HOME/back/pialert.py update_vendors_silent 2>&1 | tee -ai "$LOG" - - echo "" - print_msg "- Testing Pi.Alert Internet IP Lookup..." - stdbuf -i0 -o0 -e0 $PYTHON_BIN $PIALERT_HOME/back/pialert.py internet_IP 2>&1 | tee -ai "$LOG" - - echo "" - print_msg "- Testing Pi.Alert Network scan..." - print_msg "*** PLEASE WAIT A COUPLE OF MINUTES..." - stdbuf -i0 -o0 -e0 $PYTHON_BIN $PIALERT_HOME/back/pialert.py 1 2>&1 | tee -ai "$LOG" - - if $FIRST_SCAN_KNOWN ; then - echo "" - print_msg "- Set devices as Known devices..." - sqlite3 $PIALERT_HOME/db/pialert.db "UPDATE Devices SET dev_NewDevice=0, dev_AlertEvents=0 WHERE dev_NewDevice=1" 2>&1 >> "$LOG" - fi -} - -# ------------------------------------------------------------------------------ -# Add Pi.Alert jobs to crontab -# ------------------------------------------------------------------------------ -add_jobs_to_crontab() { - if crontab -l 2>/dev/null | grep -Fq pialert ; then - print_msg "- Pi.Alert crontab jobs already exists. This is your crontab:" - crontab -l | grep -F pialert 2>&1 | tee -ai "$LOG" - return - fi - - print_msg "- Adding jobs to the crontab..." - if [ $USE_PYTHON_VERSION -eq 3 ] ; then - sed -i "s/\/$PYTHON_BIN/g" $PIALERT_HOME/install/pialert.cron - fi - - (crontab -l 2>/dev/null || : ; cat $PIALERT_HOME/install/pialert.cron) | crontab - -} - -# ------------------------------------------------------------------------------ -# Publish Pi.Alert web -# ------------------------------------------------------------------------------ -publish_pialert() { - if [ -e "$WEBROOT/pialert" ] || [ -L "$WEBROOT/pialert" ] ; then - print_msg "- Deleting previous Pi.Alert site" - sudo rm -r "$WEBROOT/pialert" 2>&1 >> "$LOG" - fi - - print_msg "- Setting permissions..." - sudo chgrp -R www-data $PIALERT_HOME/db 2>&1 >> "$LOG" - chmod -R g+rwx $PIALERT_HOME/db 2>&1 >> "$LOG" - chmod go+x $INSTALL_DIR 2>&1 >> "$LOG" - - print_msg "- Publishing Pi.Alert web..." - sudo ln -s "$PIALERT_HOME/front" "$WEBROOT/pialert" 2>&1 >> "$LOG" - - # print_msg "- Configuring http://pi.alert/ redirection..." - # if [ -e "$LIGHTTPD_CONF_DIR/conf-available/pialert_front.conf" ] ; then - # sudo rm -r "$LIGHTTPD_CONF_DIR/conf-available/pialert_front.conf" 2>&1 >> "$LOG" - # fi - # sudo cp "$PIALERT_HOME/install/pialert_front.conf" "$LIGHTTPD_CONF_DIR/conf-available" 2>&1 >> "$LOG" - - # if [ -e "$LIGHTTPD_CONF_DIR/conf-enabled/pialert_front.conf" ] || \ - # [ -L "$LIGHTTPD_CONF_DIR/conf-enabled/pialert_front.conf" ] ; then - # sudo rm -r "$LIGHTTPD_CONF_DIR/conf-enabled/pialert_front.conf" 2>&1 >> "$LOG" - # fi - - # sudo ln -s ../conf-available/pialert_front.conf "$LIGHTTPD_CONF_DIR/conf-enabled/pialert_front.conf" 2>&1 >> "$LOG" - - # print_msg "- Restarting lighttpd..." - # sudo sudo service lighttpd restart 2>&1 >> "$LOG" - # sudo /etc/init.d/lighttpd restart 2>&1 >> "$LOG" -} - -# ------------------------------------------------------------------------------ -# Set Pi.Alert the default web server page -# ------------------------------------------------------------------------------ -set_pialert_default_page() { - if ! $PIALERT_DEFAULT_PAGE ; then - return - fi - - print_msg "- Setting Pi.Alert as default web server page..." - - # if [ -e "$WEBROOT/index.lighttpd.html" ] ; then - # if [ -e "$WEBROOT/index.lighttpd.html.orig" ] ; then - # sudo rm "$WEBROOT/index.lighttpd.html" 2>&1 >> "$LOG" - # else - # sudo mv "$WEBROOT/index.lighttpd.html" "$WEBROOT/index.lighttpd.html.orig" 2>&1 >> "$LOG" - # fi - # fi - - # if [ -e "$WEBROOT/index.html" ] || [ -L "$WEBROOT/index.html" ] ; then - # if [ -e "$WEBROOT/index.html.orig" ] ; then - # sudo rm "$WEBROOT/index.html" 2>&1 >> "$LOG" - # else - # sudo mv "$WEBROOT/index.html" "$WEBROOT/index.html.orig" 2>&1 >> "$LOG" - # fi - # fi - - # sudo cp "$PIALERT_HOME/install/index.html" "$WEBROOT/index.html" 2>&1 >>"$LOG" -} - -# ------------------------------------------------------------------------------ -# Check Pi.Alert Installation Path -# ------------------------------------------------------------------------------ -check_pialert_home() { - mkdir -p "$INSTALL_DIR" - if [ ! -d "$INSTALL_DIR" ] ; then - process_error "Installation path does not exists: $INSTALL_DIR" - fi - - if [ -e "$PIALERT_HOME" ] || [ -L "$PIALERT_HOME" ] ; then - process_error "Pi.Alert path already exists: $PIALERT_HOME" - fi -} - - -# ------------------------------------------------------------------------------ -# Move Logfile -# ------------------------------------------------------------------------------ -move_logfile() { - NEWLOG="$PIALERT_HOME/log/$LOG" - - mkdir -p "$PIALERT_HOME/log" - mv $LOG $NEWLOG - - LOG="$NEWLOG" - NEWLOG="" -} - - -# ------------------------------------------------------------------------------ -# ASK -# ------------------------------------------------------------------------------ -msgbox() { - LINE1=$(printf "%*s" $(((${#1}+$COLS-5)/2)) "$1") - LINE2=$(printf "%*s" $(((${#2}+$COLS-5)/2)) "$2") - - END_DIALOG=false - while ! $END_DIALOG ; do - whiptail --title "Pi.Alert Installation" --msgbox "$LINE1\\n\\n$LINE2" $ROWS $COLS - BUTTON=$? - ask_cancel - ANSWER=true - done -} - -ask_yesno() { - LINE1=$(printf "%*s" $(((${#1}+$COLS-5)/2)) "$1") - LINE2=$(printf "%*s" $(((${#2}+$COLS-5)/2)) "$2") - - if [ "$3" = "YES" ]; then - DEF_BUTTON="" - else - DEF_BUTTON="--defaultno" - fi - - END_DIALOG=false - while ! $END_DIALOG ; do - whiptail --title "Pi.Alert Installation" --yesno $DEF_BUTTON "$LINE1\\n\\n$LINE2" $ROWS $COLS - BUTTON=$? - ask_cancel - done - - if [ "$BUTTON" = "0" ] ; then - ANSWER=true - else - ANSWER=false - fi -} - -ask_option() { - MENU_ARGS=("$@") - MENU_ARGS=("${MENU_ARGS[@]:1}") - - END_DIALOG=false - while ! $END_DIALOG ; do - ANSWER=$(whiptail --title "Pi.Alert Installation" --menu "$1" $ROWS $COLS "${MENU_ARGS[@]}" 3>&2 2>&1 1>&3 ) - BUTTON=$? - ask_cancel CANCEL - done -} - -ask_input() { - LINE1=$(printf "%*s" $(((${#1}+$COLS-5)/2)) "$1") - LINE2=$(printf "%*s" $(((${#2}+$COLS-5)/2)) "$2") - - END_DIALOG=false - while ! $END_DIALOG ; do - ANSWER=$(whiptail --title "Pi.Alert Installation" --inputbox "$LINE1\\n\\n$LINE2" $ROWS $COLS "$3" 3>&2 2>&1 1>&3 ) - BUTTON=$? - ask_cancel CANCEL - - if $END_DIALOG && [ "$ANSWER" = "" ] ; then - msgbox "" "You must enter a value" - END_DIALOG=false - fi - done -} - -ask_cancel() { - LINE0="Do you want to cancel the installation process" - LINE0=$(printf "\n\n%*s" $(((${#LINE0}+$COLS-5)/2)) "$LINE0") - - if [ "$BUTTON" = "1" ] && [ "$1" = "CANCEL" ] ; then BUTTON="255"; fi - - if [ "$BUTTON" = "255" ] ; then - whiptail --title "Pi.Alert Installation" --yesno --defaultno "$LINE0" $ROWS $COLS - - if [ "$?" = "0" ] ; then - process_error "Installation Aborted by User" - fi - else - END_DIALOG=true - fi -} - -# ------------------------------------------------------------------------------ -# Log -# ------------------------------------------------------------------------------ -log() { - echo "$1" | tee -a "$LOG" -} - -log_no_screen () { - echo "$1" >> "$LOG" -} - -log_only_screen () { - echo "$1" -} - -print_msg() { - log_no_screen "" - log "$1" -} - -print_superheader() { - log "" - log "############################################################" - log " $1" - log "############################################################" -} - -print_header() { - log "" - log "------------------------------------------------------------" - log " $1" - log "------------------------------------------------------------" -} - -process_error() { - log "" - log "************************************************************" - log "************************************************************" - log "** ERROR INSTALLING PI.ALERT **" - log "************************************************************" - log "************************************************************" - log "" - log "$1" - log "" - log "Use 'cat $LOG' to view installation log" - log "" - - # msgbox "****** ERROR INSTALLING Pi.ALERT ******" "$1" - exit 1 -} - -# ------------------------------------------------------------------------------ - main - exit 0