From 1dca6ecf8dff6131781dcf2f22aa4612a52ad149 Mon Sep 17 00:00:00 2001 From: yoan <536464346@qq.com> Date: Wed, 23 Oct 2024 16:25:21 +0800 Subject: [PATCH] An account for many customers --- go.mod | 20 +- go.sum | 56 +- internal/applicant/applicant.go | 81 +- internal/domain/acme_accounts.go | 17 + internal/pkg/utils/x509/x509.go | 33 + internal/repository/acme_account.go | 51 ++ migrations/1726569833_updated_domains.go | 85 --- migrations/1726670437_collections_snapshot.go | 694 ----------------- migrations/1727006428_collections_snapshot.go | 704 ----------------- migrations/1727188693_collections_snapshot.go | 704 ----------------- migrations/1727341442_collections_snapshot.go | 706 ------------------ migrations/1728610007_updated_access.go | 92 --- migrations/1729160433_updated_access.go | 93 --- migrations/1729241998_updated_access.go | 95 --- migrations/1729339341_updated_access.go | 98 --- ....go => 1729671262_collections_snapshot.go} | 88 ++- 16 files changed, 286 insertions(+), 3331 deletions(-) create mode 100644 internal/domain/acme_accounts.go create mode 100644 internal/repository/acme_account.go delete mode 100644 migrations/1726569833_updated_domains.go delete mode 100644 migrations/1726670437_collections_snapshot.go delete mode 100644 migrations/1727006428_collections_snapshot.go delete mode 100644 migrations/1727188693_collections_snapshot.go delete mode 100644 migrations/1727341442_collections_snapshot.go delete mode 100644 migrations/1728610007_updated_access.go delete mode 100644 migrations/1729160433_updated_access.go delete mode 100644 migrations/1729241998_updated_access.go delete mode 100644 migrations/1729339341_updated_access.go rename migrations/{1728778480_collections_snapshot.go => 1729671262_collections_snapshot.go} (89%) diff --git a/go.mod b/go.mod index 0147a2cf..dff90fd5 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn v1.0.1017 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1017 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ssl v1.0.992 - golang.org/x/crypto v0.27.0 + golang.org/x/crypto v0.28.0 k8s.io/apimachinery v0.31.1 k8s.io/client-go v0.31.1 ) @@ -149,19 +149,19 @@ require ( gocloud.dev v0.37.0 // indirect golang.org/x/image v0.18.0 // indirect golang.org/x/mod v0.21.0 // indirect - golang.org/x/net v0.29.0 // indirect + golang.org/x/net v0.30.0 // indirect golang.org/x/oauth2 v0.23.0 // indirect golang.org/x/sync v0.8.0 // indirect - golang.org/x/sys v0.25.0 // indirect - golang.org/x/term v0.24.0 // indirect - golang.org/x/text v0.18.0 // indirect - golang.org/x/time v0.6.0 // indirect + golang.org/x/sys v0.26.0 // indirect + golang.org/x/term v0.25.0 // indirect + golang.org/x/text v0.19.0 // indirect + golang.org/x/time v0.7.0 // indirect golang.org/x/tools v0.25.0 // indirect golang.org/x/xerrors v0.0.0-20240716161551-93cc26a95ae9 // indirect - google.golang.org/api v0.197.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/grpc v1.66.1 // indirect - google.golang.org/protobuf v1.34.2 // indirect + google.golang.org/api v0.202.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 // indirect + google.golang.org/grpc v1.67.1 // indirect + google.golang.org/protobuf v1.35.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect modernc.org/gc/v3 v3.0.0-20240722195230-4a140ff9c08e // indirect diff --git a/go.sum b/go.sum index 0513ac00..f666c84a 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,13 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ= -cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc= -cloud.google.com/go/auth v0.9.3 h1:VOEUIAADkkLtyfr3BLa3R8Ed/j6w1jTBmARx+wb5w5U= -cloud.google.com/go/auth v0.9.3/go.mod h1:7z6VY+7h3KUdRov5F1i8NDP5ZzWKYmEPO842BgCsmTk= +cloud.google.com/go v0.116.0 h1:B3fRrSDkLRt5qSHWe40ERJvhvnQwdZiHu0bJOpldweE= +cloud.google.com/go v0.116.0/go.mod h1:cEPSRWPzZEswwdr9BxE6ChEn01dWlTaF05LiC2Xs70U= +cloud.google.com/go/auth v0.9.8 h1:+CSJ0Gw9iVeSENVCKJoLHhdUykDgXSc4Qn+gu2BRtR8= +cloud.google.com/go/auth v0.9.8/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc= cloud.google.com/go/compute v1.25.0 h1:H1/4SqSUhjPFE7L5ddzHOfY2bCAvjwNRZPNl6Ni5oYU= -cloud.google.com/go/compute/metadata v0.5.1 h1:NM6oZeZNlYjiwYje+sYFjEpP0Q0zCan1bmQW/KmIrGs= -cloud.google.com/go/compute/metadata v0.5.1/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= +cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo= +cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= cloud.google.com/go/iam v1.1.11 h1:0mQ8UKSfdHLut6pH9FM3bI55KWR46ketn0PuXleDyxw= cloud.google.com/go/iam v1.1.11/go.mod h1:biXoiLWYIKntto2joP+62sd9uW5EpkZmKIvfNcTWlnQ= cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs= @@ -510,8 +510,8 @@ golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1m golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= -golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= +golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -560,8 +560,8 @@ golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= -golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -601,8 +601,8 @@ golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= -golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -614,8 +614,8 @@ golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= -golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= +golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= +golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -629,11 +629,11 @@ golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= -golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= -golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= +golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -661,28 +661,28 @@ gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJ gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -google.golang.org/api v0.197.0 h1:x6CwqQLsFiA5JKAiGyGBjc2bNtHtLddhJCE2IKuhhcQ= -google.golang.org/api v0.197.0/go.mod h1:AuOuo20GoQ331nq7DquGHlU6d+2wN2fZ8O0ta60nRNw= +google.golang.org/api v0.202.0 h1:y1iuVHMqokQbimW79ZqPZWo4CiyFu6HcCYHwSNyzlfo= +google.golang.org/api v0.202.0/go.mod h1:3Jjeq7M/SFblTNCp7ES2xhq+WvGL0KeXI0joHQBfwTQ= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU= -google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:hL97c3SYopEHblzpxRL4lSs523++l8DYxGM1FQiYmb4= +google.golang.org/genproto v0.0.0-20241015192408-796eee8c2d53 h1:Df6WuGvthPzc+JiQ/G+m+sNX24kc0aTBqoDN/0yyykE= +google.golang.org/genproto v0.0.0-20241015192408-796eee8c2d53/go.mod h1:fheguH3Am2dGp1LfXkrvwqC/KlFq8F0nLq3LryOMrrE= google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed h1:3RgNmBoI9MZhsj3QxC+AP/qQhNwpCLOvYDYYsFrhFt0= google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 h1:X58yt85/IXCx0Y3ZwN6sEIKZzQtDEYaBWrDvErdXrRE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.66.1 h1:hO5qAXR19+/Z44hmvIM4dQFMSYX9XcWsByfoxutBpAM= -google.golang.org/grpc v1.66.1/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -692,8 +692,8 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/internal/applicant/applicant.go b/internal/applicant/applicant.go index 0a00e096..a901be77 100644 --- a/internal/applicant/applicant.go +++ b/internal/applicant/applicant.go @@ -12,6 +12,8 @@ import ( "strings" "github.com/usual2970/certimate/internal/domain" + "github.com/usual2970/certimate/internal/pkg/utils/x509" + "github.com/usual2970/certimate/internal/repository" "github.com/usual2970/certimate/internal/utils/app" "github.com/go-acme/lego/v4/certcrypto" @@ -78,9 +80,37 @@ type ApplyOption struct { } type ApplyUser struct { + Ca string Email string Registration *registration.Resource - key crypto.PrivateKey + key string +} + +func newApplyUser(ca, email string) (*ApplyUser, error) { + repo := getAcmeAccountRepository() + rs := &ApplyUser{ + Ca: ca, + Email: email, + } + resp, err := repo.GetByCAAndEmail(ca, email) + if err != nil { + privateKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) + if err != nil { + return nil, err + } + keyStr, err := x509.PrivateKeyToPEM(privateKey) + if err != nil { + return nil, err + } + rs.key = keyStr + + return rs, nil + } + + rs.Registration = resp.Resource + rs.key = resp.Key + + return rs, nil } func (u *ApplyUser) GetEmail() string { @@ -92,6 +122,15 @@ func (u ApplyUser) GetRegistration() *registration.Resource { } func (u *ApplyUser) GetPrivateKey() crypto.PrivateKey { + rs, _ := x509.ParsePrivateKeyFromPEM(u.key) + return rs +} + +func (u *ApplyUser) hasRegistration() bool { + return u.Registration != nil +} + +func (u *ApplyUser) getPrivateKeyString() string { return u.key } @@ -182,21 +221,16 @@ func apply(option *ApplyOption, provider challenge.Provider) (*Certificate, erro } } - privateKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - return nil, err - } - // Some unified lego environment variables are configured here. // link: https://github.com/go-acme/lego/issues/1867 os.Setenv("LEGO_DISABLE_CNAME_SUPPORT", strconv.FormatBool(option.DisableFollowCNAME)) - myUser := ApplyUser{ - Email: option.Email, - key: privateKey, + myUser, err := newApplyUser(sslProvider.Provider, option.Email) + if err != nil { + return nil, err } - config := lego.NewConfig(&myUser) + config := lego.NewConfig(myUser) // This CA URL is configured for a local dev instance of Boulder running in Docker in a VM. config.CADirURL = sslProviderUrls[sslProvider.Provider] @@ -217,11 +251,13 @@ func apply(option *ApplyOption, provider challenge.Provider) (*Certificate, erro client.Challenge.SetDNS01Provider(provider, challengeOptions...) // New users will need to register - reg, err := getReg(client, sslProvider) - if err != nil { - return nil, fmt.Errorf("failed to register: %w", err) + if !myUser.hasRegistration() { + reg, err := getReg(client, sslProvider, myUser) + if err != nil { + return nil, fmt.Errorf("failed to register: %w", err) + } + myUser.Registration = reg } - myUser.Registration = reg domains := strings.Split(option.Domain, ";") request := certificate.ObtainRequest{ @@ -243,7 +279,16 @@ func apply(option *ApplyOption, provider challenge.Provider) (*Certificate, erro }, nil } -func getReg(client *lego.Client, sslProvider *SSLProviderConfig) (*registration.Resource, error) { +type AcmeAccountRepository interface { + GetByCAAndEmail(ca, email string) (*domain.AcmeAccount, error) + Save(ca, email, key string, resource *registration.Resource) error +} + +func getAcmeAccountRepository() AcmeAccountRepository { + return repository.NewAcmeAccountRepository() +} + +func getReg(client *lego.Client, sslProvider *SSLProviderConfig, user *ApplyUser) (*registration.Resource, error) { var reg *registration.Resource var err error switch sslProvider.Provider { @@ -271,6 +316,12 @@ func getReg(client *lego.Client, sslProvider *SSLProviderConfig) (*registration. return nil, err } + repo := getAcmeAccountRepository() + + if err := repo.Save(sslProvider.Provider, user.GetEmail(), user.getPrivateKeyString(), reg); err != nil { + return nil, fmt.Errorf("failed to save registration: %w", err) + } + return reg, nil } diff --git a/internal/domain/acme_accounts.go b/internal/domain/acme_accounts.go new file mode 100644 index 00000000..05e25e42 --- /dev/null +++ b/internal/domain/acme_accounts.go @@ -0,0 +1,17 @@ +package domain + +import ( + "time" + + "github.com/go-acme/lego/v4/registration" +) + +type AcmeAccount struct { + Id string + Ca string + Email string + Resource *registration.Resource + Key string + Created time.Time + Updated time.Time +} diff --git a/internal/pkg/utils/x509/x509.go b/internal/pkg/utils/x509/x509.go index ca467478..f5f1e05b 100644 --- a/internal/pkg/utils/x509/x509.go +++ b/internal/pkg/utils/x509/x509.go @@ -1,6 +1,7 @@ package x509 import ( + "crypto/ecdsa" "crypto/x509" "encoding/pem" "fmt" @@ -46,3 +47,35 @@ func EqualCertificate(a, b *x509.Certificate) bool { a.Issuer.SerialNumber == b.Issuer.SerialNumber && a.Subject.SerialNumber == b.Subject.SerialNumber } + +// 将 ECDSA 私钥转换为 PEM 格式的字符串。 +func PrivateKeyToPEM(privateKey *ecdsa.PrivateKey) (string, error) { + data, err := x509.MarshalECPrivateKey(privateKey) + if err != nil { + return "", fmt.Errorf("failed to marshal EC private key: %w", err) + } + + block := &pem.Block{ + Type: "EC PRIVATE KEY", + Bytes: data, + } + + return string(pem.EncodeToMemory(block)), nil +} + +// 从 PEM 编码的私钥字符串解析并返回一个 ECDSA 私钥对象。 +func ParsePrivateKeyFromPEM(privateKeyPem string) (*ecdsa.PrivateKey, error) { + pemData := []byte(privateKeyPem) + + block, _ := pem.Decode(pemData) + if block == nil { + return nil, fmt.Errorf("failed to decode PEM block") + } + + privateKey, err := x509.ParseECPrivateKey(block.Bytes) + if err != nil { + return nil, fmt.Errorf("failed to parse private key: %w", err) + } + + return privateKey, nil +} diff --git a/internal/repository/acme_account.go b/internal/repository/acme_account.go new file mode 100644 index 00000000..07da5b36 --- /dev/null +++ b/internal/repository/acme_account.go @@ -0,0 +1,51 @@ +package repository + +import ( + "github.com/go-acme/lego/v4/registration" + "github.com/pocketbase/dbx" + "github.com/pocketbase/pocketbase/models" + "github.com/usual2970/certimate/internal/domain" + "github.com/usual2970/certimate/internal/utils/app" +) + +type AcmeAccountRepository struct{} + +func NewAcmeAccountRepository() *AcmeAccountRepository { + return &AcmeAccountRepository{} +} + +func (r *AcmeAccountRepository) GetByCAAndEmail(ca, email string) (*domain.AcmeAccount, error) { + resp, err := app.GetApp().Dao().FindFirstRecordByFilter("acme_accounts", "ca={:ca} && email={:email}", dbx.Params{"ca": ca, "email": email}) + if err != nil { + return nil, err + } + + resource := ®istration.Resource{} + if err := resp.UnmarshalJSONField("resource", resource); err != nil { + return nil, err + } + + return &domain.AcmeAccount{ + Id: resp.GetString("id"), + Ca: resp.GetString("ca"), + Email: resp.GetString("email"), + Key: resp.GetString("key"), + Resource: resource, + Created: resp.GetTime("created"), + Updated: resp.GetTime("updated"), + }, nil +} + +func (r *AcmeAccountRepository) Save(ca, email, key string, resource *registration.Resource) error { + collection, err := app.GetApp().Dao().FindCollectionByNameOrId("acme_accounts") + if err != nil { + return err + } + + record := models.NewRecord(collection) + record.Set("ca", ca) + record.Set("email", email) + record.Set("key", key) + record.Set("resource", resource) + return app.GetApp().Dao().Save(record) +} diff --git a/migrations/1726569833_updated_domains.go b/migrations/1726569833_updated_domains.go deleted file mode 100644 index 262b0c42..00000000 --- a/migrations/1726569833_updated_domains.go +++ /dev/null @@ -1,85 +0,0 @@ -package migrations - -import ( - "encoding/json" - - "github.com/pocketbase/dbx" - "github.com/pocketbase/pocketbase/daos" - m "github.com/pocketbase/pocketbase/migrations" - "github.com/pocketbase/pocketbase/models/schema" -) - -func init() { - m.Register(func(db dbx.Builder) error { - dao := daos.New(db) - - collection, err := dao.FindCollectionByNameOrId("z3p974ainxjqlvs") - if err != nil { - return err - } - - // update - edit_targetType := &schema.SchemaField{} - if err := json.Unmarshal([]byte(`{ - "system": false, - "id": "srybpixz", - "name": "targetType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun-oss", - "aliyun-cdn", - "aliyun-dcdn", - "ssh", - "webhook", - "tencent-cdn", - "qiniu-cdn" - ] - } - }`), edit_targetType); err != nil { - return err - } - collection.Schema.AddField(edit_targetType) - - return dao.SaveCollection(collection) - }, func(db dbx.Builder) error { - dao := daos.New(db) - - collection, err := dao.FindCollectionByNameOrId("z3p974ainxjqlvs") - if err != nil { - return err - } - - // update - edit_targetType := &schema.SchemaField{} - if err := json.Unmarshal([]byte(`{ - "system": false, - "id": "srybpixz", - "name": "targetType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun-oss", - "aliyun-cdn", - "ssh", - "webhook", - "tencent-cdn", - "qiniu-cdn" - ] - } - }`), edit_targetType); err != nil { - return err - } - collection.Schema.AddField(edit_targetType) - - return dao.SaveCollection(collection) - }) -} diff --git a/migrations/1726670437_collections_snapshot.go b/migrations/1726670437_collections_snapshot.go deleted file mode 100644 index 07b1e6d3..00000000 --- a/migrations/1726670437_collections_snapshot.go +++ /dev/null @@ -1,694 +0,0 @@ -package migrations - -import ( - "encoding/json" - - "github.com/pocketbase/dbx" - "github.com/pocketbase/pocketbase/daos" - m "github.com/pocketbase/pocketbase/migrations" - "github.com/pocketbase/pocketbase/models" -) - -func init() { - m.Register(func(db dbx.Builder) error { - jsonData := `[ - { - "id": "z3p974ainxjqlvs", - "created": "2024-07-29 10:02:48.334Z", - "updated": "2024-09-18 14:23:22.359Z", - "name": "domains", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "iuaerpl2", - "name": "domain", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "ukkhuw85", - "name": "email", - "type": "email", - "required": false, - "presentable": false, - "unique": false, - "options": { - "exceptDomains": null, - "onlyDomains": null - } - }, - { - "system": false, - "id": "v98eebqq", - "name": "crontab", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "alc8e9ow", - "name": "access", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "4yzbv8urny5ja1e", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "topsc9bj", - "name": "certUrl", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "vixgq072", - "name": "certStableUrl", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "g3a3sza5", - "name": "privateKey", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "gr6iouny", - "name": "certificate", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "tk6vnrmn", - "name": "issuerCertificate", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "sjo6ibse", - "name": "csr", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "x03n1bkj", - "name": "expiredAt", - "type": "date", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": "", - "max": "" - } - }, - { - "system": false, - "id": "srybpixz", - "name": "targetType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun-oss", - "aliyun-cdn", - "aliyun-dcdn", - "ssh", - "webhook", - "tencent-cdn", - "qiniu-cdn" - ] - } - }, - { - "system": false, - "id": "xy7yk0mb", - "name": "targetAccess", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "4yzbv8urny5ja1e", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "6jqeyggw", - "name": "enabled", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - }, - { - "system": false, - "id": "hdsjcchf", - "name": "deployed", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - }, - { - "system": false, - "id": "aiya3rev", - "name": "rightnow", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - }, - { - "system": false, - "id": "ixznmhzc", - "name": "lastDeployedAt", - "type": "date", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": "", - "max": "" - } - }, - { - "system": false, - "id": "ghtlkn5j", - "name": "lastDeployment", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "0a1o4e6sstp694f", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "zfnyj9he", - "name": "variables", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "1bspzuku", - "name": "group", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "teolp9pl72dxlxq", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "g65gfh7a", - "name": "nameservers", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - } - ], - "indexes": [ - "CREATE UNIQUE INDEX ` + "`" + `idx_4ABO6EQ` + "`" + ` ON ` + "`" + `domains` + "`" + ` (` + "`" + `domain` + "`" + `)" - ], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - }, - { - "id": "4yzbv8urny5ja1e", - "created": "2024-07-29 10:04:39.685Z", - "updated": "2024-09-17 00:53:25.859Z", - "name": "access", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "geeur58v", - "name": "name", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "iql7jpwx", - "name": "config", - "type": "json", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSize": 2000000 - } - }, - { - "system": false, - "id": "hwy7m03o", - "name": "configType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun", - "tencent", - "ssh", - "webhook", - "cloudflare", - "qiniu", - "namesilo", - "godaddy" - ] - } - }, - { - "system": false, - "id": "lr33hiwg", - "name": "deleted", - "type": "date", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": "", - "max": "" - } - }, - { - "system": false, - "id": "hsxcnlvd", - "name": "usage", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "apply", - "deploy", - "all" - ] - } - }, - { - "system": false, - "id": "c8egzzwj", - "name": "group", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "teolp9pl72dxlxq", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - } - ], - "indexes": [ - "CREATE UNIQUE INDEX ` + "`" + `idx_wkoST0j` + "`" + ` ON ` + "`" + `access` + "`" + ` (` + "`" + `name` + "`" + `)" - ], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - }, - { - "id": "0a1o4e6sstp694f", - "created": "2024-07-30 06:30:27.801Z", - "updated": "2024-09-17 00:53:25.859Z", - "name": "deployments", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "farvlzk7", - "name": "domain", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "z3p974ainxjqlvs", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "jx5f69i3", - "name": "log", - "type": "json", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSize": 2000000 - } - }, - { - "system": false, - "id": "qbxdtg9q", - "name": "phase", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "check", - "apply", - "deploy" - ] - } - }, - { - "system": false, - "id": "rglrp1hz", - "name": "phaseSuccess", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - }, - { - "system": false, - "id": "lt1g1blu", - "name": "deployedAt", - "type": "date", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": "", - "max": "" - } - } - ], - "indexes": [], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - }, - { - "id": "_pb_users_auth_", - "created": "2024-09-12 13:09:54.234Z", - "updated": "2024-09-17 00:53:25.859Z", - "name": "users", - "type": "auth", - "system": false, - "schema": [ - { - "system": false, - "id": "users_name", - "name": "name", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "users_avatar", - "name": "avatar", - "type": "file", - "required": false, - "presentable": false, - "unique": false, - "options": { - "mimeTypes": [ - "image/jpeg", - "image/png", - "image/svg+xml", - "image/gif", - "image/webp" - ], - "thumbs": null, - "maxSelect": 1, - "maxSize": 5242880, - "protected": false - } - } - ], - "indexes": [], - "listRule": "id = @request.auth.id", - "viewRule": "id = @request.auth.id", - "createRule": "", - "updateRule": "id = @request.auth.id", - "deleteRule": "id = @request.auth.id", - "options": { - "allowEmailAuth": true, - "allowOAuth2Auth": true, - "allowUsernameAuth": true, - "exceptEmailDomains": null, - "manageRule": null, - "minPasswordLength": 8, - "onlyEmailDomains": null, - "onlyVerified": false, - "requireEmail": false - } - }, - { - "id": "dy6ccjb60spfy6p", - "created": "2024-09-12 23:12:21.677Z", - "updated": "2024-09-17 00:53:25.860Z", - "name": "settings", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "1tcmdsdf", - "name": "name", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "f9wyhypi", - "name": "content", - "type": "json", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSize": 2000000 - } - } - ], - "indexes": [ - "CREATE UNIQUE INDEX ` + "`" + `idx_RO7X9Vw` + "`" + ` ON ` + "`" + `settings` + "`" + ` (` + "`" + `name` + "`" + `)" - ], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - }, - { - "id": "teolp9pl72dxlxq", - "created": "2024-09-13 12:51:05.611Z", - "updated": "2024-09-17 00:53:25.860Z", - "name": "access_groups", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "7sajiv6i", - "name": "name", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "xp8admif", - "name": "access", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "4yzbv8urny5ja1e", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": null, - "displayFields": null - } - } - ], - "indexes": [ - "CREATE UNIQUE INDEX ` + "`" + `idx_RgRXp0R` + "`" + ` ON ` + "`" + `access_groups` + "`" + ` (` + "`" + `name` + "`" + `)" - ], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - } - ]` - - collections := []*models.Collection{} - if err := json.Unmarshal([]byte(jsonData), &collections); err != nil { - return err - } - - return daos.New(db).ImportCollections(collections, true, nil) - }, func(db dbx.Builder) error { - return nil - }) -} diff --git a/migrations/1727006428_collections_snapshot.go b/migrations/1727006428_collections_snapshot.go deleted file mode 100644 index abd631d3..00000000 --- a/migrations/1727006428_collections_snapshot.go +++ /dev/null @@ -1,704 +0,0 @@ -package migrations - -import ( - "encoding/json" - - "github.com/pocketbase/dbx" - "github.com/pocketbase/pocketbase/daos" - m "github.com/pocketbase/pocketbase/migrations" - "github.com/pocketbase/pocketbase/models" -) - -func init() { - m.Register(func(db dbx.Builder) error { - jsonData := `[ - { - "id": "z3p974ainxjqlvs", - "created": "2024-07-29 10:02:48.334Z", - "updated": "2024-09-19 00:27:35.936Z", - "name": "domains", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "iuaerpl2", - "name": "domain", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "ukkhuw85", - "name": "email", - "type": "email", - "required": false, - "presentable": false, - "unique": false, - "options": { - "exceptDomains": null, - "onlyDomains": null - } - }, - { - "system": false, - "id": "v98eebqq", - "name": "crontab", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "alc8e9ow", - "name": "access", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "4yzbv8urny5ja1e", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "topsc9bj", - "name": "certUrl", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "vixgq072", - "name": "certStableUrl", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "g3a3sza5", - "name": "privateKey", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "gr6iouny", - "name": "certificate", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "tk6vnrmn", - "name": "issuerCertificate", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "sjo6ibse", - "name": "csr", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "x03n1bkj", - "name": "expiredAt", - "type": "date", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": "", - "max": "" - } - }, - { - "system": false, - "id": "srybpixz", - "name": "targetType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun-oss", - "aliyun-cdn", - "aliyun-dcdn", - "ssh", - "webhook", - "tencent-cdn", - "qiniu-cdn" - ] - } - }, - { - "system": false, - "id": "xy7yk0mb", - "name": "targetAccess", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "4yzbv8urny5ja1e", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "6jqeyggw", - "name": "enabled", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - }, - { - "system": false, - "id": "hdsjcchf", - "name": "deployed", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - }, - { - "system": false, - "id": "aiya3rev", - "name": "rightnow", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - }, - { - "system": false, - "id": "ixznmhzc", - "name": "lastDeployedAt", - "type": "date", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": "", - "max": "" - } - }, - { - "system": false, - "id": "ghtlkn5j", - "name": "lastDeployment", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "0a1o4e6sstp694f", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "zfnyj9he", - "name": "variables", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "1bspzuku", - "name": "group", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "teolp9pl72dxlxq", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "g65gfh7a", - "name": "nameservers", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - } - ], - "indexes": [ - "CREATE UNIQUE INDEX ` + "`" + `idx_4ABO6EQ` + "`" + ` ON ` + "`" + `domains` + "`" + ` (` + "`" + `domain` + "`" + `)" - ], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - }, - { - "id": "4yzbv8urny5ja1e", - "created": "2024-07-29 10:04:39.685Z", - "updated": "2024-09-19 00:27:35.936Z", - "name": "access", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "geeur58v", - "name": "name", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "iql7jpwx", - "name": "config", - "type": "json", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSize": 2000000 - } - }, - { - "system": false, - "id": "hwy7m03o", - "name": "configType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun", - "tencent", - "ssh", - "webhook", - "cloudflare", - "qiniu", - "namesilo", - "godaddy" - ] - } - }, - { - "system": false, - "id": "lr33hiwg", - "name": "deleted", - "type": "date", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": "", - "max": "" - } - }, - { - "system": false, - "id": "hsxcnlvd", - "name": "usage", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "apply", - "deploy", - "all" - ] - } - }, - { - "system": false, - "id": "c8egzzwj", - "name": "group", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "teolp9pl72dxlxq", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - } - ], - "indexes": [ - "CREATE UNIQUE INDEX ` + "`" + `idx_wkoST0j` + "`" + ` ON ` + "`" + `access` + "`" + ` (` + "`" + `name` + "`" + `)" - ], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - }, - { - "id": "0a1o4e6sstp694f", - "created": "2024-07-30 06:30:27.801Z", - "updated": "2024-09-22 11:46:35.167Z", - "name": "deployments", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "farvlzk7", - "name": "domain", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "z3p974ainxjqlvs", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "jx5f69i3", - "name": "log", - "type": "json", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSize": 2000000 - } - }, - { - "system": false, - "id": "qbxdtg9q", - "name": "phase", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "check", - "apply", - "deploy" - ] - } - }, - { - "system": false, - "id": "rglrp1hz", - "name": "phaseSuccess", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - }, - { - "system": false, - "id": "lt1g1blu", - "name": "deployedAt", - "type": "date", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": "", - "max": "" - } - }, - { - "system": false, - "id": "wledpzgb", - "name": "wholeSuccess", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - } - ], - "indexes": [], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - }, - { - "id": "_pb_users_auth_", - "created": "2024-09-12 13:09:54.234Z", - "updated": "2024-09-19 00:27:35.937Z", - "name": "users", - "type": "auth", - "system": false, - "schema": [ - { - "system": false, - "id": "users_name", - "name": "name", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "users_avatar", - "name": "avatar", - "type": "file", - "required": false, - "presentable": false, - "unique": false, - "options": { - "mimeTypes": [ - "image/jpeg", - "image/png", - "image/svg+xml", - "image/gif", - "image/webp" - ], - "thumbs": null, - "maxSelect": 1, - "maxSize": 5242880, - "protected": false - } - } - ], - "indexes": [], - "listRule": "id = @request.auth.id", - "viewRule": "id = @request.auth.id", - "createRule": "", - "updateRule": "id = @request.auth.id", - "deleteRule": "id = @request.auth.id", - "options": { - "allowEmailAuth": true, - "allowOAuth2Auth": true, - "allowUsernameAuth": true, - "exceptEmailDomains": null, - "manageRule": null, - "minPasswordLength": 8, - "onlyEmailDomains": null, - "onlyVerified": false, - "requireEmail": false - } - }, - { - "id": "dy6ccjb60spfy6p", - "created": "2024-09-12 23:12:21.677Z", - "updated": "2024-09-19 00:27:35.937Z", - "name": "settings", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "1tcmdsdf", - "name": "name", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "f9wyhypi", - "name": "content", - "type": "json", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSize": 2000000 - } - } - ], - "indexes": [ - "CREATE UNIQUE INDEX ` + "`" + `idx_RO7X9Vw` + "`" + ` ON ` + "`" + `settings` + "`" + ` (` + "`" + `name` + "`" + `)" - ], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - }, - { - "id": "teolp9pl72dxlxq", - "created": "2024-09-13 12:51:05.611Z", - "updated": "2024-09-19 00:27:35.937Z", - "name": "access_groups", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "7sajiv6i", - "name": "name", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "xp8admif", - "name": "access", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "4yzbv8urny5ja1e", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": null, - "displayFields": null - } - } - ], - "indexes": [ - "CREATE UNIQUE INDEX ` + "`" + `idx_RgRXp0R` + "`" + ` ON ` + "`" + `access_groups` + "`" + ` (` + "`" + `name` + "`" + `)" - ], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - } - ]` - - collections := []*models.Collection{} - if err := json.Unmarshal([]byte(jsonData), &collections); err != nil { - return err - } - - return daos.New(db).ImportCollections(collections, true, nil) - }, func(db dbx.Builder) error { - return nil - }) -} diff --git a/migrations/1727188693_collections_snapshot.go b/migrations/1727188693_collections_snapshot.go deleted file mode 100644 index b6838203..00000000 --- a/migrations/1727188693_collections_snapshot.go +++ /dev/null @@ -1,704 +0,0 @@ -package migrations - -import ( - "encoding/json" - - "github.com/pocketbase/dbx" - "github.com/pocketbase/pocketbase/daos" - m "github.com/pocketbase/pocketbase/migrations" - "github.com/pocketbase/pocketbase/models" -) - -func init() { - m.Register(func(db dbx.Builder) error { - jsonData := `[ - { - "id": "z3p974ainxjqlvs", - "created": "2024-07-29 10:02:48.334Z", - "updated": "2024-09-22 12:08:14.644Z", - "name": "domains", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "iuaerpl2", - "name": "domain", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "ukkhuw85", - "name": "email", - "type": "email", - "required": false, - "presentable": false, - "unique": false, - "options": { - "exceptDomains": null, - "onlyDomains": null - } - }, - { - "system": false, - "id": "v98eebqq", - "name": "crontab", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "alc8e9ow", - "name": "access", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "4yzbv8urny5ja1e", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "topsc9bj", - "name": "certUrl", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "vixgq072", - "name": "certStableUrl", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "g3a3sza5", - "name": "privateKey", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "gr6iouny", - "name": "certificate", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "tk6vnrmn", - "name": "issuerCertificate", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "sjo6ibse", - "name": "csr", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "x03n1bkj", - "name": "expiredAt", - "type": "date", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": "", - "max": "" - } - }, - { - "system": false, - "id": "srybpixz", - "name": "targetType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun-oss", - "aliyun-cdn", - "aliyun-dcdn", - "ssh", - "webhook", - "tencent-cdn", - "qiniu-cdn" - ] - } - }, - { - "system": false, - "id": "xy7yk0mb", - "name": "targetAccess", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "4yzbv8urny5ja1e", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "6jqeyggw", - "name": "enabled", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - }, - { - "system": false, - "id": "hdsjcchf", - "name": "deployed", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - }, - { - "system": false, - "id": "aiya3rev", - "name": "rightnow", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - }, - { - "system": false, - "id": "ixznmhzc", - "name": "lastDeployedAt", - "type": "date", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": "", - "max": "" - } - }, - { - "system": false, - "id": "ghtlkn5j", - "name": "lastDeployment", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "0a1o4e6sstp694f", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "zfnyj9he", - "name": "variables", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "1bspzuku", - "name": "group", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "teolp9pl72dxlxq", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "g65gfh7a", - "name": "nameservers", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - } - ], - "indexes": [ - "CREATE UNIQUE INDEX ` + "`" + `idx_4ABO6EQ` + "`" + ` ON ` + "`" + `domains` + "`" + ` (` + "`" + `domain` + "`" + `)" - ], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - }, - { - "id": "4yzbv8urny5ja1e", - "created": "2024-07-29 10:04:39.685Z", - "updated": "2024-09-22 12:08:14.644Z", - "name": "access", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "geeur58v", - "name": "name", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "iql7jpwx", - "name": "config", - "type": "json", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSize": 2000000 - } - }, - { - "system": false, - "id": "hwy7m03o", - "name": "configType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun", - "tencent", - "ssh", - "webhook", - "cloudflare", - "qiniu", - "namesilo", - "godaddy" - ] - } - }, - { - "system": false, - "id": "lr33hiwg", - "name": "deleted", - "type": "date", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": "", - "max": "" - } - }, - { - "system": false, - "id": "hsxcnlvd", - "name": "usage", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "apply", - "deploy", - "all" - ] - } - }, - { - "system": false, - "id": "c8egzzwj", - "name": "group", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "teolp9pl72dxlxq", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - } - ], - "indexes": [ - "CREATE UNIQUE INDEX ` + "`" + `idx_wkoST0j` + "`" + ` ON ` + "`" + `access` + "`" + ` (` + "`" + `name` + "`" + `)" - ], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - }, - { - "id": "0a1o4e6sstp694f", - "created": "2024-07-30 06:30:27.801Z", - "updated": "2024-09-22 12:08:14.644Z", - "name": "deployments", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "farvlzk7", - "name": "domain", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "z3p974ainxjqlvs", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "jx5f69i3", - "name": "log", - "type": "json", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSize": 2000000 - } - }, - { - "system": false, - "id": "qbxdtg9q", - "name": "phase", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "check", - "apply", - "deploy" - ] - } - }, - { - "system": false, - "id": "rglrp1hz", - "name": "phaseSuccess", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - }, - { - "system": false, - "id": "lt1g1blu", - "name": "deployedAt", - "type": "date", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": "", - "max": "" - } - }, - { - "system": false, - "id": "wledpzgb", - "name": "wholeSuccess", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - } - ], - "indexes": [], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - }, - { - "id": "_pb_users_auth_", - "created": "2024-09-12 13:09:54.234Z", - "updated": "2024-09-22 12:08:14.644Z", - "name": "users", - "type": "auth", - "system": false, - "schema": [ - { - "system": false, - "id": "users_name", - "name": "name", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "users_avatar", - "name": "avatar", - "type": "file", - "required": false, - "presentable": false, - "unique": false, - "options": { - "mimeTypes": [ - "image/jpeg", - "image/png", - "image/svg+xml", - "image/gif", - "image/webp" - ], - "thumbs": null, - "maxSelect": 1, - "maxSize": 5242880, - "protected": false - } - } - ], - "indexes": [], - "listRule": "id = @request.auth.id", - "viewRule": "id = @request.auth.id", - "createRule": "", - "updateRule": "id = @request.auth.id", - "deleteRule": "id = @request.auth.id", - "options": { - "allowEmailAuth": true, - "allowOAuth2Auth": true, - "allowUsernameAuth": true, - "exceptEmailDomains": null, - "manageRule": null, - "minPasswordLength": 8, - "onlyEmailDomains": null, - "onlyVerified": false, - "requireEmail": false - } - }, - { - "id": "dy6ccjb60spfy6p", - "created": "2024-09-12 23:12:21.677Z", - "updated": "2024-09-22 12:08:14.644Z", - "name": "settings", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "1tcmdsdf", - "name": "name", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "f9wyhypi", - "name": "content", - "type": "json", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSize": 2000000 - } - } - ], - "indexes": [ - "CREATE UNIQUE INDEX ` + "`" + `idx_RO7X9Vw` + "`" + ` ON ` + "`" + `settings` + "`" + ` (` + "`" + `name` + "`" + `)" - ], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - }, - { - "id": "teolp9pl72dxlxq", - "created": "2024-09-13 12:51:05.611Z", - "updated": "2024-09-22 12:08:14.645Z", - "name": "access_groups", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "7sajiv6i", - "name": "name", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "xp8admif", - "name": "access", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "4yzbv8urny5ja1e", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": null, - "displayFields": null - } - } - ], - "indexes": [ - "CREATE UNIQUE INDEX ` + "`" + `idx_RgRXp0R` + "`" + ` ON ` + "`" + `access_groups` + "`" + ` (` + "`" + `name` + "`" + `)" - ], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - } - ]` - - collections := []*models.Collection{} - if err := json.Unmarshal([]byte(jsonData), &collections); err != nil { - return err - } - - return daos.New(db).ImportCollections(collections, true, nil) - }, func(db dbx.Builder) error { - return nil - }) -} diff --git a/migrations/1727341442_collections_snapshot.go b/migrations/1727341442_collections_snapshot.go deleted file mode 100644 index f3982d16..00000000 --- a/migrations/1727341442_collections_snapshot.go +++ /dev/null @@ -1,706 +0,0 @@ -package migrations - -import ( - "encoding/json" - - "github.com/pocketbase/dbx" - "github.com/pocketbase/pocketbase/daos" - m "github.com/pocketbase/pocketbase/migrations" - "github.com/pocketbase/pocketbase/models" -) - -func init() { - m.Register(func(db dbx.Builder) error { - jsonData := `[ - { - "id": "z3p974ainxjqlvs", - "created": "2024-07-29 10:02:48.334Z", - "updated": "2024-09-26 08:20:28.305Z", - "name": "domains", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "iuaerpl2", - "name": "domain", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "ukkhuw85", - "name": "email", - "type": "email", - "required": false, - "presentable": false, - "unique": false, - "options": { - "exceptDomains": null, - "onlyDomains": null - } - }, - { - "system": false, - "id": "v98eebqq", - "name": "crontab", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "alc8e9ow", - "name": "access", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "4yzbv8urny5ja1e", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "topsc9bj", - "name": "certUrl", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "vixgq072", - "name": "certStableUrl", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "g3a3sza5", - "name": "privateKey", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "gr6iouny", - "name": "certificate", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "tk6vnrmn", - "name": "issuerCertificate", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "sjo6ibse", - "name": "csr", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "x03n1bkj", - "name": "expiredAt", - "type": "date", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": "", - "max": "" - } - }, - { - "system": false, - "id": "srybpixz", - "name": "targetType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun-oss", - "aliyun-cdn", - "aliyun-dcdn", - "ssh", - "webhook", - "tencent-cdn", - "qiniu-cdn", - "local" - ] - } - }, - { - "system": false, - "id": "xy7yk0mb", - "name": "targetAccess", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "4yzbv8urny5ja1e", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "6jqeyggw", - "name": "enabled", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - }, - { - "system": false, - "id": "hdsjcchf", - "name": "deployed", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - }, - { - "system": false, - "id": "aiya3rev", - "name": "rightnow", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - }, - { - "system": false, - "id": "ixznmhzc", - "name": "lastDeployedAt", - "type": "date", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": "", - "max": "" - } - }, - { - "system": false, - "id": "ghtlkn5j", - "name": "lastDeployment", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "0a1o4e6sstp694f", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "zfnyj9he", - "name": "variables", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "1bspzuku", - "name": "group", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "teolp9pl72dxlxq", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "g65gfh7a", - "name": "nameservers", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - } - ], - "indexes": [ - "CREATE UNIQUE INDEX ` + "`" + `idx_4ABO6EQ` + "`" + ` ON ` + "`" + `domains` + "`" + ` (` + "`" + `domain` + "`" + `)" - ], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - }, - { - "id": "4yzbv8urny5ja1e", - "created": "2024-07-29 10:04:39.685Z", - "updated": "2024-09-26 08:36:59.632Z", - "name": "access", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "geeur58v", - "name": "name", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "iql7jpwx", - "name": "config", - "type": "json", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSize": 2000000 - } - }, - { - "system": false, - "id": "hwy7m03o", - "name": "configType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun", - "tencent", - "ssh", - "webhook", - "cloudflare", - "qiniu", - "namesilo", - "godaddy", - "local" - ] - } - }, - { - "system": false, - "id": "lr33hiwg", - "name": "deleted", - "type": "date", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": "", - "max": "" - } - }, - { - "system": false, - "id": "hsxcnlvd", - "name": "usage", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "apply", - "deploy", - "all" - ] - } - }, - { - "system": false, - "id": "c8egzzwj", - "name": "group", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "teolp9pl72dxlxq", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - } - ], - "indexes": [ - "CREATE UNIQUE INDEX ` + "`" + `idx_wkoST0j` + "`" + ` ON ` + "`" + `access` + "`" + ` (` + "`" + `name` + "`" + `)" - ], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - }, - { - "id": "0a1o4e6sstp694f", - "created": "2024-07-30 06:30:27.801Z", - "updated": "2024-09-24 14:44:48.041Z", - "name": "deployments", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "farvlzk7", - "name": "domain", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "z3p974ainxjqlvs", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": 1, - "displayFields": null - } - }, - { - "system": false, - "id": "jx5f69i3", - "name": "log", - "type": "json", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSize": 2000000 - } - }, - { - "system": false, - "id": "qbxdtg9q", - "name": "phase", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "check", - "apply", - "deploy" - ] - } - }, - { - "system": false, - "id": "rglrp1hz", - "name": "phaseSuccess", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - }, - { - "system": false, - "id": "lt1g1blu", - "name": "deployedAt", - "type": "date", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": "", - "max": "" - } - }, - { - "system": false, - "id": "wledpzgb", - "name": "wholeSuccess", - "type": "bool", - "required": false, - "presentable": false, - "unique": false, - "options": {} - } - ], - "indexes": [], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - }, - { - "id": "_pb_users_auth_", - "created": "2024-09-12 13:09:54.234Z", - "updated": "2024-09-24 14:44:48.041Z", - "name": "users", - "type": "auth", - "system": false, - "schema": [ - { - "system": false, - "id": "users_name", - "name": "name", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "users_avatar", - "name": "avatar", - "type": "file", - "required": false, - "presentable": false, - "unique": false, - "options": { - "mimeTypes": [ - "image/jpeg", - "image/png", - "image/svg+xml", - "image/gif", - "image/webp" - ], - "thumbs": null, - "maxSelect": 1, - "maxSize": 5242880, - "protected": false - } - } - ], - "indexes": [], - "listRule": "id = @request.auth.id", - "viewRule": "id = @request.auth.id", - "createRule": "", - "updateRule": "id = @request.auth.id", - "deleteRule": "id = @request.auth.id", - "options": { - "allowEmailAuth": true, - "allowOAuth2Auth": true, - "allowUsernameAuth": true, - "exceptEmailDomains": null, - "manageRule": null, - "minPasswordLength": 8, - "onlyEmailDomains": null, - "onlyVerified": false, - "requireEmail": false - } - }, - { - "id": "dy6ccjb60spfy6p", - "created": "2024-09-12 23:12:21.677Z", - "updated": "2024-09-24 14:44:48.041Z", - "name": "settings", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "1tcmdsdf", - "name": "name", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "f9wyhypi", - "name": "content", - "type": "json", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSize": 2000000 - } - } - ], - "indexes": [ - "CREATE UNIQUE INDEX ` + "`" + `idx_RO7X9Vw` + "`" + ` ON ` + "`" + `settings` + "`" + ` (` + "`" + `name` + "`" + `)" - ], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - }, - { - "id": "teolp9pl72dxlxq", - "created": "2024-09-13 12:51:05.611Z", - "updated": "2024-09-24 14:44:48.041Z", - "name": "access_groups", - "type": "base", - "system": false, - "schema": [ - { - "system": false, - "id": "7sajiv6i", - "name": "name", - "type": "text", - "required": false, - "presentable": false, - "unique": false, - "options": { - "min": null, - "max": null, - "pattern": "" - } - }, - { - "system": false, - "id": "xp8admif", - "name": "access", - "type": "relation", - "required": false, - "presentable": false, - "unique": false, - "options": { - "collectionId": "4yzbv8urny5ja1e", - "cascadeDelete": false, - "minSelect": null, - "maxSelect": null, - "displayFields": null - } - } - ], - "indexes": [ - "CREATE UNIQUE INDEX ` + "`" + `idx_RgRXp0R` + "`" + ` ON ` + "`" + `access_groups` + "`" + ` (` + "`" + `name` + "`" + `)" - ], - "listRule": null, - "viewRule": null, - "createRule": null, - "updateRule": null, - "deleteRule": null, - "options": {} - } - ]` - - collections := []*models.Collection{} - if err := json.Unmarshal([]byte(jsonData), &collections); err != nil { - return err - } - - return daos.New(db).ImportCollections(collections, true, nil) - }, func(db dbx.Builder) error { - return nil - }) -} diff --git a/migrations/1728610007_updated_access.go b/migrations/1728610007_updated_access.go deleted file mode 100644 index 48f3a74a..00000000 --- a/migrations/1728610007_updated_access.go +++ /dev/null @@ -1,92 +0,0 @@ -package migrations - -import ( - "encoding/json" - - "github.com/pocketbase/dbx" - "github.com/pocketbase/pocketbase/daos" - m "github.com/pocketbase/pocketbase/migrations" - "github.com/pocketbase/pocketbase/models/schema" -) - -func init() { - m.Register(func(db dbx.Builder) error { - dao := daos.New(db) - - collection, err := dao.FindCollectionByNameOrId("4yzbv8urny5ja1e") - if err != nil { - return err - } - - // update - edit_configType := &schema.SchemaField{} - if err := json.Unmarshal([]byte(`{ - "system": false, - "id": "hwy7m03o", - "name": "configType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun", - "tencent", - "huaweicloud", - "qiniu", - "cloudflare", - "namesilo", - "godaddy", - "local", - "ssh", - "webhook" - ] - } - }`), edit_configType); err != nil { - return err - } - collection.Schema.AddField(edit_configType) - - return dao.SaveCollection(collection) - }, func(db dbx.Builder) error { - dao := daos.New(db) - - collection, err := dao.FindCollectionByNameOrId("4yzbv8urny5ja1e") - if err != nil { - return err - } - - // update - edit_configType := &schema.SchemaField{} - if err := json.Unmarshal([]byte(`{ - "system": false, - "id": "hwy7m03o", - "name": "configType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun", - "tencent", - "huaweicloud", - "ssh", - "webhook", - "cloudflare", - "qiniu", - "namesilo", - "godaddy", - "local" - ] - } - }`), edit_configType); err != nil { - return err - } - collection.Schema.AddField(edit_configType) - - return dao.SaveCollection(collection) - }) -} diff --git a/migrations/1729160433_updated_access.go b/migrations/1729160433_updated_access.go deleted file mode 100644 index 05e14cc0..00000000 --- a/migrations/1729160433_updated_access.go +++ /dev/null @@ -1,93 +0,0 @@ -package migrations - -import ( - "encoding/json" - - "github.com/pocketbase/dbx" - "github.com/pocketbase/pocketbase/daos" - m "github.com/pocketbase/pocketbase/migrations" - "github.com/pocketbase/pocketbase/models/schema" -) - -func init() { - m.Register(func(db dbx.Builder) error { - dao := daos.New(db) - - collection, err := dao.FindCollectionByNameOrId("4yzbv8urny5ja1e") - if err != nil { - return err - } - - // update - edit_configType := &schema.SchemaField{} - if err := json.Unmarshal([]byte(`{ - "system": false, - "id": "hwy7m03o", - "name": "configType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun", - "tencent", - "huaweicloud", - "qiniu", - "aws", - "cloudflare", - "namesilo", - "godaddy", - "local", - "ssh", - "webhook" - ] - } - }`), edit_configType); err != nil { - return err - } - collection.Schema.AddField(edit_configType) - - return dao.SaveCollection(collection) - }, func(db dbx.Builder) error { - dao := daos.New(db) - - collection, err := dao.FindCollectionByNameOrId("4yzbv8urny5ja1e") - if err != nil { - return err - } - - // update - edit_configType := &schema.SchemaField{} - if err := json.Unmarshal([]byte(`{ - "system": false, - "id": "hwy7m03o", - "name": "configType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun", - "tencent", - "huaweicloud", - "qiniu", - "cloudflare", - "namesilo", - "godaddy", - "local", - "ssh", - "webhook" - ] - } - }`), edit_configType); err != nil { - return err - } - collection.Schema.AddField(edit_configType) - - return dao.SaveCollection(collection) - }) -} diff --git a/migrations/1729241998_updated_access.go b/migrations/1729241998_updated_access.go deleted file mode 100644 index cfa43c23..00000000 --- a/migrations/1729241998_updated_access.go +++ /dev/null @@ -1,95 +0,0 @@ -package migrations - -import ( - "encoding/json" - - "github.com/pocketbase/dbx" - "github.com/pocketbase/pocketbase/daos" - m "github.com/pocketbase/pocketbase/migrations" - "github.com/pocketbase/pocketbase/models/schema" -) - -func init() { - m.Register(func(db dbx.Builder) error { - dao := daos.New(db) - - collection, err := dao.FindCollectionByNameOrId("4yzbv8urny5ja1e") - if err != nil { - return err - } - - // update - edit_configType := &schema.SchemaField{} - if err := json.Unmarshal([]byte(`{ - "system": false, - "id": "hwy7m03o", - "name": "configType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun", - "tencent", - "huaweicloud", - "qiniu", - "aws", - "cloudflare", - "namesilo", - "godaddy", - "local", - "ssh", - "webhook", - "k8s" - ] - } - }`), edit_configType); err != nil { - return err - } - collection.Schema.AddField(edit_configType) - - return dao.SaveCollection(collection) - }, func(db dbx.Builder) error { - dao := daos.New(db) - - collection, err := dao.FindCollectionByNameOrId("4yzbv8urny5ja1e") - if err != nil { - return err - } - - // update - edit_configType := &schema.SchemaField{} - if err := json.Unmarshal([]byte(`{ - "system": false, - "id": "hwy7m03o", - "name": "configType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun", - "tencent", - "huaweicloud", - "qiniu", - "aws", - "cloudflare", - "namesilo", - "godaddy", - "local", - "ssh", - "webhook" - ] - } - }`), edit_configType); err != nil { - return err - } - collection.Schema.AddField(edit_configType) - - return dao.SaveCollection(collection) - }) -} diff --git a/migrations/1729339341_updated_access.go b/migrations/1729339341_updated_access.go deleted file mode 100644 index 51561a76..00000000 --- a/migrations/1729339341_updated_access.go +++ /dev/null @@ -1,98 +0,0 @@ -package migrations - -import ( - "encoding/json" - - "github.com/pocketbase/dbx" - "github.com/pocketbase/pocketbase/daos" - m "github.com/pocketbase/pocketbase/migrations" - "github.com/pocketbase/pocketbase/models/schema" -) - -func init() { - m.Register(func(db dbx.Builder) error { - dao := daos.New(db) - - collection, err := dao.FindCollectionByNameOrId("4yzbv8urny5ja1e") - if err != nil { - return err - } - - // update - edit_configType := &schema.SchemaField{} - if err := json.Unmarshal([]byte(`{ - "system": false, - "id": "hwy7m03o", - "name": "configType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun", - "tencent", - "huaweicloud", - "qiniu", - "aws", - "cloudflare", - "namesilo", - "godaddy", - "pdns", - "httpreq", - "local", - "ssh", - "webhook", - "k8s" - ] - } - }`), edit_configType); err != nil { - return err - } - collection.Schema.AddField(edit_configType) - - return dao.SaveCollection(collection) - }, func(db dbx.Builder) error { - dao := daos.New(db) - - collection, err := dao.FindCollectionByNameOrId("4yzbv8urny5ja1e") - if err != nil { - return err - } - - // update - edit_configType := &schema.SchemaField{} - if err := json.Unmarshal([]byte(`{ - "system": false, - "id": "hwy7m03o", - "name": "configType", - "type": "select", - "required": false, - "presentable": false, - "unique": false, - "options": { - "maxSelect": 1, - "values": [ - "aliyun", - "tencent", - "huaweicloud", - "qiniu", - "aws", - "cloudflare", - "namesilo", - "godaddy", - "local", - "ssh", - "webhook", - "k8s" - ] - } - }`), edit_configType); err != nil { - return err - } - collection.Schema.AddField(edit_configType) - - return dao.SaveCollection(collection) - }) -} diff --git a/migrations/1728778480_collections_snapshot.go b/migrations/1729671262_collections_snapshot.go similarity index 89% rename from migrations/1728778480_collections_snapshot.go rename to migrations/1729671262_collections_snapshot.go index 7134989e..f72fdbe0 100644 --- a/migrations/1728778480_collections_snapshot.go +++ b/migrations/1729671262_collections_snapshot.go @@ -15,7 +15,7 @@ func init() { { "id": "z3p974ainxjqlvs", "created": "2024-07-29 10:02:48.334Z", - "updated": "2024-10-08 06:50:56.637Z", + "updated": "2024-10-13 02:40:36.312Z", "name": "domains", "type": "base", "system": false, @@ -353,7 +353,7 @@ func init() { { "id": "4yzbv8urny5ja1e", "created": "2024-07-29 10:04:39.685Z", - "updated": "2024-10-11 13:55:13.777Z", + "updated": "2024-10-20 04:36:58.692Z", "name": "access", "type": "base", "system": false, @@ -399,12 +399,16 @@ func init() { "tencent", "huaweicloud", "qiniu", + "aws", "cloudflare", "namesilo", "godaddy", + "pdns", + "httpreq", "local", "ssh", - "webhook" + "webhook", + "k8s" ] } }, @@ -468,7 +472,7 @@ func init() { { "id": "0a1o4e6sstp694f", "created": "2024-07-30 06:30:27.801Z", - "updated": "2024-09-26 12:29:38.334Z", + "updated": "2024-10-17 15:21:58.176Z", "name": "deployments", "type": "base", "system": false, @@ -563,7 +567,7 @@ func init() { { "id": "_pb_users_auth_", "created": "2024-09-12 13:09:54.234Z", - "updated": "2024-09-26 12:29:38.334Z", + "updated": "2024-10-13 02:40:36.312Z", "name": "users", "type": "auth", "system": false, @@ -626,7 +630,7 @@ func init() { { "id": "dy6ccjb60spfy6p", "created": "2024-09-12 23:12:21.677Z", - "updated": "2024-09-26 12:29:38.334Z", + "updated": "2024-10-13 02:40:36.312Z", "name": "settings", "type": "base", "system": false, @@ -671,7 +675,7 @@ func init() { { "id": "teolp9pl72dxlxq", "created": "2024-09-13 12:51:05.611Z", - "updated": "2024-09-26 12:29:38.334Z", + "updated": "2024-10-13 02:40:36.312Z", "name": "access_groups", "type": "base", "system": false, @@ -716,6 +720,76 @@ func init() { "updateRule": null, "deleteRule": null, "options": {} + }, + { + "id": "012d7abbod1hwvr", + "created": "2024-10-23 06:37:13.155Z", + "updated": "2024-10-23 07:34:58.636Z", + "name": "acme_accounts", + "type": "base", + "system": false, + "schema": [ + { + "system": false, + "id": "fmjfn0yw", + "name": "ca", + "type": "text", + "required": false, + "presentable": false, + "unique": false, + "options": { + "min": null, + "max": null, + "pattern": "" + } + }, + { + "system": false, + "id": "qqwijqzt", + "name": "email", + "type": "email", + "required": false, + "presentable": false, + "unique": false, + "options": { + "exceptDomains": null, + "onlyDomains": null + } + }, + { + "system": false, + "id": "genxqtii", + "name": "key", + "type": "text", + "required": false, + "presentable": false, + "unique": false, + "options": { + "min": null, + "max": null, + "pattern": "" + } + }, + { + "system": false, + "id": "1aoia909", + "name": "resource", + "type": "json", + "required": false, + "presentable": false, + "unique": false, + "options": { + "maxSize": 2000000 + } + } + ], + "indexes": [], + "listRule": null, + "viewRule": null, + "createRule": null, + "updateRule": null, + "deleteRule": null, + "options": {} } ]`