From 0745c92e9aeecf44f5fb52370175b755684a1b46 Mon Sep 17 00:00:00 2001 From: Nazar Kanaev Date: Tue, 3 Nov 2020 20:58:26 +0000 Subject: [PATCH] auth parameter --- main.go | 35 +++++++++++++++++++++++++++++++++-- server/server.go | 3 +++ 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index 7720efd..628ae2e 100644 --- a/main.go +++ b/main.go @@ -1,23 +1,26 @@ package main import ( + "bufio" "flag" "fmt" + "github.com/nkanaev/yarr/platform" "github.com/nkanaev/yarr/server" "github.com/nkanaev/yarr/storage" - "github.com/nkanaev/yarr/platform" "log" "os" "path/filepath" + "strings" ) var Version string = "0.0" var GitHash string = "unknown" func main() { - var addr, db string + var addr, db, auth string var ver bool flag.StringVar(&addr, "addr", "127.0.0.1:7070", "address to run server on") + flag.StringVar(&auth, "auth", "", "path to a file containing username:password") flag.StringVar(&db, "db", "", "storage file path") flag.BoolVar(&ver, "version", false, "print application version") flag.Parse() @@ -42,12 +45,40 @@ func main() { db = filepath.Join(storagePath, "storage.db") } + var username, password string + if auth != "" { + f, err := os.Open(auth) + if err != nil { + logger.Fatal("Failed to open auth file: ", err) + } + defer f.Close() + scanner := bufio.NewScanner(f) + for scanner.Scan() { + line := scanner.Text() + fmt.Println(line) + parts := strings.Split(line, ":") + if len(parts) != 2 { + logger.Fatalf("Invalid auth: %v (expected `username:password`)", line) + } + username = parts[0] + password = parts[1] + break + } + } + store, err := storage.New(db, logger) if err != nil { logger.Fatal("Failed to initialise database: ", err) } srv := server.New(store, logger, addr) + + if username != "" && password != "" { + srv.Username = username + srv.Password = password + } + fmt.Println(srv) + logger.Printf("starting server at http://%s", addr) platform.Start(srv) } diff --git a/server/server.go b/server/server.go index bce365d..f73fb2d 100644 --- a/server/server.go +++ b/server/server.go @@ -17,6 +17,9 @@ type Handler struct { feedQueue chan storage.Feed queueSize *int32 refreshRate chan int64 + // auth + Username string + Password string } func New(db *storage.Storage, logger *log.Logger, addr string) *Handler {