def render_view(self, view='404.html', getfile=False): """ Fetches the raw HTML temlate from the given directory """ if not getfile: getfile = self.apppath + '/views/' + str(view) else: getfile = getfile.replace('.', '') + '/views/' + str(view) return serve_file(getfile)
def serve(self): """ Webservice Serves the request check if it's a media request else check the world directory if not then kickin the controllers """ verzoek = self.url[1:] or 'index.html' if self.url.startswith('/' + self.m.settings.dbmedia_folder + '/'): return self.download() else: w = self.apppath + '/world/' # the result sttc = serve_file(w + verzoek) if sttc != '404': data = self.alt_view(sttc) return self.commit([self.status, self.headers, data]) else: return self.create_page()
def load_class(self, module, path='controllers', blanc_env=False, func=False, forcepath=False): if not forcepath: forcepath = self.apppath try: if not blanc_env: blanc_env = dict() ophalen = forcepath + '/' + path + '/' + module + '.py' exec(serve_file(ophalen), blanc_env) if not func and module.title() in blanc_env: q = blanc_env[module.title()] return q(self) else: return blanc_env except: return False
def load_languages(self, folder='languages', extend=False): pad = str(self.folder) + '/' + str(self.appfolder) + '/' + str(folder) for root, dirs, files in os.walk(pad): for taal in files: if taal.endswith('.lang') and not taal.startswith('__'): try: d = {} c = taal.split('.lang')[0] b = pad + '/' + taal waarde = serve_file(b) opt = literal_evil(waarde) for k, v in opt.items(): v = v.decode('string-escape') v = v.decode('utf8') d[hash(k)] = v if extend: self.language[c].append(d) else: self.language[c] = d except: pass
def forbidden(self): # serve a 403 page self.status = '403 forbidden' output = serve_file(self.apppath + '/views/' \ + memory.base_template + '/http/403.html') return output
def raw_view(self, pagina, **kwargs): #quick and dirty path = self.apppath + '/views/' if 'getfile' in kwargs: path = kwargs['getfile'] return serve_file(path + pagina)
def server(environ, start_response): app = '' eget = environ.get if not eget('PATH_INFO', None) and eget('REQUEST_URI', None): items = environ['REQUEST_URI'].split('?') environ['PATH_INFO'] = items[0] if len(items) > 1: environ['QUERY_STRING'] = items[1] # some vars ip = environ['REMOTE_ADDR'] uri = environ['PATH_INFO'] ext = extension(uri) response_headers = False status = '200 ok' output = ' ' """ block some bogus request show our unimplemented idiot filter by to many bad requests """ if ip in memory.vuurmuur and memory.vuurmuur[ip] >= 8: #to many errors from this ip, idiot filter not implemented status = '501 Not Implemented' pad = memory.folder + '/' + memory.appfolder + '/views/' + memory.base_template \ + '/http/blocked.html' output = serve_file(pad) start_response(status, [('Content-type', 'text/html')]) # to many errors from this ip return [_(output)] elif [k for k in memory.settings.blacklist if k in uri.lower()]: if ip in memory.vuurmuur: memory.vuurmuur[ip] = memory.vuurmuur[ip] + 1 else: memory.vuurmuur.update({ip: 1}) status = '403 forbidden' output = serve_file(memory.folder + '/' + memory.appfolder + '/views/' \ + memory.base_template + '/http/403.html') start_response(status, [('Content-type', 'text/html')]) return [_(output)] else: try: # static requests if uri.lower() in ['/favicon.ico', '/robots.txt', '/humans.txt']: output = serve_file(memory.folder + '/' + 'static' + uri) elif uri.startswith('/' + memory.settings.media_folder + '/'): bst = uri.replace('/' + memory.settings.media_folder + '/', '') output = serve_file(memory.folder + '/' + memory.settings.media_folder + '/' + str(bst)) # output directly + cache else: app = Simplecms(environ, memory) status, response_headers, output = app.serve() # del app except: print traceback.format_exc() if memory.settings.log: try: fout = traceback.format_exc() print(fout) output = '404' if app: if not hasattr(app, 'create_ticket'): app = Simplecms(environ, memory) app.create_ticket(ticket=app.encrypt(str(fout)),\ data=fout) except: output = '404' else: # testing output = '404' """ if a request returns a simple 404 string we'll show an error page or """ del app if output == '404': status = '404 not found' ext = 'text/html' output = serve_file(memory.folder + '/' + memory.appfolder \ + '/views/' + memory.base_template + '/http/404.html') elif output == 'redirect': output = serve_file(memory.folder + '/' + memory.appfolder \ + '/views/' + memory.base_template + '/http/307.html') if not response_headers: req = ext.split('/') if [k for k in ['image', 'css', 'javascript'] if k in req]: response_headers = [('Content-type', ext), ('Cache-Control', 'public, max-age=290304000')] else: response_headers = [('Content-type', ext)] else: #if not content type in responseheaders response_headers.append(('Content-type', ext)) start_response(status, response_headers) return [_(output)]
else: return bytes(s.encode(enc)) def get_folder(): p = __file__.split('simplecms_server') folder = os.path.abspath(p[0]) sys.path.append(folder) return folder memory = Memory() memory.folder = get_folder() # enforce the local default path memory.config(serve_file(memory.folder + '/config.scms')) # ad import path sys.path.append(memory.folder + '/' + memory.appfolder) # overwrite on sys.args request if len(sys.argv) == 2: memory.settings.port = int(sys.argv[1]) if len(sys.argv) == 3: memory.settings.port = int(sys.argv[1]) memory.settings.hostname = str(sys.argv[2]) def startserver(port=memory.settings.port, hostname=memory.settings.hostname): pid = os.getpid() echo("SimpleCMS - v{0}.{1}", [__version__, __release__], ret=False) echo("A fast,stable,secure and minimalistic framework", ret=False)