Actual calls to freerdp functions
This commit is contained in:
parent
fb953b0892
commit
ff6d6fc404
@ -46,6 +46,7 @@ AC_PROG_LIBTOOL
|
|||||||
AC_CHECK_LIB([guac], [guac_get_client],, AC_MSG_ERROR("libguac is required for communication via the guacamole protocol"))
|
AC_CHECK_LIB([guac], [guac_get_client],, AC_MSG_ERROR("libguac is required for communication via the guacamole protocol"))
|
||||||
AC_CHECK_LIB([png], [png_write_png],, AC_MSG_ERROR("libpng is required for writing png messages"))
|
AC_CHECK_LIB([png], [png_write_png],, AC_MSG_ERROR("libpng is required for writing png messages"))
|
||||||
AC_CHECK_LIB([freerdp], [freerdp_new],, AC_MSG_ERROR("libfreerdp is required"))
|
AC_CHECK_LIB([freerdp], [freerdp_new],, AC_MSG_ERROR("libfreerdp is required"))
|
||||||
|
AC_CHECK_LIB([freerdpchanman], [freerdp_chanman_new],, AC_MSG_ERROR("libfreerdp is required"))
|
||||||
|
|
||||||
# Checks for header files.
|
# Checks for header files.
|
||||||
AC_CHECK_HEADERS([guacamole/client.h guacamole/guacio.h guacamole/protocol.h])
|
AC_CHECK_HEADERS([guacamole/client.h guacamole/guacio.h guacamole/protocol.h])
|
||||||
|
@ -35,12 +35,19 @@
|
|||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <freerdp/freerdp.h>
|
||||||
|
#include <freerdp/chanman.h>
|
||||||
|
|
||||||
#include <guacamole/log.h>
|
#include <guacamole/log.h>
|
||||||
#include <guacamole/guacio.h>
|
#include <guacamole/guacio.h>
|
||||||
#include <guacamole/protocol.h>
|
#include <guacamole/protocol.h>
|
||||||
#include <guacamole/client.h>
|
#include <guacamole/client.h>
|
||||||
|
|
||||||
|
#define RDP_DEFAULT_PORT 3389
|
||||||
|
|
||||||
/* Client plugin arguments */
|
/* Client plugin arguments */
|
||||||
const char* GUAC_CLIENT_ARGS[] = {
|
const char* GUAC_CLIENT_ARGS[] = {
|
||||||
"hostname",
|
"hostname",
|
||||||
@ -50,10 +57,77 @@ const char* GUAC_CLIENT_ARGS[] = {
|
|||||||
|
|
||||||
int guac_client_init(guac_client* client, int argc, char** argv) {
|
int guac_client_init(guac_client* client, int argc, char** argv) {
|
||||||
|
|
||||||
|
rdpInst* rdp_inst;
|
||||||
|
rdpChanMan* chanman;
|
||||||
|
rdpSet* settings;
|
||||||
|
|
||||||
|
char* hostname;
|
||||||
|
int port = RDP_DEFAULT_PORT;
|
||||||
|
|
||||||
|
if (argc < 2) {
|
||||||
|
guac_send_error(client->io, "Wrong argument count received.");
|
||||||
|
guac_flush(client->io);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If port specified, use it */
|
||||||
|
if (argv[1][0] != '\0')
|
||||||
|
port = atoi(argv[1]);
|
||||||
|
|
||||||
|
hostname = argv[0];
|
||||||
|
|
||||||
|
/* Get channel manager */
|
||||||
|
chanman = freerdp_chanman_new();
|
||||||
|
|
||||||
|
/* INIT SETTINGS */
|
||||||
|
settings = malloc(sizeof(rdpSet));
|
||||||
|
memset(settings, 0, sizeof(rdpSet));
|
||||||
|
|
||||||
|
/* Set hostname */
|
||||||
|
strncpy(settings->hostname, hostname, sizeof(settings->hostname) - 1);
|
||||||
|
|
||||||
|
/* Default size */
|
||||||
|
settings->width = 1024;
|
||||||
|
settings->height = 768;
|
||||||
|
|
||||||
|
strncpy(settings->server, hostname, sizeof(settings->server));
|
||||||
|
strcpy(settings->username, "guest");
|
||||||
|
|
||||||
|
settings->tcp_port_rdp = port;
|
||||||
|
settings->encryption = 1;
|
||||||
|
settings->server_depth = 16;
|
||||||
|
settings->bitmap_cache = 1;
|
||||||
|
settings->bitmap_compression = 1;
|
||||||
|
settings->desktop_save = 0;
|
||||||
|
settings->rdp5_performanceflags =
|
||||||
|
RDP5_NO_WALLPAPER | RDP5_NO_FULLWINDOWDRAG | RDP5_NO_MENUANIMATIONS;
|
||||||
|
settings->off_screen_bitmaps = 1;
|
||||||
|
settings->triblt = 0;
|
||||||
|
settings->new_cursors = 1;
|
||||||
|
settings->rdp_version = 5;
|
||||||
|
|
||||||
|
/* Init chanman here? */
|
||||||
|
|
||||||
|
/* Init client */
|
||||||
|
rdp_inst = freerdp_new(settings);
|
||||||
|
if (rdp_inst == NULL) {
|
||||||
|
guac_send_error(client->io, "Error initializing RDP client");
|
||||||
|
guac_flush(client->io);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* freerdp_chanman_pre_connect ? */
|
||||||
|
/* rdp_inst->rdp_connect(rdp_inst) */
|
||||||
|
/* rdp_inst->rdp_disconnect(rdp_inst) */
|
||||||
|
/* freerdp_chanman_post_connect ? */
|
||||||
|
|
||||||
|
freerdp_free(rdp_inst);
|
||||||
|
freerdp_chanman_free(chanman);
|
||||||
|
free(settings);
|
||||||
|
|
||||||
/* STUB */
|
/* STUB */
|
||||||
guac_send_error(client->io, "STUB");
|
guac_send_error(client->io, "STUB");
|
||||||
|
return 1;
|
||||||
return -1;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user