mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-01 03:53:24 +00:00
Simple dialog to obtain user/password for divelogs.de
The password is handled in clear text and stored in the config as such. Some people might object to that... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
bd9f8ad7f8
commit
faf7b28b20
1 changed files with 58 additions and 6 deletions
64
webservice.c
64
webservice.c
|
@ -308,6 +308,57 @@ void webservice_download_dialog(void)
|
|||
free((void *)current_uid);
|
||||
}
|
||||
|
||||
static gboolean divelogde_dialog(const char **user, const char **pass)
|
||||
{
|
||||
GtkWidget *dialog, *vbox, *info, *frame_user, *frame_pass, *uid, *pwd;
|
||||
gboolean ret = FALSE;
|
||||
|
||||
*user = subsurface_get_conf("divelogde_user");
|
||||
*pass = subsurface_get_conf("divelogde_pass");
|
||||
dialog = gtk_dialog_new_with_buttons(_("Upload to divelogs.de"),
|
||||
GTK_WINDOW(main_window),
|
||||
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_STOCK_APPLY,
|
||||
GTK_RESPONSE_ACCEPT,
|
||||
GTK_STOCK_CANCEL,
|
||||
GTK_RESPONSE_REJECT,
|
||||
NULL);
|
||||
vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
|
||||
info = gtk_label_new(_("Please enter your userid and password for divelogs.de. "
|
||||
"The selected dives will be added to your account"));
|
||||
gtk_label_set_line_wrap(GTK_LABEL(info), TRUE);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), info, FALSE, TRUE, 0);
|
||||
gtk_misc_set_padding(GTK_MISC(info), 6, 6);
|
||||
|
||||
frame_user = gtk_frame_new(_("User Identifier"));
|
||||
gtk_box_pack_start(GTK_BOX(vbox), frame_user, FALSE, TRUE, 6);
|
||||
uid = gtk_entry_new();
|
||||
gtk_container_add(GTK_CONTAINER(frame_user), uid);
|
||||
gtk_entry_set_max_length(GTK_ENTRY(uid), 40);
|
||||
gtk_entry_set_text(GTK_ENTRY(uid), *user ?: "");
|
||||
|
||||
|
||||
frame_pass = gtk_frame_new(_("Password"));
|
||||
gtk_box_pack_start(GTK_BOX(vbox), frame_pass, FALSE, TRUE, 6);
|
||||
pwd = gtk_entry_new();
|
||||
gtk_container_add(GTK_CONTAINER(frame_pass), pwd);
|
||||
gtk_entry_set_max_length(GTK_ENTRY(pwd), 40);
|
||||
gtk_entry_set_text(GTK_ENTRY(pwd), *pass ?: "");
|
||||
|
||||
gtk_widget_show_all(dialog);
|
||||
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
|
||||
free((void*)*user);
|
||||
free((void*)*pass);
|
||||
*user = strdup(gtk_entry_get_text(GTK_ENTRY(uid)));
|
||||
*pass = strdup(gtk_entry_get_text(GTK_ENTRY(pwd)));
|
||||
subsurface_set_conf("divelogde_user", *user);
|
||||
subsurface_set_conf("divelogde_pass", *pass);
|
||||
ret = TRUE;
|
||||
}
|
||||
gtk_widget_destroy(dialog);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int divelogde_upload(char *fn)
|
||||
{
|
||||
SoupMessage *msg;
|
||||
|
@ -315,19 +366,20 @@ int divelogde_upload(char *fn)
|
|||
SoupSession *session;
|
||||
SoupBuffer *sbuf;
|
||||
gboolean ret = FALSE;
|
||||
gchar url[256] = "http://divelogs.de/DivelogsDirectImport.php";
|
||||
char url[256] = "http://divelogs.de/DivelogsDirectImport.php";
|
||||
const char *pass = NULL;
|
||||
const char *user = NULL;
|
||||
struct memblock mem;
|
||||
|
||||
if (readfile(fn, &mem) < 0)
|
||||
return ret;
|
||||
|
||||
if (!divelogde_dialog(&user, &pass))
|
||||
return ret;
|
||||
sbuf = soup_buffer_new(SOUP_MEMORY_STATIC, mem.buffer, mem.size);
|
||||
session = soup_session_async_new();
|
||||
multipart = soup_multipart_new(SOUP_FORM_MIME_TYPE_MULTIPART);
|
||||
|
||||
/* this needs to come from a dialog box and be stored in the user config */
|
||||
soup_multipart_append_form_string(multipart, "user", "subsurfacetest");
|
||||
soup_multipart_append_form_string(multipart, "pass", "geheim");
|
||||
soup_multipart_append_form_string(multipart, "user", user);
|
||||
soup_multipart_append_form_string(multipart, "pass", pass);
|
||||
|
||||
soup_multipart_append_form_file(multipart, "userfile", fn, NULL, sbuf);
|
||||
msg = soup_form_request_new_from_multipart(url, multipart);
|
||||
|
|
Loading…
Add table
Reference in a new issue