mirror of
https://github.com/louislam/uptime-kuma.git
synced 2024-11-28 01:04:05 +00:00
Merge remote-tracking branch 'louislam/master' into feature/add-support-for-method-body-and-headers
This commit is contained in:
commit
6b44116245
12 changed files with 6525 additions and 108 deletions
17
.eslintrc.js
17
.eslintrc.js
|
@ -91,6 +91,23 @@ module.exports = {
|
||||||
"rules": {
|
"rules": {
|
||||||
"comma-dangle": ["error", "always-multiline"],
|
"comma-dangle": ["error", "always-multiline"],
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Override for jest puppeteer
|
||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"**/*.spec.js",
|
||||||
|
"**/*.spec.jsx"
|
||||||
|
],
|
||||||
|
env: {
|
||||||
|
jest: true,
|
||||||
|
},
|
||||||
|
globals: {
|
||||||
|
page: true,
|
||||||
|
browser: true,
|
||||||
|
context: true,
|
||||||
|
jestPuppeteer: true,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -11,3 +11,4 @@ dist-ssr
|
||||||
|
|
||||||
/private
|
/private
|
||||||
/out
|
/out
|
||||||
|
/tmp
|
||||||
|
|
|
@ -4,11 +4,30 @@ First of all, thank you everyone who made pull requests for Uptime Kuma, I never
|
||||||
|
|
||||||
The project was created with vite.js (vue3). Then I created a sub-directory called "server" for server part. Both frontend and backend share the same package.json.
|
The project was created with vite.js (vue3). Then I created a sub-directory called "server" for server part. Both frontend and backend share the same package.json.
|
||||||
|
|
||||||
The frontend code build into "dist" directory. The server uses "dist" as root. This is how production is working.
|
The frontend code build into "dist" directory. The server (express.js) exposes the "dist" directory as root of the endpoint. This is how production is working.
|
||||||
|
|
||||||
|
# Key Technical Skills
|
||||||
|
|
||||||
|
- Node.js (You should know what are promise, async/await and arrow function etc.)
|
||||||
|
- Socket.io
|
||||||
|
- SCSS
|
||||||
|
- Vue.js
|
||||||
|
- Bootstrap
|
||||||
|
- SQLite
|
||||||
|
|
||||||
|
# Directories
|
||||||
|
|
||||||
|
- data (App data)
|
||||||
|
- dist (Frontend build)
|
||||||
|
- extra (Extra useful scripts)
|
||||||
|
- public (Frontend resources for dev only)
|
||||||
|
- server (Server source code)
|
||||||
|
- src (Frontend source code)
|
||||||
|
- test (unit test)
|
||||||
|
|
||||||
# Can I create a pull request for Uptime Kuma?
|
# Can I create a pull request for Uptime Kuma?
|
||||||
|
|
||||||
Generally, if the pull request is working fine and it do not affect any existing logic, workflow and perfomance, I will merge to the master branch once it is tested.
|
Generally, if the pull request is working fine and it do not affect any existing logic, workflow and perfomance, I will merge into the master branch once it is tested.
|
||||||
|
|
||||||
If you are not sure, feel free to create an empty pull request draft first.
|
If you are not sure, feel free to create an empty pull request draft first.
|
||||||
|
|
||||||
|
@ -43,15 +62,14 @@ It changed my current workflow and require further studies.
|
||||||
|
|
||||||
I personally do not like something need to learn so much and need to config so much before you can finally start the app.
|
I personally do not like something need to learn so much and need to config so much before you can finally start the app.
|
||||||
|
|
||||||
For example, recently, because I am not a python expert, I spent a 2 hours to resolve all problems in order to install and use the Apprise cli. Apprise requires so many hidden requirements, I have to figure out myself how to solve the problems by Google search for my OS. That is painful. I do not want Uptime Kuma to be like this way, so:
|
|
||||||
|
|
||||||
- Easy to install for non-Docker users, no native build dependency is needed (at least for x86_64), no extra config, no extra effort to get it run
|
- Easy to install for non-Docker users, no native build dependency is needed (at least for x86_64), no extra config, no extra effort to get it run
|
||||||
- Single container for Docker users, no very complex docker-composer file. Just map the volume and expose the port, then good to go
|
- Single container for Docker users, no very complex docker-composer file. Just map the volume and expose the port, then good to go
|
||||||
- All settings in frontend.
|
- Settings should be configurable in the frontend. Env var is not encouraged.
|
||||||
- Easy to use
|
- Easy to use
|
||||||
|
|
||||||
# Coding Styles
|
# Coding Styles
|
||||||
|
|
||||||
|
- 4 spaces indentation
|
||||||
- Follow `.editorconfig`
|
- Follow `.editorconfig`
|
||||||
- Follow ESLint
|
- Follow ESLint
|
||||||
|
|
||||||
|
@ -65,22 +83,16 @@ For example, recently, because I am not a python expert, I spent a 2 hours to re
|
||||||
|
|
||||||
- Node.js >= 14
|
- Node.js >= 14
|
||||||
- Git
|
- Git
|
||||||
- IDE that supports EditorConfig and ESLint (I am using Intellji Idea)
|
- IDE that supports ESLint and EditorConfig (I am using Intellji Idea)
|
||||||
- A SQLite tool (I am using SQLite Expert Personal)
|
- A SQLite tool (SQLite Expert Personal is suggested)
|
||||||
|
|
||||||
# Install dependencies
|
# Install dependencies
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm install --dev
|
npm ci
|
||||||
```
|
```
|
||||||
|
|
||||||
For npm@7, you need --legacy-peer-deps
|
# How to start the Backend Dev Server
|
||||||
|
|
||||||
```bash
|
|
||||||
npm install --legacy-peer-deps --dev
|
|
||||||
```
|
|
||||||
|
|
||||||
# Backend Dev
|
|
||||||
|
|
||||||
(2021-09-23 Update)
|
(2021-09-23 Update)
|
||||||
|
|
||||||
|
@ -96,28 +108,24 @@ It is mainly a socket.io app + express.js.
|
||||||
|
|
||||||
express.js is just used for serving the frontend built files (index.html, .js and .css etc.)
|
express.js is just used for serving the frontend built files (index.html, .js and .css etc.)
|
||||||
|
|
||||||
# Frontend Dev
|
- model/ (Object model, auto mapping to the database table name)
|
||||||
|
- modules/ (Modified 3rd-party modules)
|
||||||
|
- notification-providers/ (indivdual notification logic)
|
||||||
|
- routers/ (Express Routers)
|
||||||
|
- scoket-handler (Socket.io Handlers)
|
||||||
|
- server.js (Server main logic)
|
||||||
|
|
||||||
Start frontend dev server. Hot-reload enabled in this way. It binds to `0.0.0.0:3000` by default.
|
# How to start the Frontend Dev Server
|
||||||
|
|
||||||
|
1. Set the env var `NODE_ENV` to "development".
|
||||||
|
2. Start the frontend dev server by the following command.
|
||||||
```bash
|
```bash
|
||||||
npm run dev
|
npm run dev
|
||||||
```
|
```
|
||||||
|
It binds to `0.0.0.0:3000` by default.
|
||||||
PS: You can ignore those scss warnings, those warnings are from Bootstrap that I cannot fix.
|
|
||||||
|
|
||||||
You can use Vue.js devtools Chrome extension for debugging.
|
You can use Vue.js devtools Chrome extension for debugging.
|
||||||
|
|
||||||
After the frontend server started. It cannot connect to the websocket server even you have started the server. You need to tell the frontend that is a dev env by running this in DevTool console and refresh:
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
localStorage.dev = "dev";
|
|
||||||
```
|
|
||||||
|
|
||||||
So that the frontend will try to connect websocket server in 3001.
|
|
||||||
|
|
||||||
Alternately, you can specific `NODE_ENV` to "development".
|
|
||||||
|
|
||||||
## Build the frontend
|
## Build the frontend
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -134,10 +142,11 @@ As you can see, most data in frontend is stored in root level, even though you c
|
||||||
|
|
||||||
The data and socket logic are in `src/mixins/socket.js`.
|
The data and socket logic are in `src/mixins/socket.js`.
|
||||||
|
|
||||||
|
|
||||||
# Database Migration
|
# Database Migration
|
||||||
|
|
||||||
1. Create `patch{num}.sql` in `./db/`
|
1. Create `patch-{name}.sql` in `./db/`
|
||||||
2. Update `latestVersion` in `./server/database.js`
|
2. Add your patch filename in the `patchList` list in `./server/database.js`
|
||||||
|
|
||||||
# Unit Test
|
# Unit Test
|
||||||
|
|
||||||
|
|
5
jest-puppeteer.config.js
Normal file
5
jest-puppeteer.config.js
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
module.exports = {
|
||||||
|
"launch": {
|
||||||
|
"headless": false
|
||||||
|
}
|
||||||
|
};
|
6171
package-lock.json
generated
6171
package-lock.json
generated
File diff suppressed because it is too large
Load diff
14
package.json
14
package.json
|
@ -20,6 +20,8 @@
|
||||||
"start-server": "node server/server.js",
|
"start-server": "node server/server.js",
|
||||||
"start-server-dev": "cross-env NODE_ENV=development node server/server.js",
|
"start-server-dev": "cross-env NODE_ENV=development node server/server.js",
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
|
"prepare-test": "npm run build && node server/server.js --port=3002 --data-dir=./data/test/",
|
||||||
|
"test": "jest",
|
||||||
"tsc": "tsc",
|
"tsc": "tsc",
|
||||||
"vite-preview-dist": "vite preview --host",
|
"vite-preview-dist": "vite preview --host",
|
||||||
"build-docker": "npm run build-docker-debian && npm run build-docker-alpine",
|
"build-docker": "npm run build-docker-debian && npm run build-docker-alpine",
|
||||||
|
@ -104,10 +106,22 @@
|
||||||
"dns2": "~2.0.1",
|
"dns2": "~2.0.1",
|
||||||
"eslint": "~7.32.0",
|
"eslint": "~7.32.0",
|
||||||
"eslint-plugin-vue": "~7.18.0",
|
"eslint-plugin-vue": "~7.18.0",
|
||||||
|
"jest": "~27.2.4",
|
||||||
|
"jest-puppeteer": "~6.0.0",
|
||||||
|
"puppeteer": "~10.4.0",
|
||||||
"sass": "~1.42.1",
|
"sass": "~1.42.1",
|
||||||
"stylelint": "~13.13.1",
|
"stylelint": "~13.13.1",
|
||||||
"stylelint-config-standard": "~22.0.0",
|
"stylelint-config-standard": "~22.0.0",
|
||||||
"typescript": "~4.4.3",
|
"typescript": "~4.4.3",
|
||||||
"vite": "~2.5.10"
|
"vite": "~2.5.10"
|
||||||
|
},
|
||||||
|
"jest": {
|
||||||
|
"verbose": true,
|
||||||
|
"preset": "jest-puppeteer",
|
||||||
|
"globals": {
|
||||||
|
"__DEV__": true
|
||||||
|
},
|
||||||
|
"testRegex": "./test/*.spec.js",
|
||||||
|
"rootDir": "."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,6 @@ exports.startInterval = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.latestVersion = res.data.version;
|
exports.latestVersion = res.data.version;
|
||||||
console.log("Latest Version: " + exports.latestVersion);
|
|
||||||
} catch (_) { }
|
} catch (_) { }
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -8,6 +8,7 @@ import esEs from "./languages/es-ES";
|
||||||
import ptBR from "./languages/pt-BR";
|
import ptBR from "./languages/pt-BR";
|
||||||
import etEE from "./languages/et-EE";
|
import etEE from "./languages/et-EE";
|
||||||
import frFR from "./languages/fr-FR";
|
import frFR from "./languages/fr-FR";
|
||||||
|
import hu from "./languages/hu";
|
||||||
import itIT from "./languages/it-IT";
|
import itIT from "./languages/it-IT";
|
||||||
import ja from "./languages/ja";
|
import ja from "./languages/ja";
|
||||||
import koKR from "./languages/ko-KR";
|
import koKR from "./languages/ko-KR";
|
||||||
|
@ -31,6 +32,7 @@ const languageList = {
|
||||||
"fa": fa,
|
"fa": fa,
|
||||||
"pt-BR": ptBR,
|
"pt-BR": ptBR,
|
||||||
"fr-FR": frFR,
|
"fr-FR": frFR,
|
||||||
|
"hu": hu,
|
||||||
"it-IT": itIT,
|
"it-IT": itIT,
|
||||||
"ja": ja,
|
"ja": ja,
|
||||||
"da-DK": daDK,
|
"da-DK": daDK,
|
||||||
|
|
|
@ -1,21 +1,22 @@
|
||||||
export default {
|
export default {
|
||||||
languageName: "eesti",
|
languageName: "eesti",
|
||||||
checkEverySecond: "Kontrolli {0} sekundilise vahega.",
|
retryCheckEverySecond: "Kontrolli {0} sekundilise vahega.",
|
||||||
retriesDescription: "Mitu korda tuleb kontrollida, mille järel märkida 'maas' ja saata välja teavitus.",
|
retriesDescription: "Mitu korda tuleb kontrollida, mille järel märkida 'maas' ja saata välja teavitus.",
|
||||||
ignoreTLSError: "Eira TLS/SSL viga HTTPS veebisaitidel.",
|
ignoreTLSError: "Eira TLS/SSL viga HTTPS veebisaitidel.",
|
||||||
upsideDownModeDescription: "Käitle teenuse saadavust rikkena, teenuse kättesaamatust töötavaks.",
|
upsideDownModeDescription: "Käitle teenuse saadavust rikkena, teenuse kättesaamatust töötavaks.",
|
||||||
maxRedirectDescription: "Suurim arv ümbersuunamisi, millele järgida. 0 ei luba ühtegi ",
|
maxRedirectDescription: "Suurim arv ümbersuunamisi, millele järgida. 0 ei luba ühtegi ",
|
||||||
acceptedStatusCodesDescription: "Vali välja HTTP koodid, mida arvestada kõlblikuks.",
|
acceptedStatusCodesDescription: "Vali välja HTTP koodid, mida arvestada kõlblikuks.",
|
||||||
passwordNotMatchMsg: "Salasõnad ei kattu.",
|
passwordNotMatchMsg: "Salasõnad ei kattu.",
|
||||||
notificationDescription: "Teavitusmeetodi kasutamiseks seo see seirega.",
|
notificationDescription: "Teavitusteenuse kasutamiseks seo see seirega.",
|
||||||
keywordDescription: "Jälgi võtmesõna HTML või JSON vastustes. (tõstutundlik)",
|
keywordDescription: "Jälgi võtmesõna HTML või JSON vastustes. (tõstutundlik)",
|
||||||
pauseDashboardHome: "Seismas",
|
pauseDashboardHome: "Seisatud",
|
||||||
deleteMonitorMsg: "Kas soovid eemaldada seire?",
|
deleteMonitorMsg: "Kas soovid eemaldada seire?",
|
||||||
deleteNotificationMsg: "Kas soovid eemaldada selle teavitusmeetodi kõikidelt seiretelt?",
|
deleteNotificationMsg: "Kas soovid eemaldada selle teavitusteenuse kõikidelt seiretelt?",
|
||||||
resoverserverDescription: "Cloudflare on vaikimisi pöördserver.",
|
resoverserverDescription: "Cloudflare on vaikimisi pöördserver.",
|
||||||
rrtypeDescription: "Vali kirje tüüp, mida soovid jälgida.",
|
rrtypeDescription: "Vali kirje tüüp, mida soovid jälgida.",
|
||||||
pauseMonitorMsg: "Kas soovid peatada seire?",
|
pauseMonitorMsg: "Kas soovid peatada seire?",
|
||||||
Settings: "Seaded",
|
Settings: "Seaded",
|
||||||
|
"Status Page": "Ülevaade", // hääletuse tulemus, teine: seisundileht, kolmas: Olukord/Olek
|
||||||
Dashboard: "Töölaud",
|
Dashboard: "Töölaud",
|
||||||
"New Update": "Uuem tarkvara versioon on saadaval.",
|
"New Update": "Uuem tarkvara versioon on saadaval.",
|
||||||
Language: "Keel",
|
Language: "Keel",
|
||||||
|
@ -26,30 +27,31 @@ export default {
|
||||||
"Check Update On GitHub": "Otsi uuendusi GitHub'ist",
|
"Check Update On GitHub": "Otsi uuendusi GitHub'ist",
|
||||||
List: "Nimekiri",
|
List: "Nimekiri",
|
||||||
Add: "Lisa",
|
Add: "Lisa",
|
||||||
"Add New Monitor": "Seire lisamine",
|
"Add New Monitor": "Lisa seire",
|
||||||
|
"Add a monitor": "Lisa seire",
|
||||||
"Quick Stats": "Ülevaade",
|
"Quick Stats": "Ülevaade",
|
||||||
Up: "Töökorras",
|
Up: "Töökorras",
|
||||||
Down: "Rikkis",
|
Down: "Rikkis",
|
||||||
Pending: "Määramisel",
|
Pending: "Määramisel",
|
||||||
Unknown: "Teadmata",
|
Unknown: "Kahtlast",
|
||||||
Pause: "Seiskamine",
|
Pause: "Seiska",
|
||||||
Name: "Nimi",
|
Name: "Nimi",
|
||||||
Status: "Olek",
|
Status: "Olek",
|
||||||
DateTime: "Kuupäev",
|
DateTime: "Kuupäev",
|
||||||
Message: "Tulemus",
|
Message: "Tulemus",
|
||||||
"No important events": "Märkimisväärsed juhtumid puuduvad.",
|
"No important events": "Märkimisväärsed juhtumid puuduvad.",
|
||||||
Resume: "Taasta",
|
Resume: "Taasta",
|
||||||
Edit: "Muutmine",
|
Edit: "Muuda",
|
||||||
Delete: "Eemalda",
|
Delete: "Eemalda",
|
||||||
Current: "Hetkeseisund",
|
Current: "Hetkeseisund",
|
||||||
Uptime: "Eluiga",
|
Uptime: "Eluiga", // todo: launchpad?
|
||||||
"Cert Exp.": "Sert. aegumine",
|
"Cert Exp.": "Sert. aegumine",
|
||||||
days: "päeva",
|
days: "päeva",
|
||||||
day: "päev",
|
day: "päev",
|
||||||
"-day": "-päev",
|
"-day": "-päev",
|
||||||
hour: "tund",
|
hour: "tund",
|
||||||
"-hour": "-tund",
|
"-hour": "-tund",
|
||||||
Response: "Vastus",
|
Response: "Reaktsiooniaeg",
|
||||||
Ping: "Ping",
|
Ping: "Ping",
|
||||||
"Monitor Type": "Seire tüüp",
|
"Monitor Type": "Seire tüüp",
|
||||||
Keyword: "Võtmesõna",
|
Keyword: "Võtmesõna",
|
||||||
|
@ -107,76 +109,73 @@ export default {
|
||||||
"Create your admin account": "Admininstraatori konto loomine",
|
"Create your admin account": "Admininstraatori konto loomine",
|
||||||
"Repeat Password": "korda salasõna",
|
"Repeat Password": "korda salasõna",
|
||||||
respTime: "Reageerimisaeg (ms)",
|
respTime: "Reageerimisaeg (ms)",
|
||||||
notAvailableShort: "N/A",
|
notAvailableShort: "N/A", // tõlkimata, umbkaudu rahvusvaheline termin peaks sobima piisavalt
|
||||||
enableDefaultNotificationDescription: "Kõik järgnevalt lisatud seired kasutavad seda teavitusmeetodit. Seiretelt võib teavitusmeetodi ühekaupa eemaldada.",
|
enableDefaultNotificationDescription: "Kõik järgnevalt lisatud seired kasutavad seda teavitusteenuset. Seiretelt võib teavitusteenuse ühekaupa eemaldada.",
|
||||||
clearEventsMsg: "Kas soovid seire kõik sündmused kustutada?",
|
clearEventsMsg: "Kas soovid seire kõik sündmused kustutada?",
|
||||||
clearHeartbeatsMsg: "Kas soovid seire kõik tuksed kustutada?",
|
clearHeartbeatsMsg: "Kas soovid seire kõik tuksed kustutada?",
|
||||||
confirmClearStatisticsMsg: "Kas soovid KÕIK statistika kustutada?",
|
confirmClearStatisticsMsg: "Kas soovid TERVE ajaloo kustutada?",
|
||||||
Export: "Eksport",
|
Export: "Eksport",
|
||||||
Import: "Import",
|
Import: "Import",
|
||||||
"Default enabled": "Kasuta vaikimisi",
|
"Default enabled": "Kasuta vaikimisi",
|
||||||
"Also apply to existing monitors": "Aktiveeri teavitusmeetod olemasolevatel seiretel",
|
"Apply on all existing monitors": "Kõik praegused seired hakkavad kasutama seda teavitusteenust",
|
||||||
Create: "Loo konto",
|
Create: "Loo konto",
|
||||||
"Clear Data": "Eemalda andmed",
|
"Clear Data": "Eemalda andmed",
|
||||||
Events: "Sündmused",
|
Events: "Sündmused",
|
||||||
Heartbeats: "Tuksed",
|
Heartbeats: "Tuksed",
|
||||||
"Auto Get": "Hangi automaatselt",
|
"Auto Get": "Hangi automaatselt", // hangi? kõlab liiga otsetõlge
|
||||||
backupDescription: "Varunda kõik seired ja teavitused JSON faili.",
|
backupDescription: "Varunda kõik seired ja teavitused JSON faili.",
|
||||||
backupDescription2: "PS: Varukoopia EI sisalda seirete ajalugu ja sündmustikku.",
|
backupDescription2: "PS: Varukoopia EI sisalda seirete ajalugu ja sündmustikku.",
|
||||||
backupDescription3: "Varukoopiad sisaldavad teavitusmeetodite pääsuvõtmeid.",
|
backupDescription3: "Varukoopiad sisaldavad teavitusteenusete pääsuvõtmeid.",
|
||||||
alertNoFile: "Palun lisa fail, mida importida.",
|
alertNoFile: "Palun lisa fail, mida importida.",
|
||||||
alertWrongFileType: "Palun lisa JSON-formaadis fail.",
|
alertWrongFileType: "Palun lisa JSON-formaadis fail.",
|
||||||
twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
|
twoFAVerifyLabel: "2FA kinnitamiseks sisesta pääsukood",
|
||||||
tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
|
tokenValidSettingsMsg: "Kood õige. Akna võib sulgeda.",
|
||||||
confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
|
confirmEnableTwoFAMsg: "Kas soovid 2FA sisse lülitada?",
|
||||||
confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
|
confirmDisableTwoFAMsg: "Kas soovid 2FA välja lülitada?",
|
||||||
"Apply on all existing monitors": "Apply on all existing monitors",
|
"Verify Token": "Kontrolli",
|
||||||
"Verify Token": "Verify Token",
|
"Setup 2FA": "Kaksikautentimise seadistamine",
|
||||||
"Setup 2FA": "Setup 2FA",
|
"Enable 2FA": "Seadista 2FA",
|
||||||
"Enable 2FA": "Enable 2FA",
|
"Disable 2FA": "Lülita 2FA välja",
|
||||||
"Disable 2FA": "Disable 2FA",
|
"2FA Settings": "2FA seaded",
|
||||||
"2FA Settings": "2FA Settings",
|
"Two Factor Authentication": "Kaksikautentimine",
|
||||||
"Two Factor Authentication": "Two Factor Authentication",
|
Active: "kasutusel",
|
||||||
Active: "Active",
|
Inactive: "seadistamata",
|
||||||
Inactive: "Inactive",
|
Token: "kaksikautentimise kood", // needs to compensate for no title
|
||||||
Token: "Token",
|
"Show URI": "Näita URId",
|
||||||
"Show URI": "Show URI",
|
"Clear all statistics": "Tühjenda ajalugu",
|
||||||
"Clear all statistics": "Clear all Statistics",
|
importHandleDescription: "'kombineeri' täiendab varukoopiast ja kirjutab üle samanimelised seireid ja teavitusteenused; 'lisa praegustele' jätab olemasolevad puutumata; 'asenda' kustutab ja asendab kõik seired ja teavitusteenused.",
|
||||||
retryCheckEverySecond: "Retry every {0} seconds.",
|
confirmImportMsg: "Käkerdistest hoidumiseks lae enne taastamist alla uus varukoopia. Kas soovid taastada üles laetud?",
|
||||||
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.",
|
"Heartbeat Retry Interval": "Korduskatsete intervall",
|
||||||
confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.",
|
"Import Backup": "Varukoopia importimine",
|
||||||
"Heartbeat Retry Interval": "Heartbeat Retry Interval",
|
"Export Backup": "Varukoopia eksportimine",
|
||||||
"Import Backup": "Import Backup",
|
"Skip existing": "lisa praegustele",
|
||||||
"Export Backup": "Export Backup",
|
Overwrite: "asenda",
|
||||||
"Skip existing": "Skip existing",
|
Options: "Mestimisviis", // reusal of key would be chaos
|
||||||
Overwrite: "Overwrite",
|
"Keep both": "kombineeri",
|
||||||
Options: "Options",
|
Tags: "Sildid",
|
||||||
"Keep both": "Keep both",
|
"Add New below or Select...": "Leia või lisa all uus…",
|
||||||
Tags: "Tags",
|
"Tag with this name already exist.": "Selle nimega silt on juba olemas.",
|
||||||
"Add New below or Select...": "Add New below or Select...",
|
"Tag with this value already exist.": "Selle väärtusega silt on juba olemas.",
|
||||||
"Tag with this name already exist.": "Tag with this name already exist.",
|
color: "värvus",
|
||||||
"Tag with this value already exist.": "Tag with this value already exist.",
|
"value (optional)": "väärtus (fakultatiivne)", // milline sõna!
|
||||||
color: "color",
|
Gray: "hall",
|
||||||
"value (optional)": "value (optional)",
|
Red: "punane",
|
||||||
Gray: "Gray",
|
Orange: "oranž",
|
||||||
Red: "Red",
|
Green: "roheline",
|
||||||
Orange: "Orange",
|
Blue: "sinine",
|
||||||
Green: "Green",
|
Indigo: "indigo",
|
||||||
Blue: "Blue",
|
Purple: "lilla",
|
||||||
Indigo: "Indigo",
|
Pink: "roosa",
|
||||||
Purple: "Purple",
|
"Search...": "Otsi…",
|
||||||
Pink: "Pink",
|
"Avg. Ping": "Keskmine ping", // pikk, aga nagunii kahel real
|
||||||
"Search...": "Search...",
|
"Avg. Response": "Keskmine reaktsiooniaeg",
|
||||||
"Avg. Ping": "Avg. Ping",
|
"Entry Page": "Avaleht",
|
||||||
"Avg. Response": "Avg. Response",
|
statusPageNothing: "Kippu ega kõppu; siia saab lisada seireid või -gruppe.",
|
||||||
"Entry Page": "Entry Page",
|
"No Services": "Teenused puuduvad.",
|
||||||
statusPageNothing: "Nothing here, please add a group or a monitor.",
|
"All Systems Operational": "Kõik töökorras",
|
||||||
"No Services": "No Services",
|
"Partially Degraded Service": "Teenuse töö osaliselt häiritud",
|
||||||
"All Systems Operational": "All Systems Operational",
|
"Degraded Service": "Teenuse töö häiritud",
|
||||||
"Partially Degraded Service": "Partially Degraded Service",
|
"Add Group": "Lisa grupp",
|
||||||
"Degraded Service": "Degraded Service",
|
"Edit Status Page": "Muuda lehte",
|
||||||
"Add Group": "Add Group",
|
"Go to Dashboard": "Töölauale",
|
||||||
"Add a monitor": "Add a monitor",
|
|
||||||
"Edit Status Page": "Edit Status Page",
|
|
||||||
"Go to Dashboard": "Go to Dashboard",
|
|
||||||
};
|
};
|
||||||
|
|
181
src/languages/hu.js
Normal file
181
src/languages/hu.js
Normal file
|
@ -0,0 +1,181 @@
|
||||||
|
export default {
|
||||||
|
languageName: "Magyar",
|
||||||
|
checkEverySecond: "Ellenőrzés {0} másodpercenként",
|
||||||
|
retryCheckEverySecond: "Újrapróbál {0} másodpercenként.",
|
||||||
|
retriesDescription: "Maximális próbálkozás mielőtt a szolgáltatás leállt jelőlést kap és értesítés kerül kiküldésre",
|
||||||
|
ignoreTLSError: "TLS/SSL hibák figyelnen kívül hagyása HTTPS weboldalaknál",
|
||||||
|
upsideDownModeDescription: "Az állapot megfordítása. Ha a szolgáltatás elérhető, akkor lesz leállt állapotú.",
|
||||||
|
maxRedirectDescription: "Az átirányítások maximális száma. állítsa 0-ra az átirányítás tiltásához.",
|
||||||
|
acceptedStatusCodesDescription: "Válassza ki az állapot kódokat amelyek sikeres válasznak fognak számítani.",
|
||||||
|
passwordNotMatchMsg: "A megismételt jelszó nem egyezik.",
|
||||||
|
notificationDescription: "Kérem, rendeljen egy értesítést a figyeléshez, hogy működjön.",
|
||||||
|
keywordDescription: "Kulcsszó keresése a html-ben vagy a JSON válaszban. (kis-nagybetű érzékeny)",
|
||||||
|
pauseDashboardHome: "Szünetel",
|
||||||
|
deleteMonitorMsg: "Biztos, hogy törölni akarja ezt a figyelőt?",
|
||||||
|
deleteNotificationMsg: "Biztos, hogy törölni akarja ezt az értesítést az összes figyelőnél?",
|
||||||
|
resoverserverDescription: "A Cloudflare az alapértelmezett szerver, bármikor meg tudja változtatni a resolver server-t.",
|
||||||
|
rrtypeDescription: "Válassza ki az RR-Típust a figyelőhöz",
|
||||||
|
pauseMonitorMsg: "Biztos, hogy szüneteltetni akarja?",
|
||||||
|
enableDefaultNotificationDescription: "Minden új figyelőhöz ez az értesítés engedélyezett lesz alapértelmezetten. Kikapcsolhatja az értesítést külön minden figyelőnél.",
|
||||||
|
clearEventsMsg: "Biztos, hogy törölni akar miden eseményt ennél a figyelnél?",
|
||||||
|
clearHeartbeatsMsg: "Biztos, hogy törölni akar minden heartbeat-et ennél a figyelőnél?",
|
||||||
|
confirmClearStatisticsMsg: "Biztos, hogy törölni akat MINDEN statisztikát?",
|
||||||
|
importHandleDescription: "Válassza a 'Meglévő kihagyását', ha ki szeretné hagyni az azonos nevő figyelőket vagy értesítésket. A 'Felülírás' törölni fog minden meglévő figyelőt és értesítést.",
|
||||||
|
confirmImportMsg: "Biztos, hogy importálja a mentést? Győzödjön meg róla, hogy jól választotta ki az importálás opciót.",
|
||||||
|
twoFAVerifyLabel: "Kérem, adja meg a token-t, hogy a 2FA működését ellenőrizzük",
|
||||||
|
tokenValidSettingsMsg: "A token érvényes! El tudja menteni a 2FA beállításait.",
|
||||||
|
confirmEnableTwoFAMsg: "Biztosan engedélyezi a 2FA-t?",
|
||||||
|
confirmDisableTwoFAMsg: "Biztosan letiltja a 2FA-t?",
|
||||||
|
Settings: "Beállítások",
|
||||||
|
Dashboard: "Irányítópult",
|
||||||
|
"New Update": "Új frissítés",
|
||||||
|
Language: "Nyelv",
|
||||||
|
Appearance: "Megjelenés",
|
||||||
|
Theme: "Téma",
|
||||||
|
General: "Általános",
|
||||||
|
Version: "Verzió",
|
||||||
|
"Check Update On GitHub": "Frissítések keresése a GitHub-on",
|
||||||
|
List: "Lista",
|
||||||
|
Add: "Hozzáadás",
|
||||||
|
"Add New Monitor": "Új figyelő hozzáadása",
|
||||||
|
"Quick Stats": "Gyors statisztikák",
|
||||||
|
Up: "Működik",
|
||||||
|
Down: "Leállt",
|
||||||
|
Pending: "Függőben",
|
||||||
|
Unknown: "Ismeretlen",
|
||||||
|
Pause: "Szünet",
|
||||||
|
Name: "Név",
|
||||||
|
Status: "Állapot",
|
||||||
|
DateTime: "Időpont",
|
||||||
|
Message: "Üzenet",
|
||||||
|
"No important events": "Nincs fontos esemény",
|
||||||
|
Resume: "Folytatás",
|
||||||
|
Edit: "Szerkesztés",
|
||||||
|
Delete: "Törlés",
|
||||||
|
Current: "Aktuális",
|
||||||
|
Uptime: "Uptime",
|
||||||
|
"Cert Exp.": "Tanúsítvány lejár",
|
||||||
|
days: "napok",
|
||||||
|
day: "nap",
|
||||||
|
"-day": "-nap",
|
||||||
|
hour: "óra",
|
||||||
|
"-hour": "-óra",
|
||||||
|
Response: "Válasz",
|
||||||
|
Ping: "Ping",
|
||||||
|
"Monitor Type": "Figyelő típusa",
|
||||||
|
Keyword: "Kulcsszó",
|
||||||
|
"Friendly Name": "Rövid név",
|
||||||
|
URL: "URL",
|
||||||
|
Hostname: "Hostnév",
|
||||||
|
Port: "Port",
|
||||||
|
"Heartbeat Interval": "Heartbeat időköz",
|
||||||
|
Retries: "Újrapróbálkozás",
|
||||||
|
"Heartbeat Retry Interval": "Heartbeat újrapróbálkozások időköze",
|
||||||
|
Advanced: "Haladó",
|
||||||
|
"Upside Down Mode": "Fordított mód",
|
||||||
|
"Max. Redirects": "Max. átirányítás",
|
||||||
|
"Accepted Status Codes": "Elfogadott állapot kódok",
|
||||||
|
Save: "Mentés",
|
||||||
|
Notifications: "Értesítések",
|
||||||
|
"Not available, please setup.": "Nem elérhető, állítsa be.",
|
||||||
|
"Setup Notification": "Értesítés beállítása",
|
||||||
|
Light: "Világos",
|
||||||
|
Dark: "Sötét",
|
||||||
|
Auto: "Auto",
|
||||||
|
"Theme - Heartbeat Bar": "Téma - Heartbeat Bar",
|
||||||
|
Normal: "Normal",
|
||||||
|
Bottom: "Nyomógomb",
|
||||||
|
None: "Nincs",
|
||||||
|
Timezone: "Időzóna",
|
||||||
|
"Search Engine Visibility": "Látható a keresőmotoroknak",
|
||||||
|
"Allow indexing": "Indexelés engedélyezése",
|
||||||
|
"Discourage search engines from indexing site": "Keresőmotorok elriasztása az oldal indexelésétől",
|
||||||
|
"Change Password": "Jelszó változtatása",
|
||||||
|
"Current Password": "Jelenlegi jelszó",
|
||||||
|
"New Password": "Új jelszó",
|
||||||
|
"Repeat New Password": "Ismételje meg az új jelszót",
|
||||||
|
"Update Password": "Jelszó módosítása",
|
||||||
|
"Disable Auth": "Hitelesítés tiltása",
|
||||||
|
"Enable Auth": "Hitelesítés engedélyezése",
|
||||||
|
Logout: "Kijelenetkezés",
|
||||||
|
Leave: "Elhagy",
|
||||||
|
"I understand, please disable": "Megértettem, kérem tilsa le",
|
||||||
|
Confirm: "Megerősítés",
|
||||||
|
Yes: "Igen",
|
||||||
|
No: "Nem",
|
||||||
|
Username: "Felhasználónév",
|
||||||
|
Password: "Jelszó",
|
||||||
|
"Remember me": "Emlékezzen rám",
|
||||||
|
Login: "Bejelentkezés",
|
||||||
|
"No Monitors, please": "Nincs figyelő, kérem",
|
||||||
|
"add one": "adjon hozzá egyet",
|
||||||
|
"Notification Type": "Értesítés típusa",
|
||||||
|
Email: "Email",
|
||||||
|
Test: "Teszt",
|
||||||
|
"Certificate Info": "Tanúsítvány információk",
|
||||||
|
"Resolver Server": "Resolver szerver",
|
||||||
|
"Resource Record Type": "Resource Record típusa",
|
||||||
|
"Last Result": "Utolsó eredmény",
|
||||||
|
"Create your admin account": "Hozza létre az adminisztrátor felhasználót",
|
||||||
|
"Repeat Password": "Jelszó ismétlése",
|
||||||
|
"Import Backup": "Mentés importálása",
|
||||||
|
"Export Backup": "Mentés exportálása",
|
||||||
|
Export: "Exportálás",
|
||||||
|
Import: "Importálás",
|
||||||
|
respTime: "Válaszidő (ms)",
|
||||||
|
notAvailableShort: "N/A",
|
||||||
|
"Default enabled": "Alapértelmezetten engedélyezett",
|
||||||
|
"Apply on all existing monitors": "Alkalmazza az összes figyelőre",
|
||||||
|
Create: "Létrehozás",
|
||||||
|
"Clear Data": "Adatok törlése",
|
||||||
|
Events: "Események",
|
||||||
|
Heartbeats: "Heartbeats",
|
||||||
|
"Auto Get": "Auto Get",
|
||||||
|
backupDescription: "Ki tudja menteni az összes figyelőt és értesítést egy JSON fájlba.",
|
||||||
|
backupDescription2: "Ui.: Történeti és esemény adatokat nem tartalmaz.",
|
||||||
|
backupDescription3: "Érzékeny adatok, pl. szolgáltatás kulcsok is vannak az export fájlban. Figyelmesen őrizze!",
|
||||||
|
alertNoFile: "Válaszzon ki egy fájlt az importáláshoz.",
|
||||||
|
alertWrongFileType: "Válasszon egy JSON fájlt.",
|
||||||
|
"Clear all statistics": "Összes statisztika törlése",
|
||||||
|
"Skip existing": "Meglévő kihagyása",
|
||||||
|
Overwrite: "Felülírás",
|
||||||
|
Options: "Opciók",
|
||||||
|
"Keep both": "Mindegyiket tartsa meg",
|
||||||
|
"Verify Token": "Token ellenőrzése",
|
||||||
|
"Setup 2FA": "2FA beállítása",
|
||||||
|
"Enable 2FA": "2FA engedélyezése",
|
||||||
|
"Disable 2FA": "2FA toltása",
|
||||||
|
"2FA Settings": "2FA beállítások",
|
||||||
|
"Two Factor Authentication": "Two Factor Authentication",
|
||||||
|
Active: "Aktív",
|
||||||
|
Inactive: "Inaktív",
|
||||||
|
Token: "Token",
|
||||||
|
"Show URI": "URI megmutatása",
|
||||||
|
Tags: "Cimkék",
|
||||||
|
"Add New below or Select...": "Adjon hozzá lentre vagy válasszon...",
|
||||||
|
"Tag with this name already exist.": "Ilyen nevű cimke már létezik.",
|
||||||
|
"Tag with this value already exist.": "Ilyen értékű cimke már létezik.",
|
||||||
|
color: "szín",
|
||||||
|
"value (optional)": "érték (opcionális)",
|
||||||
|
Gray: "Szürke",
|
||||||
|
Red: "Piros",
|
||||||
|
Orange: "Narancs",
|
||||||
|
Green: "Zöld",
|
||||||
|
Blue: "Kék",
|
||||||
|
Indigo: "Indigó",
|
||||||
|
Purple: "Lila",
|
||||||
|
Pink: "Rózsaszín",
|
||||||
|
"Search...": "Keres...",
|
||||||
|
"Avg. Ping": "Átl. ping",
|
||||||
|
"Avg. Response": "Átl. válasz",
|
||||||
|
"Entry Page": "Nyitólap",
|
||||||
|
statusPageNothing: "Semmi nincs itt, kérem, adjon hozzá egy figyelőt.",
|
||||||
|
"No Services": "Nincs szolgáltatás",
|
||||||
|
"All Systems Operational": "Minden rendszer működik",
|
||||||
|
"Partially Degraded Service": "Részlegesen leállt szolgáltatás",
|
||||||
|
"Degraded Service": "Leállt szolgáltatás",
|
||||||
|
"Add Group": "Csoport hozzáadása",
|
||||||
|
"Add a monitor": "Figyelő hozzáadása",
|
||||||
|
"Edit Status Page": "Sátusz oldal szerkesztése",
|
||||||
|
"Go to Dashboard": "Menj az irányítópulthoz",
|
||||||
|
};
|
|
@ -328,6 +328,12 @@
|
||||||
<p>Моля, използвайте внимателно.</p>
|
<p>Моля, използвайте внимателно.</p>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<template v-else-if="$i18n.locale === 'hu' ">
|
||||||
|
<p>Biztos benne, hogy <strong>kikapcsolja a hitelesítést</strong>?</p>
|
||||||
|
<p>Akkor érdemes, ha <strong>van 3rd-party hitelesítés</strong> az Uptime Kuma-t megelőzően mint a Cloudflare Access.</p>
|
||||||
|
<p>Használja megfontoltan!</p>
|
||||||
|
</template>
|
||||||
|
|
||||||
<!-- English (en) -->
|
<!-- English (en) -->
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<p>Are you sure want to <strong>disable auth</strong>?</p>
|
<p>Are you sure want to <strong>disable auth</strong>?</p>
|
||||||
|
|
21
test/test.spec.js
Normal file
21
test/test.spec.js
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
beforeAll(() => {
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
return console.log("Cleanup");
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("Very Simple Test", () => {
|
||||||
|
|
||||||
|
const title = "Uptime Kuma";
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
await page.goto("http://127.0.0.1:3002");
|
||||||
|
});
|
||||||
|
|
||||||
|
it(`should be titled "${title}"`, async () => {
|
||||||
|
await expect(page.title()).resolves.toMatch(title);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
Loading…
Reference in a new issue