Harden workspace prechecks

This commit is contained in:
Haitao Pan 2026-06-08 15:52:21 +08:00
parent 018fa551dd
commit 26ee215765
2 changed files with 34 additions and 0 deletions

View File

@ -265,6 +265,12 @@ class WorkspaceProvisionController extends ChangeNotifier {
if (info == null) {
return null;
}
if (!info.os.toLowerCase().contains('ubuntu')) {
return appText(
'当前仅支持 Ubuntu 20.04 / 22.04 / 24.04,检测到 ${info.os}',
'Only Ubuntu 20.04 / 22.04 / 24.04 is supported. Detected: ${info.os}.',
);
}
if (!info.dnsResolved) {
return appText(
'部署前需要先把 ${workspaceDomain.trim()} 做好 DNS 解析。',

View File

@ -190,6 +190,34 @@ PORT_443_OPEN=yes
contains('443'),
);
});
test('precheck blocks unsupported non-Ubuntu systems', () async {
final controller = WorkspaceProvisionController(executor: _FakeSshExecutor());
addTearDown(controller.dispose);
controller.updateForm(
serverAddress: '203.0.113.10',
workspaceDomain: 'xworkmate-bridge.example.com',
sshKeyContent: 'key',
);
controller.serverInfo = const ServerInfo(
os: 'Debian GNU/Linux 11 (bullseye)',
arch: 'x86_64',
sudoAvailable: true,
dockerVersion: 'missing',
systemdVersion: 'systemd 249',
caddyVersion: 'missing',
ansibleVersion: 'ansible [core 2.14]',
gitVersion: 'git version 2.34.1',
dnsAddressCount: 1,
port443ListenerCount: 0,
port443Open: true,
);
expect(
controller.validatePrecheckBlockingIssue(),
contains('Ubuntu'),
);
});
});
}