Add description parameter to auth blocks (#327)
This commit is contained in:
parent
b2fa28dd95
commit
48a06ae3d7
8 changed files with 33 additions and 12 deletions
|
@ -344,6 +344,11 @@ listen {
|
||||||
|
|
||||||
/* auth {}: allow users to connect to the ircd (OLD I:) */
|
/* auth {}: allow users to connect to the ircd (OLD I:) */
|
||||||
auth {
|
auth {
|
||||||
|
/* description: descriptive text to help recognize this auth block in
|
||||||
|
* stats i output.
|
||||||
|
*/
|
||||||
|
description = "example oper";
|
||||||
|
|
||||||
/* user: the user@host allowed to connect. Multiple IPv4/IPv6 user
|
/* user: the user@host allowed to connect. Multiple IPv4/IPv6 user
|
||||||
* lines are permitted per auth block. This is matched against the
|
* lines are permitted per auth block. This is matched against the
|
||||||
* hostname and IP address (using :: shortening for IPv6 and
|
* hostname and IP address (using :: shortening for IPv6 and
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
#define NUMERIC_STR_209 "Class %s %d"
|
#define NUMERIC_STR_209 "Class %s %d"
|
||||||
#define NUMERIC_STR_212 "%s %u %lu :%u"
|
#define NUMERIC_STR_212 "%s %u %lu :%u"
|
||||||
#define NUMERIC_STR_213 "C %s %s %s %d %s %s"
|
#define NUMERIC_STR_213 "C %s %s %s %d %s %s"
|
||||||
#define NUMERIC_STR_215 "I %s %s %s@%s %d %s"
|
#define NUMERIC_STR_215 "I %s %s %s@%s %d %s :%s"
|
||||||
#define NUMERIC_STR_216 "%c %s * %s :%s%s%s"
|
#define NUMERIC_STR_216 "%c %s * %s :%s%s%s"
|
||||||
#define NUMERIC_STR_217 "%c %d %s :%s"
|
#define NUMERIC_STR_217 "%c %d %s :%s"
|
||||||
#define NUMERIC_STR_218 "Y %s %d %d %d %u %d.%d %d.%d %u"
|
#define NUMERIC_STR_218 "Y %s %d %d %d %u %d.%d %d.%d %u"
|
||||||
|
|
|
@ -65,6 +65,7 @@ struct ConfItem
|
||||||
char *passwd; /* doubles as kline reason *ugh* */
|
char *passwd; /* doubles as kline reason *ugh* */
|
||||||
char *spasswd; /* Password to send. */
|
char *spasswd; /* Password to send. */
|
||||||
char *user; /* user part of user@host */
|
char *user; /* user part of user@host */
|
||||||
|
char *desc; /* description */
|
||||||
int port;
|
int port;
|
||||||
time_t hold; /* Hold action until this time (calendar time) */
|
time_t hold; /* Hold action until this time (calendar time) */
|
||||||
time_t created; /* Creation time (for klines etc) */
|
time_t created; /* Creation time (for klines etc) */
|
||||||
|
@ -384,7 +385,7 @@ extern int detach_conf(struct Client *);
|
||||||
extern struct ConfItem *find_tkline(const char *, const char *, struct sockaddr *);
|
extern struct ConfItem *find_tkline(const char *, const char *, struct sockaddr *);
|
||||||
extern char *show_iline_prefix(struct Client *, struct ConfItem *, char *);
|
extern char *show_iline_prefix(struct Client *, struct ConfItem *, char *);
|
||||||
extern void get_printable_conf(struct ConfItem *,
|
extern void get_printable_conf(struct ConfItem *,
|
||||||
char **, char **, const char **, char **, int *, char **);
|
char **, char **, const char **, char **, int *, char **, char **);
|
||||||
extern char *get_user_ban_reason(struct ConfItem *aconf);
|
extern char *get_user_ban_reason(struct ConfItem *aconf);
|
||||||
extern void get_printable_kline(struct Client *, struct ConfItem *,
|
extern void get_printable_kline(struct Client *, struct ConfItem *,
|
||||||
char **, char **, char **, char **);
|
char **, char **, char **, char **);
|
||||||
|
|
|
@ -723,7 +723,7 @@ show_iline_prefix(struct Client *sptr, struct ConfItem *aconf, char *name)
|
||||||
void
|
void
|
||||||
report_auth(struct Client *client_p)
|
report_auth(struct Client *client_p)
|
||||||
{
|
{
|
||||||
char *name, *host, *user, *classname;
|
char *name, *host, *user, *classname, *desc;
|
||||||
const char *pass;
|
const char *pass;
|
||||||
struct AddressRec *arec;
|
struct AddressRec *arec;
|
||||||
struct ConfItem *aconf;
|
struct ConfItem *aconf;
|
||||||
|
@ -739,7 +739,7 @@ report_auth(struct Client *client_p)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
get_printable_conf(aconf, &name, &host, &pass, &user, &port,
|
get_printable_conf(aconf, &name, &host, &pass, &user, &port,
|
||||||
&classname);
|
&classname, &desc);
|
||||||
|
|
||||||
if(!EmptyString(aconf->spasswd))
|
if(!EmptyString(aconf->spasswd))
|
||||||
pass = aconf->spasswd;
|
pass = aconf->spasswd;
|
||||||
|
@ -748,7 +748,7 @@ report_auth(struct Client *client_p)
|
||||||
form_str(RPL_STATSILINE),
|
form_str(RPL_STATSILINE),
|
||||||
name, pass, show_iline_prefix(client_p, aconf, user),
|
name, pass, show_iline_prefix(client_p, aconf, user),
|
||||||
show_ip_conf(aconf, client_p) ? host : "255.255.255.255",
|
show_ip_conf(aconf, client_p) ? host : "255.255.255.255",
|
||||||
port, classname);
|
port, classname, desc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1037,6 +1037,9 @@ conf_end_auth(struct TopConf *tc)
|
||||||
if(yy_aconf->className)
|
if(yy_aconf->className)
|
||||||
yy_tmp->className = rb_strdup(yy_aconf->className);
|
yy_tmp->className = rb_strdup(yy_aconf->className);
|
||||||
|
|
||||||
|
if(yy_aconf->desc)
|
||||||
|
yy_tmp->desc = rb_strdup(yy_aconf->desc);
|
||||||
|
|
||||||
yy_tmp->flags = yy_aconf->flags;
|
yy_tmp->flags = yy_aconf->flags;
|
||||||
yy_tmp->port = yy_aconf->port;
|
yy_tmp->port = yy_aconf->port;
|
||||||
|
|
||||||
|
@ -1172,6 +1175,13 @@ conf_set_auth_spoof(void *data)
|
||||||
yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
|
yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
conf_set_auth_desc(void *data)
|
||||||
|
{
|
||||||
|
rb_free(yy_aconf->desc);
|
||||||
|
yy_aconf->desc = rb_strdup(data);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
conf_set_auth_flags(void *data)
|
conf_set_auth_flags(void *data)
|
||||||
{
|
{
|
||||||
|
@ -2640,6 +2650,7 @@ static struct ConfEntry conf_auth_table[] =
|
||||||
{ "redirport", CF_INT, conf_set_auth_redir_port, 0, NULL },
|
{ "redirport", CF_INT, conf_set_auth_redir_port, 0, NULL },
|
||||||
{ "flags", CF_STRING | CF_FLIST, conf_set_auth_flags, 0, NULL },
|
{ "flags", CF_STRING | CF_FLIST, conf_set_auth_flags, 0, NULL },
|
||||||
{ "umodes", CF_QSTRING, conf_set_auth_umodes, 0, NULL},
|
{ "umodes", CF_QSTRING, conf_set_auth_umodes, 0, NULL},
|
||||||
|
{ "description",CF_QSTRING, conf_set_auth_desc, 0, NULL},
|
||||||
{ "\0", 0, NULL, 0, NULL }
|
{ "\0", 0, NULL, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -154,6 +154,7 @@ free_conf(struct ConfItem *aconf)
|
||||||
rb_free(aconf->className);
|
rb_free(aconf->className);
|
||||||
rb_free(aconf->user);
|
rb_free(aconf->user);
|
||||||
rb_free(aconf->host);
|
rb_free(aconf->host);
|
||||||
|
rb_free(aconf->desc);
|
||||||
|
|
||||||
if(IsConfBan(aconf))
|
if(IsConfBan(aconf))
|
||||||
operhash_delete(aconf->info.oper);
|
operhash_delete(aconf->info.oper);
|
||||||
|
@ -1346,7 +1347,8 @@ get_oper_name(struct Client *client_p)
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
get_printable_conf(struct ConfItem *aconf, char **name, char **host,
|
get_printable_conf(struct ConfItem *aconf, char **name, char **host,
|
||||||
const char **pass, char **user, int *port, char **classname)
|
const char **pass, char **user, int *port,
|
||||||
|
char **classname, char **desc)
|
||||||
{
|
{
|
||||||
static char null[] = "<NULL>";
|
static char null[] = "<NULL>";
|
||||||
static char zero[] = "default";
|
static char zero[] = "default";
|
||||||
|
@ -1356,6 +1358,7 @@ get_printable_conf(struct ConfItem *aconf, char **name, char **host,
|
||||||
*pass = EmptyString(aconf->passwd) ? null : aconf->passwd;
|
*pass = EmptyString(aconf->passwd) ? null : aconf->passwd;
|
||||||
*user = EmptyString(aconf->user) ? null : aconf->user;
|
*user = EmptyString(aconf->user) ? null : aconf->user;
|
||||||
*classname = EmptyString(aconf->className) ? zero : aconf->className;
|
*classname = EmptyString(aconf->className) ? zero : aconf->className;
|
||||||
|
*desc = CheckEmpty(aconf->desc);
|
||||||
*port = (int) aconf->port;
|
*port = (int) aconf->port;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -453,7 +453,7 @@ stats_deny (struct Client *source_p)
|
||||||
static void
|
static void
|
||||||
stats_exempt(struct Client *source_p)
|
stats_exempt(struct Client *source_p)
|
||||||
{
|
{
|
||||||
char *name, *host, *user, *classname;
|
char *name, *host, *user, *classname, *desc;
|
||||||
const char *pass;
|
const char *pass;
|
||||||
struct AddressRec *arec;
|
struct AddressRec *arec;
|
||||||
struct ConfItem *aconf;
|
struct ConfItem *aconf;
|
||||||
|
@ -474,7 +474,7 @@ stats_exempt(struct Client *source_p)
|
||||||
{
|
{
|
||||||
aconf = arec->aconf;
|
aconf = arec->aconf;
|
||||||
get_printable_conf (aconf, &name, &host, &pass,
|
get_printable_conf (aconf, &name, &host, &pass,
|
||||||
&user, &port, &classname);
|
&user, &port, &classname, &desc);
|
||||||
|
|
||||||
sendto_one_numeric(source_p, RPL_STATSDLINE,
|
sendto_one_numeric(source_p, RPL_STATSDLINE,
|
||||||
form_str(RPL_STATSDLINE),
|
form_str(RPL_STATSDLINE),
|
||||||
|
@ -533,7 +533,7 @@ stats_auth (struct Client *source_p)
|
||||||
else if((ConfigFileEntry.stats_i_oper_only == 1) && !IsOperGeneral (source_p))
|
else if((ConfigFileEntry.stats_i_oper_only == 1) && !IsOperGeneral (source_p))
|
||||||
{
|
{
|
||||||
struct ConfItem *aconf;
|
struct ConfItem *aconf;
|
||||||
char *name, *host, *user, *classname;
|
char *name, *host, *user, *classname, *desc;
|
||||||
const char *pass = "*";
|
const char *pass = "*";
|
||||||
int port;
|
int port;
|
||||||
|
|
||||||
|
@ -550,13 +550,13 @@ stats_auth (struct Client *source_p)
|
||||||
if(aconf == NULL)
|
if(aconf == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
get_printable_conf (aconf, &name, &host, &pass, &user, &port, &classname);
|
get_printable_conf (aconf, &name, &host, &pass, &user, &port, &classname, &desc);
|
||||||
if(!EmptyString(aconf->spasswd))
|
if(!EmptyString(aconf->spasswd))
|
||||||
pass = aconf->spasswd;
|
pass = aconf->spasswd;
|
||||||
|
|
||||||
sendto_one_numeric(source_p, RPL_STATSILINE, form_str(RPL_STATSILINE),
|
sendto_one_numeric(source_p, RPL_STATSILINE, form_str(RPL_STATSILINE),
|
||||||
name, pass, show_iline_prefix(source_p, aconf, user),
|
name, pass, show_iline_prefix(source_p, aconf, user),
|
||||||
host, port, classname);
|
host, port, classname, desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Theyre opered, or allowed to see all auth blocks */
|
/* Theyre opered, or allowed to see all auth blocks */
|
||||||
|
|
|
@ -235,7 +235,8 @@ mo_testline(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sou
|
||||||
sendto_one_numeric(source_p, RPL_STATSILINE, form_str(RPL_STATSILINE),
|
sendto_one_numeric(source_p, RPL_STATSILINE, form_str(RPL_STATSILINE),
|
||||||
aconf->info.name, EmptyString(aconf->spasswd) ? "<NULL>" : aconf->spasswd,
|
aconf->info.name, EmptyString(aconf->spasswd) ? "<NULL>" : aconf->spasswd,
|
||||||
show_iline_prefix(source_p, aconf, aconf->user),
|
show_iline_prefix(source_p, aconf, aconf->user),
|
||||||
aconf->host, aconf->port, aconf->className);
|
aconf->host, aconf->port, aconf->className,
|
||||||
|
CheckEmpty(aconf->desc));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue