From af61458371c4153e8cdfe58c43bfd7db33ae78e1 Mon Sep 17 00:00:00 2001 From: Stephen Demos Date: Tue, 5 Dec 2017 14:54:10 -0800 Subject: [PATCH] cmd: add very simple cmdline omaha server this implementation uses the TrivialServer that is already provided by the go-omaha library. it is a very simple wrapper, simply asking for the file, version, and listening address on the command line. it can only handle one package at a time, naming the payload from the server "update.gz", which is the standard filename for the update payload. the additional metadata required for package creation is generated based on the provided file. when the server is setup, update_engine can be pointed at it by setting the SERVER variable in /etc/coreos/update.conf --- .gitignore | 2 ++ Makefile | 25 +++++++++++++++++++++ cmd/serve-package/main.go | 46 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 Makefile create mode 100644 cmd/serve-package/main.go diff --git a/.gitignore b/.gitignore index 5fff1d9..076e7fb 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ pkg +bin + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..eb1293a --- /dev/null +++ b/Makefile @@ -0,0 +1,25 @@ +# kernel-style V=1 build verbosity +ifeq ("$(origin V)", "command line") + BUILD_VERBOSE = $(V) +endif + +ifeq ($(BUILD_VERBOSE),1) + Q = +else + Q = @ +endif + +.PHONY: all +all: bin/serve-package + +bin/serve-package: + $(Q)go build -o $@ cmd/serve-package/main.go + +.PHONY: clean +clean: + $(Q)rm -rf bin + +.PHONY: vendor +vendor: + $(Q)glide update --strip-vendor + $(Q)glide-vc --use-lock-file --no-tests --only-code diff --git a/cmd/serve-package/main.go b/cmd/serve-package/main.go new file mode 100644 index 0000000..b87d0f1 --- /dev/null +++ b/cmd/serve-package/main.go @@ -0,0 +1,46 @@ +package main + +import ( + "flag" + "fmt" + "os" + + "github.com/coreos/go-omaha/omaha" +) + +func main() { + pkgfile := flag.String("package-file", "", "Path to the update payload") + version := flag.String("package-version", "", "Semantic version of the package provided") + listenAddress := flag.String("listen-address", ":8000", "Host and IP to listen on") + + flag.Parse() + + if *pkgfile == "" { + fmt.Println("package-file is a required flag") + os.Exit(1) + } + + if *version == "" { + fmt.Println("package-version is a required flag") + os.Exit(1) + } + + server, err := omaha.NewTrivialServer(*listenAddress) + if err != nil { + fmt.Printf("failed to make new server: %v\n", err) + os.Exit(1) + } + + server.SetVersion(*version) + err = server.AddPackage(*pkgfile, "update.gz") + if err != nil { + fmt.Printf("failed to add package: %v\n", err) + os.Exit(1) + } + + err = server.Serve() + if err != nil { + fmt.Printf("server exited with an error: %v\n", err) + os.Exit(1) + } +}