More reasonable cli for access

This commit is contained in:
9seconds
2021-03-13 21:30:57 +03:00
parent 18e3ca77de
commit 37a78bd1c3
6 changed files with 16 additions and 35 deletions
+8 -5
View File
@@ -36,9 +36,12 @@ type accessResponseURLs struct {
type Access struct {
base `kong:"-"`
ConfigPath string `kong:"arg,required,type='existingfile',help='Path to the configuration file.',name='config-path'"` // nolint: lll
Port uint `kong:"help='Port number. Default port is taken from configuration file, bind-to parameter',type:'uint'"` // nolint: lll
Hex bool `kong:"help='Print secret in hex encoding.'"`
PublicIPv4 net.IP `kong:"help='Public IPv4 address for proxy. By default it is resolved via remote website',name='ipv4',short='i'"` // nolint: lll
PublicIPv6 net.IP `kong:"help='Public IPv6 address for proxy. By default it is resolved via remote website',name='ipv6',short='I'"` // nolint: lll
Port uint `kong:"help='Port number. Default port is taken from configuration file, bind-to parameter',type:'uint',short='p'"` // nolint: lll
Hex bool `kong:"help='Print secret in hex encoding.',short='x'"`
ConfigPath string `kong:"arg,required,type='existingfile',help='Path to the configuration file.',name='config-path'"` // nolint: lll
}
func (c *Access) Run(cli *CLI, version string) error {
@@ -60,7 +63,7 @@ func (c *Access) Execute(cli *CLI) error {
go func() {
defer wg.Done()
ip := c.Config.Network.PublicIP.IPv4.Value(nil)
ip := cli.Access.PublicIPv4
if ip == nil {
ip = c.getIP("tcp4")
}
@@ -75,7 +78,7 @@ func (c *Access) Execute(cli *CLI) error {
go func() {
defer wg.Done()
ip := c.Config.Network.PublicIP.IPv6.Value(nil)
ip := cli.Access.PublicIPv6
if ip == nil {
ip = c.getIP("tcp6")
}
+5 -12
View File
@@ -1,6 +1,7 @@
package cli_test
import (
"net"
"net/http"
"testing"
@@ -122,12 +123,8 @@ func (suite *AccessTestSuite) SetupTest() {
}
func (suite *AccessTestSuite) TestGenerateNoCalls() {
suite.NoError(
suite.cli.Access.Config.Network.PublicIP.IPv4.UnmarshalText(
[]byte("10.0.0.10")))
suite.NoError(
suite.cli.Access.Config.Network.PublicIP.IPv6.UnmarshalText(
[]byte("2001:0db8:85a3:0000:0000:8a2e:0370:7334")))
suite.cli.Access.PublicIPv4 = net.ParseIP("10.0.0.10")
suite.cli.Access.PublicIPv6 = net.ParseIP("2001:0db8:85a3:0000:0000:8a2e:0370:7334")
output := suite.CaptureStdout(func() {
suite.NoError(suite.cli.Access.Execute(suite.cli))
@@ -148,9 +145,7 @@ func (suite *AccessTestSuite) TestGenerateNoCalls() {
}
func (suite *AccessTestSuite) TestGenerateIPv4Call() {
suite.NoError(
suite.cli.Access.Config.Network.PublicIP.IPv6.UnmarshalText(
[]byte("2001:0db8:85a3:0000:0000:8a2e:0370:7334")))
suite.cli.Access.PublicIPv6 = net.ParseIP("2001:0db8:85a3:0000:0000:8a2e:0370:7334")
httpmock.RegisterResponder(http.MethodGet, "https://ifconfig.co",
httpmock.NewStringResponder(http.StatusOK, "10.11.12.13"))
@@ -174,9 +169,7 @@ func (suite *AccessTestSuite) TestGenerateIPv4Call() {
}
func (suite *AccessTestSuite) TestIPv4CallFail() {
suite.NoError(
suite.cli.Access.Config.Network.PublicIP.IPv6.UnmarshalText(
[]byte("2001:0db8:85a3:0000:0000:8a2e:0370:7334")))
suite.cli.Access.PublicIPv6 = net.ParseIP("2001:0db8:85a3:0000:0000:8a2e:0370:7334")
httpmock.RegisterResponder(http.MethodGet, "https://ifconfig.co",
httpmock.NewStringResponder(http.StatusForbidden, ""))
+1 -1
View File
@@ -5,5 +5,5 @@ import "github.com/alecthomas/kong"
type CLI struct {
GenerateSecret GenerateSecret `kong:"cmd,help='Generate new proxy secret'"`
Access Access `kong:"cmd,help='Print access information.'"`
Version kong.VersionFlag `kong:"help='Print version.'"`
Version kong.VersionFlag `kong:"help='Print version.',short='v'"`
}
+1 -1
View File
@@ -10,7 +10,7 @@ type GenerateSecret struct {
base `kong:"-"`
HostName string `kong:"arg,required,help='Hostname to use for domain fronting.',name='hostname'"`
Hex bool `kong:"help='Print secret in hex encoding.'"`
Hex bool `kong:"help='Print secret in hex encoding.',short='x'"`
}
func (c *GenerateSecret) Run(cli *CLI, _ string) error {