@@ -13,6 +13,94 @@ import (
13
13
14
14
var (
15
15
version = "development"
16
+
17
+ keystoreDirFlag = & cli.StringFlag {
18
+ Name : "keystore-dir" ,
19
+ Usage : "Directory where the keystore files are stored" ,
20
+ Value : "./data/keystore" ,
21
+ EnvVars : []string {"KEYSTORE_DIR" },
22
+ }
23
+
24
+ grpcPortFlag = & cli.StringFlag {
25
+ Name : "grpc-port" ,
26
+ Usage : "Port for the gRPC server" ,
27
+ Value : "50051" ,
28
+ EnvVars : []string {"GRPC_PORT" },
29
+ }
30
+
31
+ metricsPortFlag = & cli.StringFlag {
32
+ Name : "metrics-port" ,
33
+ Usage : "Port for the metrics server" ,
34
+ Value : "9091" ,
35
+ EnvVars : []string {"METRICS_PORT" },
36
+ }
37
+
38
+ logLevelFlag = & cli.StringFlag {
39
+ Name : "log-level" ,
40
+ Usage : "Log level - supported levels: debug, info, warn, error" ,
41
+ Value : "info" ,
42
+ EnvVars : []string {"LOG_LEVEL" },
43
+ }
44
+
45
+ logFormatFlag = & cli.StringFlag {
46
+ Name : "log-format" ,
47
+ Usage : "Log format - supported formats: text, json" ,
48
+ Value : "text" ,
49
+ EnvVars : []string {"LOG_FORMAT" },
50
+ }
51
+
52
+ // TLS flags to set up secure gRPC server, optional
53
+ tlsCaCertFlag = & cli.StringFlag {
54
+ Name : "tls-ca-cert" ,
55
+ Usage : "TLS CA certificate" ,
56
+ EnvVars : []string {"TLS_CA_CERT" },
57
+ }
58
+
59
+ tlsServerKeyFlag = & cli.StringFlag {
60
+ Name : "tls-server-key" ,
61
+ Usage : "TLS server key" ,
62
+ EnvVars : []string {"TLS_SERVER_KEY" },
63
+ }
64
+
65
+ storageTypeFlag = & cli.StringFlag {
66
+ Name : "storage-type" ,
67
+ Usage : "Storage type - supported types: filesystem, aws-secret-manager" ,
68
+ Value : "filesystem" ,
69
+ EnvVars : []string {"STORAGE_TYPE" },
70
+ }
71
+
72
+ awsRegionFlag = & cli.StringFlag {
73
+ Name : "aws-region" ,
74
+ Usage : "AWS region" ,
75
+ Value : "us-east-2" ,
76
+ EnvVars : []string {"AWS_REGION" },
77
+ }
78
+
79
+ awsProfileFlag = & cli.StringFlag {
80
+ Name : "aws-profile" ,
81
+ Usage : "AWS profile" ,
82
+ Value : "default" ,
83
+ EnvVars : []string {"AWS_PROFILE" },
84
+ }
85
+
86
+ awsAuthenticationModeFlag = & cli.StringFlag {
87
+ Name : "aws-authentication-mode" ,
88
+ Usage : "AWS authentication mode - supported modes: environment, specified" ,
89
+ Value : "environment" ,
90
+ EnvVars : []string {"AWS_AUTHENTICATION_MODE" },
91
+ }
92
+
93
+ awsAccessKeyIDFlag = & cli.StringFlag {
94
+ Name : "aws-access-key-id" ,
95
+ Usage : "AWS access key ID" ,
96
+ EnvVars : []string {"AWS_ACCESS_KEY_ID" },
97
+ }
98
+
99
+ awsSecretAccessKeyFlag = & cli.StringFlag {
100
+ Name : "aws-secret-access-key" ,
101
+ Usage : "AWS secret access key" ,
102
+ EnvVars : []string {"AWS_SECRET_ACCESS_KEY" },
103
+ }
16
104
)
17
105
18
106
func main () {
@@ -43,6 +131,7 @@ func main() {
43
131
tlsServerKeyFlag ,
44
132
storageTypeFlag ,
45
133
awsRegionFlag ,
134
+ awsProfileFlag ,
46
135
awsAuthenticationModeFlag ,
47
136
awsAccessKeyIDFlag ,
48
137
awsSecretAccessKeyFlag ,
@@ -67,13 +156,29 @@ func start(c *cli.Context) error {
67
156
logFormat := c .String (logFormatFlag .Name )
68
157
tlsCaCert := c .String (tlsCaCertFlag .Name )
69
158
tlsServerKey := c .String (tlsServerKeyFlag .Name )
159
+ storageType := c .String (storageTypeFlag .Name )
160
+ awsRegion := c .String (awsRegionFlag .Name )
161
+ awsProfile := c .String (awsProfileFlag .Name )
162
+ awsAuthenticationMode := c .String (awsAuthenticationModeFlag .Name )
163
+ awsAccessKeyID := c .String (awsAccessKeyIDFlag .Name )
164
+ awsSecretAccessKey := c .String (awsSecretAccessKeyFlag .Name )
70
165
71
166
cfg := & configuration.Configuration {
72
- KeystoreDir : keystoreDir ,
73
- GrpcPort : grpcPort ,
74
- MetricsPort : metricsPort ,
75
- TLSCACert : tlsCaCert ,
76
- TLSServerKey : tlsServerKey ,
167
+ KeystoreDir : keystoreDir ,
168
+ GrpcPort : grpcPort ,
169
+ MetricsPort : metricsPort ,
170
+ TLSCACert : tlsCaCert ,
171
+ TLSServerKey : tlsServerKey ,
172
+ StorageType : storageType ,
173
+ AWSRegion : awsRegion ,
174
+ AWSProfile : awsProfile ,
175
+ AWSAuthenticationMode : awsAuthenticationMode ,
176
+ AWSAccessKeyID : awsAccessKeyID ,
177
+ AWSSecretAccessKey : awsSecretAccessKey ,
178
+ }
179
+
180
+ if err := cfg .Validate (); err != nil {
181
+ return fmt .Errorf ("invalid configuration: %v" , err )
77
182
}
78
183
79
184
sLogLevel := levelToLogLevel (logLevel )
@@ -86,7 +191,7 @@ func start(c *cli.Context) error {
86
191
handler := slog .NewTextHandler (os .Stdout , & slogOptions )
87
192
logger = slog .New (handler )
88
193
}
89
-
194
+ logger . Info ( "using configuration" , "config" , cfg )
90
195
logger .Info (fmt .Sprintf ("Starting cerberus server version: %s" , version ))
91
196
server .Start (cfg , logger )
92
197
return nil
0 commit comments