mirror of
https://github.com/psviderski/uncloud.git
synced 2026-08-26 11:03:34 +00:00
feat: allow to customise WireGuard listen port with --wg-port for machine init/add (#366)
This commit is contained in:
@@ -29,6 +29,7 @@ type addOptions struct {
|
||||
sshKey string
|
||||
version string
|
||||
wgEndpoints []string
|
||||
wgPort int
|
||||
yes bool
|
||||
}
|
||||
|
||||
@@ -96,13 +97,17 @@ Connection methods:
|
||||
)
|
||||
cmd.Flags().StringSliceVar(
|
||||
&opts.wgEndpoints, "wg-endpoint", nil,
|
||||
fmt.Sprintf("WireGuard endpoint address that other machines in the cluster should use to establish "+
|
||||
"WireGuard endpoint address that other machines in the cluster should use to establish "+
|
||||
"WireGuard connections\n"+
|
||||
"to this machine. This doesn't change the address/port WireGuard listens on the machine.\n"+
|
||||
"Format: IP, IP:PORT, IPv6, or [IPv6]:PORT. Default port is %d if omitted.\n", network.WireGuardPort)+
|
||||
"Format: IP, IP:PORT, IPv6, or [IPv6]:PORT. Default port is the value of --wg-port if omitted.\n"+
|
||||
"Multiple endpoints can be specified by repeating the flag or using a comma-separated list.\n"+
|
||||
"Defaults to the auto-detected public and routable machine IPs.",
|
||||
)
|
||||
cmd.Flags().IntVar(
|
||||
&opts.wgPort, "wg-port", network.DefaultWireGuardPort,
|
||||
"UDP port WireGuard listens on for incoming connections from other machines.",
|
||||
)
|
||||
cmd.Flags().BoolVarP(&opts.yes, "yes", "y", false,
|
||||
"Auto-confirm prompts (e.g., resetting an already initialised machine).\n"+
|
||||
"Should be explicitly set when running non-interactively, e.g., in CI/CD pipelines. [$UNCLOUD_AUTO_CONFIRM]")
|
||||
@@ -125,17 +130,21 @@ func add(ctx context.Context, uncli *cli.CLI, remoteMachine *cli.RemoteMachine,
|
||||
publicIP = &ip
|
||||
}
|
||||
|
||||
if opts.wgPort < 1 || opts.wgPort > 65535 {
|
||||
return fmt.Errorf("invalid WireGuard port %d: must be between 1 and 65535", opts.wgPort)
|
||||
}
|
||||
addOpts := cli.AddMachineOptions{
|
||||
MachineName: opts.name,
|
||||
PublicIP: publicIP,
|
||||
RemoteMachine: remoteMachine,
|
||||
SkipInstall: opts.noInstall,
|
||||
Version: opts.version,
|
||||
WireguardPort: opts.wgPort,
|
||||
AutoConfirm: opts.yes,
|
||||
}
|
||||
if len(opts.wgEndpoints) > 0 {
|
||||
expanded := cli.ExpandCommaSeparatedValues(opts.wgEndpoints)
|
||||
endpoints, err := cli.ParseWireGuardEndpoints(expanded)
|
||||
endpoints, err := cli.ParseWireGuardEndpoints(expanded, uint16(opts.wgPort))
|
||||
if err != nil {
|
||||
return fmt.Errorf("parse WireGuard endpoint (--wg-endpoint): %w", err)
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ type initOptions struct {
|
||||
sshKey string
|
||||
version string
|
||||
wgEndpoints []string
|
||||
wgPort int
|
||||
yes bool
|
||||
}
|
||||
|
||||
@@ -135,13 +136,17 @@ Connection methods:
|
||||
)
|
||||
cmd.Flags().StringSliceVar(
|
||||
&opts.wgEndpoints, "wg-endpoint", nil,
|
||||
fmt.Sprintf("WireGuard endpoint address that other machines in the cluster should use to establish "+
|
||||
"WireGuard endpoint address that other machines in the cluster should use to establish "+
|
||||
"WireGuard connections\n"+
|
||||
"to this machine. This doesn't change the address/port WireGuard listens on the machine.\n"+
|
||||
"Format: IP, IP:PORT, IPv6, or [IPv6]:PORT. Default port is %d if omitted.\n", network.WireGuardPort)+
|
||||
"Format: IP, IP:PORT, IPv6, or [IPv6]:PORT. Default port is the value of --wg-port if omitted.\n"+
|
||||
"Multiple endpoints can be specified by repeating the flag or using a comma-separated list.\n"+
|
||||
"Defaults to the auto-detected public and routable machine IPs.",
|
||||
)
|
||||
cmd.Flags().IntVar(
|
||||
&opts.wgPort, "wg-port", network.DefaultWireGuardPort,
|
||||
"UDP port WireGuard listens on for incoming connections from other machines.",
|
||||
)
|
||||
cmd.Flags().BoolVarP(&opts.yes, "yes", "y", false,
|
||||
"Auto-confirm prompts (e.g., resetting an already initialised machine).\n"+
|
||||
"Should be explicitly set when running non-interactively, e.g., in CI/CD pipelines. [$UNCLOUD_AUTO_CONFIRM]")
|
||||
@@ -178,6 +183,9 @@ func initCluster(ctx context.Context, uncli *cli.CLI, remoteMachine *cli.RemoteM
|
||||
}
|
||||
publicIP = &ip
|
||||
}
|
||||
if opts.wgPort < 1 || opts.wgPort > 65535 {
|
||||
return fmt.Errorf("invalid WireGuard port %d: must be between 1 and 65535", opts.wgPort)
|
||||
}
|
||||
initOpts := cli.InitClusterOptions{
|
||||
Context: opts.context,
|
||||
MachineName: opts.name,
|
||||
@@ -186,11 +194,12 @@ func initCluster(ctx context.Context, uncli *cli.CLI, remoteMachine *cli.RemoteM
|
||||
RemoteMachine: remoteMachine,
|
||||
SkipInstall: opts.noInstall,
|
||||
Version: opts.version,
|
||||
WireguardPort: opts.wgPort,
|
||||
AutoConfirm: opts.yes,
|
||||
}
|
||||
if len(opts.wgEndpoints) > 0 {
|
||||
expanded := cli.ExpandCommaSeparatedValues(opts.wgEndpoints)
|
||||
endpoints, err := cli.ParseWireGuardEndpoints(expanded)
|
||||
endpoints, err := cli.ParseWireGuardEndpoints(expanded, uint16(opts.wgPort))
|
||||
if err != nil {
|
||||
return fmt.Errorf("parse WireGuard endpoint (--wg-endpoint): %w", err)
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ At least one flag must be specified to perform an update.`,
|
||||
fmt.Sprintf("WireGuard endpoint address that other machines in the cluster should use to establish "+
|
||||
"WireGuard connections\n"+
|
||||
"to this machine. This doesn't change the address/port WireGuard listens on the machine.\n"+
|
||||
"Format: IP, IP:PORT, IPv6, or [IPv6]:PORT. Default port is %d if omitted.\n", network.WireGuardPort)+
|
||||
"Format: IP, IP:PORT, IPv6, or [IPv6]:PORT. Default port is %d if omitted.\n", network.DefaultWireGuardPort)+
|
||||
"Multiple endpoints can be specified by repeating the flag or using a comma-separated list.",
|
||||
)
|
||||
|
||||
@@ -121,7 +121,7 @@ func update(ctx context.Context, uncli *cli.CLI, cmd *cobra.Command, opts update
|
||||
// Parse and set endpoints if the flag was explicitly provided.
|
||||
if cmd.Flags().Changed("wg-endpoint") {
|
||||
expanded := cli.ExpandCommaSeparatedValues(opts.wgEndpoints)
|
||||
endpoints, err := cli.ParseWireGuardEndpoints(expanded)
|
||||
endpoints, err := cli.ParseWireGuardEndpoints(expanded, network.DefaultWireGuardPort)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user