.

/*

* =================================================================

* Dosya: m_ircops.c

* İçerik: /ircops Operatör Görüntüleme Komutu

* Coder: KeMaNcI info@LiderChat.Net>

* =================================================================

*/

#include “config.h”

#include “struct.h”

#include “common.h”

#include “sys.h”

#include “numeric.h”

#include “msg.h”

#include “channel.h”

#include <time.h>

#include <sys/stat.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#ifdef _WIN32

#include <io.h>

#endif

#include <fcntl.h>

#include “h.h”

#ifdef STRIPBADWORDS

#include “badwords.h”

#endif

#ifdef _WIN32

#include “version.h”

#endif

typedef struct

{

long *umode;

char *text;

} oflag;

 

extern void sendto_one(aClient *to, char *pattern, …);

/*

* Ultimate uses numerics 386 and 387 for RPL_IRCOPS and RPL_ENDOFIRCOPS,

* but these numerics are RPL_QLIST and RPL_ENDOFQLIST in UnrealIRCd

* (numeric conflict). I had to choose other numerics.

*/

#define RPL_IRCOPS 337

#define RPL_ENDOFIRCOPS 338

#define MSG_IRCOPS “IRCOPS”

#define TOK_IRCOPS NULL

#define IsAway(x) (x)->user->away

#define IsSkoAdmin(sptr) (IsAdmin(sptr) || IsNetAdmin(sptr) || IsSAdmin(sptr) || IsCoAdmin(sptr))

#define DelCommand(x) if (x) CommandDel(x); x = NULL

static int m_ircops(aClient *cptr, aClient *sptr, int parc, char *parv[]);

static Command *CmdIrcops;

static oflag otypes[7];

ModuleHeader MOD_HEADER(m_ircops)

= {

“ircops”,

“$Id: m_ircops.c,v $”,

“/ircops Modulu Edit By KeMaNcI LiderChat.Net”,

“3.2-b8-1″,

NULL

};

 

DLLFUNC int MOD_INIT(m_ircops)(ModuleInfo *modinfo)

{

otypes[0].umode = &UMODE_NETADMIN;

otypes[0].text = “4[Bir Network Admindir]“;

otypes[1].umode = &UMODE_SADMIN;

otypes[1].text = “4[Bir Servis Yetkilisidir]“;

otypes[2].umode = &UMODE_ADMIN;

otypes[2].text = “4[Bir Sunucu Yetkilisidir]“;

otypes[3].umode = &UMODE_COADMIN;

otypes[3].text = “4[Bir Yardımcı Yetkilidir]“;

otypes[4].umode = &UMODE_OPER;

otypes[4].text = “4[Bir Global Operatördür]“;

otypes[5].umode = &UMODE_LOCOP;

otypes[5].text = “2[Bir Local Operatördür]“;

otypes[6].umode = NULL;

otypes[6].text = “2Coder By KeMaNcI LiderChat.Net Coder Team 2009″;

if (CommandExists(MSG_IRCOPS))

{

config_error(“Command ” MSG_IRCOPS ” already exists”);

return MOD_FAILED;

}

CmdIrcops = CommandAdd(modinfo->handle, MSG_IRCOPS, TOK_IRCOPS,

m_ircops, MAXPARA, 0);

#ifndef STATIC_LINKING

if (ModuleGetError(modinfo->handle) != MODERR_NOERROR)

#else

if (!CmdIrcops)

#endif

{

#ifndef STATIC_LINKING

config_error(“Error adding command ” MSG_IRCOPS “: %s”,

ModuleGetErrorStr(modinfo->handle));

#else

config_error(“Error adding command ” MSG_IRCOPS);

#endif

return MOD_FAILED;

}

return MOD_SUCCESS;

}

DLLFUNC int MOD_LOAD(m_ircops)(int module_load)

{

return MOD_SUCCESS;

}

 

DLLFUNC int MOD_UNLOAD(m_ircops)(int module_unload)

{

DelCommand(CmdIrcops);

return MOD_SUCCESS;

}

 

static char *find_otype(long umodes)

{

unsigned int i;

for (i = 0; otypes[i].umode; i++)

if (*otypes[i].umode & umodes)

return otypes[i].text;

return “Bir Bilinmeyen Operatördür.”;

}

/*

* m_ircops

*

* parv[0]: sender prefix

*

* Originally comes from TR-IRCD, but I changed it in several places.

* In addition, I didn’t like to display network name. In addition,

* instead of realname, servername is shown. See the original

* header below.

*/

/************************************************************************

* IRC – Internet Relay Chat, modules/m_ircops.c

*

* Copyright (C) 2004-2005 Coder TurkIslem.Net Edits

*

* Bütün Operatörlerinizin Online Olduklarını /ircops

* Komutu İle Görüntülenmesini Saglayan Module

*

* –==–KuruLum–==–

* m_ircops.c Dosyasını Unreal3.2/src/modules klasörüne ftp ile

* kopyalayın. Daha sonra Unreal3.2 Klasöründe

* “make custommodule MODULEFILE=m_ircops.c” komutunu yazın.

* pico unrealircd.conf yasın.

* loadmodule “src/modules/m_ircops.so”; satırını ekleyin.

* Unreal3.2 klasöründe “./unreal rehash” yasın ve serverinizde

* /ircops yazın.

*

* Raistlin by TurkIslem.Net Coder Team <raistlin@zurna.com>

***********************************************************************

*/

 

static int m_ircops(aClient *cptr, aClient *sptr, int parc, char *parv[])

{

aClient *acptr;

char buf[BUFSIZE];

int opers = 0, admins = 0, globs = 0, aways = 0;

for (acptr = client; acptr; acptr = acptr->next)

{

/* List only real IRC Operators */

if (IsULine(acptr) || !IsPerson(acptr) || !IsAnOper(acptr))

continue;

/* Don’t list +H users */

if (!IsAnOper(sptr) && IsHideOper(acptr))

continue;

sendto_one(sptr, “:%s %d %s :7Nick : \2%s\2 12Yetki : ” “%s”,

me.name, RPL_IRCOPS, sptr->name,

acptr->name,

find_otype(acptr->umodes),

acptr->user->server,

(IsAway(acptr) ? ” 2[Mesgul]” : IsHelpOp(acptr) ? ” 2[Helpop]” : “”));

if (IsAway(acptr))

aways++;

else if (IsSkoAdmin(acptr))

admins++;

else

opers++;

}

globs = opers + admins + aways;

sprintf(buf,

“Total: \2%d\2 IRCOP%s OnLine – \2%d\2 Admin%s, \2%d\2 Oper%s and \2%d\2 MeÅŸgul”,

globs, (globs) > 1 ? “s” : “”, admins, admins > 1 ? “s” : “”,

opers, opers > 1 ? “s” : “”, aways);

sendto_one(sptr, “:%s %d %s :4———————————————”, me.name, RPL_IRCOPS, sptr->name, buf);

sendto_one(sptr, “:%s %d %s :2Yardım Alabilmek için /join #HeLp”, me.name, RPL_IRCOPS, sptr->name, buf);

sendto_one(sptr, “:%s %d %s :4———————————————”, me.name, RPL_IRCOPS, sptr->name, buf);

sendto_one(sptr, “:%s %d %s :/IRCOPS Komutu Sonu”, me.name, RPL_ENDOFIRCOPS, sptr->name);

return 0;

}

 

Comments Yorum Yok »