20 Mart 2007, 14:36 | #1 | |
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0) | Bot Systems Forumda bir kaç kişinin sorduğunu hatırlar gibiyim Soru : "Serverimde eggdrop botlarımın IRC Operator olarak değilde tanıtılmış Bot Systemi Olarak Göstermek istiyorum. Öncelikle ssh den login olup /ircops modul unu [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] linkindeki gibi kurup aktif hale getiriyoruz. sonrasında m_ircops.c klasöürüne ftp den aşşağıdaki codeleri ekliyoruz. #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 #define RPL_IRCOPS 337 #define RPL_ENDOFIRCOPS 338 #define MSG_IRCOPS "IRCOPS" #define TOK_IRCOPS "IO" #define MyMod ModIrcops->handle #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 Command *AddCommand(char *msg, char *token, int (*func)()); DLLFUNC int m_ircops(aClient *cptr, aClient *sptr, int parc, char *parv[]); ModuleInfo *ModIrcops; Command *CmdIrcops; #ifndef DYNAMIC_LINKING ModuleHeader m_ircops_Header #else #define m_ircops_Header Mod_Header ModuleHeader Mod_Header #endif = { "ircops", "$Id: m_ircops.c,v 2.3 2003/12/01 11:46:08 Salazar Exp $", "command /ircops", "3.2-b8-1", NULL }; /* The purpose of these ifdefs, are that we can "static" link the ircd if we * want to */ /* This is called on module init, before Server Ready */ #ifdef DYNAMIC_LINKING DLLFUNC int Mod_Init(ModuleInfo *modinfo) #else int m_ircops_Init(ModuleInfo *modinfo) #endif { ModIrcops = modinfo; CmdIrcops = AddCommand(MSG_IRCOPS, TOK_IRCOPS, m_ircops); if (!CmdIrcops) return MOD_FAILED; return MOD_SUCCESS; } /* Is first run when server is 100% ready */ #ifdef DYNAMIC_LINKING DLLFUNC int Mod_Load(int module_load) #else int m_ircops_Load(int module_load) #endif { return MOD_SUCCESS; } /* Called when module is unloaded */ #ifdef DYNAMIC_LINKING DLLFUNC int Mod_Unload(int module_unload) #else int m_ircops_Unload(int module_unload) #endif { DelCommand(CmdIrcops); return MOD_SUCCESS; } typedef struct { unsigned long *umode; char *text; } oflag; static oflag otypes[] = { { &UMODE_NETADMIN, "Network Administrator" }, { &UMODE_ADMIN, "Services Administrator" }, { &UMODE_SADMIN, "Server Administrator" }, { &UMODE_COADMIN, "Technical Administrator" }, { &UMODE_OPER, "IRC Operator" }, { &UMODE_LOCOP, "Prizma Bot Systems" }, { NULL, NULL } }; static char *find_otype(unsigned long umodes) { unsigned int i; for (i = 0; otypes[i].umode; i++) if (*otypes[i].umode & umodes) return otypes[i].text; return "an unknown operator"; } static Command *AddCommand(char *msg, char *token, int (*func)()) { Command *cmd; if (CommandExists(msg)) { config_error("Command %s already exists", msg); return NULL; } if (CommandExists(token)) { config_error("Token %s already exists", token); return NULL; } cmd = CommandAdd(MyMod, msg, token, func, MAXPARA, 0); #ifndef _WIN32 if (ModuleGetError(MyMod) != MODERR_NOERROR || !cmd) #else if (!cmd) #endif { #ifndef _WIN32 config_error("Error adding command %s: %s", msg, ModuleGetErrorStr(MyMod)); #else config_error("Error adding command %s", msg); #endif return NULL; /* just to be sure */ } return cmd; } 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; sendto_one(sptr, ":%s 339 %s :+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+", me.name, sptr->name); sendto_one(sptr, ":%s 339 %s : \2Sunucuda Online olan Görevli Listesi\2 ", me.name, sptr->name); sendto_one(sptr, ":%s 339 %s : ", me.name, sptr->name); sendto_one(sptr, ":%s 339 %s :+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+", me.name, sptr->name); 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 : \2Nick\2 : %-13s \2Görev\2 : %-20s " "%s", me.name, RPL_IRCOPS, sptr->name, acptr->name, find_otype(acptr->umodes), (IsAway(acptr) ? "- Meşgul" : IsHelpOp(acptr) ? "" : "")); if (IsAway(acptr)) aways++; else if (IsSkoAdmin(acptr)) admins++; else opers++; } globs = opers + admins + aways; sprintf(buf, "Toplam: %d Operatör%s Bağlı - %d Yönetici%s , %d IRC Operatör%s ve %d Meşgul", globs, (globs) > 1 ? "" : "", admins, admins > 1 ? "" : "", opers, opers > 1 ? "" : "", aways); sendto_one(sptr, ":%s 339 %s :+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+", me.name, sptr->name); sendto_one(sptr, ":%s %d %s :%s", me.name, RPL_IRCOPS, sptr->name, buf); sendto_one(sptr, ":%s %d %s :Yönetici listesi sonu", me.name, RPL_ENDOFIRCOPS, sptr->name); return 0; } Kırmızı Yazı ile Yazılan Prizma Yerine Kendi Serverinizin ismini yazın ve m_ircops.c yi aktif hale getirin. egg droplarınıza eklediğiniz oper flaglarini silip sadec +o eklediğiniz takdirde serverde ircops kotu sonucu alttaki gibi gözükecektir. +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+ Sunucuda Online olan Görevli Listesi +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+ Nick : coder Görev : Services Administrator Nick : ShadoW Görev : Services Administrator Nick : ON-AIR Görev : Prizma Bot Systems Nick : Arama Görev : Prizma Bot Systems Nick : SentineL Görev : Prizma Bot Systems Nick : Game Görev : Prizma Bot Systems +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+ Toplam: 6 Operatör Bağlı - 2 Yönetici , 4 IRC Operatör ve 0 Meşgul Yönetici listesi sonu. bu sonuşta çıkan SentineL , ON-AIR ,Game ve Arama eggdrop tur. Bu işlemi gerçekleştirdikten Sonra m_whois.c Dosyasınıda aşşağıdaki gibi değiştirin. /* * Unreal Internet Relay Chat Daemon, src/modules/m_whois.c * (C) 2000-2001 Carsten V. Munk and the UnrealIRCd Team * Moved to modules by Fish (Justin Hammond) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #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" #include "proto.h" #ifdef STRIPBADWORDS #include "badwords.h" #endif #ifdef _WIN32 #include "version.h" #endif static char buf[BUFSIZE]; DLLFUNC int m_whois(aClient *cptr, aClient *sptr, int parc, char *parv[]); /* Place includes here */ #define MSG_WHOIS "WHOIS" /* WHOI */ #define TOK_WHOIS "#" /* 35 */ ModuleHeader MOD_HEADER(m_whois) = { "whois", /* Name of module */ "$Id: m_whois.c,v 1.1.6.6 2005/03/13 21:03:21 syzop Exp $", /* Version */ "command /whois", /* Short description of module */ "3.2-b8-1", NULL }; /* This is called on module init, before Server Ready */ DLLFUNC int MOD_INIT(m_whois)(ModuleInfo *modinfo) { /* * We call our add_Command crap here */ add_Command(MSG_WHOIS, TOK_WHOIS, m_whois, MAXPARA); MARK_AS_OFFICIAL_MODULE(modinfo); return MOD_SUCCESS; } /* Is first run when server is 100% ready */ DLLFUNC int MOD_LOAD(m_whois)(int module_load) { return MOD_SUCCESS; } /* Called when module is unloaded */ DLLFUNC int MOD_UNLOAD(m_whois)(int module_unload) { if (del_Command(MSG_WHOIS, TOK_WHOIS, m_whois) < 0) { sendto_realops("Failed to delete commands when unloading %s", MOD_HEADER(m_whois).name); } return MOD_SUCCESS; } /* ** m_whois ** parv[0] = sender prefix ** parv[1] = nickname masklist */ DLLFUNC int m_whois(aClient *cptr, aClient *sptr, int parc, char *parv[]) { Membership *lp; anUser *user; aClient *acptr, *a2cptr; aChannel *chptr; char *nick, *tmp, *name; char *p = NULL; int found, len, mlen; if (IsServer(sptr)) return 0; if (parc < 2) { sendto_one(sptr, err_str(ERR_NONICKNAMEGIVEN), me.name, parv[0]); return 0; } if (parc > 2) { if (hunt_server_token(cptr, sptr, MSG_WHOIS, TOK_WHOIS, "%s :%s", 1, parc, parv) != HUNTED_ISME) return 0; parv[1] = parv[2]; } for (tmp = parv[1]; (nick = strtoken(&p, tmp, ",")); tmp = NULL) { unsigned char invis, showchannel, member, wilds, hideoper; /* <- these are all boolean-alike */ found = 0; /* We do not support "WHOIS *" */ wilds = (index(nick, '?') || index(nick, '*')); if (wilds) continue; if ((acptr = find_client(nick, NULL))) { if (IsServer(acptr)) continue; /* * I'm always last :-) and acptr->next == NULL!! */ if (IsMe(acptr)) break; /* * 'Rules' established for sending a WHOIS reply: * - only send replies about common or public channels * the target user(s) are on; */ if (!IsPerson(acptr)) continue; user = acptr->user; name = (!*acptr->name) ? "?" : acptr->name; invis = acptr != sptr && IsInvisible(acptr); member = (user->channel) ? 1 : 0; a2cptr = find_server_quick(user->server); hideoper = 0; if (IsHideOper(acptr) && (acptr != sptr) && !IsAnOper(sptr)) hideoper = 1; if (IsWhois(acptr) && (sptr != acptr)) { sendto_one(acptr, ":%s %s %s :*** %s (%s@%s) did a /whois on you.", me.name, IsWebTV(acptr) ? "PRIVMSG" : "NOTICE", acptr->name, sptr->name, sptr->user->username, sptr->user->realhost); } sendto_one(sptr, rpl_str(RPL_WHOISUSER), me.name, parv[0], name, user->username, IsHidden(acptr) ? user->virthost : user->realhost, acptr->info); if (IsOper(sptr)) { char sno[512]; strcpy(sno, get_sno_str(acptr)); /* send the target user's modes */ sendto_one(sptr, rpl_str(RPL_WHOISMODES), me.name, parv[0], name, get_mode_str(acptr), sno[1] == 0 ? "" : sno); } if ((acptr == sptr) || IsAnOper(sptr)) { sendto_one(sptr, rpl_str(RPL_WHOISHOST), me.name, parv[0], acptr->name, user->realhost, user->ip_str ? user->ip_str : ""); } if (IsARegNick(acptr)) sendto_one(sptr, rpl_str(RPL_WHOISREGNICK), me.name, parv[0], name); found = 1; mlen = strlen(me.name) + strlen(parv[0]) + 10 + strlen(name); for (len = 0, *buf = '\0', lp = user->channel; lp; lp = lp->next) { chptr = lp->chptr; showchannel = 0; if (ShowChannel(sptr, chptr)) showchannel = 1; #ifndef SHOW_SECRET if (IsAnOper(sptr) && !SecretChannel(chptr)) #else if (IsAnOper(sptr)) #endif showchannel = 1; if ((acptr->umodes & UMODE_HIDEWHOIS) && !IsMember(sptr, chptr) && !IsAnOper(sptr)) showchannel = 0; if (IsServices(acptr) && !IsNetAdmin(sptr) && !IsSAdmin(sptr)) showchannel = 0; if (acptr == sptr) showchannel = 1; /* Hey, if you are editting here... don't forget to change the webtv w_whois ;p. */ if (showchannel) { long access; if (len + strlen(chptr->chname) > (size_t)BUFSIZE - 4 - mlen) { sendto_one(sptr, ":%s %d %s %s :%s", me.name, RPL_WHOISCHANNELS, parv[0], name, buf); *buf = '\0'; len = 0; } #ifdef SHOW_SECRET if (IsAnOper(sptr) #else if (IsNetAdmin(sptr) #endif && SecretChannel(chptr) && !IsMember(sptr, chptr)) *(buf + len++) = '?'; if (acptr->umodes & UMODE_HIDEWHOIS && !IsMember(sptr, chptr) && IsAnOper(sptr)) *(buf + len++) = '!'; access = get_access(acptr, chptr); #ifdef PREFIX_AQ if (access & CHFL_CHANOWNER) *(buf + len++) = '~'; else if (access & CHFL_CHANPROT) *(buf + len++) = '&'; else #endif if (access & CHFL_CHANOP) *(buf + len++) = '@'; else if (access & CHFL_HALFOP) *(buf + len++) = '%'; else if (access & CHFL_VOICE) *(buf + len++) = '+'; if (len) *(buf + len) = '\0'; (void)strcpy(buf + len, chptr->chname); len += strlen(chptr->chname); (void)strcat(buf + len, " "); len++; } } if (buf[0] != '\0') sendto_one(sptr, rpl_str(RPL_WHOISCHANNELS), me.name, parv[0], name, buf); if (!(IsULine(acptr) && !IsOper(sptr) && HIDE_ULINES)) sendto_one(sptr, rpl_str(RPL_WHOISSERVER), me.name, parv[0], name, user->server, a2cptr ? a2cptr->info : "*Not On This Net*"); if (user->away) sendto_one(sptr, rpl_str(RPL_AWAY), me.name, parv[0], name, user->away); /* makesure they aren't +H (we'll also check before we display a helpop or IRCD Coder msg) -- codemastr */ if ((IsAnOper(acptr) || IsServices(acptr)) && !hideoper) { buf[0] = '\0'; if (IsNetAdmin(acptr)) strlcat(buf, "an IRC Operator - Network Administrator", sizeof buf); else if (IsSAdmin(acptr)) strlcat(buf, "an IRC Operator - Services Administrator", sizeof buf); else if (IsAdmin(acptr) && !IsCoAdmin(acptr)) strlcat(buf, "an IRC Operator - Server Administrator", sizeof buf); else if (IsCoAdmin(acptr)) strlcat(buf, "an IRC Operator - Technical Administrator", sizeof buf); else if (IsServices(acptr)) strlcat(buf, "a Network Service", sizeof buf); else if (IsOper(acptr)) strlcat(buf, "an IRC Operator", sizeof buf); else strlcat(buf, "a Prizma Bot Systems", sizeof buf); if (buf[0]) sendto_one(sptr, rpl_str(RPL_WHOISOPERATOR), me.name, parv[0], name, buf); } if (IsHelpOp(acptr) && !hideoper && !user->away) sendto_one(sptr, rpl_str(RPL_WHOISHELPOP), me.name, parv[0], name); if (acptr->umodes & UMODE_BOT) sendto_one(sptr, rpl_str(RPL_WHOISBOT), me.name, parv[0], name, ircnetwork); if (acptr->umodes & UMODE_SECURE) sendto_one(sptr, rpl_str(RPL_WHOISSECURE), me.name, parv[0], name, "is using a Secure Connection"); if (!BadPtr(user->swhois) && !hideoper) sendto_one(sptr, ":%s %d %s %s :%s", me.name, RPL_WHOISSPECIAL, parv[0], name, acptr->user->swhois); /* * Fix /whois to not show idle times of * global opers to anyone except another * global oper or services. * -CodeM/Barubary */ if (MyConnect(acptr)) sendto_one(sptr, rpl_str(RPL_WHOISIDLE), me.name, parv[0], name, TStime() - acptr->last, acptr->firsttime); } if (!found) sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], nick); if (p) p[-1] = ','; } sendto_one(sptr, rpl_str(RPL_ENDOFWHOIS), me.name, parv[0], parv[1]); return 0; } kırmızı yazıyla yazılı olan Prizma nın yerine Server adınızı yazın böylelikle botlarınızın whoisi ; irc.prizma.gen.tr nin koruma botu SentineL inki gibi olacaktır. SentineL is Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. * Koruma Bot SentineL is using modes +iwghrsOxWt +kcfvGqso SentineL is connecting from Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. 80.93.217.27 SentineL is a registered nick SentineL on @#zurna @#ankara @#istanbul @#sanal @#prizma @#ayna @#Sohbet @#muhabbet @#klavye @#izmir @#ayva @#aşk SentineL using irc.PrizmA.Gen.Tr PrizmA.Gen.Tr & PrizmA.Gen.Tr SentineL is a Prizma Bot Systems SentineL is available for help. SentineL has been idle 1hr 40mins 2secs, signed on Tue Mar 20 12:53:34 SentineL End of /WHOIS list. ************************************************** ****** /ircops komutunda Serverdeki oper olan botların nickleri gözükmesin diye bir soru hatırlar gibiyim ama tam emin olmadığımdan onu açıklamadım merak eden varsa onuda yazabilirim.Umarım işinize yarar. | |
|
Etiketler |
systems, bot |
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
| |