feature: Switch from MachineID to InstanceID in update checks
This commit is contained in:
parent
8ea431b2e4
commit
cabf045202
1
go.mod
1
go.mod
|
|
@ -9,6 +9,7 @@ require (
|
||||||
github.com/fzipp/gocyclo v0.3.1
|
github.com/fzipp/gocyclo v0.3.1
|
||||||
github.com/go-co-op/gocron v1.6.2
|
github.com/go-co-op/gocron v1.6.2
|
||||||
github.com/go-critic/go-critic v0.6.1
|
github.com/go-critic/go-critic v0.6.1
|
||||||
|
github.com/google/uuid v1.3.0 // indirect
|
||||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.5.0
|
github.com/grpc-ecosystem/grpc-gateway/v2 v2.5.0
|
||||||
github.com/sirupsen/logrus v1.8.1
|
github.com/sirupsen/logrus v1.8.1
|
||||||
github.com/spf13/viper v1.8.1
|
github.com/spf13/viper v1.8.1
|
||||||
|
|
|
||||||
2
go.sum
2
go.sum
|
|
@ -185,6 +185,8 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe
|
||||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||||
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||||
|
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
||||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
|
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
|
||||||
|
|
|
||||||
|
|
@ -3,16 +3,16 @@ package updatecheck
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"github.com/denisbrodbeck/machineid"
|
"errors"
|
||||||
"github.com/go-co-op/gocron"
|
"github.com/go-co-op/gocron"
|
||||||
|
"github.com/google/uuid"
|
||||||
config "github.com/jamesread/OliveTin/internal/config"
|
config "github.com/jamesread/OliveTin/internal/config"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
"time"
|
"time"
|
||||||
"errors"
|
|
||||||
"os"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type updateRequest struct {
|
type updateRequest struct {
|
||||||
|
|
@ -20,7 +20,7 @@ type updateRequest struct {
|
||||||
CurrentCommit string
|
CurrentCommit string
|
||||||
OS string
|
OS string
|
||||||
Arch string
|
Arch string
|
||||||
MachineID string
|
InstallationID string
|
||||||
InContainer bool
|
InContainer bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -30,23 +30,55 @@ var AvailableVersion = "none"
|
||||||
// CurrentVersion is set by the main cmd (which is in tern set as a compile constant)
|
// CurrentVersion is set by the main cmd (which is in tern set as a compile constant)
|
||||||
var CurrentVersion = "?"
|
var CurrentVersion = "?"
|
||||||
|
|
||||||
func machineID() string {
|
func getInstanceIDFilename() string {
|
||||||
v, err := machineid.ProtectedID("OliveTin")
|
directory := "./"
|
||||||
|
|
||||||
if err != nil {
|
if _, err := os.Stat("/etc/OliveTin"); !os.IsNotExist(err) {
|
||||||
log.Warnf("Error getting machine ID: %v", err)
|
directory = "/etc/OliveTin/"
|
||||||
return "?"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return v
|
if _, err := os.Stat("/config"); !os.IsNotExist(err) {
|
||||||
|
directory = "/config/"
|
||||||
|
}
|
||||||
|
|
||||||
|
return directory + "installation-id.txt"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func installationID() string {
|
||||||
|
filename := getInstanceIDFilename()
|
||||||
|
|
||||||
|
content := "unset"
|
||||||
|
contentBytes, err := ioutil.ReadFile(filename)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
fileHandle, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_RDWR, 0644)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf("Could not read + create installation ID file: %v", err)
|
||||||
|
return "cant-create"
|
||||||
|
}
|
||||||
|
|
||||||
|
content = uuid.NewString()
|
||||||
|
fileHandle.WriteString(content)
|
||||||
|
fileHandle.Close()
|
||||||
|
} else {
|
||||||
|
content = string(contentBytes)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.WithFields(log.Fields{
|
||||||
|
"content": content,
|
||||||
|
}).Infof("Installation ID")
|
||||||
|
|
||||||
|
return content
|
||||||
}
|
}
|
||||||
|
|
||||||
func isInContainer() bool {
|
func isInContainer() bool {
|
||||||
if _, err := os.Stat("/.dockerenv"); errors.Is(err, os.ErrNotExist) {
|
if _, err := os.Stat("/.dockerenv"); errors.Is(err, os.ErrNotExist) {
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// StartUpdateChecker will start a job that runs periodically, checking
|
// StartUpdateChecker will start a job that runs periodically, checking
|
||||||
|
|
@ -64,8 +96,8 @@ func StartUpdateChecker(currentVersion string, currentCommit string, cfg *config
|
||||||
CurrentCommit: currentCommit,
|
CurrentCommit: currentCommit,
|
||||||
OS: runtime.GOOS,
|
OS: runtime.GOOS,
|
||||||
Arch: runtime.GOARCH,
|
Arch: runtime.GOARCH,
|
||||||
MachineID: machineID(),
|
InstallationID: installationID(),
|
||||||
InContainer: isInContainer(),
|
InContainer: isInContainer(),
|
||||||
}
|
}
|
||||||
|
|
||||||
s := gocron.NewScheduler(time.UTC)
|
s := gocron.NewScheduler(time.UTC)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue