Skip to content

Commit 04e2169

Browse files
committed
WebDAV 备份文件名增加版本号
1 parent 9419606 commit 04e2169

1 file changed

Lines changed: 10 additions & 7 deletions

File tree

app/src/main/java/io/nekohasekai/sagernet/ui/BackupFragment.kt

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,8 @@ class BackupFragment : NamedFragment(R.layout.layout_backup) {
204204

205205
// 使用英文格式的时间戳作为文件名,修改后缀为 .zip
206206
val timestamp = java.text.SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(Date())
207-
val fileName = "nekobox_backup_$timestamp.zip"
207+
val version = BuildConfig.VERSION_NAME
208+
val fileName = "nekobox_backup_${version}_$timestamp.zip"
208209

209210
// 确保 baseUrl 是有效的 URL
210211
if (!baseUrl.startsWith("http://") && !baseUrl.startsWith("https://")) {
@@ -353,9 +354,9 @@ class BackupFragment : NamedFragment(R.layout.layout_backup) {
353354
Logs.d("WebDAV restore - Directory listing: $responseBody")
354355

355356
val patterns = listOf(
356-
"""<D:href>[^<]*?nekobox_backup_\d{8}_\d{6}\.(json|zip)</D:href>""".toRegex(),
357-
"""<d:href>[^<]*?nekobox_backup_\d{8}_\d{6}\.(json|zip)</d:href>""".toRegex(),
358-
"""<href>[^<]*?nekobox_backup_\d{8}_\d{6}\.(json|zip)</href>""".toRegex()
357+
"""<D:href>[^<]*?nekobox_backup_[^<]*?\d{8}_\d{6}\.(json|zip)</D:href>""".toRegex(),
358+
"""<d:href>[^<]*?nekobox_backup_[^<]*?\d{8}_\d{6}\.(json|zip)</d:href>""".toRegex(),
359+
"""<href>[^<]*?nekobox_backup_[^<]*?\d{8}_\d{6}\.(json|zip)</href>""".toRegex()
359360
)
360361

361362
val backupFiles = mutableListOf<String>()
@@ -365,7 +366,7 @@ class BackupFragment : NamedFragment(R.layout.layout_backup) {
365366
matches.forEach { match ->
366367
val href = match.value
367368
Logs.d("WebDAV restore - Found backup file with pattern ${pattern.pattern}: $href")
368-
val fileName = """nekobox_backup_\d{8}_\d{6}\.(json|zip)""".toRegex()
369+
val fileName = """nekobox_backup_[^<]*?\d{8}_\d{6}\.(json|zip)""".toRegex()
369370
.find(href)?.value
370371
if (fileName != null) {
371372
backupFiles.add(fileName)
@@ -375,8 +376,10 @@ class BackupFragment : NamedFragment(R.layout.layout_backup) {
375376
}
376377

377378
Logs.d("WebDAV restore - Found ${backupFiles.size} backup files: ${backupFiles.joinToString()}")
378-
379-
backupFiles.maxByOrNull { it } ?: throw Exception("No backup found")
379+
380+
backupFiles.maxByOrNull { fileName ->
381+
"""(\d{8}_\d{6})""".toRegex().find(fileName)?.value ?: ""
382+
} ?: throw Exception("No backup found")
380383
}
381384

382385
// 下载最新的备份文件

0 commit comments

Comments
 (0)