5
#include "rdp-server.h"
8
static void rdp_server_class_init (RdpServerClass *klass);
9
static void rdp_server_init (RdpServer *self);
10
static void rdp_server_dispose (GObject *object);
11
static void rdp_server_finalize (GObject *object);
12
static GVariant * get_properties (Server * server);
14
G_DEFINE_TYPE (RdpServer, rdp_server, SERVER_TYPE);
17
rdp_server_class_init (RdpServerClass *klass)
19
GObjectClass *object_class = G_OBJECT_CLASS (klass);
21
object_class->dispose = rdp_server_dispose;
22
object_class->finalize = rdp_server_finalize;
24
ServerClass * server_class = SERVER_CLASS(klass);
26
server_class->get_properties = get_properties;
32
rdp_server_init (RdpServer *self)
39
rdp_server_dispose (GObject *object)
42
G_OBJECT_CLASS (rdp_server_parent_class)->dispose (object);
47
rdp_server_finalize (GObject *object)
50
G_OBJECT_CLASS (rdp_server_parent_class)->finalize (object);
55
get_properties (Server * server)
57
GVariantBuilder propbuilder;
58
g_variant_builder_init(&propbuilder, G_VARIANT_TYPE_ARRAY);
60
GVariantBuilder namebuilder;
61
g_variant_builder_init(&namebuilder, G_VARIANT_TYPE_TUPLE);
62
g_variant_builder_add_value(&namebuilder, g_variant_new_string("username"));
63
g_variant_builder_add_value(&namebuilder, g_variant_new_boolean(TRUE));
64
g_variant_builder_add_value(&namebuilder, g_variant_new_variant(g_variant_new_string("")));
65
g_variant_builder_add_value(&namebuilder, g_variant_new((const gchar *)G_VARIANT_TYPE_VARDICT));
66
g_variant_builder_add_value(&propbuilder, g_variant_builder_end(&namebuilder));
68
GVariantBuilder passbuilder;
69
g_variant_builder_init(&passbuilder, G_VARIANT_TYPE_TUPLE);
70
g_variant_builder_add_value(&passbuilder, g_variant_new_string("password"));
71
g_variant_builder_add_value(&passbuilder, g_variant_new_boolean(TRUE));
72
g_variant_builder_add_value(&passbuilder, g_variant_new_variant(g_variant_new_string("")));
73
g_variant_builder_add_value(&passbuilder, g_variant_new((const gchar *)G_VARIANT_TYPE_VARDICT));
74
g_variant_builder_add_value(&propbuilder, g_variant_builder_end(&passbuilder));
76
GVariantBuilder domainbuilder;
77
g_variant_builder_init(&domainbuilder, G_VARIANT_TYPE_TUPLE);
78
g_variant_builder_add_value(&domainbuilder, g_variant_new_string("domain"));
79
g_variant_builder_add_value(&domainbuilder, g_variant_new_boolean(TRUE));
80
g_variant_builder_add_value(&domainbuilder, g_variant_new_variant(g_variant_new_string("")));
81
g_variant_builder_add_value(&domainbuilder, g_variant_new((const gchar *)G_VARIANT_TYPE_VARDICT));
82
g_variant_builder_add_value(&propbuilder, g_variant_builder_end(&domainbuilder));
84
return g_variant_builder_end(&propbuilder);
88
rdp_server_new_from_keyfile (GKeyFile * keyfile, const gchar * name)
90
g_return_val_if_fail(keyfile != NULL, NULL); /* NOTE: No way to check if that's really a keyfile :-( */
91
g_return_val_if_fail(name != NULL, NULL);
93
gchar * groupname = g_strdup_printf("%s %s", CONFIG_RDP_PREFIX, name);
95
if (!g_key_file_has_group(keyfile, groupname)) {
96
g_warning("Server '%s' specified but group '%s' was not found", name, groupname);
101
RdpServer * server = g_object_new(RDP_SERVER_TYPE, NULL);
103
if (g_key_file_has_key(keyfile, groupname, "Name", NULL)) {
104
server->parent.name = g_key_file_get_string(keyfile, groupname, CONFIG_SERVER_NAME, NULL);
107
if (g_key_file_has_key(keyfile, groupname, "URI", NULL)) {
108
server->parent.uri = g_key_file_get_string(keyfile, groupname, CONFIG_SERVER_URI, NULL);
112
return SERVER(server);
115
/* Build the RDP server from information in the JSON object */
117
rdp_server_new_from_json (JsonObject * object)
119
RdpServer * server = g_object_new(RDP_SERVER_TYPE, NULL);
121
if (json_object_has_member(object, JSON_SERVER_NAME)) {
122
JsonNode * node = json_object_get_member(object, JSON_SERVER_NAME);
123
if (JSON_NODE_TYPE(node) == JSON_NODE_VALUE && json_node_get_value_type(node) == G_TYPE_STRING) {
124
const gchar * name = json_node_get_string(node);
125
server->parent.name = g_strdup(name);
129
if (json_object_has_member(object, JSON_URI)) {
130
JsonNode * node = json_object_get_member(object, JSON_URI);
131
if (JSON_NODE_TYPE(node) == JSON_NODE_VALUE && json_node_get_value_type(node) == G_TYPE_STRING) {
132
const gchar * uri = json_node_get_string(node);
133
server->parent.uri = g_strdup(uri);
137
return SERVER(server);