changeset 2:8fb047af207a

this now actually serves things
author Jeff Hammel <jhammel@mozilla.com>
date Wed, 29 Feb 2012 13:37:57 -0800
parents 89d4f742ed1a
children 6b4b9a9b37c6
files fileserver/web.py
diffstat 1 files changed, 17 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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 = ['<html><head><title>Simple Index</title></head><body>']
+        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('<a href="%s">%s</a><br/>' % (link, entry))
+        parts.append('</body></html>')
+        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):