Remove unnecessary file
This commit is contained in:
parent
4265c4126a
commit
59a04f101d
1 changed files with 0 additions and 113 deletions
|
@ -1,113 +0,0 @@
|
||||||
import os
|
|
||||||
import re
|
|
||||||
import itertools
|
|
||||||
|
|
||||||
from Plugin import PluginManager
|
|
||||||
from Config import config
|
|
||||||
from util import helper
|
|
||||||
|
|
||||||
|
|
||||||
# Keep archive open for faster reponse times for large sites
|
|
||||||
archive_cache = {}
|
|
||||||
|
|
||||||
|
|
||||||
def closeArchive(archive_path):
|
|
||||||
if archive_path in archive_cache:
|
|
||||||
del archive_cache[archive_path]
|
|
||||||
|
|
||||||
|
|
||||||
def openArchive(archive_path):
|
|
||||||
if archive_path not in archive_cache:
|
|
||||||
if archive_path.endswith("tar.gz"):
|
|
||||||
import tarfile
|
|
||||||
archive_cache[archive_path] = tarfile.open(archive_path, "r:gz")
|
|
||||||
elif archive_path.endswith("tar.bz2"):
|
|
||||||
import tarfile
|
|
||||||
archive_cache[archive_path] = tarfile.open(archive_path, "r:bz2")
|
|
||||||
else:
|
|
||||||
import zipfile
|
|
||||||
archive_cache[archive_path] = zipfile.ZipFile(archive_path)
|
|
||||||
helper.timer(5, lambda: closeArchive(archive_path)) # Close after 5 sec
|
|
||||||
|
|
||||||
archive = archive_cache[archive_path]
|
|
||||||
return archive
|
|
||||||
|
|
||||||
def openArchiveFile(archive_path, path_within):
|
|
||||||
archive = openArchive(archive_path)
|
|
||||||
if archive_path.endswith(".zip"):
|
|
||||||
return archive.open(path_within)
|
|
||||||
else:
|
|
||||||
return archive.extractfile(path_within.encode("utf8"))
|
|
||||||
|
|
||||||
|
|
||||||
@PluginManager.registerTo("UiRequest")
|
|
||||||
class UiRequestPlugin(object):
|
|
||||||
def actionSiteMedia(self, path, **kwargs):
|
|
||||||
if ".zip/" in path or ".tar.gz/" in path:
|
|
||||||
path_parts = self.parsePath(path)
|
|
||||||
file_path = u"%s/%s/%s" % (config.data_dir, path_parts["address"], path_parts["inner_path"].decode("utf8"))
|
|
||||||
match = re.match("^(.*\.(?:tar.gz|tar.bz2|zip))/(.*)", file_path)
|
|
||||||
archive_path, path_within = match.groups()
|
|
||||||
if not os.path.isfile(archive_path):
|
|
||||||
site = self.server.site_manager.get(path_parts["address"])
|
|
||||||
if not site:
|
|
||||||
self.error404(path)
|
|
||||||
# Wait until file downloads
|
|
||||||
result = site.needFile(site.storage.getInnerPath(archive_path), priority=10)
|
|
||||||
# Send virutal file path download finished event to remove loading screen
|
|
||||||
site.updateWebsocket(file_done=site.storage.getInnerPath(file_path))
|
|
||||||
if not result:
|
|
||||||
return self.error404(path)
|
|
||||||
try:
|
|
||||||
file = openArchiveFile(archive_path, path_within)
|
|
||||||
content_type = self.getContentType(file_path)
|
|
||||||
self.sendHeader(200, content_type=content_type, noscript=kwargs.get("header_noscript", False))
|
|
||||||
return self.streamFile(file)
|
|
||||||
except Exception, err:
|
|
||||||
self.log.debug("Error opening archive file: %s" % err)
|
|
||||||
return self.error404(path)
|
|
||||||
|
|
||||||
return super(UiRequestPlugin, self).actionSiteMedia(path, **kwargs)
|
|
||||||
|
|
||||||
def streamFile(self, file):
|
|
||||||
while 1:
|
|
||||||
try:
|
|
||||||
block = file.read(60 * 1024)
|
|
||||||
if block:
|
|
||||||
yield block
|
|
||||||
else:
|
|
||||||
raise StopIteration
|
|
||||||
except StopIteration:
|
|
||||||
file.close()
|
|
||||||
break
|
|
||||||
|
|
||||||
|
|
||||||
@PluginManager.registerTo("SiteStorage")
|
|
||||||
class SiteStoragePlugin(object):
|
|
||||||
def isFile(self, inner_path):
|
|
||||||
if ".zip/" in inner_path or ".tar.gz/" in inner_path or ".tar.bz2/" in inner_path:
|
|
||||||
match = re.match("^(.*\.(?:tar.gz|tar.bz2|zip))/(.*)", inner_path)
|
|
||||||
inner_archive_path, path_within = match.groups()
|
|
||||||
return super(SiteStoragePlugin, self).isFile(inner_archive_path)
|
|
||||||
else:
|
|
||||||
return super(SiteStoragePlugin, self).isFile(inner_path)
|
|
||||||
|
|
||||||
def getDbFiles(self):
|
|
||||||
for item in super(SiteStoragePlugin, self).getDbFiles():
|
|
||||||
yield item
|
|
||||||
|
|
||||||
# Search for archive files
|
|
||||||
for content_inner_path in self.site.content_manager.listContents():
|
|
||||||
content = self.site.content_manager.contents[content_inner_path]
|
|
||||||
if not content:
|
|
||||||
merged_site.log.error("[MISSING] %s" % content_inner_path)
|
|
||||||
continue
|
|
||||||
|
|
||||||
file_relative_paths = itertools.chain(
|
|
||||||
content.get("files", {}).iteritems(),
|
|
||||||
content.get("files_optional", {}).iteritems()
|
|
||||||
)
|
|
||||||
|
|
||||||
for file_relative_path, node in file_relative_paths:
|
|
||||||
if "zeronet-archive" in file_relative_path:
|
|
||||||
print node
|
|
Loading…
Reference in a new issue