mirror of
https://github.com/donl/gPanel.git
synced 2026-05-25 22:06:55 -06:00
referencing issue #93, deleting filtered ips now works
This commit is contained in:
parent
8b6a4e65b2
commit
236c07504a
7 changed files with 92 additions and 6 deletions
|
|
@ -29,3 +29,9 @@ body {
|
|||
cursor:pointer;
|
||||
}
|
||||
/* General End */
|
||||
|
||||
/* IP Filter Modal Start */
|
||||
._js_delete-filtered-ip {
|
||||
cursor:pointer;
|
||||
}
|
||||
/* IP Filter Modal End */
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ function listFilteredIPs(type) {
|
|||
if(xhr.response != undefined && xhr.response.length != 0) {
|
||||
jsonResponse = JSON.parse(xhr.response)
|
||||
jQuery.each(jsonResponse, function(k, v) {
|
||||
ipModal.find('._js_currently-filtered-ips').append("<li>"+v.ip+"</li>");
|
||||
ipModal.find('._js_currently-filtered-ips').append('<li class="_js_delete-filtered-ip" data="'+v.id+'">'+v.ip+'</li>');
|
||||
});
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
32
account/assets/js/panelHandlers/security/unfilter_ip.js
Normal file
32
account/assets/js/panelHandlers/security/unfilter_ip.js
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
var ipModal = jQuery('.ip-filter-modal');
|
||||
|
||||
jQuery(document).on('click', '._js_delete-filtered-ip', function(e){
|
||||
e.preventDefault();
|
||||
|
||||
var ip = jQuery(this).text();
|
||||
var id = jQuery(this).attr('data');
|
||||
|
||||
var ensure = confirm('Are you sure you want to delete the IP filter for ' + ip + '?');
|
||||
if (ensure) {
|
||||
var requestData = {};
|
||||
requestData["id"] = parseInt(id);
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('UPDATE', 'api/ip/unfilter', true);
|
||||
xhr.send(JSON.stringify(requestData));
|
||||
|
||||
xhr.onloadend = function() {
|
||||
if(xhr.status == 204) {
|
||||
listFilteredIPs(ipModal.find('input[name="type"]').val());
|
||||
}
|
||||
else {
|
||||
if(xhr.response != undefined && xhr.response.length != 0) {
|
||||
alert("Error: " + xhr.response);
|
||||
}
|
||||
else {
|
||||
alert("An error has occurred, if the problem persists please contact your administrator.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -70,6 +70,7 @@
|
|||
</form>
|
||||
|
||||
<h4 class="mt-3">Currently Filtered IPs</h4>
|
||||
<h6 class="mt-1">Click on a filtered IP to delete it.</h6>
|
||||
<ul class="_js_currently-filtered-ips"></ul>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
|
|
@ -187,6 +188,7 @@
|
|||
|
||||
<script type="text/javascript" src="assets/js/panelHandlers/security/ip_list.js"></script>
|
||||
<script type="text/javascript" src="assets/js/panelHandlers/security/filter_ip.js"></script>
|
||||
<script type="text/javascript" src="assets/js/panelHandlers/security/unfilter_ip.js"></script>
|
||||
<!-- KEEP AT BOTTOM OF BODY TAGS -->
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,47 @@
|
|||
package ip
|
||||
|
||||
import "net/http"
|
||||
import (
|
||||
"encoding/json"
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
func Unfilter(res http.ResponseWriter, req *http.Request, dir string) bool {
|
||||
"github.com/Ennovar/gPanel/pkg/database"
|
||||
)
|
||||
|
||||
func Unfilter(res http.ResponseWriter, req *http.Request, logger *log.Logger, dir string) bool {
|
||||
if req.Method != "UPDATE" {
|
||||
logger.Println(req.URL.Path + "::" + req.Method + "::" + strconv.Itoa(http.StatusMethodNotAllowed) + "::" + http.StatusText(http.StatusMethodNotAllowed))
|
||||
http.Error(res, http.StatusText(http.StatusMethodNotAllowed), http.StatusMethodNotAllowed)
|
||||
return false
|
||||
}
|
||||
|
||||
var unfilterIPRequestData struct {
|
||||
ID int `json:"id"`
|
||||
}
|
||||
|
||||
err := json.NewDecoder(req.Body).Decode(&unfilterIPRequestData)
|
||||
if err != nil {
|
||||
logger.Println(req.URL.Path + "::" + err.Error())
|
||||
http.Error(res, err.Error(), http.StatusBadRequest)
|
||||
return false
|
||||
}
|
||||
|
||||
ds, err := database.Open(dir + database.DB_MAIN)
|
||||
if err != nil || ds == nil {
|
||||
logger.Println(req.URL.Path + "::" + err.Error())
|
||||
http.Error(res, err.Error(), http.StatusInternalServerError)
|
||||
return false
|
||||
}
|
||||
defer ds.Close()
|
||||
|
||||
err = ds.Delete(database.BUCKET_FILTERED_IPS, database.IDtoKey(unfilterIPRequestData.ID))
|
||||
if err != nil {
|
||||
logger.Println(req.URL.Path + "::" + err.Error())
|
||||
http.Error(res, err.Error(), http.StatusInternalServerError)
|
||||
return false
|
||||
}
|
||||
|
||||
res.WriteHeader(http.StatusNoContent)
|
||||
return true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,12 @@ import (
|
|||
"github.com/boltdb/bolt"
|
||||
)
|
||||
|
||||
func IDtoKey(id int) []byte {
|
||||
key := make([]byte, 8)
|
||||
binary.BigEndian.PutUint64(key, uint64(id))
|
||||
return key
|
||||
}
|
||||
|
||||
func (ds *Datastore) NewFilteredIP(newip *Struct_Filtered_IP) error {
|
||||
return ds.handle.Update(func(tx *bolt.Tx) error {
|
||||
b := tx.Bucket([]byte(BUCKET_FILTERED_IPS))
|
||||
|
|
@ -19,9 +25,7 @@ func (ds *Datastore) NewFilteredIP(newip *Struct_Filtered_IP) error {
|
|||
return err
|
||||
}
|
||||
|
||||
key := make([]byte, 8)
|
||||
binary.BigEndian.PutUint64(key, uint64(newip.ID))
|
||||
|
||||
key := IDtoKey(newip.ID)
|
||||
return b.Put(key, buf)
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,6 +47,8 @@ func (con *Controller) apiHandler(res http.ResponseWriter, req *http.Request) (b
|
|||
return true, ip.List(res, req, con.APILogger, con.Directory)
|
||||
case "/ip/filter":
|
||||
return true, ip.Filter(res, req, con.APILogger, con.Directory)
|
||||
case "/ip/unfilter":
|
||||
return true, ip.Unfilter(res, req, con.APILogger, con.Directory)
|
||||
default:
|
||||
return false, false
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue