From 8b5754ef5120ffdf55582705f9092a7e895acff5 Mon Sep 17 00:00:00 2001 From: Kirill Reshke Date: Mon, 22 Jul 2024 17:59:32 +0300 Subject: [PATCH] No encryption offlaod support --- cmd/yproxy/main.go | 4 +++- pkg/core/core.go | 7 +++++-- pkg/proc/interaction.go | 13 +++++++++++++ pkg/proc/yrreader.go | 5 ++++- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/cmd/yproxy/main.go b/cmd/yproxy/main.go index 84fa47c..0e74bf6 100644 --- a/cmd/yproxy/main.go +++ b/cmd/yproxy/main.go @@ -27,7 +27,9 @@ var rootCmd = &cobra.Command{ instance := core.NewInstance() - ylogger.ReloadLogger(instanceCnf.LogPath) + if instanceCnf.LogPath != "" { + ylogger.ReloadLogger(instanceCnf.LogPath) + } if logLevel == "" { logLevel = instanceCnf.LogLevel } diff --git a/pkg/core/core.go b/pkg/core/core.go index 66ea913..26ca6bb 100644 --- a/pkg/core/core.go +++ b/pkg/core/core.go @@ -104,8 +104,11 @@ func (i *Instance) Run(instanceCnf *config.Instance) error { &instanceCnf.StorageCnf, ) - cr, err := crypt.NewCrypto(&instanceCnf.CryptoCnf) - + var cr crypt.Crypter = nil + if instanceCnf.CryptoCnf.GPGKeyPath != "" { + cr, err = crypt.NewCrypto(&instanceCnf.CryptoCnf) + } + if err != nil { return err } diff --git a/pkg/proc/interaction.go b/pkg/proc/interaction.go index a4583e0..d78fc0c 100644 --- a/pkg/proc/interaction.go +++ b/pkg/proc/interaction.go @@ -46,6 +46,11 @@ func ProcConn(s storage.StorageInteractor, cr crypt.Crypter, ycl client.YproxyCl defer yr.Close() if msg.Decrypt { + if cr == nil { + _ = ycl.ReplyError(err, "failed to decrypt object, decrypter not configured") + ycl.Close() + return nil + } ylogger.Zero.Debug().Str("object-path", msg.Name).Msg("decrypt object") contentReader, err = cr.Decrypt(yr) if err != nil { @@ -83,6 +88,12 @@ func ProcConn(s storage.StorageInteractor, cr crypt.Crypter, ycl client.YproxyCl var ww io.WriteCloser = w if msg.Encrypt { + if cr == nil { + _ = ycl.ReplyError(err, "failed to encrypt, crypter not configured") + ycl.Close() + return + } + var err error ww, err = cr.Encrypt(w) if err != nil { @@ -91,6 +102,8 @@ func ProcConn(s storage.StorageInteractor, cr crypt.Crypter, ycl client.YproxyCl ycl.Close() return } + } else { + ylogger.Zero.Debug().Str("path", msg.Name).Msg("omit encryption for chunk") } defer w.Close() diff --git a/pkg/proc/yrreader.go b/pkg/proc/yrreader.go index e9adc8d..12f63a7 100644 --- a/pkg/proc/yrreader.go +++ b/pkg/proc/yrreader.go @@ -22,7 +22,10 @@ type YRestartReader struct { // Close implements RestartReader. func (y *YRestartReader) Close() error { - return y.underlying.Close() + if y.underlying != nil { + return y.underlying.Close() + } + return nil } // Read implements RestartReader.