summaryrefslogtreecommitdiff
path: root/daemon
diff options
context:
space:
mode:
authorBenjamin Otte <otte@gnome.org>2008-03-04 10:56:43 +0000
committerBenjamin Otte <otte@src.gnome.org>2008-03-04 10:56:43 +0000
commit13a1cd21fe5bbeb50c16b0a3cc68a0acb1af90b2 (patch)
tree0ea0e4ba78709e476499c5f7387edf3a963df544 /daemon
parent3cd81d08a157eb3723ed105f770b8da042d9bb54 (diff)
downloadgvfs-13a1cd21fe5bbeb50c16b0a3cc68a0acb1af90b2.tar.gz
add an anonymous_out parameter for anonymous logins.
2008-03-04 Benjamin Otte <otte@gnome.org> * common/gmountsource.c: (ask_password_reply), (g_mount_source_ask_password_finish), (g_mount_source_ask_password), (op_ask_password_reply): * common/gmountsource.h: add an anonymous_out parameter for anonymous logins. * daemon/gvfsbackenddav.c: (soup_authenticate_interactive): * daemon/gvfsbackendsftp.c: (handle_login): * daemon/gvfsbackendsmb.c: (auth_callback): make the backends compile with the new parameter. They don't use anonymous logins. * daemon/gvfsbackendftp.c: (do_mount): make login work as users would expect it with anonymous logins. Fixes bug #520131 svn path=/trunk/; revision=1520
Diffstat (limited to 'daemon')
-rw-r--r--daemon/gvfsbackenddav.c1
-rw-r--r--daemon/gvfsbackendftp.c46
-rw-r--r--daemon/gvfsbackendsftp.c1
-rw-r--r--daemon/gvfsbackendsmb.c1
4 files changed, 40 insertions, 9 deletions
diff --git a/daemon/gvfsbackenddav.c b/daemon/gvfsbackenddav.c
index a12841f9..a528b133 100644
--- a/daemon/gvfsbackenddav.c
+++ b/daemon/gvfsbackenddav.c
@@ -1062,6 +1062,7 @@ soup_authenticate_interactive (SoupSession *session,
&new_password,
&new_username,
NULL,
+ NULL,
&pw_save);
if (res && !aborted)
diff --git a/daemon/gvfsbackendftp.c b/daemon/gvfsbackendftp.c
index 927bc821..e689ff78 100644
--- a/daemon/gvfsbackendftp.c
+++ b/daemon/gvfsbackendftp.c
@@ -83,7 +83,7 @@ struct _GVfsBackendFtp
SoupAddress * addr;
char * user;
- char * password;
+ char * password; /* password or NULL for anonymous */
/* connection collection */
GQueue * queue;
@@ -592,8 +592,20 @@ ftp_connection_login (FtpConnection *conn,
"USER %s", username);
if (STATUS_GROUP (status) == 3)
- status = ftp_connection_send (conn, 0,
- "PASS %s", password);
+ {
+ /* rationale for choosing the default password:
+ * - some ftp servers expect something that looks like an email address
+ * - we don't want to send the user's name or address, as that would be
+ * a privacy problem
+ * - we want to give ftp server administrators a chance to notify us of
+ * problems with our client.
+ * - we don't want to drown in spam.
+ */
+ if (password == NULL)
+ password = "gvfsd-ftp-" VERSION "@example.com";
+ status = ftp_connection_send (conn, 0,
+ "PASS %s", password);
+ }
return status;
}
@@ -927,7 +939,7 @@ do_mount (GVfsBackend *backend,
char *username;
char *password;
char *display_name;
- gboolean aborted;
+ gboolean aborted, anonymous;
GError *error = NULL;
GPasswordSave password_save = G_PASSWORD_SAVE_NEVER;
guint port;
@@ -966,7 +978,7 @@ do_mount (GVfsBackend *backend,
if (!g_mount_source_ask_password (
mount_source,
prompt,
- ftp->user ? ftp->user : "anonymous",
+ ftp->user,
NULL,
G_ASK_PASSWORD_NEED_USERNAME |
G_ASK_PASSWORD_NEED_PASSWORD |
@@ -976,6 +988,7 @@ do_mount (GVfsBackend *backend,
&password,
&username,
NULL,
+ &anonymous,
&password_save) ||
aborted)
{
@@ -985,12 +998,27 @@ do_mount (GVfsBackend *backend,
}
try_login:
+ DEBUG ("user: %s\n", username);
g_free (ftp->user);
- ftp->user = username;
g_free (ftp->password);
- ftp->password = password;
- if (ftp_connection_login (conn, username, password) != 0)
- break;
+ if (anonymous)
+ {
+ if (ftp_connection_login (conn, "anonymous", "") != 0)
+ {
+ ftp->user = g_strdup ("anonymous");
+ ftp->password = g_strdup ("");
+ break;
+ }
+ ftp->user = NULL;
+ ftp->password = NULL;
+ }
+ else
+ {
+ ftp->user = username ? username : g_strdup ("");
+ ftp->password = password;
+ if (ftp_connection_login (conn, username, password) != 0)
+ break;
+ }
if (!g_error_matches (conn->error, G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED))
break;
diff --git a/daemon/gvfsbackendsftp.c b/daemon/gvfsbackendsftp.c
index 4c33e818..e2b77cea 100644
--- a/daemon/gvfsbackendsftp.c
+++ b/daemon/gvfsbackendsftp.c
@@ -826,6 +826,7 @@ handle_login (GVfsBackend *backend,
&new_password,
&new_user,
NULL,
+ NULL,
&password_save) ||
aborted)
{
diff --git a/daemon/gvfsbackendsmb.c b/daemon/gvfsbackendsmb.c
index ba91effa..5b0c302d 100644
--- a/daemon/gvfsbackendsmb.c
+++ b/daemon/gvfsbackendsmb.c
@@ -222,6 +222,7 @@ auth_callback (SMBCCTX *context,
&ask_password,
&ask_user,
&ask_domain,
+ NULL,
&(backend->password_save));
g_free (message);
if (!handled)