Esempio n. 1
0
 def __init__(self):
     self.lasttick = 0
     self.retcache = {}
     self.path = homedir + '/stats.sqlite'
     self.db = db.DB(self.path)
     self.dblock = Lock()
     self.httpd = make_server(cfgval("host"), cfgval("port"),
         httpd(self),
         handler_class=httphandler)
     sel = dbselectors.BaseSelector()
     sel.pathid = None
     sel.server = self
     sel.db = self.db
     sel.qopt = api.Qopt({})
     caches.make(sel)
     self.tick()
     thread = Thread(target=Server.do_http, args=(self, ))
     thread.setDaemon(True)
     thread.start()
     self.starttime = 0
     with self.dblock:
         with self.db:
             api.make(self,
                     self.db, {}, "/")
     print("Created initial cache, server running.")
Esempio n. 2
0
 def __call__(self, environ, start_response):
     sys.stdout.write(((datetime.now().strftime('%D %T')
     + ': ' + environ['REMOTE_ADDR']
     + ': ' + environ['PATH_INFO'] + '?' + environ['QUERY_STRING']).strip()
     + '...'))
     result = b""
     t = time.time()
     self.server.starttime = t
     try:
         r = api.make(self.server,
             self.server.db, urllib.parse.parse_qs(
                     environ['QUERY_STRING'], True), environ['PATH_INFO'])
     except:
         r = (
         'text/html',
         '500 Internal Server Error',
         web.err500.page(dbselectors.BaseSelector()).encode())
         print((traceback.format_exc()))
     sys.stdout.write('...done [%f]\n' % (time.time() - t))
     if len(r) == 3:
         t, status, result = r
         headers = [('Content-type', '%s' % t)]
     elif len(r) == 2:
         t = r[0]
         args = r[1:]
         if t == 'redirect':
             status = "301 Moved Permanently"
             headers = [('Location', '%s' % args[0])]
     start_response(status, headers)
     return [result]
Esempio n. 3
0
 def __call__(self, environ, start_response):
     print(((datetime.now().strftime('%D %T')
     + ': ' + environ['REMOTE_ADDR']
     + ': ' + environ['PATH_INFO'] + '?' + environ['QUERY_STRING']).strip()))
     result = b""
     r = api.make(self.server,
         self.server.db, urllib.parse.parse_qs(
                 environ['QUERY_STRING'], True), environ['PATH_INFO'])
     if len(r) == 3:
         t, status, result = r
         headers = [('Content-type', '%s' % t)]
     elif len(r) == 2:
         t = r[0]
         args = r[1:]
         if t == 'redirect':
             status = "301 Moved Permanently"
             headers = [('Location', '%s' % args[0])]
     start_response(status, headers)
     return [result]