This repository has been archived by the owner on May 18, 2022. It is now read-only.
/
amqp_middleware.go
109 lines (82 loc) · 3.14 KB
/
amqp_middleware.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package api
import (
"context"
"crypto/x509"
"fmt"
"time"
"github.com/go-kit/kit/log"
"github.com/go-kit/kit/log/level"
"github.com/lamassuiot/lamassu-ca/pkg/secrets"
"github.com/streadway/amqp"
)
type amqpMiddleware struct {
amqpChannel *amqp.Channel
logger log.Logger
next Service
}
func NewAmqpMiddleware(channel *amqp.Channel, logger log.Logger) Middleware {
return func(next Service) Service {
return &amqpMiddleware{
amqpChannel: channel,
logger: logger,
next: next,
}
}
}
func (mw *amqpMiddleware) GetSecretProviderName(ctx context.Context) (providerName string) {
defer func(begin time.Time) {
}(time.Now())
return mw.next.GetSecretProviderName(ctx)
}
func (mw *amqpMiddleware) Health(ctx context.Context) bool {
defer func(begin time.Time) {
}(time.Now())
return mw.next.Health(ctx)
}
func (mw *amqpMiddleware) GetCAs(ctx context.Context, caType secrets.CAType) (CAs secrets.Certs, err error) {
defer func(begin time.Time) {
}(time.Now())
return mw.next.GetCAs(ctx, caType)
}
func (mw *amqpMiddleware) CreateCA(ctx context.Context, caType secrets.CAType, caName string, ca secrets.Cert) (cretedCa secrets.Cert, err error) {
defer func(begin time.Time) {
err = mw.amqpChannel.Publish("", "create_ca_queue", false, false, amqp.Publishing{
ContentType: "text/json",
Body: []byte(fmt.Sprintf(`{"jsonrpc": "2.0", "method": "CREATE_CA", "params": {"ca_name":"%s", "serial_number": "%s", "ca_cert":"%s"}}`, cretedCa.Name, cretedCa.SerialNumber, cretedCa.CertContent.CerificateBase64)),
})
if err != nil {
level.Error(mw.logger).Log("msg", "Error while publishing to AMQP queue", "err", err)
}
}(time.Now())
return mw.next.CreateCA(ctx, caType, caName, ca)
}
func (mw *amqpMiddleware) ImportCA(ctx context.Context, caType secrets.CAType, caName string, ca secrets.CAImport) (err error) {
defer func(begin time.Time) {
}(time.Now())
return mw.next.ImportCA(ctx, caType, caName, ca)
}
func (mw *amqpMiddleware) DeleteCA(ctx context.Context, caType secrets.CAType, CA string) (err error) {
defer func(begin time.Time) {
}(time.Now())
return mw.next.DeleteCA(ctx, caType, CA)
}
func (mw *amqpMiddleware) GetIssuedCerts(ctx context.Context, caType secrets.CAType, caName string) (certs secrets.Certs, err error) {
defer func(begin time.Time) {
}(time.Now())
return mw.next.GetIssuedCerts(ctx, caType, caName)
}
func (mw *amqpMiddleware) GetCert(ctx context.Context, caType secrets.CAType, caName string, serialNumber string) (cert secrets.Cert, err error) {
defer func(begin time.Time) {
}(time.Now())
return mw.next.GetCert(ctx, caType, caName, serialNumber)
}
func (mw *amqpMiddleware) DeleteCert(ctx context.Context, caType secrets.CAType, caName string, serialNumber string) (err error) {
defer func(begin time.Time) {
}(time.Now())
return mw.next.DeleteCert(ctx, caType, caName, serialNumber)
}
func (mw *amqpMiddleware) SignCertificate(ctx context.Context, caType secrets.CAType, caName string, csr x509.CertificateRequest, signVerbatim bool) (crt string, err error) {
defer func(begin time.Time) {
}(time.Now())
return mw.next.SignCertificate(ctx, caType, caName, csr, signVerbatim)
}