diff options
-rw-r--r-- | include/libssh/priv.h | 1 | ||||
-rw-r--r-- | include/libssh/server.h | 4 | ||||
-rw-r--r-- | libssh/options.c | 27 | ||||
-rw-r--r-- | libssh/server.c | 12 |
4 files changed, 36 insertions, 8 deletions
diff --git a/include/libssh/priv.h b/include/libssh/priv.h index ec53b5f..764b022 100644 --- a/include/libssh/priv.h +++ b/include/libssh/priv.h @@ -107,6 +107,7 @@ struct ssh_bind_struct { char *bindaddr; socket_t bindfd; unsigned int bindport; + unsigned int log_verbosity; int blocking; int toaccept; diff --git a/include/libssh/server.h b/include/libssh/server.h index db7d402..c9cf634 100644 --- a/include/libssh/server.h +++ b/include/libssh/server.h @@ -43,7 +43,9 @@ enum ssh_bind_options_e { SSH_BIND_OPTIONS_HOSTKEY, SSH_BIND_OPTIONS_DSAKEY, SSH_BIND_OPTIONS_RSAKEY, - SSH_BIND_OPTIONS_BANNER + SSH_BIND_OPTIONS_BANNER, + SSH_BIND_OPTIONS_LOG_VERBOSITY, + SSH_BIND_OPTIONS_LOG_VERBOSITY_STR }; //typedef struct ssh_bind_struct SSH_BIND; diff --git a/libssh/options.c b/libssh/options.c index 31a5232..0cc5be7 100644 --- a/libssh/options.c +++ b/libssh/options.c @@ -677,6 +677,33 @@ int ssh_bind_options_set(ssh_bind sshbind, enum ssh_bind_options_e type, sshbind->bindport = i & 0xffff; } break; + case SSH_BIND_OPTIONS_LOG_VERBOSITY: + if (value == NULL) { + ssh_set_error_invalid(sshbind, __FUNCTION__); + return -1; + } else { + int *x = (int *) value; + sshbind->log_verbosity = *x & 0xffff; + } + break; + case SSH_BIND_OPTIONS_LOG_VERBOSITY_STR: + if (value == NULL) { + sshbind->log_verbosity = 0; + } else { + q = strdup(value); + if (q == NULL) { + ssh_set_error_oom(sshbind); + return -1; + } + i = strtol(q, &p, 10); + if (q == p) { + SAFE_FREE(q); + } + SAFE_FREE(q); + + sshbind->log_verbosity = i & 0xffff; + } + break; case SSH_BIND_OPTIONS_DSAKEY: if (value == NULL) { ssh_set_error_invalid(sshbind, __FUNCTION__); diff --git a/libssh/server.c b/libssh/server.c index c992d9a..c4ecff5 100644 --- a/libssh/server.c +++ b/libssh/server.c @@ -131,6 +131,8 @@ ssh_bind ssh_bind_new(void) { ZERO_STRUCTP(ptr); ptr->bindfd = -1; ptr->bindport= 22; + ptr->log_verbosity = 0; + return ptr; } @@ -229,10 +231,6 @@ int ssh_bind_accept(ssh_bind sshbind, ssh_session session) { session->server = 1; session->version = 2; - /* TODO: is wanted methods enough? */ -#if 0 - session->options = ssh_options_copy(sshbind->options); -#endif /* copy options */ for (i = 0; i < 10; ++i) { if (sshbind->wanted_methods[i]) { @@ -255,9 +253,9 @@ int ssh_bind_accept(ssh_bind sshbind, ssh_session session) { return SSH_ERROR; } } -/* TODO FIXME this doesn't work - session->log_verbosity = session->options->log_verbosity; -*/ + + session->log_verbosity = sshbind->log_verbosity; + ssh_socket_free(session->socket); session->socket = ssh_socket_new(session); if (session->socket == NULL) { |