Skip to content

Commit

Permalink
"status" management interface command (version >= 2) will now
Browse files Browse the repository at this point in the history
include the username for each connected user.  This should
generally be backward compatible with existing management
interface clients since the new username field is added
to the CLIENT_LIST header as well.

git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@7539 e7ae566f-a301-0410-adde-c780ea21d3b5

Conflicts:
	multi.c - hash_iterator_init() takes only 2 arguments now.

Signed-off-by: David Sommerseth <[email protected]>
jamesyonan authored and David Sommerseth committed Aug 24, 2011
1 parent 2627335 commit ca18a63
Showing 3 changed files with 20 additions and 4 deletions.
9 changes: 5 additions & 4 deletions multi.c
Original file line number Diff line number Diff line change
@@ -782,8 +782,8 @@ multi_print_status (struct multi_context *m, struct status_output *so, const int
*/
status_printf (so, "TITLE%c%s", sep, title_string);
status_printf (so, "TIME%c%s%c%u", sep, time_string (now, 0, false, &gc_top), sep, (unsigned int)now);
status_printf (so, "HEADER%cCLIENT_LIST%cCommon Name%cReal Address%cVirtual Address%cBytes Received%cBytes Sent%cConnected Since%cConnected Since (time_t)",
sep, sep, sep, sep, sep, sep, sep, sep);
status_printf (so, "HEADER%cCLIENT_LIST%cCommon Name%cReal Address%cVirtual Address%cBytes Received%cBytes Sent%cConnected Since%cConnected Since (time_t)%cUsername",
sep, sep, sep, sep, sep, sep, sep, sep, sep);
hash_iterator_init (m->hash, &hi);
while ((he = hash_iterator_next (&hi)))
{
@@ -792,14 +792,15 @@ multi_print_status (struct multi_context *m, struct status_output *so, const int

if (!mi->halt)
{
status_printf (so, "CLIENT_LIST%c%s%c%s%c%s%c" counter_format "%c" counter_format "%c%s%c%u",
status_printf (so, "CLIENT_LIST%c%s%c%s%c%s%c" counter_format "%c" counter_format "%c%s%c%u%c%s",
sep, tls_common_name (mi->context.c2.tls_multi, false),
sep, mroute_addr_print (&mi->real, &gc),
sep, print_in_addr_t (mi->reporting_addr, IA_EMPTY_IF_UNDEF, &gc),
sep, mi->context.c2.link_read_bytes,
sep, mi->context.c2.link_write_bytes,
sep, time_string (mi->created, 0, false, &gc),
sep, (unsigned int)mi->created);
sep, (unsigned int)mi->created,
sep, tls_username (mi->context.c2.tls_multi, false));
}
gc_free (&gc);
}
14 changes: 14 additions & 0 deletions ssl.c
Original file line number Diff line number Diff line change
@@ -1404,6 +1404,20 @@ tls_lock_username (struct tls_multi *multi, const char *username)
return true;
}

const char *
tls_username (const struct tls_multi *multi, const bool null)
{
const char *ret = NULL;
if (multi)
ret = multi->locked_username;
if (ret && strlen (ret))
return ret;
else if (null)
return NULL;
else
return "UNDEF";
}

#ifdef ENABLE_X509_TRACK

void
1 change: 1 addition & 0 deletions ssl.h
Original file line number Diff line number Diff line change
@@ -849,6 +849,7 @@ bool tls_rec_payload (struct tls_multi *multi,
struct buffer *buf);

const char *tls_common_name (const struct tls_multi* multi, const bool null);
const char *tls_username(const struct tls_multi *multi, const bool null);
void tls_set_common_name (struct tls_multi *multi, const char *common_name);
void tls_lock_common_name (struct tls_multi *multi);
void tls_lock_cert_hash_set (struct tls_multi *multi);

0 comments on commit ca18a63

Please sign in to comment.