#!/bin/bash /usr/lib/turtle/turtle_module
VERSION="1.0"
DESCRIPTION="Email script output via SMTP"
CONF=/tmp/smtpemail.form

: ${DIALOG_OK=0}
: ${DIALOG_CANCEL=1}
: ${DIALOG_HELP=2}
: ${DIALOG_EXTRA=3}
: ${DIALOG_ITEM_HELP=4}
: ${DIALOG_ESC=255}

function start {
  if [ -s /etc/config/smtpemail ]
  then
    smtpemail_to=$(uci get smtpemail.to)
    /bin/bash /etc/turtle/smtpemail/script.sh > /tmp/smtpemail_output
    ssmtp $smtpemail_to < /tmp/smtpemail_output
    echo "Email sent to $smtpemail_to"
  else
    touch /etc/config/smtpemail
    echo "smtpemail not configured"
  fi
}

function stop {
  echo stop>>/dev/null
}

function status {
  echo 0
}

function configure {
  mkdir -p /etc/turtle/smtpemail/
  if [ -s /etc/config/smtpemail ]
  then
    smtpemail_from=$(uci get smtpemail.from)
    smtpemail_to=$(uci get smtpemail.to)
    smtpemail_mailhub=$(uci get smtpemail.mailhub)
    smtpemail_rewriteDomain=$(uci get smtpemail.rewriteDomain)
    smtpemail_hostname=$(uci get smtpemail.hostname)
    smtpemail_AuthUser=$(uci get smtpemail.AuthUser)
    smtpemail_AuthPass=$(uci get smtpemail.AuthPass)
  else
    touch /etc/config/smtpemail
  fi

  dialog --ok-label "Submit" \
    --extra-button \
    --extra-label "Edit Script" \
    --help-button \
    --title "Script to Email Configuration" \
    --form "\n\
Email the script output using the following SMTP settings:.\n \n\n" 17 60 7\
    "From:"		1 1	"$smtpemail_from"		1 12 200 0 \
    "To:"		2 1	"$smtpemail_to"			2 12 200 0 \
    "SMTP:"		3 1	"$smtpemail_mailhub"		3 12 200 0 \
    "Domain:"		4 1	"$smtpemail_rewriteDomain"	4 12 200 0 \
    "Hostname:"		5 1	"$smtpemail_hostname"		5 12 200 0 \
    "Username:"		6 1	"$smtpemail_AuthUser"		6 12 200 0 \
    "Password:"		7 1	"$smtpemail_AuthPass"		7 12 200 0 \
  2>$CONF

  return=$?

  case $return in
    $DIALOG_OK)
      cat $CONF | { 
        read -r smtpemail_from
        read -r smtpemail_to
        read -r smtpemail_mailhub
        read -r smtpemail_rewriteDomain
        read -r smtpemail_hostname
        read -r smtpemail_AuthUser
        read -r smtpemail_AuthPass
        touch /etc/config/smtpemail
        uci set smtpemail.from="$smtpemail_from"
        uci set smtpemail.to="$smtpemail_to"
        uci set smtpemail.mailhub="$smtpemail_mailhub"
        uci set smtpemail.rewriteDomain="$smtpemail_rewriteDomain"
        uci set smtpemail.hostname="$smtpemail_hostname"
        uci set smtpemail.AuthUser="$smtpemail_AuthUser"
        uci set smtpemail.AuthPass="$smtpemail_AuthPass"
        uci commit smtpemail
        echo -e "root=$smtpemail_from
mailhub=$smtpemail_mailhub
rewriteDomain=$smtpemail_rewriteDomain
hostname=$smtpemail_hostname
FromLineOverride=YES
UseTLS=YES
USESTARTTLS=YES
AuthUser=$smtpemail_AuthUser
AuthPass=$smtpemail_AuthPass" > /etc/ssmtp/ssmtp.conf
        rm $CONF
        clear
      };;
    $DIALOG_CANCEL)
      rm $CONF
      clear
      exit;;
    $DIALOG_HELP)
      dialog --title "Help" \
        --msgbox "\
This module sends the output of the script as an email to the specified address.\n \n\
Example configuration using Gmail*\n \n\
From: ACCOUNT@gmail.com\n\
To: Recipient@Example.com\n\
SMTP: smtp.gmail.com:587\n\
Domain: gmail.com\n\
Hostname: ACCOUNT@gmail.com:587\n\
Username: ACCOUNT@gmail.com\n\
Password: GMAIL_PASSWORD\n \n\
*Google restricts Gmail accounts to 500 messages sent by their SMTP servers per day.\
" 20 60
      configure
      ;;
    $DIALOG_EXTRA)
      if [ ! -e /etc/turtle/smtpemail/script.sh ]; then
        touch /etc/turtle/smtpemail/script.sh
        echo -e "\
# The output of this script will be sent by email by script2email \n\
# Example: ifconfig | grep inet\n\
" > /etc/turtle/smtpemail/script.sh
      fi
      dialog \
        --title "SMTP Email Script: /etc/turtle/smtpemail/script.sh" \
        --editbox /etc/turtle/smtpemail/script.sh 18 72\
      2>$CONF
      return=$?
      case $return in
        $DIALOG_OK)
          cat $CONF | {
            cat $CONF > /etc/turtle/smtpemail/script.sh
            rm $CONF
            clear
            configure
          };;
        $DIALOG_CANCEL)
          rm $CONF
          clear
          configure;;
        $DIALOG_ESC)
          clear
          configure;;
      esac
    ;;
    $DIALOG_ESC)
      clear;;
  esac
}
