l prism.r: add binaergewitter bot
This commit is contained in:
parent
88a61c2611
commit
4d33f2ebea
@ -124,6 +124,7 @@ with import <stockholm/lib>;
|
|||||||
<stockholm/lass/2configs/container-networking.nix>
|
<stockholm/lass/2configs/container-networking.nix>
|
||||||
<stockholm/lass/2configs/jitsi.nix>
|
<stockholm/lass/2configs/jitsi.nix>
|
||||||
<stockholm/lass/2configs/fysiirc.nix>
|
<stockholm/lass/2configs/fysiirc.nix>
|
||||||
|
<stockholm/lass/2configs/bgt-bot>
|
||||||
{
|
{
|
||||||
services.tor = {
|
services.tor = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
57
lass/2configs/bgt-bot/bgt-check.sh
Normal file
57
lass/2configs/bgt-bot/bgt-check.sh
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# needs in path:
|
||||||
|
# curl gnugrep jq
|
||||||
|
# creates and manages $PWD/state
|
||||||
|
set -xeuf
|
||||||
|
|
||||||
|
send_reaktor(){
|
||||||
|
# usage: send_reaktor "text"
|
||||||
|
echo "send_reaktor: $1"
|
||||||
|
curl -fsS "http://localhost:$REAKTOR_PORT" \
|
||||||
|
-H content-type:application/json \
|
||||||
|
-d "$(jq -n \
|
||||||
|
--arg text "$1" \
|
||||||
|
--arg channel "$IRC_CHANNEL" \
|
||||||
|
'{
|
||||||
|
command:"PRIVMSG",
|
||||||
|
params:[$channel,$text]
|
||||||
|
}'
|
||||||
|
)"
|
||||||
|
}
|
||||||
|
|
||||||
|
live=$(shuf -n1 <<EOF
|
||||||
|
Binärgewitter Liveshow hat begonnen! http://stream.radiotux.de:8000/binaergewitter.mp3
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
|
||||||
|
offline=$(shuf -n1 <<EOF
|
||||||
|
Live stream vorbei
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
error=$(shuf -n1 <<EOF
|
||||||
|
something went wrong
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
|
||||||
|
if curl -Ss http://stream.radiotux.de:8000 | grep -q 'Mount Point /binaergewitter'; then
|
||||||
|
state='live'
|
||||||
|
else
|
||||||
|
state='offline'
|
||||||
|
fi
|
||||||
|
prevstate=$(cat state ||:)
|
||||||
|
|
||||||
|
if test "$state" == "$(cat state)";then
|
||||||
|
#echo "current and last state is the same ($state), doing nothing"
|
||||||
|
:
|
||||||
|
else
|
||||||
|
echo "API state and last state differ ( '$state' != '$prevstate')"
|
||||||
|
if test "$state" == 'live';then
|
||||||
|
send_reaktor "$live"
|
||||||
|
elif test "$state" == 'offline';then
|
||||||
|
send_reaktor "$offline"
|
||||||
|
else
|
||||||
|
send_reaktor "$error"
|
||||||
|
fi
|
||||||
|
echo 'updating state'
|
||||||
|
printf "%s" "$state" > state
|
||||||
|
fi
|
44
lass/2configs/bgt-bot/default.nix
Normal file
44
lass/2configs/bgt-bot/default.nix
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
|
||||||
|
bot_port = "7654";
|
||||||
|
irc_channel = "#binaergewitter";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
krebs.reaktor2.bgt-announce = {
|
||||||
|
hostname = "irc.libera.chat";
|
||||||
|
port = "6697";
|
||||||
|
nick = "bgt-announce";
|
||||||
|
API.listen = "inet://127.0.0.1:${bot_port}";
|
||||||
|
plugins = [
|
||||||
|
{
|
||||||
|
plugin = "register";
|
||||||
|
config = {
|
||||||
|
channels = [
|
||||||
|
irc_channel
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
systemd.services.check_bgt_show = {
|
||||||
|
startAt = "*:0/5";
|
||||||
|
environment = {
|
||||||
|
IRC_CHANNEL = irc_channel;
|
||||||
|
REAKTOR_PORT = bot_port;
|
||||||
|
};
|
||||||
|
path = with pkgs; [
|
||||||
|
curl
|
||||||
|
gnugrep
|
||||||
|
jq
|
||||||
|
];
|
||||||
|
script = builtins.readFile ./bgt-check.sh;
|
||||||
|
serviceConfig = {
|
||||||
|
DynamicUser = true;
|
||||||
|
StateDirectory = "bgt-announce";
|
||||||
|
WorkingDirectory = "/var/lib/bgt-announce";
|
||||||
|
PrivateTmp = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user