X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=ircd%2Fm_jupe.c;h=51f219f53023dad24147d2ad8596ee23a3ac3a08;hb=refs%2Fheads%2Fupstream;hp=caafef32755dddbff4d4a52da6b70c1802b284d3;hpb=7d569fcb84a91637216f02c137b899a5e0286bb3;p=ircu2.10.12-pk.git diff --git a/ircd/m_jupe.c b/ircd/m_jupe.c index caafef3..51f219f 100644 --- a/ircd/m_jupe.c +++ b/ircd/m_jupe.c @@ -80,18 +80,14 @@ * note: it is guaranteed that parv[0]..parv[parc-1] are all * non-NULL pointers. */ -#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 "config.h" + #include "client.h" #include "jupe.h" #include "hash.h" #include "ircd.h" +#include "ircd_features.h" +#include "ircd_log.h" #include "ircd_reply.h" #include "ircd_string.h" #include "match.h" @@ -101,9 +97,8 @@ #include "s_conf.h" #include "s_misc.h" #include "send.h" -#include "support.h" -#include +/* #include -- Now using assert in ircd_log.h */ #include #include @@ -137,7 +132,7 @@ int ms_jupe(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) return 0; /* no such server */ if (!IsMe(acptr)) { /* manually propagate, since we don't set it */ - sendcmdto_one(acptr, CMD_JUPE, sptr, "%s %s %s %s :%s", target, server, + sendcmdto_one(sptr, CMD_JUPE, acptr, "%s %s %s %s :%s", target, server, parv[3], parv[4], reason); return 0; } @@ -165,7 +160,7 @@ int ms_jupe(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) return jupe_activate(cptr, sptr, ajupe, lastmod, flags); else return jupe_deactivate(cptr, sptr, ajupe, lastmod, flags); - } else if (JupeLastMod(ajupe) == lastmod) /* no changes */ + } else if (JupeLastMod(ajupe) == lastmod || IsBurstOrBurstAck(cptr)) return 0; else return jupe_resend(cptr, ajupe); /* other server desynched WRT jupes */ @@ -192,7 +187,6 @@ int ms_jupe(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) * parv[4] = [Comment] * */ -#ifdef CONFIG_OPERCMDS int mo_jupe(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) { struct Client *acptr = 0; @@ -212,6 +206,9 @@ int mo_jupe(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) else return jupe_list(sptr, server); + if (!feature_bool(FEAT_CONFIG_OPERCMDS)) + return send_reply(sptr, ERR_DISABLED, "JUPE"); + if (parc == 4) { expire_off = atoi(parv[2]); reason = parv[3]; @@ -226,21 +223,22 @@ int mo_jupe(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) if (target) { if (!(target[0] == '*' && target[1] == '\0')) { if (!(acptr = find_match_server(target))) - return send_error_to_client(sptr, ERR_NOSUCHSERVER, target); + return send_reply(sptr, ERR_NOSUCHSERVER, target); if (!IsMe(acptr)) { /* manually propagate, since we don't set it */ - if (!IsOper(sptr)) - return send_error_to_client(sptr, ERR_NOPRIVILEGES); + if (!HasPriv(sptr, PRIV_JUPE)) + return send_reply(sptr, ERR_NOPRIVILEGES); - sendcmdto_one(acptr, CMD_JUPE, sptr, "%C %c%s %s %Tu :%s", acptr, + sendcmdto_one(sptr, CMD_JUPE, acptr, "%C %c%s %s %Tu :%s", acptr, flags & JUPE_ACTIVE ? '+' : '-', server, parv[3], TStime(), reason); return 0; - } + } else if (!HasPriv(sptr, PRIV_LOCAL_JUPE)) + return send_reply(sptr, ERR_NOPRIVILEGES); flags |= JUPE_LOCAL; - } else if (!IsOper(sptr)) - return send_error_to_client(sptr, ERR_NOPRIVILEGES); + } else if (!HasPriv(sptr, PRIV_JUPE)) + return send_reply(sptr, ERR_NOPRIVILEGES); } ajupe = jupe_find(server); @@ -258,7 +256,6 @@ int mo_jupe(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) return jupe_add(cptr, sptr, server, reason, expire_off, TStime(), flags); } -#endif /* CONFIG_OPERCMDS */ /* * m_jupe - user message handler