Fix major bugs in annna. - annna - Annna the nice friendly bot. | |
git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws6… | |
Log | |
Files | |
Refs | |
Tags | |
README | |
--- | |
commit 8ef63faa063c71c42142e1bf2892e8ccafacbb6c | |
parent bc22021f5895ec90dda9183e932989364fbe0f63 | |
Author: Annna Robert-Houdin <[email protected]> | |
Date: Mon, 2 Apr 2018 08:31:12 +0200 | |
Fix major bugs in annna. | |
* On startup annna will listen to commands. | |
* If only some channels are set to be joined don't barf. | |
* Checking for channels is streamlined. | |
* Check for ii and socat so the connection really works. | |
Diffstat: | |
M annna-start-checker | 6 ++++-- | |
M annna-start-checker-dbg | 6 ++++-- | |
M annna-start-main | 6 ++++++ | |
M annna-start-services | 33 +++++++++++++++++++++++------… | |
4 files changed, 39 insertions(+), 12 deletions(-) | |
--- | |
diff --git a/annna-start-checker b/annna-start-checker | |
@@ -9,10 +9,12 @@ export PATH="$PATH:/home/annna/bin" | |
while /bin/true; | |
do | |
# Is annna still in her world? | |
- pid="$(pgrep -U annna -x socat)" | |
+ socatpid="$(pgrep -U annna -x socat)" | |
+ iipid="$(pgrep -U annna -x ii)" | |
- if [ -z "$pid" ]; | |
+ if [ -z "$socatpid" -o -z "$iipid" ]; | |
then | |
+ annna-stop-socat >/dev/null 2>&1 | |
annna-stop-services >/dev/null 2>&1 | |
annna-start-main >/dev/null 2>&1 | |
fi | |
diff --git a/annna-start-checker-dbg b/annna-start-checker-dbg | |
@@ -8,11 +8,13 @@ export PATH="$PATH:/home/annna/bin" | |
while /bin/true; | |
do | |
# Is annna still in her world? | |
- pid="$(pgrep -U annna -x socat)" | |
+ socatpid="$(pgrep -U annna -x socat)" | |
+ iipid="$(pgrep -U annna -x ii)" | |
- if [ -z "$pid" ]; | |
+ if [ -z "$socatpid" -o -z "$iipid" ]; | |
then | |
printf "checker: Starting annna.\n" | |
+ sh -x annna-stop-socat | |
sh -x annna-stop-services | |
sh -x annna-start-main | |
fi | |
diff --git a/annna-start-main b/annna-start-main | |
@@ -10,6 +10,8 @@ export PATH="$PATH:/home/annna/bin" | |
channels="#bitreich-con #bitreich-radio | |
#bitreich-scm #bitreich-en #bitreich-de | |
#bitreich-fr #bitreich-cooking" | |
+# Testing | |
+#channels="#bitreich-radio" | |
rm -rf $HOME/irc | |
mkdir -p $HOME/irc | |
@@ -21,6 +23,7 @@ socat openssl:chat.freenode.net:6697,keepalive,keepcnt=5,keep… | |
unix-l:$HOME/freenode.sock & | |
while [ ! -e $HOME/freenode.sock ]; | |
do | |
+ [ -z "$(pgrep socat)" ] && exit 1 | |
sleep 0.5 | |
done | |
@@ -72,6 +75,9 @@ for chan in ${channels}; | |
do | |
printf "/j %s\n" "${chan}" > chat.freenode.net/in | |
+ # Do not flood. | |
+ sleep 1 | |
+ | |
## Make sure the pipes are there. | |
while [ ! -e "$HOME/irc/chat.freenode.net/${chan}/out" ]; | |
do | |
diff --git a/annna-start-services b/annna-start-services | |
@@ -4,30 +4,42 @@ | |
# If this gets too unmaintainable, consider adding some directory structure. | |
# | |
+set -x | |
+ | |
export PATH="$PATH:/home/annna/bin" | |
# Bitreich members who are allowed to run certain commands. | |
brmembers="__20h__ Evil_Bob chripo posativ quinq stateless solene josuah paraz… | |
botname="annna" | |
+iiroot="/home/annna/irc" | |
iibase="/home/annna/irc/chat.freenode.net" | |
# Permissions | |
-chmod o+rx $HOME/irc | |
-chmod o+rx $HOME/irc/chat.freenode.net | |
+[ -d ${iiroot} ] && chmod o+rx ${iiroot} | |
+[ -d ${iibase} ] && chmod o+rx ${iibase} | |
## EN Channel (this script) | |
-chmod o+rx "$HOME/irc/chat.freenode.net/#bitreich-en" | |
-chmod o+w "$HOME/irc/chat.freenode.net/#bitreich-en/in" | |
+[ -d "${iibase}/#bitreich-en" ] \ | |
+ && chmod o+rx "${iibase}/#bitreich-en" | |
+[ -f "${iibase}/#bitreich-en/in" ] \ | |
+ && chmod o+w "${iibase}/#bitreich-en/in" | |
## SCM (/scm/post-receive) | |
-chmod o+rx "$HOME/irc/chat.freenode.net/#bitreich-scm" | |
-chmod o+w "$HOME/irc/chat.freenode.net/#bitreich-scm/in" | |
+[ -d "${iibase}/#bitreich-scm" ] \ | |
+ && chmod o+rx "${iibase}/#bitreich-scm" | |
+[ -f "${iibase}/#bitreich-scm/in" ] \ | |
+ && chmod o+w "${iibase}/#bitreich-scm/in" | |
## Radio (/br/radio/playlist.sh + this script) | |
-chmod o+rx "$HOME/irc/chat.freenode.net/#bitreich-radio" | |
-chmod o+w "$HOME/irc/chat.freenode.net/#bitreich-radio/in" | |
+[ -d "${iibase}/#bitreich-radio" ] \ | |
+ && chmod o+rx "${iibase}/#bitreich-radio" | |
+[ -f "${iibase}/#bitreich-radio/in" ] \ | |
+ && chmod o+w "${iibase}/#bitreich-radio/in" | |
+if [ -f "${iibase}/#bitreich-radio/out" ]; | |
+then | |
# bitreich-radio | |
{ | |
ls "${iibase}/#bitreich-radio/out" | entr tail -n 1 "${iibase}/#bitrei… | |
+ | grep -v --line-buffered -e '[0-9]* -!- .*' \ | |
| sed -u 's,[0-9]* <\([^ >]*\)> \(.*\)$,\1\n\2,' \ | |
| { | |
while read user; | |
@@ -52,10 +64,14 @@ chmod o+w "$HOME/irc/chat.freenode.net/#bitreich-radio/in" | |
done | |
} | |
} & | |
+fi | |
# bitreich-en | |
+if [ -f "${iibase}/#bitreich-en/out" ]; | |
+then | |
{ | |
ls "${iibase}/#bitreich-en/out" | entr tail -n 1 "${iibase}/#bitreich-… | |
+ | grep -v --line-buffered -e '[0-9]* -!- .*' \ | |
| sed -u 's,[0-9]* <\([^ >]*\)> \(.*\)$,\1\n\2,' \ | |
| { | |
while read user; | |
@@ -187,4 +203,5 @@ chmod o+w "$HOME/irc/chat.freenode.net/#bitreich-radio/in" | |
done | |
} | |
} & | |
+fi | |