URI: 
       annna-start-main - annna - Annna the nice friendly bot.
  HTML git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
       ---
       annna-start-main (2654B)
       ---
            1 #!/bin/sh
            2 
            3 export PATH="$PATH:/home/annna/bin"
            4 
            5 cfgbase="$(pwd)"
            6 ircbase="$(cat ${cfgbase}/ircbase)"
            7 
            8 server="$1"
            9 usetls="$2"
           10 [ $usetls -gt 0 ] && tlsparam=" -v -t"
           11 port="$3"
           12 channels="$4"
           13 
           14 maxtries=10
           15 maxnicktries=5
           16 {
           17         nicktries=0
           18         iipid=0
           19         while [ -f ${cfgbase}/running ];
           20         do
           21                 # Connect
           22                 #socat openssl:${server}:6697,keepalive,keepcnt=5,keepidle=1,keepintvl=1 \
           23                 #        unix-l:${ircbase}/${server}/sock &
           24                 #while [ ! -e ${ircbase}/${server}/sock ];
           25                 #do
           26                 #        [ -z "$(pgrep socat)" ] && exit 1
           27                 #        sleep 0.5
           28                 #done
           29 
           30                 rm -rf ${ircbase}/${server}
           31                 mkdir -p ${ircbase}/${server}
           32 
           33                 # Connection
           34                 export ircuser="$(cat ${cfgbase}/${server}/ircuser)"
           35                 [ -n "${ircuser}" ] && ircuserparam=" -n ${ircuser}"
           36 
           37                 export ircpass="$(cat ${cfgbase}/${server}/ircpass 2>/dev/null)"
           38                 ircpassparam=""
           39                 [ -n "${ircpass}" ] && ircpassparam=" -k ircpass"
           40 
           41                 if [ -f ${cfgbase}/${server}/fullname ];
           42                 then
           43                         fullname="$(cat ${cfgbase}/${server}/fullname)"
           44                 else
           45                         fullname="Gode"
           46                 fi
           47 
           48                 # For debugging.
           49                 #ii -s "${server}"${ircpassparam}${ircuserparam}${tlsparam} \
           50                 #        -f "${fullname}" -p ${port} &
           51 
           52                 [ $iipid -gt 0 ] && kill -KILL $iipid >/dev/null 2>&1
           53 
           54                 ii -s "${server}"${ircpassparam}${ircuserparam}${tlsparam} \
           55                         -f "${fullname}" -p ${port} >/dev/null 2>&1 &
           56                 #ii -s "${server}"${ircpassparam}${ircuserparam}${tlsparam} \
           57                 #        -f "${fullname}" -p ${port}
           58                 iipid=$!
           59 
           60                 sleep 5
           61 
           62                 tries=0
           63                 ## Waiting for the socket to be available.
           64                 while [ ! -e ${ircbase}/${server}/out ];
           65                 do
           66                         kill -0 $iipid >/dev/null 2>&1 || exit 1
           67                         [ ! -f ${cfgbase}/running ] && exit 1
           68                         tries=$(($tries + 1))
           69                         [ $tries -gt $maxtries ] && break
           70                         sleep 4
           71                 done
           72                 [ $tries -gt $maxtries ] && continue
           73 
           74                 # 433: Nickname is already in use.
           75                 if [ -n "$(grep " 433 " ${ircbase}/${server}/out)" ];
           76                 then
           77                         nicktries=$(($nicktries + 1))
           78                         [ $nicktries -gt $maxnicktries ] && exit 3
           79                         sleep 30
           80                         continue
           81                 fi
           82 
           83                 tries=0
           84                 # Check for end of motd.
           85                 while [ -z "$(grep " 376 " ${ircbase}/${server}/out)" ];
           86                 do
           87                         [ ! -f ${cfgbase}/running ] && exit 1
           88                         # Sometimes the connection is too fast and the ii USER
           89                         # and NICK is slurped.
           90                         printf "USER %s\r\nUSER %s localhost %s :%s" \
           91                                 "${ircuser}" "${ircuser}" "$(hostname)" \
           92                                 "${fullname}" \
           93                                 > "${ircbase}/${server}/in"
           94                         tries=$(($tries + 1))
           95                         [ $tries -gt $maxtries ] && break
           96                         sleep 2
           97                 done
           98                 [ $tries -gt $maxtries ] && continue
           99 
          100                 {
          101                         annna-join-channels "${server}" "${channels}"
          102                 } &
          103 
          104                 # Watch for ii to exit. Then remove the used directory to have all
          105                 # services disappear.
          106                 while kill -0 $iipid >/dev/null 2>&1;
          107                 do
          108                         sleep 30
          109                 done
          110                 rm -rf ${ircbase}/${server}
          111         done
          112 } &
          113