GUACAMOLE-337: Limit public libguacd API to simply user handshake handling and SSL/TLS sockets.
This commit is contained in:
parent
7f3b985cc6
commit
6c484c1efd
@ -24,9 +24,11 @@ lib_LTLIBRARIES = libguacd.la
|
||||
libguacdincdir = $(includedir)/libguacd
|
||||
|
||||
libguacdinc_HEADERS = \
|
||||
libguacd/log.h \
|
||||
libguacd/user.h
|
||||
|
||||
noinst_HEADERS = \
|
||||
log.h
|
||||
|
||||
libguacd_la_SOURCES = \
|
||||
log.c \
|
||||
user.c
|
||||
|
@ -46,40 +46,6 @@
|
||||
*/
|
||||
#define GUACD_CLIENT_MAX_CONNECTIONS 65536
|
||||
|
||||
/**
|
||||
* Parameters required by the user input thread.
|
||||
*/
|
||||
typedef struct guacd_user_input_thread_params {
|
||||
|
||||
/**
|
||||
* The parser which will be used throughout the user's session.
|
||||
*/
|
||||
guac_parser* parser;
|
||||
|
||||
/**
|
||||
* A reference to the connected user.
|
||||
*/
|
||||
guac_user* user;
|
||||
|
||||
} guacd_user_input_thread_params;
|
||||
|
||||
/**
|
||||
* Starts the input/output threads of a new user. This function will block
|
||||
* until the user disconnects. If an error prevents the input/output threads
|
||||
* from starting, guac_user_stop() will be invoked on the given user.
|
||||
*
|
||||
* @param parser
|
||||
* The guac_parser to use to handle all input from the given user.
|
||||
*
|
||||
* @param user
|
||||
* The user whose associated I/O transfer threads should be started.
|
||||
*
|
||||
* @return
|
||||
* Zero if the I/O threads started successfully and user has disconnected,
|
||||
* or non-zero if the I/O threads could not be started.
|
||||
*/
|
||||
int guacd_user_start(guac_parser* parser, guac_user* user);
|
||||
|
||||
/**
|
||||
* Handles the initial handshake of a user and all subsequent I/O. This
|
||||
* function blocks until the user disconnects.
|
||||
@ -95,19 +61,5 @@ int guacd_user_start(guac_parser* parser, guac_user* user);
|
||||
*/
|
||||
int guacd_handle_user(guac_user* user);
|
||||
|
||||
/**
|
||||
* The thread which handles all user input, calling event handlers for received
|
||||
* instructions.
|
||||
*
|
||||
* @param data
|
||||
* A pointer to a guacd_user_input_thread_params structure describing the
|
||||
* user whose input is being handled and the guac_parser with which to
|
||||
* handle it.
|
||||
*
|
||||
* @return
|
||||
* Always NULL.
|
||||
*/
|
||||
void* guacd_user_input_thread(void* data);
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "libguacd/log.h"
|
||||
#include "log.h"
|
||||
|
||||
#include <guacamole/client.h>
|
||||
#include <guacamole/error.h>
|
||||
|
@ -19,8 +19,8 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "libguacd/log.h"
|
||||
#include "libguacd/user.h"
|
||||
#include "log.h"
|
||||
|
||||
#include <guacamole/client.h>
|
||||
#include <guacamole/error.h>
|
||||
@ -33,6 +33,23 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
/**
|
||||
* Parameters required by the user input thread.
|
||||
*/
|
||||
typedef struct guacd_user_input_thread_params {
|
||||
|
||||
/**
|
||||
* The parser which will be used throughout the user's session.
|
||||
*/
|
||||
guac_parser* parser;
|
||||
|
||||
/**
|
||||
* A reference to the connected user.
|
||||
*/
|
||||
guac_user* user;
|
||||
|
||||
} guacd_user_input_thread_params;
|
||||
|
||||
/**
|
||||
* Copies the given array of mimetypes (strings) into a newly-allocated NULL-
|
||||
* terminated array of strings. Both the array and the strings within the array
|
||||
@ -91,7 +108,19 @@ static void guacd_free_mimetypes(char** mimetypes) {
|
||||
|
||||
}
|
||||
|
||||
void* guacd_user_input_thread(void* data) {
|
||||
/**
|
||||
* The thread which handles all user input, calling event handlers for received
|
||||
* instructions.
|
||||
*
|
||||
* @param data
|
||||
* A pointer to a guacd_user_input_thread_params structure describing the
|
||||
* user whose input is being handled and the guac_parser with which to
|
||||
* handle it.
|
||||
*
|
||||
* @return
|
||||
* Always NULL.
|
||||
*/
|
||||
static void* guacd_user_input_thread(void* data) {
|
||||
|
||||
guacd_user_input_thread_params* params = (guacd_user_input_thread_params*) data;
|
||||
guac_user* user = params->user;
|
||||
@ -143,7 +172,22 @@ void* guacd_user_input_thread(void* data) {
|
||||
|
||||
}
|
||||
|
||||
int guacd_user_start(guac_parser* parser, guac_user* user) {
|
||||
/**
|
||||
* Starts the input/output threads of a new user. This function will block
|
||||
* until the user disconnects. If an error prevents the input/output threads
|
||||
* from starting, guac_user_stop() will be invoked on the given user.
|
||||
*
|
||||
* @param parser
|
||||
* The guac_parser to use to handle all input from the given user.
|
||||
*
|
||||
* @param user
|
||||
* The user whose associated I/O transfer threads should be started.
|
||||
*
|
||||
* @return
|
||||
* Zero if the I/O threads started successfully and user has disconnected,
|
||||
* or non-zero if the I/O threads could not be started.
|
||||
*/
|
||||
static int guacd_user_start(guac_parser* parser, guac_user* user) {
|
||||
|
||||
guacd_user_input_thread_params params = {
|
||||
.parser = parser,
|
||||
|
Loading…
Reference in New Issue
Block a user