mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-19 18:29:23 +00:00
check if audit enabled
This commit is contained in:
@@ -322,7 +322,10 @@
|
||||
<li><a class="op cp" href="#">{% trans "Copy" %}</a></li>
|
||||
<li><a class="op file-history" href="{{ SITE_ROOT }}repo/file_revisions/<%= repo_id %>/?p=<% print(encodeURIComponent(dirent_path)); %>">{% trans "History" %}</a></li>
|
||||
<% if (is_pro) { %>
|
||||
<% if (file_audit_enabled) { %>
|
||||
<li><a class="op" href="{{ SITE_ROOT }}repo/file-access/<%= repo_id %>/?p=<% print(encodeURIComponent(dirent_path)); %>" target="_blank">{% trans "Access Log" %}</a></li>
|
||||
<% } %>
|
||||
|
||||
<% if (dirent.is_locked) { %>
|
||||
<% if (dirent.locked_by_me) { %>
|
||||
<li><a class="op unlock-file" href="#">{% trans "Unlock" %}</a></li>
|
||||
|
@@ -296,6 +296,7 @@ app["pageOptions"] = {
|
||||
max_upload_file_size: {% if max_upload_file_size %} {{ max_upload_file_size }} {% else %} '' {% endif %},
|
||||
folder_perm_enabled: {% if folder_perm_enabled %} true {% else %} false {% endif %},
|
||||
is_pro: {% if is_pro %} true {% else %} false {% endif %},
|
||||
file_audit_enabled: {% if file_audit_enabled %} true {% else %} false {% endif %},
|
||||
cur_note: {% if request.cur_note %} {'id': '{{ request.cur_note.id }}'} {% else %} null {% endif %}
|
||||
};
|
||||
</script>
|
||||
|
@@ -510,6 +510,9 @@ def check_and_get_org_by_group(group_id, user):
|
||||
|
||||
# events related
|
||||
if EVENTS_CONFIG_FILE:
|
||||
parsed_events_conf = ConfigParser.ConfigParser()
|
||||
parsed_events_conf.read(EVENTS_CONFIG_FILE)
|
||||
|
||||
import seafevents
|
||||
|
||||
EVENTS_ENABLED = True
|
||||
@@ -952,13 +955,25 @@ def more_files_in_commit(commit):
|
||||
"""
|
||||
return True if re.search(MORE_PATT, commit.desc) else False
|
||||
|
||||
# file audit related
|
||||
FILE_AUDIT_ENABLED = False
|
||||
if EVENTS_CONFIG_FILE:
|
||||
def check_file_audit_enabled():
|
||||
enabled = seafevents.is_audit_enabled(parsed_events_conf)
|
||||
|
||||
if enabled:
|
||||
logging.debug('file audit: enabled')
|
||||
else:
|
||||
logging.debug('file audit: not enabled')
|
||||
return enabled
|
||||
|
||||
FILE_AUDIT_ENABLED = check_file_audit_enabled()
|
||||
|
||||
# office convert related
|
||||
HAS_OFFICE_CONVERTER = False
|
||||
if EVENTS_CONFIG_FILE:
|
||||
def check_office_converter_enabled():
|
||||
config = ConfigParser.ConfigParser()
|
||||
config.read(EVENTS_CONFIG_FILE)
|
||||
enabled = seafevents.is_office_converter_enabled(config)
|
||||
enabled = seafevents.is_office_converter_enabled(parsed_events_conf)
|
||||
|
||||
if enabled:
|
||||
logging.debug('office converter: enabled')
|
||||
@@ -967,14 +982,10 @@ if EVENTS_CONFIG_FILE:
|
||||
return enabled
|
||||
|
||||
def get_office_converter_html_dir():
|
||||
config = ConfigParser.ConfigParser()
|
||||
config.read(EVENTS_CONFIG_FILE)
|
||||
return seafevents.get_office_converter_html_dir(config)
|
||||
return seafevents.get_office_converter_html_dir(parsed_events_conf)
|
||||
|
||||
def get_office_converter_limit():
|
||||
config = ConfigParser.ConfigParser()
|
||||
config.read(EVENTS_CONFIG_FILE)
|
||||
return seafevents.get_office_converter_limit(config)
|
||||
return seafevents.get_office_converter_limit(parsed_events_conf)
|
||||
|
||||
HAS_OFFICE_CONVERTER = check_office_converter_enabled()
|
||||
|
||||
@@ -1129,9 +1140,7 @@ if EVENTS_CONFIG_FILE:
|
||||
def check_search_enabled():
|
||||
enabled = False
|
||||
if hasattr(seafevents, 'is_search_enabled'):
|
||||
config = ConfigParser.ConfigParser()
|
||||
config.read(EVENTS_CONFIG_FILE)
|
||||
enabled = seafevents.is_search_enabled(config)
|
||||
enabled = seafevents.is_search_enabled(parsed_events_conf)
|
||||
|
||||
if enabled:
|
||||
logging.debug('search: enabled')
|
||||
|
@@ -53,7 +53,7 @@ from seahub.utils import render_permission_error, render_error, list_to_string,
|
||||
EVENTS_ENABLED, get_user_events, get_org_user_events, show_delete_days, \
|
||||
TRAFFIC_STATS_ENABLED, get_user_traffic_stat, new_merge_with_no_conflict, \
|
||||
user_traffic_over_limit, send_perm_audit_msg, get_origin_repo_info, \
|
||||
is_org_context, get_max_upload_file_size, is_pro_version
|
||||
get_max_upload_file_size, is_pro_version, FILE_AUDIT_ENABLED
|
||||
from seahub.utils.paginator import get_page_range
|
||||
from seahub.utils.star import get_dir_starred_files
|
||||
from seahub.utils.timeutils import utc_to_local
|
||||
@@ -1279,6 +1279,7 @@ def libraries(request):
|
||||
'max_upload_file_size': max_upload_file_size,
|
||||
'folder_perm_enabled': folder_perm_enabled,
|
||||
'is_pro': True if is_pro_version() else False,
|
||||
'file_audit_enabled': FILE_AUDIT_ENABLED,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
@login_required
|
||||
|
@@ -57,7 +57,7 @@ from seahub.utils import show_delete_days, render_error, is_org_context, \
|
||||
is_textual_file, mkstemp, EMPTY_SHA1, HtmlDiff, \
|
||||
check_filename_with_rename, gen_inner_file_get_url, normalize_file_path, \
|
||||
user_traffic_over_limit, do_md5, get_file_audit_events_by_path, \
|
||||
generate_file_audit_event_type
|
||||
generate_file_audit_event_type, FILE_AUDIT_ENABLED
|
||||
from seahub.utils.ip import get_remote_ip
|
||||
from seahub.utils.timeutils import utc_to_local
|
||||
from seahub.utils.file_types import (IMAGE, PDF, DOCUMENT, SPREADSHEET, AUDIO,
|
||||
@@ -1640,7 +1640,7 @@ def file_access(request, repo_id):
|
||||
"""List file access log.
|
||||
"""
|
||||
|
||||
if not is_pro_version():
|
||||
if not is_pro_version() or not FILE_AUDIT_ENABLED:
|
||||
raise Http404
|
||||
|
||||
referer = request.META.get('HTTP_REFERER', None)
|
||||
|
@@ -32,6 +32,7 @@ define([
|
||||
var dir = this.dir;
|
||||
var dirent_path = Common.pathJoin([dir.path, this.model.get('obj_name')]);
|
||||
var is_pro = app.pageOptions.is_pro;
|
||||
var file_audit_enabled = app.pageOptions.file_audit_enabled;
|
||||
|
||||
this.$el.html(this.template({
|
||||
dirent: this.model.attributes,
|
||||
@@ -42,6 +43,7 @@ define([
|
||||
is_repo_owner: dir.is_repo_owner,
|
||||
can_generate_shared_link: app.pageOptions.can_generate_shared_link,
|
||||
is_pro: is_pro,
|
||||
file_audit_enabled: file_audit_enabled,
|
||||
repo_encrypted: dir.encrypted
|
||||
}));
|
||||
this.$('.file-locked-icon').attr('title', gettext("locked by {placeholder}").replace('{placeholder}', this.model.get('lock_owner_name')));
|
||||
|
@@ -122,6 +122,7 @@ class FileAccessLogTest(BaseTestCase):
|
||||
|
||||
@patch('seahub.views.file.is_pro_version')
|
||||
def test_can_not_render_if_not_pro(self, mock_is_pro_version):
|
||||
|
||||
mock_is_pro_version.return_value = False
|
||||
|
||||
url = reverse('file_access', args=[self.repo_id]) + '?p=' + self.file_path
|
||||
@@ -131,12 +132,14 @@ class FileAccessLogTest(BaseTestCase):
|
||||
@patch('seahub.views.file.generate_file_audit_event_type')
|
||||
@patch('seahub.views.file.get_file_audit_events_by_path')
|
||||
@patch('seahub.views.file.is_pro_version')
|
||||
def test_can_show_web_type(self, mock_is_pro_version,
|
||||
@patch('seahub.views.file.FILE_AUDIT_ENABLED')
|
||||
def test_can_show_web_type(self, mock_file_audit_enabled, mock_is_pro_version,
|
||||
mock_get_file_audit_events_by_path, mock_generate_file_audit_event_type):
|
||||
|
||||
etype = 'file-download-web'
|
||||
event = Event(self.user.email, self.repo_id, self.file_path, etype)
|
||||
|
||||
mock_file_audit_enabled.return_value = True
|
||||
mock_is_pro_version.return_value = True
|
||||
mock_get_file_audit_events_by_path.return_value = [event]
|
||||
mock_generate_file_audit_event_type.side_effect = self.generate_file_audit_event_type
|
||||
@@ -150,12 +153,14 @@ class FileAccessLogTest(BaseTestCase):
|
||||
@patch('seahub.views.file.generate_file_audit_event_type')
|
||||
@patch('seahub.views.file.get_file_audit_events_by_path')
|
||||
@patch('seahub.views.file.is_pro_version')
|
||||
def test_can_show_share_link_type(self, mock_is_pro_version,
|
||||
@patch('seahub.views.file.FILE_AUDIT_ENABLED')
|
||||
def test_can_show_share_link_type(self, mock_file_audit_enabled, mock_is_pro_version,
|
||||
mock_get_file_audit_events_by_path, mock_generate_file_audit_event_type):
|
||||
|
||||
etype = 'file-download-share-link'
|
||||
event = Event(self.user.email, self.repo_id, self.file_path, etype)
|
||||
|
||||
mock_file_audit_enabled.return_value = True
|
||||
mock_is_pro_version.return_value = True
|
||||
mock_get_file_audit_events_by_path.return_value = [event]
|
||||
mock_generate_file_audit_event_type.side_effect = self.generate_file_audit_event_type
|
||||
@@ -169,12 +174,14 @@ class FileAccessLogTest(BaseTestCase):
|
||||
@patch('seahub.views.file.generate_file_audit_event_type')
|
||||
@patch('seahub.views.file.get_file_audit_events_by_path')
|
||||
@patch('seahub.views.file.is_pro_version')
|
||||
def test_can_show_api_type(self, mock_is_pro_version,
|
||||
@patch('seahub.views.file.FILE_AUDIT_ENABLED')
|
||||
def test_can_show_api_type(self, mock_file_audit_enabled, mock_is_pro_version,
|
||||
mock_get_file_audit_events_by_path, mock_generate_file_audit_event_type):
|
||||
|
||||
etype = 'file-download-api'
|
||||
event = Event(self.user.email, self.repo_id, self.file_path, etype)
|
||||
|
||||
mock_file_audit_enabled.return_value = True
|
||||
mock_is_pro_version.return_value = True
|
||||
mock_get_file_audit_events_by_path.return_value = [event]
|
||||
mock_generate_file_audit_event_type.side_effect = self.generate_file_audit_event_type
|
||||
@@ -188,12 +195,14 @@ class FileAccessLogTest(BaseTestCase):
|
||||
@patch('seahub.views.file.generate_file_audit_event_type')
|
||||
@patch('seahub.views.file.get_file_audit_events_by_path')
|
||||
@patch('seahub.views.file.is_pro_version')
|
||||
def test_can_show_download_sync_type(self, mock_is_pro_version,
|
||||
@patch('seahub.views.file.FILE_AUDIT_ENABLED')
|
||||
def test_can_show_download_sync_type(self, mock_file_audit_enabled, mock_is_pro_version,
|
||||
mock_get_file_audit_events_by_path, mock_generate_file_audit_event_type):
|
||||
|
||||
etype = 'repo-download-sync'
|
||||
event = Event(self.user.email, self.repo_id, self.file_path, etype)
|
||||
|
||||
mock_file_audit_enabled.return_value = True
|
||||
mock_is_pro_version.return_value = True
|
||||
mock_get_file_audit_events_by_path.return_value = [event]
|
||||
mock_generate_file_audit_event_type.side_effect = self.generate_file_audit_event_type
|
||||
@@ -207,12 +216,14 @@ class FileAccessLogTest(BaseTestCase):
|
||||
@patch('seahub.views.file.generate_file_audit_event_type')
|
||||
@patch('seahub.views.file.get_file_audit_events_by_path')
|
||||
@patch('seahub.views.file.is_pro_version')
|
||||
def test_can_show_upload_sync_type(self, mock_is_pro_version,
|
||||
@patch('seahub.views.file.FILE_AUDIT_ENABLED')
|
||||
def test_can_show_upload_sync_type(self, mock_file_audit_enabled, mock_is_pro_version,
|
||||
mock_get_file_audit_events_by_path, mock_generate_file_audit_event_type):
|
||||
|
||||
etype = 'repo-upload-sync'
|
||||
event = Event(self.user.email, self.repo_id, self.file_path, etype)
|
||||
|
||||
mock_file_audit_enabled.return_value = True
|
||||
mock_is_pro_version.return_value = True
|
||||
mock_get_file_audit_events_by_path.return_value = [event]
|
||||
mock_generate_file_audit_event_type.side_effect = self.generate_file_audit_event_type
|
||||
|
Reference in New Issue
Block a user