#!MARKER_SHELL_CMD ############################################################################### # # # PPP LINK CONTROL CLIENT # # # ############################################################################### ############################################################################### # # Things you should know about this script: # # It is stored under RCS! Keep it that way! If you want a history of # changes made to this script then refer to rlog(1) - don't look here! # ############################################################################### ############################################################################### # # USER CONFIGURABLE STUFF STARTS HERE # ############################################################################### ############################################################################### # # USER CONFIGURABLE STUFF ENDS HERE # ############################################################################### ############################################################################### # # PACKAGE INDEPENDENT VARIABLE SETTINGS # ############################################################################### PATH=/bin:/usr/bin PROGNAME=`basename $0` VERSION="MARKER_PATCHLEVEL" #UMASK=022 #LOCK_DIR=MARKER_LOCK_DIR #ERRORS_CAUSE_EXITS=true # $Header: /home/ahuxley/dev/arc/ppplc/bin/RCS/ppplcc.shpp,v 1.46 1999/05/07 14:28:17 alexis Exp $ #shpp include sm_msgids.shpp #shpp include ppplc_msgids.shpp ############################################################################### # # PACKAGE SPECIFIC VARIABLE SETTINGS # ############################################################################### PPPLCD=MARKER_LCLSBINDIR/ppplcd SNDMSG=MARKER_LCLBINDIR/sndmsg GETMSG=MARKER_LCLBINDIR/getmsg DHUY=MARKER_LCLBINDIR/dhuy XPPPLCC=MARKER_LCLXBINDIR/xppplcc PPPLCC=MARKER_LCLBINDIR/ppplcc CONF_FILE=MARKER_PRGCFGDIR/ppplcd.conf BROWN="" WHITE="" INVBROWN="" ############################################################################### # # MAIN FUNCTION (called from very bottom of script) # ############################################################################### main() { ########################################################################### # # PROCESS OPTIONS # ########################################################################### # default values for things changable by command line options PAUSE=0 DOIT=true while [ "X$1" != X ]; do case "$1" in -V) echo "$PROGNAME version $VERSION" exit 0 ;; -d) [ "X$2" = X ] && usage VERBOSE_LEVEL=$2 shift ;; -v) VERBOSE_LEVEL=3 ;; -q) [ "X$2" = X ] && usage SNDMSG="$SNDMSG -q $2" shift ;; -n) DOIT=false ;; -c) [ "X$2" = X ] && usage CONF_FILE=$2 shift ;; -p) [ "X$2" = X ] && usage PAUSE=$2 shift ;; -*) usage ;; *) break ;; esac shift done [ $DOIT = false ] && SNDMSG="echo $SNDMSG" # Are locks required? Nah. # Are you going to register temporary files? No. #trap sighandler 1 2 15 ########################################################################## # # SCRIPT GUTS STARTS HERE # ########################################################################## if [ "X$1" = X ]; then ppplcc_interactive else ppplcc_commandline "$@" fi #exitdel } usage() { { echo "Usage: $PROGNAME [ -d | -v ] [ -p ] [ -q ] [ -n ] [ ... ]" echo " $PROGNAME -V" } >&2 exit 2 } ppplcc_commandline() { debug 5 "ppplcc_commandline: SOF" while [ "X$1" != X ]; do debug 5 "args is $1" case "$1" in c) $SNDMSG MARKER_MSGID_EXEC_PPPD ;; d) $SNDMSG MARKER_MSGID_HANGUP ;; m) $SNDMSG MARKER_MSGID_EXEC_MAIL ;; n) $SNDMSG MARKER_MSGID_EXEC_NEWS ;; dn) $SNDMSG MARKER_MSGID_UNSET_DONEWS ;; en) $SNDMSG MARKER_MSGID_SET_DONEWS ;; da) $SNDMSG MARKER_MSGID_UNSET_AUTORECONNECT ;; ea) $SNDMSG MARKER_MSGID_SET_AUTORECONNECT ;; q) clear exit ;; es) $DHUY ;; ds) $DHUY -c ;; S) [ ! -f $CONF_FILE ] && error "can't read $CONF_FILE" $PPPLCD $CONF_FILE ;; K) $SNDMSG MARKER_MSGID_SET_QUIT ;; ii) ipcs -qc pause ;; id) $SNDMSG MARKER_MSGID_INFO_REQ 2 $GETMSG | while read X00 X01 X02 X03 X04 X05 X06 X07 X08 X09 \ X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 \ X20 X21 X22 X23 X24 X25 X26 X27 X28 X29 \ X30 X31 X32 X33 X34 X35 X36 X37 X38 X39; do X25=`printf "%o" $X25` cat <<- EOF Read/Write 1 flag_wannabe_up: $X00 2 smf_setquit: $X01 3 do_xfer_news_flag: $X02 4 flag_autoreconnect: $X03 5 debug_level: $X04 6 idle_timeout: $X05 7 quality_minlevel: $X06 8 quality_interval: $X07 Readonly 21 flag_officially_up: $X20 22 state_cfgok: $X21 23 state_donemx: $X22 24 state_donenx: $X23 25 state_inipup: $X24 26 ipc_mode: $X25 27 ipc_owner: $X26 28 ipc_group: $X27 EOF done ;; id*) $SNDMSG MARKER_MSGID_INFO_REQ 2 $GETMSG | cut -d' ' -f`expr "$1" : 'id\(.*\)'` ;; ir) report_versions -r ;; iv) report_versions ;; sq) [ "X$3" = X ] && usage $SNDMSG MARKER_MSGID_SET_QUALITY $2 $3 shift; shift ;; si) [ "X$2" = X ] && usage $SNDMSG MARKER_MSGID_SET_IDLEPARS $2 shift ;; sd) [ "X$2" = X ] && usage $SNDMSG MARKER_MSGID_SET_DEBUG $2 shift ;; ct) [ "X$2" = X ] && usage echo $SNDMSG MARKER_MSGID_EXEC_PPPD | at $2 shift ;; dt) [ "X$2" = X ] && usage echo $SNDMSG MARKER_MSGID_HANGUP | at $2 shift ;; e) $SNDMSG MARKER_MSGID_NOACTION ;; *) debug 5 "error on $1" usage ;; esac shift done } ppplcc_interactive() { if [ "X$TERM" = Xxterm ]; then echo -n "]0;$PROGNAME" fi while :; do menu echo question "select, or press ENTER to redraw the screen" read RESPONSE case "$RESPONSE" in c) $SNDMSG MARKER_MSGID_EXEC_PPPD ;; d) $SNDMSG MARKER_MSGID_HANGUP ;; m) $SNDMSG MARKER_MSGID_EXEC_MAIL ;; n) $SNDMSG MARKER_MSGID_EXEC_NEWS ;; dn) $SNDMSG MARKER_MSGID_UNSET_DONEWS ;; en) $SNDMSG MARKER_MSGID_SET_DONEWS ;; da) $SNDMSG MARKER_MSGID_UNSET_AUTORECONNECT ;; ea) $SNDMSG MARKER_MSGID_SET_AUTORECONNECT ;; q) clear exit ;; es) $DHUY ;; ds) $DHUY -c ;; S) [ ! -f $CONF_FILE ] && error -ne "can't read $CONF_FILE" $PPPLCD $CONF_FILE ;; K) $SNDMSG MARKER_MSGID_SET_QUIT ;; ii) ipcs -qc pause ;; id) $SNDMSG MARKER_MSGID_INFO_REQ 2 $GETMSG ;; id*) $SNDMSG MARKER_MSGID_INFO_REQ 2 $GETMSG | cut -d' ' -f`expr "$1" : 'id\(.*\)'` ;; ir) report_versions -r 2>&1 | ${PAGER:-more} pause ;; iv) report_versions 2>&1 | ${PAGER:-more} pause ;; sq) question "minimum quality" read QC_MINLEVEL question "quality check interval (secs)" read QC_INTERVAL $SNDMSG MARKER_MSGID_SET_QUALITY $QC_MINLEVEL $QC_INTERVAL ;; si) question "idle timeout" read IDLE_TIMEOUT $SNDMSG MARKER_MSGID_SET_IDLEPARS $IDLE_TIMEOUT ;; sd) question "debug level" read DEBUG_LEVEL $SNDMSG MARKER_MSGID_SET_DEBUG $DEBUG_LEVEL ;; ct) info time now: `date '+%H%M'` question "connect time" read CONNECT_TIME echo $SNDMSG MARKER_MSGID_EXEC_PPPD | at $CONNECT_TIME ;; dt) info time now: `date '+%H%M'` question "disconnect time" read DISCONNECT_TIME echo $SNDMSG MARKER_MSGID_HANGUP | at $DISCONNECT_TIME ;; e) $SNDMSG MARKER_MSGID_NOACTION ;; h) ppplcchelp | ${PAGER:-more } ;; !*) CMD=`echo "$RESPONSE" | sed 's/!//'` do_a_shell -p "$PROGNAME> " $CMD pause ;; "") ;; *) warning "unrecognised, choose again ... " ;; esac [ $PAUSE != 0 ] && sleep $PAUSE done } menu() { clear printf "$INVBROWN PPP LINK CONTROL CLIENT %28s $WHITE\\n" "Ver. $VERSION" cat <