From b586273e93a7dd3558347facdad917c649029eb4 Mon Sep 17 00:00:00 2001 From: Evan Broder Date: Sat, 20 Sep 2008 13:17:32 -0400 Subject: [PATCH] Add a new HomeFS example (/home automounter using pwd database) --- routefs/examples/homefs.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 routefs/examples/homefs.py diff --git a/routefs/examples/homefs.py b/routefs/examples/homefs.py new file mode 100755 index 0000000..893977b --- /dev/null +++ b/routefs/examples/homefs.py @@ -0,0 +1,38 @@ +#!/usr/bin/python +""" +RouteFS Example: HomeFS + +If you work on a system where home directories are on network storage +(i.e. not in /home), mount HomeFS on /home. It's an automounter that +will automatically create symlinks from user -> their homedir whenever +/home/user is accessed in any way. +""" + +import pwd +import routefs +from routes import Mapper + +class HomeFS(routefs.RouteFS): + def __init__(self, *args, **kwargs): + super(HomeFS, self).__init__(*args, **kwargs) + self.cache = {} + + def make_map(self): + m = Mapper() + m.connect('', controller='getList') + m.connect(':action', controller='getUser') + return m + + def getUser(self, action, **kwargs): + try: + if action not in self.cache: + self.cache[action] = pwd.getpwnam(action).pw_dir + return routefs.Symlink(self.cache[action]) + except KeyError: + return + + def getList(self, **kwargs): + return self.cache.keys() + +if __name__ == '__main__': + routefs.main(HomeFS) -- 1.7.9.5