AUTH-2858: Set file to disable autoupdate

This commit is contained in:
Michael Borkenstein 2020-07-08 09:42:04 -05:00
parent 33701f50ec
commit 28d556b8d4
3 changed files with 26 additions and 4 deletions

View File

@ -4,12 +4,14 @@ import (
"context" "context"
"fmt" "fmt"
"os" "os"
"path/filepath"
"runtime" "runtime"
"time" "time"
"golang.org/x/crypto/ssh/terminal" "golang.org/x/crypto/ssh/terminal"
"gopkg.in/urfave/cli.v2" "gopkg.in/urfave/cli.v2"
"github.com/cloudflare/cloudflared/cmd/cloudflared/config"
"github.com/cloudflare/cloudflared/logger" "github.com/cloudflare/cloudflared/logger"
"github.com/equinox-io/equinox" "github.com/equinox-io/equinox"
"github.com/facebookgo/grace/gracenet" "github.com/facebookgo/grace/gracenet"
@ -17,10 +19,12 @@ import (
) )
const ( const (
DefaultCheckUpdateFreq = time.Hour * 24 DefaultCheckUpdateFreq = time.Hour * 24
appID = "app_idCzgxYerVD" appID = "app_idCzgxYerVD"
noUpdateInShellMessage = "cloudflared will not automatically update when run from the shell. To enable auto-updates, run cloudflared as a service: https://developers.cloudflare.com/argo-tunnel/reference/service/" noUpdateInShellMessage = "cloudflared will not automatically update when run from the shell. To enable auto-updates, run cloudflared as a service: https://developers.cloudflare.com/argo-tunnel/reference/service/"
noUpdateOnWindowsMessage = "cloudflared will not automatically update on Windows systems." noUpdateOnWindowsMessage = "cloudflared will not automatically update on Windows systems."
noUpdateManagedPackageMessage = "cloudflared will not automatically update if installed by a package manager."
isManagedInstallFile = ".installedFromPackageManager"
) )
var ( var (
@ -98,6 +102,11 @@ func Update(_ *cli.Context) error {
return errors.Wrap(err, "error setting up logger") return errors.Wrap(err, "error setting up logger")
} }
if wasInstalledFromPackageManager() {
logger.Error("cloudflared was installed by a package manager. Please update using the same method.")
return nil
}
updateOutcome := loggedUpdate(logger) updateOutcome := loggedUpdate(logger)
if updateOutcome.Error != nil { if updateOutcome.Error != nil {
return &statusErr{updateOutcome.Error} return &statusErr{updateOutcome.Error}
@ -217,6 +226,11 @@ func SupportAutoUpdate(logger logger.Service) bool {
return false return false
} }
if wasInstalledFromPackageManager() {
logger.Info(noUpdateManagedPackageMessage)
return false
}
if isRunningFromTerminal() { if isRunningFromTerminal() {
logger.Info(noUpdateInShellMessage) logger.Info(noUpdateInShellMessage)
return false return false
@ -224,6 +238,11 @@ func SupportAutoUpdate(logger logger.Service) bool {
return true return true
} }
func wasInstalledFromPackageManager() bool {
ok, _ := config.FileExists(filepath.Join(config.DefaultUnixConfigLocation, isManagedInstallFile))
return ok
}
func isRunningFromTerminal() bool { func isRunningFromTerminal() bool {
return terminal.IsTerminal(int(os.Stdout.Fd())) return terminal.IsTerminal(int(os.Stdout.Fd()))
} }

View File

@ -1,3 +1,5 @@
#!/bin/bash #!/bin/bash
set -eu set -eu
ln -s /usr/bin/cloudflared /usr/local/bin/cloudflared ln -s /usr/bin/cloudflared /usr/local/bin/cloudflared
mkdir -p /usr/local/etc/cloudflared/
touch /usr/local/etc/cloudflared/.installedFromPackageManager || true

View File

@ -1,3 +1,4 @@
#!/bin/bash #!/bin/bash
set -eu set -eu
rm /usr/local/bin/cloudflared rm /usr/local/bin/cloudflared
rm /usr/local/etc/cloudflared/.installedFromPackageManager || true