Remmina - The GTK+ Remote Desktop Client  v1.4.33
Remmina is a remote desktop client written in GTK+, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large monitors or tiny netbooks. Remmina supports multiple network protocols in an integrated and consistent user interface. Currently RDP, VNC, NX, XDMCP and SSH are supported.
plugin.h
Go to the documentation of this file.
1 /*
2  * Remmina - The GTK+ Remote Desktop Client
3  * Copyright (C) 2010-2011 Vic Lee
4  * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo
5  * Copyright (C) 2016-2023 Antenore Gatta, Giovanni Panozzo
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor,
20  * Boston, MA 02110-1301, USA.
21  *
22  * In addition, as a special exception, the copyright holders give
23  * permission to link the code of portions of this program with the
24  * OpenSSL library under certain conditions as described in each
25  * individual source file, and distribute linked combinations
26  * including the two.
27  * You must obey the GNU General Public License in all respects
28  * for all of the code used other than OpenSSL. * If you modify
29  * file(s) with this exception, you may extend this exception to your
30  * version of the file(s), but you are not obligated to do so. * If you
31  * do not wish to do so, delete this exception statement from your
32  * version. * If you delete this exception statement from all source
33  * files in the program, then also delete it here.
34  *
35  */
36 
37 #pragma once
38 
39 #include <gtk/gtk.h>
40 #include <stdarg.h>
41 #include <remmina/types.h>
43 
44 G_BEGIN_DECLS
45 
46 typedef enum {
55 
56 typedef struct _RemminaPlugin {
58  const gchar * name;
59  const gchar * description;
60  const gchar * domain;
61  const gchar * version;
63 
65 typedef struct _RemminaProtocolPlugin {
67  const gchar * name;
68  const gchar * description;
69  const gchar * domain;
70  const gchar * version;
71 
72  const gchar * icon_name;
73  const gchar * icon_name_ssh;
78 
79  void (*init)(RemminaProtocolWidget *gp);
80  gboolean (*open_connection)(RemminaProtocolWidget *gp);
81  gboolean (*close_connection)(RemminaProtocolWidget *gp);
82  gboolean (*query_feature)(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature);
83  void (*call_feature)(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature);
84  void (*send_keystrokes)(RemminaProtocolWidget *gp, const guint keystrokes[], const gint keylen);
85  gboolean (*get_plugin_screenshot)(RemminaProtocolWidget *gp, RemminaPluginScreenshotData *rpsd);
86  gboolean (*map_event)(RemminaProtocolWidget *gp);
87  gboolean (*unmap_event)(RemminaProtocolWidget *gp);
89 
90 typedef struct _RemminaEntryPlugin {
92  const gchar * name;
93  const gchar * description;
94  const gchar * domain;
95  const gchar * version;
96 
97  void (*entry_func)(struct _RemminaEntryPlugin* instance);
99 
100 typedef struct _RemminaFilePlugin {
102  const gchar * name;
103  const gchar * description;
104  const gchar * domain;
105  const gchar * version;
106 
107  gboolean (*import_test_func)(struct _RemminaFilePlugin* instance, const gchar *from_file);
108  RemminaFile * (*import_func)(struct _RemminaFilePlugin* instance, const gchar * from_file);
109  gboolean (*export_test_func)(struct _RemminaFilePlugin* instance, RemminaFile *file);
110  gboolean (*export_func)(struct _RemminaFilePlugin* instance, RemminaFile *file, const gchar *to_file);
111  const gchar * export_hints;
113 
114 typedef struct _RemminaToolPlugin {
116  const gchar * name;
117  const gchar * description;
118  const gchar * domain;
119  const gchar * version;
120 
121  void (*exec_func)(GtkMenuItem* item, struct _RemminaToolPlugin* instance);
123 
124 typedef struct _RemminaPrefPlugin {
126  const gchar * name;
127  const gchar * description;
128  const gchar * domain;
129  const gchar * version;
130 
131  const gchar * pref_label;
132  GtkWidget * (*get_pref_body)(struct _RemminaPrefPlugin* instance);
134 
135 typedef struct _RemminaSecretPlugin {
137  const gchar * name;
138  const gchar * description;
139  const gchar * domain;
140  const gchar * version;
142 
143  gboolean (*init)(struct _RemminaSecretPlugin* instance);
144  gboolean (*is_service_available)(struct _RemminaSecretPlugin* instance);
145  void (*store_password)(struct _RemminaSecretPlugin* instance, RemminaFile *remminafile, const gchar *key, const gchar *password);
146  gchar * (*get_password)(struct _RemminaSecretPlugin* instance, RemminaFile * remminafile, const gchar *key);
147  void (*delete_password)(struct _RemminaSecretPlugin* instance, RemminaFile *remminafile, const gchar *key);
149 
152  const gchar * name;
153  const gchar * description;
154  const gchar * domain;
155  const gchar * version;
156  const gchar ** supported_extentions;
157 
158  gboolean (*init)(struct _RemminaLanguageWrapperPlugin* instance);
159  gboolean (*load)(struct _RemminaLanguageWrapperPlugin* instance, const gchar* plugin_file);
161 
162 /* Plugin Service is a struct containing a list of function pointers,
163  * which is passed from Remmina main program to the plugin module
164  * through the plugin entry function remmina_plugin_entry() */
165 typedef struct _RemminaPluginService {
166  gboolean (*register_plugin)(RemminaPlugin *plugin);
167 
168  gint (*protocol_plugin_get_width)(RemminaProtocolWidget *gp);
169  void (*protocol_plugin_set_width)(RemminaProtocolWidget *gp, gint width);
170  gint (*protocol_plugin_get_height)(RemminaProtocolWidget *gp);
171  void (*protocol_plugin_set_height)(RemminaProtocolWidget *gp, gint height);
173  gboolean (*protocol_plugin_get_expand)(RemminaProtocolWidget *gp);
174  void (*protocol_plugin_set_expand)(RemminaProtocolWidget *gp, gboolean expand);
175  gboolean (*protocol_plugin_has_error)(RemminaProtocolWidget *gp);
176  void (*protocol_plugin_set_error)(RemminaProtocolWidget *gp, const gchar *fmt, ...);
177  gboolean (*protocol_plugin_is_closed)(RemminaProtocolWidget *gp);
178  RemminaFile * (*protocol_plugin_get_file)(RemminaProtocolWidget * gp);
179  void (*protocol_plugin_emit_signal)(RemminaProtocolWidget *gp, const gchar *signal_name);
180  void (*protocol_plugin_register_hostkey)(RemminaProtocolWidget *gp, GtkWidget *widget);
181  gchar * (*protocol_plugin_start_direct_tunnel)(RemminaProtocolWidget * gp, gint default_port, gboolean port_plus);
182  gboolean (*protocol_plugin_start_reverse_tunnel)(RemminaProtocolWidget *gp, gint local_port);
183  gboolean (*protocol_plugin_start_xport_tunnel)(RemminaProtocolWidget *gp, RemminaXPortTunnelInitFunc init_func);
184  void (*protocol_plugin_set_display)(RemminaProtocolWidget *gp, gint display);
185  void (*protocol_plugin_signal_connection_closed)(RemminaProtocolWidget *gp);
186  void (*protocol_plugin_signal_connection_opened)(RemminaProtocolWidget *gp);
187  void (*protocol_plugin_update_align)(RemminaProtocolWidget *gp);
188  void (*protocol_plugin_lock_dynres)(RemminaProtocolWidget *gp);
189  void (*protocol_plugin_unlock_dynres)(RemminaProtocolWidget *gp);
190  void (*protocol_plugin_desktop_resize)(RemminaProtocolWidget *gp);
191  gint (*protocol_plugin_init_auth)(RemminaProtocolWidget *gp, RemminaMessagePanelFlags pflags, const gchar *title, const gchar *default_username, const gchar *default_password, const gchar *default_domain, const gchar *password_prompt);
192  gint (*protocol_plugin_init_certificate)(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *fingerprint);
193  gint (*protocol_plugin_changed_certificate)(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *new_fingerprint, const gchar *old_fingerprint);
194  gchar * (*protocol_plugin_init_get_username)(RemminaProtocolWidget * gp);
195  gchar * (*protocol_plugin_init_get_password)(RemminaProtocolWidget * gp);
196  gchar * (*protocol_plugin_init_get_domain)(RemminaProtocolWidget * gp);
197  gboolean (*protocol_plugin_init_get_savepassword)(RemminaProtocolWidget *gp);
198  gint (*protocol_plugin_init_authx509)(RemminaProtocolWidget *gp);
199  gchar * (*protocol_plugin_init_get_cacert)(RemminaProtocolWidget * gp);
200  gchar * (*protocol_plugin_init_get_cacrl)(RemminaProtocolWidget * gp);
201  gchar * (*protocol_plugin_init_get_clientcert)(RemminaProtocolWidget * gp);
202  gchar * (*protocol_plugin_init_get_clientkey)(RemminaProtocolWidget * gp);
203  void (*protocol_plugin_init_save_cred)(RemminaProtocolWidget *gp);
204  void (*protocol_plugin_init_show_listen)(RemminaProtocolWidget *gp, gint port);
205  void (*protocol_plugin_init_show_retry)(RemminaProtocolWidget *gp);
206  void (*protocol_plugin_init_show)(RemminaProtocolWidget *gp);
207  void (*protocol_plugin_init_hide)(RemminaProtocolWidget *gp);
208  gboolean (*protocol_plugin_ssh_exec)(RemminaProtocolWidget *gp, gboolean wait, const gchar *fmt, ...);
209  void (*protocol_plugin_chat_open)(RemminaProtocolWidget *gp, const gchar *name, void (*on_send)(RemminaProtocolWidget *gp, const gchar *text), void (*on_destroy)(RemminaProtocolWidget *gp));
210  void (*protocol_plugin_chat_close)(RemminaProtocolWidget *gp);
211  void (*protocol_plugin_chat_receive)(RemminaProtocolWidget *gp, const gchar *text);
212  void (*protocol_plugin_send_keys_signals)(GtkWidget *widget, const guint *keyvals, int length, GdkEventType action);
213 
214  gchar * (*file_get_user_datadir)(void);
215 
216  RemminaFile * (*file_new)(void);
217  const gchar * (*file_get_path)(RemminaFile * remminafile);
218  void (*file_set_string)(RemminaFile *remminafile, const gchar *setting, const gchar *value);
219  const gchar * (*file_get_string)(RemminaFile * remminafile, const gchar *setting);
220  gchar * (*file_get_secret)(RemminaFile * remminafile, const gchar *setting);
221  void (*file_set_int)(RemminaFile *remminafile, const gchar *setting, gint value);
222  gint (*file_get_int)(RemminaFile *remminafile, const gchar *setting, gint default_value);
223  gdouble (*file_get_double)(RemminaFile *remminafile, const gchar *setting, gdouble default_value);
224  void (*file_unsave_passwords)(RemminaFile *remminafile);
225 
226  void (*pref_set_value)(const gchar *key, const gchar *value);
227  gchar * (*pref_get_value)(const gchar * key);
228  gint (*pref_get_scale_quality)(void);
229  gint (*pref_get_sshtunnel_port)(void);
230  gint (*pref_get_ssh_loglevel)(void);
231  gboolean (*pref_get_ssh_parseconfig)(void);
232  guint *(*pref_keymap_get_table)(const gchar *keymap);
233  guint (*pref_keymap_get_keyval)(const gchar *keymap, guint keyval);
234 
235  void (*_remmina_info)(const gchar *fmt, ...);
236  void (*_remmina_message)(const gchar *fmt, ...);
237  void (*_remmina_debug)(const gchar *func, const gchar *fmt, ...);
238  void (*_remmina_warning)(const gchar *func, const gchar *fmt, ...);
239  void (*_remmina_audit)(const gchar *func, const gchar *fmt, ...);
240  void (*_remmina_error)(const gchar *func, const gchar *fmt, ...);
241  void (*_remmina_critical)(const gchar *func, const gchar *fmt, ...);
242  void (*log_print)(const gchar *text);
243  void (*log_printf)(const gchar *fmt, ...);
244 
245  void (*ui_register)(GtkWidget *widget);
246 
247  GtkWidget * (*open_connection)(RemminaFile * remminafile, GCallback disconnect_cb, gpointer data, guint *handler);
248  gint (*open_unix_sock)(const char *unixsock);
249  void (*get_server_port)(const gchar *server, gint defaultport, gchar **host, gint *port);
250  gboolean (*is_main_thread)(void);
251  gboolean (*gtksocket_available)(void);
252  gint (*get_profile_remote_width)(RemminaProtocolWidget *gp);
253  gint (*get_profile_remote_height)(RemminaProtocolWidget *gp);
254  const gchar*(*protocol_widget_get_name)(RemminaProtocolWidget *gp);
261  void (*protocol_widget_set_expand)(RemminaProtocolWidget *gp, gboolean expand);
262  void (*protocol_widget_set_error)(RemminaProtocolWidget *gp, const gchar *fmt, ...);
264  GtkWidget *(*protocol_widget_gtkviewport)(RemminaProtocolWidget *gp);
266  RemminaFile *(*protocol_widget_get_file)(RemminaProtocolWidget *gp);
267  gint (*protocol_widget_panel_auth)(RemminaProtocolWidget *gp, RemminaMessagePanelFlags pflags,
268  const gchar *title, const gchar *default_username, const gchar *default_password, const gchar *default_domain, const gchar *password_prompt);
270  gchar *(*protocol_widget_start_direct_tunnel)(RemminaProtocolWidget *gp, gint default_port, gboolean port_plus);
272  void (*protocol_widget_send_keys_signals)(GtkWidget *widget, const guint *keyvals, int keyvals_length, GdkEventType action);
273  void (*protocol_widget_chat_receive)(RemminaProtocolWidget *gp, const gchar *text);
276  void (*on_send)(RemminaProtocolWidget *gp, const gchar *text), void (*on_destroy)(RemminaProtocolWidget *gp));
277  gboolean (*protocol_widget_ssh_exec)(RemminaProtocolWidget *gp, gboolean wait, const gchar *fmt, ...);
287  gint (*protocol_widget_panel_new_certificate)(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *fingerprint);
288  gint (*protocol_widget_panel_changed_certificate)(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *new_fingerprint, const gchar *old_fingerprint);
289  gchar *(*protocol_widget_get_username)(RemminaProtocolWidget *gp);
290  gchar *(*protocol_widget_get_password)(RemminaProtocolWidget *gp);
291  gchar *(*protocol_widget_get_domain)(RemminaProtocolWidget *gp);
294  gchar *(*protocol_widget_get_cacert)(RemminaProtocolWidget *gp);
295  gchar *(*protocol_widget_get_cacrl)(RemminaProtocolWidget *gp);
296  gchar *(*protocol_widget_get_clientcert)(RemminaProtocolWidget *gp);
297  gchar *(*protocol_widget_get_clientkey)(RemminaProtocolWidget *gp);
300  void (*widget_pool_register)(GtkWidget *widget);
301  GtkWidget *(*rcw_open_from_file_full)(RemminaFile *remminafile, GCallback disconnect_cb, gpointer data, guint *handler);
302  void (*show_dialog)(GtkMessageType msg, GtkButtonsType buttons, const gchar* message);
303  GtkWindow *(*get_window)(void);
305 
306 /* "Prototype" of the plugin entry function */
307 typedef gboolean (*RemminaPluginEntryFunc) (RemminaPluginService *service);
308 
309 G_END_DECLS
RemminaPluginType type
Definition: plugin.h:136
static PyObject * protocol_widget_panel_show_retry(PyRemminaProtocolWidget *self, PyObject *args)
static PyObject * protocol_widget_start_reverse_tunnel(PyRemminaProtocolWidget *self, PyObject *var_local_port)
const gchar * version
Definition: plugin.h:119
const gchar * description
Definition: plugin.h:153
static PyObject * protocol_widget_chat_receive(PyRemminaProtocolWidget *self, PyObject *args)
RemminaPluginType type
Definition: plugin.h:125
static PyObject * protocol_widget_has_error(PyRemminaProtocolWidget *self, PyObject *args)
static PyObject * protocol_widget_get_savepassword(PyRemminaProtocolWidget *self, PyObject *args)
struct _RemminaPluginService RemminaPluginService
struct _RemminaPrefPlugin RemminaPrefPlugin
static PyObject * protocol_widget_set_height(PyRemminaProtocolWidget *self, PyObject *var_height)
static PyObject * protocol_widget_register_hostkey(PyRemminaProtocolWidget *self, PyObject *var_widget)
typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile
Definition: types.h:44
RemminaPluginType type
Definition: plugin.h:57
static PyObject * protocol_widget_ssh_exec(PyRemminaProtocolWidget *self, PyObject *args)
const gchar * export_hints
Definition: plugin.h:111
static PyObject * protocol_widget_panel_new_certificate(PyRemminaProtocolWidget *self, PyObject *args)
const gchar * version
Definition: plugin.h:95
static PyObject * protocol_widget_get_current_scale_mode(PyRemminaProtocolWidget *self, PyObject *args)
static PyObject * protocol_widget_unlock_dynres(PyRemminaProtocolWidget *self, PyObject *args)
void _remmina_critical(const gchar *fun, const gchar *fmt,...)
Definition: remmina_log.c:382
RemminaProtocolSSHSetting ssh_setting
Definition: plugin.h:76
struct _RemminaProtocolPlugin RemminaProtocolPlugin
static PyObject * protocol_widget_panel_show_listen(PyRemminaProtocolWidget *self, PyObject *args)
const gchar * version
Definition: plugin.h:140
const RemminaProtocolFeature * features
Definition: plugin.h:77
const gchar * domain
Definition: plugin.h:60
void _remmina_warning(const gchar *fun, const gchar *fmt,...)
Definition: remmina_log.c:286
static PyObject * protocol_widget_update_align(PyRemminaProtocolWidget *self, PyObject *args)
const gchar * domain
Definition: plugin.h:139
gboolean(* is_service_available)(struct _RemminaSecretPlugin *instance)
Definition: plugin.h:144
void(* delete_password)(struct _RemminaSecretPlugin *instance, RemminaFile *remminafile, const gchar *key)
Definition: plugin.h:147
const gchar * domain
Definition: plugin.h:94
const gchar * domain
Definition: plugin.h:128
void _remmina_audit(const gchar *fun, const gchar *fmt,...)
Definition: remmina_log.c:313
RemminaScaleMode remmina_protocol_widget_get_current_scale_mode(RemminaProtocolWidget *gp)
const gchar * domain
Definition: plugin.h:104
RemminaPluginType type
Definition: plugin.h:151
const gchar * name
Definition: plugin.h:92
const gchar * description
Definition: plugin.h:59
const gchar * version
Definition: plugin.h:61
gboolean(* load)(struct _RemminaLanguageWrapperPlugin *instance, const gchar *plugin_file)
Definition: plugin.h:159
const gchar * description
Definition: plugin.h:93
Definition: plugin.h:90
struct _RemminaToolPlugin RemminaToolPlugin
void _remmina_debug(const gchar *fun, const gchar *fmt,...)
Print a string in the Remmina Debug Windows and in the terminal.
Definition: remmina_log.c:259
static PyObject * file_unsave_passwords(PyRemminaFile *self, PyObject *args)
static PyObject * protocol_widget_send_keys_signals(PyRemminaProtocolWidget *self, PyObject *args)
static PyObject * protocol_widget_start_xport_tunnel(PyRemminaProtocolWidget *self, PyObject *args)
static PyObject * protocol_widget_set_width(PyRemminaProtocolWidget *self, PyObject *var_width)
const gchar * icon_name_ssh
Definition: plugin.h:73
static PyObject * protocol_widget_set_display(PyRemminaProtocolWidget *self, PyObject *var_display)
RemminaMessagePanelFlags
Definition: types.h:156
static PyObject * protocol_widget_set_expand(PyRemminaProtocolWidget *self, PyObject *var_expand)
static PyObject * protocol_widget_chat_open(PyRemminaProtocolWidget *self, PyObject *var_name)
static PyObject * protocol_widget_desktop_resize(PyRemminaProtocolWidget *self, PyObject *args)
const gchar * description
Definition: plugin.h:68
gboolean(* export_test_func)(struct _RemminaFilePlugin *instance, RemminaFile *file)
Definition: plugin.h:109
const gchar * description
Definition: plugin.h:138
const gchar * name
Definition: plugin.h:137
const gchar * domain
Definition: plugin.h:118
const gchar * description
Definition: plugin.h:127
static PyObject * protocol_widget_get_width(PyRemminaProtocolWidget *self, PyObject *args)
RemminaProtocolSSHSetting
Definition: types.h:128
static PyObject * protocol_widget_signal_connection_closed(PyRemminaProtocolWidget *self, PyObject *args)
const gchar * pref_label
Definition: plugin.h:131
const gchar * name
Definition: plugin.h:102
const gchar ** supported_extentions
Definition: plugin.h:156
const RemminaProtocolSetting * basic_settings
Definition: plugin.h:74
struct _RemminaLanguageWrapperPlugin RemminaLanguageWrapperPlugin
const gchar * description
Definition: plugin.h:117
const gchar * version
Definition: plugin.h:105
RemminaPluginType type
Definition: plugin.h:66
const gchar * name
Definition: plugin.h:116
static PyObject * protocol_widget_get_expand(PyRemminaProtocolWidget *self, PyObject *args)
void _remmina_info(const gchar *fmt,...)
Definition: remmina_log.c:206
gboolean(* RemminaPluginEntryFunc)(RemminaPluginService *service)
Definition: plugin.h:307
RemminaScaleMode
Definition: types.h:142
struct _RemminaSecretPlugin RemminaSecretPlugin
static PyObject * protocol_widget_set_error(PyRemminaProtocolWidget *self, PyObject *var_msg)
RemminaPluginType type
Definition: plugin.h:101
const gchar * version
Definition: plugin.h:129
const gchar * description
Definition: plugin.h:103
static PyObject * protocol_widget_panel_authx509(PyRemminaProtocolWidget *self, PyObject *args)
static PyObject * protocol_widget_is_closed(PyRemminaProtocolWidget *self, PyObject *args)
static PyObject * protocol_widget_signal_connection_opened(PyRemminaProtocolWidget *self, PyObject *args)
static PyObject * protocol_widget_save_cred(PyRemminaProtocolWidget *self, PyObject *args)
static PyObject * protocol_widget_panel_hide(PyRemminaProtocolWidget *self, PyObject *args)
const gchar * name
Definition: plugin.h:126
const gchar * version
Definition: plugin.h:70
const gchar * name
Definition: plugin.h:67
RemminaPluginType type
Definition: plugin.h:91
const RemminaProtocolSetting * advanced_settings
Definition: plugin.h:75
gboolean(* export_func)(struct _RemminaFilePlugin *instance, RemminaFile *file, const gchar *to_file)
Definition: plugin.h:110
RemminaPluginType
Definition: plugin.h:46
struct _RemminaFilePlugin RemminaFilePlugin
void(* store_password)(struct _RemminaSecretPlugin *instance, RemminaFile *remminafile, const gchar *key, const gchar *password)
Definition: plugin.h:145
struct _RemminaEntryPlugin RemminaEntryPlugin
static PyObject * protocol_widget_get_height(PyRemminaProtocolWidget *self, PyObject *args)
static PyObject * protocol_widget_panel_show(PyRemminaProtocolWidget *self, PyObject *args)
struct _RemminaPlugin RemminaPlugin
const gchar * icon_name
Definition: plugin.h:72
void _remmina_message(const gchar *fmt,...)
Definition: remmina_log.c:230
RemminaPluginType type
Definition: plugin.h:115
static PyObject * protocol_widget_panel_changed_certificate(PyRemminaProtocolWidget *self, PyObject *args)
gboolean(* RemminaXPortTunnelInitFunc)(RemminaProtocolWidget *gp, gint remotedisplay, const gchar *server, gint port)
Definition: types.h:95
const gchar * domain
Definition: plugin.h:69
const gchar * name
Definition: plugin.h:58
void _remmina_error(const gchar *fun, const gchar *fmt,...)
Definition: remmina_log.c:355