mirror of
https://github.com/donaldzou/WGDashboard.git
synced 2025-07-04 12:17:01 +00:00
Added support to postgresql and Mysql with SqlAlchemy
This commit is contained in:
parent
16051981d7
commit
6e6cd9a7e5
@ -1799,7 +1799,10 @@ class DashboardConfig:
|
|||||||
"welcome_session": "true"
|
"welcome_session": "true"
|
||||||
},
|
},
|
||||||
"Database":{
|
"Database":{
|
||||||
"type": "sqlite"
|
"type": "sqlite",
|
||||||
|
"host": "",
|
||||||
|
"username": "",
|
||||||
|
"password": ""
|
||||||
},
|
},
|
||||||
"Email":{
|
"Email":{
|
||||||
"server": "",
|
"server": "",
|
||||||
@ -1825,6 +1828,13 @@ class DashboardConfig:
|
|||||||
self.APIAccessed = False
|
self.APIAccessed = False
|
||||||
self.SetConfig("Server", "version", DASHBOARD_VERSION)
|
self.SetConfig("Server", "version", DASHBOARD_VERSION)
|
||||||
|
|
||||||
|
def getConnectionString(self, database) -> str or None:
|
||||||
|
if self.GetConfig("Database", "type")[1] == "sqlite":
|
||||||
|
return f'sqlite:///{os.path.join(CONFIGURATION_PATH, "db", f".db")}'
|
||||||
|
elif self.GetConfig("Database", "type")[1] == "postgresql":
|
||||||
|
return f'postgresql+psycopg2://{self.GetConfig("Database", "username")[1]}:{self.GetConfig("Database", "password")[1]}@{self.GetConfig("Database", "host")[1]}/{database}'
|
||||||
|
return None
|
||||||
|
|
||||||
def __createAPIKeyTable(self):
|
def __createAPIKeyTable(self):
|
||||||
existingTable = sqlSelect("SELECT name FROM sqlite_master WHERE type='table' AND name = 'DashboardAPIKeys'").fetchall()
|
existingTable = sqlSelect("SELECT name FROM sqlite_master WHERE type='table' AND name = 'DashboardAPIKeys'").fetchall()
|
||||||
if len(existingTable) == 0:
|
if len(existingTable) == 0:
|
||||||
@ -3178,8 +3188,8 @@ def InitWireguardConfigurationsList(startup: bool = False):
|
|||||||
|
|
||||||
AllPeerShareLinks: PeerShareLinks = PeerShareLinks()
|
AllPeerShareLinks: PeerShareLinks = PeerShareLinks()
|
||||||
AllPeerJobs: PeerJobs = PeerJobs()
|
AllPeerJobs: PeerJobs = PeerJobs()
|
||||||
JobLogger: PeerJobLogger = PeerJobLogger(CONFIGURATION_PATH, AllPeerJobs)
|
JobLogger: PeerJobLogger = PeerJobLogger(CONFIGURATION_PATH, AllPeerJobs, DashboardConfig)
|
||||||
DashboardLogger: DashboardLogger = DashboardLogger(CONFIGURATION_PATH)
|
DashboardLogger: DashboardLogger = DashboardLogger(CONFIGURATION_PATH, DashboardConfig)
|
||||||
_, app_ip = DashboardConfig.GetConfig("Server", "app_ip")
|
_, app_ip = DashboardConfig.GetConfig("Server", "app_ip")
|
||||||
_, app_port = DashboardConfig.GetConfig("Server", "app_port")
|
_, app_port = DashboardConfig.GetConfig("Server", "app_port")
|
||||||
_, WG_CONF_PATH = DashboardConfig.GetConfig("Server", "wg_conf_path")
|
_, WG_CONF_PATH = DashboardConfig.GetConfig("Server", "wg_conf_path")
|
||||||
|
@ -6,13 +6,13 @@ import sqlalchemy as db
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
class DashboardLogger:
|
class DashboardLogger:
|
||||||
def __init__(self, CONFIGURATION_PATH):
|
def __init__(self, CONFIGURATION_PATH, DashboardConfig):
|
||||||
self.engine = db.create_engine(f'sqlite:///{os.path.join(CONFIGURATION_PATH, "db", "wgdashboard_log.db")}')
|
self.engine = db.create_engine(DashboardConfig.getConnectionString("wgdashboard_log"))
|
||||||
self.loggerdb = self.engine.connect()
|
self.loggerdb = self.engine.connect()
|
||||||
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.VARCHAR, nullable=False, primary_key=True),
|
||||||
db.Column('LogDate', db.DATETIME,
|
db.Column('LogDate', (db.DATETIME if DashboardConfig.GetConfig("Database", "type")[1] == 'sqlite' else db.TIMESTAMP),
|
||||||
server_default=datetime.now().strftime("%Y-%m-%d %H:%M:%S")),
|
server_default=datetime.now().strftime("%Y-%m-%d %H:%M:%S")),
|
||||||
db.Column('URL', db.VARCHAR),
|
db.Column('URL', db.VARCHAR),
|
||||||
db.Column('IP', db.VARCHAR),
|
db.Column('IP', db.VARCHAR),
|
||||||
|
@ -7,17 +7,17 @@ from .Log import Log
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
class PeerJobLogger:
|
class PeerJobLogger:
|
||||||
def __init__(self, CONFIGURATION_PATH, AllPeerJobs):
|
def __init__(self, CONFIGURATION_PATH, AllPeerJobs, DashboardConfig):
|
||||||
self.engine = db.create_engine(f'sqlite:///{os.path.join(CONFIGURATION_PATH, "db", "wgdashboard_log.db")}')
|
self.engine = db.create_engine(DashboardConfig.getConnectionString("wgdashboard_log"))
|
||||||
self.loggerdb = self.engine.connect()
|
self.loggerdb = self.engine.connect()
|
||||||
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.VARCHAR, nullable=False, primary_key=True),
|
db.Column('LogID', db.String, nullable=False, primary_key=True),
|
||||||
db.Column('JobID', db.VARCHAR, nullable=False),
|
db.Column('JobID', db.String, nullable=False),
|
||||||
db.Column('LogDate', db.DATETIME,
|
db.Column('LogDate', (db.DATETIME if DashboardConfig.GetConfig("Database", "type")[1] == 'sqlite' else db.TIMESTAMP),
|
||||||
server_default=datetime.now().strftime("%Y-%m-%d %H:%M:%S")),
|
server_default=datetime.now().strftime("%Y-%m-%d %H:%M:%S")),
|
||||||
db.Column('Status', db.VARCHAR, nullable=False),
|
db.Column('Status', db.String, nullable=False),
|
||||||
db.Column('Message', db.VARCHAR)
|
db.Column('Message', db.String)
|
||||||
)
|
)
|
||||||
self.logs: list[Log] = []
|
self.logs: list[Log] = []
|
||||||
self.metadata.create_all(self.engine)
|
self.metadata.create_all(self.engine)
|
||||||
|
@ -9,3 +9,4 @@ gunicorn
|
|||||||
requests
|
requests
|
||||||
tcconfig
|
tcconfig
|
||||||
sqlalchemy
|
sqlalchemy
|
||||||
|
psycopg2
|
Loading…
x
Reference in New Issue
Block a user