Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- # The ramdisk /bin/sh uses "\c" at end of line to suppress newlines.
- #
- # ANSI colors (darK,Red,Green,Yellow,Blue,Magenta,Cyan,White,Normal)
- K="\033[1;30m"
- R="\033[1;31m"
- G="\033[1;32m"
- Y="\033[1;33m"
- B="\033[1;34m"
- M="\033[1;35m"
- C="\033[1;36m"
- W="\033[1;37m"
- N="\033[0m"
- WB="\033[44;37m"
- BW="\033[47;34m"
- DRAW="\033(0"
- TEXT="\033(B"
- #NICK="zippy"
- SERV="irc.freenode.net"
- PORT=6667
- #ESC=$(printf "\033")
- ESC=`echo "\033"`
- NL='
- '
- get() ## get a single keystroke from stdin without waiting
- {
- if [ -t 0 ]
- then
- if [ -z "$_STTY" ]
- then
- _STTY=$(stty -g)
- stty -echo -icanon time ${GET_TMOUT:-0} min ${GET_MIN:-0}
- elif [ -n "$GET_TMOUT$GET_MIN" ]
- then
- stty -echo -icanon time ${GET_TMOUT:-0} min ${GET_MIN:-0}
- fi
- fi
- # _KEY=$(dd bs=1 count=1 2>/dev/null; printf '.')
- _KEY=$(dd bs=1 count=1 2>/dev/null; echo '.')
- _KEY=${_KEY%.}
- [ -n "$_KEY" ]
- }
- get_key()
- {
- while :
- do
- GET_TMOUT=5 get && break ## Half second timeout on each loop
- done
- case $_KEY in
- "${ESC}")
- stty -echo -icanon time 0 min 0
- read _KEY
- if [ -z "$_KEY" ]
- then
- # _KEY='?'
- _KEY="${ESC}"
- fi
- ;;
- esac
- }
- ShowGUI()
- {
- # Now draw the GUI
- echo "\033[2J\033[1;1H"
- # Must use UPPERCASE for words in DRAW mode. Or add labels later.
- # NOTE: see how the cfaj code makes variable sized boxes.
- echo $WB$DRAW"\c"
- echo "\033[1;1Hlqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk"
- echo "x NICK x"
- echo "x IDENTIFY x"
- echo "x PASSWORD x"
- echo "tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu"
- echo "x SERVER x"
- echo "x PORT x"
- echo "x NEEDPASS x"
- echo "x PASSWORD x"
- echo "t CHANNELS qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu"
- echo "x KEY x"
- echo "x KEY x"
- echo "x KEY x"
- echo "x KEY x"
- echo "mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj"
- echo $TEXT$BW"\c"
- echo "\033[14A\033[13G "
- echo "\033[13G "
- echo "\033[13G "
- echo "\033[1B\033[13G "
- echo "\033[13G "
- echo "\033[13G "
- echo "\033[13G "
- echo "\033[1B\033[3G \033[32G \033[37G "
- echo "\033[3G \033[32G \033[37G "
- echo "\033[3G \033[32G \033[37G "
- echo "\033[3G \033[32G \033[37G "
- echo "\033[13A\033[13G${NICK}"
- echo "\033[13G${ID}"
- echo "\033[13G${IPAS}"
- echo "\033[1B\033[13G${SERV}"
- echo "\033[13G${PORT}"
- echo "\033[13G${NPAS}"
- echo "\033[13G${PASS}"
- echo "\033[1B\033[3G${CH1}\033[32G${NK1}\033[37G$KEY1"
- echo "\033[3G${CH2}\033[32G${NK2}\033[37G$KEY2"
- echo "\033[3G${CH3}\033[32G${NK3}\033[37G$KEY3"
- echo "\033[3G${CH4}\033[32G${NK4}\033[37G$KEY4"
- echo $N
- }
- # Open the tinyirc wrapper script and read lines until one starts with tinyirc.
- IRC=/usr/local/bin/irc
- if [ -r $IRC ] ; then
- exec 3<$IRC
- # Find SERV NICK PORT
- while read line <&3
- do
- if [ "${line%% *}" = "tinyirc" ] ; then
- # Tries to remove the first word
- CFG="${line#tinyirc }"
- # Check if we removed anything
- if [ "$CFG" != "$line" ] ; then
- for ARG in $CFG
- do
- case $ARG in
- */*|*:*|*.*) SERV="$ARG" ;;
- -i) ID="yes" ;;
- -*) ARGS="$ARGS $ARG" ;;
- ''|*[!0-9]*) NICK="$ARG" ;;
- *) PORT="$ARG" ;;
- esac
- done
- fi
- fi
- done
- exec 3</dev/null
- fi
- # Remove irc:// from SERV
- case $SERV in
- *://*) SERV=${SERV#*://} ;;
- esac
- # Split SERV at first /
- CHAN=${SERV#*/}
- SERV=${SERV%%/*}
- # Split SERV at first :
- case $SERV in
- *:*) PORT=${SERV#*:} ; SERV=${SERV%%:*} ;;
- esac
- # Get the channels
- #for J in 1 2 3 4
- J=1
- while [ $J -lt 5 ]
- do
- CH=${CHAN%%/*}
- case $CHAN in
- */*) CHAN=${CHAN#*/} ;;
- *) CHAN="" ;;
- esac
- case $CH in
- *[\?\&,]*) OPTS=${CH#*[[\?\&,]} ; CH=${CH%%[\?\&,]*} ;;
- *) OPTS="" ;;
- esac
- echo "$J CH=<$CH> OPTS=<$OPTS>"
- if [ -n "$CH" ] ; then
- eval CH$J=$CH ; eval OPTS$J=$OPTS ;
- case $OPTS in
- *key=*) CK=${OPTS#key=} ; CK=${CK#*[[\?\&,]} ; eval KEY$J=$CK ;;
- *needkey*) eval NK$J="yes" ;;
- esac
- J=`expr $J + 1` ;
- elif [ -z "$OPTS" ] ; then
- J=`expr $J + 1` ;
- else
- # We got some server opts (no channel)
- SOPT="$SOPT,$OPTS"
- fi
- case $OPTS in
- *identify=*) IPAS=${OPTS#identify=} ; IPAS=${IPAS#*[[\?\&,]} ;;
- esac
- case $OPTS in
- *pass=*) PASS=${OPTS#pass=} ; PASS=${PASS#*[[\?\&,]} ;;
- *needpass*) NPAS="yes" ;;
- esac
- done
- # Check if various passwords are needed
- if [ -n "$ID" ] ; then ID="yes" ;
- elif [ -n "$IPAS" ] ; then ID="yes" ;
- else ID="no" ;
- fi
- if [ -n "$NPAS" ] ; then NPAS="yes" ;
- elif [ -n "$PASS" ] ; then NPAS="yes" ;
- else NPAS="no" ;
- fi
- if [ -n "$NK1" ] ; then NK1="yes" ;
- elif [ -n "$KEY1" ] ; then NK1="yes" ;
- else NK1="no" ;
- fi
- if [ -n "$NK2" ] ; then NK2="yes" ;
- elif [ -n "$KEY2" ] ; then NK2="yes" ;
- else NK2="no" ;
- fi
- if [ -n "$NK3" ] ; then NK3="yes" ;
- elif [ -n "$KEY4" ] ; then NK3="yes" ;
- else NK3="no" ;
- fi
- if [ -n "$NK4" ] ; then NK4="yes" ;
- elif [ -n "$KEY4" ] ; then NK4="yes" ;
- else NK4="no" ;
- fi
- #echo "IDENT=<$IPAS>"
- #echo "PASS=<$PASS>"
- #echo "NPAS=<$NPAS>"
- #
- #echo "CH1=<$CH1> <$OPTS1>"
- #echo "CH2=<$CH2> <$OPTS2>"
- #echo "CH3=<$CH3> <$OPTS3>"
- #echo "CH4=<$CH4> <$OPTS4>"
- #echo "CHAN=<$CHAN> <$SOPT>"
- #
- #case "" in
- #X)
- ShowGUI
- #;;
- #esac
- echo "Edit TinyIRC Configuration? [y/"$B"n"$N"] \c"
- read -s -n1 EDIT
- echo "$EDIT"
Advertisement
Add Comment
Please, Sign In to add comment