From d270910aceacc808a9c26e0fd38b2f4047cc462e Mon Sep 17 00:00:00 2001 From: Matt Ullman Date: Tue, 12 Jan 2016 09:31:58 -0500 Subject: hs_group: Fix grammar --- modules/commands/hs_group.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/commands/hs_group.cpp b/modules/commands/hs_group.cpp index 232b2bef3..9924d7836 100644 --- a/modules/commands/hs_group.cpp +++ b/modules/commands/hs_group.cpp @@ -55,9 +55,9 @@ class CommandHSGroup : public Command { this->Sync(na); if (!na->GetVhostIdent().empty()) - source.Reply(_("All vhost's in the group \002%s\002 have been set to \002%s\002@\002%s\002."), source.nc->display.c_str(), na->GetVhostIdent().c_str(), na->GetVhostHost().c_str()); + source.Reply(_("All vhosts in the group \002%s\002 have been set to \002%s\002@\002%s\002."), source.nc->display.c_str(), na->GetVhostIdent().c_str(), na->GetVhostHost().c_str()); else - source.Reply(_("All vhost's in the group \002%s\002 have been set to \002%s\002."), source.nc->display.c_str(), na->GetVhostHost().c_str()); + source.Reply(_("All vhosts in the group \002%s\002 have been set to \002%s\002."), source.nc->display.c_str(), na->GetVhostHost().c_str()); } else source.Reply(HOST_NOT_ASSIGNED); -- cgit From 510045858fe9f795370cc523d99f0afb3eb545f3 Mon Sep 17 00:00:00 2001 From: miwob Date: Tue, 12 Jan 2016 20:00:08 +0100 Subject: example.conf: announce operserv/chankill as well --- data/example.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/example.conf b/data/example.conf index dcaa68801..763eed4c7 100644 --- a/data/example.conf +++ b/data/example.conf @@ -737,7 +737,7 @@ log log { target = "globops" - admin = "global/* operserv/mode operserv/kick operserv/akill operserv/s*line operserv/noop operserv/jupe operserv/oline operserv/set operserv/svsnick operserv/svsjoin operserv/svspart nickserv/getpass */drop" + admin = "global/* operserv/chankill operserv/mode operserv/kick operserv/akill operserv/s*line operserv/noop operserv/jupe operserv/oline operserv/set operserv/svsnick operserv/svsjoin operserv/svspart nickserv/getpass */drop" servers = "squit" users = "oper" other = "expire/* bados akill/*" -- cgit From 7f418a58da1781b5b815f75a50caf4338f380af0 Mon Sep 17 00:00:00 2001 From: miwob Date: Wed, 13 Jan 2016 15:58:13 +0100 Subject: hybrid.cpp: clean up style to match with other code; update copyright header --- modules/protocol/hybrid.cpp | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/modules/protocol/hybrid.cpp b/modules/protocol/hybrid.cpp index e50c335d9..ad8679aa1 100644 --- a/modules/protocol/hybrid.cpp +++ b/modules/protocol/hybrid.cpp @@ -1,7 +1,7 @@ /* ircd-hybrid-8 protocol module * * (C) 2003-2014 Anope Team - * (C) 2012-2015 ircd-hybrid development team + * (C) 2012-2016 ircd-hybrid development team * * Please read COPYING and README for further details. * @@ -19,6 +19,7 @@ class HybridProto : public IRCDProto BotInfo *FindIntroduced() { BotInfo *bi = Config->GetClient("OperServ"); + if (bi && bi->introduced) return bi; @@ -29,9 +30,9 @@ class HybridProto : public IRCDProto return NULL; } - void SendSVSKillInternal(const MessageSource &source, User *user, const Anope::string &buf) anope_override + void SendSVSKillInternal(const MessageSource &source, User *u, const Anope::string &buf) anope_override { - IRCDProto::SendSVSKillInternal(source, user, buf); + IRCDProto::SendSVSKillInternal(source, u, buf); user->KillInternal(source, buf); } @@ -111,23 +112,21 @@ class HybridProto : public IRCDProto UplinkSocket::Message(Config->GetClient("OperServ")) << "UNRESV * " << x->mask; } - void SendJoin(User *user, Channel *c, const ChannelStatus *status) anope_override + void SendJoin(User *u, Channel *c, const ChannelStatus *status) anope_override { /* - * Note that we must send our modes with the SJOIN and - * can not add them to the mode stacker because ircd-hybrid - * does not allow *any* client to op itself + * Note that we must send our modes with the SJOIN and can not add them to the + * mode stacker because ircd-hybrid does not allow *any* client to op itself */ - UplinkSocket::Message() << "SJOIN " << c->creation_time << " " << c->name << " +" - << c->GetModes(true, true) << " :" - << (status != NULL ? status->BuildModePrefixList() : "") << user->GetUID(); + UplinkSocket::Message() << "SJOIN " << c->creation_time << " " << c->name << " +" << c->GetModes(true, true) << " :" + << (status != NULL ? status->BuildModePrefixList() : "") << u->GetUID(); /* And update our internal status for this user since this is not going through our mode handling system */ - if (status != NULL) + if (status) { - ChanUserContainer *uc = c->FindUser(user); + ChanUserContainer *uc = c->FindUser(u); - if (uc != NULL) + if (uc) uc->status = *status; } } @@ -186,22 +185,20 @@ class HybridProto : public IRCDProto UplinkSocket::Message() << "PASS " << Config->Uplinks[Anope::CurrentUplink].password << " TS 6 :" << Me->GetSID(); /* - * As of October 13, 2012, ircd-hybrid-8 does support the following capabilities + * As of January 13, 2016, ircd-hybrid-8 does support the following capabilities * which are required to work with IRC-services: * * QS - Can handle quit storm removal * EX - Can do channel +e exemptions - * CHW - Can do channel wall @# * IE - Can do invite exceptions - * KNOCK - Supports KNOCK + * CHW - Can do channel wall @# * TBURST - Supports topic burst * ENCAP - Supports ENCAP * HOPS - Supports HalfOps * SVS - Supports services * EOB - Supports End Of Burst message - * TS6 - Capable of TS6 support */ - UplinkSocket::Message() << "CAPAB :QS EX CHW IE ENCAP TBURST SVS HOPS EOB TS6"; + UplinkSocket::Message() << "CAPAB :QS EX CHW IE ENCAP TBURST SVS HOPS EOB"; SendServer(Me); @@ -330,6 +327,7 @@ struct IRCDMessageBMask : IRCDMessage { spacesepstream bans(params[3]); Anope::string token; + while (bans.GetToken(token)) c->SetModeInternal(source, mode, token); } @@ -436,9 +434,11 @@ struct IRCDMessageSJoin : IRCDMessage void Run(MessageSource &source, const std::vector ¶ms) anope_override { Anope::string modes; + if (params.size() >= 3) for (unsigned i = 2; i < params.size() - 1; ++i) modes += " " + params[i]; + if (!modes.empty()) modes.erase(modes.begin()); @@ -486,6 +486,7 @@ struct IRCDMessageSVSMode : IRCDMessage void Run(MessageSource &source, const std::vector ¶ms) anope_override { User *u = User::Find(params[0]); + if (!u) return; -- cgit From 9c9df2ad1fc8e8f03f4b28d21b4dcc2895d3795c Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 19 Jan 2016 08:30:06 -0500 Subject: Document ns_no_expire nick default --- data/nickserv.example.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/data/nickserv.example.conf b/data/nickserv.example.conf index 4b383f80e..ee036d086 100644 --- a/data/nickserv.example.conf +++ b/data/nickserv.example.conf @@ -107,6 +107,7 @@ module * - msg: Services messages will be sent as PRIVMSGs instead of NOTICEs, requires * options:useprivmsg to be enabled as well * - ns_keepmodes: Enables keepmodes, which retains user modes across sessions + * - ns_no_expire: Enables no expire. Unconfirmed expire overrules this. * * This directive is optional, if left blank, the options will default to ns_secure, memo_signon, and * memo_receive. If you really want no defaults, use "none" by itself as the option. -- cgit From 4771af1cb89cd5d9a983d83e108b9fb8de9b5f52 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 19 Jan 2016 08:30:35 -0500 Subject: Couple user find by nick fixes --- modules/commands/ns_group.cpp | 2 +- modules/commands/ns_info.cpp | 2 +- modules/pseudoclients/memoserv.cpp | 4 ++-- modules/pseudoclients/nickserv.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/commands/ns_group.cpp b/modules/commands/ns_group.cpp index 11e4091cd..8d85a305d 100644 --- a/modules/commands/ns_group.cpp +++ b/modules/commands/ns_group.cpp @@ -259,7 +259,7 @@ class CommandNSUngroup : public Command source.Reply(_("Nick %s has been ungrouped from %s."), na->nick.c_str(), oldcore->display.c_str()); - User *user = User::Find(na->nick); + User *user = User::Find(na->nick, true); if (user) /* The user on the nick who was ungrouped may be identified to the old group, set -r */ user->RemoveMode(source.service, "REGISTERED"); diff --git a/modules/commands/ns_info.cpp b/modules/commands/ns_info.cpp index 443b6a9b7..692c4abf3 100644 --- a/modules/commands/ns_info.cpp +++ b/modules/commands/ns_info.cpp @@ -40,7 +40,7 @@ class CommandNSInfo : public Command bool nick_online = false, show_hidden = false; /* Is the real owner of the nick we're looking up online? -TheShadow */ - User *u2 = User::Find(na->nick); + User *u2 = User::Find(na->nick, true); if (u2 && u2->Account() == na->nc) { nick_online = true; diff --git a/modules/pseudoclients/memoserv.cpp b/modules/pseudoclients/memoserv.cpp index f4ba325fb..2c4c53f16 100644 --- a/modules/pseudoclients/memoserv.cpp +++ b/modules/pseudoclients/memoserv.cpp @@ -49,7 +49,7 @@ class MemoServCore : public Module, public MemoServService if (mi == NULL) return MEMO_INVALID_TARGET; - User *sender = User::Find(source); + User *sender = User::Find(source, true); if (sender != NULL && !sender->HasPriv("memoserv/no-limit") && !force) { time_t send_delay = Config->GetModule("memoserv")->Get("senddelay"); @@ -103,7 +103,7 @@ class MemoServCore : public Module, public MemoServService for (unsigned i = 0; i < nc->aliases->size(); ++i) { const NickAlias *na = nc->aliases->at(i); - User *user = User::Find(na->nick); + User *user = User::Find(na->nick, true); if (user && user->IsIdentified()) user->SendMessage(MemoServ, MEMO_NEW_MEMO_ARRIVED, source.c_str(), Config->StrictPrivmsg.c_str(), MemoServ->nick.c_str(), mi->memos->size()); } diff --git a/modules/pseudoclients/nickserv.cpp b/modules/pseudoclients/nickserv.cpp index 5d3579ced..b3d7bcc3b 100644 --- a/modules/pseudoclients/nickserv.cpp +++ b/modules/pseudoclients/nickserv.cpp @@ -535,7 +535,7 @@ class NickServCore : public Module, public NickServService NickAlias *na = it->second; ++it; - User *u = User::Find(na->nick); + User *u = User::Find(na->nick, true); if (u && (u->IsIdentified(true) || u->IsRecognized())) na->last_seen = Anope::CurTime; -- cgit From 9d30e1d63f5a34cd14eacdf3abd38d29362ddd35 Mon Sep 17 00:00:00 2001 From: miwob Date: Tue, 19 Jan 2016 20:07:45 +0100 Subject: Update SendSGLine() in hybrid's protocol module to add support for temporary x-lines --- modules/protocol/hybrid.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/protocol/hybrid.cpp b/modules/protocol/hybrid.cpp index e50c335d9..40ecc2981 100644 --- a/modules/protocol/hybrid.cpp +++ b/modules/protocol/hybrid.cpp @@ -79,7 +79,7 @@ class HybridProto : public IRCDProto void SendSGLine(User *, const XLine *x) anope_override { - UplinkSocket::Message(Config->GetClient("OperServ")) << "XLINE * " << x->mask << " 0 :" << x->GetReason(); + UplinkSocket::Message(Config->GetClient("OperServ")) << "XLINE * " << x->mask << " " (x->expires ? x->expires - Anope::CurTime : 0) " :" << x->GetReason(); } void SendSZLineDel(const XLine *x) anope_override -- cgit From 164b349ef9cfbc0f275333b60b0786848ce0f2e7 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 19 Jan 2016 16:25:02 -0500 Subject: Fix various inconsistencies/crashes related to having multiple opers configured for the same user through combinations of os_oper/config/m_sql_oper --- modules/commands/os_oper.cpp | 2 ++ modules/extra/m_sql_oper.cpp | 44 ++++++++++++++++++++++++++++++++++---------- src/config.cpp | 7 +++++++ 3 files changed, 43 insertions(+), 10 deletions(-) diff --git a/modules/commands/os_oper.cpp b/modules/commands/os_oper.cpp index 7b74af5ea..751c76cc9 100644 --- a/modules/commands/os_oper.cpp +++ b/modules/commands/os_oper.cpp @@ -135,6 +135,8 @@ class CommandOSOper : public Command source.Reply(_("Nick \002%s\002 is not a Services Operator."), oper.c_str()); else if (!HasPrivs(source, na->nc->o->ot)) source.Reply(ACCESS_DENIED); + else if (std::find(Config->Opers.begin(), Config->Opers.end(), na->nc->o) != Config->Opers.end()) + source.Reply(_("Oper \002%s\002 is configured in the configuration file(s) and can not be removed by this command."), na->nc->display.c_str()); else { delete na->nc->o; diff --git a/modules/extra/m_sql_oper.cpp b/modules/extra/m_sql_oper.cpp index 3203021bc..060893e19 100644 --- a/modules/extra/m_sql_oper.cpp +++ b/modules/extra/m_sql_oper.cpp @@ -17,6 +17,18 @@ class SQLOperResult : public SQL::Interface ~SQLOperResultDeleter() { delete res; } }; + void Deoper() + { + if (user->Account() && user->Account()->o && dynamic_cast(user->Account()->o)) + { + delete user->Account()->o; + user->Account()->o = NULL; + + Log(this->owner) << "m_sql_oper: Removed services operator from " << user->nick << " (" << user->Account()->display << ")"; + user->RemoveMode(OperServ, "OPER"); // Probably not set, just incase + } + } + public: SQLOperResult(Module *m, User *u) : SQL::Interface(m), user(u) { } @@ -24,9 +36,16 @@ class SQLOperResult : public SQL::Interface { SQLOperResultDeleter d(this); - if (!user || !user->Account() || r.Rows() == 0) + if (!user || !user->Account()) return; + if (r.Rows() == 0) + { + Log(LOG_DEBUG) << "m_sql_oper: Got 0 rows for " << user->nick; + Deoper(); + return; + } + Anope::string opertype; try { @@ -34,6 +53,7 @@ class SQLOperResult : public SQL::Interface } catch (const SQL::Exception &) { + Log(this) << "Expected column named \"opertype\" but one was not found"; return; } @@ -44,19 +64,15 @@ class SQLOperResult : public SQL::Interface { modes = r.Get(0, "modes"); } - catch (const SQL::Exception &) { } + catch (const SQL::Exception &) + { + // Common case here is an exception, but this probably doesn't get this far often + } BotInfo *OperServ = Config->GetClient("OperServ"); if (opertype.empty()) { - if (user->Account() && user->Account()->o && dynamic_cast(user->Account()->o)) - { - delete user->Account()->o; - user->Account()->o = NULL; - - Log(this->owner) << "m_sql_oper: Removed services operator from " << user->nick << " (" << user->Account()->display << ")"; - user->RemoveMode(OperServ, "OPER"); // Probably not set, just incase - } + Deoper(); return; } @@ -67,9 +83,17 @@ class SQLOperResult : public SQL::Interface return; } + if (user->Account()->o && !dynamic_cast(user->Account()->o)) + { + Log(this) << "Oper " << user->Account()->display << " has type " << opertype << ", but is already configured as an oper of type " << user->Account()->o->ot->GetName(); + return; + } + if (!user->Account()->o || user->Account()->o->ot != ot) { Log(this->owner) << "m_sql_oper: Tieing oper " << user->nick << " to type " << opertype; + + delete user->Account()->o; user->Account()->o = new SQLOper(user->Account()->display, ot); } diff --git a/src/config.cpp b/src/config.cpp index 18a6c5d39..b6972bc42 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -502,6 +502,13 @@ Conf::Conf() : Block("") if (!na) continue; + if (!na->nc || na->nc->o) + { + // If the account is already an oper it might mean two oper blocks for the same nick, or + // something else has configured them as an oper (like a module) + continue; + } + na->nc->o = o; Log() << "Tied oper " << na->nc->display << " to type " << o->ot->GetName(); } -- cgit From 2356a1caabf27cf9577030a6aef42fc9471ef630 Mon Sep 17 00:00:00 2001 From: miwob Date: Wed, 20 Jan 2016 19:18:52 +0100 Subject: Update SendSQLine() in hybrid's protocol module to use non-capsulatet RESV message --- modules/protocol/hybrid.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/protocol/hybrid.cpp b/modules/protocol/hybrid.cpp index e50c335d9..eafebb93d 100644 --- a/modules/protocol/hybrid.cpp +++ b/modules/protocol/hybrid.cpp @@ -69,7 +69,7 @@ class HybridProto : public IRCDProto void SendSQLine(User *, const XLine *x) anope_override { - UplinkSocket::Message(FindIntroduced()) << "ENCAP * RESV " << (x->expires ? x->expires - Anope::CurTime : 0) << " " << x->mask << " 0 :" << x->reason; + UplinkSocket::Message(FindIntroduced()) << "RESV * " << (x->expires ? x->expires - Anope::CurTime : 0) << " " << x->mask << " :" << x->reason; } void SendSGLineDel(const XLine *x) anope_override -- cgit From eac25d016ac542a4f0e380c8a8c0cb65515fd6db Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 22 Jan 2016 10:13:05 -0500 Subject: Include memo mail information in ms_info --- modules/commands/ms_info.cpp | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/modules/commands/ms_info.cpp b/modules/commands/ms_info.cpp index 00df72769..9a4b28142 100644 --- a/modules/commands/ms_info.cpp +++ b/modules/commands/ms_info.cpp @@ -168,15 +168,32 @@ class CommandMSInfo : public Command else source.Reply(_("You have no limit on the number of memos you may keep.")); - /* Ripped too. But differently because of a seg fault (loughs) */ + bool memo_mail = nc->HasExt("MEMO_MAIL"); if (nc->HasExt("MEMO_RECEIVE") && nc->HasExt("MEMO_SIGNON")) - source.Reply(_("You will be notified of new memos at logon and when they arrive.")); + { + if (memo_mail) + source.Reply(_("You will be notified of new memos at logon and when they arrive, and by mail when they arrive.")); + else + source.Reply(_("You will be notified of new memos at logon and when they arrive.")); + } else if (nc->HasExt("MEMO_RECEIVE")) - source.Reply(_("You will be notified when new memos arrive.")); + { + if (memo_mail) + source.Reply(_("You will be notified by message and by mail when new memos arrive.")); + else + source.Reply(_("You will be notified when new memos arrive.")); + } else if (nc->HasExt("MEMO_SIGNON")) - source.Reply(_("You will be notified of new memos at logon.")); + { + if (memo_mail) + source.Reply(_("You will be notified of new memos at logon, and by mail when they arrive.")); + else + source.Reply(_("You will be notified of new memos at logon.")); + } else + { source.Reply(_("You will not be notified of new memos.")); + } } } -- cgit From f91f375b70a4932f8c7ef400cd8f6da32309d318 Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 22 Jan 2016 10:29:44 -0500 Subject: Show akill/xline ids in view --- modules/commands/os_akill.cpp | 7 ++++++- modules/commands/os_sxline.cpp | 8 +++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/modules/commands/os_akill.cpp b/modules/commands/os_akill.cpp index 81c440ef3..154390135 100644 --- a/modules/commands/os_akill.cpp +++ b/modules/commands/os_akill.cpp @@ -287,6 +287,7 @@ class CommandOSAKill : public Command entry["Creator"] = x->by; entry["Created"] = Anope::strftime(x->created, NULL, true); entry["Expires"] = Anope::Expires(x->expires, source.nc); + entry["ID"] = x->id; entry["Reason"] = x->reason; this->list.AddEntry(entry); } @@ -308,6 +309,7 @@ class CommandOSAKill : public Command entry["Creator"] = x->by; entry["Created"] = Anope::strftime(x->created, NULL, true); entry["Expires"] = Anope::Expires(x->expires, source.nc); + entry["ID"] = x->id; entry["Reason"] = x->reason; list.AddEntry(entry); } @@ -353,7 +355,10 @@ class CommandOSAKill : public Command } ListFormatter list(source.GetAccount()); - list.AddColumn(_("Number")).AddColumn(_("Mask")).AddColumn(_("Creator")).AddColumn(_("Created")).AddColumn(_("Expires")).AddColumn(_("Reason")); + list.AddColumn(_("Number")).AddColumn(_("Mask")).AddColumn(_("Creator")).AddColumn(_("Created")).AddColumn(_("Expires")); + if (Config->GetModule("operserv")->Get("akillids")) + list.AddColumn(_("ID")); + list.AddColumn(_("Reason")); this->ProcessList(source, params, list); } diff --git a/modules/commands/os_sxline.cpp b/modules/commands/os_sxline.cpp index eb3d570ec..eadb276b4 100644 --- a/modules/commands/os_sxline.cpp +++ b/modules/commands/os_sxline.cpp @@ -144,6 +144,7 @@ class CommandOSSXLineBase : public Command entry["By"] = x->by; entry["Created"] = Anope::strftime(x->created, NULL, true); entry["Expires"] = Anope::Expires(x->expires, source.nc); + entry["ID"] = x->id; entry["Reason"] = x->reason; list.AddEntry(entry); } @@ -165,6 +166,7 @@ class CommandOSSXLineBase : public Command entry["By"] = x->by; entry["Created"] = Anope::strftime(x->created, NULL, true); entry["Expires"] = Anope::Expires(x->expires, source.nc); + entry["ID"] = x->id; entry["Reason"] = x->reason; list.AddEntry(entry); } @@ -196,7 +198,11 @@ class CommandOSSXLineBase : public Command void OnView(CommandSource &source, const std::vector ¶ms) { ListFormatter list(source.GetAccount()); - list.AddColumn(_("Number")).AddColumn(_("Mask")).AddColumn(_("By")).AddColumn(_("Created")).AddColumn(_("Expires")).AddColumn(_("Reason")); + list.AddColumn(_("Number")).AddColumn(_("Mask")).AddColumn(_("By")).AddColumn(_("Created")).AddColumn(_("Expires")); + if (Config->GetModule("operserv")->Get("akillids")) + list.AddColumn(_("ID")); + list.AddColumn(_("Reason")); + this->ProcessList(source, params, list); } -- cgit From d8eb3d493756b0897448be855c651ab99c80d03e Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 23 Jan 2016 08:58:08 -0500 Subject: Apply regex sqlines on connect too --- modules/pseudoclients/operserv.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/pseudoclients/operserv.cpp b/modules/pseudoclients/operserv.cpp index 439c33708..7780091f2 100644 --- a/modules/pseudoclients/operserv.cpp +++ b/modules/pseudoclients/operserv.cpp @@ -92,7 +92,10 @@ class SQLineManager : public XLineManager u->Kill(Config->GetClient("OperServ"), "Q-Lined: " + x->reason); } else if (x->IsRegex()) - ; + { + if (u) + u->Kill(Config->GetClient("OperServ"), "Q-Lined: " + x->reason); + } else if (x->mask[0] != '#' || IRCD->CanSQLineChannel) IRCD->SendSQLine(u, x); } -- cgit From 7953274a8805fadb2e1b2381343f8bd0d687a364 Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 23 Jan 2016 10:15:01 -0500 Subject: Re-lookup access in webcpanel after deleting access as the old group might be invalid --- modules/webcpanel/pages/chanserv/access.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/webcpanel/pages/chanserv/access.cpp b/modules/webcpanel/pages/chanserv/access.cpp index daa8e7406..8a435e9d4 100644 --- a/modules/webcpanel/pages/chanserv/access.cpp +++ b/modules/webcpanel/pages/chanserv/access.cpp @@ -93,6 +93,9 @@ bool WebCPanel::ChanServ::Access::OnRequest(HTTPProvider *server, const Anope::s } } + /* command might have invalidated u_access */ + u_access = ci->AccessFor(na->nc); + replacements["ESCAPED_CHANNEL"] = HTTPUtils::URLEncode(chname); replacements["ACCESS_CHANGE"] = u_access.HasPriv("ACCESS_CHANGE") ? "YES" : "NO"; -- cgit From a434651e75f3254123dcd606c3b64dfd9c0a7334 Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 23 Jan 2016 10:36:04 -0500 Subject: Update Changelogs --- docs/Changes | 29 +++++++++++++++++++++++++++++ docs/Changes.conf | 2 ++ 2 files changed, 31 insertions(+) diff --git a/docs/Changes b/docs/Changes index 62242d7c0..fbd11f35d 100644 --- a/docs/Changes +++ b/docs/Changes @@ -1,3 +1,32 @@ +Anope Version 2.0.3-git +------------------- +Add support for UnrealIRCd 4 +Fix cs_access to respect chanserv/access/list privilege +Fix cs_access to match level -1 as every user, not any level <0 +Fix problems related to object destruction order when using db_sql_live +Show memo notify settings in ms_info +Fix some actions bumping channels last used time that shouldn't have +Add maxlogins configuration directive to limit the number of concurrnent logins to one account +Fix race with auto svsnick on ghost sometimes causing nick collisions instead +Fix saset langauge reply +Show akill/sxlines ids in VIEW +Fix crash when an oper is configured in both the configuration and via os_oper +Fix m_ldap reconnect logic not properly setting protocol and network timeout settings +Fix crash from unloading regex modules when regex xlines exist +Fix irc2sql to store away messages +Add notice method to m_xmlrpc_main +Fix numerics on InspIRCd from being sent to user UID +Fix +I on InspIRCd to be considered oper only +Fix crash in webcpanel when deleting your own access on a channel +Fix webcpanel allowing suspended users to login +Fix hs_off on InspIRCd to not desync active user host +Fix bs_bot to not allow colliding bots into users +Don't allow hostserv modules to load if there is no hostserv +Fix ns_register allowing bot nicks to be registered through webcpanel +Don't update chanserv keepmodes during inhabit +Fix build on cmake 2.4 +Allow searching emails by wildcard in ns_getemail + Anope Version 2.0.2 ------------------- Fix keepmodes preventing the first user of a channel from being deopped diff --git a/docs/Changes.conf b/docs/Changes.conf index 5e813b3e4..1ca569ebc 100644 --- a/docs/Changes.conf +++ b/docs/Changes.conf @@ -1,6 +1,8 @@ Anope Version 2.0.3-git ------------------- +Add operserv/chankill to default globops log Add ns_identify:maxlogins to limit the max number of concurrent logins per account +Document ns_no_expire nickserv default Anope Version 2.0.2 ------------------- -- cgit From e955db6e85f0372cb2d4be449f424e37fdc78097 Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 23 Jan 2016 10:37:23 -0500 Subject: Regenerate language files --- language/anope.ca_ES.po | 17101 +++++++++++++++++-------------------------- language/anope.de_DE.po | 16910 +++++++++++++++++------------------------- language/anope.el_GR.po | 17378 ++++++++++++++++++------------------------- language/anope.en_US.po | 17425 +++++++++++++++++++------------------------- language/anope.es_ES.po | 17692 +++++++++++++++++++------------------------- language/anope.fr_FR.po | 18218 ++++++++++++++++++++-------------------------- language/anope.hu_HU.po | 16857 +++++++++++++++++------------------------- language/anope.it_IT.po | 17728 +++++++++++++++++++------------------------- language/anope.nl_NL.po | 17880 ++++++++++++++++++++------------------------- language/anope.pl_PL.po | 16753 +++++++++++++++++------------------------- language/anope.pt_PT.po | 16807 +++++++++++++++++------------------------- language/anope.ru_RU.po | 17497 ++++++++++++++++++-------------------------- language/anope.tr_TR.po | 16709 +++++++++++++++++------------------------- 13 files changed, 92554 insertions(+), 132401 deletions(-) diff --git a/language/anope.ca_ES.po b/language/anope.ca_ES.po index 87daa1e2b..686e8eecf 100644 --- a/language/anope.ca_ES.po +++ b/language/anope.ca_ES.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Anope\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-05-30 15:56-0400\n" +"POT-Creation-Date: 2016-01-23 10:36-0500\n" "PO-Revision-Date: 2010-09-19 20:12-0400\n" "Last-Translator: Adam \n" "Language-Team: Catalan\n" @@ -16,326 +16,6 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: modules/commands/os_forbid.cpp:312 -#, c-format -msgid "%d channel(s) cleared, and %d channel(s) dropped." -msgstr "" - -#: modules/commands/os_forbid.cpp:253 -#, fuzzy, c-format -msgid "%d nickname(s) dropped." -msgstr "El teu nickname ha estat expulsat." - -#: modules/commands/cs_xop.cpp:219 -#, fuzzy, c-format -msgid "%s added to %s %s list." -msgstr "%s afegit a la llista de AKILLs." - -#: modules/commands/cs_access.cpp:220 -#, c-format -msgid "%s added to %s access list at level %d." -msgstr "%s afegit a la llista d'accés de %s amb nivel %d." - -#: modules/commands/cs_access.cpp:218 -#, fuzzy, c-format -msgid "%s added to %s access list at privilege %s (level %d)" -msgstr "%s afegit a la llista d'accés de %s amb nivel %d." - -#: modules/commands/cs_akick.cpp:165 -#, c-format -msgid "%s added to %s autokick list." -msgstr "%s afegit a la llista de kicks automàtics en el canal %s." - -#: modules/commands/bs_badwords.cpp:306 -#, c-format -msgid "%s added to %s bad words list." -msgstr "%s afegida a la llista de paraules malsonants de %s." - -#: modules/commands/ns_access.cpp:45 -#, fuzzy, c-format -msgid "%s added to %s's access list." -msgstr "%s afegit a la teva lllista d'accés." - -#: modules/commands/ns_cert.cpp:204 -#, fuzzy, c-format -msgid "%s added to %s's certificate list." -msgstr "%s afegit a la teva lllista d'accés." - -#: modules/commands/ms_ignore.cpp:56 -#, fuzzy, c-format -msgid "%s added to ignore list." -msgstr "%s afegit a la teva lllista d'accés." - -#: modules/commands/os_sxline.cpp:408 modules/commands/os_sxline.cpp:641 -#, fuzzy, c-format -msgid "%s added to the %s list." -msgstr "%s afegit a la llista de AKILLs." - -#: modules/commands/os_akill.cpp:202 -#, c-format -msgid "%s added to the AKILL list." -msgstr "%s afegit a la llista de AKILLs." - -#: modules/pseudoclients/botserv.cpp:134 -#, c-format -msgid "" -"%s allows you to execute \"fantasy\" commands in the channel.\n" -"Fantasy commands are commands that can be executed from messaging a\n" -"channel, and provide a more convenient way to execute commands. Commands " -"that\n" -"require a channel as a parameter will automatically have that parameter\n" -"given.\n" -msgstr "" - -#: modules/pseudoclients/botserv.cpp:148 -#, fuzzy, c-format -msgid "" -"%s allows you to have a bot on your own channel.\n" -"It has been created for users that can't host or\n" -"configure a bot, or for use on networks that don't\n" -"allow user bots. Available commands are listed\n" -"below; to use them, type %s%s command. For\n" -"more information on a specific command, type\n" -"%s%s %s command.\n" -msgstr "" -"%s et permet crear un bot en el teu propi canal.\n" -"Això ha estat creat per a usuaris que no poden\n" -"tenir un bot en un host o configurar un bot, o per a us en xarxes\n" -"que no permeten bots d'usuaris. Comandes\n" -"disponibles estan llistades més endavant; per a\n" -"utilitzar-los, escriu /msg %s comanda. per a més\n" -"informació sobre un comanda especifica, escriu \n" -"/msg %s HELP comanda." - -#: modules/pseudoclients/nickserv.cpp:437 -#, fuzzy, c-format -msgid "" -"%s allows you to register a nickname and\n" -"prevent others from using it. The following\n" -"commands allow for registration and maintenance of\n" -"nicknames; to use them, type %s%s command.\n" -"For more information on a specific command, type\n" -"%s%s %s command.\n" -msgstr "" -"%s Et permet \"registrar\" un nickname i\n" -"prevenir a d'altres utilitzar-lo. Les següents comandes\n" -"permeten el registre i manteniment de nicknames;\n" -"per a utilitzar-los, escriu /msg %s comanda.\n" -"per més informació sobre una comanda especifica\n" -"escriu /msg %s HELP comanda." - -#: modules/pseudoclients/nickserv.cpp:444 -#, fuzzy, c-format -msgid "" -"%s allows you to register an account.\n" -"The following commands allow for registration and maintenance of\n" -"accounts; to use them, type %s%s command.\n" -"For more information on a specific command, type\n" -"%s%s %s command.\n" -msgstr "" -"%s Et permet \"registrar\" un nickname i\n" -"prevenir a d'altres utilitzar-lo. Les següents comandes\n" -"permeten el registre i manteniment de nicknames;\n" -"per a utilitzar-los, escriu /msg %s comanda.\n" -"per més informació sobre una comanda especifica\n" -"escriu /msg %s HELP comanda." - -#: modules/pseudoclients/chanserv.cpp:248 -#, fuzzy, c-format -msgid "" -"%s allows you to register and control various\n" -"aspects of channels. %s can often prevent\n" -"malicious users from \"taking over\" channels by limiting\n" -"who is allowed channel operator privileges. Available\n" -"commands are listed below; to use them, type\n" -"%s%s command. For more information on a\n" -"specific command, type %s%s HELP command.\n" -msgstr "" -"%s et permet registrar i controlar varis\n" -"aspectes dels canals. Sovint, %s pot prevenir\n" -"a usuaris maliciosos \"pendre\" canals limitant\n" -"qui esta permés a tenir privilegis d'operador.\n" -"Les comandes disponibles estan llistades a continuació;\n" -"Per a utilitzar-los, escriu /msg %s comanda.\n" -"Per més informació sobre una comanda especifica,\n" -"escriu /msg %s HELP comanda.\n" -" " - -#: modules/commands/bs_badwords.cpp:297 -#, c-format -msgid "%s already exists in %s bad words list." -msgstr "%s ja existeix a la llista de paraules malsonants de %s." - -#: modules/commands/cs_akick.cpp:145 -#, c-format -msgid "%s already exists on %s autokick list." -msgstr "%s ja esta present a la llista de kick automàtic en el canal %s." - -#: modules/commands/os_session.cpp:361 -#, c-format -msgid "%s already exists on the EXCEPTION list." -msgstr "%s already exists on the EXCEPTION list." - -#: modules/commands/bs_kick.cpp:216 modules/commands/bs_kick.cpp:391 -#: modules/commands/bs_kick.cpp:522 modules/commands/bs_kick.cpp:653 -#, c-format -msgid "%s cannot be taken as times to ban." -msgstr "%s no pot ser pres com vegades a banegar" - -#: modules/commands/os_mode.cpp:157 -#, fuzzy, c-format -msgid "%s changed your usermodes to %s." -msgstr "%s changed your usermodes." - -#: modules/commands/os_list.cpp:46 -#, fuzzy, c-format -msgid "%s channel list:" -msgstr "Fi de la llista de canals." - -#: modules/commands/cs_xop.cpp:347 -#, fuzzy, c-format -msgid "%s deleted from %s %s list." -msgstr "%s esborrat de la llista AOP de %s." - -#: modules/commands/cs_access.cpp:321 -#, c-format -msgid "%s deleted from %s access list." -msgstr "%s esborrat de la llista d'accés de %s." - -#: modules/commands/cs_akick.cpp:251 -#, c-format -msgid "%s deleted from %s autokick list." -msgstr "%s esborrat de la llista de kicks automàtics del canal %s." - -#: modules/commands/bs_badwords.cpp:347 -#, c-format -msgid "%s deleted from %s bad words list." -msgstr "%s esborrada de la llista de paraules malsonants de %s." - -#: modules/commands/ns_access.cpp:72 -#, fuzzy, c-format -msgid "%s deleted from %s's access list." -msgstr "%s esborrat de la llista d'accés de %s." - -#: modules/commands/ns_cert.cpp:233 -#, fuzzy, c-format -msgid "%s deleted from %s's certificate list." -msgstr "%s esborrat de la teva lllista d'accés." - -#: modules/commands/os_session.cpp:414 -#, c-format -msgid "%s deleted from session-limit exception list." -msgstr "" -"%s instàncies esborrades de la llista d'excepcions al límit de sessions." - -#: modules/commands/os_sxline.cpp:99 -#, fuzzy, c-format -msgid "%s deleted from the %s list." -msgstr "%s esborrat de la llista AOP de %s." - -#: modules/commands/os_akill.cpp:245 -#, c-format -msgid "%s deleted from the AKILL list." -msgstr "%s esborrat de la llista de AKILLs." - -#: modules/commands/cs_access.cpp:678 -#, c-format -msgid "%s disabled on channel %s." -msgstr "%s inhabilitat(s) en el canal %s." - -#: modules/commands/cs_invite.cpp:75 -#, c-format -msgid "%s has been invited to %s." -msgstr "%s has been invited to %s." - -#: modules/commands/os_svs.cpp:104 -#, fuzzy, c-format -msgid "%s has been joined to %s." -msgstr "%s has been invited to %s." - -#: modules/commands/os_svs.cpp:152 -#, fuzzy, c-format -msgid "%s has been parted from %s." -msgstr "%s has been unbanned from %s." - -#: modules/commands/cs_unban.cpp:96 -#, c-format -msgid "%s has been unbanned from %s." -msgstr "%s has been unbanned from %s." - -#: modules/commands/ns_alist.cpp:101 -#, fuzzy, c-format -msgid "%s has no access in any channels." -msgstr "%s inhabilitat(s) en el canal %s." - -#: modules/commands/cs_status.cpp:55 -#, fuzzy, c-format -msgid "%s has no access on %s." -msgstr "%s has been invited to %s." - -#: modules/commands/cs_set.cpp:304 -#, c-format -msgid "%s has too many channels registered." -msgstr "%s te masses canals registrats." - -#: modules/commands/cs_status.cpp:51 -#, fuzzy, c-format -msgid "%s is a super administrator." -msgstr "%s is a services operator of type %s." - -#: modules/pseudoclients/memoserv.cpp:202 -#, fuzzy, c-format -msgid "" -"%s is a utility allowing IRC users to send short\n" -"messages to other IRC users, whether they are online at\n" -"the time or not, or to channels(*). Both the sender's\n" -"nickname and the target nickname or channel must be\n" -"registered in order to send a memo.\n" -"%s's commands include:" -msgstr "" -"%s és una utilitat que permet a usuaris de IRC\n" -"enviar missatges curts a altres usuaris de IRC, estiguin\n" -"en linea o no, o a canals(*). Ambdós el nickname que\n" -"envia i el nickname o canal destinataris han d'estar\n" -"registrats per a enviar un memo.\n" -"\n" -"Les comandes de %s incloen:" - -#: modules/commands/cs_invite.cpp:66 -#, fuzzy, c-format -msgid "%s is already in %s!" -msgstr "You are already in %s! " - -#: modules/commands/os_svs.cpp:99 -#, fuzzy, c-format -msgid "%s is already in %s." -msgstr "You are already in %s! " - -#: modules/commands/ms_ignore.cpp:59 -#, fuzzy, c-format -msgid "%s is already on the ignore list." -msgstr "%s afegit a la teva lllista d'accés." - -#: modules/commands/cs_suspend.cpp:97 modules/commands/ns_suspend.cpp:106 -#, fuzzy, c-format -msgid "%s is already suspended." -msgstr "You are already in %s! " - -#: modules/commands/ms_rsend.cpp:56 modules/commands/ms_send.cpp:46 -#, fuzzy, c-format -msgid "%s is not a registered unforbidden nick or channel." -msgstr "%s no és un bot valid o un canal registrat." - -#: modules/commands/cs_set.cpp:175 -#, c-format -msgid "%s is not a valid ban type." -msgstr "%s no es un tipus de ban valid." - -#: modules/commands/bs_info.cpp:102 -#, c-format -msgid "%s is not a valid bot or registered channel." -msgstr "%s no és un bot valid o un canal registrat." - #: include/language.h:87 #, fuzzy, c-format msgid "%s is not a valid e-mail address." @@ -346,31 +26,6 @@ msgstr "%s no es un tipus de ban valid." msgid "%s is not currently on channel %s." msgstr "%s inhabilitat(s) en el canal %s." -#: modules/commands/os_svs.cpp:144 -#, fuzzy, c-format -msgid "%s is not in %s." -msgstr "You are already in %s! " - -#: modules/commands/ms_ignore.cpp:71 -#, fuzzy, c-format -msgid "%s is not on the ignore list." -msgstr "%s not found on ignore list." - -#: modules/commands/cs_status.cpp:75 -#, fuzzy, c-format -msgid "%s is on the auto kick list of %s (%s)." -msgstr "%s afegit a la llista de kicks automàtics en el canal %s." - -#: modules/commands/cs_status.cpp:53 -#, fuzzy, c-format -msgid "%s is the founder of %s." -msgstr "%s inhabilitat(s) en el canal %s." - -#: modules/commands/cs_status.cpp:64 -#, c-format -msgid "%s matches access entry %s, which has privilege %s." -msgstr "" - #: include/language.h:110 #, c-format msgid "" @@ -378,3632 +33,114 @@ msgid "" "removed." msgstr "" -#: modules/commands/cs_status.cpp:81 -#, fuzzy, c-format -msgid "%s matches auto kick entry %s on %s (%s)." -msgstr "%s afegit a la llista de kicks automàtics en el canal %s." - -#: modules/commands/cs_xop.cpp:357 -#, fuzzy, c-format -msgid "%s not found on %s %s list." -msgstr "%s no trobat a la llista AOP de %s." - -#: modules/commands/cs_access.cpp:333 modules/commands/cs_flags.cpp:254 -#, c-format -msgid "%s not found on %s access list." -msgstr "%s no trobat a la llista d'accés de %s." - -#: modules/commands/cs_akick.cpp:240 -#, c-format -msgid "%s not found on %s autokick list." -msgstr "%s no trobat a la llista de kicks automàtics en el canal %s." - -#: modules/commands/bs_badwords.cpp:340 -#, c-format -msgid "%s not found on %s bad words list." -msgstr "%s no trobada a la llista de paraules malsonants de %s." - -#: modules/commands/ns_access.cpp:66 -#, fuzzy, c-format -msgid "%s not found on %s's access list." -msgstr "%s no trobat a la llista d'accés de %s." - -#: modules/commands/ns_cert.cpp:226 -#, fuzzy, c-format -msgid "%s not found on %s's certificate list." -msgstr "%s no trobat a la teva lllista d'accés." - -#: modules/commands/os_ignore.cpp:320 +#: include/language.h:67 #, fuzzy, c-format -msgid "%s not found on ignore list." -msgstr "%s not found on ignore list." - -#: modules/commands/os_session.cpp:238 -#, c-format -msgid "" -"%s not found on session list, but has a limit of %d because it matches entry:" -" %s." +msgid "%s%s HELP %s for more information." msgstr "" +"Escriu /msg %s HELP opció per més informació\n" +"sobre una opció en particular." -#: modules/commands/os_session.cpp:418 +#: include/language.h:70 #, c-format -msgid "%s not found on session-limit exception list." -msgstr "%s no trobat a a la llista d'excepcions al límit de sessions." +msgid "%s coverage is too wide; Please use a more specific mask." +msgstr "" -#: modules/commands/os_sxline.cpp:92 +#: cs_jail.cpp:240 #, fuzzy, c-format -msgid "%s not found on the %s list." -msgstr "%s no trobat a la llista AOP de %s." - -#: modules/commands/os_akill.cpp:236 -#, c-format -msgid "%s not found on the AKILL list." -msgstr "%s no trobat a la llista de AKILLs." +msgid "%s deleted from the jail list." +msgstr "%s esborrat de la llista AOP de %s." -#: modules/commands/cs_flags.cpp:250 +#: include/language.h:106 #, fuzzy, c-format -msgid "%s removed from the %s access list." -msgstr "%s esborrat de la llista d'accés de %s." +msgid "%s for %s set to %s." +msgstr "vhost for %s set to %s." -#: modules/commands/ms_ignore.cpp:68 +#: include/language.h:107 #, fuzzy, c-format -msgid "%s removed from the ignore list." -msgstr "%s esborrat de la teva lllista d'accés." +msgid "%s for %s unset." +msgstr "Sucessor de %s desabilitat." -#: modules/commands/os_list.cpp:151 +#: include/language.h:116 #, fuzzy, c-format -msgid "%s users list:" -msgstr "Fi de la llista d'usuaris." - -#: modules/commands/os_ignore.cpp:316 -#, c-format -msgid "%s will no longer be ignored." -msgstr "%s will no longer be ignored." - -#: modules/commands/os_ignore.cpp:238 -#, c-format -msgid "%s will now be ignored for %s." -msgstr "%s will now be ignored for %s." - -#: modules/commands/os_ignore.cpp:233 -#, c-format -msgid "%s will now permanently be ignored." -msgstr "%s will now permanently be ignored." +msgid "%s has no memos." +msgstr "%s no te límit per a memos." -#: include/language.h:67 +#: include/language.h:119 #, fuzzy, c-format -msgid "%s%s HELP %s for more information." -msgstr "" -"Escriu /msg %s HELP opció per més informació\n" -"sobre una opció en particular." - -#: modules/commands/bs_bot.cpp:254 -msgid "ADD nick user host real" -msgstr "" - -#: modules/commands/bs_bot.cpp:255 -#, fuzzy -msgid "CHANGE oldnick newnick [user [host [real]]]" -msgstr "" -"BOT ADD nick usuari host nom-real\n" -"BOT CHANGE nick-antic nick-nou [usuari [host [nom-real]]]\n" -"BOT DEL nick" - -#: modules/commands/bs_bot.cpp:256 -#, fuzzy -msgid "DEL nick" -msgstr "DEL ." +msgid "%s has no new memos." +msgstr "%s no te límit per a memos." -#: modules/commands/os_session.cpp:601 -#, fuzzy -msgid "" -"EXCEPTION ADD adds the given host mask to the exception list.\n" -"Note that nick!user@host and user@host masks are invalid!\n" -"Only real host masks, such as box.host.dom and *.host.dom,\n" -"are allowed because sessions limiting does not take nick or\n" -"user names into account. limit must be a number greater than\n" -"or equal to zero. This determines how many sessions this host\n" -"may carry at a time. A value of zero means the host has an\n" -"unlimited session limit. See the AKILL help for details about\n" -"the format of the optional expiry parameter.\n" -" \n" -"EXCEPTION DEL removes the given mask from the exception list.\n" -" \n" -"EXCEPTION MOVE moves exception num to position. The\n" -"sessions inbetween will be shifted up or down to fill the gap.\n" -" \n" -"EXCEPTION LIST and EXCEPTION VIEW show all current\n" -"sessions if the optional mask is given, the list is limited\n" -"to those sessions matching the mask. The difference is that\n" -"EXCEPTION VIEW is more verbose, displaying the name of the\n" -"person who added the exception, its session limit, reason,\n" -"host mask and the expiry date and time.\n" -" \n" -"Note that a connecting client will \"use\" the first exception\n" -"their host matches." -msgstr "" -"Sintaxis: EXCEPTION ADD [+expiració] mascara límit raó\n" -" EXCEPTION DEL {mascara | llista}\n" -" EXCEPTION MOVE numero posició\n" -" EXCEPTION LIST [mascara | llista]\n" -" EXCEPTION VIEW [mascara | llista]\n" -"\n" -"Permet als administradors de serveis manipular la llista\n" -"de hosts que tenen un límit de sessió específic - permetent \n" -"a certes màquines, com servidors de shells, mantenir un nombre més alt \n" -"de clients al mateix temps. En quant un host arribi al seu límit\n" -"de sessions, tots els clients intentant conectarse desde aquest \n" -"host seran expulsats. Abans de expulsar usuaris, aquests son\n" -"notificats a traves de un /NOTICE del %s amb ajuda sobre\n" -"el límit de sessió. El contingut d'aquest notice es un establiment\n" -"de configuració.\n" -"\n" -"EXCEPTION ADD afegeix la mascara de host donada a la llista de\n" -"excepcion. Teniu en compte que les mascares nick!usuari@host\n" -"i usuari@host son invalides. Nomès mascares reals com\n" -"irc.aujac.org i *.aujac.org, son permessas ja que el\n" -"límit de sessions no compta nicks o noms d'usuari.\n" -"Límit ha de ser un numero mes gran o igual a zero. Això determina\n" -"quantes sessions el host pot tenir en un cert temps. El valor\n" -"zero significa que el host no te límits de sessió. Veure la ajuda\n" -"sobre AKILL per a més detalls sobre el parametre opcional\n" -"expiració.\n" -"EXCEPTION DEL remou la mascara donada de la llista d'excepcions.\n" -"EXCEPTION MOVE mou l'excepció numero a posició. Les\n" -"excepcions entremig seran mogudes amunt o avall per a omplir l'espai.\n" -"\n" -"EXCEPTION LIST i EXCEPTION VIEW mostra totes les\n" -"excepcions actuals; si la mascara opcional es donada, la llista es\n" -"limitada a les excepcions similars a la mascara. La diferencia\n" -"es que EXCEPTION VIEW es mes verbal, mostrant el nom de la\n" -"persona que va afegir l'excepció, el límit d'excepció, raó,\n" -"mascara de hosts i la data i hora d'expiració. \n" -"\n" -"Pren nota de que un client conectant-se \"utilitzara\" la primera\n" -"excepció a la que el host s'assembli. Llargues llistes d'excepcions\n" -"i mascares que s'assemblin a moltes mascares possiblement contribueixin\n" -"al mal rendiment dels serveis.\n" -"\n" -"Limitat a administradors de serveis." - -#: modules/commands/os_noop.cpp:68 -msgid "" -"SET kills all operators from the given\n" -"server and prevents operators from opering\n" -"up on the given server. REVOKE removes this\n" -"restriction." +#: include/language.h:88 +msgid "" msgstr "" -#: modules/commands/cs_access.cpp:604 -#, c-format -msgid "" -"User access levels can be seen by using the\n" -"%s command; type %s%s HELP LEVELS for\n" -"information." +#: include/language.h:124 +msgid "A vHost ident must be in the format of a valid ident." msgstr "" -#: modules/commands/ms_read.cpp:35 -#, c-format -msgid "[auto-memo] The memo you sent to %s has been viewed." -msgstr "[auto-memo] The memo you sent to %s has been viewed." - -#: modules/commands/ns_group.cpp:78 -#, fuzzy -msgid "[target] [password]" -msgstr "GROUP grup clau" - -#: modules/commands/ns_set.cpp:435 -msgid "address" +#: include/language.h:123 +msgid "A vHost must be in the format of a valid hostname." msgstr "" -#: modules/commands/bs_set.cpp:150 -#, fuzzy -msgid "botname {ON|OFF}" -msgstr "SASET nickname AUTOOP {ON | OFF}" - -#: modules/commands/cs_suspend.cpp:152 modules/commands/cs_sync.cpp:20 -#: modules/commands/bs_assign.cpp:91 modules/commands/cs_log.cpp:106 -#: modules/commands/cs_getkey.cpp:20 modules/commands/cs_info.cpp:20 -#: modules/extra/stats/cs_fantasy_top.cpp:39 -#: modules/extra/stats/cs_fantasy_top.cpp:51 -#, fuzzy -msgid "channel" -msgstr "DROP canal" - -#: modules/commands/cs_set.cpp:135 -#, fuzzy -msgid "channel bantype" -msgstr "ACT canal text" - -#: modules/commands/cs_drop.cpp:20 -#, fuzzy -msgid "channel channel" -msgstr "TOPIC canal [tòpic]" - -#: modules/commands/cs_log.cpp:107 -#, fuzzy -msgid "channel command method [status]" -msgstr "KICK canal opció {ON|OFF} [establiments]" - -#: modules/commands/cs_kick.cpp:21 -#, fuzzy -msgid "channel mask [reason]" -msgstr "BAN #channel nick [reason]" - -#: modules/commands/os_mode.cpp:20 -#, fuzzy -msgid "channel modes" -msgstr "MODE canal Modes" - -#: modules/commands/bs_assign.cpp:20 modules/commands/cs_set.cpp:264 -#: modules/commands/cs_set.cpp:962 -#, fuzzy -msgid "channel nick" -msgstr "UNBAN canal [nick]" - -#: modules/commands/cs_kick.cpp:20 -#, fuzzy -msgid "channel nick [reason]" -msgstr "BAN #channel nick [reason]" - -#: modules/commands/cs_clone.cpp:21 -#, fuzzy -msgid "channel target [what]" -msgstr "CLEAR canal Modes-a-netegar" - -#: modules/commands/bs_control.cpp:20 modules/commands/bs_control.cpp:80 -#, fuzzy -msgid "channel text" -msgstr "ACT canal text" - -#: modules/commands/bs_set.cpp:79 -#, fuzzy -msgid "channel time" -msgstr "ACT canal text" - -#: modules/commands/os_kick.cpp:20 +#: cs_jail.cpp:151 #, fuzzy -msgid "channel user reason" -msgstr "KICK canal usuari raó" +msgid "ADD [+expiry] mask [+akill expiry] reason" +msgstr "CHANKILL [+expiry] {#channel} [reason]" -#: modules/commands/cs_enforce.cpp:228 +#: include/language.h:73 #, fuzzy -msgid "channel what" -msgstr "TOPIC canal [tòpic]" +msgid "Access denied." +msgstr "Lllista d'accés:" -#: modules/commands/cs_xop.cpp:485 -#, fuzzy -msgid "channel ADD mask" -msgstr "MODE canal Modes" +#: include/language.h:108 +#, fuzzy, c-format +msgid "Access level must be between %d and %d inclusive." +msgstr "El nivell ha d'estar entre %d i %d inclosos." -#: modules/commands/cs_access.cpp:494 -msgid "channel ADD mask level" +#: cs_jail.cpp:230 +#, c-format +msgid "Added a jail on %s for %s, expires in %s, akills last %s" msgstr "" -#: modules/commands/cs_entrymsg.cpp:194 +#: data/chanserv.example.conf:1200 #, fuzzy -msgid "channel ADD message" -msgstr "MODE canal Modes" +msgid "Associate a URL with the channel" +msgstr "ASSIGN Assigna un bot a un canal" -#: modules/commands/bs_badwords.cpp:370 -msgid "channel ADD word [SINGLE | START | END]" +#: data/nickserv.example.conf:593 +msgid "Associate a URL with this account" msgstr "" -#: modules/commands/cs_akick.cpp:423 -#, fuzzy -msgid "channel ADD {nick | mask} [reason]" -msgstr "BAN #channel nick [reason]" - -#: modules/commands/cs_topic.cpp:158 -#, fuzzy -msgid "channel APPEND topic" -msgstr "TOPIC canal [tòpic]" - -#: modules/commands/cs_access.cpp:498 modules/commands/bs_badwords.cpp:373 -#: modules/commands/cs_xop.cpp:488 modules/commands/cs_flags.cpp:375 -#: modules/commands/cs_akick.cpp:428 modules/commands/cs_entrymsg.cpp:197 -#, fuzzy -msgid "channel CLEAR" -msgstr "DROP canal" - -#: modules/commands/cs_mode.cpp:681 -#, fuzzy -msgid "channel CLEAR [what]" -msgstr "TOPIC canal [tòpic]" - -#: modules/commands/os_mode.cpp:21 -#, fuzzy -msgid "channel CLEAR [ALL]" -msgstr "DROP canal" - -#: modules/commands/cs_entrymsg.cpp:195 -#, fuzzy -msgid "channel DEL num" -msgstr "MODE canal Modes" - -#: modules/commands/cs_access.cpp:495 modules/commands/cs_xop.cpp:486 -#, fuzzy -msgid "channel DEL {mask | entry-num | list}" -msgstr "DEL [canal] {numero | llista | ALL}" - -#: modules/commands/cs_akick.cpp:424 -#, fuzzy -msgid "channel DEL {nick | mask | entry-num | list}" -msgstr "AOP canal {ADD|DEL|LIST|CLEAR} [nick | instància]" - -#: modules/commands/bs_badwords.cpp:371 -#, fuzzy -msgid "channel DEL {word | entry-num | list}" -msgstr "DEL [canal] {numero | llista | ALL}" - -#: modules/commands/cs_akick.cpp:427 -msgid "channel ENFORCE" -msgstr "" - -#: modules/commands/cs_access.cpp:737 modules/commands/cs_entrymsg.cpp:196 -#, fuzzy -msgid "channel LIST" -msgstr "DROP canal" - -#: modules/commands/cs_akick.cpp:425 -#, fuzzy -msgid "channel LIST [mask | entry-num | list]" -msgstr "AOP canal {ADD|DEL|LIST|CLEAR} [nick | instància]" - -#: modules/commands/cs_access.cpp:496 modules/commands/bs_badwords.cpp:372 -#: modules/commands/cs_xop.cpp:487 -#, fuzzy -msgid "channel LIST [mask | list]" -msgstr "AOP canal {ADD|DEL|LIST|CLEAR} [nick | instància]" - -#: modules/commands/cs_flags.cpp:374 -msgid "channel LIST [mask | +flags]" -msgstr "" - -#: modules/commands/cs_mode.cpp:679 -#, fuzzy -msgid "channel LOCK {ADD|DEL|SET|LIST} [what]" -msgstr "AOP canal {ADD|DEL|LIST|CLEAR} [nick | instància]" - -#: modules/commands/cs_flags.cpp:373 -msgid "channel MODIFY mask changes" -msgstr "" - -#: modules/commands/cs_access.cpp:738 -#, fuzzy -msgid "channel RESET" -msgstr "SET canal GREET {ON|OFF}" - -#: modules/commands/cs_mode.cpp:680 -#, fuzzy -msgid "channel SET modes" -msgstr "MODE canal Modes" - -#: modules/commands/cs_access.cpp:735 -msgid "channel SET type level" -msgstr "" - -#: modules/commands/cs_topic.cpp:157 -#, fuzzy -msgid "channel SET [topic]" -msgstr "TOPIC canal [tòpic]" - -#: modules/commands/cs_akick.cpp:426 -#, fuzzy -msgid "channel VIEW [mask | entry-num | list]" -msgstr "AOP canal {ADD|DEL|LIST|CLEAR} [nick | instància]" - -#: modules/commands/cs_access.cpp:497 -#, fuzzy -msgid "channel VIEW [mask | list]" -msgstr "DEL [canal] {numero | llista | ALL}" - -#: modules/commands/cs_set.cpp:202 modules/commands/cs_register.cpp:20 -#, fuzzy -msgid "channel [description]" -msgstr "REGISTER canal descripció" - -#: modules/commands/cs_invite.cpp:20 modules/commands/cs_unban.cpp:20 -#, fuzzy -msgid "channel [nick]" -msgstr "UNBAN canal [nick]" - -#: modules/commands/cs_set_misc.cpp:95 -#, fuzzy -msgid "channel [parameters]" -msgstr "CLEAR canal Modes-a-netegar" - -#: modules/commands/cs_status.cpp:20 modules/commands/cs_mode.cpp:752 -#, fuzzy -msgid "channel [user]" -msgstr "UNBAN canal [nick]" - -#: modules/commands/cs_suspend.cpp:59 -#, fuzzy -msgid "channel [+expiry] [reason]" -msgstr "BAN #channel nick [reason]" - -#: modules/commands/cs_ban.cpp:41 -#, fuzzy -msgid "channel [+expiry] {nick | mask} [reason]" -msgstr "BAN #channel nick [reason]" - -#: modules/commands/cs_topic.cpp:159 -#, fuzzy -msgid "channel [UNLOCK|LOCK]" -msgstr "DROP canal" - -#: modules/fantasy.cpp:20 modules/commands/greet.cpp:20 -#: modules/commands/bs_assign.cpp:154 -#, fuzzy -msgid "channel {ON|OFF}" -msgstr "SET canal XOP {ON | OFF}" - -#: modules/commands/bs_kick.cpp:493 -#, fuzzy -msgid "channel {ON|OFF} [ttb [ln [secs]]]" -msgstr "KICK canal opció {ON|OFF} [establiments]" - -#: modules/commands/bs_kick.cpp:363 -#, fuzzy -msgid "channel {ON|OFF} [ttb [min [percent]]]" -msgstr "KICK canal opció {ON|OFF} [establiments]" - -#: modules/commands/bs_kick.cpp:625 -#, fuzzy -msgid "channel {ON|OFF} [ttb [num]]" -msgstr "KICK canal opció {ON|OFF} [establiments]" - -#: modules/commands/bs_kick.cpp:254 modules/commands/bs_kick.cpp:290 -#: modules/commands/bs_kick.cpp:329 modules/commands/bs_kick.cpp:459 -#: modules/commands/bs_kick.cpp:591 modules/commands/bs_kick.cpp:713 -#: modules/commands/bs_kick.cpp:747 -#, fuzzy -msgid "channel {ON|OFF} [ttb]" -msgstr "SET canal XOP {ON | OFF}" - -#: modules/commands/cs_access.cpp:736 -msgid "channel {DIS | DISABLE} type" -msgstr "" - -#: modules/commands/cs_set.cpp:885 -#, fuzzy -msgid "channel {ON | LEVEL | OFF}" -msgstr "SET canal SIGNKICK {ON | LEVEL | OFF}" - -#: modules/commands/cs_list.cpp:181 modules/commands/bs_kick.cpp:781 -#: modules/commands/bs_kick.cpp:846 modules/commands/cs_topic.cpp:21 -#: modules/commands/cs_set.cpp:72 modules/commands/cs_set.cpp:333 -#: modules/commands/cs_set.cpp:398 modules/commands/cs_set.cpp:470 -#: modules/commands/cs_set.cpp:633 modules/commands/cs_set.cpp:695 -#: modules/commands/cs_set.cpp:759 modules/commands/cs_set.cpp:823 -#: modules/commands/cs_set.cpp:1048 modules/extra/stats/m_chanstats.cpp:10 -#, fuzzy -msgid "channel {ON | OFF}" -msgstr "SET canal XOP {ON | OFF}" - -#: modules/commands/ns_getemail.cpp:24 -msgid "email" -msgstr "" - -#: modules/commands/ns_set.cpp:773 -#, fuzzy -msgid "language" -msgstr "SET LANGUAGE numero" - -#: modules/commands/ms_sendall.cpp:25 modules/commands/ms_staff.cpp:25 -#, fuzzy -msgid "memo-text" -msgstr "STAFF memo-text" - -#: modules/commands/gl_global.cpp:22 modules/commands/greet.cpp:84 -#, fuzzy -msgid "message" -msgstr "GLOBAL missatge" - -#: modules/commands/os_module.cpp:20 modules/commands/os_module.cpp:57 -#: modules/commands/os_module.cpp:129 modules/commands/os_modinfo.cpp:20 -msgid "modname" -msgstr "" - -#: modules/commands/ns_set.cpp:322 -msgid "new-display" -msgstr "" - -#: modules/commands/ns_set.cpp:117 -#, fuzzy -msgid "new-password" -msgstr "GROUP grup clau" - -#: modules/commands/cs_seen.cpp:258 modules/commands/hs_del.cpp:20 -#: modules/commands/hs_del.cpp:60 modules/commands/ms_check.cpp:20 -#: modules/commands/hs_request.cpp:187 -#: modules/extra/stats/cs_fantasy_stats.cpp:52 -#, fuzzy -msgid "nick" -msgstr "INFO nick" - -#: modules/commands/os_svs.cpp:79 -#, fuzzy -msgid "nick channel" -msgstr "CANCEL {nick | canal}" - -#: modules/commands/os_svs.cpp:123 -#, fuzzy -msgid "nick channel [reason]" -msgstr "BAN #channel nick [reason]" - -#: modules/commands/os_oline.cpp:20 -#, fuzzy -msgid "nick flags" -msgstr "OLINE nick flags" - -#: modules/commands/hs_set.cpp:20 modules/commands/hs_set.cpp:126 -#, fuzzy -msgid "nick hostmask" -msgstr "SET  ." - -#: modules/commands/os_svs.cpp:20 -#, fuzzy -msgid "nick newnick" -msgstr "SVSNICK nick newnick " - -#: modules/commands/hs_request.cpp:236 -#, fuzzy -msgid "nick [reason]" -msgstr "BAN #channel nick [reason]" - -#: modules/commands/ns_drop.cpp:19 modules/commands/ns_getpass.cpp:20 -#: modules/commands/ns_suspend.cpp:161 -#, fuzzy -msgid "nickname" -msgstr "CHECK nickname" - -#: modules/commands/ns_set.cpp:525 -#, fuzzy -msgid "nickname address" -msgstr "FORBID nickname rao" - -#: modules/commands/ns_resetpass.cpp:22 -#, fuzzy -msgid "nickname email" -msgstr "FORBID nickname rao" - -#: modules/commands/ns_set.cpp:848 -#, fuzzy -msgid "nickname language" -msgstr "FORBID nickname rao" - -#: modules/commands/greet.cpp:145 -#, fuzzy -msgid "nickname message" -msgstr "FORBID nickname rao" - -#: modules/commands/ns_set.cpp:385 -#, fuzzy -msgid "nickname new-display" -msgstr "FORBID nickname rao" - -#: modules/commands/ns_set.cpp:168 -#, fuzzy -msgid "nickname new-password" -msgstr "GHOST nickname [clau]" - -#: modules/commands/ns_set_misc.cpp:169 -#, fuzzy -msgid "nickname [parameter]" -msgstr "GHOST nickname [clau]" - -#: modules/commands/ns_recover.cpp:130 -#, fuzzy -msgid "nickname [password]" -msgstr "GHOST nickname [clau]" - -#: modules/commands/ns_suspend.cpp:61 -#, fuzzy -msgid "nickname [+expiry] [reason]" -msgstr "FORBID nickname rao" - -#: modules/commands/ns_info.cpp:239 -#, fuzzy -msgid "nickname {EMAIL | STATUS | USERMASK | QUIT} {ON | OFF}" -msgstr "SET HIDE {EMAIL | STATUS | USERMASK | QUIT} {ON | OFF}" - -#: modules/commands/ns_set.cpp:294 modules/commands/ns_set.cpp:610 -#: modules/commands/ns_set.cpp:961 modules/commands/ns_set.cpp:1052 -#: modules/commands/ns_set.cpp:1081 modules/commands/ns_list.cpp:252 -#: modules/extra/stats/m_chanstats.cpp:122 -#, fuzzy -msgid "nickname {ON | OFF}" -msgstr "SASET nickname AUTOOP {ON | OFF}" - -#: modules/commands/ns_set.cpp:739 -#, fuzzy -msgid "nickname {ON | QUICK | IMMED | OFF}" -msgstr "SASET nickname KILL {ON | QUICK | IMMED | OFF}" - -#: modules/commands/bs_set.cpp:20 -#, fuzzy -msgid "option (channel | bot) settings" -msgstr "SET canal Opció establiments" - -#: modules/commands/cs_set.cpp:21 -#, fuzzy -msgid "option channel parameters" -msgstr "SEND {nick | canal} text" - -#: modules/commands/bs_kick.cpp:122 -#, fuzzy -msgid "option channel {ON|OFF} [settings]" -msgstr "KICK canal opció {ON|OFF} [establiments]" - -#: modules/commands/ns_set.cpp:72 -msgid "option nickname parameters" -msgstr "" - -#: modules/commands/ns_set.cpp:20 modules/commands/ms_set.cpp:207 -#, fuzzy -msgid "option parameters" -msgstr "SET Opció estabilment" - -#: modules/commands/os_set.cpp:170 -#, fuzzy -msgid "option setting" -msgstr "SET Opció estabilment" - -#: modules/commands/ns_register.cpp:22 -#, fuzzy -msgid "passcode" -msgstr "REGISTER clau email" - -#: modules/commands/os_login.cpp:20 -#, fuzzy -msgid "password" -msgstr "GROUP grup clau" - -#: modules/commands/ns_register.cpp:108 -#, fuzzy -msgid "password [email]" -msgstr "REGISTER clau email" - -#: modules/commands/ns_register.cpp:106 -#, fuzzy -msgid "password email" -msgstr "REGISTER clau email" - -#: modules/commands/cs_list.cpp:21 -#, fuzzy -msgid "pattern [SUSPENDED] [NOEXPIRE]" -msgstr "LIST patro [FORBIDDEN] [SUSPENDED] [NOEXPIRE] [UNCONFIRMED]" - -#: modules/commands/ns_list.cpp:20 -#, fuzzy -msgid "pattern [SUSPENDED] [NOEXPIRE] [UNCONFIRMED]" -msgstr "LIST patro [FORBIDDEN] [SUSPENDED] [NOEXPIRE] [UNCONFIRMED]" - -#: modules/commands/os_jupe.cpp:20 -#, fuzzy -msgid "server [reason]" -msgstr "JUPE nom-del-servidor [raó]" - -#: modules/commands/os_mode.cpp:141 -#, fuzzy -msgid "user modes" -msgstr "MODE canal Modes" - -#: modules/commands/os_kill.cpp:20 -#, fuzzy -msgid "user [reason]" -msgstr "JUPE nom-del-servidor [raó]" - -#: modules/pseudoclients/nickserv.cpp:467 -#, fuzzy, c-format -msgid "" -" \n" -"NOTICE: This service is intended to provide a way for\n" -"IRC users to ensure their identity is not compromised.\n" -"It is NOT intended to facilitate \"stealing\" of\n" -"nicknames or other malicious actions. Abuse of %s\n" -"will result in, at minimum, loss of the abused\n" -"nickname(s)." -msgstr "" -"NOTESE: Aquest servei intenta proveir una eina\n" -"pels usuaris d'IRC d'assegurar-se que la seva identitat no esta\n" -"compromessa, NO per facilitar el \"robatori\" de nicknames\n" -"o un altre acció maliciosa. L'abus de %s resultara, com a\n" -"mínim, en la perdua del nickname esmentat." - -#: modules/commands/os_sxline.cpp:433 -#, fuzzy -msgid "" -" \n" -"SNLINE ADD adds the given realname mask to the SNLINE\n" -"list for the given reason (which must be given).\n" -"expiry is specified as an integer followed by one of d\n" -"(days), h (hours), or m (minutes). Combinations (such as\n" -"1h30m) are not permitted. If a unit specifier is not\n" -"included, the default is days (so +30 by itself means 30\n" -"days). To add an SNLINE which does not expire, use +0. If the\n" -"realname mask to be added starts with a +, an expiry time must\n" -"be give