JuLiet Admin
Mesaj Sayısı : 113 Kayıt tarihi : 03/05/10 Yaş : 37 Nerden : iStanbuL
| Konu: Operler için renkli host ve ident Cuma Mayıs 14, 2010 1:20 pm | |
| - Kod:
-
- #include "macros.h" #include "config.h" #include "struct.h" #include "common.h" #include "sys.h" #include "numeric.h" #include "msg.h" #include "channel.h" #include #include #include #include #include #ifdef _WIN32 #include #endif #include #include "h.h" #include "proto.h" #ifdef STRIPBADWORDS #include "badwords.h" #endif #ifdef _WIN32 #include "version.h" #endif #define MSG_CHGHOST "CHGHOST" #define TOK_CHGHOST "AL" DLLFUNC int m_chghost(aClient *cptr, aClient *sptr, int parc, char *parv[]); ModuleHeader MOD_HEADER(m_chghost) = { "chghost", /* Name of module */ "$Id: m_chghost.c,v 1.1.6.9 2006/06/16 18:29:16 syzop Exp $", /* Version */ "/chghost", /* Short description of module */ "3.2-b8-1", }; DLLFUNC int MOD_INIT(m_chghost)(ModuleInfo *modinfo) { /* * We call our add_Command crap here */ add_Command(MSG_CHGHOST, TOK_CHGHOST, m_chghost, MAXPARA); MARK_AS_OFFICIAL_MODULE(modinfo); return MOD_SUCCESS; } DLLFUNC int MOD_LOAD(m_chghost)(int module_load) { return MOD_SUCCESS;
} DLLFUNC int MOD_UNLOAD(m_chghost)(int module_unload) { if (del_Command(MSG_CHGHOST, TOK_CHGHOST, m_chghost) < 0) { sendto_realops("Failed to delete commands when unloading %s", MOD_HEADER(m_chghost).name); } return MOD_SUCCESS;
}
DLLFUNC int m_chghost(aClient *cptr, aClient *sptr, int parc, char *parv[]) { aClient *acptr; if (MyClient(sptr) && !IsAnOper(sptr)) { sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); return 0; } #ifdef DISABLE_USERMOD if (MyClient(sptr)) { sendto_one(sptr, err_str(ERR_DISABLED), me.name, sptr->name, "CHGHOST", "This command is disabled on this server"); return 0; } #endif
if ((acptr = find_person(parv[1], NULL))) { DYN_LOCAL(char, did_parts, acptr->user->joined); if (!strcmp(GetHost(acptr), parv[2])) { sendnotice(sptr, "*** /ChgHost Error: requested host is same as current host."); DYN_FREE(did_parts); return 0; } switch (UHOST_ALLOWED) { case UHALLOW_NEVER: if (MyClient(sptr)) { sendto_one(sptr, err_str(ERR_DISABLED), me.name, sptr->name, "CHGHOST", "This command is disabled on this server"); DYN_FREE(did_parts); return 0; } break; case UHALLOW_ALWAYS: break; case UHALLOW_NOCHANS: if (IsPerson(acptr) && MyClient(sptr) && acptr->user->joined) { sendnotice(sptr, "*** /ChgHost can not be used while %s is on a channel", acptr->name); DYN_FREE(did_parts); return 0; } break; case UHALLOW_REJOIN: rejoin_doparts(acptr, did_parts); /* join sent later when the host has been changed */ break; }
if (!IsULine(sptr)) { sendto_snomask(SNO_EYES, "%s changed the virtual hostname of %s (%s@%s) to be %s", sptr->name, acptr->name, acptr->user->username, acptr->user->realhost, parv[2]); /* Logging added by XeRXeS */ ircd_log(LOG_CHGCMDS, "CHGHOST: %s changed the virtual hostname of %s (%s@%s) to be %s", sptr->name, acptr->name, acptr->user->username, acptr->user->realhost, parv[2]); }
acptr->umodes |= UMODE_HIDE; acptr->umodes |= UMODE_SETHOST; sendto_serv_butone_token(cptr, sptr->name, MSG_CHGHOST, TOK_CHGHOST, "%s %s", acptr->name, parv[2]); if (acptr->user->virthost) { MyFree(acptr->user->virthost); acptr->user->virthost = 0; } acptr->user->virthost = strdup(parv[2]); if (UHOST_ALLOWED == UHALLOW_REJOIN) rejoin_dojoinandmode(acptr, did_parts); DYN_FREE(did_parts); return 0; } else { sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, sptr->name, parv[1]); return 0; } return 0; } | |
|