diff --git a/internal/apps/benchmark/app.go b/internal/apps/benchmark/app.go index e3af9e98..62292129 100644 --- a/internal/apps/benchmark/app.go +++ b/internal/apps/benchmark/app.go @@ -637,7 +637,9 @@ func (s *App) diskWriteTest(fileName string, blockSize int64, fileSize int64) (f if err != nil { return 0, 0 } - defer file.Close() + defer func(file *os.File) { + _ = file.Close() + }(file) start := time.Now() @@ -670,7 +672,9 @@ func (s *App) diskReadTest(fileName string, blockSize int64, fileSize int64) (fl if err != nil { return 0, 0 } - defer file.Close() + defer func(file *os.File) { + _ = file.Close() + }(file) start := time.Now() diff --git a/internal/apps/memcached/app.go b/internal/apps/memcached/app.go index f50e36ab..8876b84f 100644 --- a/internal/apps/memcached/app.go +++ b/internal/apps/memcached/app.go @@ -42,7 +42,9 @@ func (s *App) Load(w http.ResponseWriter, r *http.Request) { service.Success(w, []types.NV{}) return } - defer conn.Close() + defer func(conn net.Conn) { + _ = conn.Close() + }(conn) _, err = conn.Write([]byte("stats\nquit\n")) if err != nil { diff --git a/internal/apps/mysql/app.go b/internal/apps/mysql/app.go index 388ab812..447e0f65 100644 --- a/internal/apps/mysql/app.go +++ b/internal/apps/mysql/app.go @@ -210,7 +210,9 @@ func (s *App) SetRootPassword(w http.ResponseWriter, r *http.Request) { return } } else { - defer mysql.Close() + defer func(mysql *db.MySQL) { + _ = mysql.Close() + }(mysql) if err = mysql.UserPassword("root", req.Password, "localhost"); err != nil { service.Error(w, http.StatusInternalServerError, "%v", err) return diff --git a/internal/data/database.go b/internal/data/database.go index ff304224..03828a80 100644 --- a/internal/data/database.go +++ b/internal/data/database.go @@ -86,7 +86,9 @@ func (r databaseRepo) Create(req *request.DatabaseCreate) error { if err != nil { return err } - defer mysql.Close() + defer func(mysql *db.MySQL) { + _ = mysql.Close() + }(mysql) if req.CreateUser { if err = r.user.Create(&request.DatabaseUserCreate{ ServerID: req.ServerID, @@ -110,7 +112,9 @@ func (r databaseRepo) Create(req *request.DatabaseCreate) error { if err != nil { return err } - defer postgres.Close() + defer func(postgres *db.Postgres) { + _ = postgres.Close() + }(postgres) if req.CreateUser { if err = r.user.Create(&request.DatabaseUserCreate{ ServerID: req.ServerID, @@ -149,14 +153,18 @@ func (r databaseRepo) Delete(serverID uint, name string) error { if err != nil { return err } - defer mysql.Close() + defer func(mysql *db.MySQL) { + _ = mysql.Close() + }(mysql) return mysql.DatabaseDrop(name) case biz.DatabaseTypePostgresql: postgres, err := db.NewPostgres(server.Username, server.Password, server.Host, server.Port) if err != nil { return err } - defer postgres.Close() + defer func(postgres *db.Postgres) { + _ = postgres.Close() + }(postgres) return postgres.DatabaseDrop(name) } @@ -177,7 +185,9 @@ func (r databaseRepo) Comment(req *request.DatabaseComment) error { if err != nil { return err } - defer postgres.Close() + defer func(postgres *db.Postgres) { + _ = postgres.Close() + }(postgres) return postgres.DatabaseComment(req.Name, req.Comment) } diff --git a/internal/data/database_server.go b/internal/data/database_server.go index 25771352..a87488e8 100644 --- a/internal/data/database_server.go +++ b/internal/data/database_server.go @@ -139,7 +139,9 @@ func (r databaseServerRepo) Sync(id uint) error { if err != nil { return err } - defer mysql.Close() + defer func(mysql *db.MySQL) { + _ = mysql.Close() + }(mysql) allUsers, err := mysql.Users() if err != nil { return err @@ -164,7 +166,9 @@ func (r databaseServerRepo) Sync(id uint) error { if err != nil { return err } - defer postgres.Close() + defer func(postgres *db.Postgres) { + _ = postgres.Close() + }(postgres) allUsers, err := postgres.Users() if err != nil { return err diff --git a/internal/data/database_user.go b/internal/data/database_user.go index 0a08ca29..58edec04 100644 --- a/internal/data/database_user.go +++ b/internal/data/database_user.go @@ -68,7 +68,9 @@ func (r databaseUserRepo) Create(req *request.DatabaseUserCreate) error { if err != nil { return err } - defer mysql.Close() + defer func(mysql *db.MySQL) { + _ = mysql.Close() + }(mysql) if err = mysql.UserCreate(req.Username, req.Password, req.Host); err != nil { return err } @@ -87,7 +89,9 @@ func (r databaseUserRepo) Create(req *request.DatabaseUserCreate) error { if err != nil { return err } - defer postgres.Close() + defer func(postgres *db.Postgres) { + _ = postgres.Close() + }(postgres) if err = postgres.UserCreate(req.Username, req.Password); err != nil { return err } @@ -129,7 +133,9 @@ func (r databaseUserRepo) Update(req *request.DatabaseUserUpdate) error { if err != nil { return err } - defer mysql.Close() + defer func(mysql *db.MySQL) { + _ = mysql.Close() + }(mysql) if req.Password != "" { if err = mysql.UserPassword(user.Username, req.Password, user.Host); err != nil { return err @@ -145,7 +151,9 @@ func (r databaseUserRepo) Update(req *request.DatabaseUserUpdate) error { if err != nil { return err } - defer postgres.Close() + defer func(postgres *db.Postgres) { + _ = postgres.Close() + }(postgres) if req.Password != "" { if err = postgres.UserPassword(user.Username, req.Password); err != nil { return err @@ -192,14 +200,18 @@ func (r databaseUserRepo) Delete(id uint) error { if err != nil { return err } - defer mysql.Close() + defer func(mysql *db.MySQL) { + _ = mysql.Close() + }(mysql) _ = mysql.UserDrop(user.Username, user.Host) case biz.DatabaseTypePostgresql: postgres, err := db.NewPostgres(server.Username, server.Password, server.Host, server.Port) if err != nil { return err } - defer postgres.Close() + defer func(postgres *db.Postgres) { + _ = postgres.Close() + }(postgres) _ = postgres.UserDrop(user.Username) } @@ -218,7 +230,9 @@ func (r databaseUserRepo) DeleteByNames(serverID uint, names []string) error { if err != nil { return err } - defer mysql.Close() + defer func(mysql *db.MySQL) { + _ = mysql.Close() + }(mysql) users := make([]*biz.DatabaseUser, 0) if err = r.db.Where("server_id = ? AND username IN ?", serverID, names).Find(&users).Error; err != nil { return err @@ -238,7 +252,9 @@ func (r databaseUserRepo) DeleteByNames(serverID uint, names []string) error { if err != nil { return err } - defer postgres.Close() + defer func(postgres *db.Postgres) { + _ = postgres.Close() + }(postgres) for name := range slices.Values(names) { _ = postgres.UserDrop(name) } @@ -254,7 +270,9 @@ func (r databaseUserRepo) fillUser(user *biz.DatabaseUser) { case biz.DatabaseTypeMysql: mysql, err := db.NewMySQL(server.Username, server.Password, fmt.Sprintf("%s:%d", server.Host, server.Port)) if err == nil { - defer mysql.Close() + defer func(mysql *db.MySQL) { + _ = mysql.Close() + }(mysql) privileges, _ := mysql.UserPrivileges(user.Username, user.Host) user.Privileges = privileges } @@ -267,7 +285,9 @@ func (r databaseUserRepo) fillUser(user *biz.DatabaseUser) { case biz.DatabaseTypePostgresql: postgres, err := db.NewPostgres(server.Username, server.Password, server.Host, server.Port) if err == nil { - defer postgres.Close() + defer func(postgres *db.Postgres) { + _ = postgres.Close() + }(postgres) privileges, _ := postgres.UserPrivileges(user.Username) user.Privileges = privileges } diff --git a/internal/service/cli.go b/internal/service/cli.go index dd06cad8..7d02e3f2 100644 --- a/internal/service/cli.go +++ b/internal/service/cli.go @@ -421,8 +421,8 @@ func (s *CliService) Port(ctx context.Context, cmd *cli.Command) error { fw := firewall.NewFirewall() err = fw.Port(firewall.FireInfo{ Type: firewall.TypeNormal, - PortStart: uint(config.HTTP.Port), - PortEnd: uint(config.HTTP.Port), + PortStart: config.HTTP.Port, + PortEnd: config.HTTP.Port, Direction: firewall.DirectionIn, Strategy: firewall.StrategyAccept, }, firewall.OperationAdd) diff --git a/internal/service/ws.go b/internal/service/ws.go index d1480448..257fa40b 100644 --- a/internal/service/ws.go +++ b/internal/service/ws.go @@ -8,6 +8,7 @@ import ( "github.com/gorilla/websocket" "github.com/knadh/koanf/v2" + stdssh "golang.org/x/crypto/ssh" "github.com/tnb-labs/panel/internal/biz" "github.com/tnb-labs/panel/internal/http/request" @@ -44,21 +45,27 @@ func (s *WsService) Session(w http.ResponseWriter, r *http.Request) { ErrorSystem(w) return } - defer ws.Close() + defer func(ws *websocket.Conn) { + _ = ws.Close() + }(ws) client, err := ssh.NewSSHClient(info.Config) if err != nil { _ = ws.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, err.Error())) return } - defer client.Close() + defer func(client *stdssh.Client) { + _ = client.Close() + }(client) turn, err := ssh.NewTurn(ws, client) if err != nil { _ = ws.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, err.Error())) return } - defer turn.Close() + defer func(turn *ssh.Turn) { + _ = turn.Close() + }(turn) ctx, cancel := context.WithCancel(context.Background()) wg := sync.WaitGroup{} @@ -83,7 +90,9 @@ func (s *WsService) Exec(w http.ResponseWriter, r *http.Request) { ErrorSystem(w) return } - defer ws.Close() + defer func(ws *websocket.Conn) { + _ = ws.Close() + }(ws) // 第一条消息是命令 _, cmd, err := ws.ReadMessage() @@ -135,7 +144,7 @@ func (s *WsService) upgrade(w http.ResponseWriter, r *http.Request) (*websocket. func (s *WsService) readLoop(c *websocket.Conn) { for { if _, _, err := c.NextReader(); err != nil { - c.Close() + _ = c.Close() break } } diff --git a/pkg/db/mysql.go b/pkg/db/mysql.go index 29de50ea..006e4b6a 100644 --- a/pkg/db/mysql.go +++ b/pkg/db/mysql.go @@ -79,7 +79,9 @@ func (r *MySQL) DatabaseExists(name string) (bool, error) { if err != nil { return false, err } - defer rows.Close() + defer func(rows *sql.Rows) { + _ = rows.Close() + }(rows) for rows.Next() { var database string @@ -134,7 +136,9 @@ func (r *MySQL) UserPrivileges(user, host string) ([]string, error) { if err != nil { return nil, err } - defer rows.Close() + defer func(rows *sql.Rows) { + _ = rows.Close() + }(rows) re := regexp.MustCompile(`GRANT\s+ALL PRIVILEGES\s+ON\s+[\x60'"]?([^\s\x60'"]+)[\x60'"]?\.\*\s+TO\s+`) var databases []string @@ -167,7 +171,9 @@ func (r *MySQL) Users() ([]types.MySQLUser, error) { if err != nil { return nil, err } - defer rows.Close() + defer func(rows *sql.Rows) { + _ = rows.Close() + }(rows) var users []types.MySQLUser for rows.Next() { @@ -204,7 +210,9 @@ func (r *MySQL) Databases() ([]types.MySQLDatabase, error) { if err != nil { return nil, err } - defer rows.Close() + defer func(rows *sql.Rows) { + _ = rows.Close() + }(rows) var databases []types.MySQLDatabase for rows.Next() { @@ -227,7 +235,9 @@ func (r *MySQL) userGrants(user, host string) ([]string, error) { if err != nil { return nil, err } - defer rows.Close() + defer func(rows *sql.Rows) { + _ = rows.Close() + }(rows) var grants []string for rows.Next() { diff --git a/pkg/db/postgres.go b/pkg/db/postgres.go index 49e84bf4..4e6eaf53 100644 --- a/pkg/db/postgres.go +++ b/pkg/db/postgres.go @@ -140,7 +140,9 @@ func (r *Postgres) UserPrivileges(user string) ([]string, error) { if err != nil { return nil, err } - defer rows.Close() + defer func(rows *sql.Rows) { + _ = rows.Close() + }(rows) var databases []string @@ -190,7 +192,9 @@ func (r *Postgres) Users() ([]types.PostgresUser, error) { if err != nil { return nil, err } - defer rows.Close() + defer func(rows *sql.Rows) { + _ = rows.Close() + }(rows) var users []types.PostgresUser for rows.Next() { @@ -241,7 +245,9 @@ func (r *Postgres) Databases() ([]types.PostgresDatabase, error) { if err != nil { return nil, err } - defer rows.Close() + defer func(rows *sql.Rows) { + _ = rows.Close() + }(rows) var databases []types.PostgresDatabase for rows.Next() { diff --git a/pkg/io/file.go b/pkg/io/file.go index 33bc6d9a..7c17ec21 100644 --- a/pkg/io/file.go +++ b/pkg/io/file.go @@ -35,7 +35,9 @@ func Write(path string, data string, permission os.FileMode) error { if err != nil { return err } - defer file.Close() + defer func(file *os.File) { + _ = file.Close() + }(file) _, err = file.WriteString(data) if err != nil { @@ -71,7 +73,9 @@ func WriteAppend(path string, data string, permission os.FileMode) error { if err != nil { return err } - defer file.Close() + defer func(file *os.File) { + _ = file.Close() + }(file) _, err = file.WriteString(data) if err != nil { diff --git a/pkg/os/os.go b/pkg/os/os.go index f3a4f05b..39c3da8f 100644 --- a/pkg/os/os.go +++ b/pkg/os/os.go @@ -13,7 +13,9 @@ func readOSRelease() map[string]string { if err != nil { return nil } - defer file.Close() + defer func(file *os.File) { + _ = file.Close() + }(file) osRelease := make(map[string]string) scanner := bufio.NewScanner(file) @@ -67,7 +69,9 @@ func TCPPortInUse(port uint) bool { if err != nil { return true } - defer conn.Close() + defer func(conn net.Listener) { + _ = conn.Close() + }(conn) return false } @@ -77,6 +81,8 @@ func UDPPortInUse(port uint) bool { if err != nil { return true } - defer conn.Close() + defer func(conn net.PacketConn) { + _ = conn.Close() + }(conn) return false } diff --git a/pkg/shell/exec.go b/pkg/shell/exec.go index 4d8792dc..40c54675 100644 --- a/pkg/shell/exec.go +++ b/pkg/shell/exec.go @@ -203,7 +203,9 @@ func ExecfWithTTY(shell string, args ...any) (string, error) { if err != nil { return "", fmt.Errorf("run %s failed", shell) } - defer f.Close() + defer func(f *os.File) { + _ = f.Close() + }(f) if _, err = io.Copy(&out, f); ptyError(err) != nil { return "", fmt.Errorf("run %s failed, out: %s, err: %w", shell, strings.TrimSpace(out.String()), err) diff --git a/pkg/ssh/turn.go b/pkg/ssh/turn.go index 92a762b0..28854673 100644 --- a/pkg/ssh/turn.go +++ b/pkg/ssh/turn.go @@ -58,7 +58,9 @@ func (t *Turn) Write(p []byte) (n int, err error) { if err != nil { return 0, err } - defer writer.Close() + defer func(writer io.WriteCloser) { + _ = writer.Close() + }(writer) return writer.Write(p) } diff --git a/pkg/tools/tools.go b/pkg/tools/tools.go index e2adef9c..24790024 100644 --- a/pkg/tools/tools.go +++ b/pkg/tools/tools.go @@ -155,7 +155,9 @@ func GetLocalIPv4() (string, error) { if err != nil { return "", err } - defer conn.Close() + defer func(conn stdnet.Conn) { + _ = conn.Close() + }(conn) local := conn.LocalAddr().(*stdnet.UDPAddr) return local.IP.String(), nil @@ -167,7 +169,9 @@ func GetLocalIPv6() (string, error) { if err != nil { return "", err } - defer conn.Close() + defer func(conn stdnet.Conn) { + _ = conn.Close() + }(conn) local := conn.LocalAddr().(*stdnet.UDPAddr) return local.IP.String(), nil