X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/5203cba5cea34030f9775b6fac1263aacfa37b82..ea41b24fd4807e3565bf5f8f293e2efc4c20b62d:/modules/m_services.c diff --git a/modules/m_services.c b/modules/m_services.c index 47e76ce5..af729064 100644 --- a/modules/m_services.c +++ b/modules/m_services.c @@ -25,8 +25,6 @@ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. - * - * $Id: m_services.c 1907 2006-08-29 19:18:15Z jilles $ */ #include "stdinc.h" @@ -34,8 +32,7 @@ #include "send.h" #include "channel.h" #include "client.h" -#include "common.h" -#include "config.h" +#include "defaults.h" #include "ircd.h" #include "numeric.h" #include "s_conf.h" @@ -49,16 +46,18 @@ #include "monitor.h" #include "supported.h" +static const char services_desc[] = "Provides support for running a services daemon"; + static int _modinit(void); static void _moddeinit(void); static void mark_services(void); static void unmark_services(void); -static int me_su(struct Client *, struct Client *, int, const char **); -static int me_login(struct Client *, struct Client *, int, const char **); -static int me_rsfnc(struct Client *, struct Client *, int, const char **); -static int me_nickdelay(struct Client *, struct Client *, int, const char **); +static void me_su(struct MsgBuf *, struct Client *, struct Client *, int, const char **); +static void me_login(struct MsgBuf *, struct Client *, struct Client *, int, const char **); +static void me_rsfnc(struct MsgBuf *, struct Client *, struct Client *, int, const char **); +static void me_nickdelay(struct MsgBuf *, struct Client *, struct Client *, int, const char **); static void h_svc_server_introduced(hook_data_client *); static void h_svc_whois(hook_data_client *); @@ -67,19 +66,19 @@ static void h_svc_conf_read_start(void *); static void h_svc_conf_read_end(void *); struct Message su_msgtab = { - "SU", 0, 0, 0, MFLG_SLOW, + "SU", 0, 0, 0, 0, {mg_ignore, mg_ignore, mg_ignore, mg_ignore, {me_su, 2}, mg_ignore} }; struct Message login_msgtab = { - "LOGIN", 0, 0, 0, MFLG_SLOW, + "LOGIN", 0, 0, 0, 0, {mg_ignore, mg_ignore, mg_ignore, mg_ignore, {me_login, 2}, mg_ignore} }; struct Message rsfnc_msgtab = { - "RSFNC", 0, 0, 0, MFLG_SLOW, + "RSFNC", 0, 0, 0, 0, {mg_ignore, mg_ignore, mg_ignore, mg_ignore, {me_rsfnc, 4}, mg_ignore} }; struct Message nickdelay_msgtab = { - "NICKDELAY", 0, 0, 0, MFLG_SLOW, + "NICKDELAY", 0, 0, 0, 0, {mg_unreg, mg_ignore, mg_ignore, mg_ignore, {me_nickdelay, 3}, mg_ignore} }; @@ -96,7 +95,7 @@ mapi_hfn_list_av1 services_hfnlist[] = { { NULL, NULL } }; -DECLARE_MODULE_AV1(services, _modinit, _moddeinit, services_clist, NULL, services_hfnlist, "$Revision: 1907 $"); +DECLARE_MODULE_AV2(services, _modinit, _moddeinit, services_clist, NULL, services_hfnlist, NULL, NULL, services_desc); static int _modinit(void) @@ -113,8 +112,8 @@ _moddeinit(void) unmark_services(); } -static int -me_su(struct Client *client_p, struct Client *source_p, +static void +me_su(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { struct Client *target_p; @@ -123,14 +122,14 @@ me_su(struct Client *client_p, struct Client *source_p, { sendto_realops_snomask(SNO_GENERAL, L_ALL, "Non-service server %s attempting to execute services-only command SU", source_p->name); - return 0; + return; } if((target_p = find_client(parv[1])) == NULL) - return 0; + return; if(!target_p->user) - return 0; + return; if(EmptyString(parv[2])) target_p->user->suser[0] = '\0'; @@ -142,45 +141,42 @@ me_su(struct Client *client_p, struct Client *source_p, EmptyString(target_p->user->suser) ? "*" : target_p->user->suser); invalidate_bancache_user(target_p); - - return 0; } -static int -me_login(struct Client *client_p, struct Client *source_p, +static void +me_login(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { if(!IsPerson(source_p)) - return 0; + return; rb_strlcpy(source_p->user->suser, parv[1], sizeof(source_p->user->suser)); - return 0; } -static int -me_rsfnc(struct Client *client_p, struct Client *source_p, +static void +me_rsfnc(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { struct Client *target_p; struct Client *exist_p; time_t newts, curts; - char note[NICKLEN + 10]; + char note[NAMELEN + 10]; if(!(source_p->flags & FLAGS_SERVICE)) { sendto_realops_snomask(SNO_GENERAL, L_ALL, "Non-service server %s attempting to execute services-only command RSFNC", source_p->name); - return 0; + return; } if((target_p = find_person(parv[1])) == NULL) - return 0; + return; if(!MyClient(target_p)) - return 0; + return; if(!clean_nick(parv[2], 0) || IsDigit(parv[2][0])) - return 0; + return; curts = atol(parv[4]); @@ -189,7 +185,7 @@ me_rsfnc(struct Client *client_p, struct Client *source_p, * nicknames before the RSFNC arrives.. --anfl */ if(target_p->tsinfo != curts) - return 0; + return; if((exist_p = find_named_client(parv[2]))) { @@ -256,9 +252,8 @@ doit: del_all_accepts(target_p); - snprintf(note, NICKLEN + 10, "Nick: %s", target_p->name); + snprintf(note, sizeof(note), "Nick: %s", target_p->name); rb_note(target_p->localClient->F, note); - return 0; } /* @@ -266,8 +261,8 @@ doit: ** parv[1] = duration in seconds (0 to remove) ** parv[2] = nick */ -static int -me_nickdelay(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) +static void +me_nickdelay(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { int duration; struct nd_entry *nd; @@ -276,13 +271,13 @@ me_nickdelay(struct Client *client_p, struct Client *source_p, int parc, const c { sendto_realops_snomask(SNO_GENERAL, L_ALL, "Non-service server %s attempting to execute services-only command NICKDELAY", source_p->name); - return 0; + return; } duration = atoi(parv[1]); if (duration <= 0) { - nd = irc_dictionary_retrieve(nd_dict, parv[2]); + nd = rb_dictionary_retrieve(nd_dict, parv[2]); if (nd != NULL) free_nd_entry(nd); } @@ -291,12 +286,10 @@ me_nickdelay(struct Client *client_p, struct Client *source_p, int parc, const c if (duration > 86400) duration = 86400; add_nd_entry(parv[2]); - nd = irc_dictionary_retrieve(nd_dict, parv[2]); + nd = rb_dictionary_retrieve(nd_dict, parv[2]); if (nd != NULL) nd->expire = rb_current_time() + duration; } - - return 0; } static void @@ -341,7 +334,7 @@ h_svc_stats(hook_data_int *data) char statchar = (char) data->arg2; rb_dlink_node *ptr; - if (statchar == 'U' && IsOper(data->client)) + if (statchar == 'U' && IsOperGeneral(data->client)) { RB_DLINK_FOREACH(ptr, service_list.head) {