m 2 irc-token: init
This commit is contained in:
parent
bc2b56baaf
commit
5f103b3f25
62
makefu/2configs/elchos/irc-token.nix
Normal file
62
makefu/2configs/elchos/irc-token.nix
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
{pkgs, ...}:
|
||||||
|
with import <stockholm/lib>;
|
||||||
|
let
|
||||||
|
secret = (import <secrets/elchos-token.nix>);
|
||||||
|
in {
|
||||||
|
systemd.services.elchos-irctoken = {
|
||||||
|
startAt = "*:0/30";
|
||||||
|
serviceConfig = {
|
||||||
|
RuntimeMaxSec = "20";
|
||||||
|
};
|
||||||
|
script = ''
|
||||||
|
set -euf
|
||||||
|
now=$(date -u +%Y-%m-%dT%H:%M)
|
||||||
|
sec=$(echo -n "${secret}$now" | md5sum | cut -d\ -f1)
|
||||||
|
message="The secret valid for 30 minutes is $sec"
|
||||||
|
echo "token for $now (UTC) is $sec"
|
||||||
|
LOGNAME=sec-announcer
|
||||||
|
HOSTNAME=$(${pkgs.systemd}/bin/hostnamectl --static)
|
||||||
|
IRC_SERVER=irc.freenode.net
|
||||||
|
IRC_PORT=6667
|
||||||
|
IRC_NICK=$HOSTNAME-$$
|
||||||
|
IRC_CHANNEL='#eloop'
|
||||||
|
|
||||||
|
export IRC_CHANNEL # for privmsg_cat
|
||||||
|
|
||||||
|
echo2() { echo "$*"; echo "$*" >&2; }
|
||||||
|
|
||||||
|
privmsg_cat() { ${pkgs.gawk}/bin/awk '{ print "PRIVMSG "ENVIRON["IRC_CHANNEL"]" :"$0 }'; }
|
||||||
|
|
||||||
|
tmpdir="$(mktemp -d irc-announce_XXXXXXXX)"
|
||||||
|
cd "$tmpdir"
|
||||||
|
mkfifo ircin
|
||||||
|
trap "
|
||||||
|
rm ircin
|
||||||
|
cd '$OLDPWD'
|
||||||
|
rmdir '$tmpdir'
|
||||||
|
trap - EXIT INT QUIT
|
||||||
|
" EXIT INT QUIT
|
||||||
|
|
||||||
|
{
|
||||||
|
echo2 "USER $LOGNAME 0 * :$LOGNAME@$HOSTNAME"
|
||||||
|
echo2 "NICK $IRC_NICK"
|
||||||
|
|
||||||
|
# wait for MODE message
|
||||||
|
${pkgs.gnused}/bin/sed -un '/^:[^ ]* MODE /q'
|
||||||
|
|
||||||
|
echo2 "JOIN $IRC_CHANNEL"
|
||||||
|
|
||||||
|
printf '%s' "$message" \
|
||||||
|
| privmsg_cat
|
||||||
|
|
||||||
|
echo2 "PART $IRC_CHANNEL"
|
||||||
|
|
||||||
|
# wait for PART confirmation
|
||||||
|
sed -un '/:'"$IRC_NICK"'![^ ]* PART /q'
|
||||||
|
|
||||||
|
echo2 'QUIT :Gone to have lunch'
|
||||||
|
} < ircin \
|
||||||
|
| ${pkgs.netcat}/bin/netcat "$IRC_SERVER" "$IRC_PORT" |tee -a ircin
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user