1
0
mirror of https://github.com/donaldzou/WGDashboard.git synced 2024-11-22 15:20:09 +01:00

Added checking if peers removed directly from config file by not from dashboard, and fixed DNS did not get check from editing peers

This commit is contained in:
Donald Cheng Hong Zou 2021-08-24 21:04:01 -04:00
parent f72b405f6d
commit 6828b905ef
2 changed files with 14 additions and 8 deletions

View File

@ -225,6 +225,7 @@ def get_all_peers_data(config_name):
}) })
else: else:
# Update database since V2.2 # Update database since V2.2
print("looking for "+search[0]['id'])
update_db = {} update_db = {}
if "private_key" not in search[0]: if "private_key" not in search[0]:
update_db['private_key'] = '' update_db['private_key'] = ''
@ -233,6 +234,15 @@ def get_all_peers_data(config_name):
if "endpoint_allowed_ip" not in search[0]: if "endpoint_allowed_ip" not in search[0]:
update_db['endpoint_allowed_ip'] = '0.0.0.0/0' update_db['endpoint_allowed_ip'] = '0.0.0.0/0'
db.update(update_db, peers.id == i['PublicKey']) db.update(update_db, peers.id == i['PublicKey'])
# Remove peers no longer exist in WireGuard configuration file
db_key = list(map(lambda a: a['id'], db.all()))
wg_key = list(map(lambda a: a['PublicKey'], conf_peer_data['Peers']))
for i in db_key:
if i not in wg_key:
db.remove(peers.id == i)
print(db_key)
print(wg_key)
tic = time.perf_counter() tic = time.perf_counter()
get_latest_handshake(config_name, db, peers) get_latest_handshake(config_name, db, peers)
@ -765,7 +775,6 @@ def add_peer(config_name):
keys = get_conf_peer_key(config_name) keys = get_conf_peer_key(config_name)
if len(public_key) == 0 or len(DNS) == 0 or len(allowed_ips) == 0 or len(endpoint_allowed_ip) == 0: if len(public_key) == 0 or len(DNS) == 0 or len(allowed_ips) == 0 or len(endpoint_allowed_ip) == 0:
return "Please fill in all required box." return "Please fill in all required box."
if type(keys) != list: if type(keys) != list:
return config_name + " is not running." return config_name + " is not running."
if public_key in keys: if public_key in keys:
@ -835,7 +844,8 @@ def save_peer_setting(config_name):
check_ip = checkAllowedIP(id, allowed_ip, config_name) check_ip = checkAllowedIP(id, allowed_ip, config_name)
if not checkIpWithRange(endpoint_allowed_ip): if not checkIpWithRange(endpoint_allowed_ip):
return jsonify({"status": "failed", "msg": "Endpoint Allowed IPs format is incorrect."}) return jsonify({"status": "failed", "msg": "Endpoint Allowed IPs format is incorrect."})
if not checkIp(DNS):
return jsonify({"status": "failed", "msg": "DNS format is incorrect."})
if private_key != "": if private_key != "":
check_key = checkKeyMatch(private_key, id, config_name) check_key = checkKeyMatch(private_key, id, config_name)
if check_key['status'] == "failed": if check_key['status'] == "failed":
@ -843,15 +853,13 @@ def save_peer_setting(config_name):
if check_ip['status'] == "failed": if check_ip['status'] == "failed":
return jsonify(check_ip) return jsonify(check_ip)
try: try:
if allowed_ip == "": if allowed_ip == "": allowed_ip = '""'
allowed_ip = '""'
change_ip = subprocess.check_output('wg set ' + config_name + " peer " + id + " allowed-ips " + allowed_ip, change_ip = subprocess.check_output('wg set ' + config_name + " peer " + id + " allowed-ips " + allowed_ip,
shell=True, stderr=subprocess.STDOUT) shell=True, stderr=subprocess.STDOUT)
save_change_ip = subprocess.check_output('wg-quick save ' + config_name, shell=True, save_change_ip = subprocess.check_output('wg-quick save ' + config_name, shell=True,
stderr=subprocess.STDOUT) stderr=subprocess.STDOUT)
if change_ip.decode("UTF-8") != "": if change_ip.decode("UTF-8") != "":
return jsonify({"status": "failed", "msg": change_ip.decode("UTF-8")}) return jsonify({"status": "failed", "msg": change_ip.decode("UTF-8")})
db.update( db.update(
{"name": name, "private_key": private_key, "DNS": DNS, "endpoint_allowed_ip": endpoint_allowed_ip}, {"name": name, "private_key": private_key, "DNS": DNS, "endpoint_allowed_ip": endpoint_allowed_ip},
peers.id == id) peers.id == id)

View File

@ -67,8 +67,6 @@ $("#save_peer").click(function(){
for (var i = 0; i < data_list.length; i++){ for (var i = 0; i < data_list.length; i++){
data_list[i].attr("disabled", "disabled") data_list[i].attr("disabled", "disabled")
} }
$.ajax({ $.ajax({
method: "POST", method: "POST",
url: "/add_peer/"+conf, url: "/add_peer/"+conf,
@ -248,7 +246,7 @@ $("#save_peer_setting").click(function (){
} }
} }
}) })
}else{ }else{
$("#setting_peer_alert").html("Please fill in all required box."); $("#setting_peer_alert").html("Please fill in all required box.");
$("#setting_peer_alert").removeClass("d-none"); $("#setting_peer_alert").removeClass("d-none");
$("#save_peer_setting").removeAttr("disabled") $("#save_peer_setting").removeAttr("disabled")