reset-state.ps1 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <#
  2. .SYNOPSIS
  3. Cleanly reset portless state (stop proxy, wipe routes, restart with new config).
  4. .DESCRIPTION
  5. Use this when:
  6. - Changing TLDs (portless alias --remove appends active TLD, so cleaning
  7. old aliases is impossible without a full reset)
  8. - Routes are corrupted or have stale entries
  9. - You want to start fresh with a different proxy port / TLS mode
  10. .PARAMETER Tld
  11. TLD to start the new proxy with. Defaults to current saved value.
  12. .PARAMETER Port
  13. Proxy port. Defaults to 443.
  14. .PARAMETER PreserveCa
  15. Keep the existing local CA. Default true (avoids re-trusting in browsers).
  16. .PARAMETER Aliases
  17. Hashtable of name → port pairs to re-register after reset. Optional.
  18. .EXAMPLE
  19. # Change TLD and re-register aliases
  20. .\reset-state.ps1 -Tld test -Aliases @{
  21. myapp = 8000
  22. api = 8001
  23. db = 5432
  24. }
  25. #>
  26. [CmdletBinding()]
  27. param(
  28. [string]$Tld,
  29. [int]$Port = 443,
  30. [bool]$PreserveCa = $true,
  31. [hashtable]$Aliases = @{}
  32. )
  33. $ErrorActionPreference = 'Stop'
  34. Write-Host "Resetting portless state" -ForegroundColor Cyan
  35. # 1. Stop proxy
  36. Write-Host "[1/4] Stopping proxy..."
  37. portless proxy stop 2>&1 | Out-Null
  38. # 2. Wipe routes.json
  39. $routesFile = Join-Path $env:USERPROFILE '.portless\routes.json'
  40. if (Test-Path $routesFile) {
  41. Write-Host "[2/4] Removing routes.json..."
  42. Remove-Item $routesFile -Force
  43. } else {
  44. Write-Host "[2/4] No routes.json to remove."
  45. }
  46. # Optional: nuke CA + everything (use `portless clean` for nuclear option)
  47. if (-not $PreserveCa) {
  48. Write-Host " Also clearing CA + /etc/hosts (will need re-trust)..."
  49. portless clean 2>&1 | Out-Null
  50. }
  51. # 3. Start proxy with new TLD/port
  52. Write-Host "[3/4] Starting proxy: --tld $Tld --port $Port..."
  53. $args = @("proxy", "start", "--port", $Port)
  54. if ($Tld) { $args += @("--tld", $Tld) }
  55. & portless @args
  56. Start-Sleep -Seconds 2
  57. # 4. Re-register aliases if provided
  58. if ($Aliases.Count -gt 0) {
  59. Write-Host "[4/4] Re-registering $($Aliases.Count) aliases..."
  60. foreach ($name in $Aliases.Keys) {
  61. $port = $Aliases[$name]
  62. Write-Host " alias: $name → $port"
  63. & portless alias $name $port --force 2>&1 | Out-Null
  64. }
  65. } else {
  66. Write-Host "[4/4] No aliases to register."
  67. }
  68. Write-Host ""
  69. Write-Host "Done. Current state:" -ForegroundColor Green
  70. portless list