X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_rline.cpp;h=f4c675919313fba688290ac00d8cb9eb8a98c713;hb=HEAD;hp=1eb2d8ac35be6c2a73d2f94d3c0c4f54ab23ff67;hpb=d5b50d9ed107d6a8b9241a831c1dae713963b524;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_rline.cpp b/src/modules/m_rline.cpp index 1eb2d8ac3..f4c675919 100644 --- a/src/modules/m_rline.cpp +++ b/src/modules/m_rline.cpp @@ -1,10 +1,16 @@ /* * InspIRCd -- Internet Relay Chat Daemon * - * Copyright (C) 2009 Daniel De Graaf - * Copyright (C) 2008 Craig Edwards + * Copyright (C) 2018 linuxdaemon + * Copyright (C) 2017, 2019 Matt Schatz + * Copyright (C) 2013, 2017-2018, 2020 Sadie Powell + * Copyright (C) 2012-2013, 2016 Attila Molnar + * Copyright (C) 2012, 2019 Robby + * Copyright (C) 2009-2010 Daniel De Graaf + * Copyright (C) 2009 Uli Schlachter + * Copyright (C) 2008-2009 Robin Burchell * Copyright (C) 2008 Thomas Stagner - * Copyright (C) 2008 Robin Burchell + * Copyright (C) 2008 Craig Edwards * * 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 @@ -31,15 +37,6 @@ static bool added_zline = false; class RLine : public XLine { public: - - /** Create a R-line. - * @param s_time The set time - * @param d The duration of the xline - * @param src The sender of the xline - * @param re The reason of the xline - * @param regex Pattern to match with - * @ - */ RLine(time_t s_time, unsigned long d, const std::string& src, const std::string& re, const std::string& regexs, dynamic_reference& rxfactory) : XLine(s_time, d, src, re, "R") , matchtext(regexs) @@ -50,8 +47,6 @@ class RLine : public XLine regex = rxfactory->Create(regexs); } - /** Destructor - */ ~RLine() { delete regex; @@ -80,9 +75,9 @@ class RLine : public XLine ZLine* zl = new ZLine(ServerInstance->Time(), duration ? expiry - ServerInstance->Time() : 0, ServerInstance->Config->ServerName.c_str(), reason.c_str(), u->GetIPString()); if (ServerInstance->XLines->AddLine(zl, NULL)) { - std::string timestr = InspIRCd::TimeString(zl->expiry); - ServerInstance->SNO->WriteToSnoMask('x', "Z-line added due to R-line match on %s%s%s: %s", - zl->ipaddr.c_str(), zl->duration ? " to expire on " : "", zl->duration ? timestr.c_str() : "", zl->reason.c_str()); + std::string expirystr = zl->duration ? InspIRCd::Format(" to expire in %s (on %s)", InspIRCd::DurationString(zl->duration).c_str(), InspIRCd::TimeString(zl->expiry).c_str()) : ""; + ServerInstance->SNO->WriteToSnoMask('x', "Z-line added due to R-line match on %s%s: %s", + zl->ipaddr.c_str(), expirystr.c_str(), zl->reason.c_str()); added_zline = true; } else @@ -137,7 +132,7 @@ class CommandRLine : public Command public: CommandRLine(Module* Creator, RLineFactory& rlf) : Command(Creator,"RLINE", 1, 3), factory(rlf) { - flags_needed = 'o'; this->syntax = " [] :"; + flags_needed = 'o'; this->syntax = " [ :]"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE @@ -161,7 +156,7 @@ class CommandRLine : public Command } catch (ModuleException &e) { - ServerInstance->SNO->WriteToSnoMask('a',"Could not add RLINE: " + e.GetReason()); + ServerInstance->SNO->WriteToSnoMask('a', "Could not add R-line: " + e.GetReason()); } if (r) @@ -170,13 +165,13 @@ class CommandRLine : public Command { if (!duration) { - ServerInstance->SNO->WriteToSnoMask('x',"%s added permanent R-line for %s: %s", user->nick.c_str(), parameters[0].c_str(), parameters[2].c_str()); + ServerInstance->SNO->WriteToSnoMask('x', "%s added permanent R-line for %s: %s", user->nick.c_str(), parameters[0].c_str(), parameters[2].c_str()); } else { - time_t c_requires_crap = duration + ServerInstance->Time(); - std::string timestr = InspIRCd::TimeString(c_requires_crap); - ServerInstance->SNO->WriteToSnoMask('x', "%s added timed R-line for %s to expire on %s: %s", user->nick.c_str(), parameters[0].c_str(), timestr.c_str(), parameters[2].c_str()); + ServerInstance->SNO->WriteToSnoMask('x', "%s added timed R-line for %s, expires in %s (on %s): %s", + user->nick.c_str(), parameters[0].c_str(), InspIRCd::DurationString(duration).c_str(), + InspIRCd::TimeString(ServerInstance->Time() + duration).c_str(), parameters[2].c_str()); } ServerInstance->XLines->ApplyLines(); @@ -198,7 +193,7 @@ class CommandRLine : public Command } else { - user->WriteNotice("*** R-line " + parameters[0] + " not found in list, try /stats R."); + user->WriteNotice("*** R-line " + parameters[0] + " not found on the list."); } } @@ -246,7 +241,7 @@ class ModuleRLine : public Module, public Stats::EventListener Version GetVersion() CXX11_OVERRIDE { - return Version("RLINE: Regexp user banning.", VF_COMMON | VF_VENDOR, rxfactory ? rxfactory->name : ""); + return Version("Adds the /RLINE command which allows server operators to prevent users matching a nickname!username@hostname+realname regular expression from connecting to the server.", VF_COMMON | VF_VENDOR, rxfactory ? rxfactory->name : ""); } ModResult OnUserRegister(LocalUser* user) CXX11_OVERRIDE @@ -301,7 +296,7 @@ class ModuleRLine : public Module, public Stats::EventListener if (stats.GetSymbol() != 'R') return MOD_RES_PASSTHRU; - ServerInstance->XLines->InvokeStats("R", 223, stats); + ServerInstance->XLines->InvokeStats("R", stats); return MOD_RES_DENY; }