Mounting a path with GVFS
- From: Aldrin Martoq <amartoq dcc uchile cl>
- To: gnome-vfs-list gnome org
- Subject: Mounting a path with GVFS
- Date: Sun, 12 Oct 2008 21:41:10 -0300
I'm trying to mount a remote FTP folder using GVFS, just for "testing"
purposes.
My problem is that I need to change the name of the folder, because:
- I don't want in nautilus the label "ftp as amartoq on 127.0.0.1:2121"
for ex (I may set the user randomly for example).
- I want to mount and treat different folders as independent mounts
(say /tmp and /home). So, I want it to say for ex: "HOME on 127.0.0.1
(ftp)" AND "TMP on 127.0.0.1 (ftp)".
- I would like to change the icon ;)
So, I tried gvfs-mount but no luck in changing the mounted folder name.
After a while, I created a "simple" python-dbus client (attached), which
actually works mostly the same as the gvfs-mount program. But it seems
the client cannot set/change the mount name.
Q1. Is there any way to change the label name?
Q2. What about connecting through FTP with the same user, host and
port?? The only parameter I can change in DBUS is something that looks
like a path, but gvfs answer:
"org.glib.GError.g_2Dio_2Derror_2Dquark.c17: Location is already
mounted" if I repeat the command giving another sys.arg[1] for
mountLocation().
Thanks!
--
Aldrin Martoq <amartoq dcc uchile cl>
http://aldrinvideopodcast.podshow.com/
#!/usr/bin/env python
# mount-gvfs.py - /Attempt/ of Mounting a folder using GVFS through DBus
# Copyright (C) 2008 Aldrin Martoq <amartoq dcc uchile cl>
# Licensed under GPL v2
try:
import rlcompleter
import readline
readline.parse_and_bind("tab: complete")
except Exception:
pass
import dbus, dbus.glib, gobject, dbus.service, sys
from pprint import pprint
class AskPass(dbus.service.Object):
@dbus.service.method('org.gtk.vfs.MountOperation',
in_signature='sssu', out_signature='bbsssbu')
def askPassword(self, s1, s2, s3, u1):
for arg in [s1, s2, s3, u1]:
print "askPass: " + str(arg)
print "-------- Please TYPE (NOTE: PASSWORD WILL NOT BE HIDDEN) ---------------"
username = raw_input("Username: ")
password = raw_input("Password: ")
print "Trying: " + username + " - " + password
return [True, False, password, username, "", False, 0]
def name_owner_changed(*args, **kwargs):
print ("Signal: " + kwargs['dbus_interface'] + "->" + kwargs['member'])
for arg in args:
print "Signal: " + str(arg)
print "Signal DONE."
if kwargs['member'] == "NameAcquired":
myname = str(arg)
args = [tuple(["host", dbus.Array('127.0.0.1', 'y')]), tuple(["port", '2121']), tuple(["type", 'ftp'])]
try:
path = sys.argv[1] or '/'
except:
path = '/'
print "INVOKING mountLocation with path[" + path + "] name[" + myname + "] args:[" + str(args) + "]"
server.mountLocation(tuple([dbus.Array(path, 'y'), args]), myname, dbus.ObjectPath("/org/gtk/gvfs/mountop/0"), reply_handler=mount_reply, error_handler=mount_reply_error)
def mount_reply(*args, **kwargs):
print "Mount Reply: ",
pprint(kwargs)
for arg in args:
print "Mount Reply: " + str(arg)
loop.quit()
def mount_reply_error(*args, **kwargs):
print "Mount Reply Error: ",
pprint(kwargs)
for arg in args:
print "Mount Reply Error: " + str(arg)
loop.quit()
if __name__ == "__main__":
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()
try:
name = dbus.service.BusName("org.gtk.vfs.Daemon", bus)
askpass = AskPass(bus, '/org/gtk/gvfs/mountop/0')
proxy = bus.get_object('org.gtk.vfs.Daemon', '/org/gtk/vfs/mounttracker')
server = dbus.Interface(proxy, 'org.gtk.vfs.MountTracker')
except dbus.DBusException:
traceback.print_exc()
sys.exit(1)
bus.add_signal_receiver(name_owner_changed, interface_keyword='dbus_interface', member_keyword='member')
loop = gobject.MainLoop()
loop.run()
[Date Prev][
Date Next] [Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]