feat: manage ca authorizations
This commit is contained in:
@@ -7,8 +7,6 @@ import (
|
||||
|
||||
"github.com/pocketbase/pocketbase/core"
|
||||
m "github.com/pocketbase/pocketbase/migrations"
|
||||
|
||||
"github.com/usual2970/certimate/internal/domain"
|
||||
)
|
||||
|
||||
func init() {
|
||||
@@ -179,20 +177,20 @@ func init() {
|
||||
}
|
||||
|
||||
for _, workflowRun := range workflowRuns {
|
||||
type oldWorkflowRunLogRecord struct {
|
||||
type dWorkflowRunLogRecord struct {
|
||||
Time string `json:"time"`
|
||||
Level string `json:"level"`
|
||||
Content string `json:"content"`
|
||||
Error string `json:"error"`
|
||||
}
|
||||
type oldWorkflowRunLog struct {
|
||||
NodeId string `json:"nodeId"`
|
||||
NodeName string `json:"nodeName"`
|
||||
Records []oldWorkflowRunLogRecord `json:"records"`
|
||||
Error string `json:"error"`
|
||||
type dWorkflowRunLog struct {
|
||||
NodeId string `json:"nodeId"`
|
||||
NodeName string `json:"nodeName"`
|
||||
Records []dWorkflowRunLogRecord `json:"records"`
|
||||
Error string `json:"error"`
|
||||
}
|
||||
|
||||
logs := make([]oldWorkflowRunLog, 0)
|
||||
logs := make([]dWorkflowRunLog, 0)
|
||||
if err := workflowRun.UnmarshalJSONField("logs", &logs); err != nil {
|
||||
continue
|
||||
}
|
||||
@@ -259,8 +257,20 @@ func init() {
|
||||
return err
|
||||
}
|
||||
|
||||
type dWorkflowNode struct {
|
||||
Id string `json:"id"`
|
||||
Type string `json:"type"`
|
||||
Name string `json:"name"`
|
||||
Config map[string]any `json:"config"`
|
||||
Inputs map[string]any `json:"inputs"`
|
||||
Outputs map[string]any `json:"outputs"`
|
||||
Next *dWorkflowNode `json:"next,omitempty"`
|
||||
Branches []dWorkflowNode `json:"branches,omitempty"`
|
||||
Validated bool `json:"validated"`
|
||||
}
|
||||
|
||||
for _, workflowRun := range workflowRuns {
|
||||
node := &domain.WorkflowNode{}
|
||||
node := &dWorkflowNode{}
|
||||
for _, workflowOutput := range workflowOutputs {
|
||||
if workflowOutput.GetString("runId") != workflowRun.Get("id") {
|
||||
continue
|
||||
@@ -270,8 +280,8 @@ func init() {
|
||||
continue
|
||||
}
|
||||
|
||||
if node.Type != domain.WorkflowNodeTypeApply {
|
||||
node = &domain.WorkflowNode{}
|
||||
if node.Type != "apply" {
|
||||
node = &dWorkflowNode{}
|
||||
continue
|
||||
}
|
||||
}
|
||||
@@ -286,7 +296,7 @@ func init() {
|
||||
} else {
|
||||
workflow, _ := app.FindRecordById("workflow", workflowRun.GetString("workflowId"))
|
||||
if workflow != nil {
|
||||
rootNode := &domain.WorkflowNode{}
|
||||
rootNode := &dWorkflowNode{}
|
||||
if err := workflow.UnmarshalJSONField("content", rootNode); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -294,9 +304,9 @@ func init() {
|
||||
rootNode.Next = node
|
||||
workflowRun.Set("detail", rootNode)
|
||||
} else {
|
||||
rootNode := &domain.WorkflowNode{
|
||||
rootNode := &dWorkflowNode{
|
||||
Id: core.GenerateDefaultRandomId(),
|
||||
Type: domain.WorkflowNodeTypeStart,
|
||||
Type: "start",
|
||||
Name: "开始",
|
||||
Config: map[string]any{
|
||||
"trigger": "manual",
|
||||
|
||||
171
migrations/1743264000_upgrade.go
Normal file
171
migrations/1743264000_upgrade.go
Normal file
@@ -0,0 +1,171 @@
|
||||
package migrations
|
||||
|
||||
import (
|
||||
"github.com/pocketbase/pocketbase/core"
|
||||
m "github.com/pocketbase/pocketbase/migrations"
|
||||
)
|
||||
|
||||
func init() {
|
||||
m.Register(func(app core.App) error {
|
||||
// update collection `settings`
|
||||
{
|
||||
collection, err := app.FindCollectionByNameOrId("dy6ccjb60spfy6p")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
records, err := app.FindRecordsByFilter(collection, "name='sslProvider'", "-created", 1, 0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(records) == 1 {
|
||||
record := records[0]
|
||||
|
||||
content := make(map[string]any)
|
||||
if err := record.UnmarshalJSONField("content", &content); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if provider, ok := content["provider"]; ok {
|
||||
if providerStr, ok := provider.(string); ok {
|
||||
if providerStr == "letsencrypt_staging" {
|
||||
content["provider"] = "letsencryptstaging"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if config, ok := content["config"]; ok {
|
||||
if configMap, ok := config.(map[string]any); ok {
|
||||
if _, ok := configMap["letsencrypt_staging"]; ok {
|
||||
configMap["letsencryptstaging"] = configMap["letsencrypt_staging"]
|
||||
delete(configMap, "letsencrypt_staging")
|
||||
}
|
||||
if _, ok := configMap["gts"]; ok {
|
||||
configMap["googletrustservices"] = configMap["gts"]
|
||||
delete(configMap, "gts")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
record.Set("content", content)
|
||||
if err := app.Save(record); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// update collection `access`
|
||||
{
|
||||
collection, err := app.FindCollectionByNameOrId("4yzbv8urny5ja1e")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// update field
|
||||
if err := collection.Fields.AddMarshaledJSONAt(2, []byte(`{
|
||||
"hidden": false,
|
||||
"id": "hwy7m03o",
|
||||
"maxSelect": 1,
|
||||
"name": "provider",
|
||||
"presentable": false,
|
||||
"required": false,
|
||||
"system": false,
|
||||
"type": "select",
|
||||
"values": [
|
||||
"1panel",
|
||||
"acmehttpreq",
|
||||
"akamai",
|
||||
"aliyun",
|
||||
"aws",
|
||||
"azure",
|
||||
"baiducloud",
|
||||
"baishan",
|
||||
"baotapanel",
|
||||
"byteplus",
|
||||
"cachefly",
|
||||
"cdnfly",
|
||||
"cloudflare",
|
||||
"cloudns",
|
||||
"cmcccloud",
|
||||
"ctcccloud",
|
||||
"cucccloud",
|
||||
"desec",
|
||||
"dnsla",
|
||||
"dogecloud",
|
||||
"dynv6",
|
||||
"edgio",
|
||||
"fastly",
|
||||
"gname",
|
||||
"gcore",
|
||||
"godaddy",
|
||||
"goedge",
|
||||
"googletrustservices",
|
||||
"huaweicloud",
|
||||
"jdcloud",
|
||||
"k8s",
|
||||
"letsencrypt",
|
||||
"letsencryptstaging",
|
||||
"local",
|
||||
"namecheap",
|
||||
"namedotcom",
|
||||
"namesilo",
|
||||
"ns1",
|
||||
"porkbun",
|
||||
"powerdns",
|
||||
"qiniu",
|
||||
"qingcloud",
|
||||
"rainyun",
|
||||
"safeline",
|
||||
"ssh",
|
||||
"tencentcloud",
|
||||
"ucloud",
|
||||
"upyun",
|
||||
"vercel",
|
||||
"volcengine",
|
||||
"webhook",
|
||||
"westcn",
|
||||
"zerossl"
|
||||
]
|
||||
}`)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := app.Save(collection); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// update collection `acme_accounts`
|
||||
{
|
||||
collection, err := app.FindCollectionByNameOrId("012d7abbod1hwvr")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
records, err := app.FindRecordsByFilter(collection, "ca='letsencrypt_staging' || ca='gts'", "-created", 0, 0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, record := range records {
|
||||
ca := record.GetString("ca")
|
||||
if ca == "letsencrypt_staging" {
|
||||
record.Set("ca", "letsencryptstaging")
|
||||
} else if ca == "gts" {
|
||||
record.Set("ca", "googletrustservices")
|
||||
} else {
|
||||
continue
|
||||
}
|
||||
|
||||
if err := app.Save(record); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}, func(app core.App) error {
|
||||
return nil
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user