mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-20 02:48:51 +00:00
[sys-admin] check seafile license expiration
This commit is contained in:
@@ -81,10 +81,38 @@ $(function(){
|
||||
if (data['need_update']) {
|
||||
var tip = "{% trans "A new server version %(v)s is available." %}";
|
||||
tip = tip.replace('%(v)s', data['new_version']);
|
||||
$('#title-panel').html('<p class="alc" style="background:#fddaa4;color:#1f0600;padding:3px 0;margin:0 0 15px;">' + tip + '</p>').removeClass('hide');
|
||||
$('#title-panel').html('<p class="alc" style="background:#fddaa4;color:#1f0600;padding:3px 0;margin:0 0 15px;"><span>' + tip + '</span></p>').removeClass('hide');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
{% if is_pro %}
|
||||
// check if seafile license expired
|
||||
$.ajax({
|
||||
url: "{% url 'sys_check_license' %}",
|
||||
dataType: 'json',
|
||||
cache: false,
|
||||
success: function(data) {
|
||||
var tip, $title_panel = $('#title-panel');
|
||||
|
||||
if (data['already_expired']) {
|
||||
tip = "Your license is already expired in %(v)s.",
|
||||
tip = tip.replace('%(v)s', data['expiration']);
|
||||
} else if (data['to_be_expired']) {
|
||||
tip = "Your license will be expired in %(v)s.",
|
||||
tip = tip.replace('%(v)s', data['expiration']);
|
||||
}
|
||||
|
||||
if (typeof(tip) != 'undefined') {
|
||||
if ($title_panel.find('p').length) {
|
||||
$title_panel.find('p').append('<br /><span>' + tip + '</span>');
|
||||
} else {
|
||||
$title_panel.html('<p class="alc" style="background:#fddaa4;color:#1f0600;padding:3px 0;margin:0 0 15px;"><span>' + tip + '</span></p>').removeClass('hide');
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
{% endif %}
|
||||
});
|
||||
|
||||
$('#add-user-btn').click(function() {
|
||||
|
@@ -238,6 +238,7 @@ urlpatterns = patterns(
|
||||
url(r'^sys/uploadlink/remove/$', sys_upload_link_remove, name='sys_upload_link_remove'),
|
||||
url(r'^sys/notificationadmin/', notification_list, name='notification_list'),
|
||||
url(r'^sys/sudo/', sys_sudo_mode, name='sys_sudo_mode'),
|
||||
url(r'^sys/check-license/', sys_check_license, name='sys_check_license'),
|
||||
url(r'^useradmin/add/$', user_add, name="user_add"),
|
||||
url(r'^useradmin/remove/(?P<email>[^/]+)/$', user_remove, name="user_remove"),
|
||||
url(r'^useradmin/removetrial/(?P<user_or_org>[^/]+)/$', remove_trial, name="remove_trial"),
|
||||
|
@@ -8,6 +8,7 @@ import re
|
||||
import datetime
|
||||
import stat
|
||||
import csv, chardet, StringIO
|
||||
import time
|
||||
from constance import config
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
@@ -2030,3 +2031,38 @@ def sys_settings(request):
|
||||
return render_to_response('sysadmin/settings.html', {
|
||||
'config_dict': config_dict,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
@login_required_ajax
|
||||
@sys_staff_required
|
||||
def sys_check_license(request):
|
||||
"""Check seafile license expiration.
|
||||
"""
|
||||
if not is_pro_version():
|
||||
raise Http404
|
||||
|
||||
content_type = 'application/json; charset=utf-8'
|
||||
result = {}
|
||||
|
||||
license_file = os.path.join(settings.PROJECT_ROOT, '../../seafile-license.txt')
|
||||
license_dict = parse_license(license_file)
|
||||
if license_dict:
|
||||
try:
|
||||
expiration = license_dict['Expiration']
|
||||
except KeyError as e:
|
||||
logger.error(e)
|
||||
result['error'] = str(e)
|
||||
return HttpResponse(json.dumps(result), status=500, content_type=content_type)
|
||||
|
||||
struct_time = datetime.datetime.strptime(expiration, "%Y-%m-%d")
|
||||
expiration_timestamp = time.mktime(struct_time.timetuple())
|
||||
|
||||
if time.time() > expiration_timestamp:
|
||||
# already expired
|
||||
result['already_expired'] = True
|
||||
elif time.time() + 30 * 24 * 60 * 60 > expiration_timestamp:
|
||||
# will be expired in 30 days
|
||||
result['to_be_expired'] = True
|
||||
|
||||
result['expiration'] = expiration
|
||||
|
||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
||||
|
Reference in New Issue
Block a user