mirror of
https://github.com/donaldzou/WGDashboard.git
synced 2024-11-22 15:20:09 +01:00
No longer reading configuration file every few seconds
Only when the file is changed
This commit is contained in:
parent
42fa89db7a
commit
c98d851cd2
@ -40,6 +40,8 @@
|
||||
- Rewrote the backend into a REST API structure
|
||||
- Improved SQL query efficient
|
||||
- Removed all templates, except for `index.html` where it will load the Vue.js app.
|
||||
- Parsing names in `.conf`
|
||||
- Minimized the need to read `.conf`, only when any `.conf` is modified
|
||||
|
||||
- **🥘 New Experimental Features**
|
||||
- **Cross-Server Access**: Now you can access other servers that installed `v4` of WGDashboard through API key.
|
||||
|
@ -5,6 +5,7 @@ import configparser
|
||||
import hashlib
|
||||
import ipaddress
|
||||
import json
|
||||
import traceback
|
||||
# Python Built-in Library
|
||||
import os
|
||||
import secrets
|
||||
@ -421,6 +422,7 @@ class WireguardConfiguration:
|
||||
def __init__(self, name: str = None, data: dict = None):
|
||||
self.__parser: configparser.ConfigParser = configparser.ConfigParser(strict=False)
|
||||
self.__parser.optionxform = str
|
||||
self.__configFileModifiedTime = None
|
||||
|
||||
self.Status: bool = False
|
||||
self.Name: str = ""
|
||||
@ -565,6 +567,9 @@ class WireguardConfiguration:
|
||||
self.RestrictedPeers.append(Peer(i, self))
|
||||
|
||||
def __getPeers(self):
|
||||
|
||||
mt = os.path.getmtime(os.path.join(WG_CONF_PATH, f'{self.Name}.conf'))
|
||||
if self.__configFileModifiedTime is None or self.__configFileModifiedTime != mt:
|
||||
self.Peers = []
|
||||
with open(os.path.join(WG_CONF_PATH, f'{self.Name}.conf'), 'r') as configFile:
|
||||
p = []
|
||||
@ -638,6 +643,7 @@ class WireguardConfiguration:
|
||||
self.Peers.append(Peer(checkIfExist, self))
|
||||
except Exception as e:
|
||||
print(f"[WGDashboard] {self.Name} Error: {str(e)}")
|
||||
self.__configFileModifiedTime = mt
|
||||
|
||||
def addPeers(self, peers: list):
|
||||
for p in peers:
|
||||
@ -783,6 +789,7 @@ class WireguardConfiguration:
|
||||
sqldb.commit()
|
||||
count += 2
|
||||
|
||||
|
||||
def getPeersTransfer(self):
|
||||
if not self.getStatus():
|
||||
self.toggleConfiguration()
|
||||
@ -797,6 +804,7 @@ class WireguardConfiguration:
|
||||
"SELECT total_receive, total_sent, cumu_receive, cumu_sent, status FROM '%s' WHERE id= ? "
|
||||
% self.Name, (data_usage[i][0],)).fetchone()
|
||||
if cur_i is not None:
|
||||
cur_i = dict(cur_i)
|
||||
total_sent = cur_i['total_sent']
|
||||
total_receive = cur_i['total_receive']
|
||||
cur_total_sent = float(data_usage[i][2]) / (1024 ** 3)
|
||||
@ -812,17 +820,20 @@ class WireguardConfiguration:
|
||||
self.Name, (cumulative_receive, cumulative_sent,
|
||||
cumulative_sent + cumulative_receive,
|
||||
data_usage[i][0],))
|
||||
sqldb.commit()
|
||||
total_sent = 0
|
||||
total_receive = 0
|
||||
|
||||
print(data_usage[i][0])
|
||||
_, p = self.searchPeer(data_usage[i][0])
|
||||
if p.total_receive != total_receive or p.total_sent != total_sent:
|
||||
sqldb.cursor().execute(
|
||||
"UPDATE '%s' SET total_receive = ?, total_sent = ?, total_data = ? WHERE id = ?"
|
||||
% self.Name, (total_receive, total_sent,
|
||||
total_receive + total_sent, data_usage[i][0],))
|
||||
sqldb.commit()
|
||||
except Exception as e:
|
||||
print("Error: " + str(e))
|
||||
traceback.print_exc()
|
||||
print(f"[WGDashboard] {self.Name} Error: {str(e)} {str(e.__traceback__)}")
|
||||
|
||||
def getPeersEndpoint(self):
|
||||
if not self.getStatus():
|
||||
|
Loading…
Reference in New Issue
Block a user