From b6e2f084e6ec268ed27d8043f3afa3780cb198bd Mon Sep 17 00:00:00 2001 From: Daan Selen Date: Wed, 14 Jan 2026 23:45:42 +0100 Subject: [PATCH] chore: add implicit TLS support for email --- src/modules/Email.py | 18 +++++++++--- src/static/app/package-lock.json | 28 +++++++++++-------- .../dashboardEmailSettings.vue | 3 ++ ...ashboardClientAssignmentStore-7vbrzCdd.js} | 2 +- ...{Vector-CuSZivra.js => Vector-5IlHN0Py.js} | 2 +- ...rowser-BP6h8-mb.js => browser-q0dY10SI.js} | 2 +- .../assets/clientViewer-BYW0BPeu.css | 1 + .../assets/clientViewer-C5axh9P7.css | 1 - ...r-DmtORHRg.js => clientViewer-CM254Wso.js} | 2 +- ...lients-HEytkDOI.js => clients-8I6N5xyG.js} | 2 +- .../assets/clients-CfS2KUuu.css | 1 - .../assets/clients-cOyFX4sh.css | 1 + ...-BeOFhX3S.js => configuration-CDw2CU54.js} | 2 +- ...K9DDL.js => configurationList-CISUK4-m.js} | 2 +- .../dashboardEmailSettings-BxtXuVtX.css | 1 - .../dashboardEmailSettings-CDozOzQ3.css | 1 + ....js => dashboardEmailSettings-DTc8iPnk.js} | 2 +- ...reguardConfigurationAutostart-BwFhnB0x.js} | 2 +- ...RyP8c.js => dashboardWebHooks-DbhkTXrE.js} | 2 +- ....min-BiWYNIj_.js => dayjs.min-CrPkgyjx.js} | 2 +- .../assets/editConfiguration-BV75UXb4.css | 1 - .../assets/editConfiguration-CRWqaVcX.css | 1 + ...yu8kA.js => editConfiguration-DrP_m-oo.js} | 2 +- .../assets/index--rUYk9Qx.css | 1 + .../WGDashboardAdmin/assets/index-BZA9UDtD.js | 14 ---------- .../WGDashboardAdmin/assets/index-BndOwggB.js | 14 ++++++++++ .../assets/index-C4wYuzDW.css | 1 + .../{index-BvsVHzw6.js => index-C5HZfLYD.js} | 4 +-- .../{index-5e_4fd01.js => index-CWa0vFsH.js} | 2 +- .../assets/index-CpoCtfuw.css | 1 - .../assets/index-DOyBHXAH.css | 1 - .../{index-BIAxc0JQ.js => index-DkiwaDAy.js} | 2 +- ...ext-DWNdiiAT.js => localeText-BKJcV9JF.js} | 2 +- ...essage-Dr1Cbq7g.js => message-32KExoAd.js} | 2 +- ...sage-Bh5W0B3y.css => message-CGSzI01q.css} | 2 +- ...ySvAqa.js => newConfiguration-C1GrVXq1.js} | 2 +- .../{osmap-CcwytBWy.js => osmap-C1vmC-80.js} | 2 +- ...l-BEKiwpjq.js => peerAddModal-BA3SRNSr.js} | 2 +- ...AdNmqDH.js => peerAssignModal-ByRNgUDQ.js} | 2 +- ...1.js => peerConfigurationFile-DbCSsvO-.js} | 2 +- ...niE.js => peerDefaultSettings-DuRUeFv7.js} | 2 +- ...rJobs-CIdE1vLJ.js => peerJobs-LlMjA74Y.js} | 2 +- ...E5OP7g.js => peerJobsAllModal-QYYmObP9.js} | 2 +- ...Yvqvk.js => peerJobsLogsModal-9IojzPW3.js} | 2 +- .../assets/peerList-7q3zheYP.css | 1 - ...rList-DK4UUTtM.js => peerList-B-B4UocD.js} | 4 +-- .../assets/peerList-CLhB8X-O.css | 1 + .../assets/peerQRCode-BmkCjxyX.css | 1 - ...ode-CPGyGqEQ.js => peerQRCode-CJcjQfjl.js} | 2 +- .../assets/peerQRCode-CRiQ2C6J.css | 1 + ...-CnbMx1NQ.js => peerSearchBar-bbNJPG9U.js} | 2 +- ...s-D2g6_hgP.js => peerSettings-kLeEHyMx.js} | 2 +- ...rbd6.js => peerShareLinkModal-Dalst8eb.js} | 2 +- ... => peersDefaultSettingsInput-C7GsOXqj.js} | 2 +- .../{ping-DqwIvXhD.js => ping-CsLroDb3.js} | 2 +- ...-D79hqRdE.js => protocolBadge-CJulNDGf.js} | 2 +- ...jt.js => restoreConfiguration-BOfuiK00.js} | 2 +- ...pl8FbvW.js => schedulePeerJob-BFfBcTC1.js} | 2 +- .../assets/selectPeers-BUmpb-wc.css | 1 + .../assets/selectPeers-ChWyERy7.css | 1 - ...rs-Df4nXwf5.js => selectPeers-yBRTU10o.js} | 2 +- ...tings-D-X8PlT8.js => settings-KRq-kFE4.js} | 2 +- .../{setup-DTb9jl4t.js => setup-DL2xfECd.js} | 2 +- .../{share-CfEnWEpD.js => share-a8jbUvxL.js} | 2 +- ...{signin-dAZ6FYQd.js => signin-B3F_1_81.js} | 2 +- ...ignin-DZT8PIVl.css => signin-BINnMVzu.css} | 2 +- ..._index_0_scoped_9509d7a0_lang-CVDxO6EU.js} | 2 +- ...s-ByLKB9Gm.js => systemStatus-BqCpACff.js} | 2 +- .../{totp-C5WqIb5v.js => totp-T_3Mx9F5.js} | 2 +- ...ute-DctnM2aF.js => traceroute-BM1ejUKG.js} | 2 +- .../assets/vue-datepicker-D8JXcd90.js | 1 - .../assets/vue-datepicker-vTmaTZbl.js | 1 + ...Hhy.js => wgdashboardSettings-B0pAU2Yd.js} | 2 +- ...ireguardConfigurationSettings-0Uz4_HqN.js} | 2 +- src/static/dist/WGDashboardAdmin/index.html | 4 +-- 75 files changed, 111 insertions(+), 92 deletions(-) rename src/static/dist/WGDashboardAdmin/assets/{DashboardClientAssignmentStore-29pUnWJ9.js => DashboardClientAssignmentStore-7vbrzCdd.js} (95%) rename src/static/dist/WGDashboardAdmin/assets/{Vector-CuSZivra.js => Vector-5IlHN0Py.js} (81%) rename src/static/dist/WGDashboardAdmin/assets/{browser-BP6h8-mb.js => browser-q0dY10SI.js} (99%) create mode 100644 src/static/dist/WGDashboardAdmin/assets/clientViewer-BYW0BPeu.css delete mode 100644 src/static/dist/WGDashboardAdmin/assets/clientViewer-C5axh9P7.css rename src/static/dist/WGDashboardAdmin/assets/{clientViewer-DmtORHRg.js => clientViewer-CM254Wso.js} (98%) rename src/static/dist/WGDashboardAdmin/assets/{clients-HEytkDOI.js => clients-8I6N5xyG.js} (97%) delete mode 100644 src/static/dist/WGDashboardAdmin/assets/clients-CfS2KUuu.css create mode 100644 src/static/dist/WGDashboardAdmin/assets/clients-cOyFX4sh.css rename src/static/dist/WGDashboardAdmin/assets/{configuration-BeOFhX3S.js => configuration-CDw2CU54.js} (86%) rename src/static/dist/WGDashboardAdmin/assets/{configurationList-DMYK9DDL.js => configurationList-CISUK4-m.js} (98%) delete mode 100644 src/static/dist/WGDashboardAdmin/assets/dashboardEmailSettings-BxtXuVtX.css create mode 100644 src/static/dist/WGDashboardAdmin/assets/dashboardEmailSettings-CDozOzQ3.css rename src/static/dist/WGDashboardAdmin/assets/{dashboardEmailSettings-B5-Yn6Sr.js => dashboardEmailSettings-DTc8iPnk.js} (66%) rename src/static/dist/WGDashboardAdmin/assets/{dashboardSettingsWireguardConfigurationAutostart-BO2oocNT.js => dashboardSettingsWireguardConfigurationAutostart-BwFhnB0x.js} (96%) rename src/static/dist/WGDashboardAdmin/assets/{dashboardWebHooks-B49RyP8c.js => dashboardWebHooks-DbhkTXrE.js} (99%) rename src/static/dist/WGDashboardAdmin/assets/{dayjs.min-BiWYNIj_.js => dayjs.min-CrPkgyjx.js} (99%) delete mode 100644 src/static/dist/WGDashboardAdmin/assets/editConfiguration-BV75UXb4.css create mode 100644 src/static/dist/WGDashboardAdmin/assets/editConfiguration-CRWqaVcX.css rename src/static/dist/WGDashboardAdmin/assets/{editConfiguration-BDxyu8kA.js => editConfiguration-DrP_m-oo.js} (99%) create mode 100644 src/static/dist/WGDashboardAdmin/assets/index--rUYk9Qx.css delete mode 100644 src/static/dist/WGDashboardAdmin/assets/index-BZA9UDtD.js create mode 100644 src/static/dist/WGDashboardAdmin/assets/index-BndOwggB.js create mode 100644 src/static/dist/WGDashboardAdmin/assets/index-C4wYuzDW.css rename src/static/dist/WGDashboardAdmin/assets/{index-BvsVHzw6.js => index-C5HZfLYD.js} (99%) rename src/static/dist/WGDashboardAdmin/assets/{index-5e_4fd01.js => index-CWa0vFsH.js} (98%) delete mode 100644 src/static/dist/WGDashboardAdmin/assets/index-CpoCtfuw.css delete mode 100644 src/static/dist/WGDashboardAdmin/assets/index-DOyBHXAH.css rename src/static/dist/WGDashboardAdmin/assets/{index-BIAxc0JQ.js => index-DkiwaDAy.js} (96%) rename src/static/dist/WGDashboardAdmin/assets/{localeText-DWNdiiAT.js => localeText-BKJcV9JF.js} (76%) rename src/static/dist/WGDashboardAdmin/assets/{message-Dr1Cbq7g.js => message-32KExoAd.js} (84%) rename src/static/dist/WGDashboardAdmin/assets/{message-Bh5W0B3y.css => message-CGSzI01q.css} (56%) rename src/static/dist/WGDashboardAdmin/assets/{newConfiguration-CCySvAqa.js => newConfiguration-C1GrVXq1.js} (99%) rename src/static/dist/WGDashboardAdmin/assets/{osmap-CcwytBWy.js => osmap-C1vmC-80.js} (96%) rename src/static/dist/WGDashboardAdmin/assets/{peerAddModal-BEKiwpjq.js => peerAddModal-BA3SRNSr.js} (99%) rename src/static/dist/WGDashboardAdmin/assets/{peerAssignModal-qAdNmqDH.js => peerAssignModal-ByRNgUDQ.js} (97%) rename src/static/dist/WGDashboardAdmin/assets/{peerConfigurationFile-D1bvV7j1.js => peerConfigurationFile-DbCSsvO-.js} (92%) rename src/static/dist/WGDashboardAdmin/assets/{peerDefaultSettings-C1j0FniE.js => peerDefaultSettings-DuRUeFv7.js} (78%) rename src/static/dist/WGDashboardAdmin/assets/{peerJobs-CIdE1vLJ.js => peerJobs-LlMjA74Y.js} (88%) rename src/static/dist/WGDashboardAdmin/assets/{peerJobsAllModal-DeE5OP7g.js => peerJobsAllModal-QYYmObP9.js} (90%) rename src/static/dist/WGDashboardAdmin/assets/{peerJobsLogsModal-CkjYvqvk.js => peerJobsLogsModal-9IojzPW3.js} (96%) delete mode 100644 src/static/dist/WGDashboardAdmin/assets/peerList-7q3zheYP.css rename src/static/dist/WGDashboardAdmin/assets/{peerList-DK4UUTtM.js => peerList-B-B4UocD.js} (98%) create mode 100644 src/static/dist/WGDashboardAdmin/assets/peerList-CLhB8X-O.css delete mode 100644 src/static/dist/WGDashboardAdmin/assets/peerQRCode-BmkCjxyX.css rename src/static/dist/WGDashboardAdmin/assets/{peerQRCode-CPGyGqEQ.js => peerQRCode-CJcjQfjl.js} (93%) create mode 100644 src/static/dist/WGDashboardAdmin/assets/peerQRCode-CRiQ2C6J.css rename src/static/dist/WGDashboardAdmin/assets/{peerSearchBar-CnbMx1NQ.js => peerSearchBar-bbNJPG9U.js} (95%) rename src/static/dist/WGDashboardAdmin/assets/{peerSettings-D2g6_hgP.js => peerSettings-kLeEHyMx.js} (98%) rename src/static/dist/WGDashboardAdmin/assets/{peerShareLinkModal-BB7orbd6.js => peerShareLinkModal-Dalst8eb.js} (98%) rename src/static/dist/WGDashboardAdmin/assets/{peersDefaultSettingsInput-B_YwWY5S.js => peersDefaultSettingsInput-C7GsOXqj.js} (93%) rename src/static/dist/WGDashboardAdmin/assets/{ping-DqwIvXhD.js => ping-CsLroDb3.js} (97%) rename src/static/dist/WGDashboardAdmin/assets/{protocolBadge-D79hqRdE.js => protocolBadge-CJulNDGf.js} (79%) rename src/static/dist/WGDashboardAdmin/assets/{restoreConfiguration-CMPo2Kjt.js => restoreConfiguration-BOfuiK00.js} (98%) rename src/static/dist/WGDashboardAdmin/assets/{schedulePeerJob-Cpl8FbvW.js => schedulePeerJob-BFfBcTC1.js} (96%) create mode 100644 src/static/dist/WGDashboardAdmin/assets/selectPeers-BUmpb-wc.css delete mode 100644 src/static/dist/WGDashboardAdmin/assets/selectPeers-ChWyERy7.css rename src/static/dist/WGDashboardAdmin/assets/{selectPeers-Df4nXwf5.js => selectPeers-yBRTU10o.js} (97%) rename src/static/dist/WGDashboardAdmin/assets/{settings-D-X8PlT8.js => settings-KRq-kFE4.js} (90%) rename src/static/dist/WGDashboardAdmin/assets/{setup-DTb9jl4t.js => setup-DL2xfECd.js} (96%) rename src/static/dist/WGDashboardAdmin/assets/{share-CfEnWEpD.js => share-a8jbUvxL.js} (95%) rename src/static/dist/WGDashboardAdmin/assets/{signin-dAZ6FYQd.js => signin-B3F_1_81.js} (98%) rename src/static/dist/WGDashboardAdmin/assets/{signin-DZT8PIVl.css => signin-BINnMVzu.css} (50%) rename src/static/dist/WGDashboardAdmin/assets/{storageMount.vue_vue_type_style_index_0_scoped_9509d7a0_lang-DGADM8KQ.js => storageMount.vue_vue_type_style_index_0_scoped_9509d7a0_lang-CVDxO6EU.js} (88%) rename src/static/dist/WGDashboardAdmin/assets/{systemStatus-ByLKB9Gm.js => systemStatus-BqCpACff.js} (98%) rename src/static/dist/WGDashboardAdmin/assets/{totp-C5WqIb5v.js => totp-T_3Mx9F5.js} (94%) rename src/static/dist/WGDashboardAdmin/assets/{traceroute-DctnM2aF.js => traceroute-BM1ejUKG.js} (94%) delete mode 100644 src/static/dist/WGDashboardAdmin/assets/vue-datepicker-D8JXcd90.js create mode 100644 src/static/dist/WGDashboardAdmin/assets/vue-datepicker-vTmaTZbl.js rename src/static/dist/WGDashboardAdmin/assets/{wgdashboardSettings-DBAyeHhy.js => wgdashboardSettings-B0pAU2Yd.js} (80%) rename src/static/dist/WGDashboardAdmin/assets/{wireguardConfigurationSettings-CmY8vxWZ.js => wireguardConfigurationSettings-0Uz4_HqN.js} (98%) diff --git a/src/modules/Email.py b/src/modules/Email.py index 497a4c9e..b766df3b 100644 --- a/src/modules/Email.py +++ b/src/modules/Email.py @@ -1,4 +1,5 @@ import os.path +import ssl import smtplib # Email libaries @@ -8,6 +9,8 @@ from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.utils import formatdate +from flask import current_app + class EmailSender: def __init__(self, DashboardConfig): self.DashboardConfig = DashboardConfig @@ -17,7 +20,7 @@ class EmailSender: self.refresh_vals() - def refresh_vals(self): + def refresh_vals(self) -> None: self.Server = self.DashboardConfig.GetConfig("Email", "server")[1] self.Port = self.DashboardConfig.GetConfig("Email", "port")[1] @@ -69,12 +72,16 @@ class EmailSender: smtp = None try: - smtp = smtplib.SMTP(self.Server, port=int(self.Port)) + context = ssl.create_default_context() + if self.Encryption == "IMPLICITTLS": + smtp = smtplib.SMTP_SSL(self.Server, port=int(self.Port), context=context) + else: + smtp = smtplib.SMTP(self.Server, port=int(self.Port)) smtp.ehlo() # Configure SMTP encryption type if self.Encryption == "STARTTLS": - smtp.starttls() + smtp.starttls(context=context) smtp.ehlo() # Log into the SMTP server if required @@ -90,4 +97,7 @@ class EmailSender: finally: if smtp: - smtp.quit() \ No newline at end of file + try: + smtp.quit() + except Exception: + pass \ No newline at end of file diff --git a/src/static/app/package-lock.json b/src/static/app/package-lock.json index b2fe7928..ecc68ecb 100644 --- a/src/static/app/package-lock.json +++ b/src/static/app/package-lock.json @@ -1,12 +1,12 @@ { "name": "app", - "version": "4.3.1", + "version": "4.3.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "app", - "version": "4.3.1", + "version": "4.3.2", "dependencies": { "@volar/language-server": "2.4.26", "@vue/language-server": "3.1.8", @@ -384,6 +384,7 @@ "integrity": "sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ==", "license": "BSD-2-Clause", "optional": true, + "peer": true, "dependencies": { "cross-dirname": "^0.1.0", "debug": "^4.3.4", @@ -404,6 +405,7 @@ "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", "license": "MIT", "optional": true, + "peer": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -1111,7 +1113,8 @@ "version": "0.3.4", "resolved": "https://registry.npmmirror.com/@kurkle/color/-/color-0.3.4.tgz", "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@malept/cross-spawn-promise": { "version": "2.0.0", @@ -2086,7 +2089,6 @@ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2892,7 +2894,8 @@ "resolved": "https://registry.npmmirror.com/cross-dirname/-/cross-dirname-0.1.0.tgz", "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/cross-spawn": { "version": "7.0.6", @@ -3078,7 +3081,6 @@ "resolved": "https://registry.npmmirror.com/dmg-builder/-/dmg-builder-26.0.12.tgz", "integrity": "sha512-59CAAjAhTaIMCN8y9kD573vDkxbs1uhDcrFLHSgutYdPcGOU35Rf95725snvzEOy4BFB7+eLJ8djCNPmGwG67w==", "license": "MIT", - "peer": true, "dependencies": { "app-builder-lib": "26.0.12", "builder-util": "26.0.11", @@ -3244,6 +3246,7 @@ "integrity": "sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==", "hasInstallScript": true, "license": "MIT", + "peer": true, "dependencies": { "@electron/asar": "^3.2.1", "debug": "^4.1.1", @@ -3263,6 +3266,7 @@ "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-7.0.1.tgz", "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "license": "MIT", + "peer": true, "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -3277,6 +3281,7 @@ "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "license": "MIT", + "peer": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -3286,6 +3291,7 @@ "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "license": "MIT", + "peer": true, "engines": { "node": ">= 4.0.0" } @@ -6585,7 +6591,6 @@ "version": "4.0.3", "inBundle": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -6991,7 +6996,6 @@ "resolved": "https://registry.npmmirror.com/pinia/-/pinia-3.0.3.tgz", "integrity": "sha512-ttXO/InUULUXkMHpTdp9Fj4hLpD/2AoJdmAbAeW2yu1iy1k+pkFekQXw5VpC0/5p51IOR/jDaDRfRWRnMMsGOA==", "license": "MIT", - "peer": true, "dependencies": { "@vue/devtools-api": "^7.7.2" }, @@ -7090,6 +7094,7 @@ "integrity": "sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==", "license": "MIT", "optional": true, + "peer": true, "dependencies": { "commander": "^9.4.0" }, @@ -7106,6 +7111,7 @@ "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "license": "MIT", "optional": true, + "peer": true, "engines": { "node": "^12.20.0 || >=14" } @@ -7829,6 +7835,7 @@ "resolved": "https://registry.npmmirror.com/temp/-/temp-0.9.4.tgz", "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", "license": "MIT", + "peer": true, "dependencies": { "mkdirp": "^0.5.1", "rimraf": "~2.6.2" @@ -7852,6 +7859,7 @@ "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "license": "MIT", + "peer": true, "dependencies": { "minimist": "^1.2.6" }, @@ -7865,6 +7873,7 @@ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "license": "ISC", + "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -7945,7 +7954,6 @@ "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.9.2.tgz", "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -8057,7 +8065,6 @@ "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -8360,7 +8367,6 @@ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.26.tgz", "integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==", "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.26", "@vue/compiler-sfc": "3.5.26", diff --git a/src/static/app/src/components/settingsComponent/dashboardEmailSettings.vue b/src/static/app/src/components/settingsComponent/dashboardEmailSettings.vue index 80125650..67d62cbd 100644 --- a/src/static/app/src/components/settingsComponent/dashboardEmailSettings.vue +++ b/src/static/app/src/components/settingsComponent/dashboardEmailSettings.vue @@ -115,6 +115,9 @@ const sendTestEmail = async () => {