mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-07 18:03:48 +00:00
add limit to download a dir
This commit is contained in:
@@ -29,7 +29,7 @@ from service import create_org, get_orgs_by_user, get_org_by_url_prefix, \
|
|||||||
from service import get_related_users_by_repo, get_related_users_by_org_repo
|
from service import get_related_users_by_repo, get_related_users_by_org_repo
|
||||||
|
|
||||||
from service import CCNET_CONF_PATH, CCNET_SERVER_ADDR, CCNET_SERVER_PORT, \
|
from service import CCNET_CONF_PATH, CCNET_SERVER_ADDR, CCNET_SERVER_PORT, \
|
||||||
MAX_UPLOAD_FILE_SIZE, HTTP_SERVER_ROOT
|
MAX_UPLOAD_FILE_SIZE, MAX_DOWNLOAD_DIR_SIZE, HTTP_SERVER_ROOT
|
||||||
|
|
||||||
from htmldiff import HtmlDiff
|
from htmldiff import HtmlDiff
|
||||||
|
|
||||||
|
@@ -120,6 +120,15 @@ if config.has_option('httpserver', 'max_upload_size'):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
MAX_DOWNLOAD_DIR_SIZE = 100 * (2 ** 20) # Default max size of a downloadable dir
|
||||||
|
if config.has_option('httpserver', 'max_download_dir_size'):
|
||||||
|
try:
|
||||||
|
max_download_dir_size_mb = config.getint('httpserver', 'max_download_dir_size')
|
||||||
|
if max_download_dir_size_mb > 0:
|
||||||
|
MAX_DOWNLOAD_DIR_SIZE = max_download_dir_size_mb * (2 ** 20)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
|
||||||
if CCNET_SERVER_ADDR:
|
if CCNET_SERVER_ADDR:
|
||||||
enable_https = config.getboolean('httpserver', 'https') if \
|
enable_https = config.getboolean('httpserver', 'https') if \
|
||||||
config.has_option('httpserver', 'https') else False
|
config.has_option('httpserver', 'https') else False
|
||||||
|
17
views.py
17
views.py
@@ -47,7 +47,7 @@ from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_repos, get_emailusers, \
|
|||||||
get_related_users_by_repo, get_related_users_by_org_repo, HtmlDiff, \
|
get_related_users_by_repo, get_related_users_by_org_repo, HtmlDiff, \
|
||||||
get_session_info, get_group_repoids, get_repo_owner, get_file_id_by_path, \
|
get_session_info, get_group_repoids, get_repo_owner, get_file_id_by_path, \
|
||||||
get_repo_history_limit, set_repo_history_limit, MAX_UPLOAD_FILE_SIZE, \
|
get_repo_history_limit, set_repo_history_limit, MAX_UPLOAD_FILE_SIZE, \
|
||||||
get_commit
|
get_commit, MAX_DOWNLOAD_DIR_SIZE
|
||||||
from pysearpc import SearpcError
|
from pysearpc import SearpcError
|
||||||
|
|
||||||
from signals import repo_created, repo_deleted
|
from signals import repo_created, repo_deleted
|
||||||
@@ -2927,6 +2927,16 @@ def repo_download_dir(request, repo_id):
|
|||||||
if allow_download:
|
if allow_download:
|
||||||
dir_id = seafserv_threaded_rpc.get_dirid_by_path (repo.head_cmmt_id,
|
dir_id = seafserv_threaded_rpc.get_dirid_by_path (repo.head_cmmt_id,
|
||||||
path.encode('utf-8'))
|
path.encode('utf-8'))
|
||||||
|
|
||||||
|
try:
|
||||||
|
total_size = seafserv_threaded_rpc.get_dir_size(dir_id)
|
||||||
|
except Exception, e:
|
||||||
|
logger.error(str(e))
|
||||||
|
return render_error(request, _(u'Internal Error'))
|
||||||
|
|
||||||
|
if total_size > MAX_DOWNLOAD_DIR_SIZE:
|
||||||
|
return render_error(request, _(u'Unable to download directory "%s": size too large') % dirname)
|
||||||
|
|
||||||
token = seafserv_rpc.web_get_access_token(repo_id,
|
token = seafserv_rpc.web_get_access_token(repo_id,
|
||||||
dir_id,
|
dir_id,
|
||||||
'download-dir',
|
'download-dir',
|
||||||
@@ -2944,10 +2954,7 @@ def events(request):
|
|||||||
org_id = request.GET.get('org_id')
|
org_id = request.GET.get('org_id')
|
||||||
events = get_org_user_events(org_id, username, start)
|
events = get_org_user_events(org_id, username, start)
|
||||||
else:
|
else:
|
||||||
try:
|
events = get_user_events(username, start)
|
||||||
events = get_user_events(username, start)
|
|
||||||
except Exception, e:
|
|
||||||
print e
|
|
||||||
|
|
||||||
events_more = False
|
events_more = False
|
||||||
if len(events) == 11:
|
if len(events) == 11:
|
||||||
|
Reference in New Issue
Block a user