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