diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml new file mode 100644 index 0000000..a3a4a90 --- /dev/null +++ b/.github/workflows/golangci-lint.yml @@ -0,0 +1,21 @@ +name: golangci-lint +on: + push: + tags: + - v* + branches: + - master + - be-* + - dev + pull_request: +jobs: + golangci: + name: lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: golangci-lint + uses: golangci/golangci-lint-action@v2 + with: + # Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version + version: v1.29 \ No newline at end of file diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..fe27639 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,26 @@ +linters-settings: + goimports: + local-prefixes: uqingtech.com + +linters: + disable-all: true + enable: + - deadcode + - errcheck + - gofmt + - goimports + - gosimple + - govet + - ineffassign + - staticcheck + - structcheck + - typecheck + - unused + - varcheck + +run: + skip-dirs: + - api/ + - module/ + skip-files: + - test_ssh.go diff --git a/go.mod b/go.mod index db596f1..dedeb70 100644 --- a/go.mod +++ b/go.mod @@ -10,6 +10,7 @@ require ( github.com/labstack/echo/v4 v4.1.17 github.com/labstack/gommon v0.3.0 github.com/patrickmn/go-cache v2.1.0+incompatible + github.com/pkg/errors v0.9.1 github.com/pkg/sftp v1.12.0 github.com/pquerna/otp v1.3.0 github.com/robfig/cron/v3 v3.0.1 diff --git a/main.go b/main.go index 939dd7a..d782322 100644 --- a/main.go +++ b/main.go @@ -3,6 +3,20 @@ package main import ( "bytes" "fmt" + "io" + "os" + "strconv" + "strings" + "time" + + "next-terminal/pkg/api" + "next-terminal/pkg/config" + "next-terminal/pkg/constant" + "next-terminal/pkg/global" + "next-terminal/pkg/handle" + "next-terminal/pkg/model" + "next-terminal/pkg/utils" + nested "github.com/antonfisher/nested-logrus-formatter" "github.com/labstack/gommon/log" "github.com/patrickmn/go-cache" @@ -12,18 +26,6 @@ import ( "gorm.io/driver/sqlite" "gorm.io/gorm" "gorm.io/gorm/logger" - "io" - "next-terminal/pkg/api" - "next-terminal/pkg/config" - "next-terminal/pkg/constant" - "next-terminal/pkg/global" - "next-terminal/pkg/handle" - "next-terminal/pkg/model" - "next-terminal/pkg/utils" - "os" - "strconv" - "strings" - "time" ) const Version = "v0.3.3" @@ -227,7 +229,7 @@ func Run() error { if err != nil { return err } - if jobs == nil || len(jobs) == 0 { + if jobs == nil { job := model.Job{ ID: utils.UUID(), Name: "资产状态检测", diff --git a/pkg/api/account.go b/pkg/api/account.go index 05c7b27..0059088 100644 --- a/pkg/api/account.go +++ b/pkg/api/account.go @@ -1,12 +1,13 @@ package api import ( + "strings" + "time" + "next-terminal/pkg/global" "next-terminal/pkg/model" "next-terminal/pkg/totp" "next-terminal/pkg/utils" - "strings" - "time" "github.com/labstack/echo/v4" ) diff --git a/pkg/api/asset.go b/pkg/api/asset.go index 0c8b77b..adb854e 100644 --- a/pkg/api/asset.go +++ b/pkg/api/asset.go @@ -5,12 +5,14 @@ import ( "encoding/csv" "encoding/json" "errors" - "github.com/labstack/echo/v4" + "strconv" + "strings" + "next-terminal/pkg/constant" "next-terminal/pkg/model" "next-terminal/pkg/utils" - "strconv" - "strings" + + "github.com/labstack/echo/v4" ) func AssetCreateEndpoint(c echo.Context) error { diff --git a/pkg/api/command.go b/pkg/api/command.go index 78ba421..0beb161 100644 --- a/pkg/api/command.go +++ b/pkg/api/command.go @@ -2,11 +2,13 @@ package api import ( "errors" - "github.com/labstack/echo/v4" - "next-terminal/pkg/model" - "next-terminal/pkg/utils" "strconv" "strings" + + "next-terminal/pkg/model" + "next-terminal/pkg/utils" + + "github.com/labstack/echo/v4" ) func CommandCreateEndpoint(c echo.Context) error { diff --git a/pkg/api/credential.go b/pkg/api/credential.go index f2ee42b..de59b44 100644 --- a/pkg/api/credential.go +++ b/pkg/api/credential.go @@ -2,12 +2,14 @@ package api import ( "errors" - "github.com/labstack/echo/v4" + "strconv" + "strings" + "next-terminal/pkg/constant" "next-terminal/pkg/model" "next-terminal/pkg/utils" - "strconv" - "strings" + + "github.com/labstack/echo/v4" ) func CredentialAllEndpoint(c echo.Context) error { diff --git a/pkg/api/job.go b/pkg/api/job.go index 7a406af..23c6a25 100644 --- a/pkg/api/job.go +++ b/pkg/api/job.go @@ -1,11 +1,13 @@ package api import ( - "github.com/labstack/echo/v4" - "next-terminal/pkg/model" - "next-terminal/pkg/utils" "strconv" "strings" + + "next-terminal/pkg/model" + "next-terminal/pkg/utils" + + "github.com/labstack/echo/v4" ) func JobCreateEndpoint(c echo.Context) error { diff --git a/pkg/api/login-log.go b/pkg/api/login-log.go index a50c39e..b94c4a3 100644 --- a/pkg/api/login-log.go +++ b/pkg/api/login-log.go @@ -1,11 +1,14 @@ package api import ( - "github.com/labstack/echo/v4" - "next-terminal/pkg/global" - "next-terminal/pkg/model" "strconv" "strings" + + "next-terminal/pkg/global" + "next-terminal/pkg/model" + + "github.com/labstack/echo/v4" + "github.com/sirupsen/logrus" ) func LoginLogPagingEndpoint(c echo.Context) error { @@ -32,7 +35,9 @@ func LoginLogDeleteEndpoint(c echo.Context) error { for i := range split { token := split[i] global.Cache.Delete(token) - model.Logout(token) + if err := model.Logout(token); err != nil { + logrus.WithError(err).Error("Cache Delete Failed") + } } if err := model.DeleteLoginLogByIdIn(split); err != nil { return err diff --git a/pkg/api/middleware.go b/pkg/api/middleware.go index 55d4635..8ce00b0 100644 --- a/pkg/api/middleware.go +++ b/pkg/api/middleware.go @@ -2,14 +2,16 @@ package api import ( "fmt" - "github.com/labstack/echo/v4" "net" - "next-terminal/pkg/constant" - "next-terminal/pkg/global" - "next-terminal/pkg/utils" "regexp" "strings" "time" + + "next-terminal/pkg/constant" + "next-terminal/pkg/global" + "next-terminal/pkg/utils" + + "github.com/labstack/echo/v4" ) func ErrorHandler(next echo.HandlerFunc) echo.HandlerFunc { diff --git a/pkg/api/overview.go b/pkg/api/overview.go index 174a6a7..8c6d9f4 100644 --- a/pkg/api/overview.go +++ b/pkg/api/overview.go @@ -1,9 +1,10 @@ package api import ( - "github.com/labstack/echo/v4" "next-terminal/pkg/constant" "next-terminal/pkg/model" + + "github.com/labstack/echo/v4" ) type Counter struct { diff --git a/pkg/api/property.go b/pkg/api/property.go index a7bfaba..6608d88 100644 --- a/pkg/api/property.go +++ b/pkg/api/property.go @@ -3,9 +3,11 @@ package api import ( "errors" "fmt" + + "next-terminal/pkg/model" + "github.com/labstack/echo/v4" "gorm.io/gorm" - "next-terminal/pkg/model" ) func PropertyGetEndpoint(c echo.Context) error { diff --git a/pkg/api/resource-sharer.go b/pkg/api/resource-sharer.go index da4551a..0a416ec 100644 --- a/pkg/api/resource-sharer.go +++ b/pkg/api/resource-sharer.go @@ -1,8 +1,9 @@ package api import ( - "github.com/labstack/echo/v4" "next-terminal/pkg/model" + + "github.com/labstack/echo/v4" ) type RU struct { diff --git a/pkg/api/routes.go b/pkg/api/routes.go index b81396f..09a8590 100644 --- a/pkg/api/routes.go +++ b/pkg/api/routes.go @@ -2,6 +2,7 @@ package api import ( "net/http" + "next-terminal/pkg/constant" "next-terminal/pkg/global" "next-terminal/pkg/log" diff --git a/pkg/api/security.go b/pkg/api/security.go index 23dccfc..52fe8aa 100644 --- a/pkg/api/security.go +++ b/pkg/api/security.go @@ -1,12 +1,14 @@ package api import ( - "github.com/labstack/echo/v4" + "strconv" + "strings" + "next-terminal/pkg/global" "next-terminal/pkg/model" "next-terminal/pkg/utils" - "strconv" - "strings" + + "github.com/labstack/echo/v4" ) func SecurityCreateEndpoint(c echo.Context) error { @@ -33,7 +35,7 @@ func ReloadAccessSecurity() error { if err != nil { return err } - if rules != nil && len(rules) > 0 { + if rules != nil { var securities []*global.Security for i := 0; i < len(rules); i++ { rule := global.Security{ diff --git a/pkg/api/session.go b/pkg/api/session.go index dad4282..469ca5a 100644 --- a/pkg/api/session.go +++ b/pkg/api/session.go @@ -4,21 +4,23 @@ import ( "bytes" "errors" "fmt" - "github.com/labstack/echo/v4" - "github.com/pkg/sftp" - "github.com/sirupsen/logrus" "io" "io/ioutil" "net/http" - "next-terminal/pkg/constant" - "next-terminal/pkg/global" - "next-terminal/pkg/model" - "next-terminal/pkg/utils" "os" "path" "strconv" "strings" "sync" + + "next-terminal/pkg/constant" + "next-terminal/pkg/global" + "next-terminal/pkg/model" + "next-terminal/pkg/utils" + + "github.com/labstack/echo/v4" + "github.com/pkg/sftp" + "github.com/sirupsen/logrus" ) func SessionPagingEndpoint(c echo.Context) error { diff --git a/pkg/api/ssh.go b/pkg/api/ssh.go index f7641e1..50e112a 100644 --- a/pkg/api/ssh.go +++ b/pkg/api/ssh.go @@ -2,19 +2,21 @@ package api import ( "encoding/json" - "github.com/gorilla/websocket" - "github.com/labstack/echo/v4" - "github.com/sirupsen/logrus" "net/http" + "path" + "strconv" + "time" + "next-terminal/pkg/constant" "next-terminal/pkg/global" "next-terminal/pkg/guacd" "next-terminal/pkg/model" "next-terminal/pkg/term" "next-terminal/pkg/utils" - "path" - "strconv" - "time" + + "github.com/gorilla/websocket" + "github.com/labstack/echo/v4" + "github.com/sirupsen/logrus" ) var UpGrader = websocket.Upgrader{ diff --git a/pkg/api/tunnel.go b/pkg/api/tunnel.go index ea8788c..dd43161 100644 --- a/pkg/api/tunnel.go +++ b/pkg/api/tunnel.go @@ -2,15 +2,17 @@ package api import ( "errors" - "github.com/gorilla/websocket" - "github.com/labstack/echo/v4" - "github.com/sirupsen/logrus" + "path" + "strconv" + "next-terminal/pkg/constant" "next-terminal/pkg/global" "next-terminal/pkg/guacd" "next-terminal/pkg/model" - "path" - "strconv" + + "github.com/gorilla/websocket" + "github.com/labstack/echo/v4" + "github.com/sirupsen/logrus" ) const ( @@ -98,7 +100,6 @@ func TunEndpoint(c echo.Context) error { configuration.SetParameter(guacd.DisableBitmapCaching, propertyMap[guacd.DisableBitmapCaching]) configuration.SetParameter(guacd.DisableOffscreenCaching, propertyMap[guacd.DisableOffscreenCaching]) configuration.SetParameter(guacd.DisableGlyphCaching, propertyMap[guacd.DisableGlyphCaching]) - break case "ssh": if len(session.PrivateKey) > 0 && session.PrivateKey != "-" { configuration.SetParameter("username", session.Username) @@ -114,11 +115,9 @@ func TunEndpoint(c echo.Context) error { configuration.SetParameter(guacd.ColorScheme, propertyMap[guacd.ColorScheme]) configuration.SetParameter(guacd.Backspace, propertyMap[guacd.Backspace]) configuration.SetParameter(guacd.TerminalType, propertyMap[guacd.TerminalType]) - break case "vnc": configuration.SetParameter("username", session.Username) configuration.SetParameter("password", session.Password) - break case "telnet": configuration.SetParameter("username", session.Username) configuration.SetParameter("password", session.Password) @@ -128,7 +127,6 @@ func TunEndpoint(c echo.Context) error { configuration.SetParameter(guacd.ColorScheme, propertyMap[guacd.ColorScheme]) configuration.SetParameter(guacd.Backspace, propertyMap[guacd.Backspace]) configuration.SetParameter(guacd.TerminalType, propertyMap[guacd.TerminalType]) - break case "kubernetes": configuration.SetParameter(guacd.FontSize, propertyMap[guacd.FontSize]) @@ -136,6 +134,9 @@ func TunEndpoint(c echo.Context) error { configuration.SetParameter(guacd.ColorScheme, propertyMap[guacd.ColorScheme]) configuration.SetParameter(guacd.Backspace, propertyMap[guacd.Backspace]) configuration.SetParameter(guacd.TerminalType, propertyMap[guacd.TerminalType]) + default: + logrus.WithField("configuration.Protocol", configuration.Protocol).Error("UnSupport Protocol") + return Fail(c, 400, "不支持的协议") } configuration.SetParameter("hostname", session.IP) @@ -209,7 +210,7 @@ func TunEndpoint(c echo.Context) error { } go func() { - for true { + for { instruction, err := tunnel.Read() if err != nil { if connectionId == "" { @@ -230,7 +231,7 @@ func TunEndpoint(c echo.Context) error { } }() - for true { + for { _, message, err := ws.ReadMessage() if err != nil { if connectionId == "" { diff --git a/pkg/api/user-group.go b/pkg/api/user-group.go index 5d9e840..f20ba91 100644 --- a/pkg/api/user-group.go +++ b/pkg/api/user-group.go @@ -1,12 +1,14 @@ package api import ( - "github.com/labstack/echo/v4" + "strconv" + "strings" + "next-terminal/pkg/global" "next-terminal/pkg/model" "next-terminal/pkg/utils" - "strconv" - "strings" + + "github.com/labstack/echo/v4" ) type UserGroup struct { diff --git a/pkg/api/user.go b/pkg/api/user.go index 157c2cf..4e3c863 100644 --- a/pkg/api/user.go +++ b/pkg/api/user.go @@ -1,12 +1,15 @@ package api import ( - "github.com/labstack/echo/v4" + "strconv" + "strings" + "next-terminal/pkg/global" "next-terminal/pkg/model" "next-terminal/pkg/utils" - "strconv" - "strings" + + "github.com/labstack/echo/v4" + "github.com/sirupsen/logrus" ) func UserCreateEndpoint(c echo.Context) error { @@ -87,12 +90,15 @@ func UserDeleteEndpoint(c echo.Context) error { if err != nil { return err } - if loginLogs != nil && len(loginLogs) > 0 { - for j := range loginLogs { - global.Cache.Delete(loginLogs[j].ID) - model.Logout(loginLogs[j].ID) + + for j := range loginLogs { + global.Cache.Delete(loginLogs[j].ID) + if err := model.Logout(loginLogs[j].ID); err != nil { + logrus.WithError(err).WithField("id:", loginLogs[j].ID).Error("Cache Deleted Error") + return Fail(c, 500, "强制下线错误") } } + // 删除用户 model.DeleteUserById(userId) } diff --git a/pkg/config/config.go b/pkg/config/config.go index ec37f6a..4cc2029 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -1,9 +1,10 @@ package config import ( - "github.com/spf13/pflag" "strings" + "github.com/spf13/pflag" + "github.com/spf13/viper" ) diff --git a/pkg/global/global.go b/pkg/global/global.go index 95d9ee0..f348b42 100644 --- a/pkg/global/global.go +++ b/pkg/global/global.go @@ -1,10 +1,11 @@ package global import ( + "next-terminal/pkg/config" + "github.com/patrickmn/go-cache" "github.com/robfig/cron/v3" "gorm.io/gorm" - "next-terminal/pkg/config" ) var DB *gorm.DB diff --git a/pkg/global/store.go b/pkg/global/store.go index 6e91a7b..c2f66dc 100644 --- a/pkg/global/store.go +++ b/pkg/global/store.go @@ -1,11 +1,13 @@ package global import ( - "github.com/gorilla/websocket" - "next-terminal/pkg/guacd" - "next-terminal/pkg/term" "strconv" "sync" + + "next-terminal/pkg/guacd" + "next-terminal/pkg/term" + + "github.com/gorilla/websocket" ) type Tun struct { diff --git a/pkg/handle/runner.go b/pkg/handle/runner.go index f9ae0c9..e6f3fc7 100644 --- a/pkg/handle/runner.go +++ b/pkg/handle/runner.go @@ -1,14 +1,16 @@ package handle import ( - "github.com/sirupsen/logrus" + "os" + "strconv" + "time" + "next-terminal/pkg/constant" "next-terminal/pkg/guacd" "next-terminal/pkg/model" "next-terminal/pkg/utils" - "os" - "strconv" - "time" + + "github.com/sirupsen/logrus" ) func RunTicker() { @@ -18,7 +20,7 @@ func RunTicker() { go func() { for range unUsedSessionTicker.C { sessions, _ := model.FindSessionByStatusIn([]string{constant.NoConnect, constant.Connecting}) - if sessions != nil && len(sessions) > 0 { + if sessions != nil { now := time.Now() for i := range sessions { if now.Sub(sessions[i].ConnectedTime.Time) > time.Hour*1 { @@ -51,7 +53,7 @@ func RunTicker() { return } - if sessions != nil && len(sessions) > 0 { + if sessions != nil { var sessionIds []string for i := range sessions { sessionIds = append(sessionIds, sessions[i].ID) diff --git a/pkg/model/asset.go b/pkg/model/asset.go index a119510..7a102a1 100644 --- a/pkg/model/asset.go +++ b/pkg/model/asset.go @@ -1,10 +1,11 @@ package model import ( + "strings" + "next-terminal/pkg/constant" "next-terminal/pkg/global" "next-terminal/pkg/utils" - "strings" ) type Asset struct { @@ -94,7 +95,7 @@ func FindPageAsset(pageIndex, pageSize int, name, protocol, tags string, account return nil, 0, err } - if userGroupIds != nil && len(userGroupIds) > 0 { + if userGroupIds != nil { db = db.Or("resource_sharers.user_group_id in ?", userGroupIds) dbCounter = dbCounter.Or("resource_sharers.user_group_id in ?", userGroupIds) } @@ -209,7 +210,7 @@ func CountAssetByUserId(userId string) (total int64, err error) { return 0, err } - if userGroupIds != nil && len(userGroupIds) > 0 { + if userGroupIds != nil { db = db.Or("resource_sharers.user_group_id in ?", userGroupIds) } err = db.Find(&Asset{}).Count(&total).Error diff --git a/pkg/model/asset_attribute.go b/pkg/model/asset_attribute.go index de65465..8818218 100644 --- a/pkg/model/asset_attribute.go +++ b/pkg/model/asset_attribute.go @@ -2,12 +2,14 @@ package model import ( "fmt" - "github.com/labstack/echo/v4" - "gorm.io/gorm" + "next-terminal/pkg/constant" "next-terminal/pkg/global" "next-terminal/pkg/guacd" "next-terminal/pkg/utils" + + "github.com/labstack/echo/v4" + "gorm.io/gorm" ) type AssetAttribute struct { diff --git a/pkg/model/credential.go b/pkg/model/credential.go index c333cd7..ce4947d 100644 --- a/pkg/model/credential.go +++ b/pkg/model/credential.go @@ -123,7 +123,7 @@ func CountCredentialByUserId(userId string) (total int64, err error) { return 0, err } - if userGroupIds != nil && len(userGroupIds) > 0 { + if userGroupIds != nil { db = db.Or("resource_sharers.user_group_id in ?", userGroupIds) } err = db.Find(&Credential{}).Count(&total).Error diff --git a/pkg/model/job.go b/pkg/model/job.go index 7f76888..4a6ab2b 100644 --- a/pkg/model/job.go +++ b/pkg/model/job.go @@ -4,14 +4,16 @@ import ( "encoding/json" "errors" "fmt" - "github.com/robfig/cron/v3" - "github.com/sirupsen/logrus" + "strings" + "time" + "next-terminal/pkg/constant" "next-terminal/pkg/global" "next-terminal/pkg/term" "next-terminal/pkg/utils" - "strings" - "time" + + "github.com/robfig/cron/v3" + "github.com/sirupsen/logrus" ) type Job struct { @@ -197,7 +199,7 @@ func (r CheckAssetStatusJob) Run() { assets, _ = FindAssetByIds(strings.Split(r.ResourceIds, ",")) } - if assets == nil || len(assets) == 0 { + if assets == nil { return } @@ -255,7 +257,7 @@ func (r ShellJob) Run() { assets, _ = FindAssetByProtocolAndIds("ssh", strings.Split(r.ResourceIds, ",")) } - if assets == nil || len(assets) == 0 { + if assets == nil { return } diff --git a/pkg/model/login_log.go b/pkg/model/login_log.go index 44f845a..401d292 100644 --- a/pkg/model/login_log.go +++ b/pkg/model/login_log.go @@ -1,9 +1,10 @@ package model import ( - "github.com/sirupsen/logrus" "next-terminal/pkg/global" "next-terminal/pkg/utils" + + "github.com/sirupsen/logrus" ) type LoginLog struct { diff --git a/pkg/model/property.go b/pkg/model/property.go index 00febff..2b69195 100644 --- a/pkg/model/property.go +++ b/pkg/model/property.go @@ -1,12 +1,14 @@ package model import ( - "github.com/jordan-wright/email" - "github.com/sirupsen/logrus" "net/smtp" + "next-terminal/pkg/constant" "next-terminal/pkg/global" "next-terminal/pkg/guacd" + + "github.com/jordan-wright/email" + "github.com/sirupsen/logrus" ) type Property struct { diff --git a/pkg/model/resource-sharer.go b/pkg/model/resource-sharer.go index 1139b77..1049511 100644 --- a/pkg/model/resource-sharer.go +++ b/pkg/model/resource-sharer.go @@ -1,10 +1,12 @@ package model import ( - "github.com/labstack/echo/v4" - "gorm.io/gorm" "next-terminal/pkg/global" "next-terminal/pkg/utils" + + "github.com/labstack/echo/v4" + "github.com/pkg/errors" + "gorm.io/gorm" ) type ResourceSharer struct { @@ -117,15 +119,22 @@ func AddSharerResources(userGroupId, userId, resourceType string, resourceIds [] switch resourceType { case "asset": resource := Asset{} - err = tx.Where("id = ?", resourceId).First(&resource).Error + if err = tx.Where("id = ?", resourceId).First(&resource).Error; err != nil { + return errors.Wrap(err, "find asset fail") + } owner = resource.Owner case "command": resource := Command{} - err = tx.Where("id = ?", resourceId).First(&resource).Error + if err = tx.Where("id = ?", resourceId).First(&resource).Error; err != nil { + return errors.Wrap(err, "find command fail") + } owner = resource.Owner case "credential": resource := Credential{} - err = tx.Where("id = ?", resourceId).First(&resource).Error + if err = tx.Where("id = ?", resourceId).First(&resource).Error; err != nil { + return errors.Wrap(err, "find credential fail") + + } owner = resource.Owner } @@ -166,7 +175,7 @@ func FindAssetIdsByUserId(userId string) (assetIds []string, err error) { } db := global.DB.Table("resource_sharers").Select("resource_id").Where("user_id = ?", userId) - if groupIds != nil && len(groupIds) > 0 { + if groupIds != nil { db = db.Or("user_group_id in ?", groupIds) } err = db.Find(&sharerAssetIds).Error diff --git a/pkg/model/session.go b/pkg/model/session.go index cd7b296..78f81a6 100644 --- a/pkg/model/session.go +++ b/pkg/model/session.go @@ -1,12 +1,13 @@ package model import ( - "next-terminal/pkg/constant" - "next-terminal/pkg/global" - "next-terminal/pkg/utils" "os" "path" "time" + + "next-terminal/pkg/constant" + "next-terminal/pkg/global" + "next-terminal/pkg/utils" ) type Session struct { diff --git a/pkg/model/user-group.go b/pkg/model/user-group.go index 8a33eab..248d36b 100644 --- a/pkg/model/user-group.go +++ b/pkg/model/user-group.go @@ -1,9 +1,10 @@ package model import ( - "gorm.io/gorm" "next-terminal/pkg/global" "next-terminal/pkg/utils" + + "gorm.io/gorm" ) type UserGroup struct { diff --git a/pkg/model/user.go b/pkg/model/user.go index 7ed9028..b497736 100644 --- a/pkg/model/user.go +++ b/pkg/model/user.go @@ -1,9 +1,10 @@ package model import ( + "reflect" + "next-terminal/pkg/global" "next-terminal/pkg/utils" - "reflect" ) type User struct { diff --git a/pkg/term/next_terminal.go b/pkg/term/next_terminal.go index e7e1212..4970698 100644 --- a/pkg/term/next_terminal.go +++ b/pkg/term/next_terminal.go @@ -1,9 +1,10 @@ package term import ( + "io" + "github.com/pkg/sftp" "golang.org/x/crypto/ssh" - "io" ) type NextTerminal struct { diff --git a/pkg/term/recording.go b/pkg/term/recording.go index cd35efd..1beb71e 100644 --- a/pkg/term/recording.go +++ b/pkg/term/recording.go @@ -2,9 +2,10 @@ package term import ( "encoding/json" - "next-terminal/pkg/utils" "os" "time" + + "next-terminal/pkg/utils" ) type Env struct { diff --git a/pkg/term/ssh.go b/pkg/term/ssh.go index f27b6d2..3ac5aa8 100644 --- a/pkg/term/ssh.go +++ b/pkg/term/ssh.go @@ -2,8 +2,9 @@ package term import ( "fmt" - "golang.org/x/crypto/ssh" "time" + + "golang.org/x/crypto/ssh" ) func NewSshClient(ip string, port int, username, password, privateKey, passphrase string) (*ssh.Client, error) { diff --git a/pkg/term/test/test_ssh.go b/pkg/term/test/test_ssh.go index fabefdd..e714efa 100644 --- a/pkg/term/test/test_ssh.go +++ b/pkg/term/test/test_ssh.go @@ -6,6 +6,7 @@ import ( "os" "time" + "github.com/sirupsen/logrus" "golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh/terminal" ) @@ -29,7 +30,7 @@ func main() { client, err := ssh.Dial("tcp", "172.16.101.32:22", sshConfig) if err != nil { - fmt.Println(err) + logrus.Error(err) } defer client.Close() @@ -68,7 +69,7 @@ func (t *SSHTerminal) updateTerminalSize() { continue } - t.Session.WindowChange(currTermHeight, currTermWidth) + err = t.Session.WindowChange(currTermHeight, currTermWidth) if err != nil { fmt.Printf("Unable to send window-change reqest: %s.", err) continue @@ -86,9 +87,9 @@ func (t *SSHTerminal) interactiveSession() error { defer func() { if t.exitMsg == "" { - fmt.Fprintln(os.Stdout, "the connection was closed on the remote side on ", time.Now().Format(time.RFC822)) + logrus.Info(os.Stdout, "the connection was closed on the remote side on ", time.Now().Format(time.RFC822)) } else { - fmt.Fprintln(os.Stdout, t.exitMsg) + logrus.Info(os.Stdout, t.exitMsg) } }() diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index 6dad7bb..dcb7883 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -18,6 +18,7 @@ import ( "time" "github.com/gofrs/uuid" + "github.com/sirupsen/logrus" "golang.org/x/crypto/bcrypt" ) @@ -103,10 +104,7 @@ func ImageToBase64Encode(img image.Image) (string, error) { func FileExists(path string) bool { _, err := os.Stat(path) //os.Stat获取文件信息 if err != nil { - if os.IsExist(err) { - return true - } - return false + return os.IsExist(err) } return true } @@ -209,3 +207,9 @@ func StringToInt(in string) (out int) { out, _ = strconv.Atoi(in) return } + +func Check(f func() error) { + if err := f(); err != nil { + logrus.Error("Received error:", err) + } +}