liuhaijun 3f5f28d785 add sheduling agent
Change-Id: I89f35fb3984044c57f10727432755012542f9fd8
2023-11-16 10:55:57 +00:00

190 lines
6.0 KiB
Go

package utility
import (
"encoding/pem"
"github.com/golang/glog"
"io/ioutil"
"os"
"strconv"
"strings"
)
func NewBaseConfig() *cfg {
return &cfg{
secret: secret(),
jwtCert: jwtCert(),
jwtTokenLife: jwtTokenLife(),
jwtIssuer: jwtIssuer(),
}
}
type cfg struct {
secret Lazy
jwtCert Lazy
jwtTokenLife Lazy
jwtIssuer Lazy
}
func (s cfg) Secret() (secret []byte) {
Must(s.secret.Value(&secret))
return
}
func (s cfg) JWTCert() (jwtCert []byte) {
Must(s.jwtCert.Value(&jwtCert))
return
}
func (s cfg) JWTTokenLife() (tokenLife int) {
Must(s.jwtTokenLife.Value(&tokenLife))
return
}
func (s cfg) JWTIssuer() (issuer string) {
Must(s.jwtIssuer.Value(&issuer))
return
}
func (s cfg) Data() interface{} {
return &struct {
Secret string `json:"secret"`
JWTCert string `json:"jwtCert"`
JWTTokenLife int `json:"jwtTokenLife"`
JWTIssuer string `json:"jwtIssuer"`
}{
Secret: "********",
JWTCert: "********",
JWTTokenLife: s.JWTTokenLife(),
JWTIssuer: s.JWTIssuer(),
}
}
func GetEnv(key, defaultValue string) (value string) {
if value = os.Getenv(key); value == "" {
value = defaultValue
}
return
}
func secret() Lazy {
return NewLazy(func() (value interface{}, err error) {
if s := GetEnv("AEAD_SECRET", "internal"); s == "" || s == "internal" {
value = []byte("dazyunsecretkeysforuserstenx20141019generatedKey")
return
} else {
value = []byte(s)
}
return
})
}
func jwtCert() Lazy {
return NewLazy(func() (value interface{}, err error) {
if c := GetEnv("JWT_CERT", "internal"); c == "" || c == "internal" {
value = loadSecret()
return
} else if _, err = os.Stat(c); err == nil {
var content []byte
if content, err = ioutil.ReadFile(c); err != nil {
return
}
block, _ := pem.Decode(content)
value = block.Bytes
return
}
return
})
}
func jwtTokenLife() Lazy {
return NewLazy(func() (value interface{}, err error) {
hourStr := GetEnv("BEARER_TOKEN_LIFE", "2")
var hour int
if hour, err = strconv.Atoi(hourStr); err != nil {
glog.Fatalf("parse jwt token life failed, should be specified by number in hour, %s", err)
}
value = hour
return
})
}
func jwtIssuer() Lazy {
return NewLazy(func() (value interface{}, err error) {
value = GetEnv("TOKEN_ISSUER", "api-server")
return
})
}
func corsAllowHeaders() Lazy {
return NewLazy(func() (value interface{}, err error) {
headers := GetEnv(
"ALLOW_HEADERS",
"Content-Type,username,authorization,teamspace,project,onbehalfuser")
value = strings.Split(headers, ",")
return
})
}
func corsAllowMethods() Lazy {
return NewLazy(func() (value interface{}, err error) {
methods := GetEnv("ALLOW_METHODS", "GET,POST,PUT,DELETE,PATCH")
value = strings.Split(methods, ",")
return
})
}
func loadSecret() []byte {
block, _ := pem.Decode([]byte(`-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----`))
return block.Bytes
}