protohacking/cmd/util.go
2025-06-17 00:47:00 -04:00

37 lines
668 B
Go

package cmd
import (
"net"
"net/netip"
"github.com/charmbracelet/log"
)
func runServer(server func(net.Listener) error) {
if proto != "tcp" && proto != "udp" {
log.Fatal("unsupported protocol, must be either tcp or udp")
}
if v6 {
proto += "6"
}
addr, ok := netip.AddrFromSlice(ip)
if !ok {
log.Fatal("invalid ip")
}
ap := netip.AddrPortFrom(addr, port)
listener, err := net.Listen(proto, ap.String())
if err != nil {
log.Fatal("unable to listen", "err", err)
}
log.Info("starting server", "proto", proto, "ip", ip, "port", port)
err = server(listener)
if err != nil {
log.Fatal("error while handling connections", "err", err)
}
}