88 lines
2.8 KiB
Go
88 lines
2.8 KiB
Go
package config
|
|
|
|
import (
|
|
"github.com/BurntSushi/toml"
|
|
"github.com/kirsle/configdir"
|
|
"golang.org/x/crypto/bcrypt"
|
|
"path/filepath"
|
|
)
|
|
|
|
type ProfileMetadata struct {
|
|
Key string `toml:"key"`
|
|
Value string `toml:"value"`
|
|
}
|
|
|
|
type BlockedServer struct {
|
|
Hostname string `toml:"hostname"`
|
|
Reason string `toml:"reason"`
|
|
}
|
|
|
|
type PrivacyReplace struct {
|
|
Domain string `toml:"domain"`
|
|
ReplaceBy string `toml:"replace_by"`
|
|
}
|
|
|
|
type Config struct {
|
|
Domain string `toml:"domain"`
|
|
Username string `toml:"username"`
|
|
Password string `toml:"admin_password"`
|
|
Name string `toml:"name"`
|
|
Summary string `toml:"summary"`
|
|
Https bool `toml:"https"`
|
|
IconUrl string `toml:"icon_url""`
|
|
ImageUrl string `toml:"image_url"`
|
|
Metadata []ProfileMetadata `toml:"metadata"`
|
|
Secret string `toml:"secret"`
|
|
TrustedHosts []string `toml:"trusted_hosts"`
|
|
ManuallyApprove bool `toml:"manually_approves_followers"`
|
|
BlockedServers []BlockedServer `toml:"blocked_servers"`
|
|
CustomFooter string `toml:"custom_footer"`
|
|
Emoji string `toml:"emoji"`
|
|
DisabledNotificaions []string `toml:"disabled_notifications"`
|
|
CodeTheme string `toml:"code_highlighting_theme"`
|
|
AlsoKnownAs string `toml:"also_known_as"`
|
|
HideFollowers bool `toml:"hides_followers"`
|
|
HideFollowing bool `toml:"hides_following"`
|
|
InboxRetentionDays int `toml:"inbox_retention_days"`
|
|
CustomCSP string `toml:"custom_content_security_policy"`
|
|
WebfingerDomain string `toml:"webfinger_domain"`
|
|
Debug bool `toml:"debug"`
|
|
PrivacyReplace []PrivacyReplace `toml:"privacy_replace"`
|
|
KeyPath string `toml:"key_path"`
|
|
SessionTimeout int `toml:"session_timeout"`
|
|
Id string `toml:"id"`
|
|
}
|
|
|
|
var config Config
|
|
|
|
func newConfig() Config {
|
|
return Config{
|
|
TrustedHosts: []string{"127.0.0.1"},
|
|
CodeTheme: "friendly_grayscale",
|
|
InboxRetentionDays: 15,
|
|
SessionTimeout: 3600 * 24 * 3,
|
|
}
|
|
}
|
|
|
|
func init() {
|
|
config = newConfig()
|
|
configPath := configdir.LocalConfig("gopub")
|
|
if err := configdir.MakePath(configPath); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
configFile := filepath.Join(configPath, "profile.toml")
|
|
if _, err := toml.DecodeFile(configFile, &config); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
func GetConfig() Config {
|
|
return config
|
|
}
|
|
|
|
func CheckPassword(pass string) bool {
|
|
err := bcrypt.CompareHashAndPassword([]byte(config.Password), []byte(pass))
|
|
|
|
return err == nil
|
|
}
|