#include "common.h"
#include "channel.h"
#include "s_conf.h"
+#include "s_user.h"
#include "s_newconf.h"
#include "msg.h"
#include "parse.h"
static void quote_identtimeout(struct Client *, const char *, int);
static void quote_max(struct Client *, const char *, int);
static void quote_operstring(struct Client *, const char *, int);
+static void quote_operhost(struct Client *, const char *, int);
static void quote_spamnum(struct Client *, const char *, int);
static void quote_spamtime(struct Client *, const char *, int);
static void quote_splitmode(struct Client *, const char *, int);
{"IDENTTIMEOUT", quote_identtimeout, 0, 1 },
{"MAX", quote_max, 0, 1 },
{"MAXCLIENTS", quote_max, 0, 1 },
+ {"OPERHOST", quote_operhost, 1, 0 },
{"OPERSTRING", quote_operstring, 1, 0 },
{"SPAMNUM", quote_spamnum, 0, 1 },
{"SPAMTIME", quote_spamtime, 0, 1 },
}
}
+/* SET OPERHOST */
+static void
+quote_operhost(struct Client *source_p, const char *arg, int newval)
+{
+ if(EmptyString(arg))
+ {
+ sendto_one_notice(source_p, ":OPERHOST is currently '%s'", GlobalSetOptions.operhost);
+ }
+ else if(!valid_hostname(arg))
+ {
+ sendto_one_notice(source_p, "Invalid hostmask.");
+ }
+ else
+ {
+ rb_strlcpy(GlobalSetOptions.operhost, arg,
+ sizeof(GlobalSetOptions.operhost));
+
+ sendto_realops_snomask(SNO_GENERAL, L_ALL,
+ "%s has changed OPERHOST to '%s'",
+ get_oper_name(source_p), arg);
+ }
+}
+
/* SET OPERSTRING */
static void
quote_operstring(struct Client *source_p, const char *arg, int newval)
else
GlobalSetOptions.ident_timeout = IDENT_TIMEOUT;
+ if(ConfigFileEntry.default_operhost)
+ rb_strlcpy(GlobalSetOptions.operhost,
+ ConfigFileEntry.default_operhost,
+ sizeof(GlobalSetOptions.operhost));
+ else
+ rb_strlcpy(GlobalSetOptions.operhost, "", sizeof(GlobalSetOptions.operhost));
+
rb_strlcpy(GlobalSetOptions.operstring,
ConfigFileEntry.default_operstring,
sizeof(GlobalSetOptions.operstring));
if(oper_p->operstring)
user_metadata_add(source_p, "OPERSTRING", oper_p->operstring, 1);
- if(oper_p->vhost || !EmptyString(ConfigFileEntry.default_operhost))
+ if(oper_p->vhost || !EmptyString(GlobalSetOptions.operhost))
{
if(oper_p->vhost)
change_nick_user_host(source_p, source_p->name, source_p->username, oper_p->vhost, 0, "Changing host");
else
- change_nick_user_host(source_p, source_p->name, source_p->username, ConfigFileEntry.default_operhost, 0, "Changing host");
+ change_nick_user_host(source_p, source_p->name, source_p->username, GlobalSetOptions.operhost, 0, "Changing host");
sendto_one_numeric(source_p, RPL_HOSTHIDDEN, "%s :is now your hidden host (set by %s)", source_p->host, source_p->servptr->name);