2015-02-20 01:37:12 +01:00
|
|
|
from gevent import monkey; monkey.patch_all()
|
|
|
|
import urllib, zipfile, os, ssl, httplib, socket
|
|
|
|
import cStringIO as StringIO
|
|
|
|
|
|
|
|
def update():
|
|
|
|
# Gevent https bug workaround (https://github.com/gevent/gevent/issues/477)
|
|
|
|
reload(socket)
|
|
|
|
reload(httplib)
|
|
|
|
reload(ssl)
|
|
|
|
|
|
|
|
print "Downloading.",
|
|
|
|
file = urllib.urlopen("https://github.com/HelloZeroNet/ZeroNet/archive/master.zip")
|
|
|
|
data = StringIO.StringIO()
|
|
|
|
while True:
|
|
|
|
buff = file.read(1024*16)
|
|
|
|
if not buff: break
|
|
|
|
data.write(buff)
|
|
|
|
print ".",
|
version 0.2.7, plugin system, multiuser plugin for zeroproxies, reworked imports, cookie parse, stats moved to plugin, usermanager class, dont generate site auth on listing, multiline notifications, allow server side prompt from user, update script keep plugins disabled status
2015-03-24 01:33:09 +01:00
|
|
|
print "Downloaded."
|
|
|
|
|
|
|
|
# Checking plugins
|
|
|
|
plugins_enabled = []
|
|
|
|
plugins_disabled = []
|
|
|
|
if os.path.isdir("plugins"):
|
|
|
|
for dir in os.listdir("plugins"):
|
|
|
|
if dir.startswith("disabled-"):
|
|
|
|
plugins_disabled.append(dir.replace("disabled-", ""))
|
|
|
|
else:
|
|
|
|
plugins_enabled.append(dir)
|
|
|
|
print "Plugins:", plugins_enabled, plugins_disabled
|
|
|
|
|
2015-02-20 01:37:12 +01:00
|
|
|
|
|
|
|
print "Extracting...",
|
|
|
|
zip = zipfile.ZipFile(data)
|
|
|
|
for inner_path in zip.namelist():
|
version 0.2.7, plugin system, multiuser plugin for zeroproxies, reworked imports, cookie parse, stats moved to plugin, usermanager class, dont generate site auth on listing, multiline notifications, allow server side prompt from user, update script keep plugins disabled status
2015-03-24 01:33:09 +01:00
|
|
|
inner_path = inner_path.replace("\\", "/") # Make sure we have unix path
|
2015-02-20 01:37:12 +01:00
|
|
|
print ".",
|
|
|
|
dest_path = inner_path.replace("ZeroNet-master/", "")
|
|
|
|
if not dest_path: continue
|
|
|
|
|
version 0.2.7, plugin system, multiuser plugin for zeroproxies, reworked imports, cookie parse, stats moved to plugin, usermanager class, dont generate site auth on listing, multiline notifications, allow server side prompt from user, update script keep plugins disabled status
2015-03-24 01:33:09 +01:00
|
|
|
|
|
|
|
# Keep plugin disabled/enabled status
|
|
|
|
match = re.match("plugins/([^/]+)", dest_path)
|
|
|
|
if match:
|
|
|
|
plugin_name = match.group(1).replace("disabled-","")
|
|
|
|
if plugin_name in plugins_enabled: # Plugin was enabled
|
|
|
|
dest_path = dest_path.replace("plugins/disabled-"+plugin_name, "plugins/"+plugin_name)
|
|
|
|
else: # Plugin was disabled
|
|
|
|
dest_path = dest_path.replace("plugins/"+plugin_name, "plugins/disabled-"+plugin_name)
|
|
|
|
print "P",
|
|
|
|
|
2015-02-20 01:37:12 +01:00
|
|
|
dest_dir = os.path.dirname(dest_path)
|
version 0.2.7, plugin system, multiuser plugin for zeroproxies, reworked imports, cookie parse, stats moved to plugin, usermanager class, dont generate site auth on listing, multiline notifications, allow server side prompt from user, update script keep plugins disabled status
2015-03-24 01:33:09 +01:00
|
|
|
|
2015-02-20 01:37:12 +01:00
|
|
|
if dest_dir and not os.path.isdir(dest_dir):
|
|
|
|
os.makedirs(dest_dir)
|
|
|
|
|
|
|
|
if dest_dir != dest_path.strip("/"):
|
|
|
|
data = zip.read(inner_path)
|
|
|
|
open(dest_path, 'wb').write(data)
|
|
|
|
|
|
|
|
print "Done."
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
update()
|