home · contact · privacy
Improve IRC bot/logs setup.
[config] / all_new_2018 / user_scripts / plomlombot_daemon.sh
index 60b0d9c6f559bab6d9ecdc2e5177202992b16d5f..b7d07093f138ee82e8802ce432776ba011f50b7c 100755 (executable)
@@ -6,38 +6,46 @@ 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)
+    if [ -f "${path}" ]; then
+        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}"
+           # 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 …
+                shortened_channel_name="${channel_name}"
+                first_char=$(echo -n "${channel_name}" | cut -c1)
+                if [ "${first_char}" = "#" ]; then
+                    shortened_channel_name=$(echo -n "${channel_name}" | cut -c2-)
+                fi
+               ln -sf "${logs_dir}" "${irclogs_dir}/${shortened_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
+           # If "key:" line, encrypt old raw logs to that GPG key.
+           elif [ "${first_word}" = "gpg_key": ]; then
+               key=$(echo -n "${line}" | cut -d' ' -f2)
+                mkdir -p ~/plomlombot_db
+               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
+        sleep 1
+    fi
 done