version 0.2.6, database support, dbrebuild and dbquery startup commands, connection firstchar error bugfix, log python gevent msgpack lib versions, sitestorage class for site file operations, dbquery websocket api command

This commit is contained in:
HelloZeroNet 2015-03-19 21:19:14 +01:00
parent bce0f56d45
commit 3b8d49207e
16 changed files with 699 additions and 120 deletions

View file

@ -147,7 +147,7 @@ class UiRequest:
query_string=query_string,
wrapper_key=site.settings["wrapper_key"],
permissions=json.dumps(site.settings["permissions"]),
show_loadingscreen=json.dumps(not os.path.isfile(site.getPath(inner_path))),
show_loadingscreen=json.dumps(not site.storage.isFile(inner_path)),
homepage=config.homepage
)

View file

@ -116,6 +116,8 @@ class UiWebsocket:
func = self.actionFileGet
elif cmd == "fileQuery":
func = self.actionFileQuery
elif cmd == "dbQuery":
func = self.actionDbQuery
# Admin commands
elif cmd == "sitePause" and "ADMIN" in permissions:
func = self.actionSitePause
@ -271,7 +273,7 @@ class UiWebsocket:
try:
import base64
content = base64.b64decode(content_base64)
open(self.site.getPath(inner_path), "wb").write(content)
self.site.storage.write(inner_path, content)
except Exception, err:
return self.response(to, "Write error: %s" % err)
@ -284,17 +286,30 @@ class UiWebsocket:
# Find data in json files
def actionFileQuery(self, to, dir_inner_path, query):
# s = time.time()
dir_path = self.site.getPath(dir_inner_path)
dir_path = self.site.storage.getPath(dir_inner_path)
rows = list(QueryJson.query(dir_path, query))
# self.log.debug("FileQuery %s %s done in %s" % (dir_inner_path, query, time.time()-s))
return self.response(to, rows)
# Sql query
def actionDbQuery(self, to, query, params=None):
rows = []
try:
res = self.site.storage.query(query, params)
except Exception, err: # Response the error to client
return self.response(to, {"error": str(err)})
# Convert result to dict
for row in res:
rows.append(dict(row))
return self.response(to, rows)
# Return file content
def actionFileGet(self, to, inner_path):
try:
self.site.needFile(inner_path, priority=1)
body = open(self.site.getPath(inner_path)).read()
body = self.site.storage.read(inner_path)
except:
body = None
return self.response(to, body)
@ -363,7 +378,7 @@ class UiWebsocket:
site.saveSettings()
site.worker_manager.running = False
site.worker_manager.stopWorkers()
site.deleteFiles()
site.storage.deleteFiles()
SiteManager.delete(address)
site.updateWebsocket()
else: