modified: web/blueprints/group_admin.py
modified: web/blueprints/site_admin.py modified: web/config.py new file: web/mailer.py modified: web/panel_db.py modified: web/templates/admin/base.html modified: web/templates/admin/dashboard.html new file: web/templates/admin/mail_settings.html
This commit is contained in:
@@ -130,6 +130,19 @@ CREDS_SCHEMA = [
|
||||
enc_database TEXT NOT NULL,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4""",
|
||||
|
||||
"""CREATE TABLE IF NOT EXISTS site_mail_settings (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
config_key VARCHAR(50) UNIQUE NOT NULL,
|
||||
enc_host TEXT NOT NULL,
|
||||
enc_port TEXT NOT NULL,
|
||||
enc_username TEXT NOT NULL,
|
||||
enc_password TEXT NOT NULL,
|
||||
enc_from_email TEXT NOT NULL,
|
||||
enc_from_name TEXT,
|
||||
enc_use_tls TEXT NOT NULL,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4""",
|
||||
]
|
||||
|
||||
|
||||
@@ -494,3 +507,48 @@ def has_db_configured(group_id: int) -> bool:
|
||||
(group_id,), fetchone=True
|
||||
)
|
||||
return row is not None
|
||||
|
||||
|
||||
def set_site_mail_settings(host: str, port: int, username: str, password: str, from_email: str, from_name: str, use_tls: bool):
|
||||
_creds_query(
|
||||
"INSERT INTO site_mail_settings (config_key, enc_host, enc_port, enc_username, enc_password, enc_from_email, enc_from_name, enc_use_tls) "
|
||||
"VALUES (%s,%s,%s,%s,%s,%s,%s,%s) "
|
||||
"ON DUPLICATE KEY UPDATE enc_host=VALUES(enc_host), enc_port=VALUES(enc_port), enc_username=VALUES(enc_username), "
|
||||
"enc_password=VALUES(enc_password), enc_from_email=VALUES(enc_from_email), enc_from_name=VALUES(enc_from_name), enc_use_tls=VALUES(enc_use_tls)",
|
||||
(
|
||||
"primary",
|
||||
encrypt_str(host),
|
||||
encrypt_str(str(port)),
|
||||
encrypt_str(username),
|
||||
encrypt_str(password),
|
||||
encrypt_str(from_email),
|
||||
encrypt_str(from_name or ""),
|
||||
encrypt_str("1" if use_tls else "0"),
|
||||
),
|
||||
write=True,
|
||||
)
|
||||
|
||||
|
||||
def get_site_mail_settings() -> dict | None:
|
||||
row = _creds_query("SELECT * FROM site_mail_settings WHERE config_key=%s", ("primary",), fetchone=True)
|
||||
if not row:
|
||||
return None
|
||||
return {
|
||||
"host": decrypt_str(row["enc_host"]),
|
||||
"port": int(decrypt_str(row["enc_port"])),
|
||||
"username": decrypt_str(row["enc_username"]),
|
||||
"password": decrypt_str(row["enc_password"]),
|
||||
"from_email": decrypt_str(row["enc_from_email"]),
|
||||
"from_name": decrypt_str(row["enc_from_name"]) if row.get("enc_from_name") else "",
|
||||
"use_tls": decrypt_str(row["enc_use_tls"]) == "1",
|
||||
"updated_at": row["updated_at"],
|
||||
}
|
||||
|
||||
|
||||
def delete_site_mail_settings():
|
||||
_creds_query("DELETE FROM site_mail_settings WHERE config_key=%s", ("primary",), write=True)
|
||||
|
||||
|
||||
def has_site_mail_settings() -> bool:
|
||||
row = _creds_query("SELECT id FROM site_mail_settings WHERE config_key=%s", ("primary",), fetchone=True)
|
||||
return row is not None
|
||||
|
||||
Reference in New Issue
Block a user