irc-announce: add tls flag

This commit is contained in:
lassulus 2021-09-05 22:51:37 +02:00
parent aaae1b2f5b
commit b471ff4191
4 changed files with 31 additions and 6 deletions

View File

@ -9,6 +9,7 @@ with import <stockholm/lib>;
${shell.escape (toString cfg.irc.port)} \ ${shell.escape (toString cfg.irc.port)} \
${shell.escape cfg.irc.nick} \ ${shell.escape cfg.irc.nick} \
${shell.escape cfg.irc.channel} \ ${shell.escape cfg.irc.channel} \
${escapeShellArg cfg.irc.tls} \
"$message" "$message"
''; '';
default-get-message = pkgs.writeDash "announce-activation-get-message" '' default-get-message = pkgs.writeDash "announce-activation-get-message" ''
@ -50,6 +51,10 @@ in {
default = "irc.r"; default = "irc.r";
type = types.hostname; type = types.hostname;
}; };
tls = mkOption {
default = false;
type = types.bool;
};
}; };
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {

View File

@ -19,6 +19,14 @@ let
type = types.str; type = types.str;
default = "irc.hackint.org"; default = "irc.hackint.org";
}; };
port = mkOption {
type = types.int;
default = 6697;
};
tls = mkOption {
type = types.bool;
default = true;
};
message = mkOption { message = mkOption {
type = types.str; type = types.str;
default = "SSH Hidden Service at "; default = "SSH Hidden Service at ";
@ -53,10 +61,14 @@ let
echo "still waiting for ${hiddenServiceDir}/hostname" echo "still waiting for ${hiddenServiceDir}/hostname"
sleep 1 sleep 1
done done
${pkgs.untilport}/bin/untilport ${cfg.server} 6667 && \ ${pkgs.untilport}/bin/untilport ${escapeShellArg cfg.server} ${toString cfg.port}
${pkgs.irc-announce}/bin/irc-announce \ ${pkgs.irc-announce}/bin/irc-announce \
${cfg.server} 6667 ${config.krebs.build.host.name}-ssh \ ${escapeShellArg cfg.server} \
\${cfg.channel} \ ${toString cfg.port} \
"${config.krebs.build.host.name}-ssh" \
${escapeShellArg cfg.channel} \
${escapeShellArg cfg.tls} \
"${cfg.message}$(cat ${hiddenServiceDir}/hostname)" "${cfg.message}$(cat ${hiddenServiceDir}/hostname)"
''; '';
PrivateTmp = "true"; PrivateTmp = "true";

View File

@ -12,6 +12,7 @@ with import <stockholm/lib>;
, port ? 6667 , port ? 6667
, refs ? [] , refs ? []
, server , server
, tls ? false
, verbose ? false , verbose ? false
}: /* sh */ '' }: /* sh */ ''
#! /bin/sh #! /bin/sh
@ -39,6 +40,7 @@ with import <stockholm/lib>;
nick=${escapeShellArg nick} nick=${escapeShellArg nick}
channel=${escapeShellArg channel} channel=${escapeShellArg channel}
server=${escapeShellArg server} server=${escapeShellArg server}
tls=${escapeShellArg tls}
port=${toString port} port=${toString port}
host=$nick host=$nick
@ -114,6 +116,7 @@ with import <stockholm/lib>;
"$port" \ "$port" \
"$nick" \ "$nick" \
"$channel" \ "$channel" \
"tls" \
"$message" "$message"
fi fi
''; '';

View File

@ -17,7 +17,8 @@ pkgs.writeDashBin "irc-announce" ''
IRC_PORT=$2 IRC_PORT=$2
IRC_NICK=$3_$$ IRC_NICK=$3_$$
IRC_CHANNEL=$4 IRC_CHANNEL=$4
message=$5 IRC_TLS=$5
message=$6
export IRC_CHANNEL # for privmsg_cat export IRC_CHANNEL # for privmsg_cat
@ -34,6 +35,8 @@ pkgs.writeDashBin "irc-announce" ''
# privmsg_cat transforms stdin to a privmsg # privmsg_cat transforms stdin to a privmsg
privmsg_cat() { awk '{ print "PRIVMSG "ENVIRON["IRC_CHANNEL"]" :"$0 }'; } privmsg_cat() { awk '{ print "PRIVMSG "ENVIRON["IRC_CHANNEL"]" :"$0 }'; }
tls_flag() { if [ "$IRC_TLS" -eq 1 ]; then echo "-c"; fi }
# ircin is used to feed the output of netcat back to the "irc client" # ircin is used to feed the output of netcat back to the "irc client"
# so we can implement expect-like behavior with sed^_^ # so we can implement expect-like behavior with sed^_^
# XXX mkselfdestructingtmpfifo would be nice instead of this cruft # XXX mkselfdestructingtmpfifo would be nice instead of this cruft
@ -51,6 +54,8 @@ pkgs.writeDashBin "irc-announce" ''
echo2 "USER $LOGNAME 0 * :$LOGNAME@$(hostname)" echo2 "USER $LOGNAME 0 * :$LOGNAME@$(hostname)"
echo2 "NICK $IRC_NICK" echo2 "NICK $IRC_NICK"
awk 'match($0, /PING(.*)/, m) {print "PONG", m[1]; exit}'
# wait for MODE message # wait for MODE message
sed -n '/^:[^ ]* MODE /q' sed -n '/^:[^ ]* MODE /q'
@ -67,5 +72,5 @@ pkgs.writeDashBin "irc-announce" ''
echo2 'QUIT :Gone to have lunch' echo2 'QUIT :Gone to have lunch'
} < ircin \ } < ircin \
| nc "$IRC_SERVER" "$IRC_PORT" | tee -a ircin | nc $(tls_flag) "$IRC_SERVER" "$IRC_PORT" | tee -a ircin
'' ''