diff --git a/plinth/modules/wireguard/views.py b/plinth/modules/wireguard/views.py index 2f0a72872..401bc54d3 100644 --- a/plinth/modules/wireguard/views.py +++ b/plinth/modules/wireguard/views.py @@ -3,6 +3,7 @@ Views for WireGuard application. """ +import segno import urllib.parse from django.contrib import messages @@ -13,6 +14,8 @@ from django.urls import reverse_lazy from django.utils.translation import gettext as _ from django.views.generic import FormView, TemplateView, View +from io import BytesIO + from plinth import network from plinth.modules.names.components import DomainName from plinth.views import AppView @@ -122,6 +125,13 @@ class ClientActionsView(SessionClientDataMixin, View): response['Content-Disposition'] = \ 'attachment; filename="wg-client.conf"' return response + elif self.action == 'qr': + qrcode = segno.make(config) + buffer = BytesIO() + qrcode.save(buffer, kind='svg', scale=5) + + return HttpResponse(buffer.getvalue(), + content_type='image/svg+xml') raise Http404("Invalid action")