detectHostIP method
Detects the host IP to use to connect to the extension.
Implementation
Future<String> detectHostIP(bool isIdeRunningInWindows, int port) async {
final cacheKey = '$isIdeRunningInWindows:$port';
if (_hostIPCache.containsKey(cacheKey)) {
return _hostIPCache[cacheKey]!;
}
final envOverride = Platform.environment['MAGE_IDE_HOST_OVERRIDE'];
if (envOverride != null) {
_hostIPCache[cacheKey] = envOverride;
return envOverride;
}
// Default to localhost
const defaultHost = '127.0.0.1';
// WSL-specific host detection
if (Platform.isLinux &&
Platform.environment.containsKey('WSL_DISTRO_NAME') &&
isIdeRunningInWindows) {
try {
final result = await Process.run('bash', [
'-c',
'ip route show | grep -i default',
]);
if (result.exitCode == 0) {
final match = RegExp(
r'default via (\d+\.\d+\.\d+\.\d+)',
).firstMatch(result.stdout as String);
if (match != null) {
final gatewayIP = match.group(1)!;
if (await checkIdeConnection(gatewayIP, port)) {
_hostIPCache[cacheKey] = gatewayIP;
return gatewayIP;
}
}
}
} catch (_) {}
}
_hostIPCache[cacheKey] = defaultHost;
return defaultHost;
}