diff --git a/app/static/custom/js/custom.js b/app/static/custom/js/custom.js index 279463d..6442bb2 100644 --- a/app/static/custom/js/custom.js +++ b/app/static/custom/js/custom.js @@ -212,6 +212,13 @@ function getdnssec(url, domain){ }); } +function reload_domains(url) { + $.getJSON(url, function(data) { + $('#modal_bg_reload_content').html(" Finished: " + data['result']['msg']); + }) +} + + // pretty JSON json_library = { replacer: function(match, pIndent, pKey, pVal, pEnd) { diff --git a/app/templates/dashboard.html b/app/templates/dashboard.html index 588c3d4..fa77882 100644 --- a/app/templates/dashboard.html +++ b/app/templates/dashboard.html @@ -123,7 +123,7 @@
-

Hosted Domains

+

Hosted Domains

{% if show_bg_domain_button %}{% endif %}
@@ -199,6 +199,12 @@ modal.modal('show'); }); + $(document.body).on('click', '.refresh-bg-button', function() { + var modal = $("#modal_bg_reload"); + modal.modal('show'); + reload_domains($SCRIPT_ROOT + '/dashboard-domains-updater'); + }); + $(document.body).on("click", ".button_template", function (e) { var modal = $("#modal_template"); var domain = $(this).prop('id'); @@ -314,4 +320,29 @@ + {% endblock %} diff --git a/app/views.py b/app/views.py index dd3d8a1..d7b15a1 100644 --- a/app/views.py +++ b/app/views.py @@ -459,7 +459,12 @@ def saml_logout(): @app.route('/dashboard', methods=['GET', 'POST']) @login_required def dashboard(): - d = Domain().update() + if not app.config.get('BG_DOMAIN_UPDATES'): + logging.debug('Update domains in foreground') + d = Domain().update() + else: + logging.debug('Update domains in background') + # stats for dashboard domain_count = Domain.query.count() @@ -473,7 +478,7 @@ def dashboard(): else: uptime = 0 - return render_template('dashboard.html', domain_count=domain_count, users=users, history_number=history_number, uptime=uptime, histories=history, dnssec_adm_only=app.config['DNSSEC_ADMINS_ONLY'], pdns_version=app.config['PDNS_VERSION']) + return render_template('dashboard.html', domain_count=domain_count, users=users, history_number=history_number, uptime=uptime, histories=history, dnssec_adm_only=app.config['DNSSEC_ADMINS_ONLY'], pdns_version=app.config['PDNS_VERSION'], show_bg_domain_button=app.config['BG_DOMAIN_UPDATES']) @app.route('/dashboard-domains', methods=['GET']) @@ -542,6 +547,17 @@ def dashboard_domains(): } return jsonify(response_data) +@app.route('/dashboard-domains-updater', methods=['GET', 'POST']) +@login_required +def dashboard_domains_updater(): + logging.debug('Update domains in background') + d = Domain().update() + + response_data = { + "result": d, + } + return jsonify(response_data) + @app.route('/domain/', methods=['GET', 'POST']) @login_required diff --git a/config_template.py b/config_template.py index a481cac..9d25fd9 100644 --- a/config_template.py +++ b/config_template.py @@ -130,3 +130,6 @@ DNSSEC_ADMINS_ONLY = False # EXPERIMENTAL FEATURES PRETTY_IPV6_PTR = False + +# Domain updates in background, for big installations +BG_DOMAIN_UPDATES = False