/************************************************************************
* IRC - Internet Relay Chat, modules/m_services.c
*
* Copyright (C) 2000-2003 TR-IRCD Development
*
* Copyright (C) 1990 Jarkko Oikarinen and
* University of Oulu, Co Center
*
* See file AUTHORS in IRC package for additional names of
* the programmers.
*
* 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, 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.
*/
/*
* $Id: m_services.c,v 1.3 2003/06/14 13:55:51 tr-ircd Exp $
*/
#include "struct.h"
#include "common.h"
#include "sys.h"
#include "numeric.h"
#include "msg.h"
#include "channel.h"
#include "h.h"
#include "s_conf.h"
static struct Message cs1_msgtab[] = {
{MSG_CHANSERV, 0, 1, M_SLOW | M_IDLE_RESET, 0L,
m_unregistered, m_chanserv, m_chanserv, m_ignore, m_ignore}
};
static struct Message cs2_msgtab[] = {
{MSG_CS, 0, 1, M_SLOW | M_IDLE_RESET, 0L,
m_unregistered, m_chanserv, m_chanserv, m_ignore, m_ignore}
};
static struct Message ns1_msgtab[] = {
{MSG_NICKSERV, 0, 1, M_SLOW | M_IDLE_RESET, 0L,
m_unregistered, m_nickserv, m_nickserv, m_ignore, m_ignore}
};
static struct Message ns2_msgtab[] = {
{MSG_NS, 0, 1, M_SLOW | M_IDLE_RESET, 0L,
m_unregistered, m_nickserv, m_nickserv, m_ignore, m_ignore}
};
static struct Message ms1_msgtab[] = {
{MSG_MEMOSERV, 0, 1, M_SLOW | M_IDLE_RESET, 0L,
m_unregistered, m_memoserv, m_memoserv, m_ignore, m_ignore}
};
static struct Message ms2_msgtab[] = {
{MSG_MS, 0, 1, M_SLOW | M_IDLE_RESET, 0L,
m_unregistered, m_memoserv, m_memoserv, m_ignore, m_ignore}
};
static struct Message os1_msgtab[] = {
{MSG_OPERSERV, 0, 1, M_SLOW | M_IDLE_RESET, 0L,
m_unregistered, m_operserv, m_operserv, m_ignore, m_ignore}
};
static struct Message os2_msgtab[] = {
{MSG_OS, 0, 1, M_SLOW | M_IDLE_RESET, 0L,
m_unregistered, m_operserv, m_operserv, m_ignore, m_ignore}
};
static struct Message ss1_msgtab[] = {
{MSG_STATSERV, 0, 1, M_SLOW | M_IDLE_RESET, 0L,
m_unregistered, m_statserv, m_statserv, m_ignore, m_ignore}
};
static struct Message ss2_msgtab[] = {
{MSG_SS, 0, 1, M_SLOW | M_IDLE_RESET, 0L,
m_unregistered, m_statserv, m_statserv, m_ignore, m_ignore}
};
static struct Message hs1_msgtab[] = {
{MSG_HELPSERV, 0, 1, M_SLOW | M_IDLE_RESET, 0L,
m_unregistered, m_helpserv, m_helpserv, m_ignore, m_ignore}
};
static struct Message hs2_msgtab[] = {
{MSG_HS, 0, 1, M_SLOW | M_IDLE_RESET, 0L,
m_unregistered, m_helpserv, m_helpserv, m_ignore, m_ignore}
};
static struct Message id_msgtab[] = {
{MSG_IDENTIFY, 0, 1, M_SLOW | M_IDLE_RESET, 0L,
m_unregistered, m_identify, m_identify, m_ignore, m_ignore}
};
static struct Message s_msgtab[] = {
{MSG_SERVICES, 0, 2, M_SLOW | M_IDLE_RESET, 0L,
m_unregistered, m_services, m_services, m_ignore, m_ignore}
};
#ifndef STATIC_MODULES
char *_version = "$Revision: 1.3 $";
void _modinit(void)
{
mod_add_cmd(cs1_msgtab);
mod_add_cmd(cs2_msgtab);
mod_add_cmd(ns1_msgtab);
mod_add_cmd(ns2_msgtab);
mod_add_cmd(ms1_msgtab);
mod_add_cmd(ms2_msgtab);
mod_add_cmd(os1_msgtab);
mod_add_cmd(os2_msgtab);
mod_add_cmd(ss1_msgtab);
mod_add_cmd(ss2_msgtab);
mod_add_cmd(hs1_msgtab);
mod_add_cmd(hs2_msgtab);
mod_add_cmd(id_msgtab);
mod_add_cmd(s_msgtab);
}
void _moddeinit(void)
{
mod_del_cmd(cs1_msgtab);
mod_del_cmd(cs2_msgtab);
mod_del_cmd(ns1_msgtab);
mod_del_cmd(ns2_msgtab);
mod_del_cmd(ms1_msgtab);
mod_del_cmd(ms2_msgtab);
mod_del_cmd(os1_msgtab);
mod_del_cmd(os2_msgtab);
mod_del_cmd(ss1_msgtab);
mod_del_cmd(ss2_msgtab);
mod_del_cmd(hs1_msgtab);
mod_del_cmd(hs2_msgtab);
mod_del_cmd(id_msgtab);
mod_del_cmd(s_msgtab);
}
#else
void m_services_init(void)
{
mod_add_cmd(cs1_msgtab);
mod_add_cmd(cs2_msgtab);
mod_add_cmd(ns1_msgtab);
mod_add_cmd(ns2_msgtab);
mod_add_cmd(ms1_msgtab);
mod_add_cmd(ms2_msgtab);
mod_add_cmd(os1_msgtab);
mod_add_cmd(os2_msgtab);
mod_add_cmd(ss1_msgtab);
mod_add_cmd(ss2_msgtab);
mod_add_cmd(hs1_msgtab);
mod_add_cmd(hs2_msgtab);
mod_add_cmd(id_msgtab);
mod_add_cmd(s_msgtab);
}
#endif
int m_chanserv(aClient *cptr, aClient *sptr, int parc, char *parv[])
{
return m_pseudo(cptr, sptr, ServicesConf.chanserv, ServicesConf.services_name, parc, parv);
}
int m_nickserv(aClient *cptr, aClient *sptr, int parc, char *parv[])
{
return m_pseudo(cptr, sptr, ServicesConf.nickserv, ServicesConf.services_name, parc, parv);
}
int m_memoserv(aClient *cptr, aClient *sptr, int parc, char *parv[])
{
return m_pseudo(cptr, sptr, ServicesConf.memoserv, ServicesConf.services_name, parc, parv);
}
int m_operserv(aClient *cptr, aClient *sptr, int parc, char *parv[])
{
return m_pseudo(cptr, sptr, ServicesConf.operserv, ServicesConf.services_name, parc, parv);
}
int m_statserv(aClient *cptr, aClient *sptr, int parc, char *parv[])
{
return m_pseudo(cptr, sptr, ServicesConf.statserv, ServicesConf.services_name, parc, parv);
}
int m_helpserv(aClient *cptr, aClient *sptr, int parc, char *parv[])
{
return m_pseudo_help(cptr, sptr, ServicesConf.helpserv, ServicesConf.services_name, parc, parv);
}
/* m_services | m_identify -- see df465+taz */
int m_services(aClient *cptr, aClient *sptr, int parc, char *parv[]) {
if (parc < 2 || *parv[1] == '\0') {
send_me_numeric(sptr, ERR_NOTEXTTOSEND);
return -1;
}
if (irc_strncmp(parv[1], "help", 4) == 0) {
send_me_notice(sptr, ":For ChanServ help use: /chanserv help");
send_me_notice(sptr, ":For NickServ help use: /nickserv help");
send_me_notice(sptr, ":For MemoServ help use: /memoserv help");
return 0;
}
if (parc > 2) {
if (*parv[2] == '#')
return m_chanserv(cptr, sptr, parc, parv);
else
return m_nickserv(cptr, sptr, parc, parv);
}
return 0;
}
int m_identify(aClient *cptr, aClient *sptr, int parc, char *parv[]) {
aClient *acptr;
if (parc < 2 || *parv[1] == '\0') {
send_me_numeric(sptr, ERR_NOTEXTTOSEND);
return -1;
}
if (*parv[1]) {
if ((*parv[1] == '#') && ((char *) strchr(parv[1], ' '))) {
if ((acptr = find_person(ServicesConf.chanserv)))
sendto_one_person(acptr, sptr, TOK1_PRIVMSG, "%s@%s :IDENTIFY %s ",
ServicesConf.chanserv, ServicesConf.services_name, parv[1]);
else
send_me_numeric(sptr, ERR_SERVICESDOWN, ServicesConf.chanserv);
} else {
if ((acptr = find_person(ServicesConf.nickserv)))
sendto_one_person(acptr, sptr, TOK1_PRIVMSG, "%s@%s :IDENTIFY %s",
ServicesConf.nickserv, ServicesConf.services_name, parv[1]);
else
send_me_numeric(sptr, ERR_SERVICESDOWN, ServicesConf.nickserv);
}
}
return 0;
}
syntax highlighted by Code2HTML, v. 0.9.1