summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/Changes.lang2
-rw-r--r--lang/cat.l4
-rw-r--r--lang/de.l4
-rw-r--r--lang/en_us.l2
-rw-r--r--lang/es.l4
-rw-r--r--lang/fr.l4
-rw-r--r--lang/gr.l10
-rw-r--r--lang/hun.l4
-rw-r--r--lang/it.l4
-rw-r--r--lang/nl.l4
-rw-r--r--lang/pl.l5
-rw-r--r--lang/pt.l4
-rw-r--r--lang/ru.l4
-rw-r--r--lang/tr.l4
-rw-r--r--src/chanserv.c18
-rw-r--r--src/core/cs_access.c15
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;
}
}