Public/Discovery.ps1
|
<#
.SYNOPSIS Public functions for peer discovery .DESCRIPTION Cmdlets for finding peers via manual exchange or mDNS. #> function Find-ChatPeer { <# .SYNOPSIS Discover peers on local network via mDNS .PARAMETER Timeout Discovery timeout in seconds (default: 5) .EXAMPLE Find-ChatPeer Discovers peers on local network #> [CmdletBinding()] param( [int]$Timeout = 5 ) Write-Host "Scanning local network for PSCryptoChat peers..." -ForegroundColor Cyan $discovery = [PeerDiscovery]::new($true) try { $discovery.Start() $peers = $discovery.FindPeers($Timeout * 1000) } finally { $discovery.Stop() } if ($peers.Count -eq 0) { Write-Host "No peers found" -ForegroundColor Yellow return @() } Write-Host "Found $($peers.Count) peer(s):" -ForegroundColor Green return $peers | ForEach-Object { [PSCustomObject]@{ Name = $_.Name HostAddress = $_.Host Port = $_.Port ConnectionString = "$($_.Host):$($_.Port):$($_.PublicKey)" } } } |