| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package main
- import (
- "encoding/json"
- "fmt"
- "golang.org/x/crypto/bcrypt"
- "io/ioutil"
- "os"
- "time"
- )
- var configFile = "config.json"
- var config = &configMain{
- Admins: map[string]configAdmin{
- "admin": {"admin", []byte("$2a$14$iAOnPBQp6rlPIMGmTzH8qef1pK6tgl9yIfSLlZ2Z9IzIYn6hQPawi")},
- },
- Boards: map[uint16]configBoard{},
- Secret: RandString(24),
- }
- type configMain struct{
- Admins map[string]configAdmin `json:"admins"`
- Boards map[uint16]configBoard `json:"boards"`
- Secret string `json:"secret"`
- }
- type configAdmin struct{
- Username string `json:"user"`
- Hash []byte `json:"hash"`
- }
- func (a *configAdmin) newPassword(pass string) error {
- var err error
- a.Hash, err = bcrypt.GenerateFromPassword([]byte(pass), 14)
- return err
- }
- func (a *configAdmin) checkPassword(pass string) bool {
- err := bcrypt.CompareHashAndPassword(a.Hash, []byte(pass))
- return err == nil
- }
- type configBoard struct{
- ID uint16 `json:"ID"`
- KEY []byte `json:"KEY"`
- KEY16 string `json:"KEY16"`
- LastSeen time.Time `json:"LastSeen"`
- }
- func loadConfig() {
- if _, err := os.Stat(configFile); os.IsNotExist(err) {
- fmt.Println("No config file. Creating a new one.")
- saveConfig()
- return
- }
- jsonFile, err := os.Open(configFile)
- errCheckExit(err, "Unable to open config file")
- defer jsonFile.Close()
- byteValue, _ := ioutil.ReadAll(jsonFile)
- err = json.Unmarshal(byteValue, config)
- errCheck(err, "Failed to unmarshal config")
- }
- func saveConfig() {
- jsonValue, _ := json.Marshal(config)
- err := ioutil.WriteFile(configFile, jsonValue, 0644)
- errCheck(err, "Failed to write config")
- }
|