2026-04-29
This commit is contained in:
56
internal/pkg/config/api.go
Normal file
56
internal/pkg/config/api.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"net"
|
||||
|
||||
"github.com/creasty/defaults"
|
||||
"gitea.sunhpc.com/kelvin/sunhpc/internal/pkg/util"
|
||||
)
|
||||
|
||||
type IPNet net.IPNet
|
||||
|
||||
func (n IPNet) MarshalText() ([]byte, error) {
|
||||
ipnet := n.IPNet()
|
||||
return []byte((&ipnet).String()), nil
|
||||
}
|
||||
|
||||
func (n *IPNet) UnmarshalText(text []byte) error {
|
||||
_, network, err := net.ParseCIDR(string(text))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*n = IPNet(*network)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (n IPNet) IPNet() net.IPNet {
|
||||
return net.IPNet(n)
|
||||
}
|
||||
|
||||
type APIConf struct {
|
||||
EnabledP *bool `yaml:"enabled,omitempty" default:"false"`
|
||||
TLSEnabledP *bool `yaml:"tls,omitempty"`
|
||||
AllowedNets []IPNet `yaml:"allowed subnets,omitempty" default:"[\"127.0.0.0/8\", \"::1/128\"]"`
|
||||
}
|
||||
|
||||
func (conf *APIConf) AllowedIPNets() (allowedIPNets []net.IPNet) {
|
||||
for _, allowedIPNet := range conf.AllowedNets {
|
||||
allowedIPNets = append(allowedIPNets, allowedIPNet.IPNet())
|
||||
}
|
||||
return allowedIPNets
|
||||
}
|
||||
|
||||
func (conf *APIConf) Unmarshal(unmarshal func(interface{}) error) error {
|
||||
if err := defaults.Set(conf); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (conf APIConf) Enabled() bool {
|
||||
return util.BoolP(conf.EnabledP)
|
||||
}
|
||||
|
||||
func (conf APIConf) TLSEnabled() bool {
|
||||
return util.BoolP(conf.TLSEnabledP)
|
||||
}
|
||||
Reference in New Issue
Block a user