hozonsite/config.go

50 行
1.3 KiB
Go

package main
import (
"os"
"fmt"
"runtime"
"encoding/json"
)
type Config struct {
configpath, webpath, datapath, domain string
}
func getconf () Config {
var payload map[string]interface{}
var cnf Config
// バイナリ、データ、及びFreeBSDとNetBSDの場合、コンフィグ
prefix := "/usr"
// BSDだけはただの/usrではない
if runtime.GOOS == "freebsd" || runtime.GOOS == "openbsd" {
prefix += "/local"
} else if runtime.GOOS == "netbsd" {
prefix += "/pkg"
}
// コンフィグファイル
cnf.configpath = "/etc/hozonsite/config.json"
cnf.datapath = prefix + "/share/hozonsite"
// また、FreeBSDとNetBSDだけは違う場所だ。OpenBSDは正しい場所
// FreeBSD = /usr/local/etc/hozonsite/config.json
// NetBSD = /usr/pkg/etc/hozonsite/config.json
if runtime.GOOS == "freebsd" || runtime.GOOS == "netbsd" {
cnf.configpath = prefix + cnf.configpath
}
// コンフィグファイルがなければ、死ね
data, err := os.ReadFile(cnf.configpath)
if err != nil {
fmt.Println("エラー:", err)
}
json.Unmarshal(data, &payload)
cnf.webpath = payload["webpath"].(string) // データパス
cnf.domain = payload["domain"].(string) // ドメイン名
payload = nil // もういらなくなった
return cnf
}