mirror of
https://github.com/donaldzou/WGDashboard.git
synced 2025-06-28 09:16:55 +00:00
Update SQLAlchemy Settings
This commit is contained in:
parent
be10a644a0
commit
9ffb7f54c7
@ -1189,14 +1189,14 @@ def peerInformationBackgroundThread():
|
|||||||
with app.app_context():
|
with app.app_context():
|
||||||
for c in WireguardConfigurations.values():
|
for c in WireguardConfigurations.values():
|
||||||
if c.getStatus():
|
if c.getStatus():
|
||||||
try:
|
# try:
|
||||||
c.getPeersTransfer()
|
c.getPeersTransfer()
|
||||||
c.getPeersLatestHandshake()
|
c.getPeersLatestHandshake()
|
||||||
c.getPeersEndpoint()
|
c.getPeersEndpoint()
|
||||||
c.getPeersList()
|
c.getPeersList()
|
||||||
c.getRestrictedPeersList()
|
c.getRestrictedPeersList()
|
||||||
except Exception as e:
|
# except Exception as e:
|
||||||
print(f"[WGDashboard] Background Thread #1 Error: {str(e)}", flush=True)
|
# print(f"[WGDashboard] Background Thread #1 Error: {str(e)}", flush=True)
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
|
|
||||||
def peerJobScheduleBackgroundThread():
|
def peerJobScheduleBackgroundThread():
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
"""
|
"""
|
||||||
AmneziaWG Configuration
|
AmneziaWG Configuration
|
||||||
"""
|
"""
|
||||||
import re
|
import random, sqlalchemy, os, subprocess, re, uuid
|
||||||
|
|
||||||
import sqlalchemy
|
|
||||||
|
|
||||||
from .PeerJobs import PeerJobs
|
from .PeerJobs import PeerJobs
|
||||||
from .AmneziaWGPeer import AmneziaWGPeer
|
from .AmneziaWGPeer import AmneziaWGPeer
|
||||||
@ -69,55 +67,55 @@ class AmneziaWireguardConfiguration(WireguardConfiguration):
|
|||||||
|
|
||||||
self.peersTable = sqlalchemy.Table(
|
self.peersTable = sqlalchemy.Table(
|
||||||
dbName, self.metadata,
|
dbName, self.metadata,
|
||||||
sqlalchemy.Column('id', sqlalchemy.String, nullable=False, primary_key=True),
|
sqlalchemy.Column('id', sqlalchemy.String(255), nullable=False, primary_key=True),
|
||||||
sqlalchemy.Column('private_key', sqlalchemy.String),
|
sqlalchemy.Column('private_key', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('DNS', sqlalchemy.String),
|
sqlalchemy.Column('DNS', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('advanced_security', sqlalchemy.String),
|
sqlalchemy.Column('advanced_security', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('endpoint_allowed_ip', sqlalchemy.String),
|
sqlalchemy.Column('endpoint_allowed_ip', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('name', sqlalchemy.String),
|
sqlalchemy.Column('name', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('total_receive', sqlalchemy.Float),
|
sqlalchemy.Column('total_receive', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('total_sent', sqlalchemy.Float),
|
sqlalchemy.Column('total_sent', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('total_data', sqlalchemy.Float),
|
sqlalchemy.Column('total_data', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('endpoint', sqlalchemy.String),
|
sqlalchemy.Column('endpoint', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('status', sqlalchemy.String),
|
sqlalchemy.Column('status', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('latest_handshake', sqlalchemy.String),
|
sqlalchemy.Column('latest_handshake', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('allowed_ip', sqlalchemy.String),
|
sqlalchemy.Column('allowed_ip', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('cumu_receive', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_receive', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('cumu_sent', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_sent', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('cumu_data', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_data', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('mtu', sqlalchemy.Integer),
|
sqlalchemy.Column('mtu', sqlalchemy.Integer),
|
||||||
sqlalchemy.Column('keepalive', sqlalchemy.Integer),
|
sqlalchemy.Column('keepalive', sqlalchemy.Integer),
|
||||||
sqlalchemy.Column('remote_endpoint', sqlalchemy.String),
|
sqlalchemy.Column('remote_endpoint', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('preshared_key', sqlalchemy.String),
|
sqlalchemy.Column('preshared_key', sqlalchemy.String(255)),
|
||||||
extend_existing=True
|
extend_existing=True
|
||||||
)
|
)
|
||||||
self.peersRestrictedTable = sqlalchemy.Table(
|
self.peersRestrictedTable = sqlalchemy.Table(
|
||||||
f'{dbName}_restrict_access', self.metadata,
|
f'{dbName}_restrict_access', self.metadata,
|
||||||
sqlalchemy.Column('id', sqlalchemy.String, nullable=False, primary_key=True),
|
sqlalchemy.Column('id', sqlalchemy.String(255), nullable=False, primary_key=True),
|
||||||
sqlalchemy.Column('private_key', sqlalchemy.String),
|
sqlalchemy.Column('private_key', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('DNS', sqlalchemy.String),
|
sqlalchemy.Column('DNS', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('advanced_security', sqlalchemy.String),
|
sqlalchemy.Column('advanced_security', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('endpoint_allowed_ip', sqlalchemy.String),
|
sqlalchemy.Column('endpoint_allowed_ip', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('name', sqlalchemy.String),
|
sqlalchemy.Column('name', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('total_receive', sqlalchemy.Float),
|
sqlalchemy.Column('total_receive', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('total_sent', sqlalchemy.Float),
|
sqlalchemy.Column('total_sent', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('total_data', sqlalchemy.Float),
|
sqlalchemy.Column('total_data', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('endpoint', sqlalchemy.String),
|
sqlalchemy.Column('endpoint', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('status', sqlalchemy.String),
|
sqlalchemy.Column('status', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('latest_handshake', sqlalchemy.String),
|
sqlalchemy.Column('latest_handshake', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('allowed_ip', sqlalchemy.String),
|
sqlalchemy.Column('allowed_ip', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('cumu_receive', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_receive', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('cumu_sent', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_sent', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('cumu_data', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_data', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('mtu', sqlalchemy.Integer),
|
sqlalchemy.Column('mtu', sqlalchemy.Integer),
|
||||||
sqlalchemy.Column('keepalive', sqlalchemy.Integer),
|
sqlalchemy.Column('keepalive', sqlalchemy.Integer),
|
||||||
sqlalchemy.Column('remote_endpoint', sqlalchemy.String),
|
sqlalchemy.Column('remote_endpoint', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('preshared_key', sqlalchemy.String),
|
sqlalchemy.Column('preshared_key', sqlalchemy.String(255)),
|
||||||
extend_existing=True
|
extend_existing=True
|
||||||
)
|
)
|
||||||
self.peersTransferTable = sqlalchemy.Table(
|
self.peersTransferTable = sqlalchemy.Table(
|
||||||
f'{dbName}_transfer', self.metadata,
|
f'{dbName}_transfer', self.metadata,
|
||||||
sqlalchemy.Column('id', sqlalchemy.String, nullable=False),
|
sqlalchemy.Column('id', sqlalchemy.String(255), nullable=False),
|
||||||
sqlalchemy.Column('total_receive', sqlalchemy.Float),
|
sqlalchemy.Column('total_receive', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('total_sent', sqlalchemy.Float),
|
sqlalchemy.Column('total_sent', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('total_data', sqlalchemy.Float),
|
sqlalchemy.Column('total_data', sqlalchemy.Float),
|
||||||
@ -130,26 +128,26 @@ class AmneziaWireguardConfiguration(WireguardConfiguration):
|
|||||||
)
|
)
|
||||||
self.peersDeletedTable = sqlalchemy.Table(
|
self.peersDeletedTable = sqlalchemy.Table(
|
||||||
f'{dbName}_deleted', self.metadata,
|
f'{dbName}_deleted', self.metadata,
|
||||||
sqlalchemy.Column('id', sqlalchemy.String, nullable=False, primary_key=True),
|
sqlalchemy.Column('id', sqlalchemy.String(255), nullable=False),
|
||||||
sqlalchemy.Column('private_key', sqlalchemy.String),
|
sqlalchemy.Column('private_key', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('advanced_security', sqlalchemy.String),
|
sqlalchemy.Column('DNS', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('DNS', sqlalchemy.String),
|
sqlalchemy.Column('advanced_security', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('endpoint_allowed_ip', sqlalchemy.String),
|
sqlalchemy.Column('endpoint_allowed_ip', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('name', sqlalchemy.String),
|
sqlalchemy.Column('name', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('total_receive', sqlalchemy.Float),
|
sqlalchemy.Column('total_receive', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('total_sent', sqlalchemy.Float),
|
sqlalchemy.Column('total_sent', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('total_data', sqlalchemy.Float),
|
sqlalchemy.Column('total_data', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('endpoint', sqlalchemy.String),
|
sqlalchemy.Column('endpoint', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('status', sqlalchemy.String),
|
sqlalchemy.Column('status', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('latest_handshake', sqlalchemy.String),
|
sqlalchemy.Column('latest_handshake', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('allowed_ip', sqlalchemy.String),
|
sqlalchemy.Column('allowed_ip', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('cumu_receive', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_receive', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('cumu_sent', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_sent', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('cumu_data', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_data', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('mtu', sqlalchemy.Integer),
|
sqlalchemy.Column('mtu', sqlalchemy.Integer),
|
||||||
sqlalchemy.Column('keepalive', sqlalchemy.Integer),
|
sqlalchemy.Column('keepalive', sqlalchemy.Integer),
|
||||||
sqlalchemy.Column('remote_endpoint', sqlalchemy.String),
|
sqlalchemy.Column('remote_endpoint', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('preshared_key', sqlalchemy.String),
|
sqlalchemy.Column('preshared_key', sqlalchemy.String(255)),
|
||||||
extend_existing=True
|
extend_existing=True
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -97,19 +97,21 @@ class DashboardConfig:
|
|||||||
if not os.path.isdir(sqlitePath):
|
if not os.path.isdir(sqlitePath):
|
||||||
os.mkdir(sqlitePath)
|
os.mkdir(sqlitePath)
|
||||||
|
|
||||||
cn = None
|
# cn = None
|
||||||
if self.GetConfig("Database", "type")[1] == "sqlite":
|
|
||||||
cn = f'sqlite:///{os.path.join(sqlitePath, f"{database}.db")}'
|
|
||||||
elif self.GetConfig("Database", "type")[1] == "postgresql":
|
|
||||||
cn = f'postgresql+psycopg2://{self.GetConfig("Database", "username")[1]}:{self.GetConfig("Database", "password")[1]}@{self.GetConfig("Database", "host")[1]}/{database}'
|
|
||||||
|
|
||||||
|
if self.GetConfig("Database", "type")[1] == "postgresql":
|
||||||
|
cn = f'postgresql+psycopg2://{self.GetConfig("Database", "username")[1]}:{self.GetConfig("Database", "password")[1]}@{self.GetConfig("Database", "host")[1]}/{database}'
|
||||||
|
elif self.GetConfig("Database", "type")[1] == "mysql":
|
||||||
|
cn = f'mysql+mysqldb://{self.GetConfig("Database", "username")[1]}:{self.GetConfig("Database", "password")[1]}@{self.GetConfig("Database", "host")[1]}/{database}'
|
||||||
|
else:
|
||||||
|
cn = f'sqlite:///{os.path.join(sqlitePath, f"{database}.db")}'
|
||||||
if not database_exists(cn):
|
if not database_exists(cn):
|
||||||
create_database(cn)
|
create_database(cn)
|
||||||
return cn
|
return cn
|
||||||
|
|
||||||
def __createAPIKeyTable(self):
|
def __createAPIKeyTable(self):
|
||||||
self.apiKeyTable = db.Table('DashboardAPIKeys', self.dbMetadata,
|
self.apiKeyTable = db.Table('DashboardAPIKeys', self.dbMetadata,
|
||||||
db.Column("Key", db.String, nullable=False, primary_key=True),
|
db.Column("Key", db.String(255), nullable=False, primary_key=True),
|
||||||
db.Column("CreatedAt",
|
db.Column("CreatedAt",
|
||||||
(db.DATETIME if self.GetConfig('Database', 'type')[1] == 'sqlite' else db.TIMESTAMP),
|
(db.DATETIME if self.GetConfig('Database', 'type')[1] == 'sqlite' else db.TIMESTAMP),
|
||||||
server_default=db.func.now()
|
server_default=db.func.now()
|
||||||
|
@ -10,14 +10,14 @@ class DashboardLogger:
|
|||||||
self.engine = db.create_engine(DashboardConfig.getConnectionString("wgdashboard_log"))
|
self.engine = db.create_engine(DashboardConfig.getConnectionString("wgdashboard_log"))
|
||||||
self.metadata = db.MetaData()
|
self.metadata = db.MetaData()
|
||||||
self.dashboardLoggerTable = db.Table('DashboardLog', self.metadata,
|
self.dashboardLoggerTable = db.Table('DashboardLog', self.metadata,
|
||||||
db.Column('LogID', db.VARCHAR, nullable=False, primary_key=True),
|
db.Column('LogID', db.String(255), nullable=False, primary_key=True),
|
||||||
db.Column('LogDate', (db.DATETIME if DashboardConfig.GetConfig("Database", "type")[1] == 'sqlite' else db.TIMESTAMP),
|
db.Column('LogDate', (db.DATETIME if DashboardConfig.GetConfig("Database", "type")[1] == 'sqlite' else db.TIMESTAMP),
|
||||||
server_default=db.func.now()),
|
server_default=db.func.now()),
|
||||||
db.Column('URL', db.VARCHAR),
|
db.Column('URL', db.String(255)),
|
||||||
db.Column('IP', db.VARCHAR),
|
db.Column('IP', db.String(255)),
|
||||||
|
|
||||||
db.Column('Status', db.VARCHAR, nullable=False),
|
db.Column('Status', db.String(255), nullable=False),
|
||||||
db.Column('Message', db.VARCHAR)
|
db.Column('Message', db.Text)
|
||||||
)
|
)
|
||||||
self.metadata.create_all(self.engine)
|
self.metadata.create_all(self.engine)
|
||||||
self.log(Message="WGDashboard started")
|
self.log(Message="WGDashboard started")
|
||||||
|
@ -10,12 +10,12 @@ class PeerJobLogger:
|
|||||||
self.engine = db.create_engine(DashboardConfig.getConnectionString("wgdashboard_log"))
|
self.engine = db.create_engine(DashboardConfig.getConnectionString("wgdashboard_log"))
|
||||||
self.metadata = db.MetaData()
|
self.metadata = db.MetaData()
|
||||||
self.jobLogTable = db.Table('JobLog', self.metadata,
|
self.jobLogTable = db.Table('JobLog', self.metadata,
|
||||||
db.Column('LogID', db.String, nullable=False, primary_key=True),
|
db.Column('LogID', db.String(255), nullable=False, primary_key=True),
|
||||||
db.Column('JobID', db.String, nullable=False),
|
db.Column('JobID', db.String(255), nullable=False),
|
||||||
db.Column('LogDate', (db.DATETIME if DashboardConfig.GetConfig("Database", "type")[1] == 'sqlite' else db.TIMESTAMP),
|
db.Column('LogDate', (db.DATETIME if DashboardConfig.GetConfig("Database", "type")[1] == 'sqlite' else db.TIMESTAMP),
|
||||||
server_default=db.func.now()),
|
server_default=db.func.now()),
|
||||||
db.Column('Status', db.String, nullable=False),
|
db.Column('Status', db.String(255), nullable=False),
|
||||||
db.Column('Message', db.String)
|
db.Column('Message', db.Text)
|
||||||
)
|
)
|
||||||
self.logs: list[Log] = []
|
self.logs: list[Log] = []
|
||||||
self.metadata.create_all(self.engine)
|
self.metadata.create_all(self.engine)
|
||||||
|
@ -12,15 +12,15 @@ class PeerJobs:
|
|||||||
self.engine = db.create_engine(DashboardConfig.getConnectionString('wgdashboard_job'))
|
self.engine = db.create_engine(DashboardConfig.getConnectionString('wgdashboard_job'))
|
||||||
self.metadata = db.MetaData()
|
self.metadata = db.MetaData()
|
||||||
self.peerJobTable = db.Table('PeerJobs', self.metadata,
|
self.peerJobTable = db.Table('PeerJobs', self.metadata,
|
||||||
db.Column('JobID', db.String, nullable=False, primary_key=True),
|
db.Column('JobID', db.String(255), nullable=False, primary_key=True),
|
||||||
db.Column('Configuration', db.String, nullable=False),
|
db.Column('Configuration', db.String(255), nullable=False),
|
||||||
db.Column('Peer', db.String, nullable=False),
|
db.Column('Peer', db.String(255), nullable=False),
|
||||||
db.Column('Field', db.String, nullable=False),
|
db.Column('Field', db.String(255), nullable=False),
|
||||||
db.Column('Operator', db.String, nullable=False),
|
db.Column('Operator', db.String(255), nullable=False),
|
||||||
db.Column('Value', db.String, nullable=False),
|
db.Column('Value', db.String(255), nullable=False),
|
||||||
db.Column('CreationDate', (db.DATETIME if DashboardConfig.GetConfig("Database", "type")[1] == 'sqlite' else db.TIMESTAMP), nullable=False),
|
db.Column('CreationDate', (db.DATETIME if DashboardConfig.GetConfig("Database", "type")[1] == 'sqlite' else db.TIMESTAMP), nullable=False),
|
||||||
db.Column('ExpireDate', (db.DATETIME if DashboardConfig.GetConfig("Database", "type")[1] == 'sqlite' else db.TIMESTAMP)),
|
db.Column('ExpireDate', (db.DATETIME if DashboardConfig.GetConfig("Database", "type")[1] == 'sqlite' else db.TIMESTAMP)),
|
||||||
db.Column('Action', db.String, nullable=False),
|
db.Column('Action', db.String(255), nullable=False),
|
||||||
)
|
)
|
||||||
self.metadata.create_all(self.engine)
|
self.metadata.create_all(self.engine)
|
||||||
self.__getJobs()
|
self.__getJobs()
|
||||||
|
@ -13,9 +13,9 @@ class PeerShareLinks:
|
|||||||
self.metadata = db.MetaData()
|
self.metadata = db.MetaData()
|
||||||
self.peerShareLinksTable = db.Table(
|
self.peerShareLinksTable = db.Table(
|
||||||
'PeerShareLinks', self.metadata,
|
'PeerShareLinks', self.metadata,
|
||||||
db.Column('ShareID', db.String, nullable=False, primary_key=True),
|
db.Column('ShareID', db.String(255), nullable=False, primary_key=True),
|
||||||
db.Column('Configuration', db.String, nullable=False),
|
db.Column('Configuration', db.String(255), nullable=False),
|
||||||
db.Column('Peer', db.String, nullable=False),
|
db.Column('Peer', db.String(255), nullable=False),
|
||||||
db.Column('ExpireDate', (db.DATETIME if DashboardConfig.GetConfig("Database", "type")[1] == 'sqlite' else db.TIMESTAMP)),
|
db.Column('ExpireDate', (db.DATETIME if DashboardConfig.GetConfig("Database", "type")[1] == 'sqlite' else db.TIMESTAMP)),
|
||||||
db.Column('SharedDate', (db.DATETIME if DashboardConfig.GetConfig("Database", "type")[1] == 'sqlite' else db.TIMESTAMP),
|
db.Column('SharedDate', (db.DATETIME if DashboardConfig.GetConfig("Database", "type")[1] == 'sqlite' else db.TIMESTAMP),
|
||||||
server_default=db.func.now()),
|
server_default=db.func.now()),
|
||||||
|
@ -1,13 +1,9 @@
|
|||||||
"""
|
"""
|
||||||
WireGuard Configuration
|
WireGuard Configuration
|
||||||
"""
|
"""
|
||||||
import random, shutil, configparser, ipaddress, os, subprocess
|
import sqlalchemy, random, shutil, configparser, ipaddress, os, subprocess, time, re, uuid, psutil, traceback
|
||||||
import time, re, uuid, psutil
|
|
||||||
import traceback
|
|
||||||
from zipfile import ZipFile
|
from zipfile import ZipFile
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
import sqlalchemy
|
|
||||||
from itertools import islice
|
from itertools import islice
|
||||||
|
|
||||||
from .DashboardConfig import DashboardConfig
|
from .DashboardConfig import DashboardConfig
|
||||||
@ -222,53 +218,53 @@ class WireguardConfiguration:
|
|||||||
dbName = self.Name
|
dbName = self.Name
|
||||||
self.peersTable = sqlalchemy.Table(
|
self.peersTable = sqlalchemy.Table(
|
||||||
dbName, self.metadata,
|
dbName, self.metadata,
|
||||||
sqlalchemy.Column('id', sqlalchemy.String, nullable=False, primary_key=True),
|
sqlalchemy.Column('id', sqlalchemy.String(255), nullable=False, primary_key=True),
|
||||||
sqlalchemy.Column('private_key', sqlalchemy.String),
|
sqlalchemy.Column('private_key', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('DNS', sqlalchemy.String),
|
sqlalchemy.Column('DNS', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('endpoint_allowed_ip', sqlalchemy.String),
|
sqlalchemy.Column('endpoint_allowed_ip', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('name', sqlalchemy.String),
|
sqlalchemy.Column('name', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('total_receive', sqlalchemy.Float),
|
sqlalchemy.Column('total_receive', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('total_sent', sqlalchemy.Float),
|
sqlalchemy.Column('total_sent', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('total_data', sqlalchemy.Float),
|
sqlalchemy.Column('total_data', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('endpoint', sqlalchemy.String),
|
sqlalchemy.Column('endpoint', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('status', sqlalchemy.String),
|
sqlalchemy.Column('status', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('latest_handshake', sqlalchemy.String),
|
sqlalchemy.Column('latest_handshake', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('allowed_ip', sqlalchemy.String),
|
sqlalchemy.Column('allowed_ip', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('cumu_receive', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_receive', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('cumu_sent', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_sent', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('cumu_data', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_data', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('mtu', sqlalchemy.Integer),
|
sqlalchemy.Column('mtu', sqlalchemy.Integer),
|
||||||
sqlalchemy.Column('keepalive', sqlalchemy.Integer),
|
sqlalchemy.Column('keepalive', sqlalchemy.Integer),
|
||||||
sqlalchemy.Column('remote_endpoint', sqlalchemy.String),
|
sqlalchemy.Column('remote_endpoint', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('preshared_key', sqlalchemy.String),
|
sqlalchemy.Column('preshared_key', sqlalchemy.String(255)),
|
||||||
extend_existing=True
|
extend_existing=True
|
||||||
)
|
)
|
||||||
self.peersRestrictedTable = sqlalchemy.Table(
|
self.peersRestrictedTable = sqlalchemy.Table(
|
||||||
f'{dbName}_restrict_access', self.metadata,
|
f'{dbName}_restrict_access', self.metadata,
|
||||||
sqlalchemy.Column('id', sqlalchemy.String, nullable=False, primary_key=True),
|
sqlalchemy.Column('id', sqlalchemy.String(255), nullable=False, primary_key=True),
|
||||||
sqlalchemy.Column('private_key', sqlalchemy.String),
|
sqlalchemy.Column('private_key', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('DNS', sqlalchemy.String),
|
sqlalchemy.Column('DNS', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('endpoint_allowed_ip', sqlalchemy.String),
|
sqlalchemy.Column('endpoint_allowed_ip', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('name', sqlalchemy.String),
|
sqlalchemy.Column('name', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('total_receive', sqlalchemy.Float),
|
sqlalchemy.Column('total_receive', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('total_sent', sqlalchemy.Float),
|
sqlalchemy.Column('total_sent', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('total_data', sqlalchemy.Float),
|
sqlalchemy.Column('total_data', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('endpoint', sqlalchemy.String),
|
sqlalchemy.Column('endpoint', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('status', sqlalchemy.String),
|
sqlalchemy.Column('status', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('latest_handshake', sqlalchemy.String),
|
sqlalchemy.Column('latest_handshake', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('allowed_ip', sqlalchemy.String),
|
sqlalchemy.Column('allowed_ip', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('cumu_receive', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_receive', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('cumu_sent', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_sent', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('cumu_data', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_data', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('mtu', sqlalchemy.Integer),
|
sqlalchemy.Column('mtu', sqlalchemy.Integer),
|
||||||
sqlalchemy.Column('keepalive', sqlalchemy.Integer),
|
sqlalchemy.Column('keepalive', sqlalchemy.Integer),
|
||||||
sqlalchemy.Column('remote_endpoint', sqlalchemy.String),
|
sqlalchemy.Column('remote_endpoint', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('preshared_key', sqlalchemy.String),
|
sqlalchemy.Column('preshared_key', sqlalchemy.String(255)),
|
||||||
extend_existing=True
|
extend_existing=True
|
||||||
)
|
)
|
||||||
self.peersTransferTable = sqlalchemy.Table(
|
self.peersTransferTable = sqlalchemy.Table(
|
||||||
f'{dbName}_transfer', self.metadata,
|
f'{dbName}_transfer', self.metadata,
|
||||||
sqlalchemy.Column('id', sqlalchemy.String, nullable=False),
|
sqlalchemy.Column('id', sqlalchemy.String(255), nullable=False),
|
||||||
sqlalchemy.Column('total_receive', sqlalchemy.Float),
|
sqlalchemy.Column('total_receive', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('total_sent', sqlalchemy.Float),
|
sqlalchemy.Column('total_sent', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('total_data', sqlalchemy.Float),
|
sqlalchemy.Column('total_data', sqlalchemy.Float),
|
||||||
@ -281,25 +277,25 @@ class WireguardConfiguration:
|
|||||||
)
|
)
|
||||||
self.peersDeletedTable = sqlalchemy.Table(
|
self.peersDeletedTable = sqlalchemy.Table(
|
||||||
f'{dbName}_deleted', self.metadata,
|
f'{dbName}_deleted', self.metadata,
|
||||||
sqlalchemy.Column('id', sqlalchemy.String, nullable=False, primary_key=True),
|
sqlalchemy.Column('id', sqlalchemy.String(255), nullable=False, primary_key=True),
|
||||||
sqlalchemy.Column('private_key', sqlalchemy.String),
|
sqlalchemy.Column('private_key', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('DNS', sqlalchemy.String),
|
sqlalchemy.Column('DNS', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('endpoint_allowed_ip', sqlalchemy.String),
|
sqlalchemy.Column('endpoint_allowed_ip', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('name', sqlalchemy.String),
|
sqlalchemy.Column('name', sqlalchemy.Text),
|
||||||
sqlalchemy.Column('total_receive', sqlalchemy.Float),
|
sqlalchemy.Column('total_receive', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('total_sent', sqlalchemy.Float),
|
sqlalchemy.Column('total_sent', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('total_data', sqlalchemy.Float),
|
sqlalchemy.Column('total_data', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('endpoint', sqlalchemy.String),
|
sqlalchemy.Column('endpoint', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('status', sqlalchemy.String),
|
sqlalchemy.Column('status', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('latest_handshake', sqlalchemy.String),
|
sqlalchemy.Column('latest_handshake', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('allowed_ip', sqlalchemy.String),
|
sqlalchemy.Column('allowed_ip', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('cumu_receive', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_receive', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('cumu_sent', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_sent', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('cumu_data', sqlalchemy.Float),
|
sqlalchemy.Column('cumu_data', sqlalchemy.Float),
|
||||||
sqlalchemy.Column('mtu', sqlalchemy.Integer),
|
sqlalchemy.Column('mtu', sqlalchemy.Integer),
|
||||||
sqlalchemy.Column('keepalive', sqlalchemy.Integer),
|
sqlalchemy.Column('keepalive', sqlalchemy.Integer),
|
||||||
sqlalchemy.Column('remote_endpoint', sqlalchemy.String),
|
sqlalchemy.Column('remote_endpoint', sqlalchemy.String(255)),
|
||||||
sqlalchemy.Column('preshared_key', sqlalchemy.String),
|
sqlalchemy.Column('preshared_key', sqlalchemy.String(255)),
|
||||||
extend_existing=True
|
extend_existing=True
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -353,7 +349,8 @@ class WireguardConfiguration:
|
|||||||
return changed
|
return changed
|
||||||
|
|
||||||
def getPeers(self):
|
def getPeers(self):
|
||||||
self.Peers = []
|
# self.Peers = []
|
||||||
|
tmpList = []
|
||||||
if self.configurationFileChanged():
|
if self.configurationFileChanged():
|
||||||
with open(self.configPath, 'r') as configFile:
|
with open(self.configPath, 'r') as configFile:
|
||||||
p = []
|
p = []
|
||||||
@ -419,7 +416,7 @@ class WireguardConfiguration:
|
|||||||
self.peersTable.columns.id == i['PublicKey']
|
self.peersTable.columns.id == i['PublicKey']
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.Peers.append(Peer(tempPeer, self))
|
tmpList.append(Peer(tempPeer, self))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print(f"[WGDashboard] {self.Name} getPeers() Error: {str(e)}")
|
print(f"[WGDashboard] {self.Name} getPeers() Error: {str(e)}")
|
||||||
@ -427,7 +424,9 @@ class WireguardConfiguration:
|
|||||||
with self.engine.connect() as conn:
|
with self.engine.connect() as conn:
|
||||||
existingPeers = conn.execute(self.peersTable.select()).mappings().fetchall()
|
existingPeers = conn.execute(self.peersTable.select()).mappings().fetchall()
|
||||||
for i in existingPeers:
|
for i in existingPeers:
|
||||||
self.Peers.append(Peer(i, self))
|
tmpList.append(Peer(i, self))
|
||||||
|
self.Peers = []
|
||||||
|
self.Peers = tmpList
|
||||||
|
|
||||||
def addPeers(self, peers: list) -> tuple[bool, dict]:
|
def addPeers(self, peers: list) -> tuple[bool, dict]:
|
||||||
result = {
|
result = {
|
||||||
@ -661,11 +660,13 @@ class WireguardConfiguration:
|
|||||||
def getPeersTransfer(self):
|
def getPeersTransfer(self):
|
||||||
if not self.getStatus():
|
if not self.getStatus():
|
||||||
self.toggleConfiguration()
|
self.toggleConfiguration()
|
||||||
try:
|
# try:
|
||||||
data_usage = subprocess.check_output(f"{self.Protocol} show {self.Name} transfer",
|
data_usage = subprocess.check_output(f"{self.Protocol} show {self.Name} transfer",
|
||||||
shell=True, stderr=subprocess.STDOUT)
|
shell=True, stderr=subprocess.STDOUT)
|
||||||
data_usage = data_usage.decode("UTF-8").split("\n")
|
data_usage = data_usage.decode("UTF-8").split("\n")
|
||||||
|
|
||||||
data_usage = [p.split("\t") for p in data_usage]
|
data_usage = [p.split("\t") for p in data_usage]
|
||||||
|
cur_i = None
|
||||||
with self.engine.begin() as conn:
|
with self.engine.begin() as conn:
|
||||||
for i in range(len(data_usage)):
|
for i in range(len(data_usage)):
|
||||||
if len(data_usage[i]) == 3:
|
if len(data_usage[i]) == 3:
|
||||||
@ -675,7 +676,9 @@ class WireguardConfiguration:
|
|||||||
)
|
)
|
||||||
).mappings().fetchone()
|
).mappings().fetchone()
|
||||||
if cur_i is not None:
|
if cur_i is not None:
|
||||||
|
# print(cur_i is None)
|
||||||
total_sent = cur_i['total_sent']
|
total_sent = cur_i['total_sent']
|
||||||
|
# print(cur_i is None)
|
||||||
total_receive = cur_i['total_receive']
|
total_receive = cur_i['total_receive']
|
||||||
cur_total_sent = float(data_usage[i][2]) / (1024 ** 3)
|
cur_total_sent = float(data_usage[i][2]) / (1024 ** 3)
|
||||||
cur_total_receive = float(data_usage[i][1]) / (1024 ** 3)
|
cur_total_receive = float(data_usage[i][1]) / (1024 ** 3)
|
||||||
@ -697,7 +700,8 @@ class WireguardConfiguration:
|
|||||||
|
|
||||||
total_sent = 0
|
total_sent = 0
|
||||||
total_receive = 0
|
total_receive = 0
|
||||||
_, p = self.searchPeer(data_usage[i][0])
|
status, p = self.searchPeer(data_usage[i][0])
|
||||||
|
if status:
|
||||||
if p.total_receive != total_receive or p.total_sent != total_sent:
|
if p.total_receive != total_receive or p.total_sent != total_sent:
|
||||||
conn.execute(
|
conn.execute(
|
||||||
self.peersTable.update().values({
|
self.peersTable.update().values({
|
||||||
@ -709,8 +713,10 @@ class WireguardConfiguration:
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
except Exception as e:
|
# except Exception as e:
|
||||||
print(f"[WGDashboard] {self.Name} getPeersTransfer() Error: {str(e)} {str(e.__traceback__)}")
|
# print(cur_i, cur_i['total_receive'])
|
||||||
|
# print(f"[WGDashboard] {self.Name} getPeersTransfer() Error: {str(e)} {str(e.__traceback__)}")
|
||||||
|
|
||||||
|
|
||||||
def getPeersEndpoint(self):
|
def getPeersEndpoint(self):
|
||||||
if not self.getStatus():
|
if not self.getStatus():
|
||||||
|
@ -11,3 +11,4 @@ tcconfig
|
|||||||
sqlalchemy
|
sqlalchemy
|
||||||
sqlalchemy_utils
|
sqlalchemy_utils
|
||||||
psycopg2
|
psycopg2
|
||||||
|
mysqlclient
|
Loading…
x
Reference in New Issue
Block a user