home · contact · privacy
60b0d9c6f559bab6d9ecdc2e5177202992b16d5f
[config] / all_new_2018 / user_scripts / plomlombot_daemon.sh
1 #!/bin/sh
2 set -e
3
4 # Repeatedly parse config file for GPG key and bot screen configs.
5 path=~/.plomlombot
6 db_dir="${HOME}/plomlombot_db"
7 irclogs_dir=/var/www/html/irclogs
8 while true; do
9     cat "${path}" | while read line; do
10         first_word=$(echo -n "${line}" | cut -d' ' -f1)
11
12         # Read "bot:" line, start bot screen session from it if not yet existing,
13         # set up irclogs dir if not yet existing.
14         if [ "${first_word}" = "bot:" ]; then
15             session_name=$(echo -n "${line}" | cut -d' ' -f2)
16             bot_name=$(echo -n "${line}" | cut -d' ' -f3)
17             channel_name=$(echo -n "${line}" | cut -d' ' -f4)
18             server_name=$(echo -n "${line}" | cut -d' ' -f5)
19             set +e
20             screen -S "${session_name}" -Q select . > /dev/null
21             start_screen=$?
22             set -e
23             if [ "${start_screen}" -eq "1" ]; then
24                 cd ~/plomlombot-irc
25                 screen -d -m -S "${session_name}" ./run.sh -n "${bot_name}" -s "${server_name}" "${channel_name}"
26             fi
27             md5_server=$(echo -n "${server_name}" | md5sum | cut -d' ' -f1)
28             md5_channel=$(echo -n "${channel_name" | md5sum | cut -d' ' -f1)
29             logs_dir="${db_dir}/${md5_server}/${md5_channel}/logs"
30             # FIXME: Note the trouble we will have if we have the same channel
31             # name on different servers …
32             ln -sf "${logs_dir}" "${irclogs_dir}/${channel_name}"
33
34         # If "key:" line, encrypt old raw logs to that GPG key.
35         elif [ "${first_word}" = "gpg_key": ]; then
36             key=$(echo -n "${line}" | cut -d' ' -f2)
37             cd ~/plomlombot_db
38             find . -path '*/*/raw_logs/*.txt' -mtime +1 -type f -exec gpg --recipient "${key}" --trust-model always --encrypt {} \; -exec rm {} \;
39         fi
40
41     done
42     sleep 1
43 done