Introduction
Introduction Statistics Contact Development Disclaimer Help
Big refactoring for automatic server restart, if needed. - annna - Annna the ni…
git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws6…
Log
Files
Refs
Tags
README
---
commit f3d26842d5e8b3695eb3cd2d0cf8c83ae2f40565
parent e519438ca2a0234f4f0c04fc41dae0160741411a
Author: Annna Robert-Houdin <[email protected]>
Date: Sat, 1 Jan 2022 21:59:13 +0100
Big refactoring for automatic server restart, if needed.
* Make everything configurable in annna base dir.
* Have a global file, if annna is running, which is checked everywhere.
Diffstat:
M annna-channel-service | 7 ++++---
A annna-join-channels | 38 +++++++++++++++++++++++++++++…
M annna-message-common | 9 ++++-----
M annna-message-gopherproject | 6 ++++--
M annna-message-radio | 6 ++++--
M annna-say | 2 +-
M annna-start | 6 ++++--
M annna-start-main | 149 ++++++++++++++---------------…
M annna-start-service | 19 ++++++++++---------
M annna-stop | 3 +++
10 files changed, 140 insertions(+), 105 deletions(-)
---
diff --git a/annna-channel-service b/annna-channel-service
@@ -11,10 +11,11 @@ pgrep -f "$0 $*" | grep -vxq "$$" && exec echo "$0 $* alrea…
server="$1"
channel="$2"
-iiroot="/home/annna/irc"
-iibase="/home/annna/irc/${server}"
+cfgbase="$(pwd)"
+ircbase="$(cat ${cfgbase}/ircbase)"
+serverbase="${ircbase}/${server}"
-ls "${iibase}/${channel}/out" | entr tail -n 1 "${iibase}/${channel}/out" 2>/d…
+ls "${serverbase}/${channel}/out" | entr tail -n 1 "${serverbase}/${channel}/o…
| sed -nu 's,[0-9]* <\([^ >]*\)> \(.*\),\1 \2,p' \
| {
while read -r user text;
diff --git a/annna-join-channels b/annna-join-channels
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+set -x
+
+export PATH="$PATH:/home/annna/bin"
+
+cfgbase="$(pwd)"
+ircbase="$(cat ${cfgbase}/ircbase)"
+
+server="$1"
+channels="$2"
+
+# Channels
+for chan in ${channels};
+do
+ printf "/j %s\n" "${chan}" > ${ircbase}/${server}/in
+
+ # Do not flood.
+ sleep 1
+
+ ## Make sure the pipes are there.
+ while [ ! -e "${ircbase}/${server}/${chan}/out" ];
+ do
+ [ ! -f ${cfgbase}/running ] && exit 1
+ sleep 1
+ done
+
+ ## Make sure we are in the channel, for the services.
+ while [ -z "$(grep " JOIN :${chan}" \
+ ${ircbase}/${server}/out)" ];
+ do
+ [ ! -f ${cfgbase}/running ] && exit 1
+ sleep 1
+ done
+
+ annna-start-service "${server}" "${chan}"
+done
+
diff --git a/annna-message-common b/annna-message-common
@@ -1,17 +1,16 @@
#!/bin/sh
-#
-# If this gets too unmaintainable, consider adding some directory structure.
-#
set -x
export PATH="/br/bin:$PATH"
-modbase="/home/annna/bin/modules"
+cfgbase="$(pwd)"
+ircbase="$(cat ${cfgbase}/ircbase)"
+modbase="$(cat ${cfgbase}/modbase)"
+botname="$(cat ${cfgbase}/botname)"
hashtagfile="${modbase}/hashtags/hashtags.txt"
idontcaredb="${modbase}/i-dont-care/i-dont-care.txt"
printnhashtags=2
-botname="annna"
brmembers="__20h__ Evil_Bob chripo posativ quinq stateless solene josuah paraz…
server="$1"
diff --git a/annna-message-gopherproject b/annna-message-gopherproject
@@ -1,7 +1,9 @@
#!/bin/sh -e
-modbase="/home/annna/bin/modules/"
-botname="annna"
+cfgbase="$(pwd)"
+ircbase="$(cat ${cfgbase}/ircbase)"
+modbase="$(cat ${cfgbase}/modbase)"
+botname="$(cat ${cfgbase}/botname)"
server="$1"
channel="$2"
diff --git a/annna-message-radio b/annna-message-radio
@@ -1,7 +1,9 @@
#!/bin/sh -e
-modbase="/home/annna/bin/modules/"
-botname="annna"
+cfgbase="$(pwd)"
+ircbase="$(cat ${cfgbase}/ircbase)"
+modbase="$(cat ${cfgbase}/modbase)"
+botname="$(cat ${cfgbase}/botname)"
server="$1"
channel="$2"
diff --git a/annna-say b/annna-say
@@ -60,7 +60,7 @@ do
printf "%s\n" "$@" > "${ircpath}/in"
else
# Might be a user.
- printf "/j %s %s\n" "$c" "$@" > "${ircbase}/in"
+ printf "/j %s %s\n" "$c" "$@" > "${ircpath}/in"
fi
done
diff --git a/annna-start b/annna-start
@@ -4,9 +4,11 @@ set -x
export PATH="$PATH:/home/annna/bin"
-cfgbase="/home/annna/annna"
-cd ${cfgbase}
+#cfgbase="$(pwd)"
+cfgbase="$HOME/annna"
+touch ${cfgbase}/running
+cd ${cfgbase}
for server in $(find . -maxdepth 1 -type d | tail -n +2 | cut -c 3-);
do
[ ! -f ${server}/autoconnect ] && continue
diff --git a/annna-start-main b/annna-start-main
@@ -4,94 +4,81 @@ set -x
export PATH="$PATH:/home/annna/bin"
+cfgbase="$(pwd)"
+ircbase="$(cat ${cfgbase}/ircbase)"
+
server="$1"
usetls="$2"
-[ $usetls -gt 0 ] && tlsparam=" -t"
+[ $usetls -gt 0 ] && tlsparam=" -v -t"
port="$3"
channels="$4"
-rm -rf $HOME/irc/${server}
-mkdir -p $HOME/irc/${server}
-cd $HOME/irc
-rm -f "$HOME/irc/${server}/sock"
-
-# Connect
-#socat openssl:${server}:6697,keepalive,keepcnt=5,keepidle=1,keepintvl=1 \
-# unix-l:$HOME/irc/${server}/sock &
-#while [ ! -e $HOME/irc/${server}/sock ];
-#do
-# [ -z "$(pgrep socat)" ] && exit 1
-# sleep 0.5
-#done
-
-# Connection
-export ircuser="$(sed -n 's/^user: //p' $HOME/annna/${server}/irc-credentials.…
-export ircpass="$(sed -n 's/^pass: //p' $HOME/annna/${server}/irc-credentials.…
-#ii -s "${server}" -t -p 6697 -n "$ircuser" -k ircpass \
-# -f "Annna Robert-Houdin" &
-if [ -n "${ircuser}" -a -n "${ircpass}" ];
-then
- ii -s "${server}" -v${tlsparam} -p 6697 -n "$ircuser" \
- -f "Annna Robert-Houdin" &
- iipid=$!
-else
- ii -s "${server}" -v${tlsparam} -p 6697 \
- -f "Annna Robert-Houdin" &
- iipid=$!
-fi
-
{
- # Watch for ii to exit. Then remove the used directory to have all
- # services disappear.
- while kill -0 $iipid >/dev/null 2>&1;
+ while [ -f ${cfgbase}/running ];
do
- sleep 10
+ # Connect
+ #socat openssl:${server}:6697,keepalive,keepcnt=5,keepidle=1,k…
+ # unix-l:${ircbase}/${server}/sock &
+ #while [ ! -e ${ircbase}/${server}/sock ];
+ #do
+ # [ -z "$(pgrep socat)" ] && exit 1
+ # sleep 0.5
+ #done
+
+ rm -rf ${ircbase}/${server}
+ mkdir -p ${ircbase}/${server}
+
+ # Connection
+ export ircuser="$(sed -n 's/^user: //p' ${cfgbase}/${server}/i…
+ ircuserparam=""
+ [ -n "${ircuserparam}" ] && ircuserparam="-u ${ircuser}"
+
+ export ircpass="$(sed -n 's/^pass: //p' ${cfgbase}/${server}/i…
+ ircpassparam=""
+ [ -n "${ircpassparam}" ] && ircpassparam="-k ircpass"
+
+ if [ -f ${cfgbase}/${server}/fullname ];
+ then
+ fullname="$(cat ${cfgbase}/${server}/fullname)"
+ else
+ fullname="Gode"
+ fi
+
+ #ii -s "${server}" -t -p 6697 -n "$ircuser" -k ircpass \
+ # -f "Annna Robert-Houdin" &
+
+ ii -s "${server}"${ircpassparam}${ircuserparam}${tlsparam} \
+ -f "${fullname}" -p ${port} &
+ iipid=$!
+
+ sleep 5
+
+ ## Waiting for the socket to be available.
+ while [ ! -e ${ircbase}/${server}/out ];
+ do
+ kill -0 $iipid >/dev/null 2>&1 || exit 1
+ [ ! -f ${cfgbase}/running ] && exit 1
+ sleep 2
+ done
+
+ #while [ -z "$(grep " 376 " ${ircbase}/${server}/out)" ];
+ #do
+ # [ ! -f ${cfgbase}/running ] && exit 1
+ # sleep 2
+ #done
+
+ {
+ sleep 2
+ annna-join-channels "${server}" "${channels}"
+ } &
+
+ # Watch for ii to exit. Then remove the used directory to have…
+ # services disappear.
+ while kill -0 $iipid >/dev/null 2>&1;
+ do
+ sleep 10
+ done
+ rm -rf ${ircbase}/${server}
done
- rm -rf $HOME/irc/${server}
-
} &
-## Waiting for the socket to be available.
-while [ ! -e $HOME/irc/${server}/out ];
-do
- kill -0 $iipid >/dev/null 2>&1 || exit 1
- sleep 0.5
-done
-
-## Waiting for the motd to have ended so we can send something.
-#while [ -z "$(grep "End of /MOTD command" $HOME/irc/${server}/out)" ];
-#do
-# if [ -n "$(grep "Nickname is already in use" $HOME/irc/${server}/out)…
-# then
-# exit 1
-# fi
-#
-# sleep 0.5
-#done
-
-sleep 2
-
-# Channels
-for chan in ${channels};
-do
- printf "/j %s\n" "${chan}" > ${server}/in
-
- # Do not flood.
- sleep 1
-
- ## Make sure the pipes are there.
- while [ ! -e "$HOME/irc/${server}/${chan}/out" ];
- do
- sleep 0.5
- done
-
- ## Make sure we are in the channel, for the services.
- while [ -z "$(grep "has joined ${chan}" \
- $HOME/irc/${server}/${chan}/out)" ];
- do
- sleep 0.5
- done
-
- annna-start-service "${server}" "${chan}"
-done
-
diff --git a/annna-start-service b/annna-start-service
@@ -15,20 +15,21 @@ export PATH="$PATH:/home/annna/bin"
# plan9port
export PATH="$PATH:/opt/plan9/bin"
-iiroot="/home/annna/irc"
-iibase="/home/annna/irc/${server}"
+cfgbase="$(pwd)"
+ircbase="$(cat ${cfgbase}/ircbase)"
+serverbase="${ircbase}/${server}"
# Permissions
-[ -d ${iiroot} ] && chmod o+rx ${iiroot}
-[ -d ${iibase} ] && chmod o+rx ${iibase}
+[ -d ${ircbase} ] && chmod o+rx ${ircbase}
+[ -d ${serverbase} ] && chmod o+rx ${serverbase}
## Channel handlers
-[ -d "${iibase}/${channel}" ] \
- && chmod o+rx "${iibase}/${channel}"
-[ -p "${iibase}/${channel}/in" ] \
- && chmod o+w "${iibase}/${channel}/in"
+[ -d "${serverbase}/${channel}" ] \
+ && chmod o+rx "${serverbase}/${channel}"
+[ -p "${serverbase}/${channel}/in" ] \
+ && chmod o+w "${serverbase}/${channel}/in"
-if [ -f "${iibase}/${channel}/out" ];
+if [ -f "${serverbase}/${channel}/out" ];
then
annna-channel-service "${server}" "${channel}" &
fi
diff --git a/annna-stop b/annna-stop
@@ -5,6 +5,9 @@
export PATH="$PATH:/home/annna/bin"
+cfgbase="$HOME/annna"
+[ -f "${cfgbase}/running" ] && rm -f "${cfgbase}/running"
+
annna-stop-ii
annna-stop-checker
annna-stop-services
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.