diff --git a/.gitignore b/.gitignore index 514bfbb394a991598b2e58da7a940cd3019912f5..3a6b01579f51e2d81137051740f43e7cc8e39632 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ vendor/ Gopkg.lock .idea/ .project +config.yaml diff --git a/config.yaml.sample b/config.yaml.sample new file mode 100644 index 0000000000000000000000000000000000000000..0ec5701dd0ea40c10f194f720f069e448cea9857 --- /dev/null +++ b/config.yaml.sample @@ -0,0 +1,10 @@ +dataStorageClientUrl: localhost:7777 +grpcClientUrl: localhost:7877 +restClientUrl: localhost:7878 + +# Certificate Related Config +certDir: cert +certFile: server.crt +certKey: server.key +vereignCertFile: vereign_ca.cer +vereignCertKey: vereign_ca.key \ No newline at end of file diff --git a/main.go b/main.go index 0ed788dfa721c3818628fccaee0d525e01a7c1b3..076a8b7ac919e1f026a07659d6ca1176b3386b80 100644 --- a/main.go +++ b/main.go @@ -18,31 +18,31 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. package main import ( - "fmt" "log" "code.vereign.com/code/key-storage-agent/server" - "code.vereign.com/code/viam-apis/utils" + "github.com/spf13/viper" ) // main start a gRPC server and waits for connection func main() { + server.SetConfigValues() // TODO this should be done via configuration or even a certificate repository - certDir := utils.GetCertDirFromFlags() + certDir := viper.GetString("certDir") if certDir == "" { log.Printf("cert-dir cannot be empty") return } - grpcAddress := fmt.Sprintf("%s:%d", "localhost", 7877) - restAddress := fmt.Sprintf("%s:%d", "localhost", 7878) - dataStorageAddress := fmt.Sprintf("%s:%d", "localhost", 7777) + grpcAddress := viper.GetString("grpcClientUrl") + restAddress := viper.GetString("restClientUrl") + dataStorageAddress := viper.GetString("dataStorageClientUrl") - certFilePath := certDir + "/server.crt" - privateKeyFilePath := certDir + "/server.key" - vereignCertFilePath := certDir + "/vereign_ca.cer" - vereignPrivateKeyFilePath := certDir + "/vereign_ca.key" + certFilePath := certDir + "/" + viper.GetString("certFile") + privateKeyFilePath := certDir + "/" + viper.GetString("certKey") + vereignCertFilePath := certDir + "/" + viper.GetString("vereignCertFile") + vereignPrivateKeyFilePath := certDir + "/" + viper.GetString("vereignCertKey") // fire the gRPC server in a goroutine go func() { diff --git a/server/configs.go b/server/configs.go new file mode 100644 index 0000000000000000000000000000000000000000..635427583f2eeae2fd99fb4263581bd7628bf8b5 --- /dev/null +++ b/server/configs.go @@ -0,0 +1,29 @@ +package server + +import ( + "log" + "github.com/spf13/viper" +) + +func SetConfigValues() { + // Set Default Values For Config Variables + + // Vereign API Related + viper.SetDefault("grpcClientUrl", "localhost:7877") + viper.SetDefault("restClientUrl", "localhost:7878") + viper.SetDefault("dataStorageClientUrl", "localhost:7777") + + // Certificates Related + viper.SetDefault("certDir", "cert") + viper.SetDefault("certFile", "server.crt") + viper.SetDefault("certKey", "server.key") + viper.SetDefault("vereignCertFile", "vereign_ca.cer") + viper.SetDefault("vereignCertKey", "vereign_ca.key") + + // Read Config File + viper.SetConfigName("config") + viper.AddConfigPath(".") + if err := viper.ReadInConfig(); err != nil { + log.Printf("can't read config: %s, will use default values", err) + } +} \ No newline at end of file diff --git a/server/server.go b/server/server.go index 40e6a427ae6e7f8f8a88598daba917a20cf12029..8a58bd72c851ee9f855224963509fbb48c2366f7 100644 --- a/server/server.go +++ b/server/server.go @@ -36,6 +36,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/credentials" "google.golang.org/grpc/metadata" + "github.com/spf13/viper" ) // private type for Context keys @@ -69,7 +70,7 @@ func authenticateClient(ctx context.Context, s *handler.KeyStorageServerImpl, in } sessionClient := &client.DataStorageClientImpl{} - sessionClient.SetUpClient(viamAuth, "localhost:7777", pkgCertFile) + sessionClient.SetUpClient(viamAuth, viper.GetString("dataStorageClientUrl"), pkgCertFile) defer sessionClient.CloseClient() if clientAuth.Uuid == viamAuth.Uuid {