Add operator::vhost option.
This commit is contained in:
parent
fbd2e5da56
commit
08e35f665f
|
@ -6,7 +6,6 @@ Todo list for ShadowIRCd 6.0
|
||||||
* kicknorejoin (+J in inspircd chmode)
|
* kicknorejoin (+J in inspircd chmode)
|
||||||
* operoverride umode (+p), steal this from ircd-seven
|
* operoverride umode (+p), steal this from ircd-seven
|
||||||
* immune cmode (+M), steal this from ircd-seven too
|
* immune cmode (+M), steal this from ircd-seven too
|
||||||
* host-on-operup: vhost that gets applied to you on oper-up. A surprising number of people want this.
|
|
||||||
* Anything else we think of between now and release. :P
|
* Anything else we think of between now and release. :P
|
||||||
|
|
||||||
Todo list for ShadowIRCd 6.1
|
Todo list for ShadowIRCd 6.1
|
||||||
|
|
|
@ -272,6 +272,12 @@ operator "god" {
|
||||||
*/
|
*/
|
||||||
snomask = "+Zbfkrsuy";
|
snomask = "+Zbfkrsuy";
|
||||||
|
|
||||||
|
/* vhost: defines the vhost that this oper will get on oper up.
|
||||||
|
* this must be a valid hostmask. If this is specified the oper
|
||||||
|
* will not be given default_operhost.
|
||||||
|
*/
|
||||||
|
vhost = "is.an.oper";
|
||||||
|
|
||||||
/* flags: misc options for the operator. You may prefix an option
|
/* flags: misc options for the operator. You may prefix an option
|
||||||
* with ~ to disable it, e.g. ~encrypted.
|
* with ~ to disable it, e.g. ~encrypted.
|
||||||
*
|
*
|
||||||
|
|
|
@ -485,6 +485,12 @@ operator "god" {
|
||||||
*/
|
*/
|
||||||
snomask = "+Zbfkrsuy";
|
snomask = "+Zbfkrsuy";
|
||||||
|
|
||||||
|
/* vhost: defines the vhost that this oper will get on oper up.
|
||||||
|
* this must be a valid hostmask. If this is specified the oper
|
||||||
|
* will not be given default_operhost.
|
||||||
|
*/
|
||||||
|
vhost = "is.an.oper";
|
||||||
|
|
||||||
/* flags: misc options for the operator. You may prefix an option
|
/* flags: misc options for the operator. You may prefix an option
|
||||||
* with ~ to disable it, e.g. ~encrypted.
|
* with ~ to disable it, e.g. ~encrypted.
|
||||||
*
|
*
|
||||||
|
|
|
@ -119,6 +119,8 @@ struct oper_conf
|
||||||
|
|
||||||
unsigned int snomask;
|
unsigned int snomask;
|
||||||
|
|
||||||
|
char *vhost;
|
||||||
|
|
||||||
struct PrivilegeSet *privset;
|
struct PrivilegeSet *privset;
|
||||||
|
|
||||||
#ifdef HAVE_LIBCRYPTO
|
#ifdef HAVE_LIBCRYPTO
|
||||||
|
|
|
@ -571,6 +571,10 @@ conf_end_oper(struct TopConf *tc)
|
||||||
yy_tmpoper->flags = yy_oper->flags;
|
yy_tmpoper->flags = yy_oper->flags;
|
||||||
yy_tmpoper->umodes = yy_oper->umodes;
|
yy_tmpoper->umodes = yy_oper->umodes;
|
||||||
yy_tmpoper->snomask = yy_oper->snomask;
|
yy_tmpoper->snomask = yy_oper->snomask;
|
||||||
|
if(valid_hostname(yy_oper->vhost))
|
||||||
|
yy_tmpoper->vhost = rb_strdup(yy_oper->vhost);
|
||||||
|
else
|
||||||
|
conf_report_error("Ignoring vhost setting for oper %s -- invalid hostmask.", yy_oper->name);
|
||||||
yy_tmpoper->privset = yy_oper->privset;
|
yy_tmpoper->privset = yy_oper->privset;
|
||||||
|
|
||||||
#ifdef HAVE_LIBCRYPTO
|
#ifdef HAVE_LIBCRYPTO
|
||||||
|
@ -700,6 +704,12 @@ conf_set_oper_snomask(void *data)
|
||||||
yy_oper->snomask = parse_snobuf_to_mask(0, (const char *) data);
|
yy_oper->snomask = parse_snobuf_to_mask(0, (const char *) data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
conf_set_oper_vhost(void *data)
|
||||||
|
{
|
||||||
|
yy_oper->vhost = rb_strdup((char *) data);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
conf_begin_class(struct TopConf *tc)
|
conf_begin_class(struct TopConf *tc)
|
||||||
{
|
{
|
||||||
|
@ -2066,6 +2076,7 @@ static struct ConfEntry conf_operator_table[] =
|
||||||
{ "umodes", CF_STRING | CF_FLIST, conf_set_oper_umodes, 0, NULL },
|
{ "umodes", CF_STRING | CF_FLIST, conf_set_oper_umodes, 0, NULL },
|
||||||
{ "privset", CF_QSTRING, conf_set_oper_privset, 0, NULL },
|
{ "privset", CF_QSTRING, conf_set_oper_privset, 0, NULL },
|
||||||
{ "snomask", CF_QSTRING, conf_set_oper_snomask, 0, NULL },
|
{ "snomask", CF_QSTRING, conf_set_oper_snomask, 0, NULL },
|
||||||
|
{ "vhost", CF_QSTRING, conf_set_oper_vhost, 0, NULL },
|
||||||
{ "user", CF_QSTRING, conf_set_oper_user, 0, NULL },
|
{ "user", CF_QSTRING, conf_set_oper_user, 0, NULL },
|
||||||
{ "password", CF_QSTRING, conf_set_oper_password, 0, NULL },
|
{ "password", CF_QSTRING, conf_set_oper_password, 0, NULL },
|
||||||
{ "fingerprint", CF_QSTRING, conf_set_oper_fingerprint, 0, NULL },
|
{ "fingerprint", CF_QSTRING, conf_set_oper_fingerprint, 0, NULL },
|
||||||
|
|
|
@ -1310,8 +1310,11 @@ oper_up(struct Client *source_p, struct oper_conf *oper_p)
|
||||||
else
|
else
|
||||||
source_p->umodes |= DEFAULT_OPER_UMODES;
|
source_p->umodes |= DEFAULT_OPER_UMODES;
|
||||||
|
|
||||||
if(!EmptyString(ConfigFileEntry.default_operhost))
|
if(oper_p->vhost || !EmptyString(ConfigFileEntry.default_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, ConfigFileEntry.default_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);
|
sendto_one_numeric(source_p, RPL_HOSTHIDDEN, "%s :is now your hidden host (set by %s)", source_p->host, source_p->servptr->name);
|
||||||
|
|
Loading…
Reference in New Issue