From 5f5f128b8a5122fb82900beee115383bff823349 Mon Sep 17 00:00:00 2001 From: HelloZeroNet Date: Sun, 18 Oct 2015 22:58:02 +0200 Subject: [PATCH] Rev473, Better atomic save, Fix sitePublish command when ip_external definied --- src/Config.py | 2 +- src/Site/SiteManager.py | 4 ++-- src/main.py | 3 ++- src/util/helper.py | 5 ++++- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Config.py b/src/Config.py index 76ff0ce3..67a1761b 100644 --- a/src/Config.py +++ b/src/Config.py @@ -8,7 +8,7 @@ class Config(object): def __init__(self, argv): self.version = "0.3.2" - self.rev = 472 + self.rev = 473 self.argv = argv self.action = None self.createParser() diff --git a/src/Site/SiteManager.py b/src/Site/SiteManager.py index 7f26b40c..19f8b44a 100644 --- a/src/Site/SiteManager.py +++ b/src/Site/SiteManager.py @@ -5,7 +5,7 @@ import os from Plugin import PluginManager from Config import config - +from util import helper @PluginManager.acceptPlugins class SiteManager(object): @@ -73,7 +73,7 @@ class SiteManager(object): # Delete from sites.json sites_settings = json.load(open("%s/sites.json" % config.data_dir)) del(sites_settings[address]) - open("%s/sites.json" % config.data_dir, "w").write(json.dumps(sites_settings, indent=2, sort_keys=True)) + helper.atomicWrite("%s/sites.json" % config.data_dir, json.dumps(sites_settings, indent=2, sort_keys=True)) # Lazy load sites def list(self): diff --git a/src/main.py b/src/main.py index 5eb112f3..61d38792 100644 --- a/src/main.py +++ b/src/main.py @@ -214,13 +214,14 @@ class Actions(object): def sitePublish(self, address, peer_ip=None, peer_port=15441, inner_path="content.json"): global file_server from Site import Site + from Site import SiteManager from File import FileServer # We need fileserver to handle incoming file requests logging.info("Creating FileServer....") file_server = FileServer() file_server_thread = gevent.spawn(file_server.start, check_sites=False) # Dont check every site integrity file_server.openport() - site = file_server.sites[address] + site = SiteManager.site_manager.list()[address] site.settings["serving"] = True # Serving the site even if its disabled if peer_ip: # Announce ip specificed site.addPeer(peer_ip, peer_port) diff --git a/src/util/helper.py b/src/util/helper.py index b78d06ef..8b46be77 100644 --- a/src/util/helper.py +++ b/src/util/helper.py @@ -5,7 +5,10 @@ import re def atomicWrite(dest, content, mode="w"): - open(dest + "-new", mode).write(content) + with open(dest + "-new", mode) as f: + f.write(content) + f.flush() + os.fsync(f.fileno()) os.rename(dest, dest + "-old") os.rename(dest + "-new", dest) os.unlink(dest + "-old")