2018-12-24 17:45:15 +00:00
|
|
|
/*
|
2022-11-11 04:49:16 +00:00
|
|
|
* Copyright © 2018, 2020-2021 Musing Studio LLC.
|
2018-12-24 17:45:15 +00:00
|
|
|
*
|
|
|
|
* This file is part of WriteFreely.
|
|
|
|
*
|
|
|
|
* WriteFreely is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU Affero General Public License, included
|
|
|
|
* in the LICENSE file in this source code package.
|
|
|
|
*/
|
2018-12-31 06:05:26 +00:00
|
|
|
|
2018-11-08 03:06:34 +00:00
|
|
|
package config
|
|
|
|
|
|
|
|
import (
|
2021-04-26 15:18:51 +00:00
|
|
|
"github.com/writeas/web-core/log"
|
|
|
|
"golang.org/x/net/idna"
|
2020-01-02 20:50:54 +00:00
|
|
|
"net/http"
|
2021-04-26 15:18:51 +00:00
|
|
|
"net/url"
|
2018-11-08 03:06:34 +00:00
|
|
|
"strings"
|
2020-01-02 20:50:54 +00:00
|
|
|
"time"
|
2018-11-08 03:06:34 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
// FriendlyHost returns the app's Host sans any schema
|
|
|
|
func (ac AppCfg) FriendlyHost() string {
|
2021-04-26 15:18:51 +00:00
|
|
|
rawHost := ac.Host[strings.Index(ac.Host, "://")+len("://"):]
|
|
|
|
|
|
|
|
u, err := url.Parse(ac.Host)
|
|
|
|
if err != nil {
|
|
|
|
log.Error("url.Parse failed on %s: %s", ac.Host, err)
|
|
|
|
return rawHost
|
|
|
|
}
|
|
|
|
d, err := idna.ToUnicode(u.Hostname())
|
|
|
|
if err != nil {
|
|
|
|
log.Error("idna.ToUnicode failed on %s: %s", ac.Host, err)
|
|
|
|
return rawHost
|
|
|
|
}
|
|
|
|
|
|
|
|
res := d
|
|
|
|
if u.Port() != "" {
|
|
|
|
res += ":" + u.Port()
|
|
|
|
}
|
|
|
|
return res
|
2018-11-08 03:06:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (ac AppCfg) CanCreateBlogs(currentlyUsed uint64) bool {
|
|
|
|
if ac.MaxBlogs <= 0 {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
return int(currentlyUsed) < ac.MaxBlogs
|
|
|
|
}
|
2020-01-02 20:50:54 +00:00
|
|
|
|
|
|
|
// OrDefaultString returns input or a default value if input is empty.
|
|
|
|
func OrDefaultString(input, defaultValue string) string {
|
|
|
|
if len(input) == 0 {
|
|
|
|
return defaultValue
|
|
|
|
}
|
|
|
|
return input
|
|
|
|
}
|
|
|
|
|
|
|
|
// DefaultHTTPClient returns a sane default HTTP client.
|
|
|
|
func DefaultHTTPClient() *http.Client {
|
|
|
|
return &http.Client{Timeout: 10 * time.Second}
|
|
|
|
}
|