diff options
-rw-r--r-- | docs/Changes.lang | 2 | ||||
-rw-r--r-- | lang/cat.l | 4 | ||||
-rw-r--r-- | lang/de.l | 4 | ||||
-rw-r--r-- | lang/en_us.l | 2 | ||||
-rw-r--r-- | lang/es.l | 4 | ||||
-rw-r--r-- | lang/fr.l | 4 | ||||
-rw-r--r-- | lang/gr.l | 10 | ||||
-rw-r--r-- | lang/hun.l | 4 | ||||
-rw-r--r-- | lang/it.l | 4 | ||||
-rw-r--r-- | lang/nl.l | 4 | ||||
-rw-r--r-- | lang/pl.l | 5 | ||||
-rw-r--r-- | lang/pt.l | 4 | ||||
-rw-r--r-- | lang/ru.l | 4 | ||||
-rw-r--r-- | lang/tr.l | 4 | ||||
-rw-r--r-- | src/chanserv.c | 18 | ||||
-rw-r--r-- | 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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; } } |