1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-28 09:56:38 +02:00
Files
unrealircd/src/modules/admin.c
T
Bram Matthys 4ac8015f84 Remove 'cptr' from all commands, hooks, etc. It only confuses people and
'sptr' is sufficient and in most cases the only one you should care about.
Should you need it, you can access sptr->direction in cases where you
need the old information (usually only for some sendto_* functions
and some protoctl checks), so 'cptr' was redundant too.

[!] This change likely introduces some bugs. This was many hours of work.
I only cut some corners in 4 functions, which will be fixed at a later
stage..... yes, more major changes to come.

On the plus side, I likely fixed some bugs in the process. Situations
where cptr vs sptr usage was incorrect. Eg using cptr->name (near server)
when sptr->name should be used (the actual source server), etc....
2019-10-02 14:25:40 +02:00

88 lines
2.0 KiB
C

/*
* IRC - Internet Relay Chat, src/modules/out.c
* (C) 2004 The UnrealIRCd Team
*
* 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 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 "unrealircd.h"
CMD_FUNC(cmd_admin);
#define MSG_ADMIN "ADMIN"
ModuleHeader MOD_HEADER
= {
"admin",
"5.0",
"command /admin",
"UnrealIRCd Team",
"unrealircd-5",
};
MOD_INIT()
{
CommandAdd(modinfo->handle, MSG_ADMIN, cmd_admin, MAXPARA, CMD_USER|CMD_SHUN|CMD_VIRUS);
MARK_AS_OFFICIAL_MODULE(modinfo);
return MOD_SUCCESS;
}
MOD_LOAD()
{
return MOD_SUCCESS;
}
MOD_UNLOAD()
{
return MOD_SUCCESS;
}
/** ADMIN [servername].
* Shows administrative information about this server to users.
*/
CMD_FUNC(cmd_admin)
{
ConfigItem_admin *admin;
if (IsUser(sptr))
{
if (hunt_server(sptr, recv_mtags, ":%s ADMIN :%s", 1, parc, parv) != HUNTED_ISME)
return 0;
}
if (!conf_admin_tail)
{
sendnumeric(sptr, ERR_NOADMININFO, me.name);
return 0;
}
sendnumeric(sptr, RPL_ADMINME, me.name);
/* cycle through the list backwards */
for (admin = conf_admin_tail; admin; admin = admin->prev)
{
if (!admin->next)
sendnumeric(sptr, RPL_ADMINLOC1, admin->line);
else if (!admin->next->next)
sendnumeric(sptr, RPL_ADMINLOC2, admin->line);
else
sendnumeric(sptr, RPL_ADMINEMAIL, admin->line);
}
return 0;
}