Guest User

tinyirc_config.sh

a guest
May 26th, 2014
274
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/sh
  2.  
  3. # The ramdisk /bin/sh uses "\c" at end of line to suppress newlines.
  4. #
  5. # ANSI colors (darK,Red,Green,Yellow,Blue,Magenta,Cyan,White,Normal)
  6. K="\033[1;30m"
  7. R="\033[1;31m"
  8. G="\033[1;32m"
  9. Y="\033[1;33m"
  10. B="\033[1;34m"
  11. M="\033[1;35m"
  12. C="\033[1;36m"
  13. W="\033[1;37m"
  14. N="\033[0m"
  15. BOLD="\033[1m"
  16. REV="\033[7m"
  17. ITAL="\033[3m"
  18. UNDR="\033[4m"
  19. BLNK="\033[5m"
  20.  
  21. WB="\033[44;37m"
  22. BW="\033[47;34m"
  23.  
  24. DRAW="\033(0"
  25. TEXT="\033(B"
  26.  
  27. #ESC=$(printf "\033")
  28. ESC=`echo "\033"`
  29. TAB=`echo "\011"`
  30. NL='
  31. '
  32. EMPTY="                    "
  33. EMPTYLINE="${EMPTY}${EMPTY}${EMPTY}${EMPTY}${EMPTY}${EMPTY}${EMPTY}${EMPTY}"
  34.  
  35. #NICK="zippy"
  36. SERV="irc.freenode.net"
  37. PORT=6667
  38.  
  39. printat()
  40. {
  41.     printf "${ESC}[%d;%dH" ${1:-1} ${2:-1}
  42.     [ $# -gt 2 ] && {
  43.         shift 2
  44.         printf "%s" "$*"
  45.     }
  46. }
  47.  
  48. spaceat()
  49. {
  50.     blanks=`echo $EMPTYLINE | head -c $3`
  51.     printf "${ESC}[%d;%dH${blanks}" ${1:-1} ${2:-1}
  52. }
  53.  
  54. cursor()
  55. {
  56.     case $1 in
  57.         0) printf "${ESC}[?25l" ;;
  58.         *) printf "${ESC}[?12l${ESC}[?25h" ;;
  59.     esac
  60. }
  61.  
  62. bold()
  63. {
  64.     case $1 in
  65.         0) printf "${ESC}[22m" ;;
  66.         *) printf "${ESC}[1m" ;;
  67.     esac
  68. }
  69.  
  70. get() ## get a single keystroke from stdin without waiting
  71. {
  72.     if [ -t 0 ]
  73.     then
  74.       if [ -z "$_STTY" ]
  75.       then
  76.         _STTY=$(stty -g)
  77.         stty -echo -icanon time ${GET_TMOUT:-0} min ${GET_MIN:-0}
  78.       elif [ -n "$GET_TMOUT$GET_MIN" ]
  79.       then
  80.         stty -echo -icanon time ${GET_TMOUT:-0} min ${GET_MIN:-0}
  81.       fi
  82.     fi
  83. #    _KEY=$(dd bs=1 count=1  2>/dev/null; printf '.')
  84.     _KEY=$(dd bs=1 count=1  2>/dev/null; echo '.')
  85.     _KEY=${_KEY%.}
  86.     [ -n "$_KEY" ]
  87. }
  88.  
  89. get_key()
  90. {
  91.     while :
  92.     do
  93.       GET_TMOUT=5 get && break ## Half second timeout on each loop
  94.     done
  95.  
  96.     case $_KEY in
  97.     "${ESC}")
  98.       stty -echo -icanon time 0 min 0
  99.       read _KEY
  100.       if [ -z "$_KEY" ]
  101.       then
  102. #        _KEY='?'
  103.         _KEY="${ESC}"
  104.       fi
  105.     ;;
  106.     esac
  107. }
  108.  
  109.  
  110. ShowGUI()
  111. {
  112. # Now draw the GUI
  113. echo "\033[2J\033[1;1H"
  114.  
  115. # Must use UPPERCASE for words in DRAW mode.  Or add labels later.
  116. # NOTE: see how the cfaj code makes variable sized boxes.
  117. echo $WB$DRAW"\c"
  118. echo "\033[1;1Hlqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk"
  119. echo          "x NICK                                              x"
  120. echo          "x IDENTIFY                                          x"
  121. echo          "x PASSWORD                                          x"
  122. echo          "tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu"
  123. echo          "x SERVER                                            x"
  124. echo          "x PORT                                              x"
  125. echo          "x NEEDPASS                                          x"
  126. echo          "x PASSWORD                                          x"
  127. echo          "t CHANNELS  qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu"
  128. echo          "x                          KEY                      x"
  129. echo          "x                          KEY                      x"
  130. echo          "x                          KEY                      x"
  131. echo          "x                          KEY                      x"
  132. echo          "mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj"
  133. echo $TEXT$BW"\c"
  134. echo      "\033[14A\033[13G                                       "
  135. echo             "\033[13G                                       "
  136. echo             "\033[13G                                       "
  137. echo      "\033[1B\033[13G                                       "
  138. echo             "\033[13G                                       "
  139. echo             "\033[13G                                       "
  140. echo             "\033[13G                                       "
  141. echo "\033[1B\033[3G                        \033[32G   \033[37G               "
  142. echo        "\033[3G                        \033[32G   \033[37G               "
  143. echo        "\033[3G                        \033[32G   \033[37G               "
  144. echo        "\033[3G                        \033[32G   \033[37G               "
  145. echo "\033[13A\033[13G${NICK}"
  146. echo        "\033[13G${ID}"
  147. echo        "\033[13G${IPAS}"
  148. echo "\033[1B\033[13G${SERV}"
  149. echo        "\033[13G${PORT}"
  150. echo        "\033[13G${NPAS}"
  151. echo        "\033[13G${PASS}"
  152. echo "\033[1B\033[3G${CH1}\033[32G${NK1}\033[37G$KEY1"
  153. echo        "\033[3G${CH2}\033[32G${NK2}\033[37G$KEY2"
  154. echo        "\033[3G${CH3}\033[32G${NK3}\033[37G$KEY3"
  155. echo        "\033[3G${CH4}\033[32G${NK4}\033[37G$KEY4"
  156. echo $N
  157. }
  158.  
  159. # Open the tinyirc wrapper script and read lines until one starts with tinyirc.
  160. IRC=/usr/local/bin/irc
  161. if [ -r $IRC ] ; then
  162. exec 3<$IRC
  163. # Find SERV NICK PORT
  164. while read line <&3
  165. do
  166.   if [ "${line%% *}" = "tinyirc" ] ; then
  167.     # Tries to remove the first word
  168.     CFG="${line#tinyirc }"
  169.     # Check if we removed anything
  170.     if [ "$CFG" != "$line" ] ; then
  171.       for ARG in $CFG
  172.       do
  173.     case $ARG in
  174.       */*|*:*|*.*) SERV="$ARG" ;;
  175.       -i) ID="yes" ;;
  176.       -*) ARGS="$ARGS $ARG" ;;
  177.       ''|*[!0-9]*) NICK="$ARG" ;;
  178.       *) PORT="$ARG" ;;
  179.     esac
  180.       done
  181.     fi
  182.   fi
  183. done
  184. exec 3</dev/null
  185. fi
  186.  
  187. # Remove irc:// from SERV
  188. case $SERV in
  189.   *://*) SERV=${SERV#*://} ;;
  190. esac
  191. # Split SERV at first /
  192. CHAN=${SERV#*/}
  193. SERV=${SERV%%/*}
  194. # Split SERV at first :
  195. case $SERV in
  196.   *:*) PORT=${SERV#*:} ; SERV=${SERV%%:*} ;;
  197. esac
  198.  
  199. # Get the channels
  200. #for J in 1 2 3 4
  201. J=1
  202. while [ $J -lt 5 ]
  203. do
  204.   CH=${CHAN%%/*}
  205.   case $CHAN in
  206.     */*) CHAN=${CHAN#*/} ;;
  207.     *) CHAN="" ;;
  208.   esac
  209.   case $CH in
  210.     *[\?\&,]*) OPTS=${CH#*[[\?\&,]} ; CH=${CH%%[\?\&,]*} ;;
  211.     *) OPTS="" ;;
  212.   esac
  213.   echo "$J CH=<$CH> OPTS=<$OPTS>"
  214.   if [ -n "$CH" ] ; then
  215.     eval CH$J=$CH ; eval OPTS$J=$OPTS ;
  216.     case $OPTS in
  217.       *key=*) CK=${OPTS#key=} ; CK=${CK#*[[\?\&,]} ; eval KEY$J=$CK ;;
  218.       *needkey*) eval NK$J="yes" ;;
  219.     esac
  220.     J=`expr $J + 1` ;
  221.   elif [ -z "$OPTS" ] ; then
  222.     J=`expr $J + 1` ;
  223.   else
  224.     # We got some server opts (no channel)
  225.     SOPT="$SOPT,$OPTS"
  226.   fi
  227.   case $OPTS in
  228.     *identify=*) IPAS=${OPTS#identify=} ; IPAS=${IPAS#*[[\?\&,]} ;;
  229.   esac
  230.   case $OPTS in
  231.     *pass=*) PASS=${OPTS#pass=} ; PASS=${PASS#*[[\?\&,]} ;;
  232.     *needpass*) NPAS="yes" ;;
  233.   esac
  234. done
  235.  
  236. # Check if various passwords are needed
  237. if [ -n "$ID" ] ; then ID="yes" ;
  238. elif [ -n "$IPAS" ] ; then ID="yes" ;
  239. else ID="no" ;
  240. fi
  241. if [ -n "$NPAS" ] ; then NPAS="yes" ;
  242. elif [ -n "$PASS" ] ; then NPAS="yes" ;
  243. else NPAS="no" ;
  244. fi
  245.  
  246. if [ -n "$NK1" ] ; then NK1="yes" ;
  247. elif [ -n "$KEY1" ] ; then NK1="yes" ;
  248. else NK1="no" ;
  249. fi
  250. if [ -n "$NK2" ] ; then NK2="yes" ;
  251. elif [ -n "$KEY2" ] ; then NK2="yes" ;
  252. else NK2="no" ;
  253. fi
  254. if [ -n "$NK3" ] ; then NK3="yes" ;
  255. elif [ -n "$KEY4" ] ; then NK3="yes" ;
  256. else NK3="no" ;
  257. fi
  258. if [ -n "$NK4" ] ; then NK4="yes" ;
  259. elif [ -n "$KEY4" ] ; then NK4="yes" ;
  260. else NK4="no" ;
  261. fi
  262.  
  263. #echo "IDENT=<$IPAS>"
  264. #echo "PASS=<$PASS>"
  265. #echo "NPAS=<$NPAS>"
  266. #
  267. #echo "CH1=<$CH1> <$OPTS1>"
  268. #echo "CH2=<$CH2> <$OPTS2>"
  269. #echo "CH3=<$CH3> <$OPTS3>"
  270. #echo "CH4=<$CH4> <$OPTS4>"
  271. #echo "CHAN=<$CHAN> <$SOPT>"
  272. #
  273. #case "" in
  274. #X)
  275. ShowGUI
  276. #;;
  277. #esac
  278.  
  279.  
  280. #echo "Edit TinyIRC Configuration? [y/"$B"n"$N"] \c"
  281. #read -s -n1 EDIT
  282. #echo "$EDIT"
  283.  
  284.  
  285. #cursor 0
  286. pick=1
  287. y=2
  288. x=13
  289.  
  290. # Run main dialog box until q.
  291. while :
  292. do
  293. printat $y $x ""
  294.  
  295. get_key
  296.  
  297. case $_KEY in
  298.    ${NL})printat 1 24 "key=[NL]"
  299.         _KEY=$pick
  300. ;; "${ESC}"|${NL}) break
  301. ;; '[D')printat 1 24 "key=[<<]"
  302.         [ "$pick" -gt 11 ] && pick=$(( $pick - 4 ))
  303. ;; '[C')printat 1 24 "key=[>>]"
  304.         [ "$pick" -gt 7 ] && [ "$pick" -lt 16 ] && pick=$(( $pick + 4 ))
  305. ;; '[A')printat 1 24 "key=[UP]"
  306.         [ "$pick" -eq 12 ] && pick=8
  307.         [ "$pick" -eq 16 ] && pick=8
  308.         pick=$(( $pick - 1 ))
  309. ;; '[B')printat 1 24 "key=[DN]"
  310.         [ "$pick" -ne 11 ] && [ "$pick" -ne 15 ] && pick=$(( $pick + 1 ))
  311. ;; "${TAB}")printat 1 24 "key=[TB]"
  312.         [ "$pick" -eq 19 ] && pick=0
  313.         pick=$(( $pick + 1 ))
  314. ;; '[5~')printat 1 24 "key=[V+]"
  315. ;; '[6~')printat 1 24 "key=[V-]"
  316. ;; '[1~')printat 1 24 "key=[HM]"
  317. ;; '[4~')printat 1 24 "key=[EN]"
  318. ;; *)printat 1 24 "key=[${_KEY}]"
  319. ;;
  320. esac
  321.  
  322. if [ "$pick" -lt 1 ] ; then pick=1
  323. elif [ "$pick" -gt 19 ] ; then pick=19
  324. fi
  325. if   [ "$pick" -lt 4 ] ; then y=$(( $pick + 1 )) ; x=13
  326. elif [ "$pick" -lt 8 ] ; then y=$(( $pick + 2 )) ; x=13
  327. elif [ "$pick" -lt 12 ] ; then y=$(( $pick + 3 )) ; x=3
  328. elif [ "$pick" -lt 16 ] ; then y=$(( $pick - 1 )) ; x=32
  329. elif [ "$pick" -lt 20 ] ; then y=$(( $pick - 5 )) ; x=37
  330. fi
  331. done
  332.  
  333. # Goto top left corner (1,1) and set normal text, fix tty, turn on the cursor.
  334. printat 1 1 "${ESC}[0m"
  335. stty sane
  336. clear
  337. cursor 1
Advertisement
Add Comment
Please, Sign In to add comment