@@ -352,3 +352,224 @@ func postRequest(mac *auth.Credentials, path string, body interface{}) (resData
352
352
353
353
return
354
354
}
355
+
356
+ // CertListReq 获取ssl证书列表请求内容
357
+ type CertListReq struct {
358
+ Marker string `json:"marker"`
359
+ Limit int `json:"limit"`
360
+ }
361
+
362
+ // CertListResp 获取ssl证书列表响应内容
363
+ type CertListResp struct {
364
+ Marker string `json:"marker"`
365
+ Certs []struct {
366
+ CertID string `json:"certid"`
367
+ Name string `json:"name"`
368
+ CommonName string `json:"common_name"`
369
+ DNSNames []string `json:"dnsnames"`
370
+ NotBefore int `json:"not_before"`
371
+ NotAfter int `json:"not_after"`
372
+ CreateTime int `json:"create_time"`
373
+ } `json:"certs"`
374
+ }
375
+
376
+ // GetCertList 获取ssl证书列表
377
+ func (m * CdnManager ) GetCertList (marker string , limit int ) (certList CertListResp , err error ) {
378
+ reqParams := fmt .Sprintf ("marker=%s&limit=%d" , marker , limit )
379
+ urlStr := fmt .Sprintf ("%s/sslcert?%s" , FusionHost , reqParams )
380
+ req , reqErr := http .NewRequest ("GET" , urlStr , nil )
381
+ if reqErr != nil {
382
+ err = reqErr
383
+ return
384
+ }
385
+ accessToken , signErr := m .mac .SignRequest (req )
386
+ if signErr != nil {
387
+ err = signErr
388
+ return
389
+ }
390
+ req .Header .Add ("Authorization" , "QBox " + accessToken )
391
+ req .Header .Add ("Content-Type" , "application/x-www-form-urlencoded" )
392
+ resp , respErr := http .DefaultClient .Do (req )
393
+ if respErr != nil {
394
+ err = respErr
395
+ return
396
+ }
397
+ defer resp .Body .Close ()
398
+ resData , ioErr := ioutil .ReadAll (resp .Body )
399
+ if ioErr != nil {
400
+ err = ioErr
401
+ return
402
+ }
403
+ umErr := json .Unmarshal (resData , & certList )
404
+ if umErr != nil {
405
+ err = umErr
406
+ return
407
+ }
408
+
409
+ return
410
+ }
411
+
412
+ // CertDetailResp 获取单个ssl证书响应内容
413
+ type CertDetailResp struct {
414
+ Name string `json:"name"`
415
+ CommonName string `json:"common_name"`
416
+ DNSNames []string `json:"dnsnames"`
417
+ NotBefore int `json:"not_before"`
418
+ NotAfter int `json:"not_after"`
419
+ Pri string `json:"pri"`
420
+ Ca string `json:"ca"`
421
+ CreateTime int `json:"create_time"`
422
+ }
423
+
424
+ // RealCertDetailResp 当前的api返回与官方文档有差异
425
+ type RealCertDetailResp struct {
426
+ CertID string `json:"certid"`
427
+ Name string `json:"name"`
428
+ UID int `json:"uid"`
429
+ CommonName string `json:"common_name"`
430
+ DNSNames []string `json:"dnsnames"`
431
+ CreateTime int `json:"create_time"`
432
+ NotBefore int `json:"not_before"`
433
+ NotAfter int `json:"not_after"`
434
+ OrderID string `json:"orderid"`
435
+ ProductShortName string `json:"product_short_name"`
436
+ ProductType string `json:"product_type"`
437
+ CertType string `json:"cert_type"`
438
+ Encrypt string `json:"encrypt"`
439
+ EncryptParameter string `json:"encryptParameter"`
440
+ Enable bool `json:"enable"`
441
+ ChildOrderID string `json:"child_order_id"`
442
+ State string `json:"state"`
443
+ AutoRenew bool `json:"auto_renew"`
444
+ Renewable bool `json:"renewable"`
445
+ CA string `json:"ca"`
446
+ }
447
+
448
+ // GetCertDetail 获取单个ssl证书的详细信息
449
+ func (m * CdnManager ) GetCertDetail (certID string ) (certDetail CertDetailResp , err error ) {
450
+ urlStr := fmt .Sprintf ("%s/sslcert/%s" , FusionHost , certID )
451
+ req , reqErr := http .NewRequest ("GET" , urlStr , nil )
452
+ if reqErr != nil {
453
+ err = reqErr
454
+ return
455
+ }
456
+ accessToken , signErr := m .mac .SignRequest (req )
457
+ if signErr != nil {
458
+ err = signErr
459
+ return
460
+ }
461
+ req .Header .Add ("Authorization" , "QBox " + accessToken )
462
+ req .Header .Add ("Content-Type" , "application/x-www-form-urlencoded" )
463
+ resp , respErr := http .DefaultClient .Do (req )
464
+ if respErr != nil {
465
+ err = respErr
466
+ return
467
+ }
468
+ defer resp .Body .Close ()
469
+ resData , ioErr := ioutil .ReadAll (resp .Body )
470
+ if ioErr != nil {
471
+ err = ioErr
472
+ return
473
+ }
474
+ var resJson = struct {
475
+ Code int
476
+ Error string
477
+ Cert RealCertDetailResp
478
+ }{}
479
+ umErr := json .Unmarshal (resData , & resJson )
480
+ certDetail .Ca = resJson .Cert .CA
481
+ certDetail .CommonName = resJson .Cert .Name
482
+ certDetail .DNSNames = resJson .Cert .DNSNames
483
+ certDetail .Name = resJson .Cert .Name
484
+ certDetail .NotAfter = resJson .Cert .NotAfter
485
+ certDetail .NotBefore = resJson .Cert .NotBefore
486
+ certDetail .CreateTime = resJson .Cert .CreateTime
487
+ if umErr != nil {
488
+ err = umErr
489
+ return
490
+ }
491
+
492
+ return
493
+ }
494
+
495
+ // UploadCertReq 上传ssl证书请求内容
496
+ type UploadCertReq struct {
497
+ Name string `json:"name"`
498
+ CommonName string `json:"common_name"`
499
+ Pri string `json:"pri"`
500
+ Ca string `json:"ca"`
501
+ }
502
+
503
+ // UploadCertResp 上传ssl证书响应内容
504
+ type UploadCertResp struct {
505
+ CertID string `json:"certID"`
506
+ }
507
+
508
+ // UploadCert 上传ssl证书
509
+ func (m * CdnManager ) UploadCert (name , commonName , pri , ca string ) (resp UploadCertResp , err error ) {
510
+ reqBody := UploadCertReq {
511
+ Name : name ,
512
+ CommonName : commonName ,
513
+ Pri : pri ,
514
+ Ca : ca ,
515
+ }
516
+ urlStr := fmt .Sprintf ("%s/sslcert" , FusionHost )
517
+ reqData , _ := json .Marshal (reqBody )
518
+ req , reqErr := http .NewRequest ("POST" , urlStr , bytes .NewReader (reqData ))
519
+ if reqErr != nil {
520
+ err = reqErr
521
+ return
522
+ }
523
+ accessToken , signErr := m .mac .SignRequest (req )
524
+ if signErr != nil {
525
+ err = signErr
526
+ return
527
+ }
528
+ req .Header .Add ("Authorization" , "QBox " + accessToken )
529
+ req .Header .Add ("Content-Type" , "application/json" )
530
+ httpResp , respErr := http .DefaultClient .Do (req )
531
+ if respErr != nil {
532
+ err = respErr
533
+ return
534
+ }
535
+ defer httpResp .Body .Close ()
536
+ resData , ioErr := ioutil .ReadAll (httpResp .Body )
537
+ if ioErr != nil {
538
+ err = ioErr
539
+ return
540
+ }
541
+ umErr := json .Unmarshal (resData , & resp )
542
+ if umErr != nil {
543
+ err = umErr
544
+ return
545
+ }
546
+ return
547
+ }
548
+
549
+ // DeleteCert 删除ssl证书
550
+ func (m * CdnManager ) DeleteCert (certID string ) (err error ) {
551
+ urlStr := fmt .Sprintf ("%s/sslcert/%s" , FusionHost , certID )
552
+ req , reqErr := http .NewRequest ("DELETE" , urlStr , nil )
553
+ if reqErr != nil {
554
+ err = reqErr
555
+ return
556
+ }
557
+ accessToken , signErr := m .mac .SignRequest (req )
558
+ if signErr != nil {
559
+ err = signErr
560
+ return
561
+ }
562
+ req .Header .Add ("Authorization" , "QBox " + accessToken )
563
+ req .Header .Add ("Content-Type" , "application/json" )
564
+ resp , respErr := http .DefaultClient .Do (req )
565
+ if respErr != nil {
566
+ err = respErr
567
+ return
568
+ }
569
+ defer resp .Body .Close ()
570
+ if resp .StatusCode != http .StatusOK {
571
+ err = fmt .Errorf ("unexpected status code: %d" , resp .StatusCode )
572
+ return
573
+ }
574
+ return
575
+ }
0 commit comments