[Bug fix] Update error & About bundle download

- Data for Arcaea 5.8.0
- Fix a bug that the server's database updates from an old version may meet a challenge if `recent30` table has some strange data.
- Fix the issue where the bundle downloading memory cache does not clean up.
- Add a config term to only change the X-Accel-Redirect prefix for bundle downloading.
This commit is contained in:
Lost-MSth
2024-07-02 22:18:00 +08:00
parent c38208832b
commit 9bb7171354
7 changed files with 68 additions and 6 deletions

View File

@@ -226,6 +226,8 @@ class BundleDownload:
if not sql_list:
return []
self.clear_expired_token()
self.c_m.executemany(
'''insert into bundle_download_token values (?, ?, ?, ?)''', sql_list)
@@ -246,3 +248,7 @@ class BundleDownload:
f'Too many content bundle downloads, IP: {ip}, DeviceID: {device_id}', status=429)
return file_path
def clear_expired_token(self) -> None:
self.c_m.execute(
'''delete from bundle_download_token where time < ?''', (int(time() - Constant.BUNDLE_DOWNLOAD_TIME_GAP_LIMIT),))

View File

@@ -16,7 +16,7 @@ class Config:
OLD_GAME_API_PREFIX = [] # str | list[str]
ALLOW_APPVERSION = [] # list[str]
BUNDLE_STRICT_MODE = True
SET_LINKPLAY_SERVER_AS_SUB_PROCESS = True
@@ -49,6 +49,7 @@ class Config:
DOWNLOAD_USE_NGINX_X_ACCEL_REDIRECT = False
NGINX_X_ACCEL_REDIRECT_PREFIX = '/nginx_download/'
BUNDLE_NGINX_X_ACCEL_REDIRECT_PREFIX = '/nginx_bundle_download/'
DOWNLOAD_TIMES_LIMIT = 3000
DOWNLOAD_TIME_GAP_LIMIT = 1000

View File

@@ -1,7 +1,7 @@
from .config_manager import Config
ARCAEA_SERVER_VERSION = 'v2.11.3.14'
ARCAEA_DATABASE_VERSION = 'v2.11.3.13'
ARCAEA_SERVER_VERSION = 'v2.11.3.15'
ARCAEA_DATABASE_VERSION = 'v2.11.3.15'
ARCAEA_LOG_DATBASE_VERSION = 'v1.1'

View File

@@ -450,10 +450,11 @@ class DatabaseMigrator:
for j in range(30):
rating = i[1 + j * 2]
rating = float(rating) if rating else 0
song_id_difficulty = i[2 + j * 2]
song_id_difficulty: str = i[2 + j * 2]
if song_id_difficulty:
song_id = song_id_difficulty[:-1]
difficulty = int(song_id_difficulty[-1])
difficulty = song_id_difficulty[-1]
difficulty = int(difficulty) if difficulty.isdigit() else 0
else:
song_id = ''
difficulty = 0