diff options
author | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2009-11-06 02:08:15 +0000 |
---|---|---|
committer | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2009-11-06 02:08:15 +0000 |
commit | 3317f406d26d29bd7f009d93b2680fd118b2a0b0 (patch) | |
tree | 60e730e1d154d2624d42eef6e8138633a4c4e21c | |
parent | 95a017db9f3761e209bb3a43d02aad1630cfc022 (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.lang | 4 | ||||
-rw-r--r-- | include/regchannel.h | 10 | ||||
-rw-r--r-- | include/services.h | 1 | ||||
-rw-r--r-- | lang/cat.l | 14 | ||||
-rw-r--r-- | lang/de.l | 10 | ||||
-rw-r--r-- | lang/en_us.l | 14 | ||||
-rw-r--r-- | lang/es.l | 14 | ||||
-rw-r--r-- | lang/fr.l | 12 | ||||
-rw-r--r-- | lang/gr.l | 20 | ||||
-rw-r--r-- | lang/hun.l | 12 | ||||
-rw-r--r-- | lang/it.l | 14 | ||||
-rw-r--r-- | lang/nl.l | 14 | ||||
-rw-r--r-- | lang/pl.l | 14 | ||||
-rw-r--r-- | lang/pt.l | 12 | ||||
-rw-r--r-- | lang/ru.l | 12 | ||||
-rw-r--r-- | lang/tr.l | 14 | ||||
-rw-r--r-- | src/chanserv.c | 8 | ||||
-rw-r--r-- | src/core/cs_access.c | 76 | ||||
-rw-r--r-- | src/core/cs_xop.c | 6 |
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. @@ -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. @@ -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. @@ -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. @@ -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. @@ -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. @@ -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 @@ -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 @@ -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. @@ -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 @@ -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); |