mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-09-28 07:36:38 +08:00
97 lines
2.1 KiB
Go
97 lines
2.1 KiB
Go
package repo
|
|
|
|
import "strings"
|
|
|
|
type ConfigAccessPolicy string
|
|
|
|
const (
|
|
ConfigAccessPublic ConfigAccessPolicy = "public"
|
|
ConfigAccessSensitive ConfigAccessPolicy = "sensitive"
|
|
)
|
|
|
|
var publicConfigKeys = map[string]struct{}{
|
|
"app_name": {},
|
|
"app_logo": {},
|
|
"app_favicon": {},
|
|
"app_bg_image": {},
|
|
"app_bg_image_light": {},
|
|
"app_bg_image_dark": {},
|
|
"cloudflare_site_key": {},
|
|
"is_commercial": {},
|
|
"hide_footer_brand": {},
|
|
}
|
|
|
|
var sensitiveConfigKeys = map[string]struct{}{
|
|
"jwt_secret": {},
|
|
"license_key": {},
|
|
"license_expiry": {},
|
|
"license_machine_id": {},
|
|
"machine_fingerprint": {},
|
|
"cloudflare_secret_key": {},
|
|
}
|
|
|
|
var systemManagedConfigKeys = map[string]struct{}{
|
|
"license_key": {},
|
|
"license_expiry": {},
|
|
"license_machine_id": {},
|
|
"is_commercial": {},
|
|
"machine_fingerprint": {},
|
|
}
|
|
|
|
func PolicyForConfig(name string) ConfigAccessPolicy {
|
|
if IsPublicConfigKey(name) {
|
|
return ConfigAccessPublic
|
|
}
|
|
if IsSensitiveConfigKey(name) {
|
|
return ConfigAccessSensitive
|
|
}
|
|
return ConfigAccessSensitive
|
|
}
|
|
|
|
func IsPublicConfigKey(name string) bool {
|
|
_, ok := publicConfigKeys[normalizeConfigKey(name)]
|
|
return ok
|
|
}
|
|
|
|
func IsSensitiveConfigKey(name string) bool {
|
|
_, ok := sensitiveConfigKeys[normalizeConfigKey(name)]
|
|
return ok
|
|
}
|
|
|
|
func IsSystemManagedConfigKey(name string) bool {
|
|
_, ok := systemManagedConfigKeys[normalizeConfigKey(name)]
|
|
return ok
|
|
}
|
|
|
|
func FilterSensitiveConfigs(in map[string]string) map[string]string {
|
|
if len(in) == 0 {
|
|
return map[string]string{}
|
|
}
|
|
out := make(map[string]string, len(in))
|
|
for name, value := range in {
|
|
if IsSensitiveConfigKey(name) {
|
|
continue
|
|
}
|
|
out[name] = value
|
|
}
|
|
return out
|
|
}
|
|
|
|
func FilterBackupConfigs(in map[string]string) map[string]string {
|
|
if len(in) == 0 {
|
|
return map[string]string{}
|
|
}
|
|
out := make(map[string]string, len(in))
|
|
for name, value := range in {
|
|
if IsSensitiveConfigKey(name) || IsSystemManagedConfigKey(name) {
|
|
continue
|
|
}
|
|
out[name] = value
|
|
}
|
|
return out
|
|
}
|
|
|
|
func normalizeConfigKey(name string) string {
|
|
return strings.ToLower(strings.TrimSpace(name))
|
|
}
|