Commit 4478aa76 authored by Gerd Hoffmann's avatar Gerd Hoffmann
Browse files

monitor: add vnc websockets



Add websockets bool to VncBasicInfo, report websocket server sockets,
flag websocket client connections.

Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
parent df887684
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -672,12 +672,15 @@
#
# @family: address family
#
# @websocket: true in case the socket is a websocket (since 2.3).
#
# Since: 2.1
##
{ 'type': 'VncBasicInfo',
  'data': { 'host': 'str',
            'service': 'str',
            'family': 'NetworkAddressFamily' } }
            'family': 'NetworkAddressFamily',
            'websocket': 'bool' } }

##
# @VncServerInfo
+12 −3
Original line number Diff line number Diff line
@@ -353,6 +353,9 @@ static VncClientInfo *qmp_query_vnc_client(const VncState *client)
    info->base->host = g_strdup(host);
    info->base->service = g_strdup(serv);
    info->base->family = inet_netfamily(sa.ss_family);
#ifdef CONFIG_VNC_WS
    info->base->websocket = client->websocket;
#endif

#ifdef CONFIG_VNC_TLS
    if (client->tls.session && client->tls.dname) {
@@ -457,6 +460,7 @@ out_error:
}

static VncBasicInfoList *qmp_query_server_entry(int socket,
                                                bool websocket,
                                                VncBasicInfoList *prev)
{
    VncBasicInfoList *list;
@@ -477,6 +481,7 @@ static VncBasicInfoList *qmp_query_server_entry(int socket,
    info->host = g_strdup(host);
    info->service = g_strdup(serv);
    info->family = inet_netfamily(sa.ss_family);
    info->websocket = websocket;

    list = g_new0(VncBasicInfoList, 1);
    list->value = info;
@@ -572,12 +577,13 @@ VncInfo2List *qmp_query_vnc_servers(Error **errp)
            info->display = g_strdup(dev->id);
        }
        if (vd->lsock != -1) {
            info->server = qmp_query_server_entry(vd->lsock,
            info->server = qmp_query_server_entry(vd->lsock, false,
                                                  info->server);
        }
#ifdef CONFIG_VNC_WS
        if (vd->lwebsock != -1) {
            /* TODO */
            info->server = qmp_query_server_entry(vd->lwebsock, true,
                                                  info->server);
        }
#endif

@@ -3305,10 +3311,13 @@ void vnc_display_open(const char *id, Error **errp)
{
    VncDisplay *vs = vnc_display_find(id);
    QemuOpts *opts = qemu_opts_find(&qemu_vnc_opts, id);
    const char *display, *websocket, *share, *device_id;
    const char *display, *share, *device_id;
    QemuConsole *con;
    int password = 0;
    int reverse = 0;
#ifdef CONFIG_VNC_WS
    const char *websocket;
#endif
#ifdef CONFIG_VNC_TLS
    int tls = 0, x509 = 0;
    const char *path;