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/jitsi.nix>
|
||||
<stockholm/lass/2configs/fysiirc.nix>
|
||||
<stockholm/lass/2configs/bgt-bot>
|
||||
{
|
||||
services.tor = {
|
||||
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