From 388b5cc7d8a19a37474f5ec5e37bf3d1b481c8b4 Mon Sep 17 00:00:00 2001 From: libvoid <135131094+libvoid@users.noreply.github.com> Date: Mon, 17 Jul 2023 17:21:55 +0200 Subject: [PATCH] chore: fix linter findings Notable change : remove deprecated and unneeded rand.Seed() No longer required since Go 1.20 https://stackoverflow.com/questions/12321133/how-to-properly-seed-random-number-generator/74077488#74077488 --- internal/tools/tools.go | 4 +--- main.go | 4 ---- pkg/bastion/dbinit.go | 4 ++-- pkg/bastion/logtunnel.go | 2 +- pkg/bastion/session.go | 5 ++--- pkg/bastion/shell.go | 8 ++++---- pkg/bastion/ssh.go | 4 ++-- pkg/bastion/telnet.go | 2 +- server.go | 6 +++--- testserver.go | 2 +- testserver_unsupported.go | 1 + 11 files changed, 18 insertions(+), 24 deletions(-) diff --git a/internal/tools/tools.go b/internal/tools/tools.go index 1a9e9cc5..0a8dae31 100644 --- a/internal/tools/tools.go +++ b/internal/tools/tools.go @@ -1,11 +1,9 @@ +//go:build tools // +build tools package tools import ( - // required by depaware - _ "github.com/tailscale/depaware/depaware" - // required by goimports _ "golang.org/x/tools/cover" ) diff --git a/main.go b/main.go index 630bddad..558a3068 100644 --- a/main.go +++ b/main.go @@ -2,12 +2,10 @@ package main // import "moul.io/sshportal" import ( "log" - "math/rand" "os" "path" "github.com/urfave/cli" - "moul.io/srand" ) var ( @@ -18,8 +16,6 @@ var ( ) func main() { - rand.Seed(srand.MustSecure()) - app := cli.NewApp() app.Name = path.Base(os.Args[0]) app.Author = "Manfred Touron" diff --git a/pkg/bastion/dbinit.go b/pkg/bastion/dbinit.go index c47468d4..45f553aa 100644 --- a/pkg/bastion/dbinit.go +++ b/pkg/bastion/dbinit.go @@ -3,7 +3,7 @@ package bastion // import "moul.io/sshportal/pkg/bastion" import ( "crypto/rand" "fmt" - "io/ioutil" + "io" "log" "math/big" "os" @@ -19,7 +19,7 @@ import ( ) func DBInit(db *gorm.DB) error { - log.SetOutput(ioutil.Discard) + log.SetOutput(io.Discard) log.SetOutput(os.Stderr) m := gormigrate.New(db, gormigrate.DefaultOptions, []*gormigrate.Migration{ diff --git a/pkg/bastion/logtunnel.go b/pkg/bastion/logtunnel.go index 72de807d..c0012c2d 100644 --- a/pkg/bastion/logtunnel.go +++ b/pkg/bastion/logtunnel.go @@ -48,7 +48,7 @@ func newLogTunnel(channel ssh.Channel, writer io.WriteCloser, host string) io.Re } } -func (l *logTunnel) Read(data []byte) (int, error) { +func (l *logTunnel) Read(_ []byte) (int, error) { return 0, errors.New("logTunnel.Read is not implemented") } diff --git a/pkg/bastion/session.go b/pkg/bastion/session.go index 0d1fd243..c8ccaee4 100644 --- a/pkg/bastion/session.go +++ b/pkg/bastion/session.go @@ -3,7 +3,6 @@ package bastion // import "moul.io/sshportal/pkg/bastion" import ( "fmt" "io" - "io/ioutil" "log" "os" "path/filepath" @@ -129,7 +128,7 @@ func pipe(lreqs, rreqs <-chan *gossh.Request, lch, rch gossh.Channel, sessConfig quit := make(chan string, 1) channeltype := newChan.ChannelType() - var logWriter io.WriteCloser = newDiscardWriteCloser() + var logWriter = newDiscardWriteCloser() if sessConfig.LoggingMode != "disabled" { filename := filepath.Join(sessConfig.LogsLocation, fmt.Sprintf("%s-%s-%s-%d-%s", user, username, channeltype, sessionID, time.Now().Format(time.RFC3339))) f, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0440) @@ -253,7 +252,7 @@ func pipe(lreqs, rreqs <-chan *gossh.Request, lch, rch gossh.Channel, sessConfig } } -func newDiscardWriteCloser() io.WriteCloser { return &discardWriteCloser{ioutil.Discard} } +func newDiscardWriteCloser() io.WriteCloser { return &discardWriteCloser{io.Discard} } type discardWriteCloser struct { io.Writer diff --git a/pkg/bastion/shell.go b/pkg/bastion/shell.go index d3c70813..ce8733fc 100644 --- a/pkg/bastion/shell.go +++ b/pkg/bastion/shell.go @@ -1632,12 +1632,12 @@ GLOBAL OPTIONS: if err := myself.CheckRoles([]string{"admin"}); err != nil { return err } - + var users []*dbmodels.User if err := dbmodels.UsersByIdentifiers(db, c.Args()).Find(&users).Error; err != nil { return err } - + for _, user := range users { if err := db.Model(&dbmodels.Session{}).Where(&dbmodels.Session{User: user, Status: string(dbmodels.SessionStatusActive)}).Update("status", "closed").Error; err != nil { return err @@ -1657,12 +1657,12 @@ GLOBAL OPTIONS: if err := myself.CheckRoles([]string{"admin"}); err != nil { return err } - + var users []*dbmodels.User if err := dbmodels.UsersByIdentifiers(db, c.Args()).Find(&users).Error; err != nil { return err } - + for _, user := range users { if err := db.Where("user_id = ?", user.ID).Delete(&dbmodels.UserKey{}).Error; err != nil { return err diff --git a/pkg/bastion/ssh.go b/pkg/bastion/ssh.go index 3f9559dd..06991b87 100644 --- a/pkg/bastion/ssh.go +++ b/pkg/bastion/ssh.go @@ -169,7 +169,7 @@ func ChannelHandler(srv *ssh.Server, conn *gossh.ServerConn, newChan gossh.NewCh _ = ch.Close() return } - go func(cnx *gossh.ServerConn, dbConn *gorm.DB, sessionID uint) { + go func(_ *gossh.ServerConn, dbConn *gorm.DB, sessionID uint) { for { sess := dbmodels.Session{Model: gorm.Model{ID: sessionID}, Status: string(dbmodels.SessionStatusActive)} if err := dbConn.First(&sess).Error; err != nil || sess.Status != string(dbmodels.SessionStatusActive) { @@ -222,7 +222,7 @@ func bastionClientConfig(ctx ssh.Context, host *dbmodels.Host) (*gossh.ClientCon crypto.HostDecrypt(actx.aesKey, host) if host.SSHKey != nil { - crypto.SSHKeyDecrypt(actx.aesKey, host.SSHKey) + crypto.SSHKeyDecrypt(actx.aesKey, host.SSHKey) } clientConfig, err := host.ClientConfig(dynamicHostKey(actx.db, host)) diff --git a/pkg/bastion/telnet.go b/pkg/bastion/telnet.go index 40b2863a..525d8116 100644 --- a/pkg/bastion/telnet.go +++ b/pkg/bastion/telnet.go @@ -18,7 +18,7 @@ type bastionTelnetCaller struct { ssh ssh.Session } -func (caller bastionTelnetCaller) CallTELNET(ctx telnet.Context, w telnet.Writer, r telnet.Reader) { +func (caller bastionTelnetCaller) CallTELNET(_ telnet.Context, w telnet.Writer, r telnet.Reader) { go func(writer io.Writer, reader io.Reader) { var buffer [1]byte // Seems like the length of the buffer needs to be small, otherwise will have to wait for buffer to fill up. p := buffer[:] diff --git a/server.go b/server.go index c84ee2a4..3626d44e 100644 --- a/server.go +++ b/server.go @@ -98,11 +98,11 @@ func server(c *serverConfig) (err error) { }() if err = sqlDB.Ping(); err != nil { - return + return err } if err = bastion.DBInit(db); err != nil { - return + return err } // create TCP listening socket @@ -115,7 +115,7 @@ func server(c *serverConfig) (err error) { srv := &ssh.Server{ Addr: c.bindAddr, Handler: func(s ssh.Session) { bastion.ShellHandler(s, GitTag, GitSha, GitTag) }, // ssh.Server.Handler is the handler for the DefaultSessionHandler - Version: fmt.Sprintf("sshportal"), + Version: "sshportal", ChannelHandlers: map[string]ssh.ChannelHandler{ "default": bastion.ChannelHandler, }, diff --git a/testserver.go b/testserver.go index bd685cb3..c67d8cc5 100644 --- a/testserver.go +++ b/testserver.go @@ -18,7 +18,7 @@ import ( ) // testServer is an hidden handler used for integration tests -func testServer(c *cli.Context) error { +func testServer(_ *cli.Context) error { ssh.Handle(func(s ssh.Session) { helloMsg := struct { User string diff --git a/testserver_unsupported.go b/testserver_unsupported.go index 0f503cf6..f6b4ca43 100644 --- a/testserver_unsupported.go +++ b/testserver_unsupported.go @@ -1,3 +1,4 @@ +//go:build windows // +build windows package main