diff options
| author | Adam <Adam@drink-coca-cola.info> | 2010-05-10 17:55:23 -0400 |
|---|---|---|
| committer | Adam <Adam@anope.org> | 2010-06-18 21:01:17 -0400 |
| commit | 631d11d6a81e8c5f63a19fc279606a61ab1a0563 (patch) | |
| tree | 399d7591a669ce0d5cb4e8f9afe86352b1147281 /src | |
| parent | 4e1286ca109d079f32d32f07c344a1ab93899032 (diff) | |
Store a plaintext version of mode names in the mode structures, removes alot of unneeded code from db_plain/db_mysql.
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/db_plain.cpp | 187 | ||||
| -rw-r--r-- | src/modes.cpp | 29 | ||||
| -rw-r--r-- | src/modules/mysql/db_mysql.h | 46 | ||||
| -rw-r--r-- | src/modules/mysql/db_mysql_execute.cpp | 10 | ||||
| -rw-r--r-- | src/modules/mysql/db_mysql_read.cpp | 43 | ||||
| -rw-r--r-- | src/modules/mysql/db_mysql_write.cpp | 118 | ||||
| -rw-r--r-- | src/protocol/bahamut.c | 46 | ||||
| -rw-r--r-- | src/protocol/inspircd11.c | 74 | ||||
| -rw-r--r-- | src/protocol/inspircd12.cpp | 118 | ||||
| -rw-r--r-- | src/protocol/ratbox.c | 32 | ||||
| -rw-r--r-- | src/protocol/unreal32.c | 112 |
11 files changed, 401 insertions, 414 deletions
diff --git a/src/core/db_plain.cpp b/src/core/db_plain.cpp index 0ae6c47f8..21164584f 100644 --- a/src/core/db_plain.cpp +++ b/src/core/db_plain.cpp @@ -39,7 +39,6 @@ static const char endl = '\n'; */ static void ReadDatabase(Module *m = NULL) { - std::string buf; EventReturn MOD_RESULT; MDType Type = MD_NONE; @@ -56,6 +55,7 @@ static void ReadDatabase(Module *m = NULL) BotInfo *bi = NULL; ChannelInfo *ci = NULL; + std::string buf; while (std::getline(db, buf)) { if (buf.empty()) @@ -87,7 +87,6 @@ static void ReadDatabase(Module *m = NULL) if (MOD_RESULT == EVENT_STOP) continue; - std::string mdbuf; if (!params.empty()) { if (params[0] == "NC") @@ -198,12 +197,6 @@ struct LangInfo int LanguageId; }; -struct ChannelModeInfo -{ - std::string Name; - ChannelModeName Value; -}; - struct ChannelFlagInfo { std::string Name; @@ -245,42 +238,6 @@ LangInfo LangInfos[] = { {"", -1} }; -ChannelModeInfo ChannelModes[] = { - {"CMODE_BLOCKCOLOR", CMODE_BLOCKCOLOR}, - {"CMODE_FLOOD", CMODE_FLOOD}, - {"CMODE_INVITE", CMODE_INVITE}, - {"CMODE_KEY", CMODE_KEY}, - {"CMODE_LIMIT", CMODE_LIMIT}, - {"CMODE_MODERATED", CMODE_MODERATED}, - {"CMODE_NOEXTERNAL", CMODE_NOEXTERNAL}, - {"CMODE_PRIVATE", CMODE_PRIVATE}, - {"CMODE_REGISTERED", CMODE_REGISTERED}, - {"CMODE_SECRET", CMODE_SECRET}, - {"CMODE_TOPIC", CMODE_TOPIC}, - {"CMODE_AUDITORIUM", CMODE_AUDITORIUM}, - {"CMODE_SSL", CMODE_SSL}, - {"CMODE_ADMINONLY", CMODE_ADMINONLY}, - {"CMODE_NOCTCP", CMODE_NOCTCP}, - {"CMODE_FILTER", CMODE_FILTER}, - {"CMODE_NOKNOCK", CMODE_NOKNOCK}, - {"CMODE_REDIRECT", CMODE_REDIRECT}, - {"CMODE_REGMODERATED", CMODE_REGMODERATED}, - {"CMODE_NONICK", CMODE_NONICK}, - {"CMODE_OPERONLY", CMODE_OPERONLY}, - {"CMODE_NONICK", CMODE_NONICK}, - {"CMODE_REGISTEREDONLY", CMODE_REGISTEREDONLY}, - {"CMODE_STRIPCOLOR", CMODE_STRIPCOLOR}, - {"CMODE_NONOTICE", CMODE_NONOTICE}, - {"CMODE_NOINVITE", CMODE_NOINVITE}, - {"CMODE_ALLINVITE", CMODE_ALLINVITE}, - {"CMODE_BLOCKCAPS", CMODE_BLOCKCAPS}, - {"CMODE_PERM", CMODE_PERM}, - {"CMODE_NICKFLOOD", CMODE_NICKFLOOD}, - {"CMODE_JOINFLOOD", CMODE_JOINFLOOD}, - {"CMODE_NOREJOIN", CMODE_NOREJOIN}, - {"", static_cast<ChannelModeName>(-1)} -}; - ChannelFlagInfo ChannelInfoFlags[] = { {"KEEPTOPIC", CI_KEEPTOPIC}, {"SECUREOPS", CI_SECUREOPS}, @@ -740,8 +697,6 @@ class DBPlain : public Module EventReturn OnDatabaseReadMetadata(ChannelInfo *ci, const std::string &key, const std::vector<std::string> ¶ms) { - int i; - if (key == "FOUNDER") { ci->founder = findcore(params[0].c_str()); @@ -757,14 +712,14 @@ class DBPlain : public Module else if (key == "LEVELS") { for (unsigned j = 0; j < params.size(); ++j, ++j) - for (i = 0; ChannelLevels[i].Level != -1; ++i) + for (int i = 0; ChannelLevels[i].Level != -1; ++i) if (ChannelLevels[i].Name == params[j]) ci->levels[ChannelLevels[i].Level] = atoi(params[j + 1].c_str()); } else if (key == "FLAGS") { for (unsigned j = 0; j < params.size(); ++j) - for (i = 0; ChannelInfoFlags[i].Flag != -1; ++i) + for (int i = 0; ChannelInfoFlags[i].Flag != -1; ++i) if (ChannelInfoFlags[i].Name == params[j]) ci->SetFlag(ChannelInfoFlags[i].Flag); } @@ -830,16 +785,38 @@ class DBPlain : public Module bool Set = key == "MLOCK_ON" ? true : false; for (unsigned j = 0; j < params.size(); ++j) - for (i = 0; ChannelModes[i].Value != -1; ++i) - if (ChannelModes[i].Name == params[j]) - ci->SetMLock(ChannelModes[i].Value, Set); + { + for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it) + { + if ((*it)->Class == MC_CHANNEL) + { + ChannelMode *cm = dynamic_cast<ChannelMode *>(*it); + + if (cm->NameAsString == params[j]) + { + ci->SetMLock(cm->Name, Set); + } + } + } + } } else if (key == "MLP") { for (unsigned j = 0; j < params.size(); ++j, ++j) - for (i = 0; ChannelModes[i].Value != -1; ++i) - if (ChannelModes[i].Name == params[j]) - ci->SetMLock(ChannelModes[i].Value, true, params[j + 1]); + { + for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it) + { + if ((*it)->Class == MC_CHANNEL) + { + ChannelMode *cm = dynamic_cast<ChannelMode *>(*it); + + if (cm->NameAsString == params[j]) + { + ci->SetMLock(cm->Name, true, params[j + 1]); + } + } + } + } } else if (key == "MI") { @@ -868,7 +845,7 @@ class DBPlain : public Module else if (params[0] == "FLAGS") { for (unsigned j = 1; j < params.size(); ++j) - for (i = 0; BotFlags[i].Flag != -1; ++i) + for (int i = 0; BotFlags[i].Flag != -1; ++i) if (BotFlags[i].Name == params[j]) ci->botflags.SetFlag(BotFlags[i].Flag); } @@ -936,10 +913,7 @@ class DBPlain : public Module db << "VER 1" << endl; - int i, j; - unsigned k; - - for (i = 0; i < 1024; ++i) + for (int i = 0; i < 1024; ++i) { for (NickRequest *nr = nrlists[i]; nr; nr = nr->next) { @@ -947,10 +921,9 @@ class DBPlain : public Module } } - NickCore *nc; - for (i = 0; i < 1024; ++i) + for (int i = 0; i < 1024; ++i) { - for (nc = nclists[i]; nc; nc = nc->next) + for (NickCore *nc = nclists[i]; nc; nc = nc->next) { if (nc->HasFlag(NI_FORBIDDEN)) { @@ -963,7 +936,7 @@ class DBPlain : public Module { db << "NC " << nc->display << " " << nc->pass << " "; } - for (j = 0; LangInfos[j].LanguageId != -1; ++j) + for (int j = 0; LangInfos[j].LanguageId != -1; ++j) if (nc->language == LangInfos[j].LanguageId) db << LangInfos[j].Name; db << " " << nc->memos.memomax << " " << nc->channelcount << endl; @@ -984,7 +957,7 @@ class DBPlain : public Module if (nc->FlagCount()) { db << "MD FLAGS"; - for (j = 0; NickCoreFlags[j].Flag != -1; ++j) + for (int j = 0; NickCoreFlags[j].Flag != -1; ++j) if (nc->HasFlag(NickCoreFlags[j].Flag)) db << " " << NickCoreFlags[j].Name; db << endl; @@ -992,7 +965,7 @@ class DBPlain : public Module if (!nc->memos.memos.empty()) { MemoInfo *mi = &nc->memos; - for (k = 0; k < mi->memos.size(); ++k) + for (unsigned k = 0; k < mi->memos.size(); ++k) { db << "MD MI " << mi->memos[k]->number << " " << mi->memos[k]->time << " " << mi->memos[k]->sender; if (mi->memos[k]->HasFlag(MF_UNREAD)) @@ -1010,10 +983,9 @@ class DBPlain : public Module } } - NickAlias *na; - for (i = 0; i < 1024; ++i) + for (int i = 0; i < 1024; ++i) { - for (na = nalists[i]; na; na = na->next) + for (NickAlias *na = nalists[i]; na; na = na->next) { db << "NA " << na->nc->display << " " << na->nick << " " << na->time_registered << " " << na->last_seen << endl; if (na->last_usermask) @@ -1035,10 +1007,9 @@ class DBPlain : public Module } } - BotInfo *bi; - for (i = 0; i < 256; ++i) + for (int i = 0; i < 256; ++i) { - for (bi = botlists[i]; bi; bi = bi->next) + for (BotInfo *bi = botlists[i]; bi; bi = bi->next) { db << "BI " << bi->nick << " " << bi->user << " " << bi->host << " " << bi->created << " " << bi->chancount << " :" << bi->real << endl; if (bi->FlagCount()) @@ -1067,10 +1038,9 @@ class DBPlain : public Module } } - ChannelInfo *ci; - for (i = 0; i < 256; ++i) + for (int i = 0; i < 256; ++i) { - for (ci = chanlists[i]; ci; ci = ci->next) + for (ChannelInfo *ci = chanlists[i]; ci; ci = ci->next) { db << "CH " << ci->name << " " << ci->time_registered << " " << ci->last_used; db << " " << ci->bantype << " " << ci->memos.memomax << endl; @@ -1087,24 +1057,24 @@ class DBPlain : public Module if (ci->last_topic) db << "MD TOPIC " << ci->last_topic_setter << " " << ci->last_topic_time << " :" << ci->last_topic << endl; db << "MD LEVELS"; - for (j = 0; ChannelLevels[j].Level != -1; ++j) + for (int j = 0; ChannelLevels[j].Level != -1; ++j) db << " " << ChannelLevels[j].Name << " " << ci->levels[ChannelLevels[j].Level]; db << endl; if (ci->FlagCount()) { db << "MD FLAGS"; - for (j = 0; ChannelInfoFlags[j].Flag != -1; ++j) + for (int j = 0; ChannelInfoFlags[j].Flag != -1; ++j) if (ci->HasFlag(ChannelInfoFlags[j].Flag)) db << " " << ChannelInfoFlags[j].Name; db << endl; if (ci->HasFlag(CI_FORBIDDEN)) db << "MD FORBID " << ci->forbidby << " :" << ci->forbidreason << endl; } - for (k = 0; k < ci->GetAccessCount(); ++k) + for (unsigned k = 0; k < ci->GetAccessCount(); ++k) if (ci->GetAccess(k)->in_use) db << "MD ACCESS " << ci->GetAccess(k)->nc->display << " " << ci->GetAccess(k)->level << " " << ci->GetAccess(k)->last_seen << " " << ci->GetAccess(k)->creator << endl; - for (k = 0; k < ci->GetAkickCount(); ++k) + for (unsigned k = 0; k < ci->GetAkickCount(); ++k) { db << "MD AKICK " << (ci->GetAkick(k)->HasFlag(AK_STUCK) ? "STUCK " : "UNSTUCK ") @@ -1119,28 +1089,55 @@ class DBPlain : public Module if (ci->GetMLockCount(true)) { db << "MD MLOCK_ON"; - for (j = 0; ChannelModes[j].Value != -1; ++j) - if (ci->HasMLock(ChannelModes[j].Value, true)) - db << " " << ChannelModes[j].Name; + for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it) + { + if ((*it)->Class == MC_CHANNEL) + { + ChannelMode *cm = dynamic_cast<ChannelMode *>(*it); + + if (ci->HasMLock(cm->Name, true)) + { + db << " " << cm->NameAsString; + } + } + } db << endl; } if (ci->GetMLockCount(false)) { db << "MD MLOCK_OFF"; - for (j = 0; ChannelModes[j].Value != -1; ++j) - if (ci->HasMLock(ChannelModes[j].Value, false)) - db << " " << ChannelModes[j].Name; + for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it) + { + if ((*it)->Class == MC_CHANNEL) + { + ChannelMode *cm = dynamic_cast<ChannelMode *>(*it); + + if (ci->HasMLock(cm->Name, false)) + { + db << " " << cm->NameAsString; + } + } + } db << endl; } std::string Param; - for (j = 0; ChannelModes[j].Value != -1; ++j) - if (ci->GetParam(ChannelModes[j].Value, Param)) - db << "MD MLP " << ChannelModes[j].Name << " " << Param << endl; + for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it) + { + if ((*it)->Class == MC_CHANNEL) + { + ChannelMode *cm = dynamic_cast<ChannelMode *>(*it); + + if (ci->GetParam(cm->Name, Param)) + { + db << "MD MLP " << cm->NameAsString << " " << Param << endl; + } + } + } if (!ci->memos.memos.empty()) { MemoInfo *memos = &ci->memos; - for (k = 0; k < memos->memos.size(); ++k) + for (unsigned k = 0; k < memos->memos.size(); ++k) { db << "MD MI " << memos->memos[k]->number << " " << memos->memos[k]->time << " " << memos->memos[k]->sender; if (memos->memos[k]->HasFlag(MF_UNREAD)) @@ -1159,7 +1156,7 @@ class DBPlain : public Module if (ci->botflags.FlagCount()) { db << "MD BI FLAGS"; - for (j = 0; BotFlags[j].Flag != -1; ++j) + for (int j = 0; BotFlags[j].Flag != -1; ++j) if (ci->botflags.HasFlag(BotFlags[j].Flag)) db << " " << BotFlags[j].Name; db << endl; @@ -1175,7 +1172,7 @@ class DBPlain : public Module db << "MD BI FLOODSECS " << ci->floodsecs << endl; if (ci->repeattimes) db << "MD BI REPEATTIMES " << ci->repeattimes << endl; - for (k = 0; k < ci->GetBadWordCount(); ++k) + for (unsigned k = 0; k < ci->GetBadWordCount(); ++k) db << "MD BI BADWORD " << (ci->GetBadWord(k)->type == BW_ANY ? "ANY " : "") << (ci->GetBadWord(k)->type == BW_SINGLE ? "SINGLE " : "") @@ -1187,7 +1184,7 @@ class DBPlain : public Module } } - for (i = 0; i < akills.count; ++i) + for (int i = 0; i < akills.count; ++i) { Akill *ak = static_cast<Akill *>(akills.list[i]); db << "OS AKILL " << ak->user << " " << ak->host << " " << ak->by << " " << ak->seton << " " << ak->expires << " :" << ak->reason << endl; @@ -1195,23 +1192,23 @@ class DBPlain : public Module db << "OS STATS " << maxusercnt << " " << maxusertime << endl; SXLine *sx; - for (i = 0; i < sglines.count; ++i) + for (int i = 0; i < sglines.count; ++i) { sx = static_cast<SXLine *>(sglines.list[i]); db << "OS SGLINE " << sx->mask << " " << sx->by << " " << sx->seton << " " << sx->expires << " :" << sx->reason << endl; } - for (i = 0; i < sqlines.count; ++i) + for (int i = 0; i < sqlines.count; ++i) { sx = static_cast<SXLine *>(sqlines.list[i]); db << "OS SQLINE " << sx->mask << " " << sx->by << " " << sx->seton << " " << sx->expires << " :" << sx->reason << endl; } - for (i = 0; i < szlines.count; ++i) + for (int i = 0; i < szlines.count; ++i) { sx = static_cast<SXLine *>(szlines.list[i]); db << "OS SZLINE " << sx->mask << " " << sx->by << " " << sx->seton << " " << sx->expires << " :" << sx->reason << endl; } - for (i = 0; i < nexceptions; i++) + for (int i = 0; i < nexceptions; i++) { db << "OS EXCEPTION " << exceptions[i].mask << " " << exceptions[i].limit << " " << exceptions[i].who << " " << exceptions[i].time << " " << exceptions[i].expires << " " << exceptions[i].reason << endl; } diff --git a/src/modes.cpp b/src/modes.cpp index 1685eea86..1e725cf7f 100644 --- a/src/modes.cpp +++ b/src/modes.cpp @@ -14,6 +14,9 @@ /* List of pairs of user/channels and their stacker info */ std::list<std::pair<void *, StackerInfo *> > ModeManager::StackerObjects; +/* List of all modes Anope knows about */ +std::list<Mode *> ModeManager::Modes; + /* User modes */ std::map<char, UserMode *> ModeManager::UserModesByChar; std::map<UserModeName, UserMode *> ModeManager::UserModesByName; @@ -21,11 +24,8 @@ std::map<UserModeName, UserMode *> ModeManager::UserModesByName; std::map<char, ChannelMode *> ModeManager::ChannelModesByChar; std::map<ChannelModeName, ChannelMode *> ModeManager::ChannelModesByName; /* Although there are two different maps for UserModes and ChannelModes - * the pointers in each are the same. This is used to increase - * efficiency. + * the pointers in each are the same. This is used to increase efficiency. */ -/* List of all modes Anope knows about */ -std::list<Mode *> ModeManager::Modes; /* Number of generic modes we support */ unsigned GenericChannelModes = 0, GenericUserModes = 0; @@ -99,10 +99,11 @@ void SetDefaultMLock() /** Default constructor * @param mClass The type of mode this is + * @param mNameAsString The mode name as a string * @param modeChar The mode char * @param modeType The mode type */ -Mode::Mode(ModeClass mClass, char modeChar, ModeType modeType) : Class(mClass), ModeChar(modeChar), Type(modeType) +Mode::Mode(ModeClass mClass, const std::string &mNameAsString, char modeChar, ModeType modeType) : Class(mClass), NameAsString(mNameAsString), ModeChar(modeChar), Type(modeType) { } @@ -114,9 +115,10 @@ Mode::~Mode() /** Default constructor * @param mName The mode name + * @param mNameAsString The mode name as a string * @param modeChar The mode char */ -UserMode::UserMode(UserModeName mName, char modeChar) : Mode(MC_USER, modeChar, MODE_REGULAR), Name(mName) +UserMode::UserMode(UserModeName mName, const std::string &mNameAsString, char modeChar) : Mode(MC_USER, mNameAsString, modeChar, MODE_REGULAR), Name(mName) { } @@ -128,18 +130,20 @@ UserMode::~UserMode() /** Default constructor * @param mName The mode name + * @param mNameAsString The mode name as a string * @param modeChar The mode char */ -UserModeParam::UserModeParam(UserModeName mName, char modeChar) : UserMode(mName, modeChar) +UserModeParam::UserModeParam(UserModeName mName, const std::string &mNameAsString, char modeChar) : UserMode(mName, mNameAsString, modeChar) { this->Type = MODE_PARAM; } /** Default constrcutor * @param mName The mode name + * @param mNameAsString The mode name as a string * @param modeChar The mode char */ -ChannelMode::ChannelMode(ChannelModeName mName, char modeChar) : Mode(MC_CHANNEL, modeChar, MODE_REGULAR), Name(mName) +ChannelMode::ChannelMode(ChannelModeName mName, const std::string &mNameAsString, char modeChar) : Mode(MC_CHANNEL, mNameAsString, modeChar, MODE_REGULAR), Name(mName) { } @@ -151,9 +155,10 @@ ChannelMode::~ChannelMode() /** Default constructor * @param mName The mode name + * @param mNameAsString The mode name as a string * @param modeChar The mode char */ -ChannelModeList::ChannelModeList(ChannelModeName mName, char modeChar) : ChannelMode(mName, modeChar) +ChannelModeList::ChannelModeList(ChannelModeName mName, const std::string &mNameAsString, char modeChar) : ChannelMode(mName, mNameAsString, modeChar) { this->Type = MODE_LIST; } @@ -166,10 +171,11 @@ ChannelModeList::~ChannelModeList() /** Default constructor * @param mName The mode name + * @param mNameAsString The mode name as a string * @param modeChar The mode char * @param MinusArg true if the mode sends no arg when unsetting */ -ChannelModeParam::ChannelModeParam(ChannelModeName mName, char modeChar, bool MinusArg) : ChannelMode(mName, modeChar), MinusNoArg(MinusArg) +ChannelModeParam::ChannelModeParam(ChannelModeName mName, const std::string &mNameAsString, char modeChar, bool MinusArg) : ChannelMode(mName, mNameAsString, modeChar), MinusNoArg(MinusArg) { this->Type = MODE_PARAM; } @@ -182,10 +188,11 @@ ChannelModeParam::~ChannelModeParam() /** Default constructor * @param mName The mode name + * @param mNameAsString The mode name as a string * @param modeChar The mode char * @param mSymbol The symbol for the mode, eg @ % + */ -ChannelModeStatus::ChannelModeStatus(ChannelModeName mName, char modeChar, char mSymbol) : ChannelMode(mName, modeChar), Symbol(mSymbol) +ChannelModeStatus::ChannelModeStatus(ChannelModeName mName, const std::string &mNameAsString, char modeChar, char mSymbol) : ChannelMode(mName, mNameAsString, modeChar), Symbol(mSymbol) { this->Type = MODE_STATUS; } diff --git a/src/modules/mysql/db_mysql.h b/src/modules/mysql/db_mysql.h index b62f52524..12956262a 100644 --- a/src/modules/mysql/db_mysql.h +++ b/src/modules/mysql/db_mysql.h @@ -39,48 +39,6 @@ NickCoreFlagInfo NickCoreFlags[] = { {"", static_cast<NickCoreFlag>(-1)} }; -struct ChannelModeInfo -{ - std::string Name; - ChannelModeName Mode; -}; - -ChannelModeInfo ChannelModes[] = { - {"CMODE_BLOCKCOLOR", CMODE_BLOCKCOLOR}, - {"CMODE_FLOOD", CMODE_FLOOD}, - {"CMODE_INVITE", CMODE_INVITE}, - {"CMODE_KEY", CMODE_KEY}, - {"CMODE_LIMIT", CMODE_LIMIT}, - {"CMODE_MODERATED", CMODE_MODERATED}, - {"CMODE_NOEXTERNAL", CMODE_NOEXTERNAL}, - {"CMODE_PRIVATE", CMODE_PRIVATE}, - {"CMODE_REGISTERED", CMODE_REGISTERED}, - {"CMODE_SECRET", CMODE_SECRET}, - {"CMODE_TOPIC", CMODE_TOPIC}, - {"CMODE_AUDITORIUM", CMODE_AUDITORIUM}, - {"CMODE_SSL", CMODE_SSL}, - {"CMODE_ADMINONLY", CMODE_ADMINONLY}, - {"CMODE_NOCTCP", CMODE_NOCTCP}, - {"CMODE_FILTER", CMODE_FILTER}, - {"CMODE_NOKNOCK", CMODE_NOKNOCK}, - {"CMODE_REDIRECT", CMODE_REDIRECT}, - {"CMODE_REGMODERATED", CMODE_REGMODERATED}, - {"CMODE_NONICK", CMODE_NONICK}, - {"CMODE_OPERONLY", CMODE_OPERONLY}, - {"CMODE_NONICK", CMODE_NONICK}, - {"CMODE_REGISTEREDONLY", CMODE_REGISTEREDONLY}, - {"CMODE_STRIPCOLOR", CMODE_STRIPCOLOR}, - {"CMODE_NONOTICE", CMODE_NONOTICE}, - {"CMODE_NOINVITE", CMODE_NOINVITE}, - {"CMODE_ALLINVITE", CMODE_ALLINVITE}, - {"CMODE_BLOCKCAPS", CMODE_BLOCKCAPS}, - {"CMODE_PERM", CMODE_PERM}, - {"CMODE_NICKFLOOD", CMODE_NICKFLOOD}, - {"CMODE_JOINFLOOD", CMODE_JOINFLOOD}, - {"CMODE_NOREJOIN", CMODE_NOREJOIN}, - {"", static_cast<ChannelModeName>(-1)} -}; - struct BotFlagInfo { std::string Name; @@ -169,7 +127,7 @@ MemoFlagInfo MemoFlags[] = { inline std::string SQLAssign(const mysqlpp::String& s) { return s.c_str(); } class DBMySQL; -static DBMySQL *Me; +static DBMySQL *me; bool ExecuteQuery(mysqlpp::Query& query) { @@ -226,7 +184,7 @@ class DBMySQL : public Module DBMySQL(const std::string &modname, const std::string &creator) : Module(modname, creator) { - Me = this; + me = this; this->SetAuthor("Anope"); this->SetVersion(VERSION_STRING); diff --git a/src/modules/mysql/db_mysql_execute.cpp b/src/modules/mysql/db_mysql_execute.cpp index 0c7c4de65..3933d54d1 100644 --- a/src/modules/mysql/db_mysql_execute.cpp +++ b/src/modules/mysql/db_mysql_execute.cpp @@ -37,7 +37,7 @@ class FakeUser : public User this->realname = sstrdup("Fake SQL User"); this->hostip = sstrdup("255.255.255.255"); this->vhost = NULL; - this->server = serv_uplink; // XXX Need a good way to set this to ourself + this->server = Me; if (this->prev) this->prev->next = this->next; @@ -50,8 +50,6 @@ class FakeUser : public User ~FakeUser() { - this->server = serv_uplink; // XXX Need a good way to set this to ourself - User **list = &userlist[HASH(this->nick.c_str())]; this->next = *list; if (*list) @@ -73,16 +71,16 @@ class FakeUser : public User class SQLTimer : public Timer { public: - SQLTimer() : Timer(Me->Delay, time(NULL), true) + SQLTimer() : Timer(me->Delay, time(NULL), true) { - mysqlpp::Query query(Me->Con); + mysqlpp::Query query(me->Con); query << "TRUNCATE TABLE `anope_commands`"; ExecuteQuery(query); } void Tick(time_t) { - mysqlpp::Query query(Me->Con); + mysqlpp::Query query(me->Con); mysqlpp::StoreQueryResult qres; query << "SELECT * FROM `anope_commands`"; diff --git a/src/modules/mysql/db_mysql_read.cpp b/src/modules/mysql/db_mysql_read.cpp index 5c498b008..728e4b882 100644 --- a/src/modules/mysql/db_mysql_read.cpp +++ b/src/modules/mysql/db_mysql_read.cpp @@ -27,7 +27,7 @@ static std::vector<std::string> MakeVector(std::string buf) static void LoadDatabase() { - mysqlpp::Query query(Me->Con); + mysqlpp::Query query(me->Con); mysqlpp::StoreQueryResult qres; query << "SELECT * FROM `anope_ns_core`"; @@ -270,12 +270,17 @@ static void LoadDatabase() spacesepstream sep(SQLAssign(qres[i]["mlock_on"])); while (sep.GetToken(buf)) { - for (int j = 0; ChannelModes[j].Mode != -1; ++j) + for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it) { - if (buf == ChannelModes[j].Name) + if ((*it)->Class == MC_CHANNEL) { - ci->SetMLock(ChannelModes[j].Mode, true); - break; + ChannelMode *cm = dynamic_cast<ChannelMode *>(*it); + + if (buf == cm->NameAsString) + { + ci->SetMLock(cm->Name, true); + break; + } } } } @@ -286,12 +291,17 @@ static void LoadDatabase() spacesepstream sep(SQLAssign(qres[i]["mlock_off"])); while (sep.GetToken(buf)) { - for (int j = 0; ChannelModes[j].Mode != -1; ++j) + for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it) { - if (buf == ChannelModes[j].Name) + if ((*it)->Class == MC_CHANNEL) { - ci->SetMLock(ChannelModes[j].Mode, false); - break; + ChannelMode *cm = dynamic_cast<ChannelMode *>(*it); + + if (buf == cm->NameAsString) + { + ci->SetMLock(cm->Name, false); + break; + } } } } @@ -302,13 +312,18 @@ static void LoadDatabase() spacesepstream sep(SQLAssign(qres[i]["mlock_params"])); while (sep.GetToken(buf)) { - for (int j = 0; ChannelModes[j].Mode != -1; ++j) + for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it) { - if (buf == ChannelModes[j].Name) + if ((*it)->Class == MC_CHANNEL) { - sep.GetToken(buf); - ci->SetMLock(ChannelModes[j].Mode, true, buf); - break; + ChannelMode *cm = dynamic_cast<ChannelMode *>(*it); + + if (buf == cm->NameAsString) + { + sep.GetToken(buf); + ci->SetMLock(cm->Name, true, buf); + break; + } } } } diff --git a/src/modules/mysql/db_mysql_write.cpp b/src/modules/mysql/db_mysql_write.cpp index b7b94a3a3..5f3218381 100644 --- a/src/modules/mysql/db_mysql_write.cpp +++ b/src/modules/mysql/db_mysql_write.cpp @@ -2,8 +2,6 @@ #include "db_mysql.h" -static Module *me; - static std::string BuildFlagsList(ChannelInfo *ci) { std::string ret; @@ -80,11 +78,16 @@ static std::string MakeMLock(ChannelInfo *ci, bool status) { std::string ret; - for (int i = 0; ChannelModes[i].Mode != -1; ++i) + for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it) { - if (ci->HasMLock(ChannelModes[i].Mode, status)) + if ((*it)->Class == MC_CHANNEL) { - ret += " " + ChannelModes[i].Name; + ChannelMode *cm = dynamic_cast<ChannelMode *>(*it); + + if (ci->HasMLock(cm->Name, status)) + { + ret += " " + cm->NameAsString; + } } } @@ -108,12 +111,17 @@ static std::string GetMLockParams(ChannelInfo *ci) { std::string ret; - for (int i = 0; ChannelModes[i].Mode != -1; ++i) + for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it) { - std::string param; - if (ci->GetParam(ChannelModes[i].Mode, param)) + if ((*it)->Class == MC_CHANNEL) { - ret += " " + ChannelModes[i].Name + " " + param; + ChannelMode *cm = dynamic_cast<ChannelMode *>(*it); + + std::string param; + if (ci->GetParam(cm->Name, param)) + { + ret += " " + cm->NameAsString + " " + param; + } } } @@ -166,14 +174,14 @@ static BotInfo *CurBot = NULL; void Write(const std::string &data) { - mysqlpp::Query query(Me->Con); + mysqlpp::Query query(me->Con); query << "INSERT DELAYED INTO `anope_extra` (data) VALUES(" << mysqlpp::quote << data << ")"; ExecuteQuery(query); } void WriteMetadata(const std::string &key, const std::string &data) { - mysqlpp::Query query(Me->Con); + mysqlpp::Query query(me->Con); query << "INSERT DELAYED INTO `anope_metadata` (name, value) VALUES(" << mysqlpp::quote << key << ", " << mysqlpp::quote << data << ")"; ExecuteQuery(query); } @@ -183,7 +191,7 @@ void WriteNickMetadata(const std::string &key, const std::string &data) if (!CurNick) throw CoreException("WriteNickMetadata without a nick to write"); - mysqlpp::Query query(Me->Con); + mysqlpp::Query query(me->Con); query << "INSERT DELAYED INTO `anope_ns_alias_metadata` (nick, name, value) VALUES(" << mysqlpp::quote << CurNick->nick << ", " << mysqlpp::quote << key << ", " << mysqlpp::quote << data << ")"; ExecuteQuery(query); } @@ -193,7 +201,7 @@ void WriteCoreMetadata(const std::string &key, const std::string &data) if (!CurCore) throw CoreException("WritCoreMetadata without a core to write"); - mysqlpp::Query query(Me->Con); + mysqlpp::Query query(me->Con); query << "INSERT DELAYED INTO `anope_ns_core_metadata` (nick, name, value) VALUES(" << mysqlpp::quote << CurCore->display << ", " << mysqlpp::quote << key << ", " << mysqlpp::quote << data << ")"; ExecuteQuery(query); } @@ -203,7 +211,7 @@ void WriteChannelMetadata(const std::string &key, const std::string &data) if (!CurChannel) throw CoreException("WriteChannelMetadata without a channel to write"); - mysqlpp::Query query(Me->Con); + mysqlpp::Query query(me->Con); query << "INSERT DELAYED INTO `anope_cs_info_metadata` (channel, name, value) VALUES(" << mysqlpp::quote << CurChannel->name << ", " << mysqlpp::quote << key << ", " << mysqlpp::quote << data << ")"; ExecuteQuery(query); } @@ -213,14 +221,14 @@ void WriteBotMetadata(const std::string &key, const std::string &data) if (!CurBot) throw CoreException("WriteBotMetadata without a bot to write"); - mysqlpp::Query query(Me->Con); + mysqlpp::Query query(me->Con); query << "INSERT DELAYED INTO `anope_bs_info_metadata` (botname, name, value) VALUES(" << mysqlpp::quote << CurBot->nick << ", " << mysqlpp::quote << key << ", " << mysqlpp::quote << data << ")"; ExecuteQuery(query); } static void SaveDatabases() { - mysqlpp::Query query(Me->Con); + mysqlpp::Query query(me->Con); query << "TRUNCATE TABLE `anope_ns_core`"; ExecuteQuery(query); @@ -382,7 +390,7 @@ static void SaveDatabases() class CommandSyncSQL : public Command { public: - CommandSyncSQL(const std::string &cname) : Command(cname, 0, 0, "operserv/sqlsync") + CommandSyncSQL(const ci::string &cname) : Command(cname, 0, 0, "operserv/sqlsync") { } @@ -454,7 +462,7 @@ class DBMySQLWrite : public DBMySQL EventReturn OnSaveDatabase() { - mysqlpp::Query query(Me->Con); + mysqlpp::Query query(me->Con); query << "TRUNCATE TABLE `anope_os_core`"; ExecuteQuery(query); @@ -511,7 +519,7 @@ class DBMySQLWrite : public DBMySQL void OnPostCommand(User *u, const std::string &service, const ci::string &command, const std::vector<ci::string> ¶ms) { - mysqlpp::Query query(Me->Con); + mysqlpp::Query query(me->Con); if (service == Config.s_NickServ) { @@ -685,28 +693,28 @@ class DBMySQLWrite : public DBMySQL void OnNickAddAccess(NickCore *nc, const std::string &entry) { - mysqlpp::Query query(Me->Con); + mysqlpp::Query query(me->Con); query << "INSERT DELAYED INTO `anope_ns_access` (display, access) VALUES(" << mysqlpp::quote << nc->display << ", " << mysqlpp::quote << entry << ")"; ExecuteQuery(query); } void OnNickEraseAccess(NickCore *nc, const std::string &entry) { - mysqlpp::Query query(Me->Con); + mysqlpp::Query query(me->Con); query << "DELETE FROM `anope_ns_access` WHERE `display` = " << mysqlpp::quote << nc->display << " AND `access` = " << mysqlpp::quote << entry; ExecuteQuery(query); } void OnNickClearAccess(NickCore *nc) { - mysqlpp::Query query(Me->Con); + mysqlpp::Query query(me->Con); query << "DELETE FROM `anope_ns_access` WHERE `display` = " << mysqlpp::quote << nc->display; ExecuteQuery(query); } void OnDelCore(NickCore *nc) { - mysqlpp::Query query(Me->Con); + mysqlpp::Query query(me->Con); query << "DELETE FROM `anope_cs_access` WHERE `display` = " << mysqlpp::quote << nc->display; ExecuteQuery(query); query << "DELETE FROM `anope_cs_akick` WHERE `mask` = " << mysqlpp::quote << nc->display; @@ -724,7 +732,7 @@ class DBMySQLWrite : public DBMySQL void OnNickForbidden(NickAlias *na) { std::string flags = BuildFlagsList(na); - mysqlpp::Query query(Me->Con); + mysqlpp::Query query(me->Con); query << "UPDATE `anope_ns_alias` SET `flags` = '" << (!flags.empty() ? flags : "") << "' WHERE `nick` = " << mysqlpp::quote << na->nick; ExecuteQuery(query); } @@ -736,7 +744,7 @@ class DBMySQLWrite : public DBMySQL void OnMakeNickRequest(NickRequest *nr) { - mysqlpp::Query query(Me->Con); + mysqlpp::Query query( |
