View difference between Paste ID: 4mha6G26 and EqA28Q7Q
SHOW: | | - or go back to the newest paste.
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-
echo "Edit TinyIRC Configuration? [y/"$B"n"$N"] \c"
241+
242-
read -s -n1 EDIT
242+
243-
echo "$EDIT"
243+
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