From ec6f0b7506ed7e5e02678afa0c0fe3bf9722398b Mon Sep 17 00:00:00 2001 From: Maxim Kochurov Date: Sun, 13 Mar 2022 13:12:13 +0000 Subject: [PATCH] add handling of missing QR --- handler/routes.go | 17 ++++++++++++----- store/jsondb/jsondb.go | 4 ++-- templates/clients.html | 2 +- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/handler/routes.go b/handler/routes.go index 603e5ee..da7ecd2 100644 --- a/handler/routes.go +++ b/handler/routes.go @@ -255,18 +255,25 @@ func EmailClient(db store.IStore, mailer emailer.Emailer, emailSubject, emailCon config := util.BuildClientConfig(*clientData.Client, server, globalSettings) cfg_att := emailer.Attachment{"wg0.conf", []byte(config)} - qrdata, err := base64.StdEncoding.DecodeString(strings.TrimPrefix(clientData.QRCode, "data:image/png;base64,")) - if err != nil { - return c.JSON(http.StatusInternalServerError, jsonHTTPResponse{false, "decoding: " + err.Error()}) + var attachments []emailer.Attachment + if clientData.Client.PrivateKey != "" { + qrdata, err := base64.StdEncoding.DecodeString(strings.TrimPrefix(clientData.QRCode, "data:image/png;base64,")) + if err != nil { + return c.JSON(http.StatusInternalServerError, jsonHTTPResponse{false, "decoding: " + err.Error()}) + } + qr_att := emailer.Attachment{"wg.png", qrdata} + attachments = []emailer.Attachment{cfg_att, qr_att} + } else { + attachments = []emailer.Attachment{cfg_att} } - qr_att := emailer.Attachment{"wg.png", qrdata} err = mailer.Send( clientData.Client.Name, payload.Email, emailSubject, emailContent, - []emailer.Attachment{cfg_att, qr_att}, + attachments, ) + if err != nil { return c.JSON(http.StatusInternalServerError, jsonHTTPResponse{false, err.Error()}) } diff --git a/store/jsondb/jsondb.go b/store/jsondb/jsondb.go index 763756e..4ee35ca 100644 --- a/store/jsondb/jsondb.go +++ b/store/jsondb/jsondb.go @@ -155,7 +155,7 @@ func (o *JsonDB) GetClients(hasQRCode bool) ([]model.ClientData, error) { } // generate client qrcode image in base64 - if hasQRCode { + if hasQRCode && client.PrivateKey != "" { server, _ := o.GetServer() globalSettings, _ := o.GetGlobalSettings() @@ -185,7 +185,7 @@ func (o *JsonDB) GetClientByID(clientID string, hasQRCode bool) (model.ClientDat } // generate client qrcode image in base64 - if hasQRCode { + if hasQRCode && client.PrivateKey != "" { server, _ := o.GetServer() globalSettings, _ := o.GetGlobalSettings() diff --git a/templates/clients.html b/templates/clients.html index 16d2057..5d52dd7 100644 --- a/templates/clients.html +++ b/templates/clients.html @@ -68,7 +68,7 @@ Wireguard Clients - QR code + QR code not available