From 79c3a70ed75d29987b35d087ef739e17169ee57c Mon Sep 17 00:00:00 2001 From: Adam- Date: Mon, 17 May 2010 18:12:40 +0000 Subject: Made is possible to change levels back to founder only and made founder only levels only apply to the real founder. Changed the defaults for things such as autoowner to ACCESS_QOP git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2965 5417fbe8-f217-4b02-8779-1006273d7864 --- docs/Changes.lang | 2 ++ lang/cat.l | 4 +++- lang/de.l | 4 +++- lang/en_us.l | 2 ++ lang/es.l | 4 +++- lang/fr.l | 4 +++- lang/gr.l | 10 ++++++---- lang/hun.l | 4 +++- lang/it.l | 4 +++- lang/nl.l | 4 +++- lang/pl.l | 5 ++++- lang/pt.l | 4 +++- lang/ru.l | 4 +++- lang/tr.l | 4 +++- src/chanserv.c | 18 +++++++++--------- src/core/cs_access.c | 15 ++++++++++++--- 16 files changed, 65 insertions(+), 27 deletions(-) diff --git a/docs/Changes.lang b/docs/Changes.lang index 88b5811f9..65240fa6a 100644 --- a/docs/Changes.lang +++ b/docs/Changes.lang @@ -43,6 +43,7 @@ Anope Version 1.9.2 OPER_HELP_CMD_SQLSYNC OPER_SYNC_UPDATING OPER_SYNC_UPDATED + CHAN_LEVELS_CHANGED_FOUNDER *** Mod Strings: CHAN_HELP_SET @@ -56,6 +57,7 @@ Anope Version 1.9.2 CHAN_HELP_UNBAN CHAN_HELP_REGISTER CHAN_HELP_DROP + CHAN_HELP_LEVELS *** Del Strings: CHAN_PASSWORD_IS diff --git a/lang/cat.l b/lang/cat.l index 62eb7e4de..6f2c72183 100644 --- a/lang/cat.l +++ b/lang/cat.l @@ -1553,6 +1553,8 @@ CHAN_LEVELS_RANGE El nivell ha d'estar entre %d i %d inclosos. CHAN_LEVELS_CHANGED Nivell per a %s en el canal %s cambiat a %d. +CHAN_LEVELS_CHANGED_FOUNDER + Level for %s on channel %s changed to founder only. CHAN_LEVELS_UNKNOWN Opció %s no coneguda. Escriu %R%s HELP LEVELS DESC per a una llista de opcións valides. CHAN_LEVELS_DISABLED @@ -4909,7 +4911,7 @@ CHAN_HELP_AKICK de la llista de akicks. CHAN_HELP_LEVELS - Sintàxi: LEVELS canal SET tipo nivell + Sintàxi: LEVELS canal SET tipo [nivell|FOUNDER] LEVELS canal {DIS | DISABLE} tipo LEVELS canal LIST LEVELS canal RESET diff --git a/lang/de.l b/lang/de.l index e7103c910..4062e0069 100644 --- a/lang/de.l +++ b/lang/de.l @@ -1560,6 +1560,8 @@ CHAN_LEVELS_RANGE Der Level kann nur zwischen %d und einschliesslich %d liegen. CHAN_LEVELS_CHANGED Der Level für %s für den Channel %s wurde geändert auf %d. +CHAN_LEVELS_CHANGED_FOUNDER + Level for %s on channel %s changed to founder only. CHAN_LEVELS_UNKNOWN Einstellung %s ist unbekannt. Tippe %R%s HELP LEVELS DESC für eine ausführliche Einstellungsliste. CHAN_LEVELS_DISABLED @@ -4939,7 +4941,7 @@ CHAN_HELP_AKICK Der AutoKick-Liste. CHAN_HELP_LEVELS - Syntax: LEVELS channel SET Typ Level + Syntax: LEVELS channel SET Typ [Level|FOUNDER] LEVELS channel {DIS | DISABLE} Typ LEVELS channel LIST LEVELS channel RESET diff --git a/lang/en_us.l b/lang/en_us.l index 926a597d3..56fbb8d08 100644 --- a/lang/en_us.l +++ b/lang/en_us.l @@ -1522,6 +1522,8 @@ CHAN_LEVELS_RANGE Level must be between %d and %d inclusive. CHAN_LEVELS_CHANGED Level for %s on channel %s changed to %d. +CHAN_LEVELS_CHANGED_FOUNDER + Level for %s on channel %s changed to founder only. CHAN_LEVELS_UNKNOWN Setting %s not known. Type %R%s HELP LEVELS DESC for a list of valid settings. CHAN_LEVELS_DISABLED diff --git a/lang/es.l b/lang/es.l index de2096b2a..f5e0d874f 100644 --- a/lang/es.l +++ b/lang/es.l @@ -1551,6 +1551,8 @@ CHAN_LEVELS_RANGE El nivel debe ser entre %d a %d inclusive. CHAN_LEVELS_CHANGED Nivel para %s en el canal %s cambiado a %d. +CHAN_LEVELS_CHANGED_FOUNDER + Level for %s on channel %s changed to founder only. CHAN_LEVELS_UNKNOWN Opcion %s no conocida. Tipea %R%s HELP LEVELS DESC para una lista de opciones validas. CHAN_LEVELS_DISABLED @@ -4881,7 +4883,7 @@ CHAN_HELP_AKICK de ka lista de akicks. CHAN_HELP_LEVELS - Sintaxis: LEVELS canal SET tipo nivel + Sintaxis: LEVELS canal SET tipo [nivel|FOUNDER] LEVELS canal {DIS | DISABLE} tipo LEVELS canal LIST LEVELS canal RESET diff --git a/lang/fr.l b/lang/fr.l index 74c9f16e8..2fe9bbf4f 100644 --- a/lang/fr.l +++ b/lang/fr.l @@ -1560,6 +1560,8 @@ CHAN_LEVELS_RANGE Le niveau doit être compris entre %d et %d inclus. CHAN_LEVELS_CHANGED Le niveau pour %s du channel %s est maintenant de %d. +CHAN_LEVELS_CHANGED_FOUNDER + Level for %s on channel %s changed to founder only. CHAN_LEVELS_UNKNOWN L'option %s est inconnue. Tapez %R%s HELP LEVELS DESC pour une liste d'options valides. @@ -4941,7 +4943,7 @@ CHAN_HELP_AKICK de la liste de kicks automatiques. CHAN_HELP_LEVELS - Syntaxe: LEVELS canal SET type level + Syntaxe: LEVELS canal SET type [level|FOUNDER] LEVELS canal {DIS | DISABLE} type LEVELS canal LIST LEVELS canal RESET diff --git a/lang/gr.l b/lang/gr.l index d3530dd4d..f262b7618 100644 --- a/lang/gr.l +++ b/lang/gr.l @@ -1555,6 +1555,8 @@ CHAN_LEVELS_RANGE Ï âáèìüò ðñÝðåé íá åßíáé ìåôáîý %d êáé %d. CHAN_LEVELS_CHANGED Ï âáèìüò ãéá ôïí %s óôï êáíÜëé %s Üëëîå óå %d. +CHAN_LEVELS_CHANGED_FOUNDER + Level for %s on channel %s changed to founder only. CHAN_LEVELS_UNKNOWN Ç åðéëïãÞ %s äåí åßíáé ãíùóôÞ. ÃñÜøå %R%s HELP LEVELS DESC ãéá ôç ëßóôá ìå ôéó áíáëõôéêÝò åðéëïãÝò. CHAN_LEVELS_DISABLED @@ -4860,10 +4862,10 @@ CHAN_HELP_AKICK ëßóôá akick. CHAN_HELP_LEVELS - Óýíôáîç: LEVELS êáíÜëé SET ôýðïò âáèìüò - LEVELS êáíÜëé {DIS | DISABLE} ôýðïò - LEVELS êáíÜëé LIST - LEVELS êáíÜëé RESET + Óýíôáîç: LEVELS êáíÜëé SET ôýðïò [âáèìüò|FOUNDER] + LEVELS êáíÜëé {DIS | DISABLE} ôýðïò + LEVELS êáíÜëé LIST + LEVELS êáíÜëé RESET The LEVELS command allows fine control over the meaning of the numeric access levels used for channels. With this diff --git a/lang/hun.l b/lang/hun.l index b212c09f7..2a2bf0ea8 100644 --- a/lang/hun.l +++ b/lang/hun.l @@ -1548,6 +1548,8 @@ CHAN_LEVELS_RANGE A szintnek kizárólag %d és %d között kell lennie. CHAN_LEVELS_CHANGED %s szintjének új értéke a (%s) csatornán: %d. +CHAN_LEVELS_CHANGED_FOUNDER + Level for %s on channel %s changed to founder only. CHAN_LEVELS_UNKNOWN %s beállítás nem ismert. Írd be %R%s HELP LEVELS DESC az érvényes beállítások listájának megtekintéséhez. @@ -4790,7 +4792,7 @@ CHAN_HELP_AKICK törölhetõ. CHAN_HELP_LEVELS - Syntax: LEVELS #szoba SET típus szint + Syntax: LEVELS #szoba SET típus [szint|FOUNDER] LEVELS #szoba {DIS | DISABLE} típus LEVELS #szoba LIST LEVELS #szoba RESET diff --git a/lang/it.l b/lang/it.l index b2b9bbe49..f2d7335d1 100644 --- a/lang/it.l +++ b/lang/it.l @@ -1525,6 +1525,8 @@ CHAN_LEVELS_RANGE Il livello deve essere compreso tra %d e %d (inclusi). CHAN_LEVELS_CHANGED Il livello di %s sul canale %s è stato modificato a %d. +CHAN_LEVELS_CHANGED_FOUNDER + Level for %s on channel %s changed to founder only. CHAN_LEVELS_UNKNOWN Impostazione %s sconosciuta. Digita %R%s HELP LEVELS DESC per una lista delle impostazioni valide. CHAN_LEVELS_DISABLED @@ -4773,7 +4775,7 @@ CHAN_HELP_AKICK Il comando AKICK CLEAR svuota la lista AutoKick. CHAN_HELP_LEVELS - Sintassi: LEVELS canale SET tipo livello + Sintassi: LEVELS canale SET tipo [livello|FOUNDER] LEVELS canale {DIS | DISABLE} tipo LEVELS canale LIST LEVELS canale RESET diff --git a/lang/nl.l b/lang/nl.l index 60d3f329d..38b42ffaa 100644 --- a/lang/nl.l +++ b/lang/nl.l @@ -1542,6 +1542,8 @@ CHAN_LEVELS_RANGE Niveau moet tussen de %d en %d inclusief zijn. CHAN_LEVELS_CHANGED Niveau voor %s op kanaal %s veranderd in %d. +CHAN_LEVELS_CHANGED_FOUNDER + Level for %s on channel %s changed to founder only. CHAN_LEVELS_UNKNOWN Instelling %s onbekend. Type %R%s HELP LEVELS DESC voor een lijst van geldige instellingen. CHAN_LEVELS_DISABLED @@ -4844,7 +4846,7 @@ CHAN_HELP_AKICK The AKICK CLEAR commando maakt de AutoKick lijst leeg. CHAN_HELP_LEVELS - Gebruik: LEVELS kanaal SET type niveau + Gebruik: LEVELS kanaal SET type [niveau|FOUNDER] LEVELS kanaal {DIS | DISABLE} type LEVELS kanaal LIST LEVELS kanaal RESET diff --git a/lang/pl.l b/lang/pl.l index 3c3e764ea..341f57a63 100644 --- a/lang/pl.l +++ b/lang/pl.l @@ -1996,6 +1996,9 @@ CHAN_LEVELS_CHANGED Wymagany poziom dla %s na kanale %s zmieniono teraz na %d. +CHAN_LEVELS_CHANGED_FOUNDER + Level for %s on channel %s changed to founder only. + CHAN_LEVELS_UNKNOWN Nieznane ustawienie %s. Napisz %R%s HELP LEVELS DESC, aby uzyskaæ listê dostêpnych mo¿liwo¶ci. @@ -5852,7 +5855,7 @@ CHAN_HELP_AKICK Polecenie AKICK CLEAR usuwa wszystkie wpisy z listy. CHAN_HELP_LEVELS - Sk³adnia: LEVELS kana³ SET typ poziom + Sk³adnia: LEVELS kana³ SET typ [poziom|FOUNDER] LEVELS kana³ {DIS | DISABLE} typ LEVELS kana³ LIST LEVELS kana³ RESET diff --git a/lang/pt.l b/lang/pt.l index 9e74d01a8..2142db2f6 100644 --- a/lang/pt.l +++ b/lang/pt.l @@ -1543,6 +1543,8 @@ CHAN_LEVELS_RANGE O nível deve ser entre %d e %d inclusive. CHAN_LEVELS_CHANGED Nível para %s no canal %s alterado para %d. +CHAN_LEVELS_CHANGED_FOUNDER + Level for %s on channel %s changed to founder only. CHAN_LEVELS_UNKNOWN Level %s desconhecido. Digite %R%s HELP LEVELS DESC para uma lista de Levels válidos. CHAN_LEVELS_DISABLED @@ -4744,7 +4746,7 @@ CHAN_HELP_AKICK de AutoKick. CHAN_HELP_LEVELS - Sintaxe: LEVELS canal SET tipo nível + Sintaxe: LEVELS canal SET tipo [nível|FOUNDER] LEVELS canal {DIS | DISABLE} tipo LEVELS canal LIST LEVELS canal RESET diff --git a/lang/ru.l b/lang/ru.l index d80fdd2b8..d469b112b 100644 --- a/lang/ru.l +++ b/lang/ru.l @@ -1522,6 +1522,8 @@ CHAN_LEVELS_RANGE Óðîâåíü äîëæåí áûòü ÷èñëîì ìåæäó %d è %d âêëþ÷èòåëüíî. CHAN_LEVELS_CHANGED Óðîâåíü äîñòóïà ê %s íà êàíàëå %s èçìåíåí íà %d. +CHAN_LEVELS_CHANGED_FOUNDER + Level for %s on channel %s changed to founder only. CHAN_LEVELS_UNKNOWN Íåèçâåñòíûé ïóíêò %s. Äëÿ ïîëó÷åíèÿ ñïèñêà âñåõ äîñòóïíûõ çíà÷åíèé ñì. %R%s HELP LEVELS DESC CHAN_LEVELS_DISABLED @@ -4839,7 +4841,7 @@ CHAN_HELP_AKICK Êîìàíäà AKICK CLEAR ïîëíîñòüþ î÷èùàåò ñïèñîê àâòîêèêîâ êàíàëà. CHAN_HELP_LEVELS - Ñèíòàêñèñ: LEVELS #êàíàë SET òèï óðîâåíü + Ñèíòàêñèñ: LEVELS #êàíàë SET òèï [óðîâåíü|FOUNDER] LEVELS #êàíàë {DIS | DISABLE} òèï LEVELS #êàíàë LIST LEVELS #êàíàë RESET diff --git a/lang/tr.l b/lang/tr.l index 421b9158e..d73525d08 100644 --- a/lang/tr.l +++ b/lang/tr.l @@ -1549,6 +1549,8 @@ CHAN_LEVELS_RANGE Level %d ile %d arasýnda olmalýdýr. CHAN_LEVELS_CHANGED %s için level %s kanalýnda %d olarak deðiþtirildi. +CHAN_LEVELS_CHANGED_FOUNDER + Level for %s on channel %s changed to founder only. CHAN_LEVELS_UNKNOWN Varolmayan ayar: %s. Geçerli ayar listesi için %R%s HELP LEVELS DESC yazýnýz. CHAN_LEVELS_DISABLED @@ -4831,7 +4833,7 @@ CHAN_HELP_AKICK siler. CHAN_HELP_LEVELS - Kullanýmý: LEVELS kanaladý SET tip seviye + Kullanýmý: LEVELS kanaladý SET tip [seviye|FOUNDER] LEVELS kanaladý {DIS | DISABLE} tip LEVELS kanaladý LIST LEVELS kanaladý RESET diff --git a/src/chanserv.c b/src/chanserv.c index 4df46d1ef..2c60ec004 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -29,7 +29,7 @@ static int def_levels[][2] = { { CA_NOJOIN, -2 }, { CA_INVITE, 5 }, { CA_AKICK, 10 }, - { CA_SET, ACCESS_FOUNDER }, + { CA_SET, ACCESS_QOP }, { CA_CLEAR, ACCESS_FOUNDER }, { CA_UNBAN, 5 }, { CA_OPDEOP, 5 }, @@ -51,17 +51,17 @@ static int def_levels[][2] = { { CA_HALFOPME, 4 }, { CA_HALFOP, 5 }, { CA_PROTECTME, 10 }, - { CA_PROTECT, ACCESS_FOUNDER }, + { CA_PROTECT, ACCESS_QOP }, { CA_KICKME, 5 }, { CA_KICK, 5 }, { CA_SIGNKICK, ACCESS_FOUNDER }, { CA_BANME, 5 }, { CA_BAN, 5 }, { CA_TOPIC, ACCESS_FOUNDER }, - { CA_INFO, ACCESS_FOUNDER }, - { CA_AUTOOWNER, ACCESS_FOUNDER }, + { CA_INFO, ACCESS_QOP }, + { CA_AUTOOWNER, ACCESS_QOP }, { CA_OWNER, ACCESS_FOUNDER }, - { CA_OWNERME, ACCESS_FOUNDER }, + { CA_OWNERME, ACCESS_QOP }, { -1 } }; @@ -856,10 +856,10 @@ int check_access(User * user, ChannelInfo * ci, int what) if (limit == ACCESS_INVALID) return 0; - if (what == ACCESS_FOUNDER) - return IsFounder(user, ci); - if (level >= ACCESS_FOUNDER) - return (what == CA_AUTODEOP || what == CA_NOJOIN) ? 0 : 1; + if (limit > ACCESS_FOUNDER) + return 1; + if (limit == ACCESS_FOUNDER) + return (what == CA_AUTODEOP || what == CA_NOJOIN ? !IsRealFounder(user, ci) : IsRealFounder(user, ci)); /* Hacks to make flags work */ if (what == CA_AUTODEOP && (ci->HasFlag(CI_SECUREOPS)) && level == 0) return 1; diff --git a/src/core/cs_access.c b/src/core/cs_access.c index bc05695a2..3da39cf0d 100644 --- a/src/core/cs_access.c +++ b/src/core/cs_access.c @@ -456,12 +456,18 @@ class CommandCSLevels : public Command else if (cmd == "SET") { level = strtol(s, &error, 10); + if (!stricmp(s, "FOUNDER")) + { + level = ACCESS_FOUNDER; + *error = '\0'; + } + if (*error != '\0') { this->OnSyntaxError(u, "SET"); return MOD_CONT; } - if (level <= ACCESS_INVALID || level >= ACCESS_FOUNDER) { + if (level <= ACCESS_INVALID || level > ACCESS_FOUNDER) { notice_lang(Config.s_ChanServ, u, CHAN_LEVELS_RANGE, ACCESS_INVALID + 1, ACCESS_FOUNDER - 1); return MOD_CONT; @@ -473,8 +479,11 @@ class CommandCSLevels : public Command Alog() << Config.s_ChanServ << ": " << u->GetMask() << " set level " << levelinfo[i].name << " on channel " << ci->name << " to " << level; - notice_lang(Config.s_ChanServ, u, CHAN_LEVELS_CHANGED, - levelinfo[i].name, chan, level); + if (level == ACCESS_FOUNDER) + notice_lang(Config.s_ChanServ, u, CHAN_LEVELS_CHANGED_FOUNDER, levelinfo[i].name, ci->name.c_str()); + else + notice_lang(Config.s_ChanServ, u, CHAN_LEVELS_CHANGED, + levelinfo[i].name, ci->name.c_str(), level); return MOD_CONT; } } -- cgit