home · contact · privacy
Improve plomlombot setup.
[config] / all_new_2018 / user_scripts / plomlombot_daemon.sh
diff --git a/all_new_2018/user_scripts/plomlombot_daemon.sh b/all_new_2018/user_scripts/plomlombot_daemon.sh
new file mode 100755 (executable)
index 0000000..60b0d9c
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/sh
+set -e
+
+# Repeatedly parse config file for GPG key and bot screen configs.
+path=~/.plomlombot
+db_dir="${HOME}/plomlombot_db"
+irclogs_dir=/var/www/html/irclogs
+while true; do
+    cat "${path}" | while read line; do
+        first_word=$(echo -n "${line}" | cut -d' ' -f1)
+
+        # Read "bot:" line, start bot screen session from it if not yet existing,
+        # set up irclogs dir if not yet existing.
+        if [ "${first_word}" = "bot:" ]; then
+            session_name=$(echo -n "${line}" | cut -d' ' -f2)
+            bot_name=$(echo -n "${line}" | cut -d' ' -f3)
+            channel_name=$(echo -n "${line}" | cut -d' ' -f4)
+            server_name=$(echo -n "${line}" | cut -d' ' -f5)
+            set +e
+            screen -S "${session_name}" -Q select . > /dev/null
+            start_screen=$?
+            set -e
+            if [ "${start_screen}" -eq "1" ]; then
+                cd ~/plomlombot-irc
+                screen -d -m -S "${session_name}" ./run.sh -n "${bot_name}" -s "${server_name}" "${channel_name}"
+            fi
+            md5_server=$(echo -n "${server_name}" | md5sum | cut -d' ' -f1)
+            md5_channel=$(echo -n "${channel_name" | md5sum | cut -d' ' -f1)
+            logs_dir="${db_dir}/${md5_server}/${md5_channel}/logs"
+            # FIXME: Note the trouble we will have if we have the same channel
+            # name on different servers …
+            ln -sf "${logs_dir}" "${irclogs_dir}/${channel_name}"
+
+        # If "key:" line, encrypt old raw logs to that GPG key.
+        elif [ "${first_word}" = "gpg_key": ]; then
+            key=$(echo -n "${line}" | cut -d' ' -f2)
+            cd ~/plomlombot_db
+            find . -path '*/*/raw_logs/*.txt' -mtime +1 -type f -exec gpg --recipient "${key}" --trust-model always --encrypt {} \; -exec rm {} \;
+        fi
+
+    done
+    sleep 1
+done