Author: Adam <git@apiote.tk>
extract config from utils
db/db.go | 60 ++++++++++++++++++++++++++-------------------------- front/html.go | 6 ++-- i18n/i18n.go | 7 +++-- main.go | 12 +++++----- router.go | 8 +++--- | 10 +++++---
diff --git a/config/config.go b/config/config.go new file mode 100644 index 0000000000000000000000000000000000000000..598b4d795a863a4bc89552d3d78341ba58c04281 --- /dev/null +++ b/config/config.go @@ -0,0 +1,49 @@ +package config + +import ( + "bufio" + "fmt" + "os" + "strings" +) + +var ( + OpenRegistration = false + DataHome = "/usr/local/amuse" + Port uint = 5008 +) + +func ReadConfig(path string) error { + file, err := os.Open(path) + if err != nil { + if os.IsNotExist(err) { + return nil + } else { + fmt.Printf("error opening configuration %v\n", err) + return err + } + } + defer file.Close() + + scanner := bufio.NewScanner(file) + for scanner.Scan() { + line := scanner.Text() + assignment := strings.Split(line, "=") + variable := strings.Trim(assignment[0], " ") + value := strings.Trim(assignment[1], " ") + switch variable { + case "OpenRegistration": + OpenRegistration = value == "true" + case "DataHome": + DataHome = value + case "Port": + fmt.Sscanf(value, "%d", &Port) + } + } + + if err := scanner.Err(); err != nil { + fmt.Printf("error reading configuration %v\n", err) + return err + } + return nil +} diff --git a/db/db.go b/db/db.go index 23bc3b4bcc70d409942b15ca35072482999fded8..743d306f07a2ecef6adcfc349085c94df36c9f47 100644 --- a/db/db.go +++ b/db/db.go @@ -2,7 +2,7 @@ package db import ( "notabug.org/apiote/amuse/datastructure" - "notabug.org/apiote/amuse/utils" + "notabug.org/apiote/amuse/config" "crypto/rand" "database/sql" @@ -49,7 +49,7 @@ IsLong bool } func Migrate() error { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { return err } @@ -83,7 +83,7 @@ return nil } func MakeAdmin(username string) error { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return err @@ -116,7 +116,7 @@ return nil } func InsertUser(username, password, sfaSecret, recoveryCodes string) error { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return err @@ -132,7 +132,7 @@ return nil } func GetUser(username string) (*User, error) { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return nil, err @@ -157,7 +157,7 @@ return &user, nil } func UpdateRecoveryCodes(username, recoveryCodes string) error { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return err @@ -177,7 +177,7 @@ sessionIdRaw := make([]byte, 64) rand.Read(sessionIdRaw) sessionId := hex.EncodeToString(sessionIdRaw) - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return Session{}, err @@ -199,7 +199,7 @@ return Session{Id: sessionId, Username: username, IsLong: long}, nil } func GetSession(token string) (*Session, error) { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return nil, err @@ -225,7 +225,7 @@ return &session, nil } func ClearSessions(username string) error { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return err @@ -242,7 +242,7 @@ return nil } func RemoveSession(username, token string) error { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return err @@ -273,7 +273,7 @@ fmt.Fprintf(os.Stderr, "Load location err: %v\n", err) return times, err } - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return times, err @@ -310,7 +310,7 @@ return times, nil } func AddToExperiences(username, itemId string, itemType datastructure.ItemType, datetime time.Time) (int, error) { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return 0, err @@ -374,7 +374,7 @@ return int(insertedRowsNumber - deletedRowsNumber), nil } func WatchWholeSerie(username, itemId string, episodes []string, itemType datastructure.ItemType, datetime time.Time) (int, error) { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return 0, err @@ -434,7 +434,7 @@ return modifiedRows, nil } func ClearSpecials(username, itemId string, episodes []string, itemType datastructure.ItemType) error { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return err @@ -490,7 +490,7 @@ return nil } func AddToWantList(username, itemId string, itemType datastructure.ItemType) error { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return err @@ -506,7 +506,7 @@ return nil } func RemoveFromWantList(username, itemId string, itemType datastructure.ItemType) error { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return err @@ -532,7 +532,7 @@ return nil } func IsOnWantList(username, itemId string, itemType datastructure.ItemType) (bool, error) { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return false, err @@ -555,7 +555,7 @@ if refs == 0 { return nil } - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return err @@ -572,7 +572,7 @@ return nil } func UpdateCacheItem(itemType datastructure.ItemType, itemId string, itemInfo datastructure.ItemInfo) error { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return err @@ -585,7 +585,7 @@ return nil } func RemoveCacheItem(itemType datastructure.ItemType, itemId string) error { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return err @@ -598,7 +598,7 @@ return err } func CleanItemCache() error { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return err @@ -611,7 +611,7 @@ return err } func GetCacheItem(itemType datastructure.ItemType, itemId string) (*datastructure.ItemInfo, error) { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return nil, err @@ -641,7 +641,7 @@ // ==== func GetCacheEntry(uri string) (*CacheEntry, error) { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return nil, err @@ -664,7 +664,7 @@ return &cacheEntry, err } func CleanCache() error { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return err @@ -691,7 +691,7 @@ return nil } func SaveCacheEntry(uri, etag string, data []byte) error { - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return err @@ -705,7 +705,7 @@ } func GetWatchlist(username, filter string, page int) (datastructure.Watchlist, error) { watchlist := datastructure.Watchlist{} - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return watchlist, err @@ -763,7 +763,7 @@ } func GetReadlist(username, filter string, page int) (datastructure.Readlist, error) { readlist := datastructure.Readlist{} - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return readlist, err @@ -821,7 +821,7 @@ } func GetTvQueue(username, filter string, page int) (datastructure.TvQueue, error) { tvQueue := datastructure.TvQueue{} - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return tvQueue, err @@ -904,7 +904,7 @@ } func GetWantlistUris() ([]string, error) { uris := []string{} - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return uris, err @@ -936,7 +936,7 @@ func GetUserExperiences(username, filter string, page int) (datastructure.Experiences, error) { experiences := datastructure.Experiences{} - db, err := sql.Open("sqlite3", utils.DataHome+"/amuse.db") + db, err := sql.Open("sqlite3", config.DataHome+"/amuse.db") if err != nil { fmt.Fprintf(os.Stderr, "DB open err\n") return experiences, err diff --git a/front/html.go b/front/html.go index 835e18533188c9a519785fbe51898784701d78d7..f7e5f2b856d087643c548ddde1cb1d391156cdfa 100644 --- a/front/html.go +++ b/front/html.go @@ -5,7 +5,7 @@ "notabug.org/apiote/amuse/accounts" "notabug.org/apiote/amuse/datastructure" "notabug.org/apiote/amuse/i18n" "notabug.org/apiote/amuse/tmdb" - "notabug.org/apiote/amuse/utils" + "notabug.org/apiote/amuse/config" "notabug.org/apiote/amuse/wikidata" "bytes" @@ -68,7 +68,7 @@ } data.Strings = strings - t, _ := template.ParseFiles(utils.DataHome + "/templates/" + file + ".html") + t, _ := template.ParseFiles(config.DataHome + "/templates/" + file + ".html") b := bytes.NewBuffer([]byte{}) err = t.Execute(b, data) if err != nil { @@ -156,7 +156,7 @@ data := RenderData{Data: secret} data.State.Error = authError var template string - if utils.OpenRegistration { + if config.OpenRegistration { template = "signup" } else { template = "signup_locked" diff --git a/i18n/i18n.go b/i18n/i18n.go index 4117b965e7442cc2abd9277e0397de33cea0a345..e9b2210985d310d56c8677421bdfc99b7675c25d 100644 --- a/i18n/i18n.go +++ b/i18n/i18n.go @@ -1,6 +1,7 @@ package i18n import ( + "notabug.org/apiote/amuse/config" "notabug.org/apiote/amuse/utils" "bytes" @@ -46,7 +47,7 @@ func LoadServerLangs() { var tags []string var defaultLocale string defaultLocaleIndex := -1 - filepath.Walk(utils.DataHome+"/i18n", func(path string, info os.FileInfo, err error) error { + filepath.Walk(config.DataHome+"/i18n", func(path string, info os.FileInfo, err error) error { if !info.IsDir() { if filepath.Ext(path) == ".toml" { tag := strings.Replace(filepath.Base(path), ".toml", "", 1) @@ -83,8 +84,8 @@ func LoadStrings(language string) (Translation, error) { var strings Translation var defaultTranslation Translation - _, err := toml.DecodeFile(filepath.Join(utils.DataHome+"/i18n", language+".toml"), &strings) - _, err2 := toml.DecodeFile(filepath.Join(utils.DataHome+"/i18n", "default.toml"), &defaultTranslation) + _, err := toml.DecodeFile(filepath.Join(config.DataHome+"/i18n", language+".toml"), &strings) + _, err2 := toml.DecodeFile(filepath.Join(config.DataHome+"/i18n", "default.toml"), &defaultTranslation) err = utils.Or(err, err2) stringsValue := reflect.ValueOf(&strings).Elem() diff --git a/main.go b/main.go index ac019a3e02120722cec70b8b65f57112cdc47179..adf274c333aff32acea1956088785396345c704e 100644 --- a/main.go +++ b/main.go @@ -1,9 +1,9 @@ package main import ( + "notabug.org/apiote/amuse/config" "notabug.org/apiote/amuse/db" "notabug.org/apiote/amuse/libamuse" - "notabug.org/apiote/amuse/utils" "flag" "fmt" @@ -17,12 +17,12 @@ manage := flag.String("m", "", "manage command") configPath := flag.String("c", "/etc/amuse.toml", "configPath") flag.Parse() - utils.ReadConfig(*configPath) + config.ReadConfig(*configPath) if *dataHome != "" { - utils.DataHome = *dataHome + config.DataHome = *dataHome } - if *port != -1 { - utils.Port = *port + if *port > 0 { + config.Port = uint(*port) } db.Migrate() @@ -47,5 +47,5 @@ return } } - route(utils.Port) + route(config.Port) } diff --git a/router.go b/router.go index c79a05a2bcdaeefa1245b6d14568fee8f8fa563a..da06eb9b4447a8d9e43979067d7f017d4e3f12b9 100644 --- a/router.go +++ b/router.go @@ -6,7 +6,7 @@ "notabug.org/apiote/amuse/db" "notabug.org/apiote/amuse/front" "notabug.org/apiote/amuse/libamuse" "notabug.org/apiote/amuse/network" - "notabug.org/apiote/amuse/utils" + "notabug.org/apiote/amuse/config" "crypto/sha256" "encoding/base64" @@ -243,7 +243,7 @@ func signupPost(w http.ResponseWriter, r *http.Request, acceptLanguages, mimetype string) { // todo check mimetype (html,capnproto) - if !utils.OpenRegistration { + if !config.OpenRegistration { err := errors.New("423") render("", err, w, acceptLanguages, mimetype) return @@ -309,7 +309,7 @@ } func static(w http.ResponseWriter, r *http.Request) { etagReq := r.Header.Get("If-None-Match") - f, err := os.Open(utils.DataHome + "/" + r.URL.Path[1:]) + f, err := os.Open(config.DataHome + "/" + r.URL.Path[1:]) if err != nil { w.WriteHeader(500) return @@ -536,7 +536,7 @@ setAuthCookie(false, "", w) render(loggedout, err, w, acceptLanguages, mimetype) } -func route(port int) { +func route(port uint) { portStr := fmt.Sprintf(":%d", port) http.HandleFunc("/", index) diff --git a/utils/config.go b/utils/config.go deleted file mode 100644 index 8b2e65d948ff7e6bc15697c5c34f20ecd8635c1a..0000000000000000000000000000000000000000 --- a/utils/config.go +++ /dev/null @@ -1,47 +0,0 @@ -package utils - -import ( - "bufio" - "fmt" - "os" - "strings" -) - -var ( - OpenRegistration = false - DataHome = "/usr/local/amuse" - Port = 5008 -) - -func ReadConfig(path string) error { - file, err := os.Open(path) - if err != nil { - if os.IsNotExist(err) { - return nil - } else { - fmt.Printf("error opening configuration %v\n", err) - return err - } - } - defer file.Close() - - scanner := bufio.NewScanner(file) - for scanner.Scan() { - line := scanner.Text() - assignment := strings.Split(line, "=") - variable := strings.Trim(assignment[0], " ") - value := strings.Trim(assignment[1], " ") - switch variable { - case "OpenRegistration": - OpenRegistration = value == "true" - case "DataHome": - DataHome = value - } - } - - if err := scanner.Err(); err != nil { - fmt.Printf("error reading configuration %v\n", err) - return err - } - return nil -}