auth parameter

This commit is contained in:
Nazar Kanaev 2020-11-03 20:58:26 +00:00
parent 7c06952a7d
commit 0745c92e9a
2 changed files with 36 additions and 2 deletions

35
main.go
View File

@ -1,23 +1,26 @@
package main package main
import ( import (
"bufio"
"flag" "flag"
"fmt" "fmt"
"github.com/nkanaev/yarr/platform"
"github.com/nkanaev/yarr/server" "github.com/nkanaev/yarr/server"
"github.com/nkanaev/yarr/storage" "github.com/nkanaev/yarr/storage"
"github.com/nkanaev/yarr/platform"
"log" "log"
"os" "os"
"path/filepath" "path/filepath"
"strings"
) )
var Version string = "0.0" var Version string = "0.0"
var GitHash string = "unknown" var GitHash string = "unknown"
func main() { func main() {
var addr, db string var addr, db, auth string
var ver bool var ver bool
flag.StringVar(&addr, "addr", "127.0.0.1:7070", "address to run server on") 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.StringVar(&db, "db", "", "storage file path")
flag.BoolVar(&ver, "version", false, "print application version") flag.BoolVar(&ver, "version", false, "print application version")
flag.Parse() flag.Parse()
@ -42,12 +45,40 @@ func main() {
db = filepath.Join(storagePath, "storage.db") 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) store, err := storage.New(db, logger)
if err != nil { if err != nil {
logger.Fatal("Failed to initialise database: ", err) logger.Fatal("Failed to initialise database: ", err)
} }
srv := server.New(store, logger, addr) 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) logger.Printf("starting server at http://%s", addr)
platform.Start(srv) platform.Start(srv)
} }

View File

@ -17,6 +17,9 @@ type Handler struct {
feedQueue chan storage.Feed feedQueue chan storage.Feed
queueSize *int32 queueSize *int32
refreshRate chan int64 refreshRate chan int64
// auth
Username string
Password string
} }
func New(db *storage.Storage, logger *log.Logger, addr string) *Handler { func New(db *storage.Storage, logger *log.Logger, addr string) *Handler {