]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/helperfuncs.cpp
Add support for blocking tag messages with the deaf mode.
[user/henk/code/inspircd.git] / src / helperfuncs.cpp
index 846feab5072fd21e7c6ad63b0da9f7ed5b56fa94..800d147ebf8e4989b22bbe11b1631c7effd2499e 100644 (file)
@@ -1,13 +1,18 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
+ *   Copyright (C) 2019-2020 Matt Schatz <genius3000@g3k.solutions>
+ *   Copyright (C) 2018 linuxdaemon <linuxdaemon.irc@gmail.com>
+ *   Copyright (C) 2013 Daniel Vassdal <shutter@canternet.org>
+ *   Copyright (C) 2013 Adam <Adam@anope.org>
+ *   Copyright (C) 2012-2015 Attila Molnar <attilamolnar@hush.com>
+ *   Copyright (C) 2012-2014, 2017-2018, 2020 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2012, 2018 Robby <robby@chatbelgie.be>
+ *   Copyright (C) 2012 ChrisTX <xpipe@hotmail.de>
  *   Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
- *   Copyright (C) 2006-2008 Robin Burchell <robin+git@viroteck.net>
- *   Copyright (C) 2005-2008 Craig Edwards <craigedwards@brainbox.cc>
- *   Copyright (C) 2008 Thomas Stagner <aquanight@inspircd.org>
- *   Copyright (C) 2006-2007 Oliver Lupton <oliverlupton@gmail.com>
  *   Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
- *   Copyright (C) 2003-2019 Anope Team <team@anope.org>
+ *   Copyright (C) 2006-2008 Robin Burchell <robin+git@viroteck.net>
+ *   Copyright (C) 2005, 2007, 2010 Craig Edwards <brain@inspircd.org>
  *
  * This file is part of InspIRCd.  InspIRCd is free software: you can
  * redistribute it and/or modify it under the terms of the GNU General Public
@@ -30,8 +35,6 @@
 
 #include "inspircd.h"
 #include "xline.h"
-#include "exitcodes.h"
-#include <iostream>
 
 /* Find a user record by nickname and return a pointer to it */
 User* InspIRCd::FindNick(const std::string &nick)
@@ -338,18 +341,6 @@ bool InspIRCd::IsSID(const std::string &str)
                         ((str[2] >= 'A' && str[2] <= 'Z') || isdigit(str[2])));
 }
 
-void InspIRCd::CheckRoot()
-{
-#ifndef _WIN32
-       if (geteuid() == 0)
-       {
-               std::cout << "ERROR: You are running an irc server as root! DO NOT DO THIS!" << std::endl << std::endl;
-               this->Logs->Log("STARTUP", LOG_DEFAULT, "Can't start as root");
-               Exit(EXIT_STATUS_ROOT);
-       }
-#endif
-}
-
 /** A lookup table of values for multiplier characters used by
  * InspIRCd::Duration(). In this lookup table, the indexes for
  * the ascii values 'm' and 'M' have the value '60', the indexes
@@ -390,7 +381,7 @@ bool InspIRCd::Duration(const std::string& str, unsigned long& duration)
                }
                else
                {
-                       /* Found something thats not a number, find out how much
+                       /* Found something that's not a number, find out how much
                         * it multiplies the built up number by, multiply the total
                         * and reset the built up number.
                         */
@@ -432,7 +423,10 @@ bool InspIRCd::IsValidDuration(const std::string& duration)
 
 std::string InspIRCd::DurationString(time_t duration)
 {
-       time_t years = duration / 31536000;
+       if (duration == 0)
+               return "0s";
+
+       time_t years = duration / 31449600;
        time_t weeks = (duration / 604800) % 52;
        time_t days = (duration / 86400) % 7;
        time_t hours = (duration / 3600) % 24;
@@ -521,14 +515,12 @@ std::string InspIRCd::TimeString(time_t curtime, const char* format, bool utc)
 
 std::string InspIRCd::GenRandomStr(unsigned int length, bool printable)
 {
-       char* buf = new char[length];
-       GenRandom(buf, length);
-       std::string rv;
-       rv.resize(length);
-       for(size_t i = 0; i < length; i++)
-               rv[i] = printable ? 0x3F + (buf[i] & 0x3F) : buf[i];
-       delete[] buf;
-       return rv;
+       std::vector<char> str(length);
+       GenRandom(&str[0], length);
+       if (printable)
+               for (size_t i = 0; i < length; i++)
+                       str[i] = 0x3F + (str[i] & 0x3F);
+       return std::string(&str[0], str.size());
 }
 
 // NOTE: this has a slight bias for lower values if max is not a power of 2.
@@ -540,7 +532,7 @@ unsigned long InspIRCd::GenRandomInt(unsigned long max)
        return rv % max;
 }
 
-// This is overridden by a higher-quality algorithm when SSL support is loaded
+// This is overridden by a higher-quality algorithm when TLS (SSL) support is loaded
 void InspIRCd::DefaultGenRandom(char* output, size_t max)
 {
 #if defined HAS_ARC4RANDOM_BUF