mirror of
https://github.com/znc/znc.git
synced 2026-08-06 17:03:14 +02:00
Modulefy core server-dependent caps
This commit is contained in:
@@ -764,17 +764,6 @@ CClient::CoreCaps() {
|
||||
}}},
|
||||
{"cap-notify",
|
||||
{false, [](CClient* pClient, bool bVal) { pClient->m_bCapNotify = bVal; }}},
|
||||
{"away-notify",
|
||||
{true, [](CClient* pClient, bool bVal) { pClient->m_bAwayNotify = bVal; }}},
|
||||
{"account-notify",
|
||||
{true, [](CClient* pClient, bool bVal) { pClient->m_bAccountNotify = bVal; }}},
|
||||
{"account-tag",
|
||||
{true, [](CClient* pClient, bool bVal) {
|
||||
pClient->m_bAccountTag = bVal;
|
||||
pClient->SetTagSupport("account", bVal);
|
||||
}}},
|
||||
{"extended-join",
|
||||
{true, [](CClient* pClient, bool bVal) { pClient->m_bExtendedJoin = bVal; }}},
|
||||
};
|
||||
|
||||
// For compatibility with older clients
|
||||
|
||||
@@ -379,11 +379,7 @@ bool CIRCSock::OnCapabilityMessage(CMessage& Message) {
|
||||
std::map<CString, std::function<void(bool bVal)>> mSupportedCaps = {
|
||||
{"multi-prefix", [this](bool bVal) { m_bNamesx = bVal; }},
|
||||
{"userhost-in-names", [this](bool bVal) { m_bUHNames = bVal; }},
|
||||
{"away-notify", [this](bool bVal) { m_bAwayNotify = bVal; }},
|
||||
{"account-notify", [this](bool bVal) { m_bAccountNotify = bVal; }},
|
||||
{"account-tag", [this](bool bVal) { m_bAccountTag = bVal; }},
|
||||
{"cap-notify", [](bool bVal) {}},
|
||||
{"extended-join", [this](bool bVal) { m_bExtendedJoin = bVal; }},
|
||||
{"server-time", [this](bool bVal) { m_bServerTime = bVal; }},
|
||||
{"znc.in/server-time-iso",
|
||||
[this](bool bVal) { m_bServerTime = bVal; }},
|
||||
|
||||
@@ -1621,9 +1621,12 @@ bool CModules::OnServerCapAvailable(const CString& sCap, const CString& sValue)
|
||||
pMod->SetClient(m_pClient);
|
||||
if (m_pUser) {
|
||||
CUser* pOldUser = pMod->GetUser();
|
||||
CIRCNetwork* pOldNetwork = pMod->GetNetwork();
|
||||
pMod->SetUser(m_pUser);
|
||||
pMod->SetNetwork(m_pNetwork);
|
||||
bResult |= pMod->OnServerCap302Available(sCap, sValue);
|
||||
pMod->SetUser(pOldUser);
|
||||
pMod->SetNetwork(pOldNetwork);
|
||||
} else {
|
||||
// WTF? Is that possible?
|
||||
bResult |= pMod->OnServerCap302Available(sCap, sValue);
|
||||
@@ -1691,9 +1694,12 @@ bool CModules::IsClientCapSupported(CClient* pClient, const CString& sCap,
|
||||
pMod->SetClient(m_pClient);
|
||||
if (m_pUser) {
|
||||
CUser* pOldUser = pMod->GetUser();
|
||||
CIRCNetwork* pOldNetwork = pMod->GetNetwork();
|
||||
pMod->SetUser(m_pUser);
|
||||
pMod->SetNetwork(m_pNetwork);
|
||||
bResult |= pMod->IsClientCapSupported(pClient, sCap, bState);
|
||||
pMod->SetUser(pOldUser);
|
||||
pMod->SetNetwork(pOldNetwork);
|
||||
} else {
|
||||
// WTF? Is that possible?
|
||||
bResult |= pMod->IsClientCapSupported(pClient, sCap, bState);
|
||||
@@ -1998,6 +2004,7 @@ void CModules::GetDefaultMods(set<CModInfo>& ssMods,
|
||||
const map<CString, CModInfo::EModuleType> ns = {
|
||||
{"chansaver", CModInfo::UserModule},
|
||||
{"controlpanel", CModInfo::UserModule},
|
||||
{"corecaps", CModInfo::GlobalModule},
|
||||
{"simple_away", CModInfo::NetworkModule},
|
||||
{"webadmin", CModInfo::GlobalModule}};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user