style(be):使用goimport 格式化代码并添加golangci

This commit is contained in:
neverteaser 2021-03-16 14:00:03 +08:00 committed by dushixiang
parent 88b0200095
commit d366cbd00d
40 changed files with 244 additions and 124 deletions

21
.github/workflows/golangci-lint.yml vendored Normal file
View File

@ -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

26
.golangci.yml Normal file
View File

@ -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

1
go.mod
View File

@ -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

28
main.go
View File

@ -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: "资产状态检测",

View File

@ -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"
)

View File

@ -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 {

View File

@ -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 {

View File

@ -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 {

View File

@ -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 {

View File

@ -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

View File

@ -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 {

View File

@ -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 {

View File

@ -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 {

View File

@ -1,8 +1,9 @@
package api
import (
"github.com/labstack/echo/v4"
"next-terminal/pkg/model"
"github.com/labstack/echo/v4"
)
type RU struct {

View File

@ -2,6 +2,7 @@ package api
import (
"net/http"
"next-terminal/pkg/constant"
"next-terminal/pkg/global"
"next-terminal/pkg/log"

View File

@ -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{

View File

@ -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 {

View File

@ -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{

View File

@ -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 == "" {

View File

@ -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 {

View File

@ -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)
}

View File

@ -1,9 +1,10 @@
package config
import (
"github.com/spf13/pflag"
"strings"
"github.com/spf13/pflag"
"github.com/spf13/viper"
)

View File

@ -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

View File

@ -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 {

View File

@ -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)

View File

@ -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

View File

@ -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 {

View File

@ -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

View File

@ -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
}

View File

@ -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 {

View File

@ -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 {

View File

@ -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

View File

@ -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 {

View File

@ -1,9 +1,10 @@
package model
import (
"gorm.io/gorm"
"next-terminal/pkg/global"
"next-terminal/pkg/utils"
"gorm.io/gorm"
)
type UserGroup struct {

View File

@ -1,9 +1,10 @@
package model
import (
"reflect"
"next-terminal/pkg/global"
"next-terminal/pkg/utils"
"reflect"
)
type User struct {

View File

@ -1,9 +1,10 @@
package term
import (
"io"
"github.com/pkg/sftp"
"golang.org/x/crypto/ssh"
"io"
)
type NextTerminal struct {

View File

@ -2,9 +2,10 @@ package term
import (
"encoding/json"
"next-terminal/pkg/utils"
"os"
"time"
"next-terminal/pkg/utils"
)
type Env struct {

View File

@ -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) {

View File

@ -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)
}
}()

View File

@ -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)
}
}