PDA

Orijinalini görmek için tıklayınız : IRCServices - (NS ALIST NICK)


Entrance
27 Ağustos 2016, 21:12
Merhaba arkadaşlar,

Bu eklentiyi servislerinize entegre ettiğinizde, /NS ALIST NICK komutunu kullandığınızda o kişinin hangi kanallarda accessi olduğunu listeleyecektir.

Kendi accessinizi de, /NS ALIST komutuyla listeleyebilirsiniz.

Ayrıca kodların kime ait olduğunu bilmiyorum. Ama büyük ihtimal ile Sky-Dancer , rumuzlu arkadaşa aittir. Kodlar arşivimde duruyordu paylaşmak istedim..

Klasör: ircservices-5.0.x
Dosya: modules/nickserv/main.c

BULUN,

#include "nickserv.h"
#include "ns-local.h"

ALTINA,

#include "modules/chanserv/chanserv.h"
char last_alist_nick[NICKMAX];
#define XOP_LISTNAME(level) \
((level)==ACCLEV_SOP ? " (SOP)" : (level)==ACCLEV_AOP ? " (AOP)" : \
(level)==ACCLEV_HOP ? " (HOP)" : (level)==ACCLEV_VOP ? " (VOP)" : " ")
EKLEYİN,

-

BULUN,
static void do_help(User *u);
ÜSTÜNE,
static void do_alist(User *u);
EKLEYİN,

-

BULUN,
{ "HELP", do_help, NULL, -1, -1,-1 },
ALTINA,
{ "ALIST", do_alist, NULL, -1, -1, -1 },
EKLEYİN,

-

BULUN,
/* These are static, so the pointers don't need to be cleared */
if (cmd_GETPASS)
cmd_GETPASS->name = "GETPASS";
if (cmd_DROPEMAIL_CONFIRM)
cmd_DROPEMAIL_CONFIRM->name = "DROPEMAIL-CONFIRM";
if (cmd_DROPEMAIL)
cmd_DROPEMAIL->name = "DROPEMAIL";
if (cmd_REGISTER)
cmd_REGISTER->name = "REGISTER";
unregister_commands(module, cmds);
del_commandlist(module);

return 1;
}
ALTINA,
static void do_alist(User *u) {
ChannelInfo *ci;
NickInfo *ni = NULL;
NickGroupInfo *ngi;
int32 id;
int i;
int liste=0;

char *nick = strtok(NULL, " ");

char *snick;

if (is_oper(u) && nick) {
snick = nick;
}
else {
snick = u->nick;
}

if (!(ni = get_nickinfo(snick))) {
notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, snick);
return;
} else if (ni->status & NS_VERBOTEN) {
notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, snick);
return;
} else if (!user_identified(u)) {
notice_lang(s_NickServ, u, NICK_IDENTIFY_REQUIRED, s_NickServ);
return;
} else if (!(ngi = get_ngi(ni))) {
notice_lang(s_NickServ, u, INTERNAL_ERROR);
return;
}

if (ni != u->ni)
send_cmd(s_NickServ, "NOTICE %s :%s Nickine Ait Erisim Listesi:", u->nick, nick);
else
send_cmd(s_NickServ, "NOTICE %s :Nickinize Ait Erisim Listesi:", u->nick);

send_cmd(s_NickServ, "NOTICE %s :Kanal - Access Seviyesi", u->nick);
strscpy(last_alist_nick, u->nick, NICKMAX);
for (ci = first_channelinfo(); ci; ci = next_channelinfo()) {

if (!ci || !valid_ngi(u) || (ci->flags & CI_VERBOTEN) || ci->suspendinfo)
continue;

if (ngi->id == ci->founder) {
send_cmd(s_NickServ, "NOTICE %s :%d. %s - \2founder\2", u->nick, liste+1, ci->name);
liste++;
continue;
}

id=ngi->id;

ARRAY_FOREACH (i, ci->access) {
if (ci && (ci->access[i].nickgroup == id)) {
send_cmd(s_NickServ, "NOTICE %s :%d. %s - Level :\2 %d%s\2", u->nick, liste+1 , ci->name, ci->access[i].level, XOP_LISTNAME(ci->access[i].level));
liste++;
continue;
}
}
}

if (liste==0) {
send_cmd(s_NickServ, "NOTICE %s :Kayıt bulunamadı.", u->nick);
}
else {
send_cmd(s_NickServ, "NOTICE %s :(%d) adet kayıt bulundu.", u->nick, liste);
}
return;
}
EKLEYİN,

-

Klasör: ircservices-5.0.x
Dosya: modules/nickserv/nickserv.h

BULUN,
char nick[NICKMAX];
ALTINA,
char last_alist_nick[NICKMAX];
EKLEYİN,

-

IRCServices'in ana dizininde make ve make install komutlarını uygulayıp, mIRC veya SSH üzerinden de servislerinizi yeniden başlatın..

İyi forumlar. ^^