chore: snapshot current intranet work

This commit is contained in:
b17301
2026-04-24 09:09:39 +09:00
parent a2affa2d45
commit fb11139da4
23 changed files with 16075 additions and 115 deletions
+28 -9
View File
@@ -2,11 +2,15 @@ param(
[string]$ListenAddress = "0.0.0.0",
[int]$Port = 8010,
[string]$WslIp = "",
[string]$RuleName = "MyIntranetApp-8010"
[string]$RuleName = ""
)
$ErrorActionPreference = "Stop"
if ([string]::IsNullOrWhiteSpace($RuleName)) {
$RuleName = "MyIntranetApp-$Port"
}
if ([string]::IsNullOrWhiteSpace($WslIp)) {
$detected = wsl.exe hostname -I 2>$null
if (-not $detected) {
@@ -24,8 +28,24 @@ Write-Host "ListenAddress: $ListenAddress"
Write-Host "Port: $Port"
Write-Host "WSL IP: $WslIp"
netsh interface portproxy delete v4tov4 listenport=$Port listenaddress=$ListenAddress | Out-Null
netsh interface portproxy add v4tov4 listenport=$Port listenaddress=$ListenAddress connectport=$Port connectaddress=$WslIp
$windowsIps = Get-NetIPAddress -AddressFamily IPv4 |
Where-Object {
$_.IPAddress -notlike '127.*' `
-and $_.IPAddress -notlike '169.254*' `
-and $_.InterfaceAlias -notlike '*WSL*'
} |
Select-Object -ExpandProperty IPAddress
$listenAddresses = @($ListenAddress)
if ($ListenAddress -eq "0.0.0.0") {
$listenAddresses += $windowsIps
}
$listenAddresses = $listenAddresses | Where-Object { -not [string]::IsNullOrWhiteSpace($_) } | Select-Object -Unique
foreach ($address in $listenAddresses) {
netsh interface portproxy delete v4tov4 listenport=$Port listenaddress=$address | Out-Null
netsh interface portproxy add v4tov4 listenport=$Port listenaddress=$address connectport=$Port connectaddress=$WslIp
}
$existingRule = Get-NetFirewallRule -DisplayName $RuleName -ErrorAction SilentlyContinue
if ($existingRule) {
@@ -39,16 +59,15 @@ New-NetFirewallRule `
-Protocol TCP `
-LocalPort $Port | Out-Null
$windowsIps = Get-NetIPAddress -AddressFamily IPv4 |
Where-Object { $_.IPAddress -notlike '127.*' -and $_.IPAddress -notlike '169.254*' -and $_.IPAddress -notlike '172.*' } |
Select-Object -ExpandProperty IPAddress
Write-Host ""
Write-Host "Completed." -ForegroundColor Green
Write-Host "Now open this from another PC on the intranet:"
Write-Host "http://<Windows-IP>:$Port"
if ($windowsIps) {
Write-Host "Windows IPv4 candidates: $($windowsIps -join ', ')"
foreach ($ip in $windowsIps) {
Write-Host "http://$ip`:$Port"
}
} else {
Write-Host "http://<Windows-IP>:$Port"
}
Write-Host ""
Write-Host "Tip: if WSL restarts and its IP changes, run this script again. If you omit -WslIp, the script will detect it automatically."