mirror of
https://github.com/znc/znc.git
synced 2026-08-06 17:03:14 +02:00
Merge pull request #918 from jpnurmi/weffc++
Fix warnings of -Weffc++ [-Weffc++] (#270)
This commit is contained in:
+26
-23
@@ -49,16 +49,6 @@ class CModInfo;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
typedef void* ModHandle;
|
||||
|
||||
template<class M> void TModInfo(CModInfo& Info) {}
|
||||
|
||||
template<class M> CModule* TModLoad(ModHandle p, CUser* pUser,
|
||||
CIRCNetwork* pNetwork, const CString& sModName,
|
||||
const CString& sModPath) {
|
||||
return new M(p, pUser, pNetwork, sModName, sModPath);
|
||||
}
|
||||
|
||||
#if HAVE_VISIBILITY
|
||||
# define MODULE_EXPORT __attribute__((__visibility__("default")))
|
||||
#else
|
||||
@@ -97,8 +87,8 @@ template<class M> CModule* TModLoad(ModHandle p, CUser* pUser,
|
||||
*/
|
||||
#define MODCONSTRUCTOR(CLASS) \
|
||||
CLASS(ModHandle pDLL, CUser* pUser, CIRCNetwork* pNetwork, const CString& sModName, \
|
||||
const CString& sModPath) \
|
||||
: CModule(pDLL, pUser, pNetwork, sModName, sModPath)
|
||||
const CString& sModPath, CModInfo::EModuleType eType) \
|
||||
: CModule(pDLL, pUser, pNetwork, sModName, sModPath, eType)
|
||||
|
||||
// User Module Macros
|
||||
/** This works exactly like MODULEDEFS, but for user modules. */
|
||||
@@ -209,25 +199,30 @@ protected:
|
||||
};
|
||||
#endif
|
||||
|
||||
typedef void* ModHandle;
|
||||
|
||||
class CModInfo {
|
||||
public:
|
||||
typedef CModule* (*ModLoader)(ModHandle p, CUser* pUser, CIRCNetwork* pNetwork, const CString& sModName, const CString& sModPath);
|
||||
|
||||
typedef enum {
|
||||
GlobalModule,
|
||||
UserModule,
|
||||
NetworkModule
|
||||
} EModuleType;
|
||||
|
||||
CModInfo() {
|
||||
m_fLoader = nullptr;
|
||||
m_bHasArgs = false;
|
||||
typedef CModule* (*ModLoader)(ModHandle p, CUser* pUser, CIRCNetwork* pNetwork, const CString& sModName, const CString& sModPath, EModuleType eType);
|
||||
|
||||
CModInfo() : CModInfo("", "", NetworkModule) {
|
||||
}
|
||||
CModInfo(const CString& sName, const CString& sPath, EModuleType eType) {
|
||||
m_sName = sName;
|
||||
m_sPath = sPath;
|
||||
m_fLoader = nullptr;
|
||||
m_bHasArgs = false;
|
||||
CModInfo(const CString& sName, const CString& sPath, EModuleType eType)
|
||||
: m_seType(),
|
||||
m_eDefaultType(eType),
|
||||
m_sName(sName),
|
||||
m_sPath(sPath),
|
||||
m_sDescription(""),
|
||||
m_sWikiPage(""),
|
||||
m_sArgsHelpText(""),
|
||||
m_bHasArgs(false),
|
||||
m_fLoader(nullptr) {
|
||||
}
|
||||
~CModInfo() {}
|
||||
|
||||
@@ -286,6 +281,14 @@ protected:
|
||||
ModLoader m_fLoader;
|
||||
};
|
||||
|
||||
template<class M> void TModInfo(CModInfo& Info) {}
|
||||
|
||||
template<class M> CModule* TModLoad(ModHandle p, CUser* pUser,
|
||||
CIRCNetwork* pNetwork, const CString& sModName,
|
||||
const CString& sModPath, CModInfo::EModuleType eType) {
|
||||
return new M(p, pUser, pNetwork, sModName, sModPath, eType);
|
||||
}
|
||||
|
||||
/** A helper class for handling commands in modules. */
|
||||
class CModCommand {
|
||||
public:
|
||||
@@ -356,7 +359,7 @@ private:
|
||||
class CModule {
|
||||
public:
|
||||
CModule(ModHandle pDLL, CUser* pUser, CIRCNetwork* pNetwork, const CString& sModName,
|
||||
const CString& sDataDir);
|
||||
const CString& sDataDir, CModInfo::EModuleType eType = CModInfo::NetworkModule); // TODO: remove default value in ZNC 2.x
|
||||
virtual ~CModule();
|
||||
|
||||
CModule(const CModule&) = delete;
|
||||
|
||||
@@ -31,6 +31,9 @@ public:
|
||||
CQuery(const CString& sName, CIRCNetwork* pNetwork);
|
||||
~CQuery();
|
||||
|
||||
CQuery(const CQuery&) = delete;
|
||||
CQuery& operator=(const CQuery&) = delete;
|
||||
|
||||
// Buffer
|
||||
const CBuffer& GetBuffer() const { return m_Buffer; }
|
||||
unsigned int GetBufferCount() const { return m_Buffer.GetLineCount(); }
|
||||
|
||||
@@ -138,6 +138,11 @@ private:
|
||||
friend class CTDNSMonitorFD;
|
||||
#ifdef HAVE_THREADED_DNS
|
||||
struct TDNSTask {
|
||||
TDNSTask() : sHostname(""), iPort(0), sSockName(""), iTimeout(0), bSSL(false), sBindhost(""), pcSock(nullptr), bDoneTarget(false), bDoneBind(false), aiTarget(nullptr), aiBind(nullptr) {}
|
||||
|
||||
TDNSTask(const TDNSTask&) = delete;
|
||||
TDNSTask& operator=(const TDNSTask&) = delete;
|
||||
|
||||
CString sHostname;
|
||||
u_short iPort;
|
||||
CString sSockName;
|
||||
@@ -153,6 +158,11 @@ private:
|
||||
};
|
||||
class CDNSJob : public CJob {
|
||||
public:
|
||||
CDNSJob() : sHostname(""), task(nullptr), pManager(nullptr), bBind(false), iRes(0), aiResult(nullptr) {}
|
||||
|
||||
CDNSJob(const CDNSJob&) = delete;
|
||||
CDNSJob& operator=(const CDNSJob&) = delete;
|
||||
|
||||
CString sHostname;
|
||||
TDNSTask* task;
|
||||
CSockManager* pManager;
|
||||
|
||||
@@ -222,6 +222,9 @@ public:
|
||||
CBlowfish(const CString & sPassword, int iEncrypt, const CString & sIvec = "");
|
||||
~CBlowfish();
|
||||
|
||||
CBlowfish(const CBlowfish&) = default;
|
||||
CBlowfish& operator=(const CBlowfish&) = default;
|
||||
|
||||
//! output must be freed
|
||||
static unsigned char *MD5(const unsigned char *input, u_int ilen);
|
||||
|
||||
|
||||
@@ -30,8 +30,8 @@ class CPerlModule : public CModule {
|
||||
VWebSubPages* _GetSubPages();
|
||||
public:
|
||||
CPerlModule(CUser* pUser, CIRCNetwork* pNetwork, const CString& sModName, const CString& sDataPath,
|
||||
SV* perlObj)
|
||||
: CModule(nullptr, pUser, pNetwork, sModName, sDataPath) {
|
||||
CModInfo::EModuleType eType, SV* perlObj)
|
||||
: CModule(nullptr, pUser, pNetwork, sModName, sDataPath, eType) {
|
||||
m_perlObj = newSVsv(perlObj);
|
||||
}
|
||||
SV* GetPerlObj() {
|
||||
|
||||
@@ -111,7 +111,7 @@ sub LoadModule {
|
||||
$modrefcount{$modname}++;
|
||||
$datapath = $datapath->GetPerlStr;
|
||||
$datapath =~ s/\.pm$//;
|
||||
my $cmod = ZNC::CPerlModule->new($user, $network, $modname, $datapath, $pmod);
|
||||
my $cmod = ZNC::CPerlModule->new($user, $network, $modname, $datapath, $type, $pmod);
|
||||
my %nv;
|
||||
tie %nv, 'ZNC::ModuleNV', $cmod;
|
||||
$pmod->{_cmod} = $cmod;
|
||||
@@ -119,7 +119,6 @@ sub LoadModule {
|
||||
$cmod->SetDescription($pmod->description);
|
||||
$cmod->SetArgs($args);
|
||||
$cmod->SetModPath($modpath);
|
||||
$cmod->SetType($type);
|
||||
push @allmods, $pmod;
|
||||
$container->push_back($cmod);
|
||||
my $x = '';
|
||||
|
||||
@@ -32,8 +32,8 @@ class CPyModule : public CModule {
|
||||
VWebSubPages* _GetSubPages();
|
||||
public:
|
||||
CPyModule(CUser* pUser, CIRCNetwork* pNetwork, const CString& sModName, const CString& sDataPath,
|
||||
PyObject* pyObj, CModPython* pModPython)
|
||||
: CModule(nullptr, pUser, pNetwork, sModName, sDataPath) {
|
||||
CModInfo::EModuleType eType, PyObject* pyObj, CModPython* pModPython)
|
||||
: CModule(nullptr, pUser, pNetwork, sModName, sDataPath, eType) {
|
||||
m_pyObj = pyObj;
|
||||
Py_INCREF(pyObj);
|
||||
m_pModPython = pModPython;
|
||||
@@ -145,8 +145,8 @@ static inline CPyModule* AsPyModule(CModule* p) {
|
||||
return dynamic_cast<CPyModule*>(p);
|
||||
}
|
||||
|
||||
inline CPyModule* CreatePyModule(CUser* pUser, CIRCNetwork* pNetwork, const CString& sModName, const CString& sDataPath, PyObject* pyObj, CModPython* pModPython) {
|
||||
return new CPyModule(pUser, pNetwork, sModName, sDataPath, pyObj, pModPython);
|
||||
inline CPyModule* CreatePyModule(CUser* pUser, CIRCNetwork* pNetwork, const CString& sModName, const CString& sDataPath, CModInfo::EModuleType eType, PyObject* pyObj, CModPython* pModPython) {
|
||||
return new CPyModule(pUser, pNetwork, sModName, sDataPath, eType, pyObj, pModPython);
|
||||
}
|
||||
|
||||
class CPyTimer : public CTimer {
|
||||
|
||||
@@ -538,12 +538,11 @@ def load_module(modname, args, module_type, user, network, retmsg, modpython):
|
||||
return 1
|
||||
|
||||
module = cl()
|
||||
module._cmod = CreatePyModule(user, network, modname, datapath, module, modpython)
|
||||
module._cmod = CreatePyModule(user, network, modname, datapath, module_type, module, modpython)
|
||||
module.nv = ModuleNV(module._cmod)
|
||||
module.SetDescription(cl.description)
|
||||
module.SetArgs(args)
|
||||
module.SetModPath(pymodule.__file__)
|
||||
module.SetType(module_type)
|
||||
_py_modules.add(module)
|
||||
|
||||
if module_type == CModInfo.UserModule:
|
||||
|
||||
@@ -37,6 +37,9 @@ public:
|
||||
|
||||
virtual ~CIRCNetworkPingTimer() {}
|
||||
|
||||
CIRCNetworkPingTimer(const CIRCNetworkPingTimer&) = delete;
|
||||
CIRCNetworkPingTimer& operator=(const CIRCNetworkPingTimer&) = delete;
|
||||
|
||||
protected:
|
||||
void RunJob() override {
|
||||
CIRCSock* pIRCSock = m_pNetwork->GetIRCSock();
|
||||
@@ -66,6 +69,9 @@ public:
|
||||
|
||||
virtual ~CIRCNetworkJoinTimer() {}
|
||||
|
||||
CIRCNetworkJoinTimer(const CIRCNetworkJoinTimer&) = delete;
|
||||
CIRCNetworkJoinTimer& operator=(const CIRCNetworkJoinTimer&) = delete;
|
||||
|
||||
void Delay(unsigned short int uDelay) {
|
||||
m_bDelayed = true;
|
||||
Start(uDelay);
|
||||
|
||||
@@ -41,6 +41,8 @@ class CIRCFloodTimer : public CCron {
|
||||
CIRCFloodTimer(CIRCSock* pSock) : m_pSock(pSock) {
|
||||
StartMaxCycles(m_pSock->m_fFloodRate, 0);
|
||||
}
|
||||
CIRCFloodTimer(const CIRCFloodTimer&) = delete;
|
||||
CIRCFloodTimer& operator=(const CIRCFloodTimer&) = delete;
|
||||
void RunJob() override {
|
||||
if (m_pSock->m_iSendsAllowed < m_pSock->m_uFloodBurst) {
|
||||
m_pSock->m_iSendsAllowed++;
|
||||
|
||||
+23
-11
@@ -124,15 +124,28 @@ const CString& CTimer::GetDescription() const { return m_sDescription; }
|
||||
/////////////////// !Timer ///////////////////
|
||||
|
||||
|
||||
CModule::CModule(ModHandle pDLL, CUser* pUser, CIRCNetwork* pNetwork, const CString& sModName, const CString& sDataDir) {
|
||||
m_pDLL = pDLL;
|
||||
m_pManager = &(CZNC::Get().GetManager());;
|
||||
m_pUser = pUser;
|
||||
m_pNetwork = pNetwork;
|
||||
m_pClient = nullptr;
|
||||
m_sModName = sModName;
|
||||
m_sDataDir = sDataDir;
|
||||
|
||||
CModule::CModule(ModHandle pDLL, CUser* pUser, CIRCNetwork* pNetwork, const CString& sModName, const CString& sDataDir, CModInfo::EModuleType eType)
|
||||
: m_eType(eType),
|
||||
m_sDescription(""),
|
||||
m_sTimers(),
|
||||
m_sSockets(),
|
||||
#ifdef HAVE_PTHREAD
|
||||
m_sJobs(),
|
||||
#endif
|
||||
m_pDLL(pDLL),
|
||||
m_pManager(&(CZNC::Get().GetManager())),
|
||||
m_pUser(pUser),
|
||||
m_pNetwork(pNetwork),
|
||||
m_pClient(nullptr),
|
||||
m_sModName(sModName),
|
||||
m_sDataDir(sDataDir),
|
||||
m_sSavePath(""),
|
||||
m_sArgs(""),
|
||||
m_sModPath(""),
|
||||
m_mssRegistry(),
|
||||
m_vSubPages(),
|
||||
m_mCommands()
|
||||
{
|
||||
if (m_pNetwork) {
|
||||
m_sSavePath = m_pNetwork->GetNetworkPath() + "/moddata/" + m_sModName;
|
||||
} else if (m_pUser) {
|
||||
@@ -1023,9 +1036,8 @@ bool CModules::LoadModule(const CString& sModule, const CString& sArgs, CModInfo
|
||||
return false;
|
||||
}
|
||||
|
||||
CModule* pModule = Info.GetLoader()(p, pUser, pNetwork, sModule, sDataPath);
|
||||
CModule* pModule = Info.GetLoader()(p, pUser, pNetwork, sModule, sDataPath, eType);
|
||||
pModule->SetDescription(Info.GetDescription());
|
||||
pModule->SetType(eType);
|
||||
pModule->SetArgs(sArgs);
|
||||
pModule->SetModPath(CDir::ChangeDir(CZNC::Get().GetCurPath(), sModPath));
|
||||
push_back(pModule);
|
||||
|
||||
@@ -208,8 +208,6 @@ void CSockManager::StartTDNSThread(TDNSTask* task, bool bBind) {
|
||||
arg->sHostname = sHostname;
|
||||
arg->task = task;
|
||||
arg->bBind = bBind;
|
||||
arg->iRes = 0;
|
||||
arg->aiResult = nullptr;
|
||||
arg->pManager = this;
|
||||
|
||||
CThreadPool::Get().addJob(arg);
|
||||
@@ -363,13 +361,9 @@ void CSockManager::Connect(const CString& sHostname, u_short iPort, const CStrin
|
||||
task->bSSL = bSSL;
|
||||
task->sBindhost = sBindHost;
|
||||
task->pcSock = pcSock;
|
||||
task->aiTarget = nullptr;
|
||||
task->aiBind = nullptr;
|
||||
task->bDoneTarget = false;
|
||||
if (sBindHost.empty()) {
|
||||
task->bDoneBind = true;
|
||||
} else {
|
||||
task->bDoneBind = false;
|
||||
StartTDNSThread(task, true);
|
||||
}
|
||||
StartTDNSThread(task, false);
|
||||
|
||||
@@ -34,6 +34,9 @@ public:
|
||||
}
|
||||
virtual ~CUserTimer() {}
|
||||
|
||||
CUserTimer(const CUserTimer&) = delete;
|
||||
CUserTimer& operator=(const CUserTimer&) = delete;
|
||||
|
||||
private:
|
||||
protected:
|
||||
void RunJob() override {
|
||||
|
||||
@@ -53,6 +53,9 @@ public:
|
||||
CWebAuth(CWebSock* pWebSock, const CString& sUsername, const CString& sPassword, bool bBasic);
|
||||
virtual ~CWebAuth() {}
|
||||
|
||||
CWebAuth(const CWebAuth&) = delete;
|
||||
CWebAuth& operator=(const CWebAuth&) = delete;
|
||||
|
||||
void SetWebSock(CWebSock* pWebSock) { m_pWebSock = pWebSock; }
|
||||
void AcceptedLogin(CUser& User) override;
|
||||
void RefusedLogin(const CString& sReason) override;
|
||||
|
||||
Reference in New Issue
Block a user