X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=ircd%2Fm_admin.c;h=8c4908ec8d59c3ec14af3042a1ffdd001bad409e;hb=refs%2Fheads%2Fupstream;hp=2ecd08f2b665f7d7e22c8cf736c1cfc3ac7eac3c;hpb=1b4e637606464f9af948a6e87879565f9fc1b726;p=ircu2.10.12-pk.git diff --git a/ircd/m_admin.c b/ircd/m_admin.c index 2ecd08f..8c4908e 100644 --- a/ircd/m_admin.c +++ b/ircd/m_admin.c @@ -81,25 +81,20 @@ */ #include "config.h" -#if 0 -/* - * No need to include handlers.h here the signatures must match - * and we don't need to force a rebuild of all the handlers everytime - * we add a new one to the list. --Bleep - */ -#include "handlers.h" -#endif /* 0 */ #include "client.h" #include "hash.h" #include "ircd.h" +#include "ircd_features.h" +#include "ircd_log.h" #include "ircd_reply.h" +#include "match.h" #include "msg.h" #include "numeric.h" #include "numnicks.h" #include "s_conf.h" #include "s_user.h" -#include +/* #include -- Now using assert in ircd_log.h */ static int send_admin_info(struct Client* sptr) { @@ -125,18 +120,26 @@ int m_admin(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) assert(0 != cptr); assert(cptr == sptr); - if (parc > 1) { - struct Client *acptr; - acptr = FindUser(parv[1]); - if (acptr) - parv[1] = cli_name(cli_user(acptr)->server); - else if (!(acptr = find_match_server(parv[1]))) - return send_reply(sptr, ERR_NOSUCHSERVER, parv[1]); - - parv[1] = cli_name(acptr); - if (hunt_server_cmd(sptr, CMD_ADMIN, cptr, 0, ":%C", 1, parc, parv) != HUNTED_ISME) - return 0; - } + if (parc > 1 && match(parv[1], cli_name(&me))) + return send_reply(sptr, ERR_NOPRIVILEGES); + + return send_admin_info(sptr); +} + +/* + * mo_admin - oper message handler + * + * parv[0] = sender prefix + * parv[1] = servername + */ +int mo_admin(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) +{ + assert(0 != cptr); + assert(cptr == sptr); + + if (hunt_server_cmd(sptr, CMD_ADMIN, cptr, feature_int(FEAT_HIS_REMOTE), + ":%C", 1, parc, parv) != HUNTED_ISME) + return 0; return send_admin_info(sptr); }