feat: slight refactors to improve logic

This commit is contained in:
Daan Selen
2025-09-15 13:20:17 +02:00
parent b2f306789c
commit 73a969a6bf
4 changed files with 76 additions and 71 deletions

View File

@@ -1,3 +0,0 @@
FROM ubuntu:24.04
RUN apt-get update && apt-get full-upgrade -y

View File

@@ -57,7 +57,7 @@ stop_service() {
} }
echo "------------------------- START ----------------------------" echo "------------------------- START ----------------------------"
echo "Starting the WireGuard Dashboard Docker container." echo "Starting the WGDashboard Docker container."
ensure_installation() { ensure_installation() {
echo "Quick-installing..." echo "Quick-installing..."
@@ -139,7 +139,7 @@ set_envvars() {
set_ini Server app_port "${wgd_port}" set_ini Server app_port "${wgd_port}"
# Account settings - process all parameters # Account settings - process all parameters
echo "Configuring user account:" [[ -n "$username" ]] && echo "Configuring user account:"
# Basic account variables # Basic account variables
[[ -n "$username" ]] && set_ini Account username "${username}" [[ -n "$username" ]] && set_ini Account username "${username}"

View File

@@ -174,12 +174,18 @@ class AmneziaWireguardConfiguration(WireguardConfiguration):
def getPeers(self): def getPeers(self):
self.Peers.clear() self.Peers.clear()
current_app.logger.info(f"Refreshing {self.Name} peer list")
if self.configurationFileChanged(): if self.configurationFileChanged():
with open(self.configPath, 'r') as configFile: with open(self.configPath, 'r') as configFile:
p = [] p = []
pCounter = -1 pCounter = -1
content = configFile.read().split('\n') content = configFile.read().split('\n')
try: try:
if "[Peer]" not in content:
current_app.logger.info(f"{self.Name} config has no [Peer] section")
return
peerStarts = content.index("[Peer]") peerStarts = content.index("[Peer]")
content = content[peerStarts:] content = content[peerStarts:]
for i in content: for i in content:

View File

@@ -399,80 +399,82 @@ class WireguardConfiguration:
def getPeers(self): def getPeers(self):
tmpList = [] tmpList = []
current_app.logger.info(f"Refreshing {self.Name} peer list") current_app.logger.info(f"Refreshing {self.Name} peer list")
if self.configurationFileChanged(): if self.configurationFileChanged():
with open(self.configPath, 'r') as configFile: with open(self.configPath, 'r') as configFile:
p = [] p = []
pCounter = -1 pCounter = -1
content = configFile.read().split('\n') content = configFile.read().split('\n')
try: try:
if "[Peer]" in content: if "[Peer]" not in content:
peerStarts = content.index("[Peer]") current_app.logger.info(f"{self.Name} config has no [Peer] section")
content = content[peerStarts:] return
for i in content:
if not RegexMatch("#(.*)", i) and not RegexMatch(";(.*)", i): peerStarts = content.index("[Peer]")
if i == "[Peer]": content = content[peerStarts:]
pCounter += 1 for i in content:
p.append({}) if not RegexMatch("#(.*)", i) and not RegexMatch(";(.*)", i):
p[pCounter]["name"] = "" if i == "[Peer]":
else: pCounter += 1
if len(i) > 0: p.append({})
split = re.split(r'\s*=\s*', i, 1) p[pCounter]["name"] = ""
if len(split) == 2: else:
p[pCounter][split[0]] = split[1] if len(i) > 0:
split = re.split(r'\s*=\s*', i, 1)
if RegexMatch("#Name# = (.*)", i): if len(split) == 2:
split = re.split(r'\s*=\s*', i, 1) p[pCounter][split[0]] = split[1]
if len(split) == 2:
p[pCounter]["name"] = split[1] if RegexMatch("#Name# = (.*)", i):
split = re.split(r'\s*=\s*', i, 1)
for i in p: if len(split) == 2:
if "PublicKey" in i.keys(): p[pCounter]["name"] = split[1]
with self.engine.connect() as conn:
tempPeer = conn.execute( for i in p:
self.peersTable.select().where( if "PublicKey" in i.keys():
with self.engine.connect() as conn:
tempPeer = conn.execute(
self.peersTable.select().where(
self.peersTable.columns.id == i['PublicKey']
)
).mappings().fetchone()
if tempPeer is None:
tempPeer = {
"id": i['PublicKey'],
"private_key": "",
"DNS": self.DashboardConfig.GetConfig("Peers", "peer_global_DNS")[1],
"endpoint_allowed_ip": self.DashboardConfig.GetConfig("Peers", "peer_endpoint_allowed_ip")[
1],
"name": i.get("name"),
"total_receive": 0,
"total_sent": 0,
"total_data": 0,
"endpoint": "N/A",
"status": "stopped",
"latest_handshake": "N/A",
"allowed_ip": i.get("AllowedIPs", "N/A"),
"cumu_receive": 0,
"cumu_sent": 0,
"cumu_data": 0,
"mtu": self.DashboardConfig.GetConfig("Peers", "peer_mtu")[1] if len(self.DashboardConfig.GetConfig("Peers", "peer_mtu")[1]) > 0 else None,
"keepalive": self.DashboardConfig.GetConfig("Peers", "peer_keep_alive")[1] if len(self.DashboardConfig.GetConfig("Peers", "peer_keep_alive")[1]) > 0 else None,
"remote_endpoint": self.DashboardConfig.GetConfig("Peers", "remote_endpoint")[1],
"preshared_key": i["PresharedKey"] if "PresharedKey" in i.keys() else ""
}
with self.engine.begin() as conn:
conn.execute(
self.peersTable.insert().values(tempPeer)
)
else:
with self.engine.begin() as conn:
conn.execute(
self.peersTable.update().values({
"allowed_ip": i.get("AllowedIPs", "N/A")
}).where(
self.peersTable.columns.id == i['PublicKey'] self.peersTable.columns.id == i['PublicKey']
) )
).mappings().fetchone() )
tmpList.append(Peer(tempPeer, self))
if tempPeer is None:
tempPeer = {
"id": i['PublicKey'],
"private_key": "",
"DNS": self.DashboardConfig.GetConfig("Peers", "peer_global_DNS")[1],
"endpoint_allowed_ip": self.DashboardConfig.GetConfig("Peers", "peer_endpoint_allowed_ip")[
1],
"name": i.get("name"),
"total_receive": 0,
"total_sent": 0,
"total_data": 0,
"endpoint": "N/A",
"status": "stopped",
"latest_handshake": "N/A",
"allowed_ip": i.get("AllowedIPs", "N/A"),
"cumu_receive": 0,
"cumu_sent": 0,
"cumu_data": 0,
"mtu": self.DashboardConfig.GetConfig("Peers", "peer_mtu")[1] if len(self.DashboardConfig.GetConfig("Peers", "peer_mtu")[1]) > 0 else None,
"keepalive": self.DashboardConfig.GetConfig("Peers", "peer_keep_alive")[1] if len(self.DashboardConfig.GetConfig("Peers", "peer_keep_alive")[1]) > 0 else None,
"remote_endpoint": self.DashboardConfig.GetConfig("Peers", "remote_endpoint")[1],
"preshared_key": i["PresharedKey"] if "PresharedKey" in i.keys() else ""
}
with self.engine.begin() as conn:
conn.execute(
self.peersTable.insert().values(tempPeer)
)
else:
with self.engine.begin() as conn:
conn.execute(
self.peersTable.update().values({
"allowed_ip": i.get("AllowedIPs", "N/A")
}).where(
self.peersTable.columns.id == i['PublicKey']
)
)
tmpList.append(Peer(tempPeer, self))
else:
current_app.logger.warning(f"{self.Name} is an empty configuration")
except Exception as e: except Exception as e:
current_app.logger.error(f"{self.Name} getPeers() Error", e) current_app.logger.error(f"{self.Name} getPeers() Error", e)
else: else: