fix: backfill utls for legacy vless reality nodes

This commit is contained in:
xboard
2026-04-20 00:05:43 +08:00
parent 1fbf5d160a
commit 9e2a66f1d5
@@ -0,0 +1,48 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
// Backfill default utls for legacy vless reality nodes after the uTLS refactor.
return new class extends Migration
{
public function up(): void
{
if (!Schema::hasTable('v2_server')) {
return;
}
DB::table('v2_server')
->where('type', 'vless')
->orderBy('id')
->chunkById(200, function ($servers) {
foreach ($servers as $server) {
$settings = json_decode($server->protocol_settings ?? '', true);
if (!is_array($settings) || (int) ($settings['tls'] ?? 0) != 2) {
continue;
}
$existing = $settings['utls'] ?? null;
if (is_array($existing) && ($existing['enabled'] ?? false) === true) {
continue;
}
$settings['utls'] = [
'enabled' => true,
'fingerprint' => is_array($existing) && !empty($existing['fingerprint'])
? $existing['fingerprint']
: 'chrome',
];
DB::table('v2_server')
->where('id', $server->id)
->update(['protocol_settings' => json_encode($settings)]);
}
});
}
public function down(): void
{
}
};