1 Star 0 Fork 0

wosylf/龙飞工具仓库

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
order.go 2.65 KB
一键复制 编辑 原始数据 按行查看 历史
package api
import (
"encoding/base64"
"errors"
"fmt"
"net"
"time"
"gitee.com/wosylf/ltool/ssl/model"
)
// OrderOptions used to create an order (optional).
type OrderOptions struct {
NotBefore time.Time
NotAfter time.Time
// A string uniquely identifying a previously-issued certificate which this
// order is intended to replace.
// - https://datatracker.ietf.org/doc/html/draft-ietf-model-ari-03#section-5
ReplacesCertID string
}
type OrderService service
// New Creates a new order.
func (o *OrderService) New(domains []string) (model.ExtendedOrder, error) {
return o.NewWithOptions(domains, nil)
}
// NewWithOptions Creates a new order.
func (o *OrderService) NewWithOptions(domains []string, opts *OrderOptions) (model.ExtendedOrder, error) {
var identifiers []model.Identifier
for _, domain := range domains {
ident := model.Identifier{Value: domain, Type: "dns"}
if net.ParseIP(domain) != nil {
ident.Type = "ip"
}
identifiers = append(identifiers, ident)
}
orderReq := model.SSLOrder{Identifiers: identifiers}
if opts != nil {
if !opts.NotAfter.IsZero() {
orderReq.NotAfter = opts.NotAfter.Format(time.RFC3339)
}
if !opts.NotBefore.IsZero() {
orderReq.NotBefore = opts.NotBefore.Format(time.RFC3339)
}
fmt.Printf("o.core.GetDirectory().RenewalInfo%+v", o.core.GetDirectory().RenewalInfo)
if o.core.GetDirectory().RenewalInfo != "" {
orderReq.Replaces = opts.ReplacesCertID
fmt.Printf("opts.ReplacesCertID%+v", opts.ReplacesCertID)
}
}
var order model.SSLOrder
fmt.Printf("新建订单的url%+v", o.core.GetDirectory().NewOrderURL)
resp, err := o.core.Post(o.core.GetDirectory().NewOrderURL, orderReq, &order)
if err != nil {
return model.ExtendedOrder{}, err
}
return model.ExtendedOrder{
SSLOrder: order,
Location: resp.Header.Get("Location"),
}, nil
}
// Get Gets an order.
func (o *OrderService) Get(orderURL string) (model.ExtendedOrder, error) {
if orderURL == "" {
return model.ExtendedOrder{}, errors.New("order[get]: empty URL")
}
var order model.SSLOrder
_, err := o.core.postAsGet(orderURL, &order)
if err != nil {
return model.ExtendedOrder{}, err
}
return model.ExtendedOrder{SSLOrder: order}, nil
}
// UpdateForCSR Updates an order for a CSR.
func (o *OrderService) UpdateForCSR(orderURL string, csr []byte) (model.ExtendedOrder, error) {
csrMsg := model.CSRMessage{
Csr: base64.RawURLEncoding.EncodeToString(csr),
}
var order model.SSLOrder
_, err := o.core.Post(orderURL, csrMsg, &order)
if err != nil {
return model.ExtendedOrder{}, err
}
if order.Status == model.StatusInvalid {
return model.ExtendedOrder{}, order.Error
}
return model.ExtendedOrder{SSLOrder: order}, nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wosylf/ltool.git
git@gitee.com:wosylf/ltool.git
wosylf
ltool
龙飞工具仓库
52ba2a27c649

搜索帮助