mirror of
https://github.com/donl/gPanel.git
synced 2026-06-30 06:12:06 -06:00
fixed bundle deletion hangup and added support to view and delete all registered domains from gpanel server
This commit is contained in:
parent
10372b00d6
commit
5db28a9650
4 changed files with 108 additions and 4 deletions
|
|
@ -38,6 +38,7 @@ func (ds *Datastore) ListDomains(bundle string) (map[string]Struct_Domain, error
|
|||
|
||||
func (ds *Datastore) RemoveInstances(bundle string) error {
|
||||
var holder Struct_Domain
|
||||
var toDelete []string
|
||||
|
||||
ds.handle.View(func(tx *bolt.Tx) error {
|
||||
b := tx.Bucket([]byte(BUCKET_DOMAINS))
|
||||
|
|
@ -47,16 +48,20 @@ func (ds *Datastore) RemoveInstances(bundle string) error {
|
|||
json.Unmarshal(v, &holder)
|
||||
|
||||
if holder.BundleName == bundle {
|
||||
err := ds.Delete(BUCKET_DOMAINS, k)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
toDelete = append(toDelete, string(k))
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
|
||||
for _, v := range toDelete {
|
||||
err := ds.Delete(BUCKET_DOMAINS, []byte(v))
|
||||
if err != nil && err != ErrKeyNotExist {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import (
|
|||
"github.com/Ennovar/gPanel/pkg/api/server"
|
||||
"github.com/Ennovar/gPanel/pkg/api/user"
|
||||
"github.com/Ennovar/gPanel/pkg/api/settings"
|
||||
"github.com/Ennovar/gPanel/pkg/api/domain"
|
||||
)
|
||||
|
||||
func (con *Controller) apiHandler(res http.ResponseWriter, req *http.Request) (bool, bool) {
|
||||
|
|
@ -103,6 +104,10 @@ func (con *Controller) apiHandler(res http.ResponseWriter, req *http.Request) (b
|
|||
return true, settings.GetNameservers(res, req, con.APILogger)
|
||||
case "/settings/remove_nameserver":
|
||||
return true, settings.RemoveNameserver(res, req, con.APILogger)
|
||||
case "/domain/list":
|
||||
return true, domain.List(res, req, con.APILogger)
|
||||
case "/domain/unlink":
|
||||
return true, domain.Unlink(res, req, con.APILogger)
|
||||
default:
|
||||
return false, false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
var clientDomainsModal = jQuery('.registered-client-domains-modal');
|
||||
|
||||
jQuery('._js_registered-domains').on('click', function(e){
|
||||
e.preventDefault();
|
||||
|
||||
ListClientDomains();
|
||||
clientDomainsModal.modal('show');
|
||||
});
|
||||
|
||||
jQuery(document).on('click', '._js_delete-client-registered-domain', function(e){
|
||||
e.preventDefault();
|
||||
|
||||
var domain = jQuery(this).attr('data');
|
||||
var ensure = confirm("Are you sure you want to unregister the domain \""+ domain +"\" from the client?");
|
||||
|
||||
if(ensure) {
|
||||
var requestData = {};
|
||||
requestData["domain"] = domain;
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('DELETE', 'api/domain/unlink', true);
|
||||
xhr.send(JSON.stringify(requestData));
|
||||
|
||||
xhr.onloadend = function () {
|
||||
if (xhr.status == 204) {
|
||||
ListClientDomains();
|
||||
}
|
||||
else {
|
||||
if (xhr.response != undefined && xhr.response.length != 0) {
|
||||
alert('Error: ' + xhr.status);
|
||||
}
|
||||
else {
|
||||
alert('An error has occurred. If problem persists please contact your community administrator.');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function ListClientDomains() {
|
||||
var list = jQuery('._js_current-registered-client-domains');
|
||||
|
||||
var requestData = {};
|
||||
requestData["name"] = "*";
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('POST', 'api/domain/list', true);
|
||||
xhr.send(JSON.stringify(requestData));
|
||||
|
||||
xhr.onloadend = function() {
|
||||
list.html('');
|
||||
if(xhr.status == 200) {
|
||||
jsonResponse = JSON.parse(xhr.response)
|
||||
jQuery.each(jsonResponse, function(k, v) {
|
||||
list.append('<div class="row mt-2"><div class="col-6"><p class="mb-0">'+k+'</p><small>Bundle: '+v.name+'</small></div><div class="col-6 d-flex justify-content-end"><div class="btn-group" role="group"><button class="btn btn-outline-danger _js_delete-client-registered-domain" data="'+k+'">Delete</button></div></div></div>');
|
||||
});
|
||||
}
|
||||
else if(xhr.status == 204) {
|
||||
list.html('<div class="row mt-2"><div class="col-6 d-flex align-items-center"><p>No client registered domains exist.</p></div></div>');
|
||||
}
|
||||
else {
|
||||
if(xhr.response != undefined && xhr.response.length != 0) {
|
||||
alert('Error: ' + xhr.status);
|
||||
}
|
||||
else {
|
||||
alert('An error has occurred. If problem persists please contact your community administrator.');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -399,6 +399,28 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Registered Client Domains Modal -->
|
||||
<div class="modal fade registered-client-domains-modal" tabindex="-1" role="dialog" aria-labelledby="registered-client-domains-modal" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Registered Client Domains</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="container-full _js_current-registered-client-domains">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
|
|
@ -453,6 +475,7 @@
|
|||
<button type="button" class="btn btn-outline-primary _js_smtp-credentials">SMTP Credentials</button>
|
||||
<button type="button" class="btn btn-outline-primary _js_admin-settings">Administrator Settings</button>
|
||||
<button type="button" class="btn btn-outline-primary _js_nameserver-config">Nameserver Configuration</button>
|
||||
<button type="button" class="btn btn-outline-primary _js_registered-domains">Registered Client Domains</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -510,6 +533,7 @@
|
|||
<script type="text/javascript" src="assets/js/panelHandlers/settings/nameserver_config.js"></script>
|
||||
<script type="text/javascript" src="assets/js/panelHandlers/settings/add_nameserver.js"></script>
|
||||
<script type="text/javascript" src="assets/js/panelHandlers/settings/remove_nameserver.js"></script>
|
||||
<script type="text/javascript" src="assets/js/panelHandlers/settings/client_domains.js"></script>
|
||||
<!-- KEEP AT BOTTOM OF BODY TAGS -->
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue