From 07d2c4bc3bd88e203f64cdfa7b5bf5431d28a221 Mon Sep 17 00:00:00 2001 From: cuigh Date: Wed, 2 May 2018 17:50:10 +0800 Subject: [PATCH] Allow uploading secrets encoded with base64 --- biz/docker/secret.go | 10 +++++++++- model/docker.go | 1 + views/secret/new.jet | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/biz/docker/secret.go b/biz/docker/secret.go index fd91582..5880f9b 100644 --- a/biz/docker/secret.go +++ b/biz/docker/secret.go @@ -2,6 +2,7 @@ package docker import ( "context" + "encoding/base64" "sort" "github.com/cuigh/swirl/misc" @@ -39,7 +40,14 @@ func SecretCreate(info *model.ConfigCreateInfo) error { return mgr.Do(func(ctx context.Context, cli *client.Client) (err error) { spec := swarm.SecretSpec{} spec.Name = info.Name - spec.Data = []byte(info.Data) + if info.Base64 { + spec.Data, err = base64.StdEncoding.DecodeString(info.Data) + if err != nil { + return + } + } else { + spec.Data = []byte(info.Data) + } spec.Labels = info.Labels.ToMap() if info.Template.Name != "" { spec.Templating = &swarm.Driver{ diff --git a/model/docker.go b/model/docker.go index c7f80d7..1cffa56 100644 --- a/model/docker.go +++ b/model/docker.go @@ -563,6 +563,7 @@ type ConfigCreateInfo struct { Data string `json:"data"` Labels Options `json:"labels"` Template Driver `json:"template"` + Base64 bool `json:"base64"` } type ConfigUpdateInfo struct { diff --git a/views/secret/new.jet b/views/secret/new.jet index 585a753..d66a667 100644 --- a/views/secret/new.jet +++ b/views/secret/new.jet @@ -31,6 +31,9 @@ +
+ {{ yield switch(id="cb-base64", name="base64", label="Base64 encoded") }} +
{{ yield options(name="label") }}