Guest User

tinyirc_setup_ash.sh

a guest
May 26th, 2014
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 6.45 KB | None | 0 0
  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.  
  16. WB="\033[44;37m"
  17. BW="\033[47;34m"
  18.  
  19. DRAW="\033(0"
  20. TEXT="\033(B"
  21.  
  22.  
  23. #NICK="zippy"
  24. SERV="irc.freenode.net"
  25. PORT=6667
  26.  
  27. #ESC=$(printf "\033")
  28. ESC=`echo "\033"`
  29. NL='
  30. '
  31.  
  32. get() ## get a single keystroke from stdin without waiting
  33. {
  34.     if [ -t 0 ]
  35.     then
  36.       if [ -z "$_STTY" ]
  37.       then
  38.         _STTY=$(stty -g)
  39.         stty -echo -icanon time ${GET_TMOUT:-0} min ${GET_MIN:-0}
  40.       elif [ -n "$GET_TMOUT$GET_MIN" ]
  41.       then
  42.         stty -echo -icanon time ${GET_TMOUT:-0} min ${GET_MIN:-0}
  43.       fi
  44.     fi
  45. #    _KEY=$(dd bs=1 count=1  2>/dev/null; printf '.')
  46.     _KEY=$(dd bs=1 count=1  2>/dev/null; echo '.')
  47.     _KEY=${_KEY%.}
  48.     [ -n "$_KEY" ]
  49. }
  50.  
  51. get_key()
  52. {
  53.     while :
  54.     do
  55.       GET_TMOUT=5 get && break ## Half second timeout on each loop
  56.     done
  57.  
  58.     case $_KEY in
  59.     "${ESC}")
  60.       stty -echo -icanon time 0 min 0
  61.       read _KEY
  62.       if [ -z "$_KEY" ]
  63.       then
  64. #        _KEY='?'
  65.         _KEY="${ESC}"
  66.       fi
  67.     ;;
  68.     esac
  69. }
  70.  
  71.  
  72. ShowGUI()
  73. {
  74. # Now draw the GUI
  75. echo "\033[2J\033[1;1H"
  76.  
  77. # Must use UPPERCASE for words in DRAW mode.  Or add labels later.
  78. # NOTE: see how the cfaj code makes variable sized boxes.
  79. echo $WB$DRAW"\c"
  80. echo "\033[1;1Hlqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk"
  81. echo          "x NICK                                              x"
  82. echo          "x IDENTIFY                                          x"
  83. echo          "x PASSWORD                                          x"
  84. echo          "tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu"
  85. echo          "x SERVER                                            x"
  86. echo          "x PORT                                              x"
  87. echo          "x NEEDPASS                                          x"
  88. echo          "x PASSWORD                                          x"
  89. echo          "t CHANNELS  qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu"
  90. echo          "x                          KEY                      x"
  91. echo          "x                          KEY                      x"
  92. echo          "x                          KEY                      x"
  93. echo          "x                          KEY                      x"
  94. echo          "mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj"
  95. echo $TEXT$BW"\c"
  96. echo      "\033[14A\033[13G                                       "
  97. echo             "\033[13G                                       "
  98. echo             "\033[13G                                       "
  99. echo      "\033[1B\033[13G                                       "
  100. echo             "\033[13G                                       "
  101. echo             "\033[13G                                       "
  102. echo             "\033[13G                                       "
  103. echo "\033[1B\033[3G                        \033[32G   \033[37G               "
  104. echo        "\033[3G                        \033[32G   \033[37G               "
  105. echo        "\033[3G                        \033[32G   \033[37G               "
  106. echo        "\033[3G                        \033[32G   \033[37G               "
  107. echo "\033[13A\033[13G${NICK}"
  108. echo        "\033[13G${ID}"
  109. echo        "\033[13G${IPAS}"
  110. echo "\033[1B\033[13G${SERV}"
  111. echo        "\033[13G${PORT}"
  112. echo        "\033[13G${NPAS}"
  113. echo        "\033[13G${PASS}"
  114. echo "\033[1B\033[3G${CH1}\033[32G${NK1}\033[37G$KEY1"
  115. echo        "\033[3G${CH2}\033[32G${NK2}\033[37G$KEY2"
  116. echo        "\033[3G${CH3}\033[32G${NK3}\033[37G$KEY3"
  117. echo        "\033[3G${CH4}\033[32G${NK4}\033[37G$KEY4"
  118. echo $N
  119. }
  120.  
  121. # Open the tinyirc wrapper script and read lines until one starts with tinyirc.
  122. IRC=/usr/local/bin/irc
  123. if [ -r $IRC ] ; then
  124. exec 3<$IRC
  125. # Find SERV NICK PORT
  126. while read line <&3
  127. do
  128.   if [ "${line%% *}" = "tinyirc" ] ; then
  129.     # Tries to remove the first word
  130.     CFG="${line#tinyirc }"
  131.     # Check if we removed anything
  132.     if [ "$CFG" != "$line" ] ; then
  133.       for ARG in $CFG
  134.       do
  135.     case $ARG in
  136.       */*|*:*|*.*) SERV="$ARG" ;;
  137.       -i) ID="yes" ;;
  138.       -*) ARGS="$ARGS $ARG" ;;
  139.       ''|*[!0-9]*) NICK="$ARG" ;;
  140.       *) PORT="$ARG" ;;
  141.     esac
  142.       done
  143.     fi
  144.   fi
  145. done
  146. exec 3</dev/null
  147. fi
  148.  
  149. # Remove irc:// from SERV
  150. case $SERV in
  151.   *://*) SERV=${SERV#*://} ;;
  152. esac
  153. # Split SERV at first /
  154. CHAN=${SERV#*/}
  155. SERV=${SERV%%/*}
  156. # Split SERV at first :
  157. case $SERV in
  158.   *:*) PORT=${SERV#*:} ; SERV=${SERV%%:*} ;;
  159. esac
  160.  
  161. # Get the channels
  162. #for J in 1 2 3 4
  163. J=1
  164. while [ $J -lt 5 ]
  165. do
  166.   CH=${CHAN%%/*}
  167.   case $CHAN in
  168.     */*) CHAN=${CHAN#*/} ;;
  169.     *) CHAN="" ;;
  170.   esac
  171.   case $CH in
  172.     *[\?\&,]*) OPTS=${CH#*[[\?\&,]} ; CH=${CH%%[\?\&,]*} ;;
  173.     *) OPTS="" ;;
  174.   esac
  175.   echo "$J CH=<$CH> OPTS=<$OPTS>"
  176.   if [ -n "$CH" ] ; then
  177.     eval CH$J=$CH ; eval OPTS$J=$OPTS ;
  178.     case $OPTS in
  179.       *key=*) CK=${OPTS#key=} ; CK=${CK#*[[\?\&,]} ; eval KEY$J=$CK ;;
  180.       *needkey*) eval NK$J="yes" ;;
  181.     esac
  182.     J=`expr $J + 1` ;
  183.   elif [ -z "$OPTS" ] ; then
  184.     J=`expr $J + 1` ;
  185.   else
  186.     # We got some server opts (no channel)
  187.     SOPT="$SOPT,$OPTS"
  188.   fi
  189.   case $OPTS in
  190.     *identify=*) IPAS=${OPTS#identify=} ; IPAS=${IPAS#*[[\?\&,]} ;;
  191.   esac
  192.   case $OPTS in
  193.     *pass=*) PASS=${OPTS#pass=} ; PASS=${PASS#*[[\?\&,]} ;;
  194.     *needpass*) NPAS="yes" ;;
  195.   esac
  196. done
  197.  
  198. # Check if various passwords are needed
  199. if [ -n "$ID" ] ; then ID="yes" ;
  200. elif [ -n "$IPAS" ] ; then ID="yes" ;
  201. else ID="no" ;
  202. fi
  203. if [ -n "$NPAS" ] ; then NPAS="yes" ;
  204. elif [ -n "$PASS" ] ; then NPAS="yes" ;
  205. else NPAS="no" ;
  206. fi
  207.  
  208. if [ -n "$NK1" ] ; then NK1="yes" ;
  209. elif [ -n "$KEY1" ] ; then NK1="yes" ;
  210. else NK1="no" ;
  211. fi
  212. if [ -n "$NK2" ] ; then NK2="yes" ;
  213. elif [ -n "$KEY2" ] ; then NK2="yes" ;
  214. else NK2="no" ;
  215. fi
  216. if [ -n "$NK3" ] ; then NK3="yes" ;
  217. elif [ -n "$KEY4" ] ; then NK3="yes" ;
  218. else NK3="no" ;
  219. fi
  220. if [ -n "$NK4" ] ; then NK4="yes" ;
  221. elif [ -n "$KEY4" ] ; then NK4="yes" ;
  222. else NK4="no" ;
  223. fi
  224.  
  225. #echo "IDENT=<$IPAS>"
  226. #echo "PASS=<$PASS>"
  227. #echo "NPAS=<$NPAS>"
  228. #
  229. #echo "CH1=<$CH1> <$OPTS1>"
  230. #echo "CH2=<$CH2> <$OPTS2>"
  231. #echo "CH3=<$CH3> <$OPTS3>"
  232. #echo "CH4=<$CH4> <$OPTS4>"
  233. #echo "CHAN=<$CHAN> <$SOPT>"
  234. #
  235. #case "" in
  236. #X)
  237. ShowGUI
  238. #;;
  239. #esac
  240.  
  241. echo "Edit TinyIRC Configuration? [y/"$B"n"$N"] \c"
  242. read -s -n1 EDIT
  243. echo "$EDIT"
Advertisement
Add Comment
Please, Sign In to add comment