mirror of
https://github.com/writefreely/writefreely
synced 2024-12-01 04:49:09 +00:00
967ee9679c
This internally converts the configured host name into its Punycode ASCII representation, while showing users the correct Unicode domain name.
62 lines
1.4 KiB
Go
62 lines
1.4 KiB
Go
/*
|
|
* Copyright © 2018, 2020-2021 A Bunch Tell LLC.
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
package config
|
|
|
|
import (
|
|
"github.com/writeas/web-core/log"
|
|
"golang.org/x/net/idna"
|
|
"net/http"
|
|
"net/url"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
// FriendlyHost returns the app's Host sans any schema
|
|
func (ac AppCfg) FriendlyHost() string {
|
|
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
|
|
}
|
|
|
|
func (ac AppCfg) CanCreateBlogs(currentlyUsed uint64) bool {
|
|
if ac.MaxBlogs <= 0 {
|
|
return true
|
|
}
|
|
return int(currentlyUsed) < ac.MaxBlogs
|
|
}
|
|
|
|
// 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}
|
|
}
|