mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-13 05:39:59 +00:00
Modify httpserver url
This commit is contained in:
7
utils.py
7
utils.py
@@ -267,3 +267,10 @@ def gen_fileext_type_map():
|
|||||||
|
|
||||||
return d
|
return d
|
||||||
FILEEXT_TYPE_MAP = gen_fileext_type_map()
|
FILEEXT_TYPE_MAP = gen_fileext_type_map()
|
||||||
|
|
||||||
|
def gen_file_get_url(token, filename):
|
||||||
|
"""
|
||||||
|
Generate httpserver file url.
|
||||||
|
Format: http://<domain:port>/files/<token>/<filename>
|
||||||
|
"""
|
||||||
|
return '%s/files/%s/%s' % (get_httpserver_root(), token, filename)
|
||||||
|
45
views.py
45
views.py
@@ -40,7 +40,7 @@ from utils import go_permission_error, go_error, list_to_string, \
|
|||||||
get_httpserver_root, get_ccnetapplet_root, gen_token, \
|
get_httpserver_root, get_ccnetapplet_root, gen_token, \
|
||||||
calculate_repo_last_modify, valid_previewed_file, \
|
calculate_repo_last_modify, valid_previewed_file, \
|
||||||
check_filename_with_rename, get_accessible_repos, EMPTY_SHA1, \
|
check_filename_with_rename, get_accessible_repos, EMPTY_SHA1, \
|
||||||
get_file_revision_id_size
|
get_file_revision_id_size, gen_file_get_url
|
||||||
from seahub.profile.models import Profile
|
from seahub.profile.models import Profile
|
||||||
from settings import FILE_PREVIEW_MAX_SIZE
|
from settings import FILE_PREVIEW_MAX_SIZE
|
||||||
|
|
||||||
@@ -837,7 +837,8 @@ def repo_view_file(request, repo_id):
|
|||||||
# owner should get a token to visit repo
|
# owner should get a token to visit repo
|
||||||
token = gen_token()
|
token = gen_token()
|
||||||
# put token into memory in seaf-server
|
# put token into memory in seaf-server
|
||||||
seafserv_rpc.web_save_access_token(token, obj_id)
|
seafserv_rpc.web_save_access_token(token, repo_id, obj_id,
|
||||||
|
'view', request.user.username)
|
||||||
else:
|
else:
|
||||||
raise Http404
|
raise Http404
|
||||||
|
|
||||||
@@ -848,12 +849,7 @@ def repo_view_file(request, repo_id):
|
|||||||
filetype = valid_previewed_file(filename)
|
filetype = valid_previewed_file(filename)
|
||||||
|
|
||||||
# raw path
|
# raw path
|
||||||
tmp_str = '%s/access?repo_id=%s&id=%s&filename=%s&op=%s&t=%s&u=%s'
|
raw_path = gen_file_get_url(token, filename)
|
||||||
raw_path = tmp_str % (http_server_root,
|
|
||||||
repo_id, obj_id,
|
|
||||||
filename, 'view',
|
|
||||||
token,
|
|
||||||
request.user.username)
|
|
||||||
|
|
||||||
# file share link
|
# file share link
|
||||||
l = FileShare.objects.filter(repo_id=repo_id).filter(\
|
l = FileShare.objects.filter(repo_id=repo_id).filter(\
|
||||||
@@ -899,7 +895,7 @@ def repo_file_get(request, repo_id):
|
|||||||
if not request.is_ajax():
|
if not request.is_ajax():
|
||||||
return Http404
|
return Http404
|
||||||
|
|
||||||
http_server_root = get_httpserver_root()
|
# http_server_root = get_httpserver_root()
|
||||||
content_type = 'application/json; charset=utf-8'
|
content_type = 'application/json; charset=utf-8'
|
||||||
access_token = request.GET.get('t')
|
access_token = request.GET.get('t')
|
||||||
path = request.GET.get('p', '/')
|
path = request.GET.get('p', '/')
|
||||||
@@ -917,13 +913,8 @@ def repo_file_get(request, repo_id):
|
|||||||
data = json.dumps([{'error': '获取文件数据失败'}])
|
data = json.dumps([{'error': '获取文件数据失败'}])
|
||||||
return HttpResponse(data, status=400, content_type=content_type)
|
return HttpResponse(data, status=400, content_type=content_type)
|
||||||
|
|
||||||
username = request.GET.get('u', '')
|
# username = request.GET.get('u', '')
|
||||||
tmp_str = '%s/access?repo_id=%s&id=%s&filename=%s&op=%s&t=%s&u=%s'
|
redirect_url = gen_file_get_url(access_token, filename)
|
||||||
redirect_url = tmp_str % (http_server_root,
|
|
||||||
repo_id, obj_id,
|
|
||||||
filename, 'view',
|
|
||||||
access_token,
|
|
||||||
username)
|
|
||||||
try:
|
try:
|
||||||
proxied_request = urllib2.urlopen(redirect_url)
|
proxied_request = urllib2.urlopen(redirect_url)
|
||||||
if long(proxied_request.headers['Content-Length']) > FILE_PREVIEW_MAX_SIZE:
|
if long(proxied_request.headers['Content-Length']) > FILE_PREVIEW_MAX_SIZE:
|
||||||
@@ -1005,18 +996,12 @@ def repo_access_file(request, repo_id, obj_id):
|
|||||||
# owner should get a token to visit repo
|
# owner should get a token to visit repo
|
||||||
token = gen_token()
|
token = gen_token()
|
||||||
# put token into memory in seaf-server
|
# put token into memory in seaf-server
|
||||||
seafserv_rpc.web_save_access_token(token, obj_id)
|
seafserv_rpc.web_save_access_token(token, repo_id, obj_id,
|
||||||
|
op, request.user.username)
|
||||||
else:
|
else:
|
||||||
raise Http404
|
raise Http404
|
||||||
|
|
||||||
http_server_root = get_httpserver_root()
|
redirect_url = gen_file_get_url(token, file_name)
|
||||||
|
|
||||||
tmp_str = '%s/access?repo_id=%s&id=%s&filename=%s&op=%s&t=%s&u=%s'
|
|
||||||
redirect_url = tmp_str % (http_server_root,
|
|
||||||
repo_id, obj_id,
|
|
||||||
file_name, op,
|
|
||||||
token,
|
|
||||||
request.user.username)
|
|
||||||
return HttpResponseRedirect(redirect_url)
|
return HttpResponseRedirect(redirect_url)
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@@ -1892,17 +1877,13 @@ def view_shared_file(request, token):
|
|||||||
raise Http404
|
raise Http404
|
||||||
|
|
||||||
access_token = gen_token()
|
access_token = gen_token()
|
||||||
seafserv_rpc.web_save_access_token(access_token, obj_id)
|
seafserv_rpc.web_save_access_token(access_token, repo.id, obj_id,
|
||||||
|
'view', '')
|
||||||
|
|
||||||
filetype = valid_previewed_file(filename)
|
filetype = valid_previewed_file(filename)
|
||||||
|
|
||||||
# Raw path
|
# Raw path
|
||||||
tmp_str = '%s/access?repo_id=%s&id=%s&filename=%s&op=%s&t=%s&u=%s'
|
raw_path = gen_file_get_url(access_token, quote_filename)
|
||||||
raw_path = tmp_str % (http_server_root,
|
|
||||||
repo_id, obj_id,
|
|
||||||
quote_filename, 'view',
|
|
||||||
access_token,
|
|
||||||
username)
|
|
||||||
|
|
||||||
# Increase file shared link view_cnt, this operation should be atomic
|
# Increase file shared link view_cnt, this operation should be atomic
|
||||||
fileshare = FileShare.objects.get(token=token)
|
fileshare = FileShare.objects.get(token=token)
|
||||||
|
Reference in New Issue
Block a user