From 58cc9588d92ab293d301e7267851bd9c4167e508 Mon Sep 17 00:00:00 2001 From: Elena Balakhonova Date: Tue, 3 Dec 2019 16:12:10 +0300 Subject: [PATCH] Descriptive passwords parsing --- gocheese.go | 17 +---------------- passwd.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 16 deletions(-) create mode 100644 passwd.go diff --git a/gocheese.go b/gocheese.go index fa2fb59..1d8d0b5 100644 --- a/gocheese.go +++ b/gocheese.go @@ -455,22 +455,7 @@ func main() { } return } - passwd, err := ioutil.ReadFile(*passwdPath) - if err != nil { - log.Fatal(err) - } - for _, credentials := range strings.Split(strings.TrimRight(string(passwd), "\n"), "\n") { - splitted := strings.Split(credentials, ":") - if len(splitted) != 2 { - log.Fatal("Wrong login:password format") - } - _, auther, err := strToAuther(splitted[1]) - if err != nil { - log.Fatal(err) - } - passwords[splitted[0]] = auther - log.Println("Added password for " + splitted[0]) - } + refreshPasswd() log.Println("root:", *root, "bind:", *bind) http.HandleFunc(*norefreshURLPath, handler) http.HandleFunc(*refreshURLPath, handler) diff --git a/passwd.go b/passwd.go new file mode 100644 index 0000000..2941956 --- /dev/null +++ b/passwd.go @@ -0,0 +1,48 @@ +/* +GoCheese -- Python private package repository and caching proxy +Copyright (C) 2019 Sergey Matveev + 2019 Elena Balakhonova + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, version 3 of the License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +package main + +import ( + "io/ioutil" + "log" + "strings" +) + +func refreshPasswd() { + passwd, err := ioutil.ReadFile(*passwdPath) + if err != nil { + log.Fatal(err) + } + for i, credentials := range strings.Split(strings.TrimRight(string(passwd), "\n"), "\n") { + splitted := strings.Split(credentials, ":") + if len(splitted) != 2 { + log.Fatalf("%s:%d: Wrong login:password format", *passwdPath, i) + } + login := splitted[0] + if _, exists := passwords[login]; exists { + log.Fatalf("%s:%d: %s: already exists", *passwdPath, i, login) + } + _, auther, err := strToAuther(splitted[1]) + if err != nil { + log.Fatalf("%s:%d: %s: %s", *passwdPath, i, login, err) + } + passwords[login] = auther + log.Println("Added password for " + login) + } +} -- 2.44.0