diff --git a/.github/workflows/auto-test.yml b/.github/workflows/auto-test.yml index b5240d775..c59a61b91 100644 --- a/.github/workflows/auto-test.yml +++ b/.github/workflows/auto-test.yml @@ -16,7 +16,7 @@ jobs: strategy: matrix: os: [macos-latest, ubuntu-latest, windows-latest] - node-version: [14.x, 15.x, 16.x] + node-version: [14.x, 16.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: @@ -27,7 +27,7 @@ jobs: with: node-version: ${{ matrix.node-version }} cache: 'npm' - - run: npm ci + - run: npm run install-legacy - run: npm run build - run: npm test env: diff --git a/server/check-version.js b/server/check-version.js index 0da1e3481..2ab5fe514 100644 --- a/server/check-version.js +++ b/server/check-version.js @@ -1,6 +1,5 @@ const { setSetting } = require("./util-server"); const axios = require("axios"); -const { isDev } = require("../src/util"); exports.version = require("../package.json").version; exports.latestVersion = null; diff --git a/server/client.js b/server/client.js index e83d1f59a..c7b3bc162 100644 --- a/server/client.js +++ b/server/client.js @@ -4,6 +4,8 @@ const { TimeLogger } = require("../src/util"); const { R } = require("redbean-node"); const { io } = require("./server"); +const { setting } = require("./util-server"); +const checkVersion = require("./check-version"); async function sendNotificationList(socket) { const timeLogger = new TimeLogger(); @@ -14,10 +16,10 @@ async function sendNotificationList(socket) { ]); for (let bean of list) { - result.push(bean.export()) + result.push(bean.export()); } - io.to(socket.userID).emit("notificationList", result) + io.to(socket.userID).emit("notificationList", result); timeLogger.print("Send Notification List"); @@ -39,7 +41,7 @@ async function sendHeartbeatList(socket, monitorID, toUser = false, overwrite = LIMIT 100 `, [ monitorID, - ]) + ]); let result = list.reverse(); @@ -69,7 +71,7 @@ async function sendImportantHeartbeatList(socket, monitorID, toUser = false, ove LIMIT 500 `, [ monitorID, - ]) + ]); timeLogger.print(`[Monitor: ${monitorID}] sendImportantHeartbeatList`); @@ -81,8 +83,18 @@ async function sendImportantHeartbeatList(socket, monitorID, toUser = false, ove } +async function sendInfo(socket) { + socket.emit("info", { + version: checkVersion.version, + latestVersion: checkVersion.latestVersion, + primaryBaseURL: await setting("primaryBaseURL") + }); +} + module.exports = { sendNotificationList, sendImportantHeartbeatList, sendHeartbeatList, -} + sendInfo +}; + diff --git a/server/notification-providers/promosms.js b/server/notification-providers/promosms.js new file mode 100644 index 000000000..362ef714a --- /dev/null +++ b/server/notification-providers/promosms.js @@ -0,0 +1,41 @@ +const NotificationProvider = require("./notification-provider"); +const axios = require("axios"); + +class PromoSMS extends NotificationProvider { + + name = "promosms"; + + async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { + let okMsg = "Sent Successfully."; + + try { + let config = { + headers: { + "Content-Type": "application/json", + "Authorization": "Basic " + Buffer.from(notification.promosmsLogin + ":" + notification.promosmsPassword).toString('base64'), + "Accept": "text/json", + } + }; + let data = { + "recipients": [ notification.promosmsPhoneNumber ], + //Lets remove non ascii char + "text": msg.replace(/[^\x00-\x7F]/g, ""), + "type": Number(notification.promosmsSMSType), + "sender": notification.promosmsSenderName + }; + + let resp = await axios.post("https://promosms.com/api/rest/v3_2/sms", data, config); + + if (resp.data.response.status !== 0) { + let error = "Something gone wrong. Api returned " + resp.data.response.status + "."; + this.throwGeneralAxiosError(error); + } + + return okMsg; + } catch (error) { + this.throwGeneralAxiosError(error); + } + } +} + +module.exports = PromoSMS; diff --git a/server/notification.js b/server/notification.js index 207e0a37f..5b104bf8a 100644 --- a/server/notification.js +++ b/server/notification.js @@ -7,6 +7,7 @@ const LunaSea = require("./notification-providers/lunasea"); const Mattermost = require("./notification-providers/mattermost"); const Matrix = require("./notification-providers/matrix"); const Octopush = require("./notification-providers/octopush"); +const PromoSMS = require("./notification-providers/promosms"); const Pushbullet = require("./notification-providers/pushbullet"); const Pushover = require("./notification-providers/pushover"); const Pushy = require("./notification-providers/pushy"); @@ -37,6 +38,7 @@ class Notification { new Mattermost(), new Matrix(), new Octopush(), + new PromoSMS(), new Pushbullet(), new Pushover(), new Pushy(), diff --git a/server/server.js b/server/server.js index 55448a79a..ed6fa6df7 100644 --- a/server/server.js +++ b/server/server.js @@ -90,7 +90,7 @@ const io = new Server(server); module.exports.io = io; // Must be after io instantiation -const { sendNotificationList, sendHeartbeatList, sendImportantHeartbeatList } = require("./client"); +const { sendNotificationList, sendHeartbeatList, sendImportantHeartbeatList, sendInfo } = require("./client"); const { statusPageSocketHandler } = require("./socket-handlers/status-page-socket-handler"); app.use(express.json()); @@ -180,10 +180,7 @@ exports.entryPage = "dashboard"; console.log("Adding socket handler"); io.on("connection", async (socket) => { - socket.emit("info", { - version: checkVersion.version, - latestVersion: checkVersion.latestVersion, - }); + sendInfo(socket); totalClient++; @@ -870,6 +867,8 @@ exports.entryPage = "dashboard"; msg: "Saved" }); + sendInfo(socket); + } catch (e) { callback({ ok: false, diff --git a/src/assets/app.scss b/src/assets/app.scss index 3072e37c4..2cbec5c01 100644 --- a/src/assets/app.scss +++ b/src/assets/app.scss @@ -3,7 +3,7 @@ @import "node_modules/bootstrap/scss/bootstrap"; #app { - font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, segoe ui, Roboto, helvetica neue, Arial, noto sans, sans-serif, apple color emoji, segoe ui emoji, segoe ui symbol, noto color emoji; + font-family: BlinkMacSystemFont, segoe ui, Roboto, helvetica neue, Arial, noto sans, sans-serif, apple color emoji, segoe ui emoji, segoe ui symbol, noto color emoji; } h1 { diff --git a/src/components/notifications/PromoSMS.vue b/src/components/notifications/PromoSMS.vue new file mode 100644 index 000000000..640360d08 --- /dev/null +++ b/src/components/notifications/PromoSMS.vue @@ -0,0 +1,39 @@ + + + diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 9a6537288..35bc8e3f2 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -10,6 +10,7 @@ import Teams from "./Teams.vue"; import Pushover from "./Pushover.vue"; import Pushy from "./Pushy.vue"; import Octopush from "./Octopush.vue"; +import PromoSMS from "./PromoSMS.vue"; import LunaSea from "./LunaSea.vue"; import Apprise from "./Apprise.vue"; import Pushbullet from "./Pushbullet.vue"; @@ -35,6 +36,7 @@ const NotificationFormList = { "pushover": Pushover, "pushy": Pushy, "octopush": Octopush, + "promosms": PromoSMS, "lunasea": LunaSea, "apprise": Apprise, "pushbullet": Pushbullet, diff --git a/src/languages/bg-BG.js b/src/languages/bg-BG.js index 0e915255d..bcf1b573b 100644 --- a/src/languages/bg-BG.js +++ b/src/languages/bg-BG.js @@ -190,6 +190,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Поддържа 50+ услуги за инвестяване)", pushbullet: "Pushbullet", diff --git a/src/languages/da-DK.js b/src/languages/da-DK.js index ad156aefe..66e7cb3d4 100644 --- a/src/languages/da-DK.js +++ b/src/languages/da-DK.js @@ -192,6 +192,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", pushbullet: "Pushbullet", diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index a6cc42b3b..20beb626e 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -191,6 +191,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", pushbullet: "Pushbullet", diff --git a/src/languages/en.js b/src/languages/en.js index 219040033..2ce8f46be 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -235,6 +235,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", pushbullet: "Pushbullet", @@ -273,5 +274,11 @@ export default { aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", aboutMattermostChannelName: "You can override the default channel that webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in Mattermost webhook settings. Ex: #other-channel", "matrix": "Matrix", + promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use Your Sender Name (You need to register name first). Reliable for alerts.", + promosmsTypeFull: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", + promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", // End notification form }; diff --git a/src/languages/es-ES.js b/src/languages/es-ES.js index 2558a6863..41254b51b 100644 --- a/src/languages/es-ES.js +++ b/src/languages/es-ES.js @@ -17,7 +17,7 @@ export default { pauseMonitorMsg: "¿Seguro que quieres pausar?", Settings: "Ajustes", Dashboard: "Panel", - "New Update": "Vueva actualización", + "New Update": "Nueva actualización", Language: "Idioma", Appearance: "Apariencia", Theme: "Tema", @@ -61,11 +61,11 @@ export default { Retries: "Reintentos", Advanced: "Avanzado", "Upside Down Mode": "Modo invertido", - "Max. Redirects": "Máx. redirecciones", + "Max. Redirects": "Redirecciones Máximas", "Accepted Status Codes": "Códigos de estado aceptados", Save: "Guardar", Notifications: "Notificaciones", - "Not available, please setup.": "No disponible, por favor configurar.", + "Not available, please setup.": "No disponible, por favor configúrelo.", "Setup Notification": "Configurar notificación", Light: "Claro", Dark: "Oscuro", @@ -83,11 +83,11 @@ export default { "New Password": "Nueva contraseña", "Repeat New Password": "Repetir nueva contraseña", "Update Password": "Actualizar contraseña", - "Disable Auth": "Deshabilitar Autenticación ", - "Enable Auth": "Habilitar Autenticación ", + "Disable Auth": "Deshabilitar Autenticación", + "Enable Auth": "Habilitar Autenticación", Logout: "Cerrar sesión", Leave: "Salir", - "I understand, please disable": "Lo comprendo, por favor deshabilitar", + "I understand, please disable": "Entiendo, por favor deshabilitar", Confirm: "Confirmar", Yes: "Sí", No: "No", @@ -100,7 +100,7 @@ export default { "Notification Type": "Tipo de notificación", Email: "Email", Test: "Test", - "Certificate Info": "Información del certificado ", + "Certificate Info": "Información del certificado", "Resolver Server": "Servidor de resolución", "Resource Record Type": "Tipo de Registro", "Last Result": "Último resultado", @@ -108,78 +108,78 @@ export default { "Repeat Password": "Repetir contraseña", respTime: "Tiempo de resp. (ms)", notAvailableShort: "N/A", - Create: "Create", - clearEventsMsg: "Are you sure want to delete all events for this monitor?", - clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?", - confirmClearStatisticsMsg: "Are you sure want to delete ALL statistics?", - "Clear Data": "Clear Data", - Events: "Events", - Heartbeats: "Heartbeats", - "Auto Get": "Auto Get", - enableDefaultNotificationDescription: "For every new monitor this notification will be enabled by default. You can still disable the notification separately for each monitor.", - "Default enabled": "Default enabled", - "Also apply to existing monitors": "Also apply to existing monitors", - Export: "Export", - Import: "Import", - backupDescription: "You can backup all monitors and all notifications into a JSON file.", - backupDescription2: "PS: History and event data is not included.", - backupDescription3: "Sensitive data such as notification tokens is included in the export file, please keep it carefully.", - alertNoFile: "Please select a file to import.", - alertWrongFileType: "Please select a JSON file.", - twoFAVerifyLabel: "Please type in your token to verify that 2FA is working", - tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.", - confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?", - confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?", - "Apply on all existing monitors": "Apply on all existing monitors", - "Verify Token": "Verify Token", - "Setup 2FA": "Setup 2FA", - "Enable 2FA": "Enable 2FA", - "Disable 2FA": "Disable 2FA", - "2FA Settings": "2FA Settings", - "Two Factor Authentication": "Two Factor Authentication", - Active: "Active", - Inactive: "Inactive", + Create: "Crear", + clearEventsMsg: "¿Está seguro de que desea eliminar todos los eventos de este monitor?", + clearHeartbeatsMsg: "¿Está seguro de que desea eliminar todos los latidos de este monitor?", + confirmClearStatisticsMsg: "¿Está seguro de que desea eliminar TODAS las estadísticas?", + "Clear Data": "Borrar Datos", + Events: "Eventos", + Heartbeats: "Latidos", + "Auto Get": "Obtener automáticamente", + enableDefaultNotificationDescription: "Para cada nuevo monitor, esta notificación estará habilitada de forma predeterminada. Aún puede deshabilitar la notificación por separado para cada monitor.", + "Default enabled": "Habilitado por defecto", + "Also apply to existing monitors": "También se aplica a monitores existentes", + Export: "Exportar", + Import: "Importar", + backupDescription: "Puede hacer una copia de seguridad de todos los monitores y todas las notificaciones en un archivo JSON.", + backupDescription2: "PD: el historial y los datos de eventos no están incluidos.", + backupDescription3: "Los datos confidenciales, como los tokens de notificación, se incluyen en el archivo de exportación. Guárdelo con cuidado.", + alertNoFile: "Seleccione un archivo para importar.", + alertWrongFileType: "Seleccione un archivo JSON.", + twoFAVerifyLabel: "Ingrese su token para verificar que 2FA está funcionando", + tokenValidSettingsMsg: "¡El token es válido! Ahora puede guardar la configuración de 2FA.", + confirmEnableTwoFAMsg: "¿Estás seguro de que quieres habilitar 2FA?", + confirmDisableTwoFAMsg: "¿Estás seguro de que quieres desactivar 2FA?", + "Apply on all existing monitors": "Aplicar en todos los monitores existentes", + "Verify Token": "Verificar token", + "Setup 2FA": "Configurar 2FA", + "Enable 2FA": "Habilitar 2FA", + "Disable 2FA": "Desactivar 2FA", + "2FA Settings": "Ajustes 2FA", + "Two Factor Authentication": "Autenticación de dos factores", + Active: "Activo", + Inactive: "Inactivo", Token: "Token", - "Show URI": "Show URI", - "Clear all statistics": "Clear all Statistics", - retryCheckEverySecond: "Retry every {0} seconds.", - importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", - confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.", - "Heartbeat Retry Interval": "Heartbeat Retry Interval", - "Import Backup": "Import Backup", - "Export Backup": "Export Backup", - "Skip existing": "Skip existing", - Overwrite: "Overwrite", - Options: "Options", - "Keep both": "Keep both", - Tags: "Tags", - "Add New below or Select...": "Add New below or Select...", - "Tag with this name already exist.": "Tag with this name already exist.", - "Tag with this value already exist.": "Tag with this value already exist.", + "Show URI": "Mostrar URI", + "Clear all statistics": "Borrar todas las estadísticas", + retryCheckEverySecond: "Reintentar cada {0} segundo.", + importHandleDescription: "Elija 'Omitir existente' si desea omitir todos los monitores o notificaciones con el mismo nombre. 'Sobrescribir' eliminará todos los monitores y notificaciones existentes.", + confirmImportMsg: "¿Estás seguro de importar la copia de seguridad? Asegúrese de haber seleccionado la opción de importación correcta.", + "Heartbeat Retry Interval": "Intervalo de reintento de latido", + "Import Backup": "Importar copia de seguridad", + "Export Backup": "Exportar copia de seguridad", + "Skip existing": "Omitir existente", + Overwrite: "Sobrescribir", + Options: "Opciones", + "Keep both": "Mantén ambos", + Tags: "Etiquetas", + "Add New below or Select...": "Agregar nuevo a continuación o Seleccionar...", + "Tag with this name already exist.": "La etiqueta con este nombre ya existe.", + "Tag with this value already exist.": "La etiqueta con este valor ya existe.", color: "color", - "value (optional)": "value (optional)", - Gray: "Gray", - Red: "Red", - Orange: "Orange", - Green: "Green", - Blue: "Blue", - Indigo: "Indigo", - Purple: "Purple", - Pink: "Pink", - "Search...": "Search...", - "Avg. Ping": "Avg. Ping", - "Avg. Response": "Avg. Response", - "Entry Page": "Entry Page", - statusPageNothing: "Nothing here, please add a group or a monitor.", - "No Services": "No Services", - "All Systems Operational": "All Systems Operational", - "Partially Degraded Service": "Partially Degraded Service", - "Degraded Service": "Degraded Service", - "Add Group": "Add Group", - "Add a monitor": "Add a monitor", - "Edit Status Page": "Edit Status Page", - "Go to Dashboard": "Go to Dashboard", - "Status Page": "Status Page", + "value (optional)": "valor (opcional)", + Gray: "Gris", + Red: "Rojo", + Orange: "Naranja", + Green: "Verde", + Blue: "Azul", + Indigo: "Índigo", + Purple: "Morado", + Pink: "Rosa", + "Search...": "Buscar...", + "Avg. Ping": "Ping promedio", + "Avg. Response": "Respuesta promedio", + "Entry Page": "Página de entrada", + statusPageNothing: "No hay nada aquí, agregue un grupo o un monitor.", + "No Services": "Sin servicio", + "All Systems Operational": "Todos los sistemas están operativos", + "Partially Degraded Service": "Servicio parcialmente degradado", + "Degraded Service": "Servicio degradado", + "Add Group": "Agregar Grupo", + "Add a monitor": "Agregar un monitor", + "Edit Status Page": "Editar página de estado", + "Go to Dashboard": "Ir al panel de control", + "Status Page": "Página de estado", telegram: "Telegram", webhook: "Webhook", smtp: "Email (SMTP)", @@ -192,8 +192,9 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", - apprise: "Apprise (Support 50+ Notification services)", + apprise: "Apprise (Admite más de 50 servicios de notificación)", pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", diff --git a/src/languages/et-EE.js b/src/languages/et-EE.js index a6be8232e..52439f5f6 100644 --- a/src/languages/et-EE.js +++ b/src/languages/et-EE.js @@ -191,6 +191,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (vahendab üle 65 teavitusteenust)", pushbullet: "Pushbullet", diff --git a/src/languages/fa.js b/src/languages/fa.js index d686488ff..7eed151ad 100644 --- a/src/languages/fa.js +++ b/src/languages/fa.js @@ -199,6 +199,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", pushbullet: "Pushbullet", diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js index 6ef69f0a5..9f234f7aa 100644 --- a/src/languages/fr-FR.js +++ b/src/languages/fr-FR.js @@ -192,6 +192,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", pushbullet: "Pushbullet", diff --git a/src/languages/hu.js b/src/languages/hu.js index 039cf6707..47ac72d64 100644 --- a/src/languages/hu.js +++ b/src/languages/hu.js @@ -190,6 +190,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", pushbullet: "Pushbullet", diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index b318c97e4..5ddc414f7 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -191,6 +191,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", pushbullet: "Pushbullet", diff --git a/src/languages/ja.js b/src/languages/ja.js index 5042d18b9..f96028e42 100644 --- a/src/languages/ja.js +++ b/src/languages/ja.js @@ -192,6 +192,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", pushbullet: "Pushbullet", diff --git a/src/languages/ko-KR.js b/src/languages/ko-KR.js index 6cb86ed20..9d5cb5bdf 100644 --- a/src/languages/ko-KR.js +++ b/src/languages/ko-KR.js @@ -192,6 +192,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", pushbullet: "Pushbullet", diff --git a/src/languages/nl-NL.js b/src/languages/nl-NL.js index 1303a0960..5c3225530 100644 --- a/src/languages/nl-NL.js +++ b/src/languages/nl-NL.js @@ -192,6 +192,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", pushbullet: "Pushbullet", diff --git a/src/languages/pl.js b/src/languages/pl.js index 9a079a9ce..05101c6aa 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -192,6 +192,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (obsługuje 50+ usług powiadamiania)", pushbullet: "Pushbullet", diff --git a/src/languages/pt-BR.js b/src/languages/pt-BR.js index 201314bb6..70647fd9f 100644 --- a/src/languages/pt-BR.js +++ b/src/languages/pt-BR.js @@ -191,6 +191,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", pushbullet: "Pushbullet", diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js index f466ff793..2dd3eafbb 100644 --- a/src/languages/ru-RU.js +++ b/src/languages/ru-RU.js @@ -196,6 +196,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", pushbullet: "Pushbullet", diff --git a/src/languages/sr-latn.js b/src/languages/sr-latn.js index f249f568d..9e66aa541 100644 --- a/src/languages/sr-latn.js +++ b/src/languages/sr-latn.js @@ -192,6 +192,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", pushbullet: "Pushbullet", diff --git a/src/languages/sr.js b/src/languages/sr.js index 8ea651b74..df8e98997 100644 --- a/src/languages/sr.js +++ b/src/languages/sr.js @@ -192,6 +192,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", pushbullet: "Pushbullet", diff --git a/src/languages/sv-SE.js b/src/languages/sv-SE.js index 997d94a7a..e29d355c2 100644 --- a/src/languages/sv-SE.js +++ b/src/languages/sv-SE.js @@ -192,6 +192,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", pushbullet: "Pushbullet", diff --git a/src/languages/tr-TR.js b/src/languages/tr-TR.js index 614ab0ee5..8c404a7dc 100644 --- a/src/languages/tr-TR.js +++ b/src/languages/tr-TR.js @@ -191,6 +191,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", pushbullet: "Pushbullet", diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index 65e8909ac..40db94e23 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -192,6 +192,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", pushbullet: "Pushbullet", diff --git a/src/languages/zh-HK.js b/src/languages/zh-HK.js index ea81f7f33..7f5e2259b 100644 --- a/src/languages/zh-HK.js +++ b/src/languages/zh-HK.js @@ -192,6 +192,7 @@ export default { pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", + promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (支援 50 多種通知)", pushbullet: "Pushbullet", diff --git a/src/mixins/public.js b/src/mixins/public.js index ba8457a04..a3e12f460 100644 --- a/src/mixins/public.js +++ b/src/mixins/public.js @@ -38,11 +38,15 @@ export default { }, baseURL() { + if (this.$root.info.primaryBaseURL) { + return this.$root.info.primaryBaseURL; + } + if (env === "development" || localStorage.dev === "dev") { return axios.defaults.baseURL; } else { return location.protocol + "//" + location.host; } - } + }, } }; diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index fd4c1ceaa..9ceeba909 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -131,7 +131,7 @@ -

{{ $t("Advanced") }}

+

{{ $t("Advanced") }}

@@ -140,7 +140,7 @@
-
+