diff --git a/cmd/wg-portal/main.go b/cmd/wg-portal/main.go index 39e6d08..ccfd5f3 100644 --- a/cmd/wg-portal/main.go +++ b/cmd/wg-portal/main.go @@ -5,7 +5,8 @@ import ( "github.com/h44z/wg-portal/internal/app/api/core" handlersV0 "github.com/h44z/wg-portal/internal/app/api/v0/handlers" "github.com/h44z/wg-portal/internal/app/auth" - "github.com/h44z/wg-portal/internal/app/filetemplate" + "github.com/h44z/wg-portal/internal/app/configfile" + "github.com/h44z/wg-portal/internal/app/mail" "github.com/h44z/wg-portal/internal/app/users" "github.com/h44z/wg-portal/internal/app/wireguard" "os" @@ -38,6 +39,8 @@ func main() { wireGuard := adapters.NewWireGuardRepository() + mailer := adapters.NewSmtpMailRepo(cfg.Mail) + shouldExit, err := app.HandleProgramArgs(cfg, rawDb) switch { case shouldExit && err == nil: @@ -64,11 +67,14 @@ func main() { statisticsCollector, err := wireguard.NewStatisticsCollector(cfg, database, wireGuard) internal.AssertNoError(err) - templateManager, err := filetemplate.NewTemplateManager(cfg, database, database) + cfgFileManager, err := configfile.NewConfigFileManager(cfg, database, database) + internal.AssertNoError(err) + + mailManager, err := mail.NewMailManager(cfg, mailer, cfgFileManager, database, database) internal.AssertNoError(err) backend, err := app.New(cfg, eventBus, authenticator, userManager, wireGuardManager, - statisticsCollector, templateManager) + statisticsCollector, cfgFileManager, mailManager) internal.AssertNoError(err) err = backend.Startup(ctx) internal.AssertNoError(err) diff --git a/frontend/src/components/PeerViewModal.vue b/frontend/src/components/PeerViewModal.vue index d5ea2a5..94cb240 100644 --- a/frontend/src/components/PeerViewModal.vue +++ b/frontend/src/components/PeerViewModal.vue @@ -6,6 +6,7 @@ import {computed, ref, watch} from "vue"; import {useI18n} from "vue-i18n"; import { freshInterface, freshPeer } from '@/helpers/models'; import Prism from "vue-prism-component"; +import {notify} from "@kyvg/vue3-notification"; const { t } = useI18n() @@ -89,6 +90,16 @@ function download() { document.body.removeChild(element) } +function email() { + peers.MailPeerConfig(false, [selectedPeer.value.Identifier]).catch(error => { + notify({ + title: "Peer email failure", + text: "Failed to send mail with peer configuration!", + type: 'error', + }) + }) +} +