maatma: distinct add/update/delete fonctions
This commit is contained in:
parent
748939c3b4
commit
b8179583e6
3 changed files with 405 additions and 135 deletions
|
|
@ -155,6 +155,17 @@ angular.module("AdLinApp")
|
|||
})
|
||||
|
||||
.controller("DomainsController", function($scope, $http, $interval, $location) {
|
||||
var onUpdateEvt = [];
|
||||
var callOnUpdateEvt = function() {
|
||||
angular.forEach(onUpdateEvt, function(cb) {
|
||||
cb();
|
||||
});
|
||||
}
|
||||
|
||||
$scope.addOnUpdateEvent = function(cb) {
|
||||
onUpdateEvt.push(cb);
|
||||
}
|
||||
|
||||
$scope.updateAssociationD = function() {
|
||||
$http({
|
||||
method: 'GET',
|
||||
|
|
@ -218,25 +229,45 @@ angular.module("AdLinApp")
|
|||
});
|
||||
}
|
||||
|
||||
$scope.updateNS = function(domain) {
|
||||
$scope.addNS = function(domain) {
|
||||
$scope.nsrr = {
|
||||
"domain": domain,
|
||||
"ttl": 900,
|
||||
"rr": "NS",
|
||||
"value": "",
|
||||
"values": [""],
|
||||
}
|
||||
$('#NSModal').modal('show');
|
||||
}
|
||||
$scope.updateGLUE = function(domain) {
|
||||
$scope.updateNS = function(domain, rr) {
|
||||
$scope.nsrr = {
|
||||
"domain": domain,
|
||||
"ttl": 900,
|
||||
"rr": "NS",
|
||||
"valuesfrom": rr.values,
|
||||
"values": rr.values,
|
||||
}
|
||||
$('#NSModal').modal('show');
|
||||
}
|
||||
$scope.addGLUE = function(domain) {
|
||||
$scope.nsrr = {
|
||||
"domain": domain,
|
||||
"ttl": 900,
|
||||
"rr": "AAAA",
|
||||
"value": "",
|
||||
"values": [""],
|
||||
}
|
||||
$('#NSModal').modal('show');
|
||||
}
|
||||
$scope.updateDS = function(domain) {
|
||||
$scope.updateGLUE = function(domain, rr) {
|
||||
$scope.nsrr = {
|
||||
"domain": domain,
|
||||
"ttl": 900,
|
||||
"rr": "AAAA",
|
||||
"valuesfrom": rr.values,
|
||||
"values": rr.values,
|
||||
}
|
||||
$('#NSModal').modal('show');
|
||||
}
|
||||
$scope.addDS = function(domain) {
|
||||
$scope.nsrr = {
|
||||
"domain": domain,
|
||||
"ttl": 900,
|
||||
|
|
@ -246,13 +277,21 @@ angular.module("AdLinApp")
|
|||
}
|
||||
$('#NSModal').modal('show');
|
||||
}
|
||||
$scope.updateDS = function(domain, rr) {
|
||||
$scope.nsrr = {
|
||||
"domain": domain,
|
||||
"ttl": 900,
|
||||
"rr": "DS",
|
||||
"labels": ["Key Tag", "Algo clef", "Algo hash", "Hash (hex)"],
|
||||
"valuesfrom": rr.values,
|
||||
"values": rr.values,
|
||||
}
|
||||
$('#NSModal').modal('show');
|
||||
}
|
||||
|
||||
$scope.saveNSRR = function(nsrr) {
|
||||
if (nsrr.values === undefined)
|
||||
nsrr.values = [nsrr.value];
|
||||
|
||||
$http({
|
||||
method: 'POST',
|
||||
method: (nsrr.valuesfrom !== undefined)?'PATCH':'POST',
|
||||
url: "/api/ddomains/" + nsrr.domain + "/" + nsrr.rr,
|
||||
headers: {
|
||||
'Authorization': "Bearer " + sessionStorage.token
|
||||
|
|
@ -260,62 +299,75 @@ angular.module("AdLinApp")
|
|||
data: nsrr,
|
||||
}).then(function(response) {
|
||||
$('#NSModal').modal('hide');
|
||||
$location.url("./domains");
|
||||
callOnUpdateEvt();
|
||||
}, function(response) {
|
||||
alert(response.data.errmsg);
|
||||
});
|
||||
}
|
||||
|
||||
$scope.delNSRR = function(nsrr) {
|
||||
$scope.deleteRR = function(domain, rr) {
|
||||
rr["pleaseWait" + rr.rr + "del"] = true;
|
||||
$http({
|
||||
method: 'DELETE',
|
||||
url: "/api/ddomains/" + nsrr.domain + "/" + nsrr.rr,
|
||||
url: "/api/ddomains/" + domain + "/" + rr.rr,
|
||||
headers: {
|
||||
'Authorization': "Bearer " + sessionStorage.token
|
||||
},
|
||||
data: rr,
|
||||
}).then(function(response) {
|
||||
$('#NSModal').modal('hide');
|
||||
$location.url("./domains");
|
||||
callOnUpdateEvt();
|
||||
rr["pleaseWait" + rr.rr + "del"] = false;
|
||||
}, function(response) {
|
||||
rr["pleaseWait" + rr.rr + "del"] = false;
|
||||
alert(response.data.errmsg);
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
.controller("NSDomainsController", function($scope, $http) {
|
||||
$http({
|
||||
method: 'GET',
|
||||
url: "/api/ddomains/" + $scope.domain + "/NS",
|
||||
headers: {
|
||||
'Authorization': "Bearer " + sessionStorage.token
|
||||
},
|
||||
}).then(function(response) {
|
||||
$scope.domainNS = response.data;
|
||||
});
|
||||
var updateNS = function() {
|
||||
$http({
|
||||
method: 'GET',
|
||||
url: "/api/ddomains/" + $scope.domain + "/NS",
|
||||
headers: {
|
||||
'Authorization': "Bearer " + sessionStorage.token
|
||||
},
|
||||
}).then(function(response) {
|
||||
$scope.domainNS = response.data;
|
||||
});
|
||||
}
|
||||
updateNS();
|
||||
$scope.addOnUpdateEvent(updateNS);
|
||||
})
|
||||
|
||||
.controller("GLUEDomainsController", function($scope, $http) {
|
||||
$http({
|
||||
method: 'GET',
|
||||
url: "/api/ddomains/" + $scope.domain + "/GLUE",
|
||||
headers: {
|
||||
'Authorization': "Bearer " + sessionStorage.token
|
||||
},
|
||||
}).then(function(response) {
|
||||
$scope.domainGLUE = response.data;
|
||||
});
|
||||
|
||||
var updateGLUE = function() {
|
||||
$http({
|
||||
method: 'GET',
|
||||
url: "/api/ddomains/" + $scope.domain + "/GLUE",
|
||||
headers: {
|
||||
'Authorization': "Bearer " + sessionStorage.token
|
||||
},
|
||||
}).then(function(response) {
|
||||
$scope.domainGLUE = response.data;
|
||||
});
|
||||
}
|
||||
updateGLUE();
|
||||
$scope.addOnUpdateEvent(updateGLUE);
|
||||
})
|
||||
|
||||
.controller("DSDomainsController", function($scope, $http) {
|
||||
$http({
|
||||
method: 'GET',
|
||||
url: "/api/ddomains/" + $scope.domain + "/DS",
|
||||
headers: {
|
||||
'Authorization': "Bearer " + sessionStorage.token
|
||||
},
|
||||
}).then(function(response) {
|
||||
$scope.domainDS = response.data;
|
||||
});
|
||||
|
||||
var updateDS = function() {
|
||||
$http({
|
||||
method: 'GET',
|
||||
url: "/api/ddomains/" + $scope.domain + "/DS",
|
||||
headers: {
|
||||
'Authorization': "Bearer " + sessionStorage.token
|
||||
},
|
||||
}).then(function(response) {
|
||||
$scope.domainDS = response.data;
|
||||
});
|
||||
}
|
||||
updateDS();
|
||||
$scope.addOnUpdateEvent(updateDS);
|
||||
})
|
||||
|
|
|
|||
|
|
@ -37,69 +37,150 @@
|
|||
|
||||
<h3>Délégation</h3>
|
||||
|
||||
<table class="table table-striped table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Domaine</th>
|
||||
<th>NS</th>
|
||||
<th>GLUE</th>
|
||||
<th>DNSSEC</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody style="font-family: monospace">
|
||||
<tr ng-repeat="domain in ddomains">
|
||||
<td>{{ domain }}</td>
|
||||
<td ng-controller="NSDomainsController">
|
||||
<span ng-if="!domainNS" class="badge badge-pill badge-danger">Non défini</span>
|
||||
<div ng-repeat="rr in domainNS">
|
||||
{{ rr.domain }}
|
||||
{{ rr.ttl }}
|
||||
{{ rr.rr }}
|
||||
<span ng-repeat="val in rr.values">{{ val }} </span>
|
||||
</div>
|
||||
<button class="btn btn-primary" ng-click="updateNS(domain)">
|
||||
Mettre à jour
|
||||
</button>
|
||||
</td>
|
||||
<td ng-controller="GLUEDomainsController">
|
||||
<span ng-if="!domainGLUE" class="badge badge-pill badge-danger">Non défini</span>
|
||||
<div ng-repeat="rr in domainGLUE">
|
||||
{{ rr.domain }}
|
||||
{{ rr.ttl }}
|
||||
{{ rr.rr }}
|
||||
<span ng-repeat="val in rr.values">{{ val }} </span>
|
||||
</div>
|
||||
<br>
|
||||
<button class="btn btn-primary" ng-click="updateGLUE(domain)">
|
||||
Mettre à jour
|
||||
</button>
|
||||
</td>
|
||||
<td ng-controller="DSDomainsController">
|
||||
<span class="badge badge-pill badge-danger" ng-show="!domainDS">Non configuré</span>
|
||||
<div ng-repeat="rr in domainDS">
|
||||
{{ rr.domain }}
|
||||
{{ rr.ttl }}
|
||||
{{ rr.rr }}
|
||||
<span ng-repeat="val in rr.values">{{ val }} </span>
|
||||
</div>
|
||||
<br>
|
||||
<button class="btn btn-primary" ng-click="updateDS(domain)">
|
||||
Mettre à jour
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<button class="btn btn-primary" ng-click="newDelegation()" disabled>
|
||||
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true" ng-show="pleaseWaitNewDelegation"></span>
|
||||
Demander un nouveau nom de domaine
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
<ul class="nav nav-tabs" id="ddomainTabs" role="tablist">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" data-toggle="tab" data-target="#NS" role="tab" aria-controls="ns" aria-selected="true">Serveurs de nom</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" data-toggle="tab" data-target="#GLUE" role="tab" aria-controls="glue" aria-selected="false">GLUE</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" data-toggle="tab" data-target="#DNSSEC" role="tab" aria-controls="dnssec" aria-selected="false">DNSSEC</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content" id="myTabContent">
|
||||
<div class="tab-pane fade show active" id="NS" role="tabpanel" aria-labelledby="ns-tab">
|
||||
|
||||
<div ng-repeat="domain in ddomains">
|
||||
<h4 class="text-muted">{{ domain }}</h4>
|
||||
|
||||
<table class="table table-striped table-hover" ng-controller="NSDomainsController">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Serveur DNS</th>
|
||||
<th>Joignable</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody style="font-family: monospace" ng-if="domainNS">
|
||||
<tr ng-repeat="rr in domainNS">
|
||||
<td><span ng-repeat="val in rr.values">{{ val }} </span></td>
|
||||
<td>
|
||||
<span class="badge badge-pill badge-secondary">Not implemented yet</span>
|
||||
</td>
|
||||
<td>
|
||||
<button class="btn btn-warning" ng-click="updateNS(domain, rr)">Modifier</button>
|
||||
<button class="btn btn-danger" ng-click="deleteRR(domain, rr)">
|
||||
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true" ng-show="rr.pleaseWaitNSdel"></span>
|
||||
Supprimer
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody style="font-family: monospace" ng-if="!domainNS">
|
||||
<tr>
|
||||
<td colspan="4">Vous n'avez défini aucun serveur de noms pour l'instant</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<button class="btn btn-primary" ng-click="addNS(domain)">Ajouter un nouveau serveur de noms</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="tab-pane fade" id="GLUE" role="tabpanel" aria-labelledby="glue-tab">
|
||||
|
||||
<div ng-repeat="domain in ddomains">
|
||||
<h4 class="text-muted">{{ domain }}</h4>
|
||||
|
||||
<table class="table table-striped table-hover" ng-controller="GLUEDomainsController">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Domaine DNS</th>
|
||||
<th>IP</th>
|
||||
<th>Joignable</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody style="font-family: monospace" ng-if="domainGLUE">
|
||||
<tr ng-repeat="rr in domainGLUE">
|
||||
<td>{{ domain }}</td>
|
||||
<td><span ng-repeat="val in rr.values">{{ val }} </span></td>
|
||||
<td>
|
||||
<span class="badge badge-pill badge-secondary">Not implemented yet</span>
|
||||
</td>
|
||||
<td>
|
||||
<button class="btn btn-warning" ng-click="updateGLUE(domain, rr)">Modifier</button>
|
||||
<button class="btn btn-danger" ng-click="deleteRR(domain, rr)">
|
||||
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true" ng-show="rr.pleaseWaitAAAAdel"></span>
|
||||
Supprimer
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody style="font-family: monospace" ng-if="!domainGLUE">
|
||||
<tr>
|
||||
<td colspan="4">Vous n'avez défini aucun enregistrement glue pour l'instant</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<button class="btn btn-primary" ng-click="addGLUE(domain)">Ajouter un enregistrement glue</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="tab-pane fade" id="DNSSEC" role="tabpanel" aria-labelledby="dnssec-tab">
|
||||
|
||||
<div ng-repeat="domain in ddomains">
|
||||
<h4 class="text-muted">{{ domain }}</h4>
|
||||
|
||||
<table class="table table-striped table-hover" ng-controller="DSDomainsController">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Key Tag</th>
|
||||
<th>Algorithme de la clef</th>
|
||||
<th>Algorithme de hash</th>
|
||||
<th>Hash (hex)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody style="font-family: monospace" ng-if="domainDS">
|
||||
<tr ng-repeat="rr in domainDS">
|
||||
<td ng-repeat="val in rr.values">{{ val }}</td>
|
||||
<td>
|
||||
<button class="btn btn-warning" ng-click="updateDS(domain, rr)">Modifier</button>
|
||||
<button class="btn btn-danger" ng-click="deleteRR(domain, rr)">
|
||||
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true" ng-show="rr.pleaseWaitDSdel"></span>
|
||||
Supprimer
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody style="font-family: monospace" ng-if="!domainDS">
|
||||
<tr>
|
||||
<td colspan="4">Vous n'avez défini aucun enregistrement DS pour l'instant</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="5">
|
||||
<button class="btn btn-primary" ng-click="addDS(domain)">Ajouter un enregistrement DS</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="modal" id="NSModal" tabindex="-1" role="dialog">
|
||||
<div class="modal-dialog" role="document">
|
||||
|
|
@ -133,14 +214,9 @@
|
|||
<input class="form-control-plaintext" ng-model="nsrr.rr" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row" ng-if="nsrr.value !== undefined">
|
||||
<label for="value" class="col-sm-2 col-form-label">Valeur</label>
|
||||
<div class="col-sm-10">
|
||||
<input class="form-control" id="value" ng-model="nsrr.value" autofocus>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row" ng-repeat="v in nsrr.values track by $index">
|
||||
<label for="value{{$index}}" class="col-sm-2 col-form-label">{{ nsrr.labels[$index] }}</label>
|
||||
<label for="value{{$index}}" class="col-sm-2 col-form-label" ng-if="nsrr.labels">{{ nsrr.labels[$index] }}</label>
|
||||
<label for="value{{$index}}" class="col-sm-2 col-form-label" ng-if="!nsrr.labels">Valeur</label>
|
||||
<div class="col-sm-10">
|
||||
<input class="form-control" id="value{{$index}}" ng-model="nsrr.values[$index]">
|
||||
</div>
|
||||
|
|
@ -150,7 +226,6 @@
|
|||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
|
||||
<button type="button" class="btn btn-primary" ng-click="saveNSRR(nsrr)">Enregistrer</button>
|
||||
<button type="button" class="btn btn-danger" ng-click="delNSRR(nsrr)">Supprimer</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Reference in a new issue