代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。