package config

import "crypto/tls"

type Config interface {
	User          (name string) User
	OverUsers     (func (name string, user User) bool)
	
	RconEnable    () bool
	
	RouterPort    () int
	HTTPSPort     () int
	HTTPSEnable   () bool
	HTTPPort      () int
	HTTPEnable    () bool
	GeminiPort    () int
	GeminiEnable  () bool
	Certificate   () tls.Certificate
	
	ResolveAlias  (alias string) string
	AliasFallback () string
	OverAliases   (func (alias, target string) bool)
}

type User interface {
	Validate     (key []byte) bool
	RconAllow    () bool
	
	OverPatterns (func (pattern string) bool)
	CanMountOn   (scheme, host, path string) bool
}
