- Subject: |
+ {{ $t("Subject:") }} |
{{ formatSubject(cert.subject) }} |
- Valid To: |
+ {{ $t("Valid To:") }} |
|
- Days Remaining: |
+ {{ $t("Days Remaining:") }} |
{{ cert.daysRemaining }} |
- Issuer: |
+ {{ $t("Issuer:") }} |
{{ formatSubject(cert.issuer) }} |
- Fingerprint: |
+ {{ $t("Fingerprint:") }} |
{{ cert.fingerprint }} |
diff --git a/src/components/Confirm.vue b/src/components/Confirm.vue
index 391155f43..1bfe7fe4a 100644
--- a/src/components/Confirm.vue
+++ b/src/components/Confirm.vue
@@ -25,7 +25,7 @@
diff --git a/src/components/CopyableInput.vue b/src/components/CopyableInput.vue
index 1fe898028..1bccfa2ce 100644
--- a/src/components/CopyableInput.vue
+++ b/src/components/CopyableInput.vue
@@ -57,6 +57,7 @@ export default {
default: undefined,
},
},
+ emits: [ "update:modelValue" ],
data() {
return {
visibility: "password",
diff --git a/src/components/CountUp.vue b/src/components/CountUp.vue
index b321fde19..41edc4a0e 100644
--- a/src/components/CountUp.vue
+++ b/src/components/CountUp.vue
@@ -5,12 +5,12 @@
diff --git a/src/components/Datetime.vue b/src/components/Datetime.vue
index 1df982cb1..8662e6d8a 100644
--- a/src/components/Datetime.vue
+++ b/src/components/Datetime.vue
@@ -4,12 +4,12 @@
diff --git a/src/components/HeartbeatBar.vue b/src/components/HeartbeatBar.vue
index be0b122ed..245a8512c 100644
--- a/src/components/HeartbeatBar.vue
+++ b/src/components/HeartbeatBar.vue
@@ -38,7 +38,7 @@ export default {
beatMargin: 4,
move: false,
maxBeat: -1,
- }
+ };
},
computed: {
@@ -69,12 +69,12 @@ export default {
if (start < 0) {
// Add empty placeholder
for (let i = start; i < 0; i++) {
- placeholders.push(0)
+ placeholders.push(0);
}
start = 0;
}
- return placeholders.concat(this.beatList.slice(start))
+ return placeholders.concat(this.beatList.slice(start));
},
wrapStyle() {
@@ -84,7 +84,7 @@ export default {
return {
padding: `${topBottom}px ${leftRight}px`,
width: "100%",
- }
+ };
},
barStyle() {
@@ -94,12 +94,12 @@ export default {
return {
transition: "all ease-in-out 0.25s",
transform: `translateX(${width}px)`,
- }
+ };
}
return {
transform: "translateX(0)",
- }
+ };
},
@@ -109,7 +109,7 @@ export default {
height: this.beatHeight + "px",
margin: this.beatMargin + "px",
"--hover-scale": this.hoverScale,
- }
+ };
},
},
@@ -120,7 +120,7 @@ export default {
setTimeout(() => {
this.move = false;
- }, 300)
+ }, 300);
},
deep: true,
},
@@ -162,15 +162,15 @@ export default {
methods: {
resize() {
if (this.$refs.wrap) {
- this.maxBeat = Math.floor(this.$refs.wrap.clientWidth / (this.beatWidth + this.beatMargin * 2))
+ this.maxBeat = Math.floor(this.$refs.wrap.clientWidth / (this.beatWidth + this.beatMargin * 2));
}
},
getBeatTitle(beat) {
- return `${this.$root.datetime(beat.time)}` + ((beat.msg) ? ` - ${beat.msg}` : ``);
+ return `${this.$root.datetime(beat.time)}` + ((beat.msg) ? ` - ${beat.msg}` : "");
}
},
-}
+};
diff --git a/src/components/NotificationDialog.vue b/src/components/NotificationDialog.vue
index 659f57267..7a1f1a100 100644
--- a/src/components/NotificationDialog.vue
+++ b/src/components/NotificationDialog.vue
@@ -69,7 +69,6 @@
@@ -278,7 +286,7 @@ export default {
.dropdown-item {
border-radius: 0.3rem;
- padding: 2px 16px 4px 16px;
+ padding: 2px 16px 4px;
.dark & {
background: $dark-bg;
@@ -286,6 +294,7 @@ export default {
.dark &:hover {
background: $dark-font-color;
+ color: $dark-font-color2;
}
}
diff --git a/src/components/ProxyDialog.vue b/src/components/ProxyDialog.vue
new file mode 100644
index 000000000..3070925c1
--- /dev/null
+++ b/src/components/ProxyDialog.vue
@@ -0,0 +1,206 @@
+
+
+
+
+ {{ $t("deleteProxyMsg") }}
+
+
+
+
+
+
diff --git a/src/components/PublicGroupList.vue b/src/components/PublicGroupList.vue
index f30edcef5..df94eec98 100644
--- a/src/components/PublicGroupList.vue
+++ b/src/components/PublicGroupList.vue
@@ -41,7 +41,7 @@
{{ monitor.element.name }}
-
@@ -76,6 +76,9 @@ export default {
type: Boolean,
required: true,
},
+ showTags: {
+ type: Boolean,
+ }
},
data() {
return {
@@ -142,7 +145,7 @@ export default {
.mobile {
.item {
- padding: 13px 0 10px 0;
+ padding: 13px 0 10px;
}
}
diff --git a/src/components/Tag.vue b/src/components/Tag.vue
index 434358aa8..364a05c66 100644
--- a/src/components/Tag.vue
+++ b/src/components/Tag.vue
@@ -41,7 +41,7 @@ export default {
}
}
}
-}
+};
diff --git a/src/components/settings/MonitorHistory.vue b/src/components/settings/MonitorHistory.vue
index 9b5b8bd78..0092727f4 100644
--- a/src/components/settings/MonitorHistory.vue
+++ b/src/components/settings/MonitorHistory.vue
@@ -52,7 +52,7 @@
-
-
diff --git a/src/components/settings/Proxies.vue b/src/components/settings/Proxies.vue
new file mode 100644
index 000000000..4608f3aa4
--- /dev/null
+++ b/src/components/settings/Proxies.vue
@@ -0,0 +1,48 @@
+
+
+
+
+
+ {{ $t("Not available, please setup.") }}
+
+
+ {{ $t("proxyDescription") }}
+
+
+
+ -
+ {{ proxy.host }}:{{ proxy.port }} ({{ proxy.protocol }})
+ {{ $t("Default") }}
+ {{ $t("Edit") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/settings/ReverseProxy.vue b/src/components/settings/ReverseProxy.vue
new file mode 100644
index 000000000..97db4d597
--- /dev/null
+++ b/src/components/settings/ReverseProxy.vue
@@ -0,0 +1,144 @@
+
+
+
Cloudflare Tunnel
+
+
+
+ cloudflared:
+ {{ $t("Installed") }}
+ {{ $t("Not installed") }}
+
+
+
+ {{ $t("Status") }}:
+ {{ $t("Running") }}
+ {{ $t("Not running") }}
+
+
+
+ {{ message }}
+
+
+
+ {{ $t("Message:") }}
+
+
+
+
+ {{ $t("cloudflareWebsite") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.") }}
+
+
+
+
+
+
+
+
+
+
{{ $t("Other Software") }}
+
+
+
+
+
+
+
diff --git a/src/components/settings/Security.vue b/src/components/settings/Security.vue
index 94c6b5a67..87bb745a1 100644
--- a/src/components/settings/Security.vue
+++ b/src/components/settings/Security.vue
@@ -4,7 +4,7 @@
- {{ $t("Current User") }}: {{ username }}
+ {{ $t("Current User") }}: {{ $root.username }}
@@ -192,6 +192,12 @@
Пожалуйста, используйте с осторожностью.
+
+ Ви впевнені, що бажаєте вимкнути авторизацію?
+ Це підходить для тих, у кого встановлена інша авторизація пееред відкриттям Uptime Kuma, наприклад Cloudflare Access.
+ Будь ласка, використовуйте з обережністю.
+
+
آیا مطمئن هستید که میخواهید احراز هویت را غیر فعال کنید?
این ویژگی برای کسانی است که لایه امنیتی شخص ثالث دیگر بر روی این آدرس فعال کردهاند، مانند Cloudflare Access.
@@ -216,12 +222,37 @@
Vennligst vær forsiktig.
+
+ Opravdu chcete deaktivovat autentifikaci?
+ Tato možnost je určena pro případy, kdy máte autentifikaci zajištěnou třetí stranou ještě před přístupem do Uptime Kuma, například prostřednictvím Cloudflare Access.
+ Používejte ji prosím s rozmyslem.
+
+
+
+ Bạn có muốn TẮT XÁC THỰC không?
+ Điều này rất nguy hiểmBẤT KỲ AI cũng có thể truy cập và cướp quyền điều khiển.
+ Vui lòng cẩn thận.
+
+
- Are you sure want to disable auth?
- It is for someone who have 3rd-party auth in front of Uptime Kuma such as Cloudflare Access.
- Please use it carefully.
+ Are you sure want to disable authentication?
+ It is designed for scenarios where you intend to implement third-party authentication in front of Uptime Kuma such as Cloudflare Access, Authelia or other authentication mechanisms.
+ Please use this option carefully!
+
+
+
+
+
@@ -238,7 +269,6 @@ export default {
data() {
return {
- username: "",
invalidPassword: false,
password: {
currentPassword: "",
@@ -266,10 +296,6 @@ export default {
},
},
- mounted() {
- this.loadUsername();
- },
-
methods: {
savePassword() {
if (this.password.newPassword !== this.password.repeatNewPassword) {
@@ -288,17 +314,16 @@ export default {
}
},
- loadUsername() {
- const jwtPayload = this.$root.getJWTPayload();
-
- if (jwtPayload) {
- this.username = jwtPayload.username;
- }
- },
-
disableAuth() {
this.settings.disableAuth = true;
- this.saveSettings();
+
+ // Need current password to disable auth
+ // Set it to empty if done
+ this.saveSettings(() => {
+ this.password.currentPassword = "";
+ this.$root.username = null;
+ this.$root.socket.token = "autoLogin";
+ }, this.password.currentPassword);
},
enableAuth() {
@@ -319,7 +344,7 @@ export default {
diff --git a/src/pages/Dashboard.vue b/src/pages/Dashboard.vue
index 1cf237ce7..38e5b9be1 100644
--- a/src/pages/Dashboard.vue
+++ b/src/pages/Dashboard.vue
@@ -25,9 +25,9 @@ export default {
MonitorList,
},
data() {
- return {}
+ return {};
},
-}
+};
diff --git a/src/pages/NotFound.vue b/src/pages/NotFound.vue
new file mode 100644
index 000000000..16ba8a558
--- /dev/null
+++ b/src/pages/NotFound.vue
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+ 🐻 {{ $t("Page Not Found") }}
+
+
+
+ Most likely causes:
+
+ - The resource is no longer available.
+ - There might be a typing error in the address.
+
+
+ What you can try:
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue
index 58162f571..11d3a1be3 100644
--- a/src/pages/Settings.vue
+++ b/src/pages/Settings.vue
@@ -6,7 +6,7 @@