# HG changeset patch # User Jeff Hammel # Date 1330551477 28800 # Node ID 8fb047af207a7d460d4a369c4004ed3feed5d2e4 # Parent 89d4f742ed1ae0e6fe18af8d1e248f59f012053f this now actually serves things diff -r 89d4f742ed1a -r 8fb047af207a fileserver/web.py --- a/fileserver/web.py Wed Feb 29 13:17:16 2012 -0800 +++ b/fileserver/web.py Wed Feb 29 13:37:57 2012 -0800 @@ -43,12 +43,25 @@ def __init__(self, directory): assert os.path.exists(directory), "'%s' does not exist" % directory assert os.path.isdir(directory), "'%s' is not a directory" % directory - self.directory = directory + self.directory = self.normpath(directory) @staticmethod def normpath(path): return os.path.normcase(os.path.abspath(path)) + def index(self, directory): + """ + generate a directory listing for a given directory + """ + parts = ['Simple Index'] + listings = os.listdir(directory) + listings = [(os.path.isdir(os.path.join(directory, entry)) and entry + '/' or entry, entry) + for entry in listings] + for link, entry in listings: + parts.append('%s
' % (link, entry)) + parts.append('') + return '\n'.join(parts) + def __call__(self, environ, start_response): request = Request(environ) # TODO method_not_allowed: Allow: GET, HEAD @@ -56,7 +69,10 @@ if not path_info: pass # self.add slash full = self.normpath(os.path.join(self.directory, path_info.strip('/'))) + if not full.startswith(self.directory): + print 'OUT OF BOUNDS!' + import pdb; pdb.set_trace() # Out of bounds return exc.HTTPNotFound()(environ, start_response) if not os.path.exists(full):