Make annna-start and annna-stop more flexible. - annna - Annna the nice friendly bot.
(HTM) git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Tags
(DIR) README
---
(DIR) commit 86ed7ccd5559dd7814aa60659031f03ce9d198cd
(DIR) parent 7a7a2a9db786688ba9aedf387f56b8fe267f32b5
(HTM) Author: Annna Robert-Houdin <annna@bitreich.org>
Date: Tue, 14 Oct 2025 21:06:34 +0200
Make annna-start and annna-stop more flexible.
Diffstat:
M annna-start | 22 +++++++++++++++++-----
M annna-stop | 31 +++++++++++++++++++++++++++----
2 files changed, 44 insertions(+), 9 deletions(-)
---
(DIR) diff --git a/annna-start b/annna-start
@@ -1,14 +1,13 @@
#!/bin/sh
-set -x
-
if [ $# -lt 1 ];
then
- printf "usage: %s cfgdir\n" "$(basename "$0")" >&2
+ printf "usage: %s cfgdir [server ...]\n" "$(basename "$0")" >&2
exit 1
fi
export ANNNA_BASE="$1"
+shift 1
[ ! -d "${ANNNA_BASE}" ] && printf "%s not a directory.\n" "${ANNNA_BASE}" >&2 && exit 1
[ ! -e "${ANNNA_BASE}/binbase" ] && printf "No /binbase exists.\n" >&2 && exit 1
@@ -27,10 +26,23 @@ export PATH="$PATH:${ANNNA_BINBASE}"
cd "${ANNNA_BASE}"
touch running
-for server in $(find . -maxdepth 1 -type d | cut -c 3-);
+
+if [ $# -gt 1 ];
+then
+ servers="$@"
+else
+ servers="$(find . -maxdepth 1 -type d | cut -c 3-)";
+fi
+for server in ${servers};
do
[ -z "$server" ] && continue
export IRC_SERVER="${server}"
+ if [ -f "${IRC_SERVER}.pid" ];
+ then
+ printf "%s already running.\n" "${IRC_SERVER}"
+ continue
+ fi
+
[ ! -f ${server}/autoconnect ] && continue
export IRC_CHANNELS="$(cat ${server}/channels | tr '\n' ' ')"
export IRC_TLS=0
@@ -45,7 +57,7 @@ do
[ -f ${server}/name ] && export IRC_NAME="$(cat ${server}/name)"
annna-start-server &
- printf "%s\n" "$!" > "$IRC_SERVER.pid"
+ printf "%s\n" "$!" > "${IRC_SERVER}.pid"
done
printf "%s is ALIVE. Have fun! :-)\n" "${IRC_USER}"
(DIR) diff --git a/annna-stop b/annna-stop
@@ -5,24 +5,47 @@
if [ $# -lt 1 ];
then
- printf "usage: %s cfgdir\n" "$(basename "$0")" >&2
+ printf "usage: %s cfgdir [server]\n" "$(basename "$0")" >&2
exit 1
fi
export ANNNA_BASE="$1"
+shift 1
[ ! -d "${ANNNA_BASE}" ] && printf "%s not a directory.\n" "${ANNNA_BASE}" >&2 && exit 1
+
[ ! -e "${ANNNA_BASE}/binbase" ] && printf "No /binbase exists.\n" >&2 && exit 1
export ANNNA_BINBASE="$(cat "${ANNNA_BASE}/binbase")"
[ ! -d "${ANNNA_BINBASE}" ] && printf "%s not a directory.\n" "${ANNNA_BINBASE}" >&2 && exit 1
+
+[ ! -e "${ANNNA_BASE}/ircbase" ] && printf "No /ircbase exists.\n" >&2 && exit 1
+export ANNNA_IRCBASE="$(cat "${ANNNA_BASE}/ircbase")"
+[ ! -d "${ANNNA_IRCBASE}" ] && printf "%s not a directory.\n" "${ANNNA_IRCBASE}" >&2 && exit 1
+
export PATH="$PATH:${ANNNA_BINBASE}"
-annna-die
cd "${ANNNA_BASE}"
-for pidfile in $(find . -maxdepth 1 -type f -name "*.pid" | cut -c 3-);
+if [ $# -gt 1 ];
+then
+ servers="$@"
+else
+ servers="$(find . -maxdepth 1 -type d | cut -c 3-)"
+fi
+for server in ${servers};
do
+ [ -z "${server}" ] && continue
+ pidfile="${server}.pid"
+ [ ! -f "${pidfile}" ] && continue
serverpid="$(cat "${pidfile}")"
[ -z "${serverpid}" ] && continue
- kill -0 "${serverpid} && kill -KILL "${serverpid}"
+ if kill -0 "${serverpid}";
+ then
+ pkill -P "${serverpid}"
+ kill -KILL "${serverpid}"
+ fi
rm "${pidfile}"
+ rm -rf "${ANNNA_IRCBASE}/${server}"
done
+# Nothing is left running, so annna running can be removed.
+[ -z "$(find . -maxdepth 1 -type f -name "*.pid")" ] && annna-die
+