fedilogue/config.go

77 lines
1.7 KiB
Go

package main
import (
"io/ioutil"
"encoding/json"
"muzzammil.xyz/jsonc"
"log"
)
type Database struct {
Host string `"json:host"`
Port int `"json:port"`
Username string `"json:username"`
Password string `"json:password"`
Workers int `"json:workers"`
}
type MassFollower struct {
Acct string `"json:acct"`
Name string `"json:name"`
Summary string `"json:summary"`
FollowingCount int `"json:followingcount"`
FollowLimit int `"json:followlimit"`
}
type ExtAccount struct {
Username string `"json:username"`
Password string `"json:password"`
Endpoint string `"json:endpoint"`
Followlimit int `"json:followlimit"`
}
type Proxy struct {
Host string `"json:host"`
Port int `"json:port"`
Username string `"json:username'`
Password string `"json:password"`
}
type Settings struct {
Autostart []string `"json:autostart"`
Crawl bool `"json:crawl"`
Banned []string `"json:banned"`
Alwaysbot []string `"json:alwaysbot"`
Proxies []Proxy `"json:proxies"`
Externalaccounts []ExtAccount `"json:externalaccounts"`
MassFollowers []MassFollower `"json:massfollowers"`
Database Database `"json:database"`
}
var settings Settings
func StringExists(needle string, haystack []string) (bool) {
for _, check := range haystack {
if check == needle {
return true
}
}
return false
}
func getSettings() {
c, err := ioutil.ReadFile("config.jsonc")
if (err != nil) {
log.Fatal("Unable to open config.jsonc, exiting: ", err)
}
jsoncbin := jsonc.ToJSON(c) // Calling jsonc.ToJSON() to convert JSONC to JSON
if jsonc.Valid(jsoncbin) == false {
log.Fatal("Invalid jsonc, exiting.")
}
err = json.Unmarshal(jsoncbin, &settings)
if err != nil {
log.Fatal("Unable to parse config.jsonc, exiting: ", err)
}
}