package server import ( cert "cfTest/cloudflareApi/certificate" "context" "github.com/cloudflare/cloudflare-go" "log" ) type CertificateServer struct { cert.UnimplementedCertificateCloudflareServer } func (s *CertificateServer) CreateCertificate(ctx context.Context, requestCloudflare *cert.CreateCertificateRequestCloudflare) (*cert.CreateCertificateReplyCloudflare, error) { log.Printf("apiKey Received: %v", requestCloudflare.GetApiKey()) log.Printf("apiEmail Received: %v", requestCloudflare.GetApiEmail()) log.Printf("zoneName Received: %v", requestCloudflare.GetZoneName()) log.Printf("certificate Received: %v", requestCloudflare.GetCertificate()) log.Printf("privateKey Received: %v", requestCloudflare.GetPrivateKey()) api, err := cloudflare.New(requestCloudflare.GetApiKey(), requestCloudflare.GetApiEmail()) if err != nil { return nil, err } id, err := api.ZoneIDByName(requestCloudflare.GetZoneName()) if err != nil { return nil, err } ctxAPI := context.Background() geoRestrictions := cloudflare.ZoneCustomSSLGeoRestrictions{Label: "us"} zoneCustomSSL := cloudflare.ZoneCustomSSLOptions{} zoneCustomSSL.Certificate = requestCloudflare.GetCertificate() zoneCustomSSL.PrivateKey = requestCloudflare.GetPrivateKey() zoneCustomSSL.GeoRestrictions = &geoRestrictions zoneCustomSSL.BundleMethod = "ubiquitous" zoneCustomSSL.Type = "sni_custom" createCertificate, err := api.CreateSSL(ctxAPI, id, zoneCustomSSL) if err != nil { return nil, err } return &cert.CreateCertificateReplyCloudflare{ Success: true, Id: createCertificate.ID, }, err } func (s *CertificateServer) DeleteCertificate(ctx context.Context, requestCloudflare *cert.DeleteCertificateRequestCloudflare) (*cert.DeleteCertificateReplyCloudflare, error) { log.Printf("apiKey Received: %v", requestCloudflare.GetApiKey()) log.Printf("apiEmail Received: %v", requestCloudflare.GetApiEmail()) log.Printf("zoneName Received: %v", requestCloudflare.GetZoneName()) log.Printf("certificateId Received: %v", requestCloudflare.GetCertificateId()) api, err := cloudflare.New(requestCloudflare.GetApiKey(), requestCloudflare.GetApiEmail()) if err != nil { return nil, err } ctxAPI := context.Background() id, err := api.ZoneIDByName(requestCloudflare.GetZoneName()) if err != nil { return nil, err } err = api.DeleteSSL(ctxAPI, id, requestCloudflare.GetCertificateId()) if err != nil { return nil, err } return &cert.DeleteCertificateReplyCloudflare{ Success: true, Id: requestCloudflare.GetCertificateId(), }, err } func (s *CertificateServer) EditCertificate(ctx context.Context, requestCloudflare *cert.EditCertificateRequestCloudflare) (*cert.EditCertificateReplyCloudflare, error) { log.Printf("apiKey Received: %v", requestCloudflare.GetApiKey()) log.Printf("apiEmail Received: %v", requestCloudflare.GetApiEmail()) log.Printf("zoneName Received: %v", requestCloudflare.GetZoneName()) log.Printf("certificateId Received: %v", requestCloudflare.GetCertificateId()) log.Printf("certificate Received: %v", requestCloudflare.GetCertificate()) log.Printf("privateKey Received: %v", requestCloudflare.GetPrivateKey()) api, err := cloudflare.New(requestCloudflare.GetApiKey(), requestCloudflare.GetApiEmail()) if err != nil { return nil, err } id, err := api.ZoneIDByName(requestCloudflare.GetZoneName()) if err != nil { return nil, err } ctxAPI := context.Background() geoRestrictions := cloudflare.ZoneCustomSSLGeoRestrictions{Label: "us"} zoneCustomSSL := cloudflare.ZoneCustomSSLOptions{} zoneCustomSSL.Certificate = requestCloudflare.GetCertificate() zoneCustomSSL.PrivateKey = requestCloudflare.GetPrivateKey() zoneCustomSSL.GeoRestrictions = &geoRestrictions zoneCustomSSL.BundleMethod = "ubiquitous" zoneCustomSSL.Type = "sni_custom" editCertificate, err := api.UpdateSSL(ctxAPI, id, requestCloudflare.GetCertificateId(), zoneCustomSSL) if err != nil { return nil, err } return &cert.EditCertificateReplyCloudflare{ Success: true, Id: editCertificate.ID, }, err }