mirror of https://github.com/neutrinolabs/xrdp
harvest and pass on hostname and keylayout of client
This commit is contained in:
parent
9d2ce459da
commit
5e69f15cd7
|
@ -41,6 +41,9 @@ struct xrdp_client_info
|
|||
int op2; /* use smaller bitmap header in bitmap cache */
|
||||
int desktop_cache;
|
||||
int use_compact_packets; /* rdp5 smaller packets */
|
||||
char hostname[32];
|
||||
int build;
|
||||
int keylayout;
|
||||
};
|
||||
|
||||
struct xrdp_brush
|
||||
|
|
|
@ -576,6 +576,44 @@ xrdp_sec_out_mcs_data(struct xrdp_sec* self)
|
|||
s_mark_end(p);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/* process the mcs client data we received from the mcs layer */
|
||||
static void APP_CC
|
||||
xrdp_sec_in_mcs_data(struct xrdp_sec* self)
|
||||
{
|
||||
struct stream* s;
|
||||
struct xrdp_client_info* client_info;
|
||||
int index;
|
||||
char c;
|
||||
|
||||
client_info = &self->rdp_layer->client_info;
|
||||
s = &self->client_mcs_data;
|
||||
/* get hostname, its unicode */
|
||||
s->p = s->data;
|
||||
in_uint8s(s, 47);
|
||||
g_memset(client_info->hostname, 0, 32);
|
||||
c = 1;
|
||||
index = 0;
|
||||
while (index < 16 && c != 0)
|
||||
{
|
||||
in_uint8(s, c);
|
||||
in_uint8s(s, 1);
|
||||
client_info->hostname[index] = c;
|
||||
index++;
|
||||
}
|
||||
/* get build */
|
||||
s->p = s->data;
|
||||
in_uint8s(s, 43);
|
||||
in_uint32_le(s, client_info->build);
|
||||
/* get keylayout */
|
||||
s->p = s->data;
|
||||
in_uint8s(s, 39);
|
||||
in_uint32_le(s, client_info->keylayout);
|
||||
// g_printf("%s %d %x\n", client_info->hostname, client_info->build,
|
||||
// client_info->keylayout);
|
||||
s->p = s->data;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
int APP_CC
|
||||
xrdp_sec_incoming(struct xrdp_sec* self)
|
||||
|
@ -595,6 +633,7 @@ xrdp_sec_incoming(struct xrdp_sec* self)
|
|||
self->server_mcs_data.end - self->server_mcs_data.data);
|
||||
#endif
|
||||
DEBUG(("out xrdp_sec_incoming\n\r"));
|
||||
xrdp_sec_in_mcs_data(self);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -273,6 +273,7 @@ xrdp_wm_ok_clicked(struct xrdp_bitmap* wnd)
|
|||
struct list* values;
|
||||
struct xrdp_mod_data* mod_data;
|
||||
int i;
|
||||
char text[256];
|
||||
|
||||
wm = wnd->wm;
|
||||
combo = xrdp_bitmap_get_child_by_id(wnd, 6);
|
||||
|
@ -327,6 +328,12 @@ xrdp_wm_ok_clicked(struct xrdp_bitmap* wnd)
|
|||
(char*)list_get_item(names, i),
|
||||
(char*)list_get_item(values, i));
|
||||
}
|
||||
/* always set these */
|
||||
wm->mod->mod_set_param(wm->mod, "hostname",
|
||||
wm->session->client_info->hostname);
|
||||
g_sprintf(text, "%d", wm->session->client_info->keylayout);
|
||||
wm->mod->mod_set_param(wm->mod, "keylayout", text);
|
||||
/* connect */
|
||||
if (wm->mod->mod_connect(wm->mod) != 0)
|
||||
{
|
||||
/* totaly free mod */
|
||||
|
|
Loading…
Reference in New Issue