Add Serialized SSH Administrative Console

This commit is contained in:
2026-08-30 18:07:02 +02:00
parent 44e3962444
commit 0a1bbd6782
17 changed files with 1115 additions and 79 deletions
+26 -12
View File
@@ -50,6 +50,15 @@ static const char *auth_method_name(user_auth_method_t method)
: method == USER_AUTH_METHOD_SSH_PUBLIC_KEY ? "public-key" : "unknown";
}
static const char *route_name(ssh_transport_session_route_t route)
{
return route == SSH_TRANSPORT_ROUTE_BROKER
? "broker"
: route == SSH_TRANSPORT_ROUTE_ADMIN_CONSOLE
? "admin-console"
: "none";
}
static int print_sessions(const ssh_transport_snapshot_t *snapshot)
{
printf("SSH sessions: active=%" PRIu32 "/%u\n",
@@ -60,21 +69,22 @@ static int print_sessions(const ssh_transport_snapshot_t *snapshot)
continue;
}
printf(" id=%" PRIu32 " slot=%u peer=%s state=%s auth=%s account=%s"
" user-role=%s method=%s broker=%" PRIu32
" broker-role=%s rx-pending=%s tx-pending=%s closing=%s\n",
" user-role=%s method=%s route=%s broker=%" PRIu32
" broker-role=%s admin-command=%s admin-output=%" PRIu32
" rx-pending=%s tx-pending=%s closing=%s\n",
session->session_id, (unsigned int)index, session->peer,
state_name(session->state), session->authenticated ? "yes" : "no",
session->principal_valid ? session->username : "-",
session->principal_valid
? user_role_to_string(session->user_role)
: "-",
session->principal_valid
? auth_method_name(session->auth_method)
: "-",
session->broker_client_id,
session->broker_client_id == SESSION_BROKER_NO_CLIENT
? "unattached"
: (session->writer ? "writer" : "observer"),
session->principal_valid ? user_role_to_string(session->user_role) : "-",
session->principal_valid ? auth_method_name(session->auth_method) : "-",
route_name(session->route), session->broker_client_id,
session->route == SSH_TRANSPORT_ROUTE_ADMIN_CONSOLE
? "n/a"
: (session->broker_client_id == SESSION_BROKER_NO_CLIENT
? "unattached"
: (session->writer ? "writer" : "observer")),
session->admin_command_pending ? "running" : "idle",
session->admin_output_pending,
session->rx_pending ? "yes" : "no",
session->tx_pending ? "yes" : "no",
session->close_requested ? "yes" : "no");
@@ -135,6 +145,10 @@ static int show_counters(void)
counter->disconnections, counter->writer_requests,
counter->writer_grants, counter->writer_denials,
counter->writer_revocations);
printf("Admin console: admissions=%" PRIu64 " admission-failures=%" PRIu64
" input-backpressure=%" PRIu64 "\n",
counter->admin_console_admissions, counter->admin_console_admission_failures,
counter->admin_console_input_rejections);
printf("Stream: rx=%" PRIu64 " accepted=%" PRIu64
" rejected=%" PRIu64 " tx=%" PRIu64
" io-failures=%" PRIu64 " session-revocations=%" PRIu64 "\n",