Skip to content

Commit

Permalink
Merge pull request #15 from 0x1042/update
Browse files Browse the repository at this point in the history
feat: update cli
  • Loading branch information
0x1042 committed Mar 7, 2024
2 parents 898ed17 + 79058c9 commit 12f2341
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 70 deletions.
2 changes: 1 addition & 1 deletion auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ type Authenticator struct {
func NewAuthenticator(secret string) *Authenticator {
digest := sha256.New().Sum([]byte(secret))
return &Authenticator{
hasher: hmac.New(sha256.New, digest[:]),
hasher: hmac.New(sha256.New, digest),
}
}

Expand Down
70 changes: 26 additions & 44 deletions cli.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package main

import (
"time"
"context"

"github.com/rs/zerolog"
"github.com/urfave/cli/v2"
"github.com/urfave/cli/v3"
)

const (
Expand All @@ -13,47 +13,19 @@ const (
envKey = "LT_TOKEN"
)

type (
action = func(*cli.Context) error
)

func newApp(local, server action) *cli.App {
app := cli.NewApp()
app.Name = "localtunnel"
app.Usage = "export local port to public server"

app.Compiled = time.Now()

app.Version = Version + ". build at " + Date

app.Authors = []*cli.Author{
{
Name: "wei.xuan",
Email: "adamweixuan@gmail.com",
},
}

app.Flags = []cli.Flag{
&cli.BoolFlag{
Name: "verbos",
Value: false,
Usage: "verbos log",
Action: func(_ *cli.Context, b bool) error {
UpdateLogger(zerolog.TraceLevel)
return nil
},
func verbos() *cli.BoolFlag {
return &cli.BoolFlag{
Name: "verbos",
Value: false,
Usage: "verbos log",
Action: func(_ context.Context, _ *cli.Command, _ bool) error {
UpdateLogger(zerolog.TraceLevel)
return nil
},
}

app.Commands = []*cli.Command{
newCliCmd(local),
newServCmd(server),
}

return app
}

func newCliCmd(action func(*cli.Context) error) *cli.Command {
func newCliCmd() *cli.Command {
return &cli.Command{
Name: client,
Usage: "start tunnel client",
Expand All @@ -68,7 +40,7 @@ func newCliCmd(action func(*cli.Context) error) *cli.Command {
Name: "secret",
Aliases: []string{"s"},
Usage: "secret",
EnvVars: []string{envKey},
Sources: cli.EnvVars(envKey),
},
&cli.IntFlag{
Name: "local",
Expand All @@ -84,11 +56,17 @@ func newCliCmd(action func(*cli.Context) error) *cli.Command {
DefaultText: "random",
},
},
Action: action,
Action: func(_ context.Context, cmd *cli.Command) error {
local := cmd.Int("local")
remote := cmd.Int("remote")
secret := cmd.String("secret")
tunnel := cmd.String("tunnel")
return StartClient(int(local), int(remote), secret, tunnel)
},
}
}

func newServCmd(action func(*cli.Context) error) *cli.Command {
func newServCmd() *cli.Command {
return &cli.Command{
Name: server,
Usage: "start tunnel server",
Expand All @@ -102,10 +80,14 @@ func newServCmd(action func(*cli.Context) error) *cli.Command {
&cli.StringFlag{
Name: "secret",
Aliases: []string{"s"},
EnvVars: []string{envKey},
Sources: cli.EnvVars(envKey),
Usage: "secret",
},
},
Action: action,
Action: func(_ context.Context, cmd *cli.Command) error {
port := cmd.Int("port")
secret := cmd.String("secret")
return StartServer(int(port), secret)
},
}
}
29 changes: 17 additions & 12 deletions cmd.go
Original file line number Diff line number Diff line change
@@ -1,31 +1,36 @@
package main

import (
"context"
"os"

"github.com/google/uuid"
"github.com/rs/zerolog/log"
"github.com/urfave/cli/v2"
"github.com/urfave/cli/v3"
)

func main() {
uuid.EnableRandPool()

local := func(ctx *cli.Context) error {
local := ctx.Int("local")
remote := ctx.Int("remote")
tunnel := ctx.String("tunnel")
secret := ctx.String("secret")
return StartClient(local, remote, secret, tunnel)
app := cli.Command{}
app.Name = "localtunnel"
app.Usage = "export local port to public server"
app.Version = Version + ". build at " + Date

app.Flags = []cli.Flag{verbos()}

app.Commands = []*cli.Command{
newCliCmd(),
newServCmd(),
}

server := func(ctx *cli.Context) error {
port := ctx.Int("port")
secret := ctx.String("secret")
return StartServer(port, secret)
app.Action = func(ctx context.Context, cmd *cli.Command) error {
cli.DefaultAppComplete(ctx, cmd)
cli.ShowVersion(cmd)
return nil
}

if err := newApp(local, server).Run(os.Args); err != nil {
if err := app.Run(context.Background(), os.Args); err != nil {
log.Fatal().Err(err).Msg("start error.")
}
}
6 changes: 2 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,12 @@ go 1.22
require (
github.com/google/uuid v1.6.0
github.com/rs/zerolog v1.32.0
github.com/urfave/cli/v2 v2.27.1
github.com/urfave/cli/v3 v3.0.0-alpha9
)

require (
github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/xrash/smetrics v0.0.0-20231213231151-1d8dd44e695e // indirect
golang.org/x/sys v0.17.0 // indirect
golang.org/x/sys v0.18.0 // indirect
)
20 changes: 12 additions & 8 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM=
github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
Expand All @@ -11,17 +11,21 @@ github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0=
github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/urfave/cli/v2 v2.27.1 h1:8xSQ6szndafKVRmfyeUMxkNUJQMjL1F2zmsZ+qHpfho=
github.com/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/urfave/cli/v3 v3.0.0-alpha9 h1:P0RMy5fQm1AslQS+XCmy9UknDXctOmG/q/FZkUFnJSo=
github.com/urfave/cli/v3 v3.0.0-alpha9/go.mod h1:0kK/RUFHyh+yIKSfWxwheGndfnrvYSmYFVeKCh03ZUc=
github.com/xrash/smetrics v0.0.0-20231213231151-1d8dd44e695e h1:+SOyEddqYF09QP7vr7CgJ1eti3pY9Fn3LHO1M1r/0sI=
github.com/xrash/smetrics v0.0.0-20231213231151-1d8dd44e695e/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
2 changes: 1 addition & 1 deletion server.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ func (svr *Server) handleHello(stream *net.TCPConn) error {
realPort := ln.Addr().(*net.TCPAddr).Port
packet := helloPacket(uint16(realPort))

log.Info().Int("port", realPort).Msg("mapping port.")
log.Info().Int("port", realPort).Str("remote", stream.RemoteAddr().String()).Msg("mapping port.")

if _, err := stream.Write(packet); err != nil {
log.Error().Err(err).Msg("write hello message error")
Expand Down

0 comments on commit 12f2341

Please sign in to comment.