mirror of
https://github.com/znc/znc.git
synced 2026-07-05 17:31:06 +02:00
Add CModInfo::SupportsType(EModuleType) and supply a module type with CModules::LoadModule
This would allow a module support multiple module types but CModule's do not support this currently
This commit is contained in:
+1
-1
@@ -741,7 +741,7 @@ class CAdminMod : public CModule {
|
||||
|
||||
CModule *pMod = (pUser)->GetModules().FindModule(sModName);
|
||||
if (!pMod) {
|
||||
if (!(pUser)->GetModules().LoadModule(sModName, sArgs, pUser, sModRet)) {
|
||||
if (!(pUser)->GetModules().LoadModule(sModName, sArgs, ModuleTypeUser, pUser, sModRet)) {
|
||||
PutModule("Unable to load module [" + sModName + "] [" + sModRet + "]");
|
||||
} else {
|
||||
PutModule("Loaded module [" + sModName + "]");
|
||||
|
||||
+2
-2
@@ -75,8 +75,8 @@ public:
|
||||
}
|
||||
|
||||
virtual EModRet OnModuleLoading(const CString& sModName, const CString& sArgs,
|
||||
bool& bSuccess, CString& sRetMsg) {
|
||||
if (!GetUser()) {
|
||||
EModuleType eType, bool& bSuccess, CString& sRetMsg) {
|
||||
if (!GetUser() || eType != ModuleTypeUser) {
|
||||
return CONTINUE;
|
||||
}
|
||||
EModRet result = HALT;
|
||||
|
||||
@@ -127,7 +127,7 @@ public:
|
||||
}
|
||||
|
||||
virtual EModRet OnModuleLoading(const CString& sModName, const CString& sArgs,
|
||||
bool& bSuccess, CString& sRetMsg) {
|
||||
EModuleType eType, bool& bSuccess, CString& sRetMsg) {
|
||||
PyObject* pyFunc = PyObject_GetAttrString(m_PyZNCModule, "load_module");
|
||||
if (!pyFunc) {
|
||||
sRetMsg = GetPyExceptionStr();
|
||||
@@ -138,7 +138,7 @@ public:
|
||||
PyObject* pyRes = PyObject_CallFunction(pyFunc, const_cast<char*>("ssNNN"),
|
||||
sModName.c_str(),
|
||||
sArgs.c_str(),
|
||||
SWIG_NewInstanceObj(GetUser(), SWIG_TypeQuery("CUser*"), 0),
|
||||
(eType == ModuleTypeUser ? SWIG_NewInstanceObj(GetUser(), SWIG_TypeQuery("CUser*"), 0) : NULL),
|
||||
CPyRetString::wrap(sRetMsg),
|
||||
SWIG_NewInstanceObj(reinterpret_cast<CModule*>(this), SWIG_TypeQuery("CModule*"), 0));
|
||||
if (!pyRes) {
|
||||
|
||||
@@ -61,4 +61,4 @@ void OnServerCapResult(const CString& sCap, bool bSuccess)
|
||||
EModRet OnTimerAutoJoin(CChan& Channel)
|
||||
bool OnEmbeddedWebRequest(CWebSock& WebSock, const CString& sPageName, CTemplate& Tmpl)=false
|
||||
|
||||
EModRet OnModuleLoading(const CString& sModName, const CString& sArgs, bool& bSuccess, CString& sRetMsg)
|
||||
EModRet OnModuleLoading(const CString& sModName, const CString& sArgs, EModuleType eType, bool& bSuccess, CString& sRetMsg)
|
||||
|
||||
@@ -115,7 +115,7 @@ public:
|
||||
virtual void OnServerCapResult(const CString& sCap, bool bSuccess);
|
||||
virtual EModRet OnTimerAutoJoin(CChan& Channel);
|
||||
bool OnEmbeddedWebRequest(CWebSock&, const CString&, CTemplate&);
|
||||
EModRet OnModuleLoading(const CString& sModName, const CString& sArgs, bool& bSuccess, CString& sRetMsg);
|
||||
EModRet OnModuleLoading(const CString& sModName, const CString& sArgs, EModuleType eType, bool& bSuccess, CString& sRetMsg);
|
||||
};
|
||||
|
||||
static inline CPyModule* AsPyModule(CModule* p) {
|
||||
|
||||
@@ -272,7 +272,7 @@ public:
|
||||
CString sArgs = WebSock.GetParam("modargs_" + sModName);
|
||||
|
||||
try {
|
||||
if (!pNewUser->GetModules().LoadModule(sModName, sArgs, pNewUser, sModRet)) {
|
||||
if (!pNewUser->GetModules().LoadModule(sModName, sArgs, ModuleTypeUser, pNewUser, sModRet)) {
|
||||
sModLoadError = "Unable to load module [" + sModName + "] [" + sModRet + "]";
|
||||
}
|
||||
} catch (...) {
|
||||
@@ -295,7 +295,7 @@ public:
|
||||
CString sModLoadError;
|
||||
|
||||
try {
|
||||
if (!pNewUser->GetModules().LoadModule(sModName, sArgs, pNewUser, sModRet)) {
|
||||
if (!pNewUser->GetModules().LoadModule(sModName, sArgs, ModuleTypeUser, pNewUser, sModRet)) {
|
||||
sModLoadError = "Unable to load module [" + sModName + "] [" + sModRet + "]";
|
||||
}
|
||||
} catch (...) {
|
||||
@@ -1071,7 +1071,7 @@ public:
|
||||
|
||||
CModule *pMod = CZNC::Get().GetModules().FindModule(sModName);
|
||||
if (!pMod) {
|
||||
if (!CZNC::Get().GetModules().LoadModule(sModName, sArgs, NULL, sModRet)) {
|
||||
if (!CZNC::Get().GetModules().LoadModule(sModName, sArgs, ModuleTypeGlobal, NULL, sModRet)) {
|
||||
sModLoadError = "Unable to load module [" + sModName + "] [" + sModRet + "]";
|
||||
}
|
||||
} else if (pMod->GetArgs() != sArgs) {
|
||||
|
||||
Reference in New Issue
Block a user