summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2009-11-06 02:08:15 +0000
committerAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2009-11-06 02:08:15 +0000
commit3317f406d26d29bd7f009d93b2680fd118b2a0b0 (patch)
tree60e730e1d154d2624d42eef6e8138633a4c4e21c
parent95a017db9f3761e209bb3a43d02aad1630cfc022 (diff)
Added /chanserv access view, which shows the access creator and last time used
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2611 5417fbe8-f217-4b02-8779-1006273d7864
-rw-r--r--Changes.lang4
-rw-r--r--include/regchannel.h10
-rw-r--r--include/services.h1
-rw-r--r--lang/cat.l14
-rw-r--r--lang/de.l10
-rw-r--r--lang/en_us.l14
-rw-r--r--lang/es.l14
-rw-r--r--lang/fr.l12
-rw-r--r--lang/gr.l20
-rw-r--r--lang/hun.l12
-rw-r--r--lang/it.l14
-rw-r--r--lang/nl.l14
-rw-r--r--lang/pl.l14
-rw-r--r--lang/pt.l12
-rw-r--r--lang/ru.l12
-rw-r--r--lang/tr.l14
-rw-r--r--src/chanserv.c8
-rw-r--r--src/core/cs_access.c76
-rw-r--r--src/core/cs_xop.c6
19 files changed, 253 insertions, 28 deletions
diff --git a/Changes.lang b/Changes.lang
index c3036481a..1fd39adbc 100644
--- a/Changes.lang
+++ b/Changes.lang
@@ -21,10 +21,14 @@ Anope Version 1.9.2
CHAN_LEVEL_AUTOOWNER
CHAN_LEVEL_OWNER
CHAN_LEVEL_OWNERME
+ CHAN_ACCESS_VIEW_XOP_FORMAT
+ CHAN_ACCESS_VIEW_AXS_FORMAT
*** Mod Strings:
CHAN_HELP_SET
CHAN_REGISTER_SYNTAX
+ CHAN_ACCESS_SYNTAX
+ CHAN_HELP_ACCESS
*** Del Strings:
CHAN_PASSWORD_IS
diff --git a/include/regchannel.h b/include/regchannel.h
index 708045733..24612c866 100644
--- a/include/regchannel.h
+++ b/include/regchannel.h
@@ -90,17 +90,23 @@ class CoreExport ChannelInfo : public Extensible
*
* @param nc The NickCore of the user that the access entry should be tied to
* @param level The channel access level the user has on the channel
+ * @param creator The user who added the access
* @param last_seen When the user was last seen within the channel
*
* Creates a new access list entry and inserts it into the access list.
*/
- void AddAccess(NickCore *nc, int16 level, int32 last_seen = 0)
+ void AddAccess(NickCore *nc, int16 level, const std::string &creator, int32 last_seen = 0)
{
- ChanAccess *new_access = new ChanAccess;
+ ChanAccess *new_access = new ChanAccess();
new_access->in_use = 1;
new_access->nc = nc;
new_access->level = level;
new_access->last_seen = last_seen;
+ if (!creator.empty())
+ new_access->creator = creator;
+ else
+ new_access->creator = "Unknown";
+
access.push_back(new_access);
}
diff --git a/include/services.h b/include/services.h
index d5596c833..d90146e41 100644
--- a/include/services.h
+++ b/include/services.h
@@ -641,6 +641,7 @@ struct ChanAccess {
int16 level;
NickCore *nc; /* Guaranteed to be non-NULL if in use, NULL if not */
time_t last_seen;
+ std::string creator;
};
/* AutoKick data. */
diff --git a/lang/cat.l b/lang/cat.l
index f02c2a77b..7622f759c 100644
--- a/lang/cat.l
+++ b/lang/cat.l
@@ -1411,7 +1411,7 @@ CHAN_VOP_CLEAR
# ACCESS messages
CHAN_ACCESS_SYNTAX
- ACCESS canal {ADD|DEL|LIST|CLEAR} [nick [nivell] | llista]
+ ACCESS canal {ADD|DEL|LIST|VIEW|CLEAR} [nick [nivell] | llista]
CHAN_ACCESS_XOP
No pots utilitzar aquest comanda.
Utilitza les comandes AOP, SOP i VOP.
@@ -1461,6 +1461,12 @@ CHAN_ACCESS_LIST_AXS_FORMAT
%3d %4d %s
CHAN_ACCESS_CLEAR
La llista d'accés pel canal %s ha estat netegada.
+CHAN_ACCESS_VIEW_XOP_FORMAT
+ %3d %s %s
+ by %s, last seen %s
+CHAN_ACCESS_VIEW_AXS_FORMAT
+ %3d %4d %s
+ by %s, last seen %s
# AKICK responses
CHAN_AKICK_SYNTAX
@@ -4714,6 +4720,7 @@ CHAN_HELP_ACCESS
Sintàxi: ACCESS canal ADD nick nivell
ACCESS canal DEL {nick | indices | llista}
ACCESS canal LIST [mascara | llista]
+ ACCESS canal VIEW [mascara | llista]
ACCESS canal CLEAR
Manté la llista d'accés per a un canal. La llista
@@ -4747,7 +4754,10 @@ CHAN_HELP_ACCESS
ACCESS #canal LIST 2-5,7-9
llista instàncies d'accés numerades 2 fins 5 i
7 fins a 9.
-
+
+ The ACCESS VIEW command displays the access list similar
+ to ACCESS LIST but shows the creator and last used time.
+
La comanda ACCESS CLEAR neteja totes les instàncies
de la llista d'accés.
diff --git a/lang/de.l b/lang/de.l
index 9393751c1..f1c0e06e5 100644
--- a/lang/de.l
+++ b/lang/de.l
@@ -1029,6 +1029,12 @@ CHAN_LEVEL_OWNER
Allowed to use OWNER command
CHAN_LEVEL_OWNERME
Allowed to (de)owner him/herself
+CHAN_ACCESS_VIEW_XOP_FORMAT
+ %3d %s %s
+ by %s, last seen %s
+CHAN_ACCESS_VIEW_AXS_FORMAT
+ %3d %4d %s
+ by %s, last seen %s
# Automatic responses
CHAN_LEVEL_BANME
@@ -4738,6 +4744,7 @@ CHAN_HELP_ACCESS
Syntax: ACCESS Channel ADD Nickname Level
ACCESS Channel DEL {Nickname | entry-num | Liste}
ACCESS Channel LIST [Maske | Liste]
+ ACCESS Channel VIEW [Maske | Liste]
ACCESS Channel CLEAR
Verwaltet die Zugriffsliste für einen Channel. Diese
@@ -4773,6 +4780,9 @@ CHAN_HELP_ACCESS
Zeigt Einträge mit den Nummern 2 bis 5 und
7 bis 9 an.
+ The ACCESS VIEW command displays the access list similar
+ to ACCESS LIST but shows the creator and last used time.
+
Durch ACCESS CLEAR werden alle Einträge der
Zugriffsliste entfernt.
diff --git a/lang/en_us.l b/lang/en_us.l
index 28241f85d..e13805bf3 100644
--- a/lang/en_us.l
+++ b/lang/en_us.l
@@ -1380,7 +1380,7 @@ CHAN_VOP_CLEAR
# ACCESS messages
CHAN_ACCESS_SYNTAX
- ACCESS channel {ADD|DEL|LIST|CLEAR} [nick [level] | entry-list]
+ ACCESS channel {ADD|DEL|LIST|VIEW|CLEAR} [nick [level] | entry-list]
CHAN_ACCESS_XOP
You can't use this command.
Use the AOP, SOP and VOP commands instead.
@@ -1430,6 +1430,12 @@ CHAN_ACCESS_LIST_AXS_FORMAT
%3d %4d %s
CHAN_ACCESS_CLEAR
Channel %s access list has been cleared.
+CHAN_ACCESS_VIEW_XOP_FORMAT
+ %3d %s %s
+ by %s, last seen %s
+CHAN_ACCESS_VIEW_AXS_FORMAT
+ %3d %4d %s
+ by %s, last seen %s
# AKICK responses
CHAN_AKICK_SYNTAX
@@ -4533,6 +4539,7 @@ CHAN_HELP_ACCESS
Syntax: ACCESS channel ADD nick level
ACCESS channel DEL {nick | entry-num | list}
ACCESS channel LIST [mask | list]
+ ACCESS channel VIEW [mask | list]
ACCESS channel CLEAR
Maintains the access list for a channel. The access
@@ -4564,7 +4571,10 @@ CHAN_HELP_ACCESS
ACCESS #channel LIST 2-5,7-9
Lists access entries numbered 2 through 5 and
7 through 9.
-
+
+ The ACCESS VIEW command displays the access list similar
+ to ACCESS LIST but shows the creator and last used time.
+
The ACCESS CLEAR command clears all entries of the
access list.
diff --git a/lang/es.l b/lang/es.l
index 66b6eed6f..086483bd3 100644
--- a/lang/es.l
+++ b/lang/es.l
@@ -1409,7 +1409,7 @@ CHAN_VOP_CLEAR
# ACCESS messages
CHAN_ACCESS_SYNTAX
- ACCESS canal {ADD|DEL|LIST|CLEAR} [nick [nivel] | lista]
+ ACCESS canal {ADD|DEL|LIST|VIEW|CLEAR} [nick [nivel] | lista]
CHAN_ACCESS_XOP
No puedes usar este comando.
Usa los comandos AOP, SOP y VOP en vez.
@@ -1459,6 +1459,12 @@ CHAN_ACCESS_LIST_AXS_FORMAT
%3d %4d %s
CHAN_ACCESS_CLEAR
La lista de acceso para el canal %s ha sido limpiada.
+CHAN_ACCESS_VIEW_XOP_FORMAT
+ %3d %s %s
+ by %s, last seen %s
+CHAN_ACCESS_VIEW_AXS_FORMAT
+ %3d %4d %s
+ by %s, last seen %s
# AKICK responses
CHAN_AKICK_SYNTAX
@@ -4686,6 +4692,7 @@ CHAN_HELP_ACCESS
Sintaxis: ACCESS canal ADD nick nivel
ACCESS canal DEL {nick | indices | lista}
ACCESS canal LIST [mascara | lista]
+ ACCESS canal VIEW [mascara | lista]
ACCESS canal CLEAR
Mantiene la lista de acceso para un canal. La lista
@@ -4719,7 +4726,10 @@ CHAN_HELP_ACCESS
ACCESS #canal LIST 2-5,7-9
Lista instancias de acceso numeradas 2 hasta 5 y
7 hasta 9.
-
+
+ The ACCESS VIEW command displays the access list similar
+ to ACCESS LIST but shows the creator and last used time.
+
El comando ACCESS CLEAR limpia todas las instancias
de la lista de acceso.
diff --git a/lang/fr.l b/lang/fr.l
index c19ef4d5c..6b3df809d 100644
--- a/lang/fr.l
+++ b/lang/fr.l
@@ -1417,7 +1417,7 @@ CHAN_VOP_CLEAR
# ACCESS messages
CHAN_ACCESS_SYNTAX
- ACCESS canal {ADD|DEL|LIST|CLEAR} [pseudo [level] | liste-d'entrées]
+ ACCESS canal {ADD|DEL|LIST|VIEW|CLEAR} [pseudo [level] | liste-d'entrées]
CHAN_ACCESS_XOP
Vous ne pouvez pas utiliser cette commande.
Utilisez les commandes AOP, SOP et VOP à la place.
@@ -1467,6 +1467,12 @@ CHAN_ACCESS_LIST_AXS_FORMAT
%3d %4d %s
CHAN_ACCESS_CLEAR
La liste d'accès de %s est maintenant vide.
+CHAN_ACCESS_VIEW_XOP_FORMAT
+ %3d %s %s
+ by %s, last seen %s
+CHAN_ACCESS_VIEW_AXS_FORMAT
+ %3d %4d %s
+ by %s, last seen %s
# AKICK responses
CHAN_AKICK_SYNTAX
@@ -4748,6 +4754,7 @@ CHAN_HELP_ACCESS
Syntaxe: ACCESS canal ADD pseudo level
ACCESS canal DEL {pseudo | numéros d'entrée | liste}
ACCESS canal LIST [mask | liste]
+ ACCESS canal VIEW [mask | liste]
ACCESS canal CLEAR
Gère la liste d'accès d'un canal. La liste d'accès
@@ -4781,6 +4788,9 @@ CHAN_HELP_ACCESS
Liste toutes les entrées comprises entre 2 et 5 et
entre 7 et 9.
+ The ACCESS VIEW command displays the access list similar
+ to ACCESS LIST but shows the creator and last used time.
+
La commande ACCESS CLEAR supprime toutes les entrées
de la liste d'accès.
diff --git a/lang/gr.l b/lang/gr.l
index 8695daeeb..3dee9b58e 100644
--- a/lang/gr.l
+++ b/lang/gr.l
@@ -1409,7 +1409,7 @@ CHAN_VOP_CLEAR
# ACCESS messages
CHAN_ACCESS_SYNTAX
- ACCESS channel {ADD|DEL|LIST|CLEAR} [nick [level] | entry-list]
+ ACCESS channel {ADD|DEL|LIST|VIEW|CLEAR} [nick [level] | entry-list]
CHAN_ACCESS_XOP
Äåí ìðïñåßò íá ÷ñçóéìïðïéÞóåéò áõôÞ ôçí åíôïëÞ.
×ñçóéìïðïßçóå AOP, SOP êáé VOP åíôïëÝò áíôß ãéá ôçí access.
@@ -1457,6 +1457,12 @@ CHAN_ACCESS_LIST_XOP_FORMAT
%3d %s %s
CHAN_ACCESS_LIST_AXS_FORMAT
%3d %4d %s
+CHAN_ACCESS_VIEW_XOP_FORMAT
+ %3d %s %s
+ by %s, last seen %s
+CHAN_ACCESS_VIEW_AXS_FORMAT
+ %3d %4d %s
+ by %s, last seen %s
# AKICK responses
CHAN_ACCESS_CLEAR
@@ -4671,9 +4677,10 @@ CHAN_HELP_VOP
CHAN_HELP_ACCESS
Óýíôáîç: ACCESS êáíÜëé ADD øåõäþíõìï âáèìüò
- ACCESS êáíÜëé DEL {øåõäþíõìï | èÝóåéò-íïõ | list}
- ACCESS êáíÜëé LIST [ìÜóêá | list]
- ACCESS êáíÜëé CLEAR
+ ACCESS êáíÜëé DEL {øåõäþíõìï | èÝóåéò-íïõ | list}
+ ACCESS êáíÜëé LIST [ìÜóêá | list]
+ ACCESS êáíÜëé VIEW [ìÜóêá | list]
+ ACCESS êáíÜëé CLEAR
ÁëëÜæåé ôçí access ëßóôá ôïõ êáíáëéïý. Ç ëßóôá access
êáèïñßæåé ðïéïé ÷ñÞóôåò èá Ý÷ïõí op óôï êáíÜëé Þ
@@ -4702,7 +4709,10 @@ CHAN_HELP_ACCESS
ACCESS #êáíÜëé LIST 2-5,7-9
Åìöáíßæåé áðü ôçí ëßóôá access ôéò èÝóåéò ìå ôá
íïýìåñá 2 Ýùò 5 êáé 7 Ýùò 9.
-
+
+ The ACCESS VIEW command displays the access list similar
+ to ACCESS LIST but shows the creator and last used time.
+
Ç åíôïëÞ ACCESS CLEAR äéáãñÜöåé üëåò ôéó èÝóåéò ôçò ëßóôáò access.
CHAN_HELP_ACCESS_LEVELS
diff --git a/lang/hun.l b/lang/hun.l
index 85d6dc434..0c0578382 100644
--- a/lang/hun.l
+++ b/lang/hun.l
@@ -1400,7 +1400,7 @@ CHAN_VOP_CLEAR
# ACCESS messages
CHAN_ACCESS_SYNTAX
- ACCESS#szoba{ ADD | DEL | LIST | CLEAR } [ nick [ szint ] | sorszám ]
+ ACCESS #szoba { ADD | DEL | LIST | VIEW | CLEAR } [ nick [ szint ] | sorszám ]
CHAN_ACCESS_XOP
Nem használhatod ezt a parancsot.
Használd az AOP, SOP és VOP parancsokat helyette.
@@ -1449,6 +1449,12 @@ CHAN_ACCESS_LIST_XOP_FORMAT
%3d %s %s
CHAN_ACCESS_LIST_AXS_FORMAT
%3d %4d %s
+CHAN_ACCESS_VIEW_XOP_FORMAT
+ %3d %s %s
+ by %s, last seen %s
+CHAN_ACCESS_VIEW_AXS_FORMAT
+ %3d %4d %s
+ by %s, last seen %s
# AKICK válaszok
CHAN_ACCESS_CLEAR
@@ -4608,6 +4614,7 @@ CHAN_HELP_ACCESS
Syntax: ACCESS #szoba ADD nick szint
ACCESS #szoba DEL {nick | sorszám | lista}
ACCESS #szoba LIST [maszk | lista]
+ ACCESS #szoba VIEW [maszk | lista]
ACCESS #szoba CLEAR
Access lista a csatornán. A hozzáférési lista (access)
@@ -4636,6 +4643,9 @@ CHAN_HELP_ACCESS
Listázza azokat a usereket, akik 2 és 5 között illetve
7-tõl 9-ig szerepelnek a listán.
+ The ACCESS VIEW command displays the access list similar
+ to ACCESS LIST but shows the creator and last used time.
+
Az ACCESS CLEAR parancs töröl minden bejegyzés a szoba
hozzáférési listájáról.
diff --git a/lang/it.l b/lang/it.l
index 7477818d6..330177cab 100644
--- a/lang/it.l
+++ b/lang/it.l
@@ -1384,7 +1384,7 @@ CHAN_VOP_CLEAR
# ACCESS messages
CHAN_ACCESS_SYNTAX
- ACCESS canale {ADD|DEL|LIST|CLEAR} [nick [livello] | numero-lista]
+ ACCESS canale {ADD|DEL|LIST|VIEW|CLEAR} [nick [livello] | numero-lista]
CHAN_ACCESS_XOP
Questo comando non è utilizzabile; usa i comandi SOP, AOP, HOP e VOP.
Digita %R%s HELP comando per ottenere maggiori informazioni.
@@ -1433,6 +1433,12 @@ CHAN_ACCESS_LIST_AXS_FORMAT
%3d %4d %s
CHAN_ACCESS_CLEAR
La lista di accesso del canale %s è stata svuotata.
+CHAN_ACCESS_VIEW_XOP_FORMAT
+ %3d %s %s
+ by %s, last seen %s
+CHAN_ACCESS_VIEW_AXS_FORMAT
+ %3d %4d %s
+ by %s, last seen %s
# AKICK responses
CHAN_AKICK_SYNTAX
@@ -4579,6 +4585,7 @@ CHAN_HELP_ACCESS
Sintassi: ACCESS canale ADD nick livello
ACCESS canale DEL {nick | numero | lista}
ACCESS canale LIST [mask | lista]
+ ACCESS canale VIEW [mask | lista]
ACCESS canale CLEAR
Gestisce la lista di accesso del canale.
@@ -4613,7 +4620,10 @@ CHAN_HELP_ACCESS
ACCESS #canale LIST 2-5,7-9
Mostra i record della lista che hanno numero da 2
a 5 e da 7 a 9 (il 6 è quindi escluso).
-
+
+ The ACCESS VIEW command displays the access list similar
+ to ACCESS LIST but shows the creator and last used time.
+
Il comando ACCESS CLEAR svuota completamente la lista di
accesso.
diff --git a/lang/nl.l b/lang/nl.l
index c68fa3f8a..c1d20d08f 100644
--- a/lang/nl.l
+++ b/lang/nl.l
@@ -1400,7 +1400,7 @@ CHAN_VOP_CLEAR
# ACCESS messages
CHAN_ACCESS_SYNTAX
- ACCESS kanaal {ADD|DEL|LIST|CLEAR} [nick [niveau] | lijst]
+ ACCESS kanaal {ADD|DEL|LIST|VIEW|CLEAR} [nick [niveau] | lijst]
CHAN_ACCESS_XOP
Je kan dit commando niet gebruiken.
Gebruik de AOP, SOP en VOP commando's in plaats van deze.
@@ -1450,6 +1450,12 @@ CHAN_ACCESS_LIST_AXS_FORMAT
%3d %4d %s
CHAN_ACCESS_CLEAR
Kanaal %s toegangslijst is leeggemaakt.
+CHAN_ACCESS_VIEW_XOP_FORMAT
+ %3d %s %s
+ by %s, last seen %s
+CHAN_ACCESS_VIEW_AXS_FORMAT
+ %3d %4d %s
+ by %s, last seen %s
# AKICK responses
CHAN_AKICK_SYNTAX
@@ -4650,6 +4656,7 @@ CHAN_HELP_ACCESS
Gebruik: ACCESS kanaal ADD nick niveau
ACCESS kanaal DEL {nick | entry-nr | lijst}
ACCESS kanaal LIST [mask | lijst]
+ ACCESS kanaal VIEW [mask | lijst]
ACCESS kanaal CLEAR
Onderhoud de toegangslijst voor een kanaal. De toegangs-
@@ -4683,7 +4690,10 @@ CHAN_HELP_ACCESS
ACCESS #kanaal LIST 2-5,7-9
Geeft gebruikers 2 t/m 5 en 7 t/m 9 van de
toegangslijst weer.
-
+
+ The ACCESS VIEW command displays the access list similar
+ to ACCESS LIST but shows the creator and last used time.
+
Het ACCESS CLEAR commando maakt de toegangslijst leeg.
CHAN_HELP_ACCESS_LEVELS
diff --git a/lang/pl.l b/lang/pl.l
index c163fa07f..58f3eaa2a 100644
--- a/lang/pl.l
+++ b/lang/pl.l
@@ -1802,7 +1802,7 @@ CHAN_VOP_CLEAR
# ACCESS messages
CHAN_ACCESS_SYNTAX
- ACCESS kana³ {ADD|DEL|LIST|CLEAR} [nick [poziom] | pozycja]
+ ACCESS kana³ {ADD|DEL|LIST|VIEW|CLEAR} [nick [poziom] | pozycja]
CHAN_ACCESS_XOP
Nie mo¿esz u¿yæ tej komendy.
@@ -1878,6 +1878,14 @@ CHAN_ACCESS_LIST_AXS_FORMAT
CHAN_ACCESS_CLEAR
Lista dostêpu kana³u %s zosta³a wyczyszczona.
+CHAN_ACCESS_VIEW_XOP_FORMAT
+ %3d %s %s
+ by %s, last seen %s
+
+CHAN_ACCESS_VIEW_AXS_FORMAT
+ %3d %4d %s
+ by %s, last seen %s
+
# AKICK responses
CHAN_AKICK_SYNTAX
AKICK kana³ {ADD | STICK | UNSTICK | DEL | LIST | VIEW | ENFORCE | CLEAR} [nick-lub-maska] [powód]
@@ -5649,6 +5657,7 @@ CHAN_HELP_ACCESS
Sk³adnia: ACCESS kana³ ADD nick level
ACCESS kana³ DEL {nick | numer | list}
ACCESS kana³ LIST [maska | list]
+ ACCESS kana³ VIEW [maska | list]
ACCESS kana³ CLEAR
Polecenie pozwala na zarz±dzanie wpisami w kana³owej
@@ -5685,6 +5694,9 @@ CHAN_HELP_ACCESS
Wy¶wietli wpisy na li¶cie od numeru 2 do 5, oraz
od 7 do 9.
+ The ACCESS VIEW command displays the access list similar
+ to ACCESS LIST but shows the creator and last used time.
+
Polecenie ACCESS CLEAR usuwa wszystkie wpisy z listy.
CHAN_HELP_ACCESS_LEVELS
diff --git a/lang/pt.l b/lang/pt.l
index 8089d27a5..1643c07fc 100644
--- a/lang/pt.l
+++ b/lang/pt.l
@@ -1401,7 +1401,7 @@ CHAN_VOP_CLEAR
# ACCESS messages
CHAN_ACCESS_SYNTAX
- ACCESS canal {ADD|DEL|LIST|CLEAR} [nick [nível] | lista-entradas]
+ ACCESS canal {ADD|DEL|LIST|VIEW|CLEAR} [nick [nível] | lista-entradas]
CHAN_ACCESS_XOP
Você não pode usar este comando.
Ao invés, use os comandos VOP, HOP, AOP e SOP.
@@ -1451,6 +1451,12 @@ CHAN_ACCESS_LIST_AXS_FORMAT
%3d %4d %s
CHAN_ACCESS_CLEAR
Lista de acesso do canal %s apagada.
+CHAN_ACCESS_VIEW_XOP_FORMAT
+ %3d %s %s
+ by %s, last seen %s
+CHAN_ACCESS_VIEW_AXS_FORMAT
+ %3d %4d %s
+ by %s, last seen %s
# AKICK responses
CHAN_AKICK_SYNTAX
@@ -4555,6 +4561,7 @@ CHAN_HELP_ACCESS
Sintaxe: ACCESS canal ADD nick nível
ACCESS canal DEL {nick | entrada | lista-entradas}
ACCESS canal LIST [máscara | lista-entradas]
+ ACCESS canal VIEW [máscara | lista-entradas]
ACCESS canal CLEAR
Faz manutenção da lista de acesso de um canal. A lista
@@ -4588,6 +4595,9 @@ CHAN_HELP_ACCESS
ACCESS #canal LIST 2-5,7-9
Lista as entradas de acesso numeradas de 2 a 5 e de 7 a 9.
+ The ACCESS VIEW command displays the access list similar
+ to ACCESS LIST but shows the creator and last used time.
+
O comando ACCESS CLEAR limpa todas as entradas da lista
de acesso.
diff --git a/lang/ru.l b/lang/ru.l
index 7cd9b9898..69c343440 100644
--- a/lang/ru.l
+++ b/lang/ru.l
@@ -1381,7 +1381,7 @@ CHAN_VOP_CLEAR
# ACCESS messages
CHAN_ACCESS_SYNTAX
- ACCESS #êàíàë {ADD|DEL|LIST|CLEAR} [íèê [óðîâåíü] | íîìåð_çàïèñè]
+ ACCESS #êàíàë {ADD|DEL|LIST|VIEW|CLEAR} [íèê [óðîâåíü] | íîìåð_çàïèñè]
CHAN_ACCESS_XOP
Âû íå ìîæåòå èñïîëüçîâàòü ýòó êîìàíäó òàê êàê âêëþ÷åíà ñèñòåìà ïðèâèëåãèé xOP.
Äëÿ ìîäèôèêàöèè ñïèñêà äîñòóïà èñïîëüçóéòå êîìàíäû VOP, AOP è SOP.
@@ -1431,6 +1431,12 @@ CHAN_ACCESS_LIST_AXS_FORMAT
%3d %4d %s
CHAN_ACCESS_CLEAR
Ñïèñîê äîñòóïà êàíàëà %s áûë ïîëíîñòüþ î÷èùåí.
+CHAN_ACCESS_VIEW_XOP_FORMAT
+ %3d %s %s
+ by %s, last seen %s
+CHAN_ACCESS_VIEW_AXS_FORMAT
+ %3d %4d %s
+ by %s, last seen %s
# AKICK responses
CHAN_AKICK_SYNTAX
@@ -4648,6 +4654,7 @@ CHAN_HELP_ACCESS
Ñèíòàêñèñ: ACCESS #êàíàë ADD íèê óðîâåíü
ACCESS #êàíàë DEL {íèê | íîìåð_çàïèñè | ñïèñîê_çàïèñåé}
ACCESS #êàíàë LIST [ìàñêà | ñïèñîê_çàïèñåé]
+ ACCESS #êàíàë VIEW [ìàñêà | ñïèñîê_çàïèñåé]
ACCESS #êàíàë CLEAR
Ïîçâîëÿåò óïðàâëÿòü ñïèñêîì äîñòóïà (ACCESS-ñïèñêîì) êàíàëà.
@@ -4684,6 +4691,9 @@ CHAN_HELP_ACCESS
ACCESS #êàíàë LIST 2-5,7-9
îòîáðàçèò âñå çàïèñè ñî 2-îé ïî 5-óþ, è ñ 7-îé ïî 9-þ.
+ The ACCESS VIEW command displays the access list similar
+ to ACCESS LIST but shows the creator and last used time.
+
Êîìàíäà ACCESS CLEAR ïîçâîëÿåò ïîëíîñòüþ î÷èñòèòü ñïèñîê äîñòóïà.
CHAN_HELP_ACCESS_LEVELS
diff --git a/lang/tr.l b/lang/tr.l
index 2930e7f34..25380abe9 100644
--- a/lang/tr.l
+++ b/lang/tr.l
@@ -1408,7 +1408,7 @@ CHAN_VOP_CLEAR
# ACCESS messages
CHAN_ACCESS_SYNTAX
- ACCESS kanaladý {ADD|DEL|LIST|CLEAR} [nick [seviye] | kayýt-listesi]
+ ACCESS kanaladý {ADD|DEL|LIST|VIEW|CLEAR} [nick [seviye] | kayýt-listesi]
CHAN_ACCESS_XOP
Bu komutu kullanamazsiniz.
Yerine AOP, SOP veya VOP komutlarini kullanin.
@@ -1458,6 +1458,12 @@ CHAN_ACCESS_LIST_AXS_FORMAT
%3d %4d %s
CHAN_ACCESS_CLEAR
Kanal %s access listesi temizlendi.
+CHAN_ACCESS_VIEW_XOP_FORMAT
+ %3d %s %s
+ by %s, last seen %s
+CHAN_ACCESS_VIEW_AXS_FORMAT
+ %3d %4d %s
+ by %s, last seen %s
# AKICK responses
CHAN_AKICK_SYNTAX
@@ -4651,6 +4657,7 @@ CHAN_HELP_ACCESS
Kullanýmý: ACCESS kanaladý ADD nick seviye
ACCESS kanaladý DEL {nick | kayýt-no | liste}
ACCESS kanaladý LIST [mask | liste]
+ ACCESS kanaladý VIEW [mask | liste]
ACCESS kanaladý CLEAR
Bir kanal için access listesi oluþturur. Access listesi
@@ -4679,7 +4686,10 @@ CHAN_HELP_ACCESS
ACCESS #kanaladý LIST 2-5,7-9
2'den 5'e ve 7'den 9'a kadar olan access kayýtlarý
listelenir.
-
+
+ The ACCESS VIEW command displays the access list similar
+ to ACCESS LIST but shows the creator and last used time.
+
ACCESS CLEAR komutu tüm access listesini temizler.
CHAN_HELP_ACCESS_LEVELS
diff --git a/src/chanserv.c b/src/chanserv.c
index dd9299e02..53a11eb36 100644
--- a/src/chanserv.c
+++ b/src/chanserv.c
@@ -445,8 +445,13 @@ void load_cs_dbase()
nc = NULL;
uint32 last_seen;
SAFE(read_int32(&last_seen, f));
+ //SAFE(read_string(&s, f));
if (nc)
- ci->AddAccess(nc, level, last_seen);
+ {
+ //std::string creator = s ? s : "";
+ std::string creator = "";
+ ci->AddAccess(nc, level, creator, last_seen);
+ }
}
}
}
@@ -687,6 +692,7 @@ void save_cs_dbase()
SAFE(write_int16(access->level, f));
SAFE(write_string(access->nc->display, f));
SAFE(write_int32(access->last_seen, f));
+ //SAFE(write_string(access->creator.c_str(), f));
}
SAFE(write_int16(ci->akickcount, f));
diff --git a/src/core/cs_access.c b/src/core/cs_access.c
index bdf32b9d7..f784b3406 100644
--- a/src/core/cs_access.c
+++ b/src/core/cs_access.c
@@ -80,6 +80,51 @@ static int access_list_callback(User * u, int num, va_list args)
return access_list(u, num - 1, ci, sent_header);
}
+static int access_view(User *u, int index, ChannelInfo *ci, int *sent_header)
+{
+ ChanAccess *access = ci->GetAccess(index);
+ const char *xop;
+ char timebuf[64];
+ tm tm;
+
+ if (!access || !access->in_use)
+ return 0;
+
+ if (!*sent_header)
+ {
+ notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_HEADER, ci->name);
+ *sent_header = 1;
+ }
+
+ memset(&timebuf, 0, sizeof(timebuf));
+ if (ci->c && u->nc && nc_on_chan(ci->c, u->nc))
+ sprintf(timebuf, "Now");
+ else if (access->last_seen == 0)
+ sprintf(timebuf, "Never");
+ else
+ {
+ tm = *localtime(&access->last_seen);
+ strftime_lang(timebuf, sizeof(timebuf), u, STRFTIME_DATE_TIME_FORMAT, &tm);
+ }
+
+ if (ci->flags & CI_XOP)
+ {
+ xop = get_xop_level(access->level);
+ notice_lang(s_ChanServ, u, CHAN_ACCESS_VIEW_XOP_FORMAT, index + 1, xop, access->nc->display, access->creator.c_str(), timebuf);
+ }
+ else
+ notice_lang(s_ChanServ, u, CHAN_ACCESS_VIEW_AXS_FORMAT, index + 1, access->level, access->nc->display, access->creator.c_str(), timebuf);
+
+ return 1;
+}
+
+static int access_view_callback(User *u, int num, va_list args)
+{
+ ChannelInfo *ci = va_arg(args, ChannelInfo *);
+ int *sent_header = va_arg(args, int *);
+ return 0;
+ return access_view(u, num - 1, ci, sent_header);
+}
class CommandCSAccess : public Command
{
@@ -102,7 +147,7 @@ class CommandCSAccess : public Command
unsigned i;
int level = 0, ulev;
- bool is_list = cmd == "LIST";
+ bool is_list = cmd == "LIST" || cmd == "VIEW";
/* If LIST, we don't *require* any parameters, but we can take any.
* If DEL, we require a nick and no level.
@@ -193,7 +238,8 @@ class CommandCSAccess : public Command
return MOD_CONT;
}
- ci->AddAccess(nc, level);
+ std::string usernick = u->nick;
+ ci->AddAccess(nc, level, usernick);
FOREACH_MOD(I_OnAccessAdd, OnAccessAdd(ci, u, na->nick, level));
@@ -307,6 +353,32 @@ class CommandCSAccess : public Command
else
notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_FOOTER, ci->name);
}
+ else if (cmd == "VIEW")
+ {
+ int sent_header = 0;
+
+ if (ci->access.empty())
+ {
+ notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_EMPTY, chan);
+ return MOD_CONT;
+ }
+ if (nick && strspn(nick, "1234567890,-") == strlen(nick))
+ process_numlist(nick, NULL, access_view_callback, u, ci, &sent_header);
+ else
+ {
+ for (i = 0; i < ci->access.size(); ++i)
+ {
+ access = ci->GetAccess(i);
+ if (nick && access->nc && !Anope::Match(access->nc->display, nick, false))
+ continue;
+ access_view(u, i, ci, &sent_header);
+ }
+ }
+ if (!sent_header)
+ notice_lang(s_ChanServ, u, CHAN_ACCESS_NO_MATCH, chan);
+ else
+ notice_lang(s_ChanServ, u, CHAN_ACCESS_LIST_FOOTER, ci->name);
+ }
else if (cmd == "CLEAR")
{
if (readonly)
diff --git a/src/core/cs_xop.c b/src/core/cs_xop.c
index 48b0b627a..4e15ac2fc 100644
--- a/src/core/cs_xop.c
+++ b/src/core/cs_xop.c
@@ -178,11 +178,15 @@ class XOPBase : public Command
}
if (!change)
- ci->AddAccess(nc, level);
+ {
+ std::string usernick = u->nick;
+ ci->AddAccess(nc, level, usernick);
+ }
else
{
access->level = level;
access->last_seen = 0;
+ access->creator = u->nick;
}
alog("%s: %s!%s@%s (level %d) %s access level %d to %s (group %s) on channel %s", s_ChanServ, u->nick, u->GetIdent().c_str(), u->host, ulev, change ? "changed" : "set", level, na->nick, nc->display, ci->name);