diff --git a/src/Config.py b/src/Config.py index 99ad9567..ee9f00f2 100644 --- a/src/Config.py +++ b/src/Config.py @@ -3,7 +3,7 @@ import ConfigParser class Config(object): def __init__(self): - self.version = "0.2.1" + self.version = "0.2.2" self.parser = self.createArguments() argv = sys.argv[:] # Copy command line arguments argv = self.parseConfig(argv) # Add arguments from config file diff --git a/src/Ui/media/Wrapper.coffee b/src/Ui/media/Wrapper.coffee index 4935b141..f52dcfe0 100644 --- a/src/Ui/media/Wrapper.coffee +++ b/src/Ui/media/Wrapper.coffee @@ -69,6 +69,10 @@ class Wrapper @actionWrapperPrompt(message) else if cmd == "wrapperSetViewport" # Set the viewport @actionSetViewport(message) + else if cmd == "wrapperGetLocalStorage" + @actionGetLocalStorage(message) + else if cmd == "wrapperSetLocalStorage" + @actionSetLocalStorage(message) else # Send to websocket if message.id < 1000000 @ws.send(message) # Pass message to websocket @@ -126,6 +130,16 @@ class Wrapper $('').attr("content", @toHtmlSafe message.params).appendTo("head") + actionGetLocalStorage: (message) -> + data = localStorage.getItem "site.#{window.address}" + if data then data = JSON.parse(data) + @sendInner {"cmd": "response", "to": message.id, "result": data} + + + actionSetLocalStorage: (message) -> + back = localStorage.setItem "site.#{window.address}", JSON.stringify(message.params) + + # EOF actions diff --git a/src/Ui/media/all.js b/src/Ui/media/all.js index c29fd146..0c4ae7eb 100644 --- a/src/Ui/media/all.js +++ b/src/Ui/media/all.js @@ -807,6 +807,10 @@ jQuery.extend( jQuery.easing, return this.actionWrapperPrompt(message); } else if (cmd === "wrapperSetViewport") { return this.actionSetViewport(message); + } else if (cmd === "wrapperGetLocalStorage") { + return this.actionGetLocalStorage(message); + } else if (cmd === "wrapperSetLocalStorage") { + return this.actionSetLocalStorage(message); } else { if (message.id < 1000000) { return this.ws.send(message); @@ -891,6 +895,24 @@ jQuery.extend( jQuery.easing, } }; + Wrapper.prototype.actionGetLocalStorage = function(message) { + var data; + data = localStorage.getItem("site." + window.address); + if (data) { + data = JSON.parse(data); + } + return this.sendInner({ + "cmd": "response", + "to": message.id, + "result": data + }); + }; + + Wrapper.prototype.actionSetLocalStorage = function(message) { + var back; + return back = localStorage.setItem("site." + window.address, JSON.stringify(message.params)); + }; + Wrapper.prototype.onOpenWebsocket = function(e) { this.ws.cmd("channelJoin", { "channel": "siteChanged" diff --git a/src/User/User.py b/src/User/User.py index 46642515..14b7072e 100644 --- a/src/User/User.py +++ b/src/User/User.py @@ -25,9 +25,9 @@ class User: self.log.debug("Saved") - # Get BIP32 address from site address - # Return: BIP32 auth address - def getAuthAddress(self, address): + # Get user site data + # Return: {"auth_address": "xxx", "auth_privatekey": "xxx"} + def getSiteData(self, address): if not address in self.sites: # Genreate new BIP32 child key based on site address s = time.time() address_id = int(address.encode("hex"), 16) # Convert site address to int @@ -38,12 +38,17 @@ class User: } self.save() self.log.debug("Added new site: %s in %.3fs" % (address, time.time()-s)) + return self.sites[address] - return self.sites[address]["auth_address"] + + # Get BIP32 address from site address + # Return: BIP32 auth address + def getAuthAddress(self, address): + return self.getSiteData(address)["auth_address"] def getAuthPrivatekey(self, address): - return self.sites[address]["auth_privatekey"] + return self.getSiteData(address)["auth_privatekey"] @@ -51,3 +56,4 @@ class User: def setData(self, data): for key, val in data.items(): setattr(self, key, val) + diff --git a/src/User/UserManager.py b/src/User/UserManager.py index e4983c45..2926027c 100644 --- a/src/User/UserManager.py +++ b/src/User/UserManager.py @@ -60,6 +60,6 @@ def getCurrent(): def reload(): import imp global users, User - users.clear() # Remove all items User = imp.load_source("User", "src/User/User.py").User # Reload source + users.clear() # Remove all items load()