diff options
author | giri <hg0071052@techmahindra.com> | 2018-02-22 20:07:05 +0530 |
---|---|---|
committer | Kiran Kamineni <kiran.k.kamineni@intel.com> | 2018-02-27 17:51:20 +0000 |
commit | 6fe15746e7284efdc59f382793d17c4a0a1028a2 (patch) | |
tree | e7de9cb85ea95772142a7793c3bd806b10ab7c7c /sms-quorum/src/smsquorum/quorumclient.go | |
parent | 2199b03e5d7007ca125730c81304c10adf92dddc (diff) |
Added Quorum client with vault config file
Quorum client is used to check the
status of the vault and unseal if found sealed
Change-Id: I113fd64ee8a3ed97b2c445f9a27d7352dc86aaaf
Issue-ID: AAF-130
Signed-off-by: giri <hg0071052@techmahindra.com>
Diffstat (limited to 'sms-quorum/src/smsquorum/quorumclient.go')
-rw-r--r-- | sms-quorum/src/smsquorum/quorumclient.go | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/sms-quorum/src/smsquorum/quorumclient.go b/sms-quorum/src/smsquorum/quorumclient.go new file mode 100644 index 0000000..edee934 --- /dev/null +++ b/sms-quorum/src/smsquorum/quorumclient.go @@ -0,0 +1,80 @@ +/* +* Copyright 2018 TechMahindra +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. + */ + +package main + +import ( + "encoding/base64" + "encoding/json" + "io/ioutil" + "log" + "net/http" + "os" + "strings" + "time" +) + +//This application checks the backend status and +//calls necessary initialization endpoints on the +//SMS webservice +func main() { + //Struct to read json configuration file + type config struct { + B64Key string `json:"key"` + TimeOut string `json:"timeout"` + } + //Load the config File for reading + vcf, err := os.Open("config.json") + if err != nil { + log.Fatalf("Error reading config file %v", err) + } + + cfg := config{} + decoder := json.NewDecoder(vcf) + err = decoder.Decode(&cfg) + if err != nil { + log.Fatalf("Error while parsing config file %v", err) + } + + duration, _ := time.ParseDuration(cfg.TimeOut) + + for _ = range time.NewTicker(duration).C { + //Currently using a localhost host, later will be replaced with + //exact url + response, err := http.Get("http://localhost:8200/v1/sys/seal-status") + if err != nil { + log.Fatalf("Error while connecting to SMS webservice %v", err) + } + + responseData, err := ioutil.ReadAll(response.Body) + if err != nil { + log.Fatalf("Error while reading response %v", err) + } + var data map[string]interface{} + json.Unmarshal(responseData, &data) + sealed := data["sealed"].(bool) + // Unseal the vault if sealed + if sealed { + decdB64Key, _ := base64.StdEncoding.DecodeString(cfg.B64Key) + body := strings.NewReader(`{"key":"` + string(decdB64Key) + `"}`) + //below url will be replaced with exact webservice + response, err = http.Post("http://127.0.0.1:8200/v1/sys/unseal", "application/x-www-form-urlencoded", body) + if err != nil { + log.Fatalf("Error while unsealing %v", err) + } + } + } +} |