X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/1328da86184d5edeedc9e304a761e27e910ef3ee..9f6c335332cb357b4bf5f991387087f907f6e55c:/modules/m_resv.c diff --git a/modules/m_resv.c b/modules/m_resv.c index 1659373..d1e11fc 100644 --- a/modules/m_resv.c +++ b/modules/m_resv.c @@ -84,6 +84,13 @@ mo_resv(struct Client *client_p, struct Client *source_p, int parc, const char * int temp_time; int loc = 1; + if(!IsOperResv(source_p)) + { + sendto_one(source_p, form_str(ERR_NOPRIVS), + me.name, source_p->name, "resv"); + return 0; + } + /* RESV [time] [ON ] : */ if((temp_time = valid_temp_time(parv[loc])) >= 0) @@ -125,7 +132,7 @@ mo_resv(struct Client *client_p, struct Client *source_p, int parc, const char * if(match(target_server, me.name) == 0) return 0; } - else if(dlink_list_length(&cluster_conf_list) > 0) + else if(rb_dlink_list_length(&cluster_conf_list) > 0) cluster_resv(source_p, temp_time, name, reason); parse_resv(source_p, name, reason, temp_time); @@ -330,9 +337,9 @@ cluster_resv(struct Client *source_p, int temp_time, const char *name, const char *reason) { struct remote_conf *shared_p; - dlink_node *ptr; + rb_dlink_node *ptr; - DLINK_FOREACH(ptr, cluster_conf_list.head) + RB_DLINK_FOREACH(ptr, cluster_conf_list.head) { shared_p = ptr->data; @@ -370,6 +377,13 @@ cluster_resv(struct Client *source_p, int temp_time, const char *name, static int mo_unresv(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { + if(!IsOperResv(source_p)) + { + sendto_one(source_p, form_str(ERR_NOPRIVS), + me.name, source_p->name, "resv"); + return 0; + } + if((parc == 4) && (irccmp(parv[2], "ON") == 0)) { if(!IsOperRemoteBan(source_p)) @@ -385,7 +399,7 @@ mo_unresv(struct Client *client_p, struct Client *source_p, int parc, const char if(match(parv[3], me.name) == 0) return 0; } - else if(dlink_list_length(&cluster_conf_list) > 0) + else if(rb_dlink_list_length(&cluster_conf_list) > 0) cluster_generic(source_p, "UNRESV", SHARED_UNRESV, CAP_CLUSTER, "%s", parv[1]); @@ -470,9 +484,9 @@ remove_resv(struct Client *source_p, const char *name) } else { - dlink_node *ptr; + rb_dlink_node *ptr; - DLINK_FOREACH(ptr, resv_conf_list.head) + RB_DLINK_FOREACH(ptr, resv_conf_list.head) { aconf = ptr->data; @@ -502,7 +516,7 @@ remove_resv(struct Client *source_p, const char *name) ilog(L_KLINE, "UR %s %s", get_oper_name(source_p), name); } /* already have ptr from the loop above.. */ - dlinkDestroy(ptr, &resv_conf_list); + rb_dlinkDestroy(ptr, &resv_conf_list); } free_conf(aconf); @@ -530,7 +544,7 @@ remove_resv_from_file(struct Client *source_p, const char *name) int error_on_write = 0; int found_resv = 0; - ircsprintf(temppath, "%s.tmp", ConfigFileEntry.resvfile); + rb_sprintf(temppath, "%s.tmp", ConfigFileEntry.resvfile); filename = get_conf_name(RESV_TYPE); if((in = fopen(filename, "r")) == NULL)