X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fhelperfuncs.cpp;h=e331ba9dc6c9b2bf980df1ba1607dd94602c5b01;hb=48a400f2e068527b338ceecf8ed1dde2da971ca9;hp=c9135679cfd0e8d6a31d4aeab4b484d1ee0685dd;hpb=b8c3f13887711c5d260b66e1bdedfebd7b8d1626;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index c9135679c..e331ba9dc 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -101,7 +101,7 @@ bool InspIRCd::IsValidMask(const std::string &mask) if (exclamation != 1 || atsign != 1) return false; - if (mask.length() > 250) + if (mask.length() > ServerInstance->Config->Limits.GetMaxMask()) return false; return true; @@ -193,7 +193,7 @@ void InspIRCd::ProcessColors(file_cache& input) } /* true for valid channel name, false else */ -bool IsChannelHandler::Call(const std::string& chname) +bool InspIRCd::DefaultIsChannel(const std::string& chname) { if (chname.empty() || chname.length() > ServerInstance->Config->Limits.ChanMax) return false; @@ -216,7 +216,7 @@ bool IsChannelHandler::Call(const std::string& chname) } /* true for valid nickname, false else */ -bool IsNickHandler::Call(const std::string& n) +bool InspIRCd::DefaultIsNick(const std::string& n) { if (n.empty() || n.length() > ServerInstance->Config->Limits.NickMax) return false; @@ -243,7 +243,7 @@ bool IsNickHandler::Call(const std::string& n) } /* return true for good ident, false else */ -bool IsIdentHandler::Call(const std::string& n) +bool InspIRCd::DefaultIsIdent(const std::string& n) { if (n.empty()) return false; @@ -331,7 +331,7 @@ unsigned long InspIRCd::Duration(const std::string &str) return total + subtotal; } -const char* InspIRCd::Format(va_list &vaList, const char* formatString) +std::string InspIRCd::Format(va_list& vaList, const char* formatString) { static std::vector formatBuffer(1024); @@ -351,12 +351,12 @@ const char* InspIRCd::Format(va_list &vaList, const char* formatString) formatBuffer.resize(formatBuffer.size() * 2); } - return &formatBuffer[0]; + return std::string(&formatBuffer[0]); } -const char* InspIRCd::Format(const char* formatString, ...) +std::string InspIRCd::Format(const char* formatString, ...) { - const char* ret; + std::string ret; VAFORMAT(ret, formatString, formatString); return ret; } @@ -384,7 +384,7 @@ std::string InspIRCd::TimeString(time_t curtime, const char* format, bool utc) // This is the default format used by asctime without the terminating new line. if (!format) - format = "%a %b %d %H:%M:%S %Y"; + format = "%a %b %d %Y %H:%M:%S"; char buffer[512]; if (!strftime(buffer, sizeof(buffer), format, timeinfo)) @@ -393,13 +393,13 @@ std::string InspIRCd::TimeString(time_t curtime, const char* format, bool utc) return buffer; } -std::string InspIRCd::GenRandomStr(int length, bool printable) +std::string InspIRCd::GenRandomStr(unsigned int length, bool printable) { char* buf = new char[length]; GenRandom(buf, length); std::string rv; rv.resize(length); - for(int i=0; i < length; i++) + for(size_t i = 0; i < length; i++) rv[i] = printable ? 0x3F + (buf[i] & 0x3F) : buf[i]; delete[] buf; return rv; @@ -415,7 +415,7 @@ unsigned long InspIRCd::GenRandomInt(unsigned long max) } // This is overridden by a higher-quality algorithm when SSL support is loaded -void GenRandomHandler::Call(char *output, size_t max) +void InspIRCd::DefaultGenRandom(char* output, size_t max) { for(unsigned int i=0; i < max; i++) #ifdef _WIN32 @@ -430,28 +430,3 @@ void GenRandomHandler::Call(char *output, size_t max) output[i] = random(); #endif } - -ModResult OnCheckExemptionHandler::Call(User* user, Channel* chan, const std::string& restriction) -{ - unsigned int mypfx = chan->GetPrefixValue(user); - char minmode = 0; - std::string current; - - irc::spacesepstream defaultstream(ServerInstance->Config->ConfValue("options")->getString("exemptchanops")); - - while (defaultstream.GetToken(current)) - { - std::string::size_type pos = current.find(':'); - if (pos == std::string::npos) - continue; - if (!current.compare(0, pos, restriction)) - minmode = current[pos+1]; - } - - PrefixMode* mh = ServerInstance->Modes->FindPrefixMode(minmode); - if (mh && mypfx >= mh->GetPrefixRank()) - return MOD_RES_ALLOW; - if (mh || minmode == '*') - return MOD_RES_DENY; - return MOD_RES_PASSTHRU; -}