Rev414, Atomic save for sites.json and users.json

This commit is contained in:
HelloZeroNet 2015-09-16 01:04:37 +02:00
parent 917393c022
commit 6ae0c1a626
4 changed files with 12 additions and 5 deletions

View file

@ -8,7 +8,7 @@ class Config(object):
def __init__(self, argv): def __init__(self, argv):
self.version = "0.3.2" self.version = "0.3.2"
self.rev = 409 self.rev = 414
self.argv = argv self.argv = argv
self.action = None self.action = None
self.createParser() self.createParser()

View file

@ -25,6 +25,7 @@ from Debug import Debug
from Content import ContentManager from Content import ContentManager
from SiteStorage import SiteStorage from SiteStorage import SiteStorage
from Crypt import CryptHash from Crypt import CryptHash
from util import utils
import SiteManager import SiteManager
@ -88,8 +89,7 @@ class Site:
def saveSettings(self): def saveSettings(self):
sites_settings = json.load(open("%s/sites.json" % config.data_dir)) sites_settings = json.load(open("%s/sites.json" % config.data_dir))
sites_settings[self.address] = self.settings sites_settings[self.address] = self.settings
open("%s/sites.json" % config.data_dir, "w").write(json.dumps(sites_settings, indent=2, sort_keys=True)) utils.atomicWrite("%s/sites.json" % config.data_dir, json.dumps(sites_settings, indent=2, sort_keys=True))
return
# Max site size in MB # Max site size in MB
def getSizeLimit(self): def getSizeLimit(self):

View file

@ -5,7 +5,7 @@ import time
from Crypt import CryptBitcoin from Crypt import CryptBitcoin
from Plugin import PluginManager from Plugin import PluginManager
from Config import config from Config import config
from util import utils
@PluginManager.acceptPlugins @PluginManager.acceptPlugins
class User(object): class User(object):
@ -35,7 +35,7 @@ class User(object):
user_data["master_seed"] = self.master_seed user_data["master_seed"] = self.master_seed
user_data["sites"] = self.sites user_data["sites"] = self.sites
user_data["certs"] = self.certs user_data["certs"] = self.certs
open("%s/users.json" % config.data_dir, "w").write(json.dumps(users, indent=2, sort_keys=True)) utils.atomicWrite("%s/users.json" % config.data_dir, json.dumps(users, indent=2, sort_keys=True))
self.log.debug("Saved") self.log.debug("Saved")
def getAddressAuthIndex(self, address): def getAddressAuthIndex(self, address):

7
src/util/utils.py Normal file
View file

@ -0,0 +1,7 @@
import os
def atomicWrite(dest, content, mode="w"):
open(dest+"-new", mode).write(content)
os.rename(dest, dest+"-old")
os.rename(dest+"-new", dest)
os.unlink(dest+"-old")