def render(self, environ, start_response): path = environ["PATH_INFO"].lstrip("/") query_string = environ["QUERY_STRING"].lstrip("/") params = cgi.parse_qs(query_string) content = params.get('content', [''])[0] space = params.get('render_space', None) if space: space = space[0] else: start_response('200 OK', [('Content-Type', "text/html")]) return 'Parameter "space" not supplied' doc = params.get('render_doc', None) if doc: doc = doc[0] else: start_response('200 OK', [('Content-Type', "text/html")]) return 'Parameter "doc" not supplied' ctx = RequestContext(application="", actor="", method="", env=environ, start_response=start_response, path=path, params=None) ctx.params = self._getParamsFromEnv(environ, ctx) doc, _ = self.pageprocessor.getDoc(space, doc, ctx) doc = doc.copy() doc.source = content doc.loadFromSource() doc.preprocess() content, doc = doc.executeMacrosDynamicWiki(ctx=ctx) page = self.confluence2htmlconvertor.convert( content, doc=doc, requestContext=ctx, page=self.pageprocessor.getpage(), paramsExtra=ctx.params) if not 'postprocess' in page.processparameters or page.processparameters['postprocess']: page.body = page.body.replace("$$space", space) page.body = page.body.replace("$$page", doc.original_name) page.body = page.body.replace("$$path", doc.path) page.body = page.body.replace("$$querystr", ctx.env['QUERY_STRING']) page.body = page.body.replace("$$$menuright", "") if "todestruct" in doc.__dict__: doc.destructed = True start_response('200 OK', [('Content-Type', "text/html")]) return str(page)
def router(self, environ, start_response): path = environ["PATH_INFO"].lstrip("/") print(("path:%s" % path)) pathparts = path.split('/') if pathparts[0] == 'wiki': pathparts = pathparts[1:] if path.find("favicon.ico") != -1: return self.pageprocessor.processor_page(environ, start_response, self.filesroot, "favicon.ico", prefix="") ctx = RequestContext(application="", actor="", method="", env=environ, start_response=start_response, path=path, params=None) ctx.params = self._getParamsFromEnv(environ, ctx) ctx.env['JS_CTX'] = ctx for proxypath, proxy in self.proxies.items(): if path.startswith(proxypath.lstrip('/')): return self.pageprocessor.process_proxy(ctx, proxy) if path.find("jslib/") == 0: path = path[6:] user = "******" # self.pageprocessor.log(ctx, user, path) return self.pageprocessor.processor_page(environ, start_response, self.jslibroot, path, prefix="jslib/") if path.find("images/") == 0: space, image = pathparts[1:3] spaceObject = self.getSpace(space) image = image.lower() if image in spaceObject.docprocessor.images: path2 = j.tools.path.get(spaceObject.docprocessor.images[image]) return self.pageprocessor.processor_page( environ, start_response, path2.dirname(), path2.basename(), prefix="images") ctx.start_response('404', []) if path.find("files/specs/") == 0: path = path[6:] user = "******" self.pageprocessor.log(ctx, user, path) return self.pageprocessor.processor_page(environ, start_response, self.filesroot, path, prefix="files/") if path.find(".files") != -1: user = "******" self.pageprocessor.log(ctx, user, path) space = pathparts[0].lower() path = "/".join(pathparts[2:]) sploader = self.spacesloader.getSpaceFromId(space) filesroot = j.tools.path.get(sploader.model.path).joinpath(".files") return self.pageprocessor.processor_page(environ, start_response, filesroot, path, prefix="") if path.find(".static") != -1: user = "******" self.pageprocessor.log(ctx, user, path) space, pagename = self.pageprocessor.path2spacePagename(path) space = pathparts[0].lower() path = "/".join(pathparts[2:]) sploader = self.spacesloader.getSpaceFromId(space) filesroot = j.tools.path.get(sploader.model.path).joinpath(".static") return self.pageprocessor.processor_page( environ, start_response, filesroot, path, prefix="", includedocs=True, ctx=ctx, space=space) # user is logged in now is_session, session = self.startSession(ctx, path) if not is_session: return session user = session['user'] match = pathparts[0] path = "" if len(pathparts) > 1: path = "/".join(pathparts[1:]) if match == "restmachine": return self.rest.processor_rest(environ, start_response, path, human=False, ctx=ctx) elif match == "elfinder": return self.pageprocessor.process_elfinder(path, ctx) elif match == "restextmachine": if not self.authentication_method: try: j.clients.osis.getByInstance(self.hrd.get('instance', 'main')) except Exception as e: self.pageprocessor.raiseError( ctx, msg="You have a minimal portal with no OSIS configured", msginfo="", errorObject=None, httpcode="500 Internal Server Error") return self.rest.processor_restext(environ, start_response, path, human=False, ctx=ctx) elif match == "rest": space, pagename = self.pageprocessor.path2spacePagename(path.strip("/")) self.pageprocessor.log(ctx, user, path, space, pagename) return self.rest.processor_rest(environ, start_response, path, ctx=ctx) elif match == "restext": space, pagename = self.pageprocessor.path2spacePagename(path.strip("/")) self.pageprocessor.log(ctx, user, path, space, pagename) return self.rest.processor_restext(environ, start_response, path, ctx=ctx) elif match == "ping": status = '200 OK' headers = [ ('Content-Type', "text/html"), ] start_response(status, headers) return ["pong"] elif match == "files": self.pageprocessor.log(ctx, user, path) return self.pageprocessor.processor_page(environ, start_response, self.filesroot, path, prefix="files") elif match == "specs": return self.pageprocessor.processor_page(environ, start_response, "specs", path, prefix="specs") elif match == "appservercode": return self.pageprocessor.processor_page( environ, start_response, "code", path, prefix="code", webprefix="appservercode") elif match == "lib": # print self.libpath return self.pageprocessor.processor_page(environ, start_response, self.libpath, path, prefix="lib") elif match == 'render': return self.render(environ, start_response) else: path = '/'.join(pathparts) ctx.params["path"] = '/'.join(pathparts) space, pagename = self.pageprocessor.path2spacePagename(path) self.pageprocessor.log(ctx, user, path, space, pagename) pagestring = str(self.pageprocessor.returnDoc(ctx, start_response, space, pagename, {})) return [pagestring]