mirror of
https://github.com/cwinfo/powerdns-admin.git
synced 2024-12-04 19:15:30 +00:00
Updated backend to properly encode the zone name sent to PDNS API so that zones with URL unsafe characters don't break the request.
This commit is contained in:
parent
48f7f2d19f
commit
18f38fd1ca
@ -643,6 +643,8 @@ class Domain(db.Model):
|
|||||||
"""
|
"""
|
||||||
Update records from Master DNS server
|
Update records from Master DNS server
|
||||||
"""
|
"""
|
||||||
|
import urllib.parse
|
||||||
|
|
||||||
domain = Domain.query.filter(Domain.name == domain_name).first()
|
domain = Domain.query.filter(Domain.name == domain_name).first()
|
||||||
if domain:
|
if domain:
|
||||||
headers = {'X-API-Key': self.PDNS_API_KEY}
|
headers = {'X-API-Key': self.PDNS_API_KEY}
|
||||||
@ -650,7 +652,7 @@ class Domain(db.Model):
|
|||||||
r = utils.fetch_json(urljoin(
|
r = utils.fetch_json(urljoin(
|
||||||
self.PDNS_STATS_URL, self.API_EXTENDED_URL +
|
self.PDNS_STATS_URL, self.API_EXTENDED_URL +
|
||||||
'/servers/localhost/zones/{0}/axfr-retrieve'.format(
|
'/servers/localhost/zones/{0}/axfr-retrieve'.format(
|
||||||
domain.name)),
|
urllib.parse.quote_plus(domain.name))),
|
||||||
headers=headers,
|
headers=headers,
|
||||||
timeout=int(
|
timeout=int(
|
||||||
Setting().get('pdns_api_timeout')),
|
Setting().get('pdns_api_timeout')),
|
||||||
@ -673,6 +675,8 @@ class Domain(db.Model):
|
|||||||
"""
|
"""
|
||||||
Get zone DNSSEC information
|
Get zone DNSSEC information
|
||||||
"""
|
"""
|
||||||
|
import urllib.parse
|
||||||
|
|
||||||
domain = Domain.query.filter(Domain.name == domain_name).first()
|
domain = Domain.query.filter(Domain.name == domain_name).first()
|
||||||
if domain:
|
if domain:
|
||||||
headers = {'X-API-Key': self.PDNS_API_KEY}
|
headers = {'X-API-Key': self.PDNS_API_KEY}
|
||||||
@ -681,7 +685,7 @@ class Domain(db.Model):
|
|||||||
urljoin(
|
urljoin(
|
||||||
self.PDNS_STATS_URL, self.API_EXTENDED_URL +
|
self.PDNS_STATS_URL, self.API_EXTENDED_URL +
|
||||||
'/servers/localhost/zones/{0}/cryptokeys'.format(
|
'/servers/localhost/zones/{0}/cryptokeys'.format(
|
||||||
domain.name)),
|
urllib.parse.quote_plus(domain.name))),
|
||||||
headers=headers,
|
headers=headers,
|
||||||
timeout=int(Setting().get('pdns_api_timeout')),
|
timeout=int(Setting().get('pdns_api_timeout')),
|
||||||
method='GET',
|
method='GET',
|
||||||
@ -709,6 +713,8 @@ class Domain(db.Model):
|
|||||||
"""
|
"""
|
||||||
Enable zone DNSSEC
|
Enable zone DNSSEC
|
||||||
"""
|
"""
|
||||||
|
import urllib.parse
|
||||||
|
|
||||||
domain = Domain.query.filter(Domain.name == domain_name).first()
|
domain = Domain.query.filter(Domain.name == domain_name).first()
|
||||||
if domain:
|
if domain:
|
||||||
headers = {'X-API-Key': self.PDNS_API_KEY, 'Content-Type': 'application/json'}
|
headers = {'X-API-Key': self.PDNS_API_KEY, 'Content-Type': 'application/json'}
|
||||||
@ -718,7 +724,9 @@ class Domain(db.Model):
|
|||||||
jdata = utils.fetch_json(
|
jdata = utils.fetch_json(
|
||||||
urljoin(
|
urljoin(
|
||||||
self.PDNS_STATS_URL, self.API_EXTENDED_URL +
|
self.PDNS_STATS_URL, self.API_EXTENDED_URL +
|
||||||
'/servers/localhost/zones/{0}'.format(domain.name)),
|
'/servers/localhost/zones/{0}'.format(
|
||||||
|
urllib.parse.quote_plus(domain.name)
|
||||||
|
)),
|
||||||
headers=headers,
|
headers=headers,
|
||||||
timeout=int(Setting().get('pdns_api_timeout')),
|
timeout=int(Setting().get('pdns_api_timeout')),
|
||||||
method='PUT',
|
method='PUT',
|
||||||
@ -738,7 +746,8 @@ class Domain(db.Model):
|
|||||||
urljoin(
|
urljoin(
|
||||||
self.PDNS_STATS_URL, self.API_EXTENDED_URL +
|
self.PDNS_STATS_URL, self.API_EXTENDED_URL +
|
||||||
'/servers/localhost/zones/{0}/cryptokeys'.format(
|
'/servers/localhost/zones/{0}/cryptokeys'.format(
|
||||||
domain.name)),
|
urllib.parse.quote_plus(domain.name)
|
||||||
|
)),
|
||||||
headers=headers,
|
headers=headers,
|
||||||
timeout=int(Setting().get('pdns_api_timeout')),
|
timeout=int(Setting().get('pdns_api_timeout')),
|
||||||
method='POST',
|
method='POST',
|
||||||
@ -775,6 +784,8 @@ class Domain(db.Model):
|
|||||||
"""
|
"""
|
||||||
Remove keys DNSSEC
|
Remove keys DNSSEC
|
||||||
"""
|
"""
|
||||||
|
import urllib.parse
|
||||||
|
|
||||||
domain = Domain.query.filter(Domain.name == domain_name).first()
|
domain = Domain.query.filter(Domain.name == domain_name).first()
|
||||||
if domain:
|
if domain:
|
||||||
headers = {'X-API-Key': self.PDNS_API_KEY, 'Content-Type': 'application/json'}
|
headers = {'X-API-Key': self.PDNS_API_KEY, 'Content-Type': 'application/json'}
|
||||||
@ -784,7 +795,7 @@ class Domain(db.Model):
|
|||||||
urljoin(
|
urljoin(
|
||||||
self.PDNS_STATS_URL, self.API_EXTENDED_URL +
|
self.PDNS_STATS_URL, self.API_EXTENDED_URL +
|
||||||
'/servers/localhost/zones/{0}/cryptokeys/{1}'.format(
|
'/servers/localhost/zones/{0}/cryptokeys/{1}'.format(
|
||||||
domain.name, key_id)),
|
urllib.parse.quote_plus(domain.name), key_id)),
|
||||||
headers=headers,
|
headers=headers,
|
||||||
timeout=int(Setting().get('pdns_api_timeout')),
|
timeout=int(Setting().get('pdns_api_timeout')),
|
||||||
method='DELETE',
|
method='DELETE',
|
||||||
|
@ -30,14 +30,14 @@ function applyChanges(data, url, showResult, refreshPage) {
|
|||||||
function applyRecordChanges(data, domain) {
|
function applyRecordChanges(data, domain) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : "POST",
|
type : "POST",
|
||||||
url : $SCRIPT_ROOT + '/domain/' + domain + '/apply',
|
url : $SCRIPT_ROOT + '/domain/' + encodeURIComponent(domain) + '/apply',
|
||||||
data : JSON.stringify(data),// now data come in this function
|
data : JSON.stringify(data),// now data come in this function
|
||||||
contentType : "application/json; charset=utf-8",
|
contentType : "application/json; charset=utf-8",
|
||||||
crossDomain : true,
|
crossDomain : true,
|
||||||
dataType : "json",
|
dataType : "json",
|
||||||
success : function(data, status, jqXHR) {
|
success : function(data, status, jqXHR) {
|
||||||
// update Apply button value
|
// update Apply button value
|
||||||
$.getJSON($SCRIPT_ROOT + '/domain/' + domain + '/info', function(data) {
|
$.getJSON($SCRIPT_ROOT + '/domain/' + encodeURIComponent(domain) + '/info', function(data) {
|
||||||
$(".button_apply_changes").val(data['serial']);
|
$(".button_apply_changes").val(data['serial']);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user