Make miscellanious improvements to rowbot for SASL

This commit is contained in:
Nick Chambers 2021-11-14 19:56:48 -06:00
parent fa17f37485
commit 3a13fda6fa
1 changed files with 24 additions and 12 deletions

36
rowbot
View File

@ -513,7 +513,7 @@ on_sys_after_999_annoyatron900() {
on_sys_register_999_annoyatron900() {
while true; do
read -rt 10 </dev/zero
KILL -USR1 "$$"
kill -USR1 "$$"
done &
alarm_pid=$!
@ -531,7 +531,7 @@ on_sys_exit_997_annoyatron900() {
###
# register with the server
/###
###
# not a doomsday device™
welcomeinator() {
@ -574,13 +574,16 @@ welcomeinator() {
fi
;;
delta)
# FIXME: caps should be parsed into associative arrays
local avail_cap cap caps=( ) req_caps=( ) found_sasl=0
IFS=, read -ra caps <<< "${config[caps]}"
for cap in "${caps[@]}"; do
cap=${cap%%=*}
for avail_cap in "${avail_caps[@]}"; do
if [[ $cap = "$avail_cap" || $cap = "$avail_cap"=* ]]; then
avail_cap=${avail_cap%%=*}
if [[ ${cap^^} = "${avail_cap^^}" ]]; then
if [[ $cap = sasl ]]; then
found_sasl=1
fi
@ -599,11 +602,12 @@ welcomeinator() {
if (( ${#req_caps[@]} )); then
log_debug "requesting the following capabilities: %s" "${req_caps[*]}"
net_send "CAP REQ :%s" "${req_caps[*]}"
# net_send "CAP REQ :%s" "${req_caps[*]}"
cap req "${req_caps[@]}"
synergizing=1
else
log_debug "no desired capabilities are available."
reg_state=registered
welcome_phase=registered
fi
;;
sasl)
@ -611,14 +615,14 @@ welcomeinator() {
;;
registered)
if [[ -v config[caps] ]]; then
net_send "CAP END"
cap end
fi
synergizing=1
esac
done
log_trace "ending welcomeinator state is %s" "$reg_state"
log_trace "ending welcomeinator state is %s" "$welcome_phase"
}
on_sys_first_003_welcome() {
@ -629,7 +633,7 @@ on_sys_first_003_welcome() {
get_option realname rowbot
get_option sasl-method
reg_state=begin
welcome_phase=begin
log_debug "beginning registration process."
welcomeinator
@ -659,15 +663,15 @@ on_msg_CAP_welcome() {
case ${msg_args[1]} in
LS)
read -ra avail_caps <<< "${msg_args[-1]}"
reg_state=auth
welcome_phase=beta
;;
ACK)
# This is a a false positive.
# shellcheck disable=SC2102
if [[ -v config[sasl-method] ]]; then
reg_state=sasl
welcome_phase=sasl
else
reg_state=registered
welcome_phase=registered
fi
esac
@ -717,6 +721,10 @@ irc_on_CAP() {
case ${msg_args[1]^^} in
LS)
log_debug "available server capabilities are: %s" "${msg_args[-1]}"
;;
END)
log_debug "capability negotiation is finished."
;;
esac
}
@ -911,6 +919,10 @@ irc_cap() {
ls)
net_send "CAP LS %d" "${2-302}"
;;
req)
shift
net_send "CAP REQ :%s" "$*"
;;
esac
}