Ejemplo n.º 1
0
def createRequestHandler(request):
    if request.get("bad"):
        return ErrorPages.websiteErrorPage(400, request.get("errormsg",""))
    else:
        for (prefix, handler) in URLHandlers:
            if request["raw-uri"][:len(prefix)] == prefix:
                request["uri-prefix-trigger"] = prefix
                request["uri-suffix"] = request["raw-uri"][len(prefix):]
                return handler(request)
            
    return ErrorPages.websiteErrorPage(404, "No resource handlers could be found for the requested URL.")
Ejemplo n.º 2
0
def createRequestHandler(request):
    if request.get("bad"):
        return ErrorPages.websiteErrorPage(400, request.get("errormsg", ""))
    else:
        for (prefix, handler) in URLHandlers:
            if request["raw-uri"][:len(prefix)] == prefix:
                request["uri-prefix-trigger"] = prefix
                request["uri-suffix"] = request["raw-uri"][len(prefix):]
                return handler(request)

    return ErrorPages.websiteErrorPage(
        404, "No resource handlers could be found for the requested URL.")
Ejemplo n.º 3
0
 def get_page(self, request, resource, post):
     if users.currentUser.isGroup("poster") == False:
         return ErrorPages.AccessDenied(request, resource)
     try:
         if (post.author != users.currentUser.firstName + " " +
                 users.currentUser.lastName
                 and users.currentUser.permissions < 3):
             return ErrorPages.AccessDenied(request, resource,
                                            users.currentUser)
         temp = loader.get_template("editpost.html")
         cont = Context({"post": post, "user": users.currentUser})
         return temp.render(cont)
     except IndexError:
         return ErrorPages.PageNotFound(request, resource)
Ejemplo n.º 4
0
    def get_page(self, request, resource, parent):
        r, w = parent.check_permissions()
        if not w:
            return ErrorPages.AccessDenied(request, resource)

        temp = loader.get_template("newpost.html")
        cont = Context({"user": users.currentUser})
        result = temp.render(cont)
        return result
Ejemplo n.º 5
0
    def get_page(self, request, resource, parent):
        r, w = self.check_permissions()
        if not r:
            return ErrorPages.AccessDenied(request, resource)

        temp = loader.get_template("updates.html")
        before = request.request.get("getBefore")
        after = request.request.get("getAfter")

        if before != "":
            updates = posts.getPostsBefore(
                datetime.strptime(before, "%Y-%m-%d-%H"),
                (users.currentUser.permissions < 1))
        elif after != "":
            updates = posts.getPostsAfter(
                datetime.strptime(after, "%Y-%m-%d-%H"),
                (users.currentUser.permissions < 1))
        else:
            updates = posts.getPostsBefore(datetime.now(),
                                           (users.currentUser.permissions < 1))

        if (len(updates) > 0):
            nextPage = None
            prevPage = None

            if (after != ""):
                nextPage = updates[len(updates) -
                                   1].date.strftime("%Y-%m-%d-%H")
                if (len(updates) == config.PostsPerPage + 1):
                    prevPage = updates[1].date.strftime("%Y-%m-%d-%H")
                    updates.pop(0)

            if (before != ""):
                prevPage = updates[0].date.strftime("%Y-%m-%d-%H")
                if (len(updates) == config.PostsPerPage + 1):
                    nextPage = updates[config.PostsPerPage -
                                       1].date.strftime("%Y-%m-%d-%H")
                    updates.pop()

            else:
                if (len(updates) == config.PostsPerPage + 1):
                    nextPage = updates[config.PostsPerPage -
                                       1].date.strftime("%Y-%m-%d-%H")
                    updates.pop()

            cont = Context({
                "updates": updates,
                "user": users.currentUser,
                "nextPage": nextPage,
                "prevPage": prevPage
            })
        else:
            cont = Context({"user": users.currentUser})
        result = temp.render(cont).encode('utf-8')
        return result
Ejemplo n.º 6
0
def websiteSessionExample(request):
    sessionid = request["uri-suffix"]
    if Sessions.has_key(sessionid):
        session = Sessions[sessionid]
        if session["busy"]:
            return ErrorPages.websiteErrorPage(500, "Session handler busy")
        else:
            return session["handler"]
    else:
        session = { "busy": True, "handler": websiteSessionExampleComponent(sessionid) }
        Sessions[sessionid] = session
        return session["handler"]
Ejemplo n.º 7
0
 def get_page(self, request, resource):
     #First, check permissions
     r, w = self.check_permissions()
     if r:
         #Check and see if we must ignore the request and fetch our own file
         if self.f is None:
             #apparently not
             pagefile = str(urllib.unquote(resource)).lower()
         else:
             #Ok, will get own file
             pagefile = self.f
         try:
             temp = loader.get_template(pagefile + ".html")
         except template.TemplateDoesNotExist:
             #Oops, never heard of that file!
             return ErrorPages.PageNotFound(request, resource)
     else:
         #Red Card! We have an intruder on our site!
         return ErrorPages.AccessDenied(request, resource)
     cont = Context({"user": users.currentUser})
     return temp.render(cont)
Ejemplo n.º 8
0
 def get_page(self, request, resource, post):
     temp = loader.get_template("post.html")
     if users.currentUser.permissions < 1 & post.restricted:
         return ErrorPages.AccessDenied(request, resource,
                                        users.currentUser)
     comments = posts.getComments(post)
     if comments.count() is 0:
         comments = None
     cont = Context({
         "post": post,
         "comments": comments,
         "user": users.currentUser
     })
     return temp.render(cont)
Ejemplo n.º 9
0
    def get_page(self, request, resource):
        split = str(resource).split("/")
        title = urllib.unquote(split[1].encode('ascii')).decode('utf-8')
        date = urllib.unquote(split[0].encode('ascii')).decode('utf-8')
        try:
            post = posts.getPost(title, date)
        except IndexError:
            return ErrorPages.PageNotFound(request, resource)

        try:
            spoke = self.spokes[split[2].lower]
            result = spoke.get_page(request, split[2], post)
        except KeyError:
            result = self.defaultPage.get_page(request, split[2], post)
        return result
Ejemplo n.º 10
0
def websiteSessionExample(request):
    sessionid = request["uri-suffix"]
    if Sessions.has_key(sessionid):
        session = Sessions[sessionid]
        if session["busy"]:
            return ErrorPages.websiteErrorPage(500, "Session handler busy")
        else:
            return session["handler"]
    else:
        session = {
            "busy": True,
            "handler": websiteSessionExampleComponent(sessionid)
        }
        Sessions[sessionid] = session
        return session["handler"]
Ejemplo n.º 11
0
    def get_page(self, request, resource, parent=None):
        r, w = self.check_permissions()
        if r:
            segment = resource.split("/")[0]
            split = resource[1:].split("/", 1)
            if len(split) > 1:
                remainder = split[1]
            else:
                remainder = ""

            if segment is None or segment == "":
                segment = "none"
            segment = segment.lower()
            if segment in self.spokes:
                spoke = self.spokes[segment]
                result = spoke.get_page(request, remainder, self)
            else:
                result = self.defaultPage(f=segment).get_page(
                    request, remainder, self)
        else:
            return ErrorPages.AccessDenied(request, resource)
        return result
Ejemplo n.º 12
0
 def get_page(self, request, resource, post):
     if (users.currentUser.permissions < 2):
         return ErrorPages.AccessDenied(request, resource,
                                        users.currentUser)
     email.mailToSubscribed(post)
     return "Re-emailed Everyone."
Ejemplo n.º 13
0
 def get_page(self, request, resource, post):
     if post.author != users.currentUser.firstName + " " + users.currentUser.lastName and users.currentUser.permissions < 3:
         return ErrorPages.AccessDenied(request, resource)
     temp = loader.get_template("deletepost.html")
     cont = Context({"post": post, "user": users.currentUser})
     return temp.render(cont)
Ejemplo n.º 14
0
class websiteMinimal(component):
    Inboxes = {
        "inbox": "UNUSED",
        "control": "UNUSED",
        "_fileread": "File data",
        "_filecontrol": "Signals from file reader"
    }
    Outboxes = {
        "outbox": "Response dictionaries",
        "signal": "UNUSED",
        "_fileprompt": "Get the file reader to do some reading",
        "_filesignal": "Shutdown the file reader"
    }

    def __init__(self, request):
        self.request = request
        super(websiteMinimal, self).__init__()

    def main(self):
        print "websiteMinimal.handler"
        filename = sanitizePath(self.request["raw-uri"])
        #if os.path.isdir(homedirectory + filename):
        #    if filename[-1:] != "/": filename += "/"
        #    if os.path.isfile(homedirectory + filename + indexfilename):
        #        filename += indexfilename
        #    else:
        #        yield websiteListFilesPage(filename)
        #        return

        filetype = MimeTypes.workoutMimeType(filename)

        error = None
        try:
            if os.path.exists(homedirectory +
                              filename) and not os.path.isdir(homedirectory +
                                                              filename):
                resource = {
                    "type": filetype,
                    "statuscode": "200",
                    #"length" : os.path.getsize(homedirectory + filename)
                }
                self.send(resource, "outbox")
            else:
                print "Error 404, is not file - " + homedirectory + filename
                error = 404

        except OSError, e:
            error = 404

        if error == 404:
            resource = ErrorPages.getErrorPage(404)
            resource["incomplete"] = False
            self.send(resource, "outbox")
            self.send(producerFinished(self), "signal")
            return

        self.filereader = IntelligentFileReader(homedirectory + filename,
                                                50000, 10)
        self.link((self, "_fileprompt"), (self.filereader, "inbox"))
        self.link((self, "_filesignal"), (self.filereader, "control"))
        self.link((self.filereader, "outbox"), (self, "_fileread"))
        self.link((self.filereader, "signal"), (self, "_filecontrol"))
        self.addChildren(self.filereader)
        self.filereader.activate()
        yield 1

        done = False
        while not done:
            yield 1
            while self.dataReady("_fileread") and len(
                    self.outboxes["outbox"]) < 3:
                msg = self.recv("_fileread")
                resource = {"data": msg}
                self.send(resource, "outbox")

            if len(self.outboxes["outbox"]) < 3:
                self.send("GARBAGE", "_fileprompt")

            while self.dataReady(
                    "_filecontrol") and not self.dataReady("_fileread"):
                msg = self.recv("_filecontrol")
                if isinstance(msg, producerFinished):
                    done = True

            self.pause()

        self.send(producerFinished(self), "signal")