diff options
| author | 2021-03-30 14:09:40 +0100 | |
|---|---|---|
| committer | 2021-03-30 14:09:40 +0100 | |
| commit | 91ceed9d930430ee85dda152825b5ca2fbcfb593 (patch) | |
| tree | 14f26ed9fdda5d7c7d5636f98612f4047845bdf6 /src/modules | |
| parent | Merge branch 'insp3' into master. (diff) | |
| download | inspircd++-91ceed9d930430ee85dda152825b5ca2fbcfb593.tar.gz inspircd++-91ceed9d930430ee85dda152825b5ca2fbcfb593.tar.bz2 inspircd++-91ceed9d930430ee85dda152825b5ca2fbcfb593.zip | |
Add the ~ server tag prefix.
This is used for sending arbitrarily tagged messages between servers.
Diffstat (limited to 'src/modules')
| -rw-r--r-- | src/modules/m_spanningtree/main.cpp | 1 | ||||
| -rw-r--r-- | src/modules/m_spanningtree/main.h | 3 | ||||
| -rw-r--r-- | src/modules/m_spanningtree/tags.cpp | 20 | ||||
| -rw-r--r-- | src/modules/m_spanningtree/tags.h | 8 |
4 files changed, 32 insertions, 0 deletions
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index 19109ea35..f93d9fe27 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -54,6 +54,7 @@ ModuleSpanningTree::ModuleSpanningTree() , messageeventprov(this, "event/server-message") , synceventprov(this, "event/server-sync") , sslapi(this) + , servertags(this) , servicetag(this) , DNS(this, "DNS") , tagevprov(this) diff --git a/src/modules/m_spanningtree/main.h b/src/modules/m_spanningtree/main.h index 85361e5a7..0d4c32d72 100644 --- a/src/modules/m_spanningtree/main.h +++ b/src/modules/m_spanningtree/main.h @@ -109,6 +109,9 @@ class ModuleSpanningTree /** API for accessing user SSL certificates. */ UserCertificateAPI sslapi; + /** Tags for server to server messages. */ + ServerTags servertags; + /** Tag for marking services pseudoclients. */ ServiceTag servicetag; diff --git a/src/modules/m_spanningtree/tags.cpp b/src/modules/m_spanningtree/tags.cpp index e02235afb..9d0150fee 100644 --- a/src/modules/m_spanningtree/tags.cpp +++ b/src/modules/m_spanningtree/tags.cpp @@ -19,6 +19,26 @@ #include "main.h" +ServerTags::ServerTags(Module* Creator) + : ClientProtocol::MessageTagProvider(Creator) +{ +} + +ModResult ServerTags::OnProcessTag(User* user, const std::string& tagname, std::string& tagvalue) +{ + if (tagname[0] != '~' || tagname.length() < 2) + return MOD_RES_PASSTHRU; + + // Only allow tags from remote users. + return IS_LOCAL(user) ? MOD_RES_DENY : MOD_RES_ALLOW; +} + +bool ServerTags::ShouldSendTag(LocalUser* user, const ClientProtocol::MessageTagData& tagdata) +{ + // Server tags should never be sent to users. + return false; +} + ServiceTag::ServiceTag(Module* mod) : ClientProtocol::MessageTagProvider(mod) , ctctagcap(mod) diff --git a/src/modules/m_spanningtree/tags.h b/src/modules/m_spanningtree/tags.h index 1f402b597..c7118f319 100644 --- a/src/modules/m_spanningtree/tags.h +++ b/src/modules/m_spanningtree/tags.h @@ -21,6 +21,14 @@ #include "modules/ctctags.h" +class ServerTags : public ClientProtocol::MessageTagProvider +{ + public: + ServerTags(Module* Creator); + ModResult OnProcessTag(User* user, const std::string& tagname, std::string& tagvalue) override; + bool ShouldSendTag(LocalUser* user, const ClientProtocol::MessageTagData& tagdata) override; +}; + class ServiceTag : public ClientProtocol::MessageTagProvider { private: |
