package main import ( "encoding/json" log "github.com/sirupsen/logrus" "io/ioutil" "os" "path/filepath" "strings" ) type configStaticHtml struct { Dir string StaticUrl string StripPrefix string } type configuration struct { Host string Port string DSN string TlsCert string TlsKey string Static []configStaticHtml Debug bool UploadsDir struct { FileDir string FileDefault string JpgDir string JpgDefault string ThumbDir string ThumbDefault string PdfDir string PdfDefault string JsonDir string } TempDir string Session struct { //TODO: figure what is this intended for Guest bool Year int //how many years Month int //how many years Day int //how many years } } var configFile = "config.json" var config = configuration{} func (m *configuration) readConfig() (e error) { log.Printf("read Path config from %s", configFile) body, e := ioutil.ReadFile(configFile) if e != nil { log.Fatal("Cannot read config from " + configFile) return } e = json.Unmarshal(body, m) // Check upload dir and defaults if !config.checkUploadDir() { log.Fatal("bad config file", configFile) return } if config.Debug { log.Println(config) } //TODO: check config before proceed further return } func (m *configuration) checkUploadDir() (valid bool) { valid = true if !fileExists(m.UploadsDir.ThumbDefault) { valid = false log.Fatal("default thumbnail is missing ", m.UploadsDir.ThumbDefault) } if !fileExists(m.UploadsDir.FileDefault) { valid = false log.Fatal("default file for upload is missing ", m.UploadsDir.FileDefault) } if !fileExists(m.UploadsDir.JpgDefault) { valid = false log.Fatal("default jpg for upload is missing ", m.UploadsDir.JpgDefault) } if !fileExists(m.UploadsDir.PdfDefault) { valid = false log.Fatal("default pdf for upload is missing ", &m.UploadsDir.PdfDefault) } //check dir if !fileExists(m.UploadsDir.FileDir) { valid = false log.Fatal("UploadsDir.FileDir is missing ", m.UploadsDir.FileDir) } if !fileExists(m.UploadsDir.JpgDir) { valid = false log.Fatal("UploadsDir.JpgDir is missing ", m.UploadsDir.JpgDir) } if !fileExists(m.UploadsDir.ThumbDir) { valid = false log.Fatal("UploadsDir.ThumbDir is missing ", m.UploadsDir.ThumbDir) } if !fileExists(m.UploadsDir.PdfDir) { valid = false log.Fatal("UploadsDir.PdfDir is missing ", m.UploadsDir.PdfDir) } if !fileExists(m.UploadsDir.JsonDir) { valid = false log.Fatal("UploadsDir.JsonDir is missing ", m.UploadsDir.JsonDir) } if !fileExists(m.TempDir) { valid = false log.Fatal("temp Dir is missing ", m.TempDir) } // convert to absolute path : fileDir p, e := filepath.Abs(m.UploadsDir.FileDir) if e != nil { valid = false log.Fatal("bad upload file dir", m.UploadsDir.FileDir, e) } m.UploadsDir.FileDir = p + string(os.PathSeparator) //change it to absolute dir // convert to absolute path : jpgDir p, e = filepath.Abs(m.UploadsDir.JpgDir) if e != nil { valid = false log.Fatal("bad jpg file dir", m.UploadsDir.JpgDir, e) } m.UploadsDir.JpgDir = p + string(os.PathSeparator) //change it to absolute dir // convert to absolute path : thumbDir p, e = filepath.Abs(m.UploadsDir.ThumbDir) if e != nil { valid = false log.Fatal("bad thumbnail dir", m.UploadsDir.ThumbDir, e) } m.UploadsDir.ThumbDir = p + string(os.PathSeparator) //change it to absolute dir // convert to absolute path : PdfDir p, e = filepath.Abs(m.UploadsDir.PdfDir) if e != nil { valid = false log.Fatal("bad pdf file dir", m.UploadsDir.PdfDir, e) } m.UploadsDir.PdfDir = p + string(os.PathSeparator) //change it to absolute dir // convert to absolute path : JsonDir p, e = filepath.Abs(m.UploadsDir.JsonDir) if e != nil { valid = false log.Fatal("bad pdf file dir", m.UploadsDir.JsonDir, e) } m.UploadsDir.JsonDir = p + string(os.PathSeparator) //change it to absolute dir // convert to absolute path : TmpDir p, e = filepath.Abs(m.TempDir) if e != nil { valid = false log.Fatal("bad TempDir dir", m.TempDir, e) } m.TempDir = p + string(os.PathSeparator) //change it to absolute dir return } func (m *configuration) getAvatarPath() (ret string) { for _, v := range m.Static { if strings.ToLower(v.Dir) == "avatar" { return v.Dir //found it } } return "" }