diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5e913ca2..115d88ff 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,12 +19,15 @@ repos: - id: check-docstring-first - id: requirements-txt-fixer - - repo: https://github.com/Bahjat/pre-commit-golang rev: v1.0.5 hooks: - id: go-fmt-import - id: go-static-check # install https://staticcheck.io/docs/ - - id: golangci-lint # requires github.com/golangci/golangci-lint - args: [--config=.golangci.yml, --allow-parallel-runners] # optional - id: go-unit-tests + + - repo: https://github.com/golangci/golangci-lint + rev: v1.62.2 + hooks: + - id: golangci-lint + args: [--config=.golangci.yml] diff --git a/cmd/admin/handlers/utils.go b/cmd/admin/handlers/utils.go index 5aa9da18..7851205c 100644 --- a/cmd/admin/handlers/utils.go +++ b/cmd/admin/handlers/utils.go @@ -8,9 +8,9 @@ import ( "encoding/json" "fmt" "net/http" + "strconv" "strings" "time" - "strconv" "github.com/jmpsec/osctrl/pkg/config" "github.com/jmpsec/osctrl/pkg/environments" @@ -58,7 +58,7 @@ func randomForNames() string { b := make([]byte, 32) _, _ = rand.Read(b) hasher := md5.New() - _, _ = hasher.Write([]byte(fmt.Sprintf("%x", b))) + _, _ = fmt.Fprintf(hasher, "%x", b) return hex.EncodeToString(hasher.Sum(nil)) } diff --git a/cmd/admin/sessions/sessions.go b/cmd/admin/sessions/sessions.go index 31dea4d1..5f5fcf46 100644 --- a/cmd/admin/sessions/sessions.go +++ b/cmd/admin/sessions/sessions.go @@ -149,7 +149,7 @@ func (sm *SessionManager) New(r *http.Request, username string) (UserSession, er } session.Cookie = cookie if err := sm.db.Create(&session).Error; err != nil { - return UserSession{}, fmt.Errorf("Create UserSession %w", err) + return UserSession{}, fmt.Errorf("create UserSession %w", err) } return session, nil } @@ -162,7 +162,7 @@ func (sm *SessionManager) Destroy(r *http.Request) error { return err } if err := sm.db.Model(&s).Update("expires_at", time.Now().Add(-1*time.Second)).Error; err != nil { - return fmt.Errorf("Update %w", err) + return fmt.Errorf("update %w", err) } } return nil @@ -185,7 +185,7 @@ func (sm *SessionManager) Save(r *http.Request, w http.ResponseWriter, user user } } if s.Username != user.Username { - return s, fmt.Errorf("Invalid user session (%s)", s.Username) + return s, fmt.Errorf("invalid user session (%s)", s.Username) } } http.SetCookie(w, sessions.NewCookie(sm.CookieName, s.Cookie, sm.Options)) diff --git a/cmd/cli/query.go b/cmd/cli/query.go index b2287f9e..5c816383 100644 --- a/cmd/cli/query.go +++ b/cmd/cli/query.go @@ -110,20 +110,20 @@ func listQueries(ctx context.Context, cmd *cli.Command) error { "Expiration", } // Prepare output - switch { - case formatFlag == jsonFormat: + switch formatFlag { + case jsonFormat: jsonRaw, err := json.Marshal(qs) if err != nil { return fmt.Errorf("❌ error json marshal - %w", err) } fmt.Println(string(jsonRaw)) - case formatFlag == csvFormat: + case csvFormat: data := queriesToData(qs, header) w := csv.NewWriter(os.Stdout) if err := w.WriteAll(data); err != nil { return fmt.Errorf("❌ error csv writeall - %w", err) } - case formatFlag == prettyFormat: + case prettyFormat: table := tablewriter.NewWriter(os.Stdout) table.Header(stringSliceToAnySlice(header)...) if len(qs) > 0 { diff --git a/pkg/auditlog/audit.go b/pkg/auditlog/audit.go index 0accc751..29dc5487 100644 --- a/pkg/auditlog/audit.go +++ b/pkg/auditlog/audit.go @@ -48,7 +48,7 @@ type AuditLogManager struct { // CreateAuditLogManager to initialize the audit log struct and tables func CreateAuditLogManager(backend *gorm.DB, service string, enabled bool) (*AuditLogManager, error) { - var t *AuditLogManager = &AuditLogManager{ + t := &AuditLogManager{ DB: backend, Service: service, Enabled: enabled, diff --git a/pkg/carves/carves.go b/pkg/carves/carves.go index 165c8780..3e69c65e 100644 --- a/pkg/carves/carves.go +++ b/pkg/carves/carves.go @@ -66,7 +66,7 @@ type Carves struct { // CreateFileCarves to initialize the carves struct and tables func CreateFileCarves(backend *gorm.DB, carverType string, s3 *CarverS3) *Carves { - var c *Carves = &Carves{DB: backend, Carver: carverType, S3: s3} + c := &Carves{DB: backend, Carver: carverType, S3: s3} // table carved_files if err := backend.AutoMigrate(&CarvedFile{}); err != nil { log.Fatal().Msgf("Failed to AutoMigrate table (carved_files): %v", err) diff --git a/pkg/environments/environments.go b/pkg/environments/environments.go index 2b4160ad..1707edb6 100644 --- a/pkg/environments/environments.go +++ b/pkg/environments/environments.go @@ -116,7 +116,7 @@ type EnvManager struct { // CreateEnvironment to initialize the environment struct and tables func CreateEnvironment(backend *gorm.DB) *EnvManager { - var e *EnvManager = &EnvManager{DB: backend} + e := &EnvManager{DB: backend} // table tls_environments if err := backend.AutoMigrate(&TLSEnvironment{}); err != nil { log.Fatal().Msgf("Failed to AutoMigrate table (tls_environments): %v", err) diff --git a/pkg/logging/logstash.go b/pkg/logging/logstash.go index e1290427..ef5cb38c 100644 --- a/pkg/logging/logstash.go +++ b/pkg/logging/logstash.go @@ -65,8 +65,6 @@ const ( LogstashMethod = "POST" // LogstashContentType Content Type for requests LogstashContentType = "application/json" - // LogstashConnStr Connection string for Logstash - LogstashConnStr = "%s:%s" ) // LogstashMessage to handle log format to be sent to Logstash @@ -111,7 +109,7 @@ func (logLS *LoggerLogstash) SendUDP(logType string, data []byte, environment, u if debug { log.Debug().Msgf("Sending %d bytes to Logstash TCP for %s - %s", len(data), environment, uuid) } - connAddr := fmt.Sprintf(LogstashConnStr, logLS.Configuration.Host, logLS.Configuration.Port) + connAddr := net.JoinHostPort(logLS.Configuration.Host, logLS.Configuration.Port) conn, err := net.Dial("udp", connAddr) if err != nil { log.Err(err).Msg("Error connecting to Logstash") @@ -134,7 +132,7 @@ func (logLS *LoggerLogstash) SendTCP(logType string, data []byte, environment, u if debug { log.Debug().Msgf("Sending %d bytes to Logstash UDP for %s - %s", len(data), environment, uuid) } - connAddr := fmt.Sprintf(LogstashConnStr, logLS.Configuration.Host, logLS.Configuration.Port) + connAddr := net.JoinHostPort(logLS.Configuration.Host, logLS.Configuration.Port) conn, err := net.Dial("tcp", connAddr) if err != nil { log.Err(err).Msg("Error connecting to Logstash") diff --git a/pkg/nodes/nodes.go b/pkg/nodes/nodes.go index 34edb3d7..75e11de9 100644 --- a/pkg/nodes/nodes.go +++ b/pkg/nodes/nodes.go @@ -38,7 +38,7 @@ type NodeManager struct { // CreateNodes to initialize the nodes struct and its tables func CreateNodes(backend *gorm.DB) *NodeManager { - var n *NodeManager = &NodeManager{ + n := &NodeManager{ DB: backend, } // table osquery_nodes diff --git a/pkg/settings/settings.go b/pkg/settings/settings.go index d41e866a..2db0c9fc 100644 --- a/pkg/settings/settings.go +++ b/pkg/settings/settings.go @@ -140,7 +140,7 @@ var ValidServices = map[string]struct{}{ // NewSettings to initialize the access to settings and table func NewSettings(backend *gorm.DB) *Settings { - var s *Settings = &Settings{DB: backend} + s := &Settings{DB: backend} // table setting_values if err := backend.AutoMigrate(&SettingValue{}); err != nil { log.Fatal().Msgf("Failed to AutoMigrate table (setting_values): %v", err) diff --git a/pkg/tags/tags.go b/pkg/tags/tags.go index 740bcf68..542969a2 100644 --- a/pkg/tags/tags.go +++ b/pkg/tags/tags.go @@ -88,7 +88,7 @@ type TagManager struct { // CreateTagManager to initialize the tags struct and tables func CreateTagManager(backend *gorm.DB) *TagManager { - var t *TagManager = &TagManager{DB: backend} + t := &TagManager{DB: backend} // table admin_tags if err := backend.AutoMigrate(&AdminTag{}); err != nil { log.Fatal().Msgf("Failed to AutoMigrate table (admin_tags): %v", err) diff --git a/pkg/users/users.go b/pkg/users/users.go index c64d8361..5bc08716 100644 --- a/pkg/users/users.go +++ b/pkg/users/users.go @@ -60,7 +60,7 @@ func CreateUserManager(backend *gorm.DB, jwtconfig *config.YAMLConfigurationJWT) if jwtconfig.JWTSecret == "" { log.Fatal().Msgf("JWT Secret can not be empty") } - var u *UserManager = &UserManager{DB: backend, JWTConfig: jwtconfig} + u := &UserManager{DB: backend, JWTConfig: jwtconfig} // table admin_users if err := backend.AutoMigrate(&AdminUser{}); err != nil { log.Fatal().Msgf("Failed to AutoMigrate table (admin_users): %v", err) diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index 5c40d0dd..3718422b 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -28,7 +28,7 @@ func RandomForNames() string { b := make([]byte, 32) _, _ = rand.Read(b) hasher := md5.New() - _, _ = hasher.Write([]byte(fmt.Sprintf("%x", b))) + _, _ = fmt.Fprintf(hasher, "%x", b) return hex.EncodeToString(hasher.Sum(nil)) }