providers.json
This commit is contained in:
parent
ad99da70fb
commit
8a09c75e47
15
main.go
15
main.go
|
@ -1,8 +1,21 @@
|
|||
package main
|
||||
|
||||
import "acme-mana/src"
|
||||
import (
|
||||
"acme-mana/src"
|
||||
"acme-mana/src/cmd/cmd_handle"
|
||||
"acme-mana/src/conf"
|
||||
)
|
||||
|
||||
func main() {
|
||||
//src.Start()
|
||||
src.StartProgram()
|
||||
select {}
|
||||
//runServer()
|
||||
|
||||
}
|
||||
|
||||
func runServer() {
|
||||
conf.LoadAppConfig()
|
||||
cmd_handle.RunStart(nil, nil)
|
||||
select {}
|
||||
}
|
||||
|
|
|
@ -46,20 +46,6 @@ func Apply(cert *conf.CertConf) {
|
|||
|
||||
provider := getProvider(p)
|
||||
|
||||
//var provider challenge.Provider
|
||||
//
|
||||
//switch p.Type {
|
||||
//case "ali":
|
||||
// conf := alidns.NewDefaultConfig()
|
||||
// conf.RegionID = p.Conf["RegionID"]
|
||||
// conf.APIKey = p.Conf["APIKey"]
|
||||
// conf.SecretKey = p.Conf["SecretKey"]
|
||||
// provider, err = alidns.NewDNSProviderConfig(conf)
|
||||
// if err != nil {
|
||||
// log.Fatal(err)
|
||||
// }
|
||||
//}
|
||||
|
||||
chall := client.Challenge
|
||||
err = chall.SetDNS01Provider(provider)
|
||||
if err != nil {
|
||||
|
@ -87,61 +73,6 @@ func Apply(cert *conf.CertConf) {
|
|||
|
||||
}
|
||||
|
||||
//func Apply1(domain Domain) {
|
||||
// email, hosts, name := domain.Email, domain.Host, domain.Name
|
||||
// privateKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
|
||||
// if err != nil {
|
||||
// log.Fatal(err)
|
||||
// }
|
||||
//
|
||||
// acmeUser := &AcmeUser{
|
||||
// Email: email,
|
||||
// key: privateKey,
|
||||
// }
|
||||
//
|
||||
// config := lego.NewConfig(acmeUser)
|
||||
//
|
||||
// client, err := lego.NewClient(config)
|
||||
// if err != nil {
|
||||
// log.Fatal(err)
|
||||
// }
|
||||
//
|
||||
// ali := appConfig.Provider.Ali
|
||||
// conf := alidns.NewDefaultConfig()
|
||||
// conf.RegionID = ali.RegionID
|
||||
// conf.APIKey = ali.APIKey
|
||||
// conf.SecretKey = ali.SecretKey
|
||||
// provider, err := alidns.NewDNSProviderConfig(conf)
|
||||
// if err != nil {
|
||||
// log.Fatal(err)
|
||||
// }
|
||||
//
|
||||
// challenge := client.Challenge
|
||||
// err = challenge.SetDNS01Provider(provider)
|
||||
// if err != nil {
|
||||
// return
|
||||
// }
|
||||
//
|
||||
// registrar := client.Registration
|
||||
// reg, err := registrar.Register(registration.RegisterOptions{TermsOfServiceAgreed: true})
|
||||
// if err != nil {
|
||||
// log.Fatal(err)
|
||||
// }
|
||||
// acmeUser.Registration = reg
|
||||
//
|
||||
// request := certificate.ObtainRequest{
|
||||
// Domains: hosts,
|
||||
// Bundle: true,
|
||||
// }
|
||||
//
|
||||
// cert, err := client.Certificate.Obtain(request)
|
||||
// if err != nil {
|
||||
// log.Fatal(err)
|
||||
// }
|
||||
//
|
||||
// saveCertFile(cert, name)
|
||||
//}
|
||||
|
||||
func getProvider(p *conf.ProviderConf) challenge.Provider {
|
||||
|
||||
switch p.Type {
|
||||
|
|
75
src/acme/provider.go
Normal file
75
src/acme/provider.go
Normal file
|
@ -0,0 +1,75 @@
|
|||
package acme
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"encoding/json"
|
||||
"log"
|
||||
)
|
||||
|
||||
//go:embed providers.json
|
||||
var providerFile embed.FS
|
||||
|
||||
type ProviderInfo struct {
|
||||
Type string `json:"type"`
|
||||
Remarks string `json:"remarks"`
|
||||
Doc *ProviderDoc `json:"doc"`
|
||||
Variables *ConfVariables `json:"variables"`
|
||||
}
|
||||
|
||||
type ProviderDoc struct {
|
||||
Show string `json:"show"`
|
||||
Home string `json:"home"`
|
||||
Api string `json:"api"`
|
||||
Sdk string `json:"sdk"`
|
||||
}
|
||||
|
||||
type ConfVariables struct {
|
||||
Info string `json:"info"`
|
||||
Docs *[]string `json:"docs"`
|
||||
Items *[]ConfItem `json:"items"`
|
||||
}
|
||||
|
||||
type ConfItem struct {
|
||||
Name string `json:"name"`
|
||||
Type string `json:"type"`
|
||||
Require bool `json:"require"`
|
||||
Info string `json:"info"`
|
||||
}
|
||||
|
||||
var ProviderInfoMap map[string]ProviderInfo = nil
|
||||
|
||||
// ProviderInfos 数组
|
||||
var ProviderInfos = make([]ProviderInfo, 0)
|
||||
|
||||
func ListProvider() *[]ProviderInfo {
|
||||
if ProviderInfoMap == nil {
|
||||
initProvider()
|
||||
}
|
||||
return &ProviderInfos
|
||||
}
|
||||
func MapProvider() *map[string]ProviderInfo {
|
||||
if ProviderInfoMap == nil {
|
||||
initProvider()
|
||||
}
|
||||
return &ProviderInfoMap
|
||||
}
|
||||
func GetProvider(name string) *ProviderInfo {
|
||||
info := ProviderInfoMap[name]
|
||||
return &info
|
||||
}
|
||||
|
||||
func initProvider() {
|
||||
data, err := providerFile.ReadFile("providers.json")
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to read config file: %v", err)
|
||||
}
|
||||
var providers []ProviderInfo
|
||||
if err := json.Unmarshal(data, &providers); err != nil {
|
||||
log.Fatalf("Failed to parse config file: %v", err)
|
||||
}
|
||||
ProviderInfoMap = make(map[string]ProviderInfo)
|
||||
for _, provider := range providers {
|
||||
ProviderInfos = append(ProviderInfos, provider)
|
||||
ProviderInfoMap[provider.Type] = provider
|
||||
}
|
||||
}
|
66
src/acme/providers.json
Normal file
66
src/acme/providers.json
Normal file
|
@ -0,0 +1,66 @@
|
|||
[
|
||||
{
|
||||
"type": "alidns",
|
||||
"remarks": "ALIBABA CLOUD DNS",
|
||||
"doc": {
|
||||
"show": "https://go-acme.github.io/lego/dns/alidns/index.html",
|
||||
"home": "https://www.alibabacloud.com/product/dns",
|
||||
"api": "https://www.alibabacloud.com/help/en/alibaba-cloud-dns/latest/api-alidns-2015-01-09-dir-parsing-records",
|
||||
"sdk": "https://github.com/aliyun/alibaba-cloud-sdk-go"
|
||||
},
|
||||
"variables": {
|
||||
"info": "",
|
||||
"docs": [
|
||||
""
|
||||
],
|
||||
"items": [
|
||||
{
|
||||
"name": "RegionID",
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"info": "RegionID"
|
||||
},{
|
||||
"name": "APIKey",
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"info": "APIKey"
|
||||
},{
|
||||
"name": "SecretKey",
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"info": "SecretKey"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tencentcloud",
|
||||
"remarks": "TENCENT CLOUD DNS",
|
||||
"doc": {
|
||||
"show": "https://go-acme.github.io/lego/dns/tencentcloud/index.html",
|
||||
"home": "https://cloud.tencent.com/product/cns",
|
||||
"api": "https://cloud.tencent.com/document/product/1427/56153",
|
||||
"sdk": "https://github.com/tencentcloud/tencentcloud-sdk-go"
|
||||
},
|
||||
"variables": {
|
||||
"info": "",
|
||||
"docs": [
|
||||
""
|
||||
],
|
||||
"items": [
|
||||
{
|
||||
"name": "SecretID",
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"info": "SecretID"
|
||||
},
|
||||
{
|
||||
"name": "SecretKey",
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"info": "SecretKey"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
|
@ -87,6 +87,7 @@ func ServerStop(cmd *cobra.Command, args []string) {
|
|||
|
||||
func daemonStart() {
|
||||
// 启动 HttpServer
|
||||
server.HttpInstance = &server.HttpServer{}
|
||||
server.HttpInstance.Init()
|
||||
server.HttpInstance.Start()
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ func (s *HttpServer) Init() {
|
|||
|
||||
// initServer 初始化
|
||||
func (s *HttpServer) initServer(host string, port int) {
|
||||
//gin.SetMode(gin.ReleaseMode)
|
||||
s.engine = gin.Default()
|
||||
s.register()
|
||||
s.status = false
|
||||
|
@ -73,14 +74,20 @@ func (s *HttpServer) register() {
|
|||
service.Use(gin.Logger())
|
||||
service.Use(http_handler.GlobalErrorHandler())
|
||||
|
||||
fs := http.FileServer(http.FS(staticFiles))
|
||||
http.Handle("/static/", http.StripPrefix("/static/", fs))
|
||||
fs := http.FS(staticFiles)
|
||||
service.StaticFS("/s", fs)
|
||||
|
||||
certHandler := http_handler.CertHandlerInstance
|
||||
certGroup := service.Group("/api/v1/cert", http_handler.AuthMiddleware())
|
||||
certGroup.GET("/", certHandler.Get)
|
||||
|
||||
providerHandler := http_handler.ProviderHandlerInstance
|
||||
providerGroup := service.Group("/api/v1/provider", http_handler.AuthMiddleware())
|
||||
providerGroup.GET("/list", providerHandler.List)
|
||||
providerGroup.GET("/map", providerHandler.Map)
|
||||
|
||||
confHandler := http_handler.ConfHandlerInstance
|
||||
confGroup := service.Group("/api/v1", http_handler.AuthMiddleware())
|
||||
confGroup.GET("/conf", confHandler.Get)
|
||||
|
||||
}
|
||||
|
|
20
src/server/http_handler/provider.go
Normal file
20
src/server/http_handler/provider.go
Normal file
|
@ -0,0 +1,20 @@
|
|||
package http_handler
|
||||
|
||||
import (
|
||||
"acme-mana/src/acme"
|
||||
"acme-mana/src/server/model"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type ProviderHandler struct {
|
||||
}
|
||||
|
||||
var ProviderHandlerInstance = &ProviderHandler{}
|
||||
|
||||
func (h *ProviderHandler) List(c *gin.Context) {
|
||||
c.JSON(200, model.SuccessD(acme.ListProvider()))
|
||||
}
|
||||
|
||||
func (h *ProviderHandler) Map(c *gin.Context) {
|
||||
c.JSON(200, model.SuccessD(acme.MapProvider()))
|
||||
}
|
Loading…
Reference in New Issue
Block a user