From: Christian Heller <c.heller@plomlompom.de>
Date: Sat, 15 Dec 2018 17:20:28 +0000 (+0100)
Subject: Add setup for play.plomlompom.com
X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/decks/%7B%7Bdb.prefix%7D%7D/static/%27%29;%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20chunks.push%28escapeHTML%28span%5B2%5D%29%29;%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20chunks.push%28%27?a=commitdiff_plain;h=b20927bac93b8e612be6c66e86c440e4d682bcda;p=config

Add setup for play.plomlompom.com
---

diff --git a/all_new_2018/linkable_etc_files/play/etc/systemd/system/encrypt_chatlogs.service b/all_new_2018/linkable_etc_files/play/etc/systemd/system/encrypt_chatlogs.service
new file mode 100644
index 0000000..d0fcb9c
--- /dev/null
+++ b/all_new_2018/linkable_etc_files/play/etc/systemd/system/encrypt_chatlogs.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=Pull website repo
+[Service]
+Type=oneshot
+User=plom
+ExecStart=/bin/sh -c '~/encrypter.sh'
diff --git a/all_new_2018/linkable_etc_files/play/etc/systemd/system/timers.target.wants/encrypt_chatlogs.timer b/all_new_2018/linkable_etc_files/play/etc/systemd/system/timers.target.wants/encrypt_chatlogs.timer
new file mode 100644
index 0000000..79a6e1e
--- /dev/null
+++ b/all_new_2018/linkable_etc_files/play/etc/systemd/system/timers.target.wants/encrypt_chatlogs.timer
@@ -0,0 +1,8 @@
+[Unit]
+Description=Attempt encryption of old chatlogs once every minute.
+
+[Timer]
+OnCalendar=*-*-* *:*:00
+
+[Install]
+WantedBy=timers.target
\ No newline at end of file
diff --git a/all_new_2018/linkable_etc_files/web/etc/nginx/nginx.conf b/all_new_2018/linkable_etc_files/web/etc/nginx/nginx.conf
index aec7622..f1be9e6 100644
--- a/all_new_2018/linkable_etc_files/web/etc/nginx/nginx.conf
+++ b/all_new_2018/linkable_etc_files/web/etc/nginx/nginx.conf
@@ -16,7 +16,7 @@ http {
         text/html html htm shtml;
         text/css css;
         text/xml xml;
-        text/plain txt sh rst md;
+        text/plain txt sh rst md asc;
         application/xhtml+xml xhtml;
         application/pdf pdf;
         image/jpeg jpg jpeg;
diff --git a/all_new_2018/setup_play.sh b/all_new_2018/setup_play.sh
new file mode 100644
index 0000000..b5e801b
--- /dev/null
+++ b/all_new_2018/setup_play.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+set -e
+
+# Ensure we have a GPG target to encrypt to.
+if [ $# -lt 1 ]; then
+    echo "Need public key ID as argument."
+    false
+fi
+gpg_key="$1"
+
+config_tree_prefix="${HOME}/config/all_new_2018/"
+apt -y install weechat screen vim
+cp "${config_tree_prefix}user_files/encrypter.sh /home/plom/"
+chown plom:plom /home/plom/encrypter.sh
+cp "${config_tree_prefix}user_files/weechat-wrapper.sh /home/plom/"
+chown plom:plom /home/plom/weechat-wrapper.sh
+cp "${config_tree_prefix}user_files/weechatrc /home/plom/.weechatrc"
+chown plom:plom /home/plom/.weechatrc
+apt -y install screen gnupg dirmngr
+keyservers='sks-keyservers.net/ keys.gnupg.net'
+set +e
+while true; do
+    do_break=0
+    for keyserver in $(echo "${keyservers}"); do
+        su plom -c "gpg --no-tty --keyserver $keyserver --recv-key ${gpg_key}"
+        if [ $? -eq "0" ]; then
+            do_break=1
+            break
+        fi
+        echo "Attempt with keyserver ${keyserver} unsuccessful, trying other."
+    done
+    if [ "${do_break}" -eq "1" ]; then
+        break
+    fi
+done
+set -e
+echo "$gpg_key" > /home/plom/.encrypt_target
+chown plom:plom /home/plom/.encrypt_target
+# TODO: We may remove dirmngr here if only this script installed it.
+service encrypt_chatlogs.timer start
diff --git a/all_new_2018/setup_plomlombot.sh b/all_new_2018/setup_plomlombot.sh
index 135bbd2..3c9efa3 100755
--- a/all_new_2018/setup_plomlombot.sh
+++ b/all_new_2018/setup_plomlombot.sh
@@ -11,7 +11,7 @@ gpg_key="$1"
 config_tree_prefix="${HOME}/config/all_new_2018/"
 irclogs_dir=/var/www/html/irclogs
 irclogs_pw_dir=/var/www/irclogs_pw
-cp "${config_tree_prefix}"/user_scripts/plomlombot_daemon.sh /home/plom/
+cp "${config_tree_prefix}"/user_files/plomlombot_daemon.sh /home/plom/
 chown plom:plom /home/plom/plomlombot_daemon.sh
 apt -y install screen python3-venv gnupg dirmngr
 keyservers='sks-keyservers.net/ keys.gnupg.net'
diff --git a/all_new_2018/user_files/encrypter.sh b/all_new_2018/user_files/encrypter.sh
new file mode 100644
index 0000000..6a35954
--- /dev/null
+++ b/all_new_2018/user_files/encrypter.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -e
+
+gpg_key=$(cat ~/.encrypt_target)
diff --git a/all_new_2018/user_files/plomlombot_daemon.sh b/all_new_2018/user_files/plomlombot_daemon.sh
new file mode 100755
index 0000000..a74c24b
--- /dev/null
+++ b/all_new_2018/user_files/plomlombot_daemon.sh
@@ -0,0 +1,55 @@
+#!/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
+irclogs_pw_dir=/var/www/irclogs_pw
+while true; do
+    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)
+                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
+                server_name=$(echo -n "${line}" | cut -d' ' -f5)
+                login_user=$(echo -n "${line}" | cut -d' ' -f6)
+                login_pw=$(echo -n "${line}" | cut -d' ' -f7)
+                set +e
+                screen -S "${session_name}" -Q select . > /dev/null
+                start_screen=$?
+                set -e
+                if [ "${start_screen}" -eq "1" ]; then
+                cd ~/plomlombot-irc
+                LANG="en_US.UTF-8" screen -d -m -S "${session_name}" ./run.sh -r 604800 -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 -sfn "${logs_dir}" "${irclogs_dir}/${shortened_channel_name}"
+                echo "${login_user}":'{PLAIN}'"${login_pw}" > "${irclogs_pw_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)
+                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
+    fi
+done
diff --git a/all_new_2018/user_files/weechat-wrapper.sh b/all_new_2018/user_files/weechat-wrapper.sh
new file mode 100755
index 0000000..4625dd8
--- /dev/null
+++ b/all_new_2018/user_files/weechat-wrapper.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# Enforce ~/.weechatrc as sole persistent weechat config file.
+#~/config/bin/simplemail.sh ~/config/mails/weechat_restart_reminder
+rm -rf ~/.weechat/
+WEECHATCONF=`tr '\n' ';' < ~/.weechatrc`
+weechat -r "$WEECHATCONF"
+rm -rf ~/.weechat/
diff --git a/all_new_2018/user_files/weechatrc b/all_new_2018/user_files/weechatrc
new file mode 100644
index 0000000..ab30c17
--- /dev/null
+++ b/all_new_2018/user_files/weechatrc
@@ -0,0 +1,7 @@
+/set logger.file.path ~/weechatlogs
+/set logger.file.flush_delay 0
+/set logger.mask.irc "irc/$server/$channel.%Y-%m-%d.weechatlog"
+/set weechat.bar.status.items "[time],[buffer_last_number],[buffer_plugin],buffer_number+:+buffer_name+(buffer_modes)+{buffer_nicklist_count}+buffer_zoom+buffer_filter,[lag],[hotlist],completion,scroll,[otr]"
+/set weechat.color.chat_nick_colors "lightcyan"
+/server add freenode irc.freenode.net -nicks=plimlompom,plimlomp0m,pliml0mp0m -realname="foo bar" -autojoin=#plomlompomtest
+/connect freenode
diff --git a/all_new_2018/user_scripts/plomlombot_daemon.sh b/all_new_2018/user_scripts/plomlombot_daemon.sh
deleted file mode 100755
index a74c24b..0000000
--- a/all_new_2018/user_scripts/plomlombot_daemon.sh
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/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
-irclogs_pw_dir=/var/www/irclogs_pw
-while true; do
-    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)
-                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
-                server_name=$(echo -n "${line}" | cut -d' ' -f5)
-                login_user=$(echo -n "${line}" | cut -d' ' -f6)
-                login_pw=$(echo -n "${line}" | cut -d' ' -f7)
-                set +e
-                screen -S "${session_name}" -Q select . > /dev/null
-                start_screen=$?
-                set -e
-                if [ "${start_screen}" -eq "1" ]; then
-                cd ~/plomlombot-irc
-                LANG="en_US.UTF-8" screen -d -m -S "${session_name}" ./run.sh -r 604800 -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 -sfn "${logs_dir}" "${irclogs_dir}/${shortened_channel_name}"
-                echo "${login_user}":'{PLAIN}'"${login_pw}" > "${irclogs_pw_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)
-                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
-    fi
-done