From ec9ff77ed77a1936150ff04398588b1b41bfab7a Mon Sep 17 00:00:00 2001 From: zhengxie Date: Fri, 6 Dec 2013 14:36:06 +0800 Subject: [PATCH] Added FORCE_SERVER_CRYPTO option --- seahub/options/models.py | 9 ++++++++- seahub/profile/templates/profile/set_profile.html | 2 ++ seahub/profile/views.py | 1 + seahub/settings.py | 3 +++ seahub/templates/decrypt_repo_form.html | 3 +++ seahub/views/repo.py | 5 +++-- 6 files changed, 20 insertions(+), 3 deletions(-) diff --git a/seahub/options/models.py b/seahub/options/models.py index 201d7dbe1d..82b9c90751 100644 --- a/seahub/options/models.py +++ b/seahub/options/models.py @@ -3,6 +3,7 @@ from django.db import models from seahub.base.fields import LowerCaseCharField +from seahub.settings import FORCE_SERVER_CRYPTO KEY_SERVER_CRYPTO = "server_crypto" VAL_SERVER_CRYPTO_ENABLED = "1" @@ -62,10 +63,16 @@ class UserOptionsManager(models.Manager): server crypto is enabled, otherwise ``False``. Raise ``CryptoOptionNotSetError`` if this option is not set. - + + NOTE: Always return ``True`` if ``FORCE_SERVER_CRYPTO`` is set to + ``True``. + Arguments: - `username`: """ + if FORCE_SERVER_CRYPTO is True: + return True + try: user_option = super(UserOptionsManager, self).get( email=username, option_key=KEY_SERVER_CRYPTO) diff --git a/seahub/profile/templates/profile/set_profile.html b/seahub/profile/templates/profile/set_profile.html index 58ab67b5d9..62497ef29f 100644 --- a/seahub/profile/templates/profile/set_profile.html +++ b/seahub/profile/templates/profile/set_profile.html @@ -33,6 +33,7 @@ +{% if not force_server_crypto %}

{% trans "Encrypted Libraries Setting" %}

{% csrf_token %} @@ -46,6 +47,7 @@
+{% endif %}

{% trans "Sub-library Setting" %}

diff --git a/seahub/profile/views.py b/seahub/profile/views.py index 6691bff02b..5a9a6bdb21 100644 --- a/seahub/profile/views.py +++ b/seahub/profile/views.py @@ -71,6 +71,7 @@ def edit_profile(request): 'form': form, 'server_crypto': server_crypto, "sub_lib_enabled": sub_lib_enabled, + 'force_server_crypto': settings.FORCE_SERVER_CRYPTO, }, context_instance=RequestContext(request)) def user_profile(request, username_or_id): diff --git a/seahub/settings.py b/seahub/settings.py index 7e273681e4..0d440023dc 100644 --- a/seahub/settings.py +++ b/seahub/settings.py @@ -189,6 +189,9 @@ SHOW_REPO_DOWNLOAD_BUTTON = False # mininum length for password of encrypted library REPO_PASSWORD_MIN_LENGTH = 6 +# Using server side crypto by default, otherwise, let user choose crypto method. +FORCE_SERVER_CRYPTO = True + # File preview FILE_PREVIEW_MAX_SIZE = 30 * 1024 * 1024 OFFICE_PREVIEW_MAX_SIZE = 2 * 1024 * 1024 diff --git a/seahub/templates/decrypt_repo_form.html b/seahub/templates/decrypt_repo_form.html index d8f2df3409..4a0255170f 100644 --- a/seahub/templates/decrypt_repo_form.html +++ b/seahub/templates/decrypt_repo_form.html @@ -14,8 +14,11 @@ {% for error in form.errors.values %} {{ error|escape }} {% endfor %} + + {% if not force_server_crypto %} {% url 'edit_profile' as profile_edit_url %}

{% blocktrans %}You can change how to view encrypted libraries online here.{% endblocktrans %}

+ {% endif %}
{% endblock %} diff --git a/seahub/views/repo.py b/seahub/views/repo.py index 1f8160442e..b18a73f271 100644 --- a/seahub/views/repo.py +++ b/seahub/views/repo.py @@ -22,7 +22,7 @@ from seahub.views import gen_path_link, get_user_permission, get_repo_dirents, \ from seahub.utils import get_ccnetapplet_root, gen_file_upload_url, \ get_httpserver_root, gen_dir_share_link, gen_shared_upload_link, \ get_max_upload_file_size -from seahub.settings import ENABLE_SUB_LIBRARY +from seahub.settings import ENABLE_SUB_LIBRARY, FORCE_SERVER_CRYPTO # Get an instance of a logger logger = logging.getLogger(__name__) @@ -227,7 +227,8 @@ def render_repo(request, repo): return render_to_response('decrypt_repo_form.html', { 'repo': repo, 'next': get_next_url_from_request(request) or \ - reverse('repo', args=[repo.id]) + reverse('repo', args=[repo.id]), + 'force_server_crypto': FORCE_SERVER_CRYPTO, }, context_instance=RequestContext(request)) # query context args