mirror of
https://github.com/TheSmallHanCat/sora2api.git
synced 2026-02-04 02:04:42 +08:00
fix: api_key持久化
This commit is contained in:
@@ -509,6 +509,13 @@ async def update_api_key(
|
||||
):
|
||||
"""Update API key"""
|
||||
try:
|
||||
# Get current admin config from database
|
||||
admin_config = await db.get_admin_config()
|
||||
|
||||
# Update api_key in database
|
||||
admin_config.api_key = request.new_api_key
|
||||
await db.update_admin_config(admin_config)
|
||||
|
||||
# Update in-memory config
|
||||
config.api_key = request.new_api_key
|
||||
|
||||
|
||||
@@ -53,20 +53,22 @@ class Database:
|
||||
# Get admin credentials from config_dict if provided, otherwise use defaults
|
||||
admin_username = "admin"
|
||||
admin_password = "admin"
|
||||
api_key = "han1234"
|
||||
error_ban_threshold = 3
|
||||
|
||||
if config_dict:
|
||||
global_config = config_dict.get("global", {})
|
||||
admin_username = global_config.get("admin_username", "admin")
|
||||
admin_password = global_config.get("admin_password", "admin")
|
||||
api_key = global_config.get("api_key", "han1234")
|
||||
|
||||
admin_config = config_dict.get("admin", {})
|
||||
error_ban_threshold = admin_config.get("error_ban_threshold", 3)
|
||||
|
||||
await db.execute("""
|
||||
INSERT INTO admin_config (id, admin_username, admin_password, error_ban_threshold)
|
||||
VALUES (1, ?, ?, ?)
|
||||
""", (admin_username, admin_password, error_ban_threshold))
|
||||
INSERT INTO admin_config (id, admin_username, admin_password, api_key, error_ban_threshold)
|
||||
VALUES (1, ?, ?, ?, ?)
|
||||
""", (admin_username, admin_password, api_key, error_ban_threshold))
|
||||
|
||||
# Ensure proxy_config has a row
|
||||
cursor = await db.execute("SELECT COUNT(*) FROM proxy_config")
|
||||
@@ -224,6 +226,7 @@ class Database:
|
||||
columns_to_add = [
|
||||
("admin_username", "TEXT DEFAULT 'admin'"),
|
||||
("admin_password", "TEXT DEFAULT 'admin'"),
|
||||
("api_key", "TEXT DEFAULT 'han1234'"),
|
||||
]
|
||||
|
||||
for col_name, col_type in columns_to_add:
|
||||
@@ -351,6 +354,7 @@ class Database:
|
||||
id INTEGER PRIMARY KEY DEFAULT 1,
|
||||
admin_username TEXT DEFAULT 'admin',
|
||||
admin_password TEXT DEFAULT 'admin',
|
||||
api_key TEXT DEFAULT 'han1234',
|
||||
error_ban_threshold INTEGER DEFAULT 3,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
)
|
||||
@@ -451,14 +455,15 @@ class Database:
|
||||
global_config = config_dict.get("global", {})
|
||||
admin_username = global_config.get("admin_username", "admin")
|
||||
admin_password = global_config.get("admin_password", "admin")
|
||||
api_key = global_config.get("api_key", "han1234")
|
||||
|
||||
if not is_first_startup:
|
||||
# On upgrade, update the configuration
|
||||
await db.execute("""
|
||||
UPDATE admin_config
|
||||
SET admin_username = ?, admin_password = ?, error_ban_threshold = ?, updated_at = CURRENT_TIMESTAMP
|
||||
SET admin_username = ?, admin_password = ?, api_key = ?, error_ban_threshold = ?, updated_at = CURRENT_TIMESTAMP
|
||||
WHERE id = 1
|
||||
""", (admin_username, admin_password, error_ban_threshold))
|
||||
""", (admin_username, admin_password, api_key, error_ban_threshold))
|
||||
|
||||
# Initialize proxy config
|
||||
proxy_config = config_dict.get("proxy", {})
|
||||
@@ -965,16 +970,16 @@ class Database:
|
||||
return AdminConfig(**dict(row))
|
||||
# If no row exists, return a default config with placeholder values
|
||||
# This should not happen in normal operation as _ensure_config_rows should create it
|
||||
return AdminConfig(admin_username="admin", admin_password="admin")
|
||||
return AdminConfig(admin_username="admin", admin_password="admin", api_key="han1234")
|
||||
|
||||
async def update_admin_config(self, config: AdminConfig):
|
||||
"""Update admin configuration"""
|
||||
async with aiosqlite.connect(self.db_path) as db:
|
||||
await db.execute("""
|
||||
UPDATE admin_config
|
||||
SET admin_username = ?, admin_password = ?, error_ban_threshold = ?, updated_at = CURRENT_TIMESTAMP
|
||||
SET admin_username = ?, admin_password = ?, api_key = ?, error_ban_threshold = ?, updated_at = CURRENT_TIMESTAMP
|
||||
WHERE id = 1
|
||||
""", (config.admin_username, config.admin_password, config.error_ban_threshold))
|
||||
""", (config.admin_username, config.admin_password, config.api_key, config.error_ban_threshold))
|
||||
await db.commit()
|
||||
|
||||
# Proxy config operations
|
||||
|
||||
@@ -82,6 +82,7 @@ class AdminConfig(BaseModel):
|
||||
id: int = 1
|
||||
admin_username: str # Read from database, initialized from setting.toml on first startup
|
||||
admin_password: str # Read from database, initialized from setting.toml on first startup
|
||||
api_key: str # Read from database, initialized from setting.toml on first startup
|
||||
error_ban_threshold: int = 3
|
||||
updated_at: Optional[datetime] = None
|
||||
|
||||
|
||||
@@ -109,10 +109,11 @@ async def startup_event():
|
||||
await db.check_and_migrate_db(config_dict)
|
||||
print("✓ Database migration check completed.")
|
||||
|
||||
# Load admin credentials from database
|
||||
# Load admin credentials and API key from database
|
||||
admin_config = await db.get_admin_config()
|
||||
config.set_admin_username_from_db(admin_config.admin_username)
|
||||
config.set_admin_password_from_db(admin_config.admin_password)
|
||||
config.api_key = admin_config.api_key
|
||||
|
||||
# Load cache configuration from database
|
||||
cache_config = await db.get_cache_config()
|
||||
|
||||
Reference in New Issue
Block a user