diff --git a/store/jsondb/jsondb.go b/store/jsondb/jsondb.go index 05bdf09..dc97028 100644 --- a/store/jsondb/jsondb.go +++ b/store/jsondb/jsondb.go @@ -412,14 +412,22 @@ func (o *JsonDB) GetClients(hasQRCode bool) ([]model.ClientData, error) { // generate client qrcode image in base64 if hasQRCode && client.PrivateKey != "" { - server, _ := o.GetServerByID(util.DefaultServerID) - globalSettings, _ := o.GetGlobalSettings() - - png, err := qrcode.Encode(util.BuildClientConfig(client, server, globalSettings), qrcode.Medium, 256) - if err == nil { - clientData.QRCode = "data:image/png;base64," + base64.StdEncoding.EncodeToString(png) + serverID := client.ServerID + if serverID == "" { + serverID = util.DefaultServerID + } + server, err := o.GetServerByID(serverID) + if err != nil { + fmt.Printf("Cannot generate QR code: server %s not found: %v\n", serverID, err) } else { - fmt.Print("Cannot generate QR code: ", err) + globalSettings, _ := o.GetGlobalSettings() + + png, err := qrcode.Encode(util.BuildClientConfig(client, server, globalSettings), qrcode.Medium, 256) + if err == nil { + clientData.QRCode = "data:image/png;base64," + base64.StdEncoding.EncodeToString(png) + } else { + fmt.Print("Cannot generate QR code: ", err) + } } } @@ -442,21 +450,29 @@ func (o *JsonDB) GetClientByID(clientID string, qrCodeSettings model.QRCodeSetti // generate client qrcode image in base64 if qrCodeSettings.Enabled && client.PrivateKey != "" { - server, _ := o.GetServerByID(util.DefaultServerID) - globalSettings, _ := o.GetGlobalSettings() - client := client - if !qrCodeSettings.IncludeDNS { - globalSettings.DNSServers = []string{} + serverID := client.ServerID + if serverID == "" { + serverID = util.DefaultServerID } - if !qrCodeSettings.IncludeMTU { - globalSettings.MTU = 0 - } - - png, err := qrcode.Encode(util.BuildClientConfig(client, server, globalSettings), qrcode.Medium, 256) - if err == nil { - clientData.QRCode = "data:image/png;base64," + base64.StdEncoding.EncodeToString(png) + server, err := o.GetServerByID(serverID) + if err != nil { + fmt.Printf("Cannot generate QR code: server %s not found: %v\n", serverID, err) } else { - fmt.Print("Cannot generate QR code: ", err) + globalSettings, _ := o.GetGlobalSettings() + client := client + if !qrCodeSettings.IncludeDNS { + globalSettings.DNSServers = []string{} + } + if !qrCodeSettings.IncludeMTU { + globalSettings.MTU = 0 + } + + png, err := qrcode.Encode(util.BuildClientConfig(client, server, globalSettings), qrcode.Medium, 256) + if err == nil { + clientData.QRCode = "data:image/png;base64," + base64.StdEncoding.EncodeToString(png) + } else { + fmt.Print("Cannot generate QR code: ", err) + } } } diff --git a/util/util.go b/util/util.go index 5999fc9..db3925b 100644 --- a/util/util.go +++ b/util/util.go @@ -633,7 +633,15 @@ func SendRequestedConfigsToTelegram(db store.IStore, userid int64) []string { } // build config - server, _ := db.GetServerByID(DefaultServerID) + serverID := clientData.Client.ServerID + if serverID == "" { + serverID = DefaultServerID + } + server, err := db.GetServerByID(serverID) + if err != nil { + failedList = append(failedList, clientData.Client.Name) + continue + } globalSettings, _ := db.GetGlobalSettings() config := BuildClientConfig(*clientData.Client, server, globalSettings) configData := []byte(config)