X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/fc939ca58f179a59fda915a9041e0fc1970cedab..1548c140218b956485b3fd5c386447a2add59864:/modules/m_rehash.c diff --git a/modules/m_rehash.c b/modules/m_rehash.c index 9d0af3db..cb19d6d7 100644 --- a/modules/m_rehash.c +++ b/modules/m_rehash.c @@ -25,7 +25,6 @@ #include "stdinc.h" #include "client.h" #include "channel.h" -#include "common.h" #include "match.h" #include "ircd.h" #include "s_serv.h" @@ -44,17 +43,19 @@ #include "rb_radixtree.h" #include "sslproc.h" -static int mo_rehash(struct MsgBuf *, struct Client *, struct Client *, int, const char **); -static int me_rehash(struct MsgBuf *, struct Client *, struct Client *, int, const char **); static const char rehash_desc[] = "Provides the REHASH command to reload configuration and other files"; +static void mo_rehash(struct MsgBuf *, struct Client *, struct Client *, int, const char **); +static void me_rehash(struct MsgBuf *, struct Client *, struct Client *, int, const char **); + struct Message rehash_msgtab = { "REHASH", 0, 0, 0, 0, {mg_unreg, mg_not_oper, mg_ignore, mg_ignore, {me_rehash, 0}, {mo_rehash, 0}} }; mapi_clist_av1 rehash_clist[] = { &rehash_msgtab, NULL }; + DECLARE_MODULE_AV2(rehash, NULL, NULL, rehash_clist, NULL, NULL, NULL, NULL, rehash_desc); struct hash_commands @@ -71,7 +72,7 @@ rehash_bans_loc(struct Client *source_p) if (!MyConnect(source_p)) remote_rehash_oper_p = source_p; - rehash_bans(0); + rehash_bans(); } static void @@ -82,13 +83,19 @@ rehash_dns(struct Client *source_p) if (!MyConnect(source_p)) remote_rehash_oper_p = source_p; - /* reread /etc/resolv.conf and reopen res socket */ - restart_authd(); + reload_nameservers(); } static void rehash_ssld(struct Client *source_p) { + if (!IsOperAdmin(source_p)) + { + sendto_one(source_p, form_str(ERR_NOPRIVS), + me.name, source_p->name, "admin"); + return; + } + sendto_realops_snomask(SNO_GENERAL, L_ALL, "%s is restarting ssld", get_oper_name(source_p)); @@ -117,7 +124,7 @@ rehash_omotd(struct Client *source_p) remote_rehash_oper_p = source_p; free_cachefile(oper_motd); - oper_motd = cache_file(OPATH, "opers.motd", 0); + oper_motd = cache_file(ircd_paths[IRCD_PATH_IRCD_OMOTD], "opers.motd", 0); } static void @@ -196,10 +203,9 @@ static void rehash_tresvs(struct Client *source_p) { struct ConfItem *aconf; - struct rb_radixtree_iteration_state iter; + rb_radixtree_iteration_state iter; rb_dlink_node *ptr; rb_dlink_node *next_ptr; - int i; sendto_realops_snomask(SNO_GENERAL, L_ALL, "%s is clearing temp resvs", get_oper_name(source_p)); @@ -344,7 +350,7 @@ do_rehash(struct Client *source_p, const char *type) remote_rehash_oper_p = source_p; ilog(L_MAIN, "REHASH From %s[%s]", get_oper_name(source_p), source_p->sockhost); - rehash(0); + rehash(false); remote_rehash_oper_p = NULL; } } @@ -355,7 +361,7 @@ do_rehash(struct Client *source_p, const char *type) * parv[1] = rehash type or destination * parv[2] = destination */ -static int +static void mo_rehash(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { const char *type = NULL, *target_server = NULL; @@ -364,7 +370,7 @@ mo_rehash(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sourc { sendto_one(source_p, form_str(ERR_NOPRIVS), me.name, source_p->name, "rehash"); - return 0; + return; } if (parc > 2) @@ -382,33 +388,25 @@ mo_rehash(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sourc { sendto_one(source_p, form_str(ERR_NOPRIVS), me.name, source_p->name, "remoteban"); - return 0; + return; } sendto_match_servs(source_p, target_server, CAP_ENCAP, NOCAPS, "ENCAP %s REHASH %s", target_server, type != NULL ? type : ""); if (match(target_server, me.name) == 0) - return 0; + return; } do_rehash(source_p, type); - - return 0; } -static int +static void me_rehash(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { if (!IsPerson(source_p)) - return 0; - - if (!find_shared_conf(source_p->username, source_p->host, - source_p->servptr->name, SHARED_REHASH)) - return 0; + return; do_rehash(source_p, parc > 1 ? parv[1] : NULL); - - return 0; }