#!/bin/sh #---------------------------------------------------------------------------------------- # /var/install/bin/owswitch-letterbox-alert - owSwitch letterbox alert # # Copyright (c) 2016-2019 The Eisfair Team, team(at)eisfair(dot)org # # Creation: 2016-06-19 jed # Last Update: $Id$ # # Usage: owswitch-letterbox-alert [options] # # Options: --newletter [letterbox-index] [-resettime time-in-min] # - you got new mail, exit code: 1 # --reset [letterbox-index] - letterbox emptied. # --status [letterbox-index] - show letterbox status. # # --debug - activate debug trace. # --help - show this help. # --quiet - don't show any screen output. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. #---------------------------------------------------------------------------------------- # read eislib . /var/install/include/eislib . /var/install/include/jedlib #exec 2>/tmp/owswitch-letterbox-alert-trace-$$.log #set -x #---------------------------------------------------------------------------------------- # my echo #---------------------------------------------------------------------------------------- myecho () { case $1 in *-std ) _me_switch=$1 shift _me_outstr="`echo "$*" | sed -r 's/^(-)?-std //g'`" ;; *-info ) _me_switch=$1 shift _me_outstr="`echo "$*" | sed -r 's/^(-)?-info //g'`" ;; *-warn ) _me_switch=$1 shift _me_outstr="`echo "$*" | sed -r 's/^(-)?-warn //g'`" ;; *-error ) _me_switch=$1 shift _me_outstr="`echo "$*" | sed -r 's/^(-)?-error //g'`" ;; * ) _me_switch='' _me_outstr="$*" ;; esac if [ "${verbose}" = 'true' ] then # be verbose mecho ${_me_switch} "${_me_outstr}" fi } #---------------------------------------------------------------------------------------- # show help #---------------------------------------------------------------------------------------- show_help () { # show help echo echo "Usage:" echo " ${pgmname} [options]" echo ' --newletter [letterbox-index] [-resettime time-in-min] - you got new mail, exit code: 1' echo ' --reset [letterbox-index] - letterbox emptied.' echo ' --status [letterbox-index] - show letterbox status.' echo echo ' --debug - activate debug trace.' echo ' --help - show this help.' echo " --quiet - don't show any screen output." echo } #======================================================================================== # main #======================================================================================== module_name='owswitch' pgmname=`basename $0` owswitchrunpath=/var/lib/${module_name} cmd='' letterbox_nbr=1 letterbox_str='' letterbox_resettime=0 debug_trace=false verbose=true while [ $# -ge 1 ] do case $1 in --debug ) debug_trace=true shift ;; --help|-h|--? ) cmd=help shift ;; --newletter ) cmd=newletter if `is_numeric "$2"` then letterbox_nbr=$2 letterbox_str="$2 " shift fi shift ;; *-resettime ) if `is_numeric "$2"` then letterbox_resettime=$2 shift fi shift ;; --reset ) cmd=reset if `is_numeric "$2"` then letterbox_nbr=$2 letterbox_str="$2 " shift fi shift ;; --status ) cmd=status if `is_numeric "$2"` then letterbox_nbr=$2 letterbox_str="$2 " shift fi shift ;; --quiet ) verbose=false shift ;; * ) shift ;; esac done # activate debug output if ${debug_trace:-false} then exec 2> /tmp/$(basename ${0})-trace-$$.log set -x ask_debug=true export ask_debug fi cmdfile=${owswitchrunpath}/${module_name}-cmd-letterbox-${letterbox_nbr}.alert exit_code=0 case ${cmd} in help ) show_help ;; newletter ) if [ -f ${cmdfile} ] then # show status myecho "letterbox ${letterbox_str}contains new mail (`date +'%Y-%m-%d %H:%Mh' -r ${cmdfile}`)" else # letterbox flap opened -> new letters arrived touch ${cmdfile} myecho "letterbox ${letterbox_str}contains new mail (`date +'%Y-%m-%d %H:%Mh' -r ${cmdfile}`)" /usr/bin/logger -p "local0.info" -t "owswitch" "letterbox ${letterbox_str}contains new mail!" if [ ${letterbox_resettime} -gt 0 ] then # set auto-reset of letterbox status atjob_tmp_file=`/bin/mktemp -t owswitch-letterbox-alert-job-XXXXXXXXXX` echo "`realpath $0` --quiet --reset" | at now + ${letterbox_resettime}min >> ${atjob_tmp_file} 2>> ${atjob_tmp_file} atjob_nbr=`sed -e '/^job .* at/!d' -e 's/^job //' -e 's/ at.*$//' ${atjob_tmp_file}` rm -f ${atjob_tmp_file} /usr/bin/logger -p "local0.info" -t "owswitch" "letterbox reset time: ${letterbox_resettime}min (job ${atjob_nbr})." fi fi exit_code=1 ;; reset ) if [ -f ${cmdfile} ] then # letterbox door opened -> letters removed rm -f ${cmdfile} myecho "letterbox emptied" /usr/bin/logger -p "local0.info" -t "owswitch" "letterbox ${letterbox_str}emptied." else # show status myecho "the letterbox ${letterbox_str}is currently empty." fi ;; status ) if [ -f ${cmdfile} ] then myecho "the letterbox ${letterbox_str}contains new letter(s) (`date +'%Y-%m-%d %H:%Mh' -r ${cmdfile}`)" else myecho "the letterbox ${letterbox_str}is currently empty." fi ;; esac #======================================================================================== # end #======================================================================================== exit ${exit_code}