5
from subprocess import *
8
return os.environ.get(name)
10
def add_ltspfsmount(conn, path, root, dev):
11
hidden_mount = '%s/%s' % (root, dev)
12
lbmount_command = ['lbmount', dev]
13
ltspfs_mount = ['ltspfs', conn+':'+path, root+'/'+dev]
15
if not os.access(root, 0):
17
if not os.access(hidden_mount, 0):
18
os.mkdir(hidden_mount)
20
env = os.environ.copy()
21
env['DISPLAY'] = 'localhost:10.0'
24
call(ltspfs_mount, env=env)
26
print >>sys.stderr, "mount failed:", e
30
print >>sys.stderr, "suid mount failed:", e
32
def remove_ltspfsmount(root, dev):
33
hidden_mount = "%s/%s" % (root, dev)
34
lbumount_command=['lbmount', '--umount', dev]
35
ltspfs_umount=['fusermount', '-uzq', root+'/'+dev]
38
call(lbumount_command)
40
print >>sys.stderr, "suid umount failed:", e
44
print >>sys.stderr, "umount failed:", e
46
if os.access(hidden_mount, 0):
47
os.rmdir(hidden_mount)
50
known_mounts = open( '/proc/mounts', 'r' ).readlines()
51
for dir in ['/media', '/tmp']:
52
for mount in known_mounts:
53
if mount.startswith('ltspfs') and user in mount:
54
mountpoint=mount.split()[1]
55
device=mountpoint.split('/')[-1]
56
if dir=='/media' and mountpoint.startswith(dir):
57
call(['lbmount', '--umount', device])
58
elif dir=='/tmp' and mountpoint.startswith(dir):
59
call(['fusermount', '-uzq', mountpoint])
60
if os.access(mountpoint, 0):
66
print 'usage: %s mountpoint add|remove|cleanup' % sys.argv[0]
71
root = "/tmp/.%s-ltspfs" % get_var('USER')
72
conn = get_var('SSH_CONNECTION').split()[0]
73
dev = path.split('/')[-1]
76
add_ltspfsmount(conn, path, root, dev)
77
elif command=='remove':
78
remove_ltspfsmount(root, dev)
79
elif command=='cleanup':
80
cleanup(get_var('USER'))
82
print 'unknown command'
84
if __name__ == "__main__":