guacamole-spice-protocol/src/protocols/rdp/rdp_settings.h

212 lines
4.7 KiB
C
Raw Normal View History

/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is libguac-client-rdp.
*
* The Initial Developer of the Original Code is
* Michael Jumper.
* Portions created by the Initial Developer are Copyright (C) 2011
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef __GUAC_RDP_SETTINGS_H
#define __GUAC_RDP_SETTINGS_H
#include <freerdp/freerdp.h>
#include <guacamole/client.h>
2013-07-18 23:20:40 +00:00
#include "rdp_keymap.h"
/**
* The default RDP port.
*/
#define RDP_DEFAULT_PORT 3389
/**
* Default screen width, in pixels.
*/
#define RDP_DEFAULT_WIDTH 1024
/**
* Default screen height, in pixels.
*/
#define RDP_DEFAULT_HEIGHT 768
/**
* Default color depth, in bits.
*/
#define RDP_DEFAULT_DEPTH 16
/**
* All supported combinations of security types.
*/
typedef enum guac_rdp_security {
/**
* Standard RDP encryption.
*/
GUAC_SECURITY_RDP,
/**
* TLS encryption.
*/
GUAC_SECURITY_TLS,
/**
* Network level authentication.
*/
GUAC_SECURITY_NLA,
/**
* Any method supported by the server.
*/
GUAC_SECURITY_ANY
} guac_rdp_security;
/**
* All settings supported by the Guacamole RDP client.
*/
typedef struct guac_rdp_settings {
/**
* The hostname to connect to.
*/
char* hostname;
/**
* The port to connect to.
*/
int port;
/**
* The domain of the user logging in.
*/
char* domain;
/**
* The username of the user logging in.
*/
char* username;
/**
* The password of the user logging in.
*/
char* password;
/**
* The color depth of the display to request, in bits.
*/
int color_depth;
/**
* The width of the display to request, in pixels.
*/
int width;
/**
* The height of the display to request, in pixels.
*/
int height;
/**
* Whether audio is enabled.
*/
int audio_enabled;
/**
* Whether printing is enabled.
*/
int printing_enabled;
2013-07-25 19:05:15 +00:00
/**
* Whether the virtual drive is enabled.
*/
int drive_enabled;
2013-07-29 18:53:15 +00:00
/**
* The local system path which will be used to persist the
* virtual drive.
*/
char* drive_path;
/**
* Whether this session is a console session.
*/
int console;
/**
* Whether to allow audio in the console session.
*/
int console_audio;
/**
* The keymap chosen as the layout of the server.
*/
const guac_rdp_keymap* server_layout;
/**
* The initial program to run, if any.
*/
char* initial_program;
/**
* The type of security to use for the connection.
*/
guac_rdp_security security_mode;
/**
* Whether bad server certificates should be ignored.
*/
int ignore_certificate;
/**
* Whether authentication should be disabled. This is different from the
* authentication that takes place when a user provides their username
* and password. Authentication is required by definition for NLA.
*/
int disable_authentication;
} guac_rdp_settings;
/**
* Save all given settings to the given freerdp instance.
*/
void guac_rdp_push_settings(guac_rdp_settings* guac_settings, freerdp* rdp);
/**
* Pull all settings from the given freerdp instance into the client
* stored settings.
*/
void guac_rdp_pull_settings(freerdp* rdp, guac_rdp_settings* guac_settings);
#endif