diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2025-04-18 18:11:24 -0400 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2025-04-18 18:11:24 -0400 |
| commit | d88453a853fa3b5b52f5bde2b3df2dff4e653ae6 (patch) | |
| tree | e7dc23e9a39a16f0101c4201638d63d3df19ba99 /main.go | |
| parent | bfaad07bab58207d802ea1d94539a29ff6c97fce (diff) | |
| download | hose-d88453a853fa3b5b52f5bde2b3df2dff4e653ae6.zip | |
refactor recv()
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 37 |
1 files changed, 25 insertions, 12 deletions
@@ -54,11 +54,9 @@ func main() { func recv() error { // Load private decryption key. keyring := key.NewKeyring() - boxKeypair, err := key.LoadBoxKeypair() - if err != nil { + if err := loadBoxKeypair(keyring); err != nil { return err } - keyring.ImportBoxKeypair(boxKeypair) // Accept connection from remote host. conn, err := hose_net.AcceptConnection(network, port) @@ -66,15 +64,7 @@ func recv() error { util.Logf("accepted connection from %s", conn.RemoteAddr()) // Load remote host's signature verification key. - rhost, _, err := net.SplitHostPort(conn.RemoteAddr().String()) - if err != nil { - return err - } - raddr, err := netip.ParseAddr(rhost) - if err != nil { - return err - } - host, err := hosts.Lookup(raddr) + host, err := lookupHost(conn) if err != nil { return err } @@ -92,6 +82,29 @@ func recv() error { return err } +// loadBoxKeypair reads the local encryption/decryption keypair from disc and imports it into the keyring. +func loadBoxKeypair(keyring *key.Keyring) error { + boxKeypair, err := key.LoadBoxKeypair() + if err != nil { + return err + } + keyring.ImportBoxKeypair(boxKeypair) + return nil +} + +// lookupHost searches for a remote host in the known hosts file. +func lookupHost(conn net.Conn) (hosts.Host, error) { + rhost, _, err := net.SplitHostPort(conn.RemoteAddr().String()) + if err != nil { + return hosts.Host{}, err + } + raddr, err := netip.ParseAddr(rhost) + if err != nil { + return hosts.Host{}, err + } + return hosts.Lookup(raddr) +} + // send pipes data from stdin to the remote host. func send(rHostName string) error { var keyCreator basic.EphemeralKeyCreator |