mirror of https://github.com/jetkvm/kvm.git
refactor: update golintci-lint and linter issues
* Update golangci-lint Update golangci-lint to v2. Signed-off-by: SuperQ <superq@gmail.com> * Fixup various linter issues. Signed-off-by: SuperQ <superq@gmail.com> --------- Signed-off-by: SuperQ <superq@gmail.com>
This commit is contained in:
parent
951e673e0c
commit
009b0abbe9
|
@ -26,12 +26,12 @@ jobs:
|
||||||
- name: Install Go
|
- name: Install Go
|
||||||
uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0
|
uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0
|
||||||
with:
|
with:
|
||||||
go-version: 1.23.x
|
go-version: 1.24.x
|
||||||
- name: Create empty resource directory
|
- name: Create empty resource directory
|
||||||
run: |
|
run: |
|
||||||
mkdir -p static && touch static/.gitkeep
|
mkdir -p static && touch static/.gitkeep
|
||||||
- name: Lint
|
- name: Lint
|
||||||
uses: golangci/golangci-lint-action@971e284b6050e8a5849b72094c50ab08da042db8 # v6.1.1
|
uses: golangci/golangci-lint-action@1481404843c368bc19ca9406f87d6e0fc97bdcfd # v7.0.0
|
||||||
with:
|
with:
|
||||||
args: --verbose
|
args: --verbose
|
||||||
version: v1.62.0
|
version: v2.0.2
|
||||||
|
|
|
@ -1,22 +1,37 @@
|
||||||
---
|
version: "2"
|
||||||
linters:
|
linters:
|
||||||
enable:
|
enable:
|
||||||
- forbidigo
|
- forbidigo
|
||||||
- goimports
|
|
||||||
- misspell
|
- misspell
|
||||||
# - revive
|
|
||||||
- whitespace
|
- whitespace
|
||||||
|
settings:
|
||||||
issues:
|
|
||||||
exclude-rules:
|
|
||||||
- path: _test.go
|
|
||||||
linters:
|
|
||||||
- errcheck
|
|
||||||
|
|
||||||
linters-settings:
|
|
||||||
forbidigo:
|
forbidigo:
|
||||||
forbid:
|
forbid:
|
||||||
- p: ^fmt\.Print.*$
|
- pattern: ^fmt\.Print.*$
|
||||||
msg: Do not commit print statements. Use logger package.
|
msg: Do not commit print statements. Use logger package.
|
||||||
- p: ^log\.(Fatal|Panic|Print)(f|ln)?.*$
|
- pattern: ^log\.(Fatal|Panic|Print)(f|ln)?.*$
|
||||||
msg: Do not commit log statements. Use logger package.
|
msg: Do not commit log statements. Use logger package.
|
||||||
|
exclusions:
|
||||||
|
generated: lax
|
||||||
|
presets:
|
||||||
|
- comments
|
||||||
|
- common-false-positives
|
||||||
|
- legacy
|
||||||
|
- std-error-handling
|
||||||
|
rules:
|
||||||
|
- linters:
|
||||||
|
- errcheck
|
||||||
|
path: _test.go
|
||||||
|
paths:
|
||||||
|
- third_party$
|
||||||
|
- builtin$
|
||||||
|
- examples$
|
||||||
|
formatters:
|
||||||
|
enable:
|
||||||
|
- goimports
|
||||||
|
exclusions:
|
||||||
|
generated: lax
|
||||||
|
paths:
|
||||||
|
- third_party$
|
||||||
|
- builtin$
|
||||||
|
- examples$
|
||||||
|
|
|
@ -34,16 +34,17 @@ func (r remoteImageBackend) ReadAt(p []byte, off int64) (n int, err error) {
|
||||||
readLen = mountedImageSize - off
|
readLen = mountedImageSize - off
|
||||||
}
|
}
|
||||||
var data []byte
|
var data []byte
|
||||||
if source == WebRTC {
|
switch source {
|
||||||
|
case WebRTC:
|
||||||
data, err = webRTCDiskReader.Read(ctx, off, readLen)
|
data, err = webRTCDiskReader.Read(ctx, off, readLen)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
n = copy(p, data)
|
n = copy(p, data)
|
||||||
return n, nil
|
return n, nil
|
||||||
} else if source == HTTP {
|
case HTTP:
|
||||||
return httpRangeReader.ReadAt(p, off)
|
return httpRangeReader.ReadAt(p, off)
|
||||||
} else {
|
default:
|
||||||
return 0, errors.New("unknown image source")
|
return 0, errors.New("unknown image source")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -228,7 +228,7 @@ func startBacklightTickers() {
|
||||||
defer dimTicker.Stop()
|
defer dimTicker.Stop()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
for { //nolint:gosimple
|
for { //nolint:staticcheck
|
||||||
select {
|
select {
|
||||||
case <-dimTicker.C:
|
case <-dimTicker.C:
|
||||||
tick_displayDim()
|
tick_displayDim()
|
||||||
|
@ -243,7 +243,7 @@ func startBacklightTickers() {
|
||||||
defer offTicker.Stop()
|
defer offTicker.Stop()
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
for { //nolint:gosimple
|
for { //nolint:staticcheck
|
||||||
select {
|
select {
|
||||||
case <-offTicker.C:
|
case <-offTicker.C:
|
||||||
tick_displayOff()
|
tick_displayOff()
|
||||||
|
|
2
fuse.go
2
fuse.go
|
@ -37,7 +37,7 @@ func (f *WebRTCStreamFile) Getattr(ctx context.Context, fh fs.FileHandle, out *f
|
||||||
f.mu.Lock()
|
f.mu.Lock()
|
||||||
defer f.mu.Unlock()
|
defer f.mu.Unlock()
|
||||||
out.Attr = f.Attr
|
out.Attr = f.Attr
|
||||||
out.Attr.Size = f.size
|
out.Size = f.size
|
||||||
return fs.OK
|
return fs.OK
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,12 +49,12 @@ func (s *CertStore) ensureStorePath() error {
|
||||||
s.log.Trace().Str("path", s.storePath).Msg("TLS store directory does not exist, creating directory")
|
s.log.Trace().Str("path", s.storePath).Msg("TLS store directory does not exist, creating directory")
|
||||||
err = os.MkdirAll(s.storePath, 0755)
|
err = os.MkdirAll(s.storePath, 0755)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Failed to create TLS store path: %w", err)
|
return fmt.Errorf("failed to create TLS store path: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return fmt.Errorf("Failed to check TLS store path: %w", err)
|
return fmt.Errorf("failed to check TLS store path: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *CertStore) LoadCertificates() {
|
func (s *CertStore) LoadCertificates() {
|
||||||
|
@ -115,7 +115,7 @@ func (s *CertStore) GetCertificate(hostname string) *tls.Certificate {
|
||||||
func (s *CertStore) ValidateAndSaveCertificate(hostname string, cert string, key string, ignoreWarning bool) (error, error) {
|
func (s *CertStore) ValidateAndSaveCertificate(hostname string, cert string, key string, ignoreWarning bool) (error, error) {
|
||||||
tlsCert, err := tls.X509KeyPair([]byte(cert), []byte(key))
|
tlsCert, err := tls.X509KeyPair([]byte(cert), []byte(key))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Failed to parse certificate: %w", err), nil
|
return fmt.Errorf("failed to parse certificate: %w", err), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// this can be skipped as current implementation supports one custom certificate only
|
// this can be skipped as current implementation supports one custom certificate only
|
||||||
|
@ -129,7 +129,7 @@ func (s *CertStore) ValidateAndSaveCertificate(hostname string, cert string, key
|
||||||
|
|
||||||
if err = tlsCert.Leaf.VerifyHostname(hostname); err != nil {
|
if err = tlsCert.Leaf.VerifyHostname(hostname); err != nil {
|
||||||
if !ignoreWarning {
|
if !ignoreWarning {
|
||||||
return nil, fmt.Errorf("Certificate does not match hostname: %w", err)
|
return nil, fmt.Errorf("certificate does not match hostname: %w", err)
|
||||||
}
|
}
|
||||||
s.log.Warn().Err(err).Msg("Certificate does not match hostname")
|
s.log.Warn().Err(err).Msg("Certificate does not match hostname")
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@ func keyToFile(cert *tls.Certificate, filename string) error {
|
||||||
case *ecdsa.PrivateKey:
|
case *ecdsa.PrivateKey:
|
||||||
b, e := x509.MarshalECPrivateKey(k)
|
b, e := x509.MarshalECPrivateKey(k)
|
||||||
if e != nil {
|
if e != nil {
|
||||||
return fmt.Errorf("Failed to marshal EC private key: %v", e)
|
return fmt.Errorf("failed to marshal EC private key: %v", e)
|
||||||
}
|
}
|
||||||
|
|
||||||
keyBlock = pem.Block{
|
keyBlock = pem.Block{
|
||||||
|
@ -43,7 +43,7 @@ func keyToFile(cert *tls.Certificate, filename string) error {
|
||||||
Bytes: b,
|
Bytes: b,
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("Unknown private key type: %T", k)
|
return fmt.Errorf("unknown private key type: %T", k)
|
||||||
}
|
}
|
||||||
|
|
||||||
err := withSecretFile(filename, func(file *os.File) error {
|
err := withSecretFile(filename, func(file *os.File) error {
|
||||||
|
@ -51,7 +51,7 @@ func keyToFile(cert *tls.Certificate, filename string) error {
|
||||||
})
|
})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Failed to save private key: %w", err)
|
return fmt.Errorf("failed to save private key: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -67,7 +67,7 @@ func certToFile(cert *tls.Certificate, filename string) error {
|
||||||
|
|
||||||
err := pem.Encode(file, &block)
|
err := pem.Encode(file, &block)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Failed to save certificate: %w", err)
|
return fmt.Errorf("failed to save certificate: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
10
jsonrpc.go
10
jsonrpc.go
|
@ -659,18 +659,20 @@ func rpcSetActiveExtension(extensionId string) error {
|
||||||
if config.ActiveExtension == extensionId {
|
if config.ActiveExtension == extensionId {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if config.ActiveExtension == "atx-power" {
|
switch config.ActiveExtension {
|
||||||
|
case "atx-power":
|
||||||
_ = unmountATXControl()
|
_ = unmountATXControl()
|
||||||
} else if config.ActiveExtension == "dc-power" {
|
case "dc-power":
|
||||||
_ = unmountDCControl()
|
_ = unmountDCControl()
|
||||||
}
|
}
|
||||||
config.ActiveExtension = extensionId
|
config.ActiveExtension = extensionId
|
||||||
if err := SaveConfig(); err != nil {
|
if err := SaveConfig(); err != nil {
|
||||||
return fmt.Errorf("failed to save config: %w", err)
|
return fmt.Errorf("failed to save config: %w", err)
|
||||||
}
|
}
|
||||||
if extensionId == "atx-power" {
|
switch extensionId {
|
||||||
|
case "atx-power":
|
||||||
_ = mountATXControl()
|
_ = mountATXControl()
|
||||||
} else if extensionId == "dc-power" {
|
case "dc-power":
|
||||||
_ = mountDCControl()
|
_ = mountDCControl()
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -219,9 +219,10 @@ var defaultMode = &serial.Mode{
|
||||||
|
|
||||||
func initSerialPort() {
|
func initSerialPort() {
|
||||||
_ = reopenSerialPort()
|
_ = reopenSerialPort()
|
||||||
if config.ActiveExtension == "atx-power" {
|
switch config.ActiveExtension {
|
||||||
|
case "atx-power":
|
||||||
_ = mountATXControl()
|
_ = mountATXControl()
|
||||||
} else if config.ActiveExtension == "dc-power" {
|
case "dc-power":
|
||||||
_ = mountDCControl()
|
_ = mountDCControl()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,11 +62,11 @@ func onDiskMessage(msg webrtc.DataChannelMessage) {
|
||||||
func mountImage(imagePath string) error {
|
func mountImage(imagePath string) error {
|
||||||
err := setMassStorageImage("")
|
err := setMassStorageImage("")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Remove Mass Storage Image Error: %w", err)
|
return fmt.Errorf("remove Mass Storage Image Error: %w", err)
|
||||||
}
|
}
|
||||||
err = setMassStorageImage(imagePath)
|
err = setMassStorageImage(imagePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Set Mass Storage Image Error: %w", err)
|
return fmt.Errorf("set Mass Storage Image Error: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -476,10 +476,8 @@ func handleUploadChannel(d *webrtc.DataChannel) {
|
||||||
}
|
}
|
||||||
totalBytesWritten += int64(bytesWritten)
|
totalBytesWritten += int64(bytesWritten)
|
||||||
|
|
||||||
sendProgress := false
|
sendProgress := time.Since(lastProgressTime) >= 200*time.Millisecond
|
||||||
if time.Since(lastProgressTime) >= 200*time.Millisecond {
|
|
||||||
sendProgress = true
|
|
||||||
}
|
|
||||||
if totalBytesWritten >= pendingUpload.Size {
|
if totalBytesWritten >= pendingUpload.Size {
|
||||||
sendProgress = true
|
sendProgress = true
|
||||||
close(uploadComplete)
|
close(uploadComplete)
|
||||||
|
|
11
web_tls.go
11
web_tls.go
|
@ -52,12 +52,13 @@ func initCertStore() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func getCertificate(info *tls.ClientHelloInfo) (*tls.Certificate, error) {
|
func getCertificate(info *tls.ClientHelloInfo) (*tls.Certificate, error) {
|
||||||
if config.TLSMode == "self-signed" {
|
switch config.TLSMode {
|
||||||
|
case "self-signed":
|
||||||
if isTimeSyncNeeded() || !timeSyncSuccess {
|
if isTimeSyncNeeded() || !timeSyncSuccess {
|
||||||
return nil, fmt.Errorf("time is not synced")
|
return nil, fmt.Errorf("time is not synced")
|
||||||
}
|
}
|
||||||
return certSigner.GetCertificate(info)
|
return certSigner.GetCertificate(info)
|
||||||
} else if config.TLSMode == "custom" {
|
case "custom":
|
||||||
return certStore.GetCertificate(webSecureCustomCertificateName), nil
|
return certStore.GetCertificate(webSecureCustomCertificateName), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,7 +111,7 @@ func setTLSState(s TLSState) error {
|
||||||
err, _ := certStore.ValidateAndSaveCertificate(webSecureCustomCertificateName, s.Certificate, s.PrivateKey, true)
|
err, _ := certStore.ValidateAndSaveCertificate(webSecureCustomCertificateName, s.Certificate, s.PrivateKey, true)
|
||||||
// warn doesn't matter as ... we don't know the hostname yet
|
// warn doesn't matter as ... we don't know the hostname yet
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Failed to save certificate: %w", err)
|
return fmt.Errorf("failed to save certificate: %w", err)
|
||||||
}
|
}
|
||||||
config.TLSMode = "custom"
|
config.TLSMode = "custom"
|
||||||
case "self-signed":
|
case "self-signed":
|
||||||
|
@ -169,7 +170,7 @@ func runWebSecureServer() {
|
||||||
websecureLogger.Info().Str("listen", webSecureListen).Msg("Starting websecure server")
|
websecureLogger.Info().Str("listen", webSecureListen).Msg("Starting websecure server")
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
for _ = range stopTLS {
|
for range stopTLS {
|
||||||
websecureLogger.Info().Msg("Shutting down websecure server")
|
websecureLogger.Info().Msg("Shutting down websecure server")
|
||||||
err := server.Shutdown(context.Background())
|
err := server.Shutdown(context.Background())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -201,7 +202,7 @@ func startWebSecureServer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunWebSecureServer() {
|
func RunWebSecureServer() {
|
||||||
for _ = range startTLS {
|
for range startTLS {
|
||||||
websecureLogger.Info().Msg("Starting websecure server, as we have received a start signal")
|
websecureLogger.Info().Msg("Starting websecure server, as we have received a start signal")
|
||||||
if certStore == nil {
|
if certStore == nil {
|
||||||
initCertStore()
|
initCertStore()
|
||||||
|
|
Loading…
Reference in New Issue