394 lines
15 KiB
HTML
394 lines
15 KiB
HTML
<h2>
|
|
Noms de domaine
|
|
</h2>
|
|
|
|
<h3>
|
|
Association simple
|
|
<span class="badge badge-pill badge-dark" title="Une association simple est un sous-domaine qui va vous être attribué, sans que vous ayez à gérer de serveur DNS. Ce domaine sera associé à une IP que vous pourrez changer par la suite. C'est la première étape, plus facile que la délégation.">?</span>
|
|
</h3>
|
|
|
|
<table class="table table-striped table-hover">
|
|
<thead>
|
|
<tr>
|
|
<th>Domaine</th>
|
|
<th>TTL</th>
|
|
<th>Type</th>
|
|
<th>Entrée</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody style="font-family: monospace">
|
|
<tr ng-repeat="ad in adomains">
|
|
<td>{{ ad.domain }}</td>
|
|
<td>{{ ad.ttl }}</td>
|
|
<td>{{ ad.rr }}</td>
|
|
<td><span ng-repeat="val in ad.values">{{ val }} </span></td>
|
|
</tr>
|
|
</tbody>
|
|
<tfoot>
|
|
<tr>
|
|
<td colspan="4">
|
|
<button class="btn btn-primary" ng-click="askAssociationD()">
|
|
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true" ng-show="pleaseWaitNewAssociation"></span>
|
|
Demander une nouvelle association
|
|
</button>
|
|
<button class="btn ml-2" ng-class="{'btn-secondary': !adomains || !adomains.length, 'btn-success': adomains && adomains.length}" ng-disabled="!adomains || !adomains.length" title="Si tu disposes de ton propre domaine chez un véritable hébergeur, tu peux dédier un sous-domaine pour l'utiliser à la place du domaine qui t'es proposé par Maatma." ng-click="useMyAssociationD()">
|
|
Utiliser mon propre domaine
|
|
</button>
|
|
</td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
|
|
<hr class="my-4">
|
|
|
|
<h3>
|
|
Délégation
|
|
<span class="badge badge-pill badge-dark" title="Une délégation va vous permettre de gérer vous-même votre domaine sur Internet. Nous vous offrons login.srs.p0m.fr, mais vous pouvez aussi choisir de créer la délégation sur votre domaine, si vous en possédez un. Rendez-vous ensuite sur votre serveur pour y installer un serveur de noms de domaine autoritaire tel que nsd, bind, knot ou encore powerDNS...">?</span>
|
|
</h3>
|
|
|
|
<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 ng-if="!student.delegated_domain" 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 }}
|
|
<button class="btn btn-sm btn-info ml-2" ng-if="$first" title="Si tu disposes de ton propre domaine chez un véritable hébergeur, tu peux dédier un sous-domaine pour l'utiliser à la place du domaine qui t'es proposé par Maatma." ng-click="useMyDelegationD()">
|
|
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true" ng-show="pleaseWaitNewDelegation"></span>
|
|
Utiliser mon propre domaine
|
|
</button>
|
|
</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>{{ rr.domain }}</td>
|
|
<td><span ng-repeat="val in rr.values">{{ val }} </span></td>
|
|
<td ng-controller="GLUEController">
|
|
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true" ng-show="GLUEpending"></span>
|
|
<span class="badge badge-pill" ng-class="{'badge-success': GLUEok, 'badge-danger': !GLUEok}" ng-bind="GLUEerr">Not implemented yet</span>
|
|
</td>
|
|
<td>
|
|
<button class="btn btn-warning" ng-click="updateGLUE(rr.domain, rr)">Modifier</button>
|
|
<button class="btn btn-danger" ng-click="deleteRR(rr.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 track by $index">{{ val }}</td>
|
|
<td>
|
|
<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 ng-if="student.delegated_domain">
|
|
<h4 class="text-muted">
|
|
{{ student.delegated_domain }}
|
|
<button class="btn btn-sm btn-danger ml-2" ng-if="student.delegated_domain" ng-click="delMyDomainDelegatedD()">
|
|
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true" ng-show="pleaseWaitNewDelegation"></span>
|
|
Ne plus utiliser mon domaine
|
|
</button>
|
|
</h4>
|
|
<p>
|
|
Vous avez choisi d'utiliser votre propre domaine pour réaliser la délégation.
|
|
</p>
|
|
<p>
|
|
L'interface de maatma ne vous est plus utile, car pour réaliser la délégation, vous devez passer par l'interface de votre bureau d'enregistrement.
|
|
</p>
|
|
<p>
|
|
Pour rappel, voici les enregistrements à rajouter :
|
|
</p>
|
|
<pre>
|
|
;; Delegation {{ student.delegated_domain }} to the given name server
|
|
{{ student.delegated_domain }} 300 IN NS ns.{{ student.delegated_domain }}
|
|
|
|
;; GLUE record to serve along with the previous record
|
|
ns.{{ student.delegated_domain }} 300 IN AAAA [your NS ip]
|
|
</pre>
|
|
</div>
|
|
|
|
<div class="modal" id="AssocModal" tabindex="-1" role="dialog">
|
|
<div class="modal-dialog" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title">Nouvelle association</h5>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p>
|
|
Attention : la nouvelle association écrasera toute association précédente !
|
|
</p>
|
|
<form class="ml-2 mr-2">
|
|
<div class="form-group row">
|
|
<label class="col-sm-2 col-form-label">Domaine</label>
|
|
<div class="col-sm-10">
|
|
<input class="form-control-plaintext" ng-model="assoc.domain" readonly>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<label class="col-sm-2 col-form-label">IPv4</label>
|
|
<div class="col-sm-10">
|
|
<input class="form-control-plaintext" ng-model="assoc.a" readonly>
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<label for="value" class="col-sm-2 col-form-label">IPv6</label>
|
|
<div class="col-sm-10">
|
|
<input class="form-control" id="value" ng-model="assoc.aaaa">
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<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="newAssociationD(assoc)">Envoyer</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal" id="AssocMyDomainModal" tabindex="-1" role="dialog">
|
|
<div class="modal-dialog" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title">Utiliser mon domaine</h5>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p>
|
|
Si tu possèdes ton propre domaine, tu peux l'utiliser à la place du domaine qui t'es proposé ici !
|
|
</p>
|
|
<p>
|
|
Pour cela, rien de plus simple. Choisis un sous-domaine de ton choix, dans ton domaine (par exemple <code>adlin.nemunai.re</code>) :
|
|
</p>
|
|
<form class="ml-2 mr-2">
|
|
<div class="form-group">
|
|
<label class="form-label" for="mysubdomain">Ton sous-domaine :</label>
|
|
<input class="form-control" id="mysubdomain" ng-model="assoc.cname" autofocus>
|
|
</div>
|
|
</form>
|
|
<p>
|
|
Ensuite, dans ta zone DNS, ajoute un alias pointant vers le domaine sous <code>adlin20xx.p0m.fr</code> qui t'es proposé :
|
|
</p>
|
|
<pre>
|
|
{{ assoc.cname }} 300 IN CNAME {{ assoc.domain }}
|
|
</pre>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
|
|
<button type="button" class="btn btn-primary" ng-disabled="!assoc.cname" ng-click="newMyDomainAssociationD(assoc)">Ok, c'est fait</button>
|
|
<button type="button" class="btn btn-danger" ng-show="student.associated_domain" ng-click="delMyDomainAssociationD(assoc)">Supprimer l'association enregistrée</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal" id="DelegateMyDomainModal" tabindex="-1" role="dialog">
|
|
<div class="modal-dialog" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title">Utiliser mon domaine comme délégation</h5>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p>
|
|
Tu peux utiliser ton propre domaine à la place du domaine qui t'es proposé ici !
|
|
</p>
|
|
<p>
|
|
Commence par choisir un sous-domaine de ton choix (différent de l'association ci-dessus), dans ton domaine (par exemple <code>adlin.nemunai.re</code>) :
|
|
</p>
|
|
<form class="ml-2 mr-2">
|
|
<div class="form-group">
|
|
<label class="form-label" for="mysubdomaind">Ton sous-domaine :</label>
|
|
<input class="form-control" id="mysubdomaind" ng-model="assoc.ns" autofocus>
|
|
</div>
|
|
</form>
|
|
<p>
|
|
Ensuite, configure ta zone DNS, pour réaliser la délégation. L'interface de maatma ne te sera plus utile, car pour réaliser la délégation, tu dois passer par l'interface du bureau d'enregistrement de ton domaine.
|
|
</p>
|
|
<pre>
|
|
;; Delegation {{ assoc.ns }} to the given name server
|
|
{{ assoc.ns }} 300 IN NS ns.{{ assoc.ns }}
|
|
|
|
;; GLUE record to serve along with the previous record
|
|
ns.{{ assoc.ns }} 300 IN AAAA [your NS ip]
|
|
</pre>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
|
|
<button type="button" class="btn btn-primary" ng-disabled="!assoc.ns" ng-click="newMyDomainDelegationD(assoc)">Ok, c'est fait</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal" id="NSModal" tabindex="-1" role="dialog">
|
|
<div class="modal-dialog" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" ng-if="nsrr.rr == 'NS'">Modifier la liste des serveurs de noms de la zone</h5>
|
|
<h5 class="modal-title" ng-if="nsrr.rr == 'AAAA'">Modifier les enregistrements GLUE du domaine</h5>
|
|
<h5 class="modal-title" ng-if="nsrr.rr == 'DS'">Modifier les clefs DNSSEC de la zone parente</h5>
|
|
<h5 class="modal-title" ng-if="nsrr.rr == 'DNSKEY'">Ajout d'un enregistrement DS (à partir d'un enregistrement DNSKEY)</h5>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<form class="ml-2 mr-2">
|
|
<div class="form-group row">
|
|
<label class="col-sm-2 col-form-label">Domaine</label>
|
|
<div class="col-sm-10">
|
|
<input class="form-control-plaintext" ng-model="nsrr.domain" ng-if="nsrr.rr == 'NS' || nsrr.rr == 'DS' || nsrr.rr == 'DNSKEY'" readonly>
|
|
<input class="form-control" ng-model="nsrr.domain" ng-if="nsrr.rr == 'AAAA'">
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<label for="ttl" class="col-sm-2 col-form-label">TTL</label>
|
|
<div class="col-sm-10">
|
|
<input class="form-control" id="ttl" ng-model="nsrr.ttl">
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<label class="col-sm-2 col-form-label">Type</label>
|
|
<div class="col-sm-10">
|
|
<input class="form-control-plaintext" ng-model="nsrr.rr" readonly>
|
|
</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" 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>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<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>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|