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