summaryrefslogtreecommitdiff
path: root/dbus.txt
blob: c9925b11f42e0e7bfba08c5fc8d89a14c3671b1b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
All info for mapping uri -> dbus name + remainder path is stored in config files read by the client at startup.

Each "mountpoint" in a mountpoint daemon owns a name like "org.gtk.vfs.mount.smb.$server.$share".
It also instantiates a Mountpoint interface at /org/gtk/vfs/mount/smb/$server/$share which
listens to operations.

Each daemon that contains at least one mountpoint also registers a org.gtk.vfs.Daemon interface
at /org/gtk/vfs/Daemon which supports operations like GetConnection and CancelOp.

Clients use GetNameOwner to map uri -> mountpoint name -> owner of name -> GetConnection call so that
it can handle multiple mountpoints in each daemon. This can be cached, and NameOwnerChanged can be used
to invalidate the cache.

----------------------
How we map URIs
----------------------

Mapping functions needed:
uri to mount + path
mount + path to uri
root parent

Mapping %m://%u@%h:%p/%f

ftp:

m_ftp.h_%h.p_%p.u_%u

smb:

smb://user@/ <-> smb-root.u_user
smb:/// <-> smb-root; path = /
smb:///foo <-> smb-root; path = /foo, type == link
smb://foo/ <-> smb-browse; path = /foo
smb://foo/server -> smb-browse; path = /foo/server, type == link
smb://user@foo/ <-> smb-browse.u_user; path = /foo
smb://user@foo:21/ <-> smb-browse.u_user.p_21; path = /foo
smb://domain;user@foo:21/ <-> smb-browse.d_domain.u_user.p_21; path = /foo
smb:///foo/share/blah <-> smb-share.h_foo.s_share, path = /blah

m_smb-browse.u_%u   path includes hostname

computer:

m_computer

network:

m_network

http:
https:

m_http(s),   username+path+port in path

authentication (no mount)

dav:
davs:

m_dav.h_%h.p_%p.u_%u.f_%f (f== path prefix)


nfs.h_server.p_port.u_user.f_/opt/prefix

Find it by using ListNames

nfs:

nfs.h_server.p_port.f_/opt/prefix

Find it by using ListNames

sftp:

trash:
---

HowTo handle:

uri query part
filename encoding - paths are raw, get utf8 via get_display_name op. (What about IRIs? Try to do utf8 paths if possible?)
automounting? - http?