Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 81 additions & 59 deletions README.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/cmd/add.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ type addCmdConfig struct {
var addCmdArgs = addCmdConfig{
endpoint: Endpoint,
outbound: false,
port: Port,
port: USE_ENDPOINT_PORT,
keepalive: Keepalive,
}

Expand Down
6 changes: 5 additions & 1 deletion src/cmd/add_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,14 +78,18 @@ func (c addClientCmdConfig) Run() {
if len(baseConfigE2EE.GetAddresses()) == 1 {
disableV6 = true
}

if addArgs.port == USE_ENDPOINT_PORT {
addArgs.port = portFromEndpoint(addArgs.endpoint);
}

// Make new configs for client.
relayAddrs := []string{addresses.NextClientRelayAddr4.String() + "/32"}
if !disableV6 {
relayAddrs = append(relayAddrs, addresses.NextClientRelayAddr6.String()+"/128")
}
clientConfigRelay, err := peer.GetConfig(peer.ConfigArgs{
ListenPort: addCmdArgs.port,
ListenPort: addArgs.port,
Addresses: relayAddrs,
})
check("failed to generate client relay config", err)
Expand Down
5 changes: 5 additions & 0 deletions src/cmd/add_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,11 @@ func (c addServerCmdConfig) Run() {
// Leaf server is the relay peer for the new server.
clientConfigRelay = leafServerConfigRelay
}

// Use a reasonable default for server listening ports
if addArgs.port == USE_ENDPOINT_PORT {
addArgs.port = Port;
}

if addArgs.port != Port {
err = serverConfigRelay.SetPort(addArgs.port)
Expand Down
16 changes: 10 additions & 6 deletions src/cmd/configure.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ type configureCmdConfig struct {
// Defaults for configure command.
// See root command for shared defaults.
var configureCmdArgs = configureCmdConfig{
allowedIPs: []string{"0.0.0.0/32"},
allowedIPs: []string{""},
endpoint: Endpoint,
outbound: false,
port: Port,
port: USE_ENDPOINT_PORT,
configFileRelay: ConfigRelay,
configFileE2EE: ConfigE2EE,
configFileServer: ConfigServer,
Expand Down Expand Up @@ -75,10 +75,10 @@ var configureCmd = &cobra.Command{
func init() {
rootCmd.AddCommand(configureCmd)

configureCmd.Flags().StringSliceVarP(&configureCmdArgs.allowedIPs, "routes", "r", configureCmdArgs.allowedIPs, "CIDR IP ranges that will be routed through wiretap")
configureCmd.Flags().StringVarP(&configureCmdArgs.endpoint, "endpoint", "e", configureCmdArgs.endpoint, "socket address of wireguard listener that server will connect to (example \"1.2.3.4:51820\")")
configureCmd.Flags().BoolVar(&configureCmdArgs.outbound, "outbound", configureCmdArgs.outbound, "client will initiate handshake to server, set endpoint to server address")
configureCmd.Flags().IntVarP(&configureCmdArgs.port, "port", "p", configureCmdArgs.port, "port of local wireguard relay listener")
configureCmd.Flags().StringSliceVarP(&configureCmdArgs.allowedIPs, "routes", "r", configureCmdArgs.allowedIPs, "[REQUIRED] CIDR IP ranges that will be routed through wiretap (example \"10.0.0.1/24\")")
configureCmd.Flags().StringVarP(&configureCmdArgs.endpoint, "endpoint", "e", configureCmdArgs.endpoint, "[REQUIRED] IP:PORT (or [IP]:PORT for IPv6) of wireguard listener that server will connect to (example \"1.2.3.4:51820\")")
configureCmd.Flags().BoolVar(&configureCmdArgs.outbound, "outbound", configureCmdArgs.outbound, "client will initiate handshake to server; --endpoint now specifies server's listening socket instead of client's")
configureCmd.Flags().IntVarP(&configureCmdArgs.port, "port", "p", configureCmdArgs.port, "listener port for local wireguard relay; default is to use the same port specified by --endpoint")
configureCmd.Flags().StringVarP(&configureCmdArgs.configFileRelay, "relay-output", "", configureCmdArgs.configFileRelay, "wireguard relay config output filename")
configureCmd.Flags().StringVarP(&configureCmdArgs.configFileE2EE, "e2ee-output", "", configureCmdArgs.configFileE2EE, "wireguard E2EE config output filename")
configureCmd.Flags().StringVarP(&configureCmdArgs.configFileServer, "server-output", "s", configureCmdArgs.configFileServer, "wiretap server config output filename")
Expand Down Expand Up @@ -159,6 +159,10 @@ func (c configureCmdConfig) Run() {
if !c.disableV6 {
clientE2EEAddrs = append(clientE2EEAddrs, c.clientAddr6E2EE)
}

if c.port == USE_ENDPOINT_PORT {
c.port = portFromEndpoint(c.endpoint);
}

clientConfigRelayArgs := peer.ConfigArgs{
ListenPort: c.port,
Expand Down
14 changes: 14 additions & 0 deletions src/cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,16 @@ import (
"fmt"
"log"
"net/netip"
"net"
"os"
"strconv"

"github.com/fatih/color"
"github.com/spf13/cobra"
)

const USE_ENDPOINT_PORT = -1

// Defaults shared by multiple commands.
var (
Version = "v0.0.0"
Expand Down Expand Up @@ -84,3 +88,13 @@ func check(message string, err error) {
log.Fatalf("%s: %v", message, err)
}
}

// Extract the port from the endpoint string
func portFromEndpoint(endpoint string) int {
_, strPort, err := net.SplitHostPort(endpoint)
check("cannot extract port from endpoint argument", err);

p, err := strconv.Atoi(strPort);
check("cannot extract port from endpoint argument", err);
return p;
}
1 change: 0 additions & 1 deletion src/cmd/serve.go
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,6 @@ func init() {
"public-e2ee",
"endpoint-relay",
"endpoint-e2ee",
"port",
"allowed",
"ipv4-relay",
"ipv6-relay",
Expand Down