--- name: win_firewall_add_rule kind: function lang: ps domain: infra version: "1.0.0" purity: impure signature: "win_firewall_add_rule -Name -Port [-Protocol ]" description: "Añade una regla de entrada al firewall de Windows para permitir tráfico en un puerto TCP/UDP. Si ya existe una regla con el mismo nombre, la elimina y la recrea. Requiere privilegios de Administrador." tags: [firewall, windows, netsh, network, infra, security, port, wsl2, pendiente-usar] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: [] params: - name: Name desc: "Nombre de la regla en el firewall" - name: Port desc: "Puerto local a permitir (1-65535)" - name: Protocol desc: "Protocolo TCP o UDP (default: TCP)" output: "Void - crea regla de entrada en firewall de Windows, idempotente por nombre" tested: false tests: [] test_file_path: "" file_path: "powershell/functions/infra/win_firewall_add_rule.ps1" --- ## Uso ```powershell # Desde PowerShell (como Administrador) .\win_firewall_add_rule.ps1 -Name "CDP-9222" -Port 9222 # Con protocolo explícito .\win_firewall_add_rule.ps1 -Name "MyApp-UDP-5000" -Port 5000 -Protocol UDP ``` ```bash # Desde WSL2 powershell.exe -ExecutionPolicy Bypass -File win_firewall_add_rule.ps1 -Name "CDP-9222" -Port 9222 ``` ## Parametros | Parametro | Tipo | Obligatorio | Default | Descripcion | |------------|--------|-------------|---------|--------------------------------------| | `-Name` | string | si | — | Nombre de la regla en el firewall | | `-Port` | int | si | — | Puerto local (1-65535) | | `-Protocol`| string | no | TCP | Protocolo: TCP o UDP | ## Notas - Requiere ejecutarse como **Administrador** en Windows. Si se llama desde WSL2, usar `powershell.exe` (que corre en Windows) o `pwsh.exe`. - Si ya existe una regla con el mismo nombre, la elimina primero y la recrea (idempotente respecto al nombre). - La regla creada es `dir=in action=allow` — solo aplica para tráfico entrante. - Caso de uso principal: permitir que WSL2 alcance Chrome CDP en el host Windows cuando Chrome escucha en `127.0.0.1:9222`. - Retorna exit code 0 si tuvo éxito, 1 si hubo error (falta de privilegios, puerto inválido, fallo de netsh).