mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-20 10:58:33 +00:00
[sys-admin] check seafile license expiration
This commit is contained in:
@@ -81,10 +81,38 @@ $(function(){
|
|||||||
if (data['need_update']) {
|
if (data['need_update']) {
|
||||||
var tip = "{% trans "A new server version %(v)s is available." %}";
|
var tip = "{% trans "A new server version %(v)s is available." %}";
|
||||||
tip = tip.replace('%(v)s', data['new_version']);
|
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() {
|
$('#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/uploadlink/remove/$', sys_upload_link_remove, name='sys_upload_link_remove'),
|
||||||
url(r'^sys/notificationadmin/', notification_list, name='notification_list'),
|
url(r'^sys/notificationadmin/', notification_list, name='notification_list'),
|
||||||
url(r'^sys/sudo/', sys_sudo_mode, name='sys_sudo_mode'),
|
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/add/$', user_add, name="user_add"),
|
||||||
url(r'^useradmin/remove/(?P<email>[^/]+)/$', user_remove, name="user_remove"),
|
url(r'^useradmin/remove/(?P<email>[^/]+)/$', user_remove, name="user_remove"),
|
||||||
url(r'^useradmin/removetrial/(?P<user_or_org>[^/]+)/$', remove_trial, name="remove_trial"),
|
url(r'^useradmin/removetrial/(?P<user_or_org>[^/]+)/$', remove_trial, name="remove_trial"),
|
||||||
|
@@ -8,6 +8,7 @@ import re
|
|||||||
import datetime
|
import datetime
|
||||||
import stat
|
import stat
|
||||||
import csv, chardet, StringIO
|
import csv, chardet, StringIO
|
||||||
|
import time
|
||||||
from constance import config
|
from constance import config
|
||||||
|
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
@@ -2030,3 +2031,38 @@ def sys_settings(request):
|
|||||||
return render_to_response('sysadmin/settings.html', {
|
return render_to_response('sysadmin/settings.html', {
|
||||||
'config_dict': config_dict,
|
'config_dict': config_dict,
|
||||||
}, context_instance=RequestContext(request))
|
}, 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