43 #include <glib/gi18n.h> 51 #define REMMINA_PLUGIN_SFTP_FEATURE_PREF_SHOW_HIDDEN 1 52 #define REMMINA_PLUGIN_SFTP_FEATURE_PREF_OVERWRITE_ALL 2 54 #define REMMINA_PLUGIN_SFTP_FEATURE_PREF_OVERWRITE_ALL_KEY "overwrite_all" 56 #define GET_PLUGIN_DATA(gp) (RemminaPluginSftpData *)g_object_get_data(G_OBJECT(gp), "plugin-data"); 71 if (hostport == NULL) {
90 gboolean cont = FALSE;
96 pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
99 gpdata = GET_PLUGIN_DATA(gp);
108 ssh = g_object_get_data(G_OBJECT(gp),
"user-data");
121 ssh = REMMINA_SSH(sftp);
170 TRACE_CALL(__func__);
180 TRACE_CALL(__func__);
185 g_object_set_data_full(G_OBJECT(gp),
"plugin-data", gpdata, g_free);
191 gtk_widget_show(GTK_WIDGET(gpdata->
client));
192 gtk_container_add(GTK_CONTAINER(gp), GTK_WIDGET(gpdata->
client));
195 remmina_plugin_service->
file_get_int(remminafile,
"showhidden", FALSE));
199 REMMINA_PLUGIN_SFTP_FEATURE_PREF_OVERWRITE_ALL_KEY, FALSE));
203 g_signal_connect(G_OBJECT(gpdata->
client),
210 TRACE_CALL(__func__);
219 "Could not initialize pthread. Falling back to non-thread modeā¦");
231 TRACE_CALL(__func__);
237 pthread_cancel(gpdata->
thread);
247 REMMINA_PLUGIN_SFTP_FEATURE_PREF_OVERWRITE_ALL_KEY, FALSE);
254 TRACE_CALL(__func__);
261 TRACE_CALL(__func__);
266 switch (feature->
id) {
267 case REMMINA_PROTOCOL_FEATURE_TOOL_SSH:
270 NULL, gpdata->
sftp, NULL);
272 case REMMINA_PROTOCOL_FEATURE_TOOL_SFTP:
275 NULL, gpdata->
sftp, NULL);
277 case REMMINA_PLUGIN_SFTP_FEATURE_PREF_SHOW_HIDDEN:
279 remmina_plugin_service->
file_get_int(remminafile,
"showhidden", FALSE));
281 case REMMINA_PLUGIN_SFTP_FEATURE_PREF_OVERWRITE_ALL:
284 REMMINA_PLUGIN_SFTP_FEATURE_PREF_OVERWRITE_ALL_KEY, FALSE));
292 "1",
N_(
"SSH identity file"),
293 "2",
N_(
"SSH agent"),
294 "3",
N_(
"Public key (automatic)"),
295 "4",
N_(
"Kerberos (GSSAPI)"),
304 N_(
"Show Hidden Files") },
306 REMMINA_PLUGIN_SFTP_FEATURE_PREF_OVERWRITE_ALL_KEY,
N_(
"Overwrite all") },
337 N_(
"SFTP - Secure File Transfer"),
340 "remmina-sftp-symbolic",
341 "remmina-sftp-symbolic",
358 TRACE_CALL(__func__);
367 TRACE_CALL(__func__);
void remmina_ftp_client_load_state(RemminaFTPClient *client, RemminaFile *remminafile)
void remmina_ftp_client_set_overwrite_status(RemminaFTPClient *client, gboolean status)
enum remmina_ssh_auth_result remmina_ssh_auth_gui(RemminaSSH *ssh, RemminaProtocolWidget *gp, RemminaFile *remminafile)
gboolean remmina_plugin_sftp_start_direct_tunnel(RemminaProtocolWidget *gp, char **phost, int *pport)
void remmina_ftp_client_set_show_hidden(RemminaFTPClient *client, gboolean show_hidden)
void(* protocol_plugin_set_error)(RemminaProtocolWidget *gp, const gchar *fmt,...)
typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile
RemminaFile * remmina_file_dup_temp_protocol(RemminaFile *remminafile, const gchar *new_protocol)
void(* protocol_plugin_set_width)(RemminaProtocolWidget *gp, gint width)
static void remmina_plugin_sftp_client_on_realize(GtkWidget *widget, RemminaProtocolWidget *gp)
void remmina_sftp_plugin_register(void)
static gboolean remmina_plugin_sftp_open_connection(RemminaProtocolWidget *gp)
static RemminaProtocolPlugin remmina_plugin_sftp
struct _RemminaPluginSftpData RemminaPluginSftpData
void(* protocol_plugin_signal_connection_closed)(RemminaProtocolWidget *gp)
static void remmina_plugin_sftp_init(RemminaProtocolWidget *gp)
void(* get_server_port)(const gchar *server, gint defaultport, gchar **host, gint *port)
gint(* file_get_int)(RemminaFile *remminafile, const gchar *setting, gint default_value)
RemminaSFTPClient * client
static gpointer ssh_auth[]
void(* protocol_plugin_signal_connection_opened)(RemminaProtocolWidget *gp)
RemminaSFTPClient * remmina_sftp_client_new(void)
void remmina_sftp_client_open(RemminaSFTPClient *client, RemminaSFTP *sftp)
gboolean(* register_plugin)(RemminaPlugin *plugin)
RemminaPluginService remmina_plugin_manager_service
static gpointer remmina_plugin_sftp_main_thread(gpointer data)
static RemminaPluginService * remmina_plugin_service
gint tunnel_entrance_port
void remmina_ftp_client_set_dir(RemminaFTPClient *client, const gchar *dir)
static const RemminaProtocolSetting remmina_sftp_basic_settings[]
void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)
void(* protocol_plugin_set_expand)(RemminaProtocolWidget *gp, gboolean expand)
gchar * tunnel_entrance_host
RemminaFile *(* protocol_plugin_get_file)(RemminaProtocolWidget *gp)
RemminaSFTP * remmina_sftp_new_from_ssh(RemminaSSH *ssh)
void(* protocol_plugin_register_hostkey)(RemminaProtocolWidget *gp, GtkWidget *widget)
gboolean remmina_sftp_open(RemminaSFTP *sftp)
static const RemminaProtocolFeature remmina_plugin_sftp_features[]
void(* protocol_plugin_set_height)(RemminaProtocolWidget *gp, gint height)
void remmina_sftp_free(RemminaSFTP *sftp)
gchar *(* protocol_plugin_start_direct_tunnel)(RemminaProtocolWidget *gp, gint default_port, gboolean port_plus)
GtkWidget *(* open_connection)(RemminaFile *remminafile, GCallback disconnect_cb, gpointer data, guint *handler)
const gchar *(* file_get_string)(RemminaFile *remminafile, const gchar *setting)
RemminaSFTP * remmina_sftp_new_from_file(RemminaFile *remminafile)
static gboolean remmina_plugin_sftp_close_connection(RemminaProtocolWidget *gp)
RemminaProtocolWidget * gp
static void remmina_plugin_sftp_call_feature(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)
N_("Unable to connect to VNC server")
void remmina_ftp_client_save_state(RemminaFTPClient *client, RemminaFile *remminafile)
gboolean remmina_ssh_init_session(RemminaSSH *ssh)
enum remmina_ssh_auth_result remmina_ssh_auth(RemminaSSH *ssh, const gchar *password, RemminaProtocolWidget *gp, RemminaFile *remminafile)
static gboolean remmina_plugin_sftp_query_feature(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)