mirror of
https://github.com/matrix-construct/construct
synced 2024-12-26 15:33:54 +01:00
ssld: provide version in stats S output
This commit is contained in:
parent
08e43ffb21
commit
e9ffc3c153
4 changed files with 26 additions and 6 deletions
|
@ -42,7 +42,7 @@ void start_zlib_session(void *data);
|
||||||
void send_new_ssl_certs(const char *ssl_cert, const char *ssl_private_key, const char *ssl_dh_params, const char *ssl_cipher_list);
|
void send_new_ssl_certs(const char *ssl_cert, const char *ssl_private_key, const char *ssl_dh_params, const char *ssl_cipher_list);
|
||||||
void ssld_decrement_clicount(ssl_ctl_t *ctl);
|
void ssld_decrement_clicount(ssl_ctl_t *ctl);
|
||||||
int get_ssld_count(void);
|
int get_ssld_count(void);
|
||||||
void ssld_foreach_info(void (*func)(void *data, pid_t pid, int cli_count, enum ssld_status status), void *data);
|
void ssld_foreach_info(void (*func)(void *data, pid_t pid, int cli_count, enum ssld_status status, const char *version), void *data);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,7 @@ struct _ssl_ctl
|
||||||
rb_dlink_list writeq;
|
rb_dlink_list writeq;
|
||||||
uint8_t shutdown;
|
uint8_t shutdown;
|
||||||
uint8_t dead;
|
uint8_t dead;
|
||||||
|
char version[256];
|
||||||
};
|
};
|
||||||
|
|
||||||
static void send_new_ssl_certs_one(ssl_ctl_t * ctl, const char *ssl_cert,
|
static void send_new_ssl_certs_one(ssl_ctl_t * ctl, const char *ssl_cert,
|
||||||
|
@ -479,8 +480,11 @@ ssl_process_cmd_recv(ssl_ctl_t * ctl)
|
||||||
static const char *no_ssl_or_zlib = "ssld has neither SSL/TLS or zlib support killing all sslds";
|
static const char *no_ssl_or_zlib = "ssld has neither SSL/TLS or zlib support killing all sslds";
|
||||||
rb_dlink_node *ptr, *next;
|
rb_dlink_node *ptr, *next;
|
||||||
ssl_ctl_buf_t *ctl_buf;
|
ssl_ctl_buf_t *ctl_buf;
|
||||||
|
int len;
|
||||||
|
|
||||||
if(ctl->dead)
|
if(ctl->dead)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
RB_DLINK_FOREACH_SAFE(ptr, next, ctl->readq.head)
|
RB_DLINK_FOREACH_SAFE(ptr, next, ctl->readq.head)
|
||||||
{
|
{
|
||||||
ctl_buf = ptr->data;
|
ctl_buf = ptr->data;
|
||||||
|
@ -513,6 +517,11 @@ ssl_process_cmd_recv(ssl_ctl_t * ctl)
|
||||||
sendto_realops_snomask(SNO_GENERAL, L_ALL, "%s", no_ssl_or_zlib);
|
sendto_realops_snomask(SNO_GENERAL, L_ALL, "%s", no_ssl_or_zlib);
|
||||||
ssl_killall();
|
ssl_killall();
|
||||||
break;
|
break;
|
||||||
|
case 'V':
|
||||||
|
len = ctl_buf->buflen - 1;
|
||||||
|
if (len > sizeof(ctl->version) - 1)
|
||||||
|
len = sizeof(ctl->version) - 1;
|
||||||
|
strncpy(ctl->version, &ctl_buf->buf[1], len);
|
||||||
case 'z':
|
case 'z':
|
||||||
zlib_ok = 0;
|
zlib_ok = 0;
|
||||||
break;
|
break;
|
||||||
|
@ -938,7 +947,7 @@ get_ssld_count(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ssld_foreach_info(void (*func)(void *data, pid_t pid, int cli_count, enum ssld_status status), void *data)
|
ssld_foreach_info(void (*func)(void *data, pid_t pid, int cli_count, enum ssld_status status, const char *version), void *data)
|
||||||
{
|
{
|
||||||
rb_dlink_node *ptr, *next;
|
rb_dlink_node *ptr, *next;
|
||||||
ssl_ctl_t *ctl;
|
ssl_ctl_t *ctl;
|
||||||
|
@ -947,7 +956,8 @@ ssld_foreach_info(void (*func)(void *data, pid_t pid, int cli_count, enum ssld_s
|
||||||
ctl = ptr->data;
|
ctl = ptr->data;
|
||||||
func(data, ctl->pid, ctl->cli_count,
|
func(data, ctl->pid, ctl->cli_count,
|
||||||
ctl->dead ? SSLD_DEAD :
|
ctl->dead ? SSLD_DEAD :
|
||||||
(ctl->shutdown ? SSLD_SHUTDOWN : SSLD_ACTIVE));
|
(ctl->shutdown ? SSLD_SHUTDOWN : SSLD_ACTIVE),
|
||||||
|
ctl->version);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -889,15 +889,16 @@ stats_resv(struct Client *source_p)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
stats_ssld_foreach(void *data, pid_t pid, int cli_count, enum ssld_status status)
|
stats_ssld_foreach(void *data, pid_t pid, int cli_count, enum ssld_status status, const char *version)
|
||||||
{
|
{
|
||||||
struct Client *source_p = data;
|
struct Client *source_p = data;
|
||||||
|
|
||||||
sendto_one_numeric(source_p, RPL_STATSDEBUG,
|
sendto_one_numeric(source_p, RPL_STATSDEBUG,
|
||||||
"S :%u %c %u",
|
"S :%u %c %u :%s",
|
||||||
pid,
|
pid,
|
||||||
status == SSLD_DEAD ? 'D' : (status == SSLD_SHUTDOWN ? 'S' : 'A'),
|
status == SSLD_DEAD ? 'D' : (status == SSLD_SHUTDOWN ? 'S' : 'A'),
|
||||||
cli_count);
|
cli_count,
|
||||||
|
version);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -973,6 +973,14 @@ send_i_am_useless(mod_ctl_t * ctl)
|
||||||
mod_cmd_write_queue(ctl, useless, strlen(useless));
|
mod_cmd_write_queue(ctl, useless, strlen(useless));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
send_version(mod_ctl_t * ctl)
|
||||||
|
{
|
||||||
|
char version[256] = { 'V', 0 };
|
||||||
|
strncpy(&version[1], rb_lib_version(), sizeof(version) - 2);
|
||||||
|
mod_cmd_write_queue(ctl, version, strlen(version));
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
send_nozlib_support(mod_ctl_t * ctl, mod_ctl_buf_t * ctlb)
|
send_nozlib_support(mod_ctl_t * ctl, mod_ctl_buf_t * ctlb)
|
||||||
{
|
{
|
||||||
|
@ -1242,6 +1250,7 @@ main(int argc, char **argv)
|
||||||
rb_event_add("check_handshake_flood", check_handshake_flood, NULL, 10);
|
rb_event_add("check_handshake_flood", check_handshake_flood, NULL, 10);
|
||||||
read_pipe_ctl(mod_ctl->F_pipe, NULL);
|
read_pipe_ctl(mod_ctl->F_pipe, NULL);
|
||||||
mod_read_ctl(mod_ctl->F, mod_ctl);
|
mod_read_ctl(mod_ctl->F, mod_ctl);
|
||||||
|
send_version(mod_ctl);
|
||||||
if(!zlib_ok && !ssl_ok)
|
if(!zlib_ok && !ssl_ok)
|
||||||
{
|
{
|
||||||
/* this is really useless... */
|
/* this is really useless... */
|
||||||
|
|
Loading…
Reference in a new issue