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" %}
+{% 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