Add sasl support

This commit is contained in:
Tyler Beckman 2024-06-14 21:57:11 -06:00
parent 79d417f0fb
commit fc5cd752dc
Signed by untrusted user who does not match committer: Ty
GPG key ID: 2813440C772555A4
9 changed files with 1382 additions and 612 deletions

643
dist/doip.core.js vendored

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

658
dist/doip.fetchers.js vendored

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -35,7 +35,8 @@ export const opts = {
privateKey: null privateKey: null
}, },
irc: { irc: {
nick: null nick: null,
sasl: []
}, },
matrix: { matrix: {
instance: null, instance: null,

View file

@ -59,12 +59,25 @@ export async function fn (data, opts) {
} }
try { try {
// Add sasl-related config if the server matches
const matchedSaslConfig = opts.claims.irc.sasl.find(saslConfig => data.domain.match(new RegExp(saslConfig.domainRegex)) !== null);
const saslOptions = matchedSaslConfig
? {
sasl: true,
userName: matchedSaslConfig.username,
password: matchedSaslConfig.password
}
: {
sasl: false
}
const client = new irc.Client(data.domain, opts.claims.irc.nick, { const client = new irc.Client(data.domain, opts.claims.irc.nick, {
port: 6697, port: 6697,
secure: true, secure: true,
channels: [], channels: [],
showErrors: false, showErrors: false,
debug: false debug: false,
...saslOptions
}) })
const reKey = /[a-zA-Z0-9\-_]+\s+:\s((?:openpgp4fpr|aspe):.*)/ const reKey = /[a-zA-Z0-9\-_]+\s+:\s((?:openpgp4fpr|aspe):.*)/
const reEnd = /End\sof\s.*\staxonomy./ const reEnd = /End\sof\s.*\staxonomy./

View file

@ -130,6 +130,7 @@ import { PublicKeyType, PublicKeyEncoding, PublicKeyFetchMethod, ProxyPolicy, Cl
* Config related to the verification of IRC claims * Config related to the verification of IRC claims
* @typedef {object} IrcClaimVerificationConfig * @typedef {object} IrcClaimVerificationConfig
* @property {string} nick - The nick that the library uses to connect to the IRC server * @property {string} nick - The nick that the library uses to connect to the IRC server
* @property {{ domainRegex: string; username: string; password: string; }[]} sasl - An array of possible SASL logins
*/ */
/** /**