CertificateCloudflareServer.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package server
  2. import (
  3. cert "cfTest/cloudflareApi/certificate"
  4. "context"
  5. "github.com/cloudflare/cloudflare-go"
  6. "log"
  7. )
  8. type CertificateServer struct {
  9. cert.UnimplementedCertificateCloudflareServer
  10. }
  11. func (s *CertificateServer) CreateCertificate(ctx context.Context, requestCloudflare *cert.CreateCertificateRequestCloudflare) (*cert.CreateCertificateReplyCloudflare, error) {
  12. log.Printf("apiKey Received: %v", requestCloudflare.GetApiKey())
  13. log.Printf("apiEmail Received: %v", requestCloudflare.GetApiEmail())
  14. log.Printf("zoneName Received: %v", requestCloudflare.GetZoneName())
  15. log.Printf("certificate Received: %v", requestCloudflare.GetCertificate())
  16. log.Printf("privateKey Received: %v", requestCloudflare.GetPrivateKey())
  17. api, err := cloudflare.New(requestCloudflare.GetApiKey(), requestCloudflare.GetApiEmail())
  18. if err != nil {
  19. return nil, err
  20. }
  21. id, err := api.ZoneIDByName(requestCloudflare.GetZoneName())
  22. if err != nil {
  23. return nil, err
  24. }
  25. ctxAPI := context.Background()
  26. geoRestrictions := cloudflare.ZoneCustomSSLGeoRestrictions{Label: "us"}
  27. zoneCustomSSL := cloudflare.ZoneCustomSSLOptions{}
  28. zoneCustomSSL.Certificate = requestCloudflare.GetCertificate()
  29. zoneCustomSSL.PrivateKey = requestCloudflare.GetPrivateKey()
  30. zoneCustomSSL.GeoRestrictions = &geoRestrictions
  31. zoneCustomSSL.BundleMethod = "ubiquitous"
  32. zoneCustomSSL.Type = "sni_custom"
  33. createCertificate, err := api.CreateSSL(ctxAPI, id, zoneCustomSSL)
  34. if err != nil {
  35. return nil, err
  36. }
  37. return &cert.CreateCertificateReplyCloudflare{
  38. Success: true,
  39. Id: createCertificate.ID,
  40. }, err
  41. }
  42. func (s *CertificateServer) DeleteCertificate(ctx context.Context, requestCloudflare *cert.DeleteCertificateRequestCloudflare) (*cert.DeleteCertificateReplyCloudflare, error) {
  43. log.Printf("apiKey Received: %v", requestCloudflare.GetApiKey())
  44. log.Printf("apiEmail Received: %v", requestCloudflare.GetApiEmail())
  45. log.Printf("zoneName Received: %v", requestCloudflare.GetZoneName())
  46. log.Printf("certificateId Received: %v", requestCloudflare.GetCertificateId())
  47. api, err := cloudflare.New(requestCloudflare.GetApiKey(), requestCloudflare.GetApiEmail())
  48. if err != nil {
  49. return nil, err
  50. }
  51. ctxAPI := context.Background()
  52. id, err := api.ZoneIDByName(requestCloudflare.GetZoneName())
  53. if err != nil {
  54. return nil, err
  55. }
  56. err = api.DeleteSSL(ctxAPI, id, requestCloudflare.GetCertificateId())
  57. if err != nil {
  58. return nil, err
  59. }
  60. return &cert.DeleteCertificateReplyCloudflare{
  61. Success: true,
  62. Id: requestCloudflare.GetCertificateId(),
  63. }, err
  64. }
  65. func (s *CertificateServer) EditCertificate(ctx context.Context, requestCloudflare *cert.EditCertificateRequestCloudflare) (*cert.EditCertificateReplyCloudflare, error) {
  66. log.Printf("apiKey Received: %v", requestCloudflare.GetApiKey())
  67. log.Printf("apiEmail Received: %v", requestCloudflare.GetApiEmail())
  68. log.Printf("zoneName Received: %v", requestCloudflare.GetZoneName())
  69. log.Printf("certificateId Received: %v", requestCloudflare.GetCertificateId())
  70. log.Printf("certificate Received: %v", requestCloudflare.GetCertificate())
  71. log.Printf("privateKey Received: %v", requestCloudflare.GetPrivateKey())
  72. api, err := cloudflare.New(requestCloudflare.GetApiKey(), requestCloudflare.GetApiEmail())
  73. if err != nil {
  74. return nil, err
  75. }
  76. id, err := api.ZoneIDByName(requestCloudflare.GetZoneName())
  77. if err != nil {
  78. return nil, err
  79. }
  80. ctxAPI := context.Background()
  81. geoRestrictions := cloudflare.ZoneCustomSSLGeoRestrictions{Label: "us"}
  82. zoneCustomSSL := cloudflare.ZoneCustomSSLOptions{}
  83. zoneCustomSSL.Certificate = requestCloudflare.GetCertificate()
  84. zoneCustomSSL.PrivateKey = requestCloudflare.GetPrivateKey()
  85. zoneCustomSSL.GeoRestrictions = &geoRestrictions
  86. zoneCustomSSL.BundleMethod = "ubiquitous"
  87. zoneCustomSSL.Type = "sni_custom"
  88. editCertificate, err := api.UpdateSSL(ctxAPI, id, requestCloudflare.GetCertificateId(), zoneCustomSSL)
  89. if err != nil {
  90. return nil, err
  91. }
  92. return &cert.EditCertificateReplyCloudflare{
  93. Success: true,
  94. Id: editCertificate.ID,
  95. }, err
  96. }