gitextract_wdewrnrd/ ├── .dockerignore ├── .editorconfig ├── .eslintrc.js ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── ask_for_help.yml │ │ ├── bug_report.yml │ │ ├── config.yml │ │ ├── feature_request.yml │ │ └── security_issue.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── REVIEW_GUIDELINES.md │ ├── config/ │ │ └── exclude.txt │ ├── copilot-instructions.md │ ├── dependabot.yml │ └── workflows/ │ ├── auto-test.yml │ ├── autofix.yml │ ├── build-docker-base.yml │ ├── build-docker-push.yml │ ├── close-incorrect-issue.yml │ ├── codeql-analysis.yml │ ├── conflict-labeler.yml │ ├── mark-as-draft-on-requesting-changes.yml │ ├── new-contributor-pr.yml │ ├── npm-update.yml │ ├── pr-description-check.yml │ ├── pr-title.yml │ ├── prevent-file-change.yml │ ├── release-beta.yml │ ├── release-final.yml │ ├── release-nightly.yml │ ├── stale-bot.yml │ └── validate.yml ├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc.js ├── .stylelintrc ├── CNAME ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── SECURITY.md ├── compose.yaml ├── config/ │ ├── playwright.config.js │ └── vite.config.js ├── db/ │ ├── knex_init_db.js │ ├── knex_migrations/ │ │ ├── 2023-08-16-0000-create-uptime.js │ │ ├── 2023-08-18-0301-heartbeat.js │ │ ├── 2023-09-29-0000-heartbeat-retires.js │ │ ├── 2023-10-08-0000-mqtt-query.js │ │ ├── 2023-10-11-1915-push-token-to-32.js │ │ ├── 2023-10-16-0000-create-remote-browsers.js │ │ ├── 2023-12-20-0000-alter-status-page.js │ │ ├── 2023-12-21-0000-stat-ping-min-max.js │ │ ├── 2023-12-22-0000-hourly-uptime.js │ │ ├── 2024-01-22-0000-stats-extras.js │ │ ├── 2024-04-26-0000-snmp-monitor.js │ │ ├── 2024-08-24-000-add-cache-bust.js │ │ ├── 2024-08-24-0000-conditions.js │ │ ├── 2024-10-1315-rabbitmq-monitor.js │ │ ├── 2024-10-31-0000-fix-snmp-monitor.js │ │ ├── 2024-11-27-1927-fix-info-json-data-type.js │ │ ├── 2025-01-01-0000-add-smtp.js │ │ ├── 2025-02-15-2312-add-wstest.js │ │ ├── 2025-02-17-2142-generalize-analytics.js │ │ ├── 2025-03-04-0000-ping-advanced-options.js │ │ ├── 2025-03-25-0127-fix-5721.js │ │ ├── 2025-05-09-0000-add-custom-url.js │ │ ├── 2025-06-03-0000-add-ip-family.js │ │ ├── 2025-06-11-0000-add-manual-monitor.js │ │ ├── 2025-06-13-0000-maintenance-add-last-start.js │ │ ├── 2025-06-15-0001-manual-monitor-fix.js │ │ ├── 2025-06-24-0000-add-audience-to-oauth.js │ │ ├── 2025-07-17-0000-mqtt-websocket-path.js │ │ ├── 2025-09-02-0000-add-domain-expiry.js │ │ ├── 2025-10-14-0000-add-ip-family-fix.js │ │ ├── 2025-10-15-0000-stat-table-fix.js │ │ ├── 2025-10-15-0001-add-monitor-response-config.js │ │ ├── 2025-10-15-0002-add-response-to-heartbeat.js │ │ ├── 2025-10-24-0000-show-only-last-heartbeat.js │ │ ├── 2025-12-09-0000-add-system-service-monitor.js │ │ ├── 2025-12-17-0000-add-globalping-monitor.js │ │ ├── 2025-12-22-0121-optimize-important-indexes.js │ │ ├── 2025-12-29-0000-remove-line-notify.js │ │ ├── 2025-12-31-2143-add-snmp-v3-username.js │ │ ├── 2026-01-02-0551-dns-last-result-to-text.js │ │ ├── 2026-01-02-0713-gamedig-v4-to-v5.js │ │ ├── 2026-01-05-0000-add-rss-title.js │ │ ├── 2026-01-05-0000-add-tls-monitor.js │ │ ├── 2026-01-06-0000-fix-domain-expiry-column-type.js │ │ ├── 2026-01-10-0000-convert-float-precision.js │ │ ├── 2026-01-15-0000-add-json-query-retry-only-status-code.js │ │ ├── 2026-01-16-0000-add-screenshot-delay.js │ │ ├── 2026-02-07-0000-disable-domain-expiry-unsupported-tlds.js │ │ └── README.md │ ├── old_migrations/ │ │ ├── README.md │ │ ├── patch-2fa-invalidate-used-token.sql │ │ ├── patch-2fa.sql │ │ ├── patch-add-certificate-expiry-status-page.sql │ │ ├── patch-add-clickable-status-page-link.sql │ │ ├── patch-add-description-monitor.sql │ │ ├── patch-add-docker-columns.sql │ │ ├── patch-add-gamedig-given-port.sql │ │ ├── patch-add-gamedig-monitor.sql │ │ ├── patch-add-google-analytics-status-page-tag.sql │ │ ├── patch-add-invert-keyword.sql │ │ ├── patch-add-other-auth.sql │ │ ├── patch-add-parent-monitor.sql │ │ ├── patch-add-radius-monitor.sql │ │ ├── patch-add-retry-interval-monitor.sql │ │ ├── patch-add-sqlserver-monitor.sql │ │ ├── patch-add-timeout-monitor.sql │ │ ├── patch-added-json-query.sql │ │ ├── patch-added-kafka-producer.sql │ │ ├── patch-added-mqtt-monitor.sql │ │ ├── patch-api-key-table.sql │ │ ├── patch-fix-kafka-producer-booleans.sql │ │ ├── patch-group-table.sql │ │ ├── patch-grpc-monitor.sql │ │ ├── patch-http-body-encoding.sql │ │ ├── patch-http-monitor-method-body-and-headers.sql │ │ ├── patch-improve-performance.sql │ │ ├── patch-incident-table.sql │ │ ├── patch-maintenance-cron.sql │ │ ├── patch-maintenance-table2.sql │ │ ├── patch-monitor-add-resend-interval.sql │ │ ├── patch-monitor-basic-auth.sql │ │ ├── patch-monitor-expiry-notification.sql │ │ ├── patch-monitor-oauth-cc.sql │ │ ├── patch-monitor-push_token.sql │ │ ├── patch-monitor-tls-info-add-fk.sql │ │ ├── patch-monitor-tls.sql │ │ ├── patch-notification-config.sql │ │ ├── patch-notification_sent_history.sql │ │ ├── patch-ping-packet-size.sql │ │ ├── patch-proxy.sql │ │ ├── patch-setting-value-type.sql │ │ ├── patch-status-page-footer-css.sql │ │ ├── patch-status-page.sql │ │ ├── patch-timeout.sql │ │ ├── patch1.sql │ │ ├── patch10.sql │ │ ├── patch2.sql │ │ ├── patch3.sql │ │ ├── patch4.sql │ │ ├── patch5.sql │ │ ├── patch6.sql │ │ ├── patch7.sql │ │ ├── patch8.sql │ │ └── patch9.sql │ └── patch-monitor-tls-info-add-fk.sql ├── docker/ │ ├── builder-go.dockerfile │ ├── debian-base.dockerfile │ ├── docker-compose-dev.yml │ ├── dockerfile │ └── etc/ │ ├── nscd.conf │ └── sudoers ├── ecosystem.config.js ├── extra/ │ ├── beta/ │ │ └── update-version.mjs │ ├── build-healthcheck.js │ ├── check-knex-filenames.mjs │ ├── check-lang-json.js │ ├── check-package-json.mjs │ ├── checkout-pr.mjs │ ├── close-incorrect-issue.js │ ├── compile-install-script.ps1 │ ├── deploy-demo-server.js │ ├── download-apprise.mjs │ ├── download-dist.js │ ├── generate-changelog.mjs │ ├── healthcheck.go │ ├── healthcheck.js │ ├── kuma-pr/ │ │ ├── index.mjs │ │ ├── package.json │ │ └── pr-lib.mjs │ ├── mark-as-nightly.js │ ├── push-examples/ │ │ ├── .gitignore │ │ ├── bash-curl/ │ │ │ └── index.sh │ │ ├── csharp/ │ │ │ └── index.cs │ │ ├── docker/ │ │ │ └── index.sh │ │ ├── go/ │ │ │ └── index.go │ │ ├── java/ │ │ │ └── index.java │ │ ├── javascript-fetch/ │ │ │ ├── index.js │ │ │ └── package.json │ │ ├── php/ │ │ │ └── index.php │ │ ├── powershell/ │ │ │ └── index.ps1 │ │ ├── python/ │ │ │ └── index.py │ │ └── typescript-fetch/ │ │ ├── README.md │ │ ├── index.ts │ │ └── package.json │ ├── rdap-dns.json │ ├── rebase-pr.js │ ├── release/ │ │ ├── beta.mjs │ │ ├── final.mjs │ │ ├── lib.mjs │ │ ├── nightly.mjs │ │ ├── upload-artifacts-beta.mjs │ │ └── upload-artifacts.mjs │ ├── remove-2fa.js │ ├── remove-empty-lang-keys.js │ ├── remove-playwright-test-data.js │ ├── reset-migrate-aggregate-table-state.js │ ├── reset-password.js │ ├── simple-dns-server.js │ ├── simple-mqtt-server.js │ ├── update-version.mjs │ └── uptime-kuma-push/ │ ├── .gitignore │ ├── Dockerfile │ ├── build.js │ ├── package.json │ └── uptime-kuma-push.go ├── index.html ├── package.json ├── public/ │ ├── manifest.json │ └── serviceWorker.js ├── server/ │ ├── 2fa.js │ ├── analytics/ │ │ ├── analytics.js │ │ ├── google-analytics.js │ │ ├── matomo-analytics.js │ │ ├── plausible-analytics.js │ │ └── umami-analytics.js │ ├── auth.js │ ├── check-version.js │ ├── client.js │ ├── config.js │ ├── database.js │ ├── docker.js │ ├── embedded-mariadb.js │ ├── image-data-uri.js │ ├── jobs/ │ │ ├── clear-old-data.js │ │ └── incremental-vacuum.js │ ├── jobs.js │ ├── model/ │ │ ├── api_key.js │ │ ├── docker_host.js │ │ ├── domain_expiry.js │ │ ├── group.js │ │ ├── heartbeat.js │ │ ├── incident.js │ │ ├── maintenance.js │ │ ├── monitor.js │ │ ├── proxy.js │ │ ├── remote_browser.js │ │ ├── status_page.js │ │ ├── tag.js │ │ └── user.js │ ├── modules/ │ │ ├── apicache/ │ │ │ ├── apicache.js │ │ │ ├── index.js │ │ │ └── memory-cache.js │ │ ├── axios-ntlm/ │ │ │ ├── LICENSE │ │ │ └── lib/ │ │ │ ├── flags.js │ │ │ ├── hash.js │ │ │ ├── ntlm.js │ │ │ └── ntlmClient.js │ │ └── dayjs/ │ │ └── plugin/ │ │ ├── timezone.d.ts │ │ └── timezone.js │ ├── monitor-conditions/ │ │ ├── evaluator.js │ │ ├── expression.js │ │ ├── operators.js │ │ └── variables.js │ ├── monitor-types/ │ │ ├── dns.js │ │ ├── gamedig.js │ │ ├── globalping.js │ │ ├── group.js │ │ ├── grpc.js │ │ ├── manual.js │ │ ├── mongodb.js │ │ ├── monitor-type.js │ │ ├── mqtt.js │ │ ├── mssql.js │ │ ├── mysql.js │ │ ├── oracledb.js │ │ ├── postgres.js │ │ ├── rabbitmq.js │ │ ├── real-browser-monitor-type.js │ │ ├── redis.js │ │ ├── sip-options.js │ │ ├── smtp.js │ │ ├── snmp.js │ │ ├── system-service.js │ │ ├── tailscale-ping.js │ │ ├── tcp.js │ │ └── websocket-upgrade.js │ ├── notification-providers/ │ │ ├── 360messenger.js │ │ ├── 46elks.js │ │ ├── HaloPSA.js │ │ ├── Webpush.js │ │ ├── alerta.js │ │ ├── alertnow.js │ │ ├── aliyun-sms.js │ │ ├── apprise.js │ │ ├── bale.js │ │ ├── bark.js │ │ ├── bitrix24.js │ │ ├── brevo.js │ │ ├── call-me-bot.js │ │ ├── cellsynt.js │ │ ├── clicksendsms.js │ │ ├── dingding.js │ │ ├── discord.js │ │ ├── evolution.js │ │ ├── feishu.js │ │ ├── flashduty.js │ │ ├── fluxer.js │ │ ├── freemobile.js │ │ ├── goalert.js │ │ ├── google-chat.js │ │ ├── google-sheets.js │ │ ├── gorush.js │ │ ├── gotify.js │ │ ├── grafana-oncall.js │ │ ├── gtx-messaging.js │ │ ├── heii-oncall.js │ │ ├── home-assistant.js │ │ ├── jira-service-management.js │ │ ├── keep.js │ │ ├── kook.js │ │ ├── line.js │ │ ├── lunasea.js │ │ ├── matrix.js │ │ ├── mattermost.js │ │ ├── max.js │ │ ├── nextcloudtalk.js │ │ ├── nostr.js │ │ ├── notifery.js │ │ ├── notification-provider.js │ │ ├── ntfy.js │ │ ├── octopush.js │ │ ├── onebot.js │ │ ├── onechat.js │ │ ├── onesender.js │ │ ├── opsgenie.js │ │ ├── pagerduty.js │ │ ├── pagertree.js │ │ ├── promosms.js │ │ ├── pumble.js │ │ ├── pushbullet.js │ │ ├── pushdeer.js │ │ ├── pushover.js │ │ ├── pushplus.js │ │ ├── pushy.js │ │ ├── resend.js │ │ ├── rocket-chat.js │ │ ├── send-grid.js │ │ ├── serverchan.js │ │ ├── serwersms.js │ │ ├── sevenio.js │ │ ├── signal.js │ │ ├── signl4.js │ │ ├── slack.js │ │ ├── sms-planet.js │ │ ├── smsc.js │ │ ├── smseagle.js │ │ ├── smsir.js │ │ ├── smsmanager.js │ │ ├── smspartner.js │ │ ├── smtp.js │ │ ├── splunk.js │ │ ├── spugpush.js │ │ ├── squadcast.js │ │ ├── stackfield.js │ │ ├── teams.js │ │ ├── techulus-push.js │ │ ├── telegram.js │ │ ├── teltonika.js │ │ ├── threema.js │ │ ├── twilio.js │ │ ├── waha.js │ │ ├── webhook.js │ │ ├── wecom.js │ │ ├── whapi.js │ │ ├── wpush.js │ │ ├── yzj.js │ │ └── zoho-cliq.js │ ├── notification.js │ ├── password-hash.js │ ├── prometheus.js │ ├── proxy.js │ ├── radius-client.js │ ├── rate-limiter.js │ ├── remote-browser.js │ ├── routers/ │ │ ├── api-router.js │ │ └── status-page-router.js │ ├── server.js │ ├── settings.js │ ├── setup-database.js │ ├── socket-handlers/ │ │ ├── api-key-socket-handler.js │ │ ├── chart-socket-handler.js │ │ ├── cloudflared-socket-handler.js │ │ ├── database-socket-handler.js │ │ ├── docker-socket-handler.js │ │ ├── general-socket-handler.js │ │ ├── maintenance-socket-handler.js │ │ ├── proxy-socket-handler.js │ │ ├── remote-browser-socket-handler.js │ │ └── status-page-socket-handler.js │ ├── translatable-error.js │ ├── uptime-calculator.js │ ├── uptime-kuma-server.js │ ├── util-server.js │ └── utils/ │ ├── array-with-key.js │ ├── knex/ │ │ └── lib/ │ │ └── dialects/ │ │ └── mysql2/ │ │ └── schema/ │ │ └── mysql2-columncompiler.js │ ├── limit-queue.js │ └── simple-migration-server.js ├── src/ │ ├── App.vue │ ├── assets/ │ │ ├── app.scss │ │ ├── localization.scss │ │ ├── multiselect.scss │ │ ├── vars.scss │ │ └── vue-datepicker.scss │ ├── components/ │ │ ├── APIKeyDialog.vue │ │ ├── ActionInput.vue │ │ ├── ActionSelect.vue │ │ ├── BadgeLinkGeneratorDialog.vue │ │ ├── CertificateInfo.vue │ │ ├── CertificateInfoRow.vue │ │ ├── Confirm.vue │ │ ├── CopyableInput.vue │ │ ├── CountUp.vue │ │ ├── CreateGroupDialog.vue │ │ ├── Datetime.vue │ │ ├── DockerHostDialog.vue │ │ ├── EditMonitorCondition.vue │ │ ├── EditMonitorConditionGroup.vue │ │ ├── EditMonitorConditions.vue │ │ ├── GroupSortDropdown.vue │ │ ├── HeartbeatBar.vue │ │ ├── HiddenInput.vue │ │ ├── IncidentEditForm.vue │ │ ├── IncidentHistory.vue │ │ ├── IncidentManageModal.vue │ │ ├── Login.vue │ │ ├── MaintenanceTime.vue │ │ ├── MonitorList.vue │ │ ├── MonitorListFilter.vue │ │ ├── MonitorListFilterDropdown.vue │ │ ├── MonitorListItem.vue │ │ ├── MonitorSettingDialog.vue │ │ ├── NotificationDialog.vue │ │ ├── PingChart.vue │ │ ├── ProxyDialog.vue │ │ ├── PublicGroupList.vue │ │ ├── RemoteBrowserDialog.vue │ │ ├── ScreenshotDialog.vue │ │ ├── Status.vue │ │ ├── Tag.vue │ │ ├── TagEditDialog.vue │ │ ├── TagsManager.vue │ │ ├── TemplatedInput.vue │ │ ├── TemplatedTextarea.vue │ │ ├── ToggleSection.vue │ │ ├── Tooltip.vue │ │ ├── TwoFADialog.vue │ │ ├── Uptime.vue │ │ ├── notifications/ │ │ │ ├── 360messenger.vue │ │ │ ├── 46elks.vue │ │ │ ├── AlertNow.vue │ │ │ ├── Alerta.vue │ │ │ ├── AliyunSms.vue │ │ │ ├── Apprise.vue │ │ │ ├── Bale.vue │ │ │ ├── Bark.vue │ │ │ ├── Bitrix24.vue │ │ │ ├── Brevo.vue │ │ │ ├── CallMeBot.vue │ │ │ ├── Cellsynt.vue │ │ │ ├── ClickSendSMS.vue │ │ │ ├── DingDing.vue │ │ │ ├── Discord.vue │ │ │ ├── Evolution.vue │ │ │ ├── Feishu.vue │ │ │ ├── FlashDuty.vue │ │ │ ├── Fluxer.vue │ │ │ ├── FreeMobile.vue │ │ │ ├── GoAlert.vue │ │ │ ├── GoogleChat.vue │ │ │ ├── GoogleSheets.vue │ │ │ ├── Gorush.vue │ │ │ ├── Gotify.vue │ │ │ ├── GrafanaOncall.vue │ │ │ ├── GtxMessaging.vue │ │ │ ├── HaloPSA.vue │ │ │ ├── HeiiOnCall.vue │ │ │ ├── HomeAssistant.vue │ │ │ ├── JiraServiceManagement.vue │ │ │ ├── Keep.vue │ │ │ ├── Kook.vue │ │ │ ├── Line.vue │ │ │ ├── LunaSea.vue │ │ │ ├── Matrix.vue │ │ │ ├── Mattermost.vue │ │ │ ├── Max.vue │ │ │ ├── NextcloudTalk.vue │ │ │ ├── Nostr.vue │ │ │ ├── Notifery.vue │ │ │ ├── Ntfy.vue │ │ │ ├── Octopush.vue │ │ │ ├── OneBot.vue │ │ │ ├── OneChat.vue │ │ │ ├── Onesender.vue │ │ │ ├── Opsgenie.vue │ │ │ ├── PagerDuty.vue │ │ │ ├── PagerTree.vue │ │ │ ├── PromoSMS.vue │ │ │ ├── Pumble.vue │ │ │ ├── PushDeer.vue │ │ │ ├── PushPlus.vue │ │ │ ├── Pushbullet.vue │ │ │ ├── Pushover.vue │ │ │ ├── Pushy.vue │ │ │ ├── Resend.vue │ │ │ ├── RocketChat.vue │ │ │ ├── SIGNL4.vue │ │ │ ├── SMSC.vue │ │ │ ├── SMSEagle.vue │ │ │ ├── SMSIR.vue │ │ │ ├── SMSManager.vue │ │ │ ├── SMSPartner.vue │ │ │ ├── SMSPlanet.vue │ │ │ ├── SMTP.vue │ │ │ ├── SendGrid.vue │ │ │ ├── ServerChan.vue │ │ │ ├── SerwerSMS.vue │ │ │ ├── SevenIO.vue │ │ │ ├── Signal.vue │ │ │ ├── Slack.vue │ │ │ ├── Splunk.vue │ │ │ ├── SpugPush.vue │ │ │ ├── Squadcast.vue │ │ │ ├── Stackfield.vue │ │ │ ├── Teams.vue │ │ │ ├── TechulusPush.vue │ │ │ ├── Telegram.vue │ │ │ ├── Teltonika.vue │ │ │ ├── Threema.vue │ │ │ ├── Twilio.vue │ │ │ ├── WAHA.vue │ │ │ ├── WPush.vue │ │ │ ├── WeCom.vue │ │ │ ├── Webhook.vue │ │ │ ├── Webpush.vue │ │ │ ├── Whapi.vue │ │ │ ├── YZJ.vue │ │ │ ├── ZohoCliq.vue │ │ │ └── index.js │ │ └── settings/ │ │ ├── APIKeys.vue │ │ ├── About.vue │ │ ├── Appearance.vue │ │ ├── Docker.vue │ │ ├── General.vue │ │ ├── MonitorHistory.vue │ │ ├── Notifications.vue │ │ ├── Proxies.vue │ │ ├── RemoteBrowsers.vue │ │ ├── ReverseProxy.vue │ │ ├── Security.vue │ │ └── Tags.vue │ ├── i18n.js │ ├── icon.js │ ├── lang/ │ │ ├── README.md │ │ ├── ab.json │ │ ├── af.json │ │ ├── ang.json │ │ ├── ar-SY.json │ │ ├── ar.json │ │ ├── bar.json │ │ ├── be.json │ │ ├── bg-BG.json │ │ ├── bn.json │ │ ├── ca.json │ │ ├── ca@valencia.json │ │ ├── ckb.json │ │ ├── cs-CZ.json │ │ ├── da-DK.json │ │ ├── de-CH.json │ │ ├── de-DE.json │ │ ├── el-GR.json │ │ ├── en.json │ │ ├── en_GB.json │ │ ├── enm.json │ │ ├── es-ES.json │ │ ├── et-EE.json │ │ ├── eu.json │ │ ├── fa.json │ │ ├── fi.json │ │ ├── fr-FR.json │ │ ├── ga.json │ │ ├── gl.json │ │ ├── he-IL.json │ │ ├── he.json │ │ ├── hi.json │ │ ├── hr-HR.json │ │ ├── hu.json │ │ ├── id-ID.json │ │ ├── it-IT.json │ │ ├── ja.json │ │ ├── ka.json │ │ ├── ko-KR.json │ │ ├── lt.json │ │ ├── lv.json │ │ ├── lzh.json │ │ ├── mk.json │ │ ├── ml.json │ │ ├── ms.json │ │ ├── my.json │ │ ├── nb-NO.json │ │ ├── ne.json │ │ ├── nl-NL.json │ │ ├── pa.json │ │ ├── pa_PK.json │ │ ├── pl.json │ │ ├── pt-BR.json │ │ ├── pt-PT.json │ │ ├── pt.json │ │ ├── ro.json │ │ ├── ru-RU.json │ │ ├── sk.json │ │ ├── sl-SI.json │ │ ├── sq.json │ │ ├── sr-latn.json │ │ ├── sr.json │ │ ├── sv-SE.json │ │ ├── te.json │ │ ├── th-TH.json │ │ ├── tr-TR.json │ │ ├── ug.json │ │ ├── uk-UA.json │ │ ├── ur.json │ │ ├── uz.json │ │ ├── vi-VN.json │ │ ├── vls.json │ │ ├── xh.json │ │ ├── yue.json │ │ ├── zh-CN.json │ │ ├── zh-HK.json │ │ ├── zh-TW.json │ │ └── zu.json │ ├── layouts/ │ │ ├── EmptyLayout.vue │ │ └── Layout.vue │ ├── main.js │ ├── mixins/ │ │ ├── datetime.js │ │ ├── lang.js │ │ ├── mobile.js │ │ ├── public.js │ │ ├── socket.js │ │ └── theme.js │ ├── modules/ │ │ └── dayjs/ │ │ ├── constant.js │ │ └── plugin/ │ │ └── timezone/ │ │ ├── index.d.ts │ │ └── index.js │ ├── pages/ │ │ ├── AddStatusPage.vue │ │ ├── Dashboard.vue │ │ ├── DashboardHome.vue │ │ ├── Details.vue │ │ ├── EditMaintenance.vue │ │ ├── EditMonitor.vue │ │ ├── Entry.vue │ │ ├── List.vue │ │ ├── ManageMaintenance.vue │ │ ├── ManageStatusPage.vue │ │ ├── NotFound.vue │ │ ├── Settings.vue │ │ ├── Setup.vue │ │ ├── SetupDatabase.vue │ │ └── StatusPage.vue │ ├── router.js │ ├── util-frontend.js │ ├── util.js │ └── util.ts ├── test/ │ ├── backend-test/ │ │ ├── README.md │ │ ├── check-translations.test.js │ │ ├── monitor-conditions/ │ │ │ ├── test-evaluator.js │ │ │ ├── test-expressions.js │ │ │ └── test-operators.js │ │ ├── monitors/ │ │ │ ├── test-gamedig.js │ │ │ ├── test-grpc.js │ │ │ ├── test-mqtt.js │ │ │ ├── test-mssql.js │ │ │ ├── test-mysql.js │ │ │ ├── test-oracledb.js │ │ │ ├── test-postgres.js │ │ │ ├── test-rabbitmq.js │ │ │ ├── test-tcp.js │ │ │ └── test-websocket.js │ │ ├── notification-providers/ │ │ │ ├── mock-webhook.js │ │ │ ├── test-notification-provider.js │ │ │ └── test-ntlm.js │ │ ├── test-cert-hostname-match.js │ │ ├── test-domain.js │ │ ├── test-globalping.js │ │ ├── test-migration.js │ │ ├── test-monitor-response.js │ │ ├── test-ping-chart.js │ │ ├── test-snmp.js │ │ ├── test-status-page.js │ │ ├── test-system-service.js │ │ ├── test-uptime-calculator.js │ │ ├── test-util-server.js │ │ └── test-util.js │ ├── e2e/ │ │ ├── specs/ │ │ │ ├── domain-expiry-notification.spec.js │ │ │ ├── example.spec.js │ │ │ ├── fridendly-name.spec.js │ │ │ ├── incident-history.spec.js │ │ │ ├── monitor-form.spec.js │ │ │ ├── setup-process.once.js │ │ │ └── status-page.spec.js │ │ └── util-test.js │ ├── manual-test-grpc/ │ │ ├── echo.proto │ │ └── simple-grpc-server.js │ ├── manual-test-radius/ │ │ └── compose.yaml │ ├── manual-test-radius-tls/ │ │ ├── certs/ │ │ │ ├── redis.crt │ │ │ └── redis.key │ │ └── compose.yaml │ ├── mock-testdb.js │ ├── prepare-test-server.js │ ├── test-backend.mjs │ └── test-radius.dockerfile ├── tsconfig-backend.json └── tsconfig.json