summaryrefslogtreecommitdiff
path: root/contrib/m_ctrace.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/m_ctrace.c')
-rw-r--r--contrib/m_ctrace.c197
1 files changed, 0 insertions, 197 deletions
diff --git a/contrib/m_ctrace.c b/contrib/m_ctrace.c
deleted file mode 100644
index 7b4d658..0000000
--- a/contrib/m_ctrace.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
- * m_ctrace.c: Traces a given class
- *
- * Copyright (C) 2002 by the past and present ircd coders, and others.
- *
- * 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 2 of the License, 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- * USA
- *
- * $Id$
- */
-
-#include "stdinc.h"
-#include "list.h"
-#include "client.h"
-#include "hash.h"
-#include "irc_string.h"
-#include "ircd.h"
-#include "numeric.h"
-#include "s_bsd.h"
-#include "conf.h"
-#include "s_serv.h"
-#include "send.h"
-#include "parse.h"
-#include "modules.h"
-
-static void do_ctrace(struct Client *, int, char *[]);
-static void report_this_status(struct Client *, struct Client *);
-
-
-/*
-** mo_ctrace
-** parv[0] = sender prefix
-** parv[1] = classname
-*/
-static void
-mo_ctrace(struct Client *client_p, struct Client *source_p,
- int parc, char *parv[])
-{
- if (EmptyString(parv[1]))
- {
- sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS),
- me.name, source_p->name, "CTRACE");
- return;
- }
-
- do_ctrace(source_p, parc, parv);
-}
-
-/*
- * do_ctrace
- */
-static void
-do_ctrace(struct Client *source_p, int parc, char *parv[])
-{
- char *class_looking_for = parv[1];
- const char *class_name = NULL;
- dlink_node *ptr;
-
- sendto_realops_flags(UMODE_SPY, L_ALL, SEND_NOTICE,
- "CTRACE requested by %s (%s@%s) [%s]",
- source_p->name, source_p->username,
- source_p->host, source_p->servptr->name);
-
- /* report all direct connections */
- DLINK_FOREACH(ptr, local_client_list.head)
- {
- struct Client *target_p = ptr->data;
-
- class_name = get_client_class(&target_p->localClient->confs);
- if ((class_name != NULL) && !match(class_looking_for, class_name))
- report_this_status(source_p, target_p);
- }
-
- sendto_one(source_p, form_str(RPL_ENDOFTRACE), me.name,
- source_p->name, class_looking_for);
-}
-
-/*
- * report_this_status
- *
- * inputs - pointer to client to report to
- * - pointer to client to report about
- * output - counter of number of hits
- * side effects - NONE
- */
-static void
-report_this_status(struct Client *source_p, struct Client *target_p)
-{
- const char *name = NULL;
- const char *class_name = NULL;
-
- name = get_client_name(target_p, HIDE_IP);
- class_name = get_client_class(&target_p->localClient->confs);
-
- switch(target_p->status)
- {
- case STAT_CLIENT:
-
- if ((HasUMode(source_p, UMODE_OPER) &&
- (MyClient(source_p) || !HasUMode(target_p, UMODE_INVISIBLE)))
- || HasUMode(target_p, UMODE_OPER))
- {
- if (HasUMode(target_p, UMODE_ADMIN) && !ConfigFileEntry.hide_spoof_ips)
- sendto_one(source_p, form_str(RPL_TRACEOPERATOR),
- me.name, source_p->name, class_name, name,
- HasUMode(source_p, UMODE_ADMIN) ? target_p->sockhost : "255.255.255.255",
- CurrentTime - target_p->localClient->lasttime,
- CurrentTime - target_p->localClient->last_privmsg);
- else if (HasUMode(target_p, UMODE_OPER))
- {
- if (ConfigFileEntry.hide_spoof_ips)
- sendto_one(source_p, form_str(RPL_TRACEOPERATOR),
- me.name, source_p->name, class_name, name,
- IsIPSpoof(target_p) ? "255.255.255.255" : target_p->sockhost,
- CurrentTime - target_p->localClient->lasttime,
- CurrentTime - target_p->localClient->last_privmsg);
- else
- sendto_one(source_p, form_str(RPL_TRACEOPERATOR),
- me.name, source_p->name, class_name, name,
- (IsIPSpoof(target_p) ? "255.255.255.255" : target_p->sockhost),
- CurrentTime - target_p->localClient->lasttime,
- CurrentTime - target_p->localClient->last_privmsg);
- }
- else
- {
- if (ConfigFileEntry.hide_spoof_ips)
- sendto_one(source_p, form_str(RPL_TRACEUSER),
- me.name, source_p->name, class_name, name,
- IsIPSpoof(target_p) ? "255.255.255.255" : target_p->sockhost,
- CurrentTime - target_p->localClient->lasttime,
- CurrentTime - target_p->localClient->last_privmsg);
- else
- sendto_one(source_p, form_str(RPL_TRACEUSER),
- me.name, source_p->name, class_name, name,
- (IsIPSpoof(target_p) ? "255.255.255.255" : target_p->sockhost),
- CurrentTime - target_p->localClient->lasttime,
- CurrentTime - target_p->localClient->last_privmsg);
- }
- }
- break;
- case STAT_SERVER:
- if (!HasUMode(source_p, UMODE_ADMIN))
- name = get_client_name(target_p, MASK_IP);
-
- sendto_one(source_p, form_str(RPL_TRACESERVER),
- me.name, source_p->name, class_name, 0,
- 0, name, *(target_p->serv->by) ?
- target_p->serv->by : "*", "*",
- me.name, CurrentTime - target_p->localClient->lasttime);
- break;
-
- default: /* ...we actually shouldn't come here... --msa */
- sendto_one(source_p, form_str(RPL_TRACENEWTYPE), me.name,
- source_p->name, name);
- break;
- }
-}
-
-static struct Message ctrace_msgtab = {
- "CTRACE", 0, 0, 2, MAXPARA, MFLG_SLOW, 0,
- {m_unregistered, m_not_oper, m_ignore, m_ignore, mo_ctrace, m_ignore}
-};
-
-static void
-module_init(void)
-{
- mod_add_cmd(&ctrace_msgtab);
-}
-
-static void
-module_exit(void)
-{
- mod_del_cmd(&ctrace_msgtab);
-}
-
-struct module module_entry = {
- .node = { NULL, NULL, NULL },
- .name = NULL,
- .version = "$Revision$",
- .handle = NULL,
- .modinit = module_init,
- .modexit = module_exit,
- .flags = 0
-};