1
0
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:
lian
2016-01-09 16:40:39 +08:00
parent cfcef3d7ad
commit a7458622b7
7 changed files with 47 additions and 20 deletions

View File

@@ -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>

View File

@@ -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>

View File

@@ -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')

View File

@@ -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

View File

@@ -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)

View File

@@ -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')));

View File

@@ -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