diff options
-rw-r--r-- | include/account.h | 4 | ||||
-rw-r--r-- | include/mail.h | 8 | ||||
-rw-r--r-- | include/modes.h | 4 | ||||
-rw-r--r-- | include/modules.h | 15 | ||||
-rw-r--r-- | include/servers.h | 2 | ||||
-rw-r--r-- | include/services.h | 1 | ||||
-rw-r--r-- | src/core/db_plain.cpp | 24 | ||||
-rw-r--r-- | src/protocol/inspircd12.cpp | 4 |
8 files changed, 47 insertions, 15 deletions
diff --git a/include/account.h b/include/account.h index 004760699..5449bd93a 100644 --- a/include/account.h +++ b/include/account.h @@ -69,9 +69,7 @@ enum NickCoreFlag NI_END }; -/** XXX: this really needs to die with fire and be merged with metadata into NickCore or something. - */ -class CoreExport NickRequest +class CoreExport NickRequest : public Extensible { public: NickRequest(const std::string &nickname); diff --git a/include/mail.h b/include/mail.h index d64e36f30..5fe25ab08 100644 --- a/include/mail.h +++ b/include/mail.h @@ -7,10 +7,10 @@ extern CoreExport bool MailValidate(const std::string &email); class MailThread : public Thread { private: - const std::string MailTo; - const std::string Addr; - const std::string Subject; - const std::string Message; + std::string MailTo; + std::string Addr; + std::string Subject; + std::string Message; bool Success; public: diff --git a/include/modes.h b/include/modes.h index 622627774..d1b601b31 100644 --- a/include/modes.h +++ b/include/modes.h @@ -80,7 +80,7 @@ class CoreExport Mode /* Class of mode this is */ ModeClass Class; /* The mode name, as a string */ - const std::string NameAsString; + std::string NameAsString; /* Mode char for this */ char ModeChar; /* Type of mode this is */ @@ -119,7 +119,7 @@ class CoreExport UserMode : public Mode virtual ~UserMode(); }; -class UserModeParam : public UserMode +class CoreExport UserModeParam : public UserMode { public: /** Default constructor diff --git a/include/modules.h b/include/modules.h index 174fb6e04..f3bc20bfb 100644 --- a/include/modules.h +++ b/include/modules.h @@ -26,7 +26,6 @@ typedef HMODULE ano_module_t; #define dlopen(file, unused) LoadLibrary(file) - E const char *dlerror(); #define dlsym(file, symbol) (HMODULE)GetProcAddress(file, symbol) #define dlclose(file) FreeLibrary(file) ? 0 : 1 #define ano_modclearerr() SetLastError(0) @@ -633,6 +632,14 @@ class CoreExport Module */ virtual EventReturn OnDatabaseReadMetadata(NickAlias *na, const std::string &key, const std::vector<std::string> ¶ms) { return EVENT_CONTINUE; } + /** Called when nickrequest metadata is read from the database + * @param nr The nickrequest + * @parm key The metadata key + * @param params The params from the database + * @return EVENT_CONTINUE to let other modules decide, EVENT_STOP to stop processing + */ + virtual EventReturn OnDatabaseReadMetadata(NickRequest *nr, const std::string &key, const std::vector<std::string> ¶ms) { return EVENT_CONTINUE; } + /** Called when botinfo metadata is read from the database * @param bi The botinfo * @param key The metadata key @@ -661,6 +668,12 @@ class CoreExport Module */ virtual void OnDatabaseWriteMetadata(void (*WriteMetadata)(const std::string &, const std::string &), NickAlias *na) { } + /** Called when we are wrting metadata for a nickrequest + * @param WriteMetata A callback function used to insert the metadata + * @param nr The nick request + */ + virtual void OnDatabaseWriteMetadata(void (*WriteMetadata)(const std::string &, const std::string &), NickRequest *nr) { } + /** Called when we are writing metadata for a botinfo * @param WriteMetata A callback function used to insert the metadata * @param bi The botinfo diff --git a/include/servers.h b/include/servers.h index f6a5933ed..3a26e1546 100644 --- a/include/servers.h +++ b/include/servers.h @@ -71,7 +71,7 @@ enum ServerFlag /** Class representing a server */ -class Server : public Flags<ServerFlag> +class CoreExport Server : public Flags<ServerFlag> { private: /* Server name */ diff --git a/include/services.h b/include/services.h index a26802983..4a8eb8d77 100644 --- a/include/services.h +++ b/include/services.h @@ -91,6 +91,7 @@ # define inet_ntop inet_ntop_ # define MARK_DEPRECATED +extern CoreExport const char *dlerror(); extern CoreExport int inet_pton(int af, const char *src, void *dst); extern CoreExport const char *inet_ntop(int af, const void *src, char *dst, size_t size); #endif diff --git a/src/core/db_plain.cpp b/src/core/db_plain.cpp index 21164584f..fba374667 100644 --- a/src/core/db_plain.cpp +++ b/src/core/db_plain.cpp @@ -24,6 +24,7 @@ enum MDType MD_NONE, MD_NC, MD_NA, + MD_NR, MD_BI, MD_CH }; @@ -99,6 +100,11 @@ static void ReadDatabase(Module *m = NULL) na = findnick(params[2].c_str()); Type = MD_NA; } + else if (params[0] == "NR") + { + nr = findrequestnick(params[1].c_str()); + Type = MD_NR; + } else if (params[0] == "BI") { bi = findbot(params[1]); @@ -147,6 +153,22 @@ static void ReadDatabase(Module *m = NULL) Alog() << "[db_plain]: " << ex.GetReason(); } } + else if (Type == MD_NR && nr) + { + try + { + if (m) + m->OnDatabaseReadMetadata(nr, key, params); + else + { + FOREACH_RESULT(I_OnDatabaseReadMetadata, OnDatabaseReadMetadata(nr, key, params)); + } + } + catch (DatabaseException& ex) + { + Alog() << "[db_plain]: " << ex.GetReason(); + } + } else if (Type == MD_BI && bi) { try @@ -918,6 +940,8 @@ class DBPlain : public Module for (NickRequest *nr = nrlists[i]; nr; nr = nr->next) { db << "NR " << nr->nick << " " << nr->passcode << " " << nr->password << " " << nr->email << " " << nr->requested << endl; + + FOREACH_MOD(I_OnDatabaseWriteMetadata, OnDatabaseWriteMetadata(WriteMetadata, nr)); } } diff --git a/src/protocol/inspircd12.cpp b/src/protocol/inspircd12.cpp index 22a143493..5e20edb6f 100644 --- a/src/protocol/inspircd12.cpp +++ b/src/protocol/inspircd12.cpp @@ -1113,11 +1113,7 @@ int anope_event_capab(const char *source, int ac, const char **av) ModeManager::AddChannelMode(new ChannelMode(CMODE_NOKICK, "CMODE_NOKICK", 'Q')); continue; case 'R': -<<<<<<< HEAD - ModeManager::AddChannelMode(new ChannelMode(CMODE_REGISTEREDONLY, 'R')); -======= ModeManager::AddChannelMode(new ChannelMode(CMODE_REGISTEREDONLY, "CMODE_REGISTEREDONLY", 'R')); ->>>>>>> modes continue; case 'S': ModeManager::AddChannelMode(new ChannelMode(CMODE_STRIPCOLOR, "CMODE_STRIPCOLOR", 'S')); |