Compare commits

...

39 Commits

Author SHA1 Message Date
Louis Lam
ec5037f30d update to 1.11.3 2022-01-06 14:51:20 +08:00
Louis Lam
81a194d826 Merge remote-tracking branch 'origin/master' 2022-01-06 14:47:21 +08:00
Louis Lam
64b3e04d3f Fix #1129 2022-01-06 14:34:45 +08:00
Louis Lam
4ee829ab25 Merge pull request #1130 from bilipp/google-chat-notifications
Fix Google Chat notification type mismatch
2022-01-06 13:05:55 +08:00
Philipp Bischoff
bcc3cec7d6 extract translation for notification type 2022-01-05 23:57:40 +01:00
Philipp Bischoff
f8c5015e3f fix google chat type mismatch 2022-01-05 23:44:14 +01:00
Louis Lam
8f3ec33591 update to 1.11.2 2022-01-05 16:40:50 +08:00
Louis Lam
c5fe3a64c2 Merge remote-tracking branch 'origin/master' 2022-01-05 16:26:03 +08:00
Louis Lam
2a1456cfd0 Merge pull request #1124 from MrEddX/bulgarian
Update bg-BG.js
2022-01-05 14:28:39 +08:00
MrEddX
69dfc0c0d2 Update bg-BG.js
Fixed some typos.
2022-01-05 08:15:34 +02:00
Louis Lam
6d11289257 Merge pull request #1095 from LeslieLeung/add-wecom-notification
feat(*): support WeCom notification
2022-01-04 22:50:30 +08:00
Leslie Leung
590859a95b Merge branch 'master' into add-wecom-notification 2022-01-03 21:43:56 +08:00
Louis Lam
f9c0ff1841 Merge pull request #1109 from iomataani/master
Updated translation
2022-01-03 20:05:46 +08:00
Louis Lam
a8566acbaa Merge pull request #1116 from Minvinea/master
Update translation FR
2022-01-03 20:04:33 +08:00
Minvinea
4b07ec23fe Update 2022-01-03 00:27:51 +01:00
Ioma Taani
0e50b71290 Merge branch 'louislam:master' into master 2021-12-31 09:09:53 +01:00
Louis Lam
390b50353f Merge pull request #1106 from MrEddX/bulgarian
Update bg-BG.js
2021-12-30 19:10:42 +08:00
MrEddX
d7cb4fa331 Update bg-BG.js
- Updated Bulgarian language file
2021-12-30 08:12:25 +02:00
Louis Lam
e18d4b6ad0 Merge pull request #1045 from bilipp/google-chat-notifications
Add support for Google Chat Notifications
2021-12-30 00:16:34 +08:00
Louis Lam
f6fc3737fc Change name from "Google Chat" to Google Chat (Google Workspace only) 2021-12-30 00:10:54 +08:00
Louis Lam
4005856ba6 run build dist when building docker image 2021-12-27 19:09:51 +08:00
LeslieLeung
40b70277c7 feat(*): support WeCom notification 2021-12-26 13:11:42 +08:00
Ioma Taani
a2bc74c4fd updated 2021-12-24 12:02:50 +01:00
Louis Lam
a48176bd48 Merge pull request #1080 from chakflying/feat/smtp-dkim
Feat: Add SMTP DKIM settings
2021-12-22 20:08:29 +08:00
Louis Lam
7cfc5c64b7 Missing a full stop 2021-12-22 13:49:57 +08:00
Nelson Chan
624cd862a5 Feat: Expose SMTP DKIM settings 2021-12-19 13:30:53 +08:00
Louis Lam
0ca68f791f Merge pull request #1060 from drodmantras/master
Added sl-SI language
2021-12-18 00:58:56 +08:00
Louis Lam
6127eab517 Merge pull request #1071 from MrEddX/bulgarian
Update bg-BG.js
2021-12-18 00:57:31 +08:00
MrEddX
0de7fb69f6 Update bg-BG.js
Added new fields.
Translated new fields.
2021-12-17 12:29:53 +02:00
Louis Lam
a42932a43e Simulate Chrome's request Accept header. Better handling of #1067 2021-12-16 15:09:10 +08:00
Philipp Bischoff
a6072a0e30 google chat: only show offline message in notification when service went down 2021-12-15 13:40:21 +01:00
Ivan Bratović
475a466c7e Add attribute to basicauth-pass to prevent browsers from autocompleting (#1063) 2021-12-15 18:18:30 +08:00
Louis Lam
5bc68d7f3b Update README.md 2021-12-15 02:50:45 +08:00
Louis Lam
000703837b Update README.md 2021-12-15 02:46:13 +08:00
Erik
b10cecb362 Added sl-SI language
Added sl-SI language
2021-12-14 17:59:26 +01:00
Philipp Bischoff
8ad6bd31d4 Revert "order notification types by name"
This reverts commit 8398466860.
2021-12-12 00:08:33 +01:00
Philipp Bischoff
a71569379e add missing import 2021-12-12 00:01:12 +01:00
Philipp Bischoff
8398466860 order notification types by name 2021-12-11 23:50:03 +01:00
Philipp Bischoff
8050cb8e99 implement google chat notification type 2021-12-11 23:43:12 +01:00
24 changed files with 779 additions and 83 deletions

View File

@@ -89,6 +89,12 @@ Project Plan:
https://github.com/louislam/uptime-kuma/projects/1
## ❤️ Sponsors
Thank you so much! (GitHub Sponsors will be updated manually. OpenCollective sponsors will be updated automatically, the list will be cached by GitHub though. It may need some time to be updated)
<img src="https://uptime.kuma.pet/sponsors?v=3" alt />
## 🖼 More Screenshots
Light Mode:

View File

@@ -37,7 +37,7 @@ const github = require("@actions/github");
owner: issue.owner,
repo: issue.repo,
issue_number: issue.number,
body: `@${username}: Hello! :wave:\n\nThis issue is being automatically closed because it does not follow the issue template. Please DO NOT open a blank issue`
body: `@${username}: Hello! :wave:\n\nThis issue is being automatically closed because it does not follow the issue template. Please DO NOT open a blank issue.`
});
// Close the issue

View File

@@ -1,6 +1,6 @@
{
"name": "uptime-kuma",
"version": "1.11.1",
"version": "1.11.3",
"license": "MIT",
"repository": {
"type": "git",
@@ -27,16 +27,16 @@
"jest-backend": "cross-env TEST_BACKEND=1 jest --config=./config/jest-backend.config.js",
"tsc": "tsc",
"vite-preview-dist": "vite preview --host --config ./config/vite.config.js",
"build-docker": "npm run build-docker-debian && npm run build-docker-alpine",
"build-docker": "npm run build && npm run build-docker-debian && npm run build-docker-alpine",
"build-docker-alpine-base": "docker buildx build -f docker/alpine-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-alpine . --push",
"build-docker-debian-base": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-debian . --push",
"build-docker-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.11.1-alpine --target release . --push",
"build-docker-debian": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.11.1 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.11.1-debian --target release . --push",
"build-docker-nightly": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push",
"build-docker-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.11.3-alpine --target release . --push",
"build-docker-debian": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.11.3 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.11.3-debian --target release . --push",
"build-docker-nightly": "npm run build && docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push",
"build-docker-nightly-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly-alpine --target nightly . --push",
"build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain",
"upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg VERSION --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain",
"setup": "git checkout 1.11.1 && npm ci --production && npm run download-dist",
"setup": "git checkout 1.11.3 && npm ci --production && npm run download-dist",
"download-dist": "node extra/download-dist.js",
"update-version": "node extra/update-version.js",
"mark-as-nightly": "node extra/mark-as-nightly.js",

View File

@@ -168,7 +168,7 @@ class Monitor extends BeanModel {
...(this.body ? { data: JSON.parse(this.body) } : {}),
timeout: this.interval * 1000 * 0.8,
headers: {
"Accept": "*/*",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"User-Agent": "Uptime-Kuma/" + version,
...(this.headers ? JSON.parse(this.headers) : {}),
...(basicAuthHeader),

View File

@@ -0,0 +1,47 @@
const NotificationProvider = require("./notification-provider");
const axios = require("axios");
const { setting } = require("../util-server");
const { getMonitorRelativeURL } = require("../../src/util");
const { DOWN, UP } = require("../../src/util");
class GoogleChat extends NotificationProvider {
name = "GoogleChat";
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
let okMsg = "Sent Successfully.";
try {
// Google Chat message formatting: https://developers.google.com/chat/api/guides/message-formats/basic
let textMsg = ''
if (heartbeatJSON && heartbeatJSON.status === UP) {
textMsg = `✅ Application is back online\n`;
} else if (heartbeatJSON && heartbeatJSON.status === DOWN) {
textMsg = `🔴 Application went down\n`;
}
if (monitorJSON && monitorJSON.name) {
textMsg += `*${monitorJSON.name}*\n`;
}
textMsg += `${msg}`;
const baseURL = await setting("primaryBaseURL");
if (baseURL) {
textMsg += `\n${baseURL + getMonitorRelativeURL(monitorJSON.id)}`;
}
const data = {
"text": textMsg,
};
await axios.post(notification.googleChatWebhookURL, data);
return okMsg;
} catch (error) {
this.throwGeneralAxiosError(error);
}
}
}
module.exports = GoogleChat;

View File

@@ -14,9 +14,21 @@ class SMTP extends NotificationProvider {
secure: notification.smtpSecure,
tls: {
rejectUnauthorized: notification.smtpIgnoreTLSError || false,
},
}
};
// Fix #1129
if (notification.smtpDkimDomain) {
config.dkim = {
domainName: notification.smtpDkimDomain,
keySelector: notification.smtpDkimKeySelector,
privateKey: notification.smtpDkimPrivateKey,
hashAlgo: notification.smtpDkimHashAlgo,
headerFieldNames: notification.smtpDkimheaderFieldNames,
skipFields: notification.smtpDkimskipFields,
};
}
// Should fix the issue in https://github.com/louislam/uptime-kuma/issues/26#issuecomment-896373904
if (notification.smtpUsername || notification.smtpPassword) {
config.auth = {

View File

@@ -0,0 +1,47 @@
const NotificationProvider = require("./notification-provider");
const axios = require("axios");
const { DOWN, UP } = require("../../src/util");
class WeCom extends NotificationProvider {
name = "WeCom";
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
let okMsg = "Sent Successfully.";
try {
let WeComUrl = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=" + notification.weComBotKey;
let config = {
headers: {
"Content-Type": "application/json"
}
};
let body = this.composeMessage(heartbeatJSON, msg);
await axios.post(WeComUrl, body, config);
return okMsg;
} catch (error) {
this.throwGeneralAxiosError(error);
}
}
composeMessage(heartbeatJSON, msg) {
let title;
if (msg != null && heartbeatJSON != null && heartbeatJSON['status'] == UP) {
title = "UptimeKuma Monitor Up";
}
if (msg != null && heartbeatJSON != null && heartbeatJSON["status"] == DOWN) {
title = "UptimeKuma Monitor Down";
}
if (msg != null) {
title = "UptimeKuma Message";
}
return {
msgtype: "text",
text: {
content: title + msg
}
};
}
}
module.exports = WeCom;

View File

@@ -25,6 +25,8 @@ const DingDing = require("./notification-providers/dingding");
const Bark = require("./notification-providers/bark");
const SerwerSMS = require("./notification-providers/serwersms");
const Stackfield = require("./notification-providers/stackfield");
const WeCom = require("./notification-providers/wecom");
const GoogleChat = require("./notification-providers/google-chat");
class Notification {
@@ -62,6 +64,8 @@ class Notification {
new Bark(),
new SerwerSMS(),
new Stackfield(),
new WeCom(),
new GoogleChat()
];
for (let item of list) {

View File

@@ -313,6 +313,20 @@ textarea.form-control {
opacity: 0;
}
.slide-fade-up-enter-active {
transition: all 0.2s $easing-in;
}
.slide-fade-up-leave-active {
transition: all 0.2s $easing-in;
}
.slide-fade-up-enter-from,
.slide-fade-up-leave-to {
transform: translateY(-50px);
opacity: 0;
}
.monitor-list {
&.scrollbar {
min-height: calc(100vh - 240px);

View File

@@ -0,0 +1,67 @@
<template>
<div class="my-3 py-3">
<h5 @click="isOpen = !isOpen">
<div
class="
w-50
d-flex
justify-content-between
align-items-center
pe-2
"
>
<span class="pb-2">{{ heading }}</span>
<font-awesome-icon
icon="chevron-down"
class="animated"
:class="{ open: isOpen }"
/>
</div>
</h5>
<transition name="slide-fade-up">
<div v-if="isOpen" class="mt-3">
<slot></slot>
</div>
</transition>
</div>
</template>
<script>
export default {
props: {
heading: {
type: String,
default: "",
},
defaultOpen: {
type: Boolean,
default: false,
},
},
data() {
return {
isOpen: this.defaultOpen,
};
},
};
</script>
<style lang="scss" scoped>
@import "../assets/vars.scss";
h5:after {
content: "";
display: block;
width: 50%;
padding-top: 8px;
border-bottom: 1px solid $dark-border-color;
}
.open {
transform: rotate(180deg);
}
.animated {
transition: all 0.2s $easing-in;
}
</style>

View File

@@ -0,0 +1,13 @@
<template>
<div class="mb-3">
<label for="google-chat-webhook-url" class="form-label">{{ $t("Webhook URL") }}<span style="color: red;"><sup>*</sup></span></label>
<input id="google-chat-webhook-url" v-model="$parent.notification.googleChatWebhookURL" type="text" class="form-control" required>
<div class="form-text">
<span style="color: red;"><sup>*</sup></span>{{ $t("Required") }}
<i18n-t tag="p" keypath="aboutWebhooks" style="margin-top: 8px;">
<a href="https://developers.google.com/chat/how-tos/webhooks" target="_blank">https://developers.google.com/chat/how-tos/webhooks</a>
</i18n-t>
</div>
</div>
</template>

View File

@@ -1,82 +1,117 @@
<template>
<div class="mb-3">
<label for="hostname" class="form-label">{{ $t("Hostname") }}</label>
<input id="hostname" v-model="$parent.notification.smtpHost" type="text" class="form-control" required>
</div>
<div class="mb-3">
<label for="port" class="form-label">{{ $t("Port") }}</label>
<input id="port" v-model="$parent.notification.smtpPort" type="number" class="form-control" required min="0" max="65535" step="1">
</div>
<div class="mb-3">
<label for="secure" class="form-label">{{ $t("Security") }}</label>
<select id="secure" v-model="$parent.notification.smtpSecure" class="form-select">
<option :value="false">{{ $t("secureOptionNone") }}</option>
<option :value="true">{{ $t("secureOptionTLS") }}</option>
</select>
</div>
<div class="mb-3">
<div class="form-check">
<input id="ignore-tls-error" v-model="$parent.notification.smtpIgnoreTLSError" class="form-check-input" type="checkbox" value="">
<label class="form-check-label" for="ignore-tls-error">
{{ $t("Ignore TLS Error") }}
</label>
<div>
<div class="mb-3">
<label for="hostname" class="form-label">{{ $t("Hostname") }}</label>
<input id="hostname" v-model="$parent.notification.smtpHost" type="text" class="form-control" required>
</div>
</div>
<div class="mb-3">
<label for="username" class="form-label">{{ $t("Username") }}</label>
<input id="username" v-model="$parent.notification.smtpUsername" type="text" class="form-control" autocomplete="false">
</div>
<div class="mb-3">
<label for="password" class="form-label">{{ $t("Password") }}</label>
<HiddenInput id="password" v-model="$parent.notification.smtpPassword" :required="false" autocomplete="one-time-code"></HiddenInput>
</div>
<div class="mb-3">
<label for="from-email" class="form-label">{{ $t("From Email") }}</label>
<input id="from-email" v-model="$parent.notification.smtpFrom" type="text" class="form-control" required autocomplete="false" placeholder="&quot;Uptime Kuma&quot; &lt;example@kuma.pet&gt;">
<div class="form-text">
<div class="mb-3">
<label for="port" class="form-label">{{ $t("Port") }}</label>
<input id="port" v-model="$parent.notification.smtpPort" type="number" class="form-control" required min="0" max="65535" step="1">
</div>
</div>
<div class="mb-3">
<label for="to-email" class="form-label">{{ $t("To Email") }}</label>
<input id="to-email" v-model="$parent.notification.smtpTo" type="text" class="form-control" autocomplete="false" placeholder="example2@kuma.pet, example3@kuma.pet" :required="!hasRecipient">
</div>
<div class="mb-3">
<label for="secure" class="form-label">{{ $t("Security") }}</label>
<select id="secure" v-model="$parent.notification.smtpSecure" class="form-select">
<option :value="false">{{ $t("secureOptionNone") }}</option>
<option :value="true">{{ $t("secureOptionTLS") }}</option>
</select>
</div>
<div class="mb-3">
<label for="to-cc" class="form-label">{{ $t("smtpCC") }}</label>
<input id="to-cc" v-model="$parent.notification.smtpCC" type="text" class="form-control" autocomplete="false" :required="!hasRecipient">
</div>
<div class="mb-3">
<div class="form-check">
<input id="ignore-tls-error" v-model="$parent.notification.smtpIgnoreTLSError" class="form-check-input" type="checkbox" value="">
<label class="form-check-label" for="ignore-tls-error">
{{ $t("Ignore TLS Error") }}
</label>
</div>
</div>
<div class="mb-3">
<label for="to-bcc" class="form-label">{{ $t("smtpBCC") }}</label>
<input id="to-bcc" v-model="$parent.notification.smtpBCC" type="text" class="form-control" autocomplete="false" :required="!hasRecipient">
</div>
<div class="mb-3">
<label for="username" class="form-label">{{ $t("Username") }}</label>
<input id="username" v-model="$parent.notification.smtpUsername" type="text" class="form-control" autocomplete="false">
</div>
<div class="mb-3">
<label for="subject-email" class="form-label">{{ $t("emailCustomSubject") }}</label>
<input id="subject-email" v-model="$parent.notification.customSubject" type="text" class="form-control" autocomplete="false" placeholder="">
<div v-pre class="form-text">
(leave blank for default one)<br />
{{NAME}}: Service Name<br />
{{HOSTNAME_OR_URL}}: Hostname or URL<br />
{{URL}}: URL<br />
{{STATUS}}: Status<br />
<div class="mb-3">
<label for="password" class="form-label">{{ $t("Password") }}</label>
<HiddenInput id="password" v-model="$parent.notification.smtpPassword" :required="false" autocomplete="one-time-code"></HiddenInput>
</div>
<div class="mb-3">
<label for="from-email" class="form-label">{{ $t("From Email") }}</label>
<input id="from-email" v-model="$parent.notification.smtpFrom" type="text" class="form-control" required autocomplete="false" placeholder="&quot;Uptime Kuma&quot; &lt;example@kuma.pet&gt;">
<div class="form-text">
</div>
</div>
<div class="mb-3">
<label for="to-email" class="form-label">{{ $t("To Email") }}</label>
<input id="to-email" v-model="$parent.notification.smtpTo" type="text" class="form-control" autocomplete="false" placeholder="example2@kuma.pet, example3@kuma.pet" :required="!hasRecipient">
</div>
<div class="mb-3">
<label for="to-cc" class="form-label">{{ $t("smtpCC") }}</label>
<input id="to-cc" v-model="$parent.notification.smtpCC" type="text" class="form-control" autocomplete="false" :required="!hasRecipient">
</div>
<div class="mb-3">
<label for="to-bcc" class="form-label">{{ $t("smtpBCC") }}</label>
<input id="to-bcc" v-model="$parent.notification.smtpBCC" type="text" class="form-control" autocomplete="false" :required="!hasRecipient">
</div>
<ToggleSection :heading="$t('smtpDkimSettings')">
<i18n-t tag="div" keypath="smtpDkimDesc" class="form-text mb-3">
<a href="https://nodemailer.com/dkim/" target="_blank">{{ $t("documentation") }}</a>
</i18n-t>
<div class="mb-3">
<label for="dkim-domain" class="form-label">{{ $t("smtpDkimDomain") }}</label>
<input id="dkim-domain" v-model="$parent.notification.smtpDkimDomain" type="text" class="form-control" autocomplete="false" placeholder="example.com">
</div>
<div class="mb-3">
<label for="dkim-key-selector" class="form-label">{{ $t("smtpDkimKeySelector") }}</label>
<input id="dkim-key-selector" v-model="$parent.notification.smtpDkimKeySelector" type="text" class="form-control" autocomplete="false" placeholder="2017">
</div>
<div class="mb-3">
<label for="dkim-private-key" class="form-label">{{ $t("smtpDkimPrivateKey") }}</label>
<textarea id="dkim-private-key" v-model="$parent.notification.smtpDkimPrivateKey" rows="5" type="text" class="form-control" autocomplete="false" placeholder="-----BEGIN PRIVATE KEY-----"></textarea>
</div>
<div class="mb-3">
<label for="dkim-hash-algo" class="form-label">{{ $t("smtpDkimHashAlgo") }}</label>
<input id="dkim-hash-algo" v-model="$parent.notification.smtpDkimHashAlgo" type="text" class="form-control" autocomplete="false" placeholder="sha256">
</div>
<div class="mb-3">
<label for="dkim-header-fields" class="form-label">{{ $t("smtpDkimheaderFieldNames") }}</label>
<input id="dkim-header-fields" v-model="$parent.notification.smtpDkimheaderFieldNames" type="text" class="form-control" autocomplete="false" placeholder="message-id:date:from:to">
</div>
<div class="mb-3">
<label for="dkim-skip-fields" class="form-label">{{ $t("smtpDkimskipFields") }}</label>
<input id="dkim-skip-fields" v-model="$parent.notification.smtpDkimskipFields" type="text" class="form-control" autocomplete="false" placeholder="message-id:date">
</div>
</ToggleSection>
<div class="mb-3">
<label for="subject-email" class="form-label">{{ $t("emailCustomSubject") }}</label>
<input id="subject-email" v-model="$parent.notification.customSubject" type="text" class="form-control" autocomplete="false" placeholder="">
<div v-pre class="form-text">
(leave blank for default one)<br />
{{NAME}}: Service Name<br />
{{HOSTNAME_OR_URL}}: Hostname or URL<br />
{{URL}}: URL<br />
{{STATUS}}: Status<br />
</div>
</div>
</div>
</template>
<script>
import HiddenInput from "../HiddenInput.vue";
import ToggleSection from "../ToggleSection.vue";
export default {
components: {
HiddenInput,
ToggleSection,
},
computed: {
hasRecipient() {

View File

@@ -0,0 +1,12 @@
<template>
<div class="mb-3">
<label for="WeCom Bot Key" class="form-label">{{ $t("WeCom Bot Key") }}<span style="color: red;"><sup>*</sup></span></label>
<input id="WeCom Bot Key" v-model="$parent.notification.weComBotKey" type="text" class="form-control" required>
<div class="form-text">
<p><span style="color: red;"><sup>*</sup></span>{{ $t("Required") }}</p>
</div>
<i18n-t tag="p" keypath="Read more:">
<a href="https://work.weixin.qq.com/api/doc/90000/90136/91770" target="_blank">https://work.weixin.qq.com/api/doc/90000/90136/91770</a>
</i18n-t>
</div>
</template>

View File

@@ -1,4 +1,4 @@
import STMP from "./SMTP.vue"
import STMP from "./SMTP.vue";
import Telegram from "./Telegram.vue";
import Discord from "./Discord.vue";
import Webhook from "./Webhook.vue";
@@ -24,6 +24,8 @@ import DingDing from "./DingDing.vue";
import Bark from "./Bark.vue";
import SerwerSMS from "./SerwerSMS.vue";
import Stackfield from './Stackfield.vue';
import WeCom from "./WeCom.vue";
import GoogleChat from "./GoogleChat.vue";
/**
* Manage all notification form.
@@ -57,6 +59,8 @@ const NotificationFormList = {
"Bark": Bark,
"serwersms": SerwerSMS,
"stackfield": Stackfield,
}
"WeCom": WeCom,
"GoogleChat": GoogleChat
};
export default NotificationFormList
export default NotificationFormList;

View File

@@ -126,6 +126,12 @@
<p>Bitte mit Vorsicht nutzen.</p>
</template>
<template v-else-if="$i18n.locale === 'sl-SI' ">
<p>Ali ste prepričani, da želite onemogočiti <strong>avtentikacijo</strong>?</p>
<p>Namenjen je <strong>nekomu, ki ima pred programom Uptime Kuma vklopljeno zunanje preverjanje pristnosti</strong>, na primer Cloudflare Access.</p>
<p>Uporabljajte previdno.</p>
</template>
<template v-else-if="$i18n.locale === 'sr' ">
<p>Да ли сте сигурни да желите да <strong>искључите аутентификацију</strong>?</p>
<p>То је за <strong>оне који имају додату аутентификацију</strong> испред Uptime Kuma као на пример Cloudflare Access.</p>

View File

@@ -18,6 +18,7 @@ const languageList = {
"ja": "日本語",
"da-DK": "Danish (Danmark)",
"sr": "Српски",
"sl-SI": "Slovenščina",
"sr-latn": "Srpski",
"sv-SE": "Svenska",
"tr-TR": "Türkçe",

View File

@@ -33,6 +33,7 @@ import {
faFile,
faAward,
faLink,
faChevronDown,
} from "@fortawesome/free-solid-svg-icons";
library.add(
@@ -65,6 +66,7 @@ library.add(
faFile,
faAward,
faLink,
faChevronDown,
);
export { FontAwesomeIcon };

View File

@@ -131,8 +131,8 @@ export default {
Events: "Събития",
Heartbeats: "Проверки",
"Auto Get": "Авт. попълване",
backupDescription: "Можете да архивирате всички монитори и всички известия в JSON файл.",
backupDescription2: "PS: Данни за история и събития не са включени.",
backupDescription: "Можете да архивирате всички монитори и всички известявания в JSON файл.",
backupDescription2: "PS: Имайте предвид, че данните за история и събития няма да бъдат включени.",
backupDescription3: "Чувствителни данни, като токен кодове за известяване, се съдържат в експортирания файл. Моля, бъдете внимателни с неговото съхранение.",
alertNoFile: "Моля, изберете файл за импортиране.",
alertWrongFileType: "Моля, изберете JSON файл.",
@@ -200,7 +200,7 @@ export default {
"Primary Base URL": "Основен базов URL адрес",
"Push URL": "Генериран Push URL адрес",
needPushEvery: "Необходимо е да извършвате заявка към този URL адрес на всеки {0} секунди",
pushOptionalParams: "Допълнителни, но незадължителни параметри: {0}",
pushOptionalParams: "Допълнителни, но не задължителни параметри: {0}",
defaultNotificationName: "Моето {notification} известяване ({number})",
here: "тук",
Required: "Задължително поле",
@@ -308,4 +308,56 @@ export default {
"Current User": "Текущ потребител",
recent: "Скорошни",
shrinkDatabaseDescription: "Инициира \"VACUUM\" за \"SQLite\" база данни. Ако Вашата база данни е създадена след версия 1.10.0, \"AUTO_VACUUM\" функцията е активна и това действие не нужно.",
Done: "Готово",
Info: "Информация",
Security: "Сигурност",
"Steam API Key": "Steam API ключ",
"Shrink Database": "Редуциране база данни",
"Pick a RR-Type...": "Изберете вида на ресурсния запис за мониторитане...",
"Pick Accepted Status Codes...": "Изберете статус кодове, които да се считат за успешен отговор...",
Default: "По подразбиране",
"HTTP Options": "HTTP Опции",
"Create Incident": "Създаване на инцидент",
Title: "Заглавие",
Content: "Съдържание",
Style: "Стил",
info: "информация",
warning: "предупреждение",
danger: "опасност",
primary: "основен",
light: "светъл",
dark: "тъмен",
Post: "Публикувай",
"Please input title and content": "Моля, въведете заглавие и съдържание",
Created: "Създаден",
"Last Updated": "Последно обновен",
Unpin: "Откачи",
"Switch to Light Theme": "Превключи към светла тема",
"Switch to Dark Theme": "Превключи към тъмна тема",
"Show Tags": "Покажи етикети",
"Hide Tags": "Скрий етикети",
Description: "Описание",
"No monitors available.": "Няма налични монитори.",
"Add one": "Добави един",
"No Monitors": "Няма монитори",
"Untitled Group": "Група без заглавие",
Services: "Услуги",
Discard: "Премахни",
Cancel: "Отмени",
"Powered by": "Създадено чрез",
serwersms: "SerwerSMS.pl",
serwersmsAPIUser: "API Потребителско име (вкл. webapi_ prefix)",
serwersmsAPIPassword: "API Парола",
serwersmsPhoneNumber: "Телефон номер",
serwersmsSenderName: "SMS Подател име (регистриран през клиентския портал)",
stackfield: "Stackfield",
smtpDkimSettings: "DKIM Настройки",
smtpDkimDesc: "Моля, вижте Nodemailer DKIM {0} за инструкции.",
documentation: "документация",
smtpDkimDomain: "Домейн",
smtpDkimKeySelector: "Селектор на ключ",
smtpDkimPrivateKey: "Частен ключ",
smtpDkimHashAlgo: "Хеш алгоритъм (по желание)",
smtpDkimheaderFieldNames: "Хедър ключове за подписване (по желание)",
smtpDkimskipFields: "Хедър ключове, които да не се подписват (по желание)",
};

View File

@@ -194,6 +194,7 @@ export default {
promosms: "PromoSMS",
lunasea: "LunaSea",
apprise: "Apprise (Unterstützung für 50+ Benachrichtigungsdienste)",
GoogleChat: "Google Chat (nur Google Workspace)",
pushbullet: "Pushbullet",
line: "Line Messenger",
mattermost: "Mattermost",

View File

@@ -243,6 +243,7 @@ export default {
clicksendsms: "ClickSend SMS",
lunasea: "LunaSea",
apprise: "Apprise (Support 50+ Notification services)",
GoogleChat: "Google Chat (Google Workspace only)",
pushbullet: "Pushbullet",
line: "Line Messenger",
mattermost: "Mattermost",
@@ -339,7 +340,6 @@ export default {
"No monitors available.": "No monitors available.",
"Add one": "Add one",
"No Monitors": "No Monitors",
"Add one": "Add one",
"Untitled Group": "Untitled Group",
Services: "Services",
Discard: "Discard",
@@ -352,4 +352,13 @@ export default {
serwersmsPhoneNumber: "Phone number",
serwersmsSenderName: "SMS Sender Name (registered via customer portal)",
"stackfield": "Stackfield",
smtpDkimSettings: "DKIM Settings",
smtpDkimDesc: "Please refer to the Nodemailer DKIM {0} for usage.",
documentation: "documentation",
smtpDkimDomain: "Domain Name",
smtpDkimKeySelector: "Key Selector",
smtpDkimPrivateKey: "Private Key",
smtpDkimHashAlgo: "Hash Algorithm (Optional)",
smtpDkimheaderFieldNames: "Header Keys to sign (Optional)",
smtpDkimskipFields: "Header Keys not to sign (Optional)",
};

View File

@@ -207,7 +207,7 @@ export default {
"Discord Webhook URL": "Discord Webhook URL",
wayToGetDiscordURL: "Vous pouvez l'obtenir en allant dans 'Paramètres du Serveur' -> 'Intégrations' -> 'Créer un Webhook'",
"Bot Display Name": "Nom du bot (affiché)",
"Prefix Custom Message": "Prefix Custom Message",
"Prefix Custom Message": "Prefixe du message personnalisé",
"Hello @everyone is...": "Bonjour {'@'}everyone il...",
teams: "Microsoft Teams",
"Webhook URL": "Webhook URL",
@@ -229,7 +229,7 @@ export default {
aboutWebhooks: "Plus d'informations sur les Webhooks ici : {0}",
aboutChannelName: "Mettez le nom du salon dans {0} dans 'Channel Name' si vous voulez bypass le salon Webhook. Ex : #autre-salon",
aboutKumaURL: "Si vous laissez l'URL d'Uptime Kuma vierge, elle redirigera vers la page du projet GitHub.",
emojiCheatSheet: "Emoji cheat sheet : {0}",
emojiCheatSheet: "Aide emoji : {0}",
"rocket.chat": "Rocket.chat",
pushover: "Pushover",
pushy: "Pushy",
@@ -262,9 +262,9 @@ export default {
appriseInstalled: "Apprise est installé.",
appriseNotInstalled: "Apprise n'est pas installé. {0}",
"Access Token": "Access Token",
"Channel access token": "Channel access token",
"Line Developers Console": "Line Developers Console",
lineDevConsoleTo: "Line Developers Console - {0}",
"Channel access token": "Token d'accès au canal",
"Line Developers Console": "Ligne console de développeurs",
lineDevConsoleTo: "Ligne console de développeurs - {0}",
"Basic Settings": "Paramètres de base",
"User ID": "Identifiant utilisateur",
"Messaging API": "Messaging API",

View File

@@ -351,4 +351,13 @@ export default {
serwersmsPhoneNumber: "Numero di Telefono",
serwersmsSenderName: "Nome del mittente SMS (registrato via portale cliente)",
stackfield: "Stackfield",
smtpDkimSettings: "Impostazioni DKIM",
smtpDkimDesc: "Fare riferimento a Nodemailer DKIM {0} per l'utilizzo.",
documentation: "documentazione",
smtpDkimDomain: "Dominio",
smtpDkimKeySelector: "Selettore Chiave",
smtpDkimPrivateKey: "Chiave Privata",
smtpDkimHashAlgo: "Algoritmo di hashing (opzionale)",
smtpDkimheaderFieldNames: "Campi Intestazione da firmare (opzionale)",
smtpDkimskipFields: "Campi Intestazione da non firmare (opzionale)",
};

355
src/languages/sl-SI.js Normal file
View File

@@ -0,0 +1,355 @@
export default {
languageName: "Slovenščina",
checkEverySecond: "Preveri na vsakih {0} sekund",
retryCheckEverySecond: "Ponovno poskusi na vsakih {0} sekund",
retriesDescription: "Maksimalno število poskusov predenj se storitev označi kot nedosegljiva in se pošlje obvestilo",
ignoreTLSError: "Ignoriraj TLS/SSL napake za HTTPS spletne strani",
upsideDownModeDescription: "Negiraj status. Če je storitev dosegljiva je NEDOSEGLJIVA.",
maxRedirectDescription: "Maksimalno število sledečih preusmeritev. 0 onemogoči preusmeritve.",
acceptedStatusCodesDescription: "Izberi kode statusa veljavna kot uspešen odgovor.",
passwordNotMatchMsg: "Ponovljeno geslo se ne ujema.",
notificationDescription: "Obvestila morajo biti dodeljena monitorju, da delujejo.",
keywordDescription: "Iskana ključna beseda v surovem HTML ali JSON odgovoru. Iskanje je občutljivo na začetnico.",
pauseDashboardHome: "Pavza",
deleteMonitorMsg: "Ste prepričani, da želite izbrisati ta monitor?",
deleteNotificationMsg: "Ste prepričani, da želite izbrisati to obvestilo za vse monitorje?",
resoverserverDescription: "Cloudflare je privzeti strežnik. DNS strežnik lahko spremenite kadarkoli.",
rrtypeDescription: "Izberite RR tip, ki ga želite spremljati",
pauseMonitorMsg: "Ste prepričani, da želite pavzirati?",
enableDefaultNotificationDescription: "To obvestilo bo kot privzeto omogočeno za vse nove monitorje. Še vedno ga lahko izključite posebej za vsak monitor.",
clearEventsMsg: "Ste prepričani da želite izbrisati vse dogodke tega monitorja?",
clearHeartbeatsMsg: "Ste prepričani da želite izbrisati vse srčne utripe tega monitorja?",
confirmClearStatisticsMsg: "Ste prepričani da želite izbrisati VSO statistiko?",
importHandleDescription: "Izberite 'Preskoči obstoječe', če želite preskočiti vsak monitor ali obvestilo z istim imenom. 'Prepiši' bo prepisal vse obstoječe monitorje in obvestila.",
confirmImportMsg: "Ste prepričani da želite uvoziti varnostno kopijo? Preverite da ste izbrali pravo opcijo za uvoz.",
twoFAVerifyLabel: "Prosimo vnesite žeton za potrditev 2FA:",
tokenValidSettingsMsg: "Žeton je veljaven! Sedaj lahko shranite 2FA nastavitev.",
confirmEnableTwoFAMsg: "Ste prepričani, da želite omogočiti 2FA?",
confirmDisableTwoFAMsg: "Ste prepričani, da želite onemogočiti 2FA?",
Settings: "Nastavitve",
Dashboard: "Nadzorna plošča",
"New Update": "Nova posodobitev",
Language: "Jezik",
Appearance: "Izgled",
Theme: "Teme",
General: "Splošno",
"Primary Base URL": "Primaren URL",
Version: "Različica",
"Check Update On GitHub": "Preveri posodobitev na GitHub-u",
List: "Seznam",
Add: "Dodaj",
"Add New Monitor": "Dodaj nov monitor",
"Quick Stats": "Hitro stanje",
Up: "Dosegljiv",
Down: "Nedosegljiv",
Pending: "Na čakanju",
Unknown: "Neznano",
Pause: "Pavza",
Name: "Ime",
Status: "Status",
DateTime: "DateTime",
Message: "Sporočilo",
"No important events": "Ni pomembnih dogodkov",
Resume: "Nadaljuj",
Edit: "Uredi",
Delete: "Izbriši",
Current: "Trenutno",
Uptime: "Uptime",
"Cert Exp.": "Potek certifikata",
days: "dni",
day: "dan",
"-day": "-dan",
hour: "ura",
"-hour": "-ura",
Response: "Odgovor",
Ping: "Ping",
"Monitor Type": "Tip monitorja",
Keyword: "Ključna beseda",
"Friendly Name": "Prijazno ime",
URL: "URL",
Hostname: "Hostname",
Port: "Vrata",
"Heartbeat Interval": "Interval srčnega utripa",
Retries: "Ponovni poskusi",
"Heartbeat Retry Interval": "Ponovni poskus srčnega utripa",
Advanced: "Napredno",
"Upside Down Mode": "Negiran način",
"Max. Redirects": "Max. preusmeritev",
"Accepted Status Codes": "Sprejete kode statusa",
"Push URL": "Push URL",
needPushEvery: "Pokliči ta URL vsakih {0} sekund.",
pushOptionalParams: "Dodatni parametri: {0}",
Save: "Shrani",
Notifications: "Obvestila",
"Not available, please setup.": "Ni na voljo, prosimo nastavite.",
"Setup Notification": "Nastavi obvestila",
Light: "Svetlo",
Dark: "Temno",
Auto: "Auto",
"Theme - Heartbeat Bar": "Tema - vrstica srčnega utripa",
Normal: "Normalna",
Bottom: "Spodaj",
None: "Brez",
Timezone: "Časovni pas",
"Search Engine Visibility": "Vidljivost v spletnih iskalnikih",
"Allow indexing": "Dovoli indeksiranje",
"Discourage search engines from indexing site": "Odvračaj spletne iskalnike od indeksiranja te strani",
"Change Password": "Zamenjaj geslo",
"Current Password": "Trenutno geslo",
"New Password": "Novo geslo",
"Repeat New Password": "Ponovi novo geslo",
"Update Password": "Posodobi geslo",
"Disable Auth": "Onemogoči auth",
"Enable Auth": "Omogoči auth",
Logout: "Odjava",
Leave: "Zapusti",
"I understand, please disable": "Razumem, prosim onemogočite",
Confirm: "Potrdi",
Yes: "Da",
No: "Ne",
Username: "Uporabniško ime",
Password: "Geslo",
"Remember me": "Zapomni si me",
Login: "Vpis",
"No Monitors, please": "Prosim, brez monitorjev",
"add one": "Dodaj enega",
"Notification Type": "Tip obvestila",
Email: "Email",
Test: "Test",
"Certificate Info": "Informacije certifikata",
"Resolver Server": "Strežnik za razreševanje",
"Resource Record Type": "Vrsta zapisa o viru",
"Last Result": "Zadnji rezultat",
"Create your admin account": "Ustvari administratorski račun",
"Repeat Password": "Ponovi geslo",
"Import Backup": "Uvozi varnostno kopijo",
"Export Backup": "Izvozi varnostno kopijo",
Export: "Izvozi",
Import: "Uvozi",
respTime: "Odzivni čas (ms)",
notAvailableShort: "N/A",
"Default enabled": "Privzeto omogočeno",
"Apply on all existing monitors": "Uporabi na vseh obstoječih monitorjih",
Create: "Ustvari",
"Clear Data": "Izbriši podatke",
Events: "Dogodki",
Heartbeats: "Srčni utripi",
"Auto Get": "Auto Get",
backupDescription: "Izvozite lahko vse monitorje in obvestila v JSON datoteko.",
backupDescription2: "Pomni: Zgodovina in podatki dogodkov niso vključeni.",
backupDescription3: "Občutljivi podatki, kot žetoni za obvestila so vlkjučeni v datoteko za izvoz; prosimo hranite na varnem.",
alertNoFile: "Izberite datoteko za Uvoz.",
alertWrongFileType: "Prosimo izberite JSON datoteko.",
"Clear all statistics": "Pobrišite vso statistiko",
"Skip existing": "Preskoči obstoječe",
Overwrite: "Prepiši",
Options: "Možnosti",
"Keep both": "Ohrani oboje",
"Verify Token": "Potrdi žeton",
"Setup 2FA": "Nastavi 2FA",
"Enable 2FA": "Omogoči 2FA",
"Disable 2FA": "Onemogoči 2FA",
"2FA Settings": "2FA nastavitve",
"Two Factor Authentication": "Preverjanje pristnosti z dvema dejavnikoma",
Active: "Aktivno",
Inactive: "Neaktivno",
Token: "Žeton",
"Show URI": "Prikaži URI",
Tags: "Značke",
"Add New below or Select...": "Dodaj novo spodaj ali izberi iz seznama...",
"Tag with this name already exist.": "Značka s tem imenom že obstaja.",
"Tag with this value already exist.": "Značka s to vrednostjo že obstaja.",
color: "barva",
"value (optional)": "vrednost (po želji)",
Gray: "Siva",
Red: "Rdeča",
Orange: "Oranžna",
Green: "Zelena",
Blue: "Modra",
Indigo: "Indigo",
Purple: "Vijolična",
Pink: "Roza",
"Search...": "Išči...",
"Avg. Ping": "Avg. Ping",
"Avg. Response": "Avg. odziv",
"Entry Page": "Vstopna stran",
statusPageNothing: "Nikjer nič... Dodajte skupino ali monitor.",
"No Services": "Ni storitev",
"All Systems Operational": "Vsi sistemi delujejo",
"Partially Degraded Service": "Delno poslabšana storitev",
"Degraded Service": "Poslabšana storitev",
"Add Group": "Dodaj skupino",
"Add a monitor": "Dodaj monitor",
"Edit Status Page": "Uredi statusno stran",
"Go to Dashboard": "Pojdi na nadzorno ploščo",
"Status Page": "Statusna stran",
defaultNotificationName: "Moje {notification} Obvestilo ({number})",
here: "tukaj",
Required: "Obvezno",
telegram: "Telegram",
"Bot Token": "Robotkov žetonček",
wayToGetTelegramToken: "Lahko dobiš žeton od {0}.",
"Chat ID": "ID pogovora",
supportTelegramChatID: "Direkten pogovor pomoči / Skupina / ID kanala",
wayToGetTelegramChatID: "Id lahko dobiš, če pošlješ sporočilo robotku in odpreš ta URL, da bi videl chat_id:",
"YOUR BOT TOKEN HERE": "ROBOTKOV ŽETON TUKAJ",
chatIDNotFound: "Ne najdem Chat Id-ja; prvo pošlji sporočilo robotku",
webhook: "Webhook",
"Post URL": "Post URL",
"Content Type": "Vrsta vsebine",
webhookJsonDesc: "{0} je v redu za vsak moderen HTTP strežnik, kot recimo Express.js",
webhookFormDataDesc: "{multipart} je v redu za PHP. JSON bo moral biti razčlenjen s {decodeFunction}",
smtp: "Email (SMTP)",
secureOptionNone: "Brez / STARTTLS (25, 587)",
secureOptionTLS: "TLS (465)",
"Ignore TLS Error": "Ignoriraj TLS napako",
"From Email": "Od Email",
emailCustomSubject: "Poljubna zadeva",
"To Email": "Za Email",
smtpCC: "CC",
smtpBCC: "BCC",
discord: "Discord",
"Discord Webhook URL": "Discord Webhook URL",
wayToGetDiscordURL: "To lahko dibiš v Server Settings -> Integrations -> Create Webhook",
"Bot Display Name": "Prikazno ime robotka",
"Prefix Custom Message": "Predpona poljubnega sporočila",
"Hello @everyone is...": "Pozdravljen {'@'}everyone je...",
teams: "Microsoft Teams",
"Webhook URL": "Webhook URL",
wayToGetTeamsURL: "Izvedi kako narediš webhook URL {0}.",
signal: "Signal",
Number: "Številka",
Recipients: "Prejemniki",
needSignalAPI: "Imeti moraš signal klienta z REST API.",
wayToCheckSignalURL: "Kako se to naredi, lahko preveriš na tem URL-ju:",
signalImportant: "POMEMBNO: Ne moreš mešati skupin in številk v prejemnikih!",
gotify: "Gotify",
"Application Token": "Žeton za aplikacijo",
"Server URL": "URL Strežnika",
Priority: "Prioriteta",
slack: "Slack",
"Icon Emoji": "Emoji ikona",
"Channel Name": "Ime kanala",
"Uptime Kuma URL": "Uptime Kuma URL",
aboutWebhooks: "Več o webhook-ih: {0}",
aboutChannelName: "Vnesi ime kanala na {0} Channel Name polje, če želiš preskočiti webhook kanal. npr.: #drug-kanal",
aboutKumaURL: "Če pustite polje Uptime Kuma URL prazno, bo nastavljeno privzeto na GitHub stran projekta.",
emojiCheatSheet: "Emoji plonk listek: {0}",
"rocket.chat": "Rocket.Chat",
pushover: "Pushover",
pushy: "Pushy",
octopush: "Octopush",
promosms: "PromoSMS",
clicksendsms: "ClickSend SMS",
lunasea: "LunaSea",
apprise: "Apprise (podpira 50+ storitev za obveščevanje)",
pushbullet: "Pushbullet",
line: "Line Messenger",
mattermost: "Mattermost",
"User Key": "User Key",
Device: "Naprava",
"Message Title": "Naslov sporočila",
"Notification Sound": "Zvok obvestila",
"More info on:": "Več informacij na: {0}",
pushoverDesc1: "Prioriteta nujnosti (2) ima privzeto nastavitev 30 sekund časa med ponovni poskusi in poteče po 1 uri.",
pushoverDesc2: "Če želite pošiljati obvestila na različne naprave izpolnite polje 'Naprava'.",
"SMS Type": "Vrsta SMS-a",
octopushTypePremium: "Premium (hitro - priporočljivo za opozarjanje)",
octopushTypeLowCost: "Cenovno ugodno (počasno - včasih jih blokira operater)",
checkPrice: "preveri {0} cene:",
apiCredentials: "API poverilnice",
octopushLegacyHint: "Uporabljate legacy verzijo Octopush-a (2011-2020) ali novo verzijo?",
"Check octopush prices": "Preveri octopush cene {0}.",
octopushPhoneNumber: "Telefonska številka (npr.: +386031234567) ",
octopushSMSSender: "Ime SMS pošiljatelja: 3-11 alfanumeričnih znakov in presledki (a-zA-Z0-9)",
"LunaSea Device ID": "LunaSea Device ID",
"Apprise URL": "Apprise URL",
"Example:": "Primer: {0}",
"Read more:": "Preberi več: {0}",
"Status:": "Status: {0}",
"Read more": "Preberi več",
appriseInstalled: "Apprise je nameščen.",
appriseNotInstalled: "Apprise ni nameščen. {0}",
"Access Token": "Žeton za dostop",
"Channel access token": "Žeton za dostop do kanala",
"Line Developers Console": "Line Developers Console",
lineDevConsoleTo: "Line Developers Console - {0}",
"Basic Settings": "Osnovne nastavitve",
"User ID": "User ID",
"Messaging API": "Messaging API",
wayToGetLineChannelToken: "Prvo odpri {0}, ustvarite ponudnika in kanal (Messaging API), potem lahko žeton za dostop do kanala in ID uporabnika dobite iz zgoraj navedenih elementov menija.",
"Icon URL": "URL ikone",
aboutIconURL: "V razdelku \"URL ikone\" lahko zagotovite povezavo do slike, ki bo nadomestila privzeto sliko profila. Ne bo uporabljena, če je nastavljena ikona Emoji.",
aboutMattermostChannelName: "V razdelku \"URL ikone\" lahko zagotovite povezavo do slike, ki bo nadomestila privzeto sliko profila. Ne bo uporabljena, če je nastavljena ikona Emoji",
matrix: "Matrix",
promosmsTypeEco: "SMS ECO - poceni, vendar počasen in pogosto preobremenjen. Omejeno samo na poljske prejemnike.",
promosmsTypeFlash: "SMS FLASH - sporočilo se samodejno prikaže v napravi prejemnika. Omejeno samo na poljske prejemnike.",
promosmsTypeFull: "SMS FULL - Premium raven SMS, Uporabite lahko svoje ime pošiljatelja (najprej morate registrirati ime). Zanesljivo za opozorila.",
promosmsTypeSpeed: "SMS SPEED - Najvišja prednost v sistemu. Zelo hitro in zanesljivo, vendar drago (približno dvakratnik cene SMS FULL)..",
promosmsPhoneNumber: "Telefonska številka (za poljskega prejemnika Lahko preskočite področne oznake",
promosmsSMSSender: "Ime pošiljatelja SMS : vnaprej registrirano ime ali eno od privzetih: SMS, SMS Info, MaxSMS, INFO, SMS",
"Feishu WebHookUrl": "Feishu WebHookURL",
matrixHomeserverURL: "Homeserver URL (z http(s):// in vrata po želji)",
"Internal Room Id": "Interni ID sobe",
matrixDesc1: "Notranji ID sobe lahko poiščete v naprednem razdelku nastavitev sobe v odjemalcu Matrix. Izgledati mora kot !QMdRCpUIfLwsfjxye6:home.server",
matrixDesc2: "Zelo priporočljivo je, da ustvarite novega uporabnika in ne uporabljate svojega žetona za dostop uporabnika Matrix, saj bo omogočil popoln dostop do vašega računa in vseh sob, ki ste se jim pridružili. Namesto tega ustvarite novega uporabnika in ga povabite le v sobo, v kateri želite prejemati obvestila. Token dostopa lahko dobite tako, da zaženete {0}",
Method: "Metoda",
Body: "Telo",
Headers: "Glave",
PushUrl: "Push URL",
HeadersInvalidFormat: "Glave zahtevka niso veljavni JSON: ",
BodyInvalidFormat: "Telo zahteve ni veljaven JSON: ",
"Monitor History": "Zgodovina",
clearDataOlderThan: "Ohrani zgodovino {0} dni.",
PasswordsDoNotMatch: "Gesli se ne ujemata.",
records: "vnosi",
"One record": "En vnos",
steamApiKeyDescription: "Za spremljanje igralnega strežnika Steam potrebujete ključ spletnega vmesnika Steam. Ključ API lahko registrirate tukaj: ",
"Current User": "Trenuten uporabnik",
recent: "Nedavno",
Done: "Zaključi",
Info: "Info",
Security: "Varnost",
"Steam API Key": "Steam API Key",
"Shrink Database": "Stisni bazo",
"Pick a RR-Type...": "Izberi RR tip...",
"Pick Accepted Status Codes...": "Izbiranje sprejetih kod stanja...",
Default: "Privzeto",
"HTTP Options": "HTTP možnosti",
"Create Incident": "Ustvari incident",
Title: "Naslov",
Content: "Vsebina",
Style: "Stil",
info: "info",
warning: "opozorilo",
danger: "nevarnost",
primary: "primarno",
light: "svetlo",
dark: "temno",
Post: "Objavi",
"Please input title and content": "Vnesi naslov in vsebino",
Created: "Ustvarjeno",
"Last Updated": "Nazadnje posodobljeno",
Unpin: "Odpni",
"Switch to Light Theme": "Preklopi na svetlo temo",
"Switch to Dark Theme": "Preklopi na temno temo",
"Show Tags": "Prikaži značke",
"Hide Tags": "Skrij značke",
Description: "Opis",
"No monitors available.": "Nobenega monitorja ni na voljo.",
"Add one": "Dodaj enega",
"No Monitors": "Ni monitorjev",
"Add one": "Dodaj enega",
"Untitled Group": "Skupina brez imena",
Services: "Storitve",
Discard: "zavrzi",
Cancel: "Prekliči",
"Powered by": "Powered by",
shrinkDatabaseDescription: "Sprožitev podatkovne zbirke VACUUM za SQLite. Če je vaša zbirka podatkov ustvarjena po različici 1.10.0, je funkcija AUTO_VACUUM že omogočena in ta ukrep ni potreben.",
serwersms: "SerwerSMS.pl",
serwersmsAPIUser: "API uporabniško ime (vključno z webapi_ prefix)",
serwersmsAPIPassword: "API geslo",
serwersmsPhoneNumber: "Telefonska številka",
serwersmsSenderName: "Ime SMS pošiljatelja (registrirani prek portala za stranke)",
"stackfield": "Stackfield",
};

View File

@@ -276,7 +276,7 @@
<div class="my-3">
<label for="basicauth" class="form-label">{{ $t("Password") }}</label>
<input id="basicauth-pass" v-model="monitor.basic_auth_pass" type="password" class="form-control" :placeholder="$t('Password')">
<input id="basicauth-pass" v-model="monitor.basic_auth_pass" type="password" autocomplete="new-password" class="form-control" :placeholder="$t('Password')">
</div>
</template>
</div>