mirror of
https://github.com/anope/anope.git
synced 2026-06-28 03:56:38 +02:00
Update ircd-hybrid protocol module
* Add METADATA command handler which currently only allows to modify a client's certificate fingerprint * Minor reformatting and style inconsistency fixes
This commit is contained in:
+78
-24
@@ -372,6 +372,21 @@ struct IRCDMessageCapab : Message::Capab
|
||||
}
|
||||
};
|
||||
|
||||
struct IRCDMessageCertFP: IRCDMessage
|
||||
{
|
||||
IRCDMessageCertFP(Module *creator) : IRCDMessage(creator, "CERTFP", 1) { SetFlag(IRCDMESSAGE_REQUIRE_USER); }
|
||||
|
||||
/* 0 */
|
||||
/* :0MCAAAAAB CERTFP 4C62287BA6776A89CD4F8FF10A62FFB35E79319F51AF6C62C674984974FCCB1D */
|
||||
void Run(MessageSource &source, const std::vector<Anope::string> ¶ms) anope_override
|
||||
{
|
||||
User *u = source.GetUser();
|
||||
|
||||
u->fingerprint = params[0];
|
||||
FOREACH_MOD(OnFingerprint, (u));
|
||||
}
|
||||
};
|
||||
|
||||
struct IRCDMessageEOB : IRCDMessage
|
||||
{
|
||||
IRCDMessageEOB(Module *creator) : IRCDMessage(creator, "EOB", 0) { SetFlag(IRCDMESSAGE_REQUIRE_SERVER); }
|
||||
@@ -398,6 +413,32 @@ struct IRCDMessageJoin : Message::Join
|
||||
}
|
||||
};
|
||||
|
||||
struct IRCDMessageMetadata : IRCDMessage
|
||||
{
|
||||
IRCDMessageMetadata(Module *creator) : IRCDMessage(creator, "METADATA", 3) { SetFlag(IRCDMESSAGE_REQUIRE_SERVER); }
|
||||
|
||||
/* 0 1 2 3 */
|
||||
/* :0MC METADATA client 0MCAAAAAB certfp :4C62287BA6776A89CD4F8FF10A62FFB35E79319F51AF6C62C674984974FCCB1D */
|
||||
void Run(MessageSource &source, const std::vector<Anope::string> ¶ms) anope_override
|
||||
{
|
||||
if (params[0].equals_cs("client"))
|
||||
{
|
||||
User *u = User::Find(params[1]);
|
||||
if (!u)
|
||||
{
|
||||
Log(LOG_DEBUG) << "METADATA for nonexistent user " << params[1];
|
||||
return;
|
||||
}
|
||||
|
||||
if (params[2].equals_cs("certfp"))
|
||||
{
|
||||
u->fingerprint = params[3];
|
||||
FOREACH_MOD(OnFingerprint, (u));
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
struct IRCDMessageMLock : IRCDMessage
|
||||
{
|
||||
IRCDMessageMLock(Module *creator) : IRCDMessage(creator, "MLOCK", 4) { SetFlag(IRCDMESSAGE_REQUIRE_SERVER); }
|
||||
@@ -629,21 +670,6 @@ struct IRCDMessageUID : IRCDMessage
|
||||
}
|
||||
};
|
||||
|
||||
struct IRCDMessageCertFP: IRCDMessage
|
||||
{
|
||||
IRCDMessageCertFP(Module *creator) : IRCDMessage(creator, "CERTFP", 1) { SetFlag(IRCDMESSAGE_REQUIRE_USER); }
|
||||
|
||||
/* 0 */
|
||||
/* :0MCAAAAAB CERTFP 4C62287BA6776A89CD4F8FF10A62FFB35E79319F51AF6C62C674984974FCCB1D */
|
||||
void Run(MessageSource &source, const std::vector<Anope::string> ¶ms) anope_override
|
||||
{
|
||||
User *u = source.GetUser();
|
||||
|
||||
u->fingerprint = params[0];
|
||||
FOREACH_MOD(OnFingerprint, (u));
|
||||
}
|
||||
};
|
||||
|
||||
class ProtoHybrid : public Module
|
||||
{
|
||||
HybridProto ircd_proto;
|
||||
@@ -671,8 +697,10 @@ class ProtoHybrid : public Module
|
||||
/* Our message handlers */
|
||||
IRCDMessageBMask message_bmask;
|
||||
IRCDMessageCapab message_capab;
|
||||
IRCDMessageCertFP message_certfp;
|
||||
IRCDMessageEOB message_eob;
|
||||
IRCDMessageJoin message_join;
|
||||
IRCDMessageMetadata message_metadata;
|
||||
IRCDMessageMLock message_mlock;
|
||||
IRCDMessageNick message_nick;
|
||||
IRCDMessagePass message_pass;
|
||||
@@ -684,7 +712,6 @@ class ProtoHybrid : public Module
|
||||
IRCDMessageTBurst message_tburst;
|
||||
IRCDMessageTMode message_tmode;
|
||||
IRCDMessageUID message_uid;
|
||||
IRCDMessageCertFP message_certfp;
|
||||
|
||||
bool use_server_side_mlock;
|
||||
|
||||
@@ -749,14 +776,41 @@ class ProtoHybrid : public Module
|
||||
public:
|
||||
ProtoHybrid(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PROTOCOL | VENDOR),
|
||||
ircd_proto(this),
|
||||
message_away(this), message_error(this), message_invite(this), message_kick(this),
|
||||
message_kill(this), message_mode(this), message_motd(this), message_notice(this), message_part(this),
|
||||
message_ping(this), message_privmsg(this), message_quit(this), message_squit(this), message_stats(this),
|
||||
message_time(this), message_topic(this), message_version(this), message_whois(this),
|
||||
message_bmask(this), message_capab(this), message_eob(this), message_join(this), message_mlock(this),
|
||||
message_nick(this), message_pass(this), message_pong(this), message_server(this), message_sid(this),
|
||||
message_sjoin(this), message_svsmode(this), message_tburst(this), message_tmode(this), message_uid(this),
|
||||
message_certfp(this)
|
||||
message_away(this),
|
||||
message_error(this),
|
||||
message_invite(this),
|
||||
message_kick(this),
|
||||
message_kill(this),
|
||||
message_mode(this),
|
||||
message_motd(this),
|
||||
message_notice(this),
|
||||
message_part(this),
|
||||
message_ping(this),
|
||||
message_privmsg(this),
|
||||
message_quit(this),
|
||||
message_squit(this),
|
||||
message_stats(this),
|
||||
message_time(this),
|
||||
message_topic(this),
|
||||
message_version(this),
|
||||
message_whois(this),
|
||||
message_bmask(this),
|
||||
message_capab(this),
|
||||
message_certfp(this),
|
||||
message_eob(this),
|
||||
message_join(this),
|
||||
message_metadata(this),
|
||||
message_mlock(this),
|
||||
message_nick(this),
|
||||
message_pass(this),
|
||||
message_pong(this),
|
||||
message_server(this),
|
||||
message_sid(this),
|
||||
message_sjoin(this),
|
||||
message_svsmode(this),
|
||||
message_tburst(this),
|
||||
message_tmode(this),
|
||||
message_uid(this)
|
||||
{
|
||||
if (Config->GetModule(this))
|
||||
this->AddModes();
|
||||
|
||||
Reference in New Issue
Block a user