This commit is contained in:
Shivaram Lingamneni 2019-05-22 22:16:01 -04:00
parent 678c8606b6
commit dcb3487566
3 changed files with 19 additions and 1 deletions

View File

@ -171,6 +171,12 @@ CAPDEFS = [
url="https://wiki.znc.in/Playback",
standard="ZNC vendor",
),
CapDef(
identifier="Nope",
name="oragono.io/nope",
url="https://oragono.io/nope",
standard="Oragono vendor",
),
]
def validate_defs():

View File

@ -7,7 +7,7 @@ package caps
const (
// number of recognized capabilities:
numCapabs = 26
numCapabs = 27
// length of the uint64 array that represents the bitset:
bitsetLen = 1
)
@ -116,6 +116,10 @@ const (
// ZNCPlayback is the ZNC vendor capability named "znc.in/playback":
// https://wiki.znc.in/Playback
ZNCPlayback Capability = iota
// Nope is the Oragono vendor capability named "oragono.io/nope":
// https://oragono.io/nope
Nope Capability = iota
)
// `capabilityNames[capab]` is the string name of the capability `capab`
@ -147,5 +151,6 @@ var (
"znc.in/self-message",
"draft/event-playback",
"znc.in/playback",
"oragono.io/nope",
}
)

View File

@ -574,6 +574,13 @@ func capHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Respo
}
}
// #511: oragono.io/nope is a fake cap to trap bad clients who blindly request
// every offered capability:
if toAdd.Has(caps.Nope) {
client.Quit(client.t("Requesting the oragono.io/nope CAP is forbidden"), rb.session)
return true
}
// update maxlenrest, just in case they altered the maxline cap
rb.session.SetMaxlenRest()