12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package main
- import (
- "fmt"
- "encoding/json"
- "io/ioutil"
- "runtime"
- "os"
- "errors"
- )
- type Config struct {
- configpath string
- linkpath string
- webpath string
- domain string
- }
- func geturl (url string, linkpath string, checkjson bool) (string, string) {
- payload := getlinks(linkpath)
- for k := range payload {
- if checkjson {
- if url == payload[k] {
- return url, k
- }
- } else {
- if url == k {
- return payload[k].(string), k
- }
- }
- }
- return "", ""
- }
- func getlinks (linkpath string) map[string]interface{} {
- data, err := ioutil.ReadFile(linkpath)
- if err != nil {
- fmt.Println("links.jsonを開けられません: ", err)
- }
- var payload map[string]interface{}
- json.Unmarshal(data, &payload)
- return payload
- }
- func getconf () (Config, error) {
- var cnf Config
- prefix := "/usr"
- if runtime.GOOS == "freebsd" || runtime.GOOS == "openbsd" {
- prefix += "/local"
- }
- cnf.configpath = "/etc/urloli/config.json"
- cnf.linkpath = "/etc/urloli/links.json"
- if runtime.GOOS == "freebsd" {
- cnf.configpath = prefix + cnf.configpath
- cnf.linkpath = prefix + cnf.linkpath
- }
- data, err := ioutil.ReadFile(cnf.configpath)
- if err != nil {
- fmt.Println("config.jsonを開けられません: ", err)
- return cnf, errors.New("コンフィグファイルは " + cnf.configpath + " に創作して下さい。")
- }
- var payload map[string]interface{}
- json.Unmarshal(data, &payload)
- if payload["webpath"] == nil {
- return cnf, errors.New("「webpath」の値が設置していません。")
- }
- if payload["domain"] == nil {
- return cnf, errors.New("「domain」の値が設置していません。")
- }
- if _, err := os.Stat(payload["webpath"].(string)); err != nil {
- fmt.Printf("%v\n", err)
- return cnf, errors.New("mkdirコマンドを使って、 " + payload["webpath"].(string))
- }
- if !checkprefix(payload["domain"].(string)) {
- return cnf, errors.New("URLは「http://」又は「https://」で始める様にして下さい。")
- }
- cnf.webpath = payload["webpath"].(string)
- cnf.domain = payload["domain"].(string)
- payload = nil
- return cnf, nil
- }
|