Compare commits

..

299 Commits

Author SHA1 Message Date
Louis Lam
c3b166bd8f WIP 2023-12-27 19:31:17 +08:00
Nelson Chan
d830fa4a0e Feat: Countup display fixed value (#4266) 2023-12-21 20:09:59 +08:00
Nelson Chan
c9fe6b5d01 Feat: Refresh login token for the client initiating password change (#4214) 2023-12-18 19:52:49 +08:00
Louis Lam
996ff28ed9 Playwright + Native Node Test Runner (#3893) 2023-12-17 19:02:22 +08:00
HdroguettA
f24c3583fb Attempt an OAuth2 Refresh on 401 (#3903) 2023-12-17 17:21:07 +08:00
Frank Elsinga
e2fdfd2937 Migrate all v-html translations to componentised translations (#4135)
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-12-15 18:38:57 +08:00
Louis Lam
dd7a5064e3 Translations Update from Weblate (#3891) 2023-12-15 18:22:54 +08:00
Vincent
6833594592 Translated using Weblate (Dutch)
Currently translated at 100.0% (877 of 877 strings)

Co-authored-by: Vincent <vincent0512@outlook.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/nl/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Marco Beretta
d1d6357453 Translated using Weblate (Italian)
Currently translated at 72.7% (638 of 877 strings)

Co-authored-by: Marco Beretta <marco13beretta@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/it/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
renph
8acbd14439 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (877 of 877 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (877 of 877 strings)

Co-authored-by: renph <renph96@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/zh_Hans/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Rumplin
239b8f4c71 Translated using Weblate (Slovenian)
Currently translated at 50.6% (444 of 877 strings)

Co-authored-by: Rumplin <rumplin@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/sl/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Abner Santana
5b277ce4a4 Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.8% (876 of 877 strings)

Co-authored-by: Abner Santana <abnerss@outlook.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pt_BR/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
AmadeusGraves
3962617d74 Translated using Weblate (Spanish)
Currently translated at 99.4% (872 of 877 strings)

Co-authored-by: AmadeusGraves <angelfx19@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/es/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Gunnar Norin
2f982aad53 Translated using Weblate (Swedish)
Currently translated at 86.5% (759 of 877 strings)

Translated using Weblate (Swedish)

Currently translated at 86.3% (757 of 877 strings)

Translated using Weblate (English)

Currently translated at 100.0% (877 of 877 strings)

Translated using Weblate (Swedish)

Currently translated at 49.0% (430 of 877 strings)

Co-authored-by: Gunnar Norin <gunnar.norin@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/en/
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/sv/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Marco
1b1ceeae1d Translated using Weblate (German (Switzerland))
Currently translated at 100.0% (877 of 877 strings)

Co-authored-by: Marco <marco@nanoweb.ch>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de_CH/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Alanimdeo
85138679b1 Translated using Weblate (Korean)
Currently translated at 83.1% (729 of 877 strings)

Co-authored-by: Alanimdeo <alan@imdeo.kr>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ko/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
abosaad11
9fb92123e5 Translated using Weblate (Arabic)
Currently translated at 83.7% (722 of 862 strings)

Co-authored-by: abosaad11 <abosaad@hotmail.co.uk>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ar/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
bjornclauw
0bba5810a4 Translated using Weblate (Dutch)
Currently translated at 100.0% (862 of 862 strings)

Co-authored-by: bjornclauw <bjorn.clauw.1@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/nl/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
MaxX
6c95140db1 Translated using Weblate (Vietnamese)
Currently translated at 56.3% (486 of 862 strings)

Translated using Weblate (Thai)

Currently translated at 75.2% (649 of 862 strings)

Translated using Weblate (Slovenian)

Currently translated at 42.2% (364 of 862 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 31.6% (273 of 862 strings)

Translated using Weblate (Basque)

Currently translated at 64.6% (557 of 862 strings)

Co-authored-by: MaxX <github@levantinlynx.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/eu/
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/nb_NO/
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/sl/
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/th/
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/vi/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Bartosz Gajdemski
8fc693dab3 Translated using Weblate (Polish)
Currently translated at 99.6% (859 of 862 strings)

Co-authored-by: Bartosz Gajdemski <veroneczek@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pl/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Gregor Godler
406e5d5fdd Translated using Weblate (Slovenian)
Currently translated at 41.6% (359 of 861 strings)

Co-authored-by: Gregor Godler <gregor@godler.si>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/sl/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
aditya wahyudi
b801d22cd3 Translated using Weblate (Indonesian)
Currently translated at 100.0% (861 of 861 strings)

Co-authored-by: aditya wahyudi <aditbaco@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/id/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Harry Suryapambagya
a3bb0243cf Translated using Weblate (Indonesian)
Currently translated at 99.8% (876 of 877 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (861 of 861 strings)

Co-authored-by: Harry Suryapambagya <harsxv@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/id/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Marcus Vechiato
1f441fa3a4 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (861 of 861 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (861 of 861 strings)

Co-authored-by: Marcus Vechiato <vechiato@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pt_BR/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Buchtič
b0a771e341 Translated using Weblate (Czech)
Currently translated at 100.0% (861 of 861 strings)

Co-authored-by: Buchtič <martin.buchta@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/cs/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
0n1cOn3
0065effc26 Translated using Weblate (German (Switzerland))
Currently translated at 100.0% (861 of 861 strings)

Co-authored-by: 0n1cOn3 <0n1cOn3@gmx.ch>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de_CH/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
geovanedev5
976b6e684b Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.7% (859 of 861 strings)

Co-authored-by: geovanedev5 <geovanedev5@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pt_BR/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
william luqui
3e14c77b59 Translated using Weblate (Portuguese)
Currently translated at 5.8% (50 of 861 strings)

Co-authored-by: william luqui <william.luqui@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pt/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Jochem Pluim
e21aa12fb1 Translated using Weblate (Dutch)
Currently translated at 100.0% (861 of 861 strings)

Translated using Weblate (Dutch)

Currently translated at 95.2% (820 of 861 strings)

Translated using Weblate (English)

Currently translated at 100.0% (861 of 861 strings)

Co-authored-by: Jochem Pluim <jochem@pluim.nu>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/en/
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/nl/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Peter Dave Hello
d53d818321 Translated using Weblate (Chinese (Traditional))
Currently translated at 98.7% (866 of 877 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 99.8% (860 of 861 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 87.6% (755 of 861 strings)

Co-authored-by: Peter Dave Hello <hsu@peterdavehello.org>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/zh_Hant/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
sander732
05eb5b0884 Translated using Weblate (Dutch)
Currently translated at 90.8% (782 of 861 strings)

Co-authored-by: sander732 <eligiussander@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/nl/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Haim Cohen
2f595e464b Translated using Weblate (Hebrew)
Currently translated at 0.1% (1 of 861 strings)

Translated using Weblate (Hebrew (Israel))

Currently translated at 86.5% (745 of 861 strings)

Added translation using Weblate (Hebrew)

Co-authored-by: Haim Cohen <haim1979@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/he/
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/he_IL/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Listum
b63305315a Translated using Weblate (Russian)
Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (859 of 859 strings)

Co-authored-by: Listum <listum@orudo.ru>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ru/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
G'olib Narzullayev
60503d0676 Translated using Weblate (Uzbek)
Currently translated at 10.9% (94 of 861 strings)

Translated using Weblate (Uzbek)

Currently translated at 8.6% (74 of 859 strings)

Translated using Weblate (Uzbek)

Currently translated at 0.2% (2 of 859 strings)

Co-authored-by: G'olib Narzullayev <gnarzullayev2000@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/uz/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Alex Campo
9113c049d4 Translated using Weblate (Portuguese (Brazil))
Currently translated at 96.8% (832 of 859 strings)

Co-authored-by: Alex Campo <alex.mdcampo@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pt_BR/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Kisem
b7ab17bf5e Translated using Weblate (Hungarian)
Currently translated at 63.3% (544 of 859 strings)

Co-authored-by: Kisem <kiss.m.aron@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/hu/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Andy Chatziliadis
61f32f5bbe Translated using Weblate (Greek)
Currently translated at 77.9% (670 of 859 strings)

Co-authored-by: Andy Chatziliadis <chatzeiliadis@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/el/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Michal
3dbc15cb69 Translated using Weblate (Czech)
Currently translated at 99.4% (856 of 861 strings)

Translated using Weblate (Czech)

Currently translated at 97.9% (841 of 859 strings)

Co-authored-by: Michal <black23@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/cs/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
AnnAngela
caf4584311 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (877 of 877 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.0% (860 of 877 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (861 of 861 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (859 of 859 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (858 of 858 strings)

Co-authored-by: AnnAngela <naganjue@vip.qq.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/zh_Hans/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
wc7086
2637f6665b Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (858 of 858 strings)

Co-authored-by: wc7086 <j19981106@protonmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/zh_Hans/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Bond
cfe35c382e Translated using Weblate (Vietnamese)
Currently translated at 56.5% (485 of 858 strings)

Co-authored-by: Bond <xuantan97@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/vi/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Marco
643ebea0a6 Translated using Weblate (German)
Currently translated at 100.0% (877 of 877 strings)

Translated using Weblate (German (Switzerland))

Currently translated at 100.0% (877 of 877 strings)

Translated using Weblate (German)

Currently translated at 100.0% (877 of 877 strings)

Translated using Weblate (German (Switzerland))

Currently translated at 100.0% (877 of 877 strings)

Translated using Weblate (German)

Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (German (Switzerland))

Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (German (Switzerland))

Currently translated at 100.0% (861 of 861 strings)

Translated using Weblate (German)

Currently translated at 100.0% (861 of 861 strings)

Translated using Weblate (German (Switzerland))

Currently translated at 100.0% (861 of 861 strings)

Translated using Weblate (German)

Currently translated at 100.0% (859 of 859 strings)

Translated using Weblate (German (Switzerland))

Currently translated at 100.0% (859 of 859 strings)

Translated using Weblate (German)

Currently translated at 100.0% (858 of 858 strings)

Co-authored-by: Marco <marco@nanoweb.ch>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de/
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de_CH/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Алексей Добрый
92324e94da Translated using Weblate (Russian)
Currently translated at 97.8% (823 of 841 strings)

Co-authored-by: Алексей Добрый <support@diera.ru>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ru/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Regis Vieira Delgado
43bfb366f2 Translated using Weblate (Portuguese (Brazil))
Currently translated at 95.8% (806 of 841 strings)

Co-authored-by: Regis Vieira Delgado <finallf@hotmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pt_BR/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
DevMirza
5820c472cb Translated using Weblate (Punjabi)
Currently translated at 0.5% (5 of 861 strings)

Translated using Weblate (Punjabi (Pakistan))

Currently translated at 1.1% (10 of 861 strings)

Translated using Weblate (Urdu)

Currently translated at 62.4% (538 of 861 strings)

Translated using Weblate (Urdu)

Currently translated at 61.3% (528 of 861 strings)

Translated using Weblate (Punjabi (Pakistan))

Currently translated at 0.4% (4 of 841 strings)

Translated using Weblate (Urdu)

Currently translated at 60.2% (507 of 841 strings)

Added translation using Weblate (Punjabi)

Added translation using Weblate (Punjabi (Pakistan))

Co-authored-by: DevMirza <pzhafeez@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pa/
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pa_PK/
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ur/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
AnnAngela
127608ffe9 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (841 of 841 strings)

Co-authored-by: AnnAngela <naganjue@vip.qq.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/zh_Hans/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
stanol
917b20fe3d Translated using Weblate (Ukrainian)
Currently translated at 100.0% (877 of 877 strings)

Translated using Weblate (Ukrainian)

Currently translated at 99.8% (876 of 877 strings)

Translated using Weblate (Ukrainian)

Currently translated at 99.8% (876 of 877 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (861 of 861 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (861 of 861 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (859 of 859 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (858 of 858 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (841 of 841 strings)

Co-authored-by: stanol <stanol777@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/uk/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:32 +00:00
Ömer Faruk Genç
221f625db1 Translated using Weblate (Turkish)
Currently translated at 100.0% (877 of 877 strings)

Translated using Weblate (Turkish)

Currently translated at 99.8% (876 of 877 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (861 of 861 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (861 of 861 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (859 of 859 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (858 of 858 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (841 of 841 strings)

Co-authored-by: Ömer Faruk Genç <omer@farukgenc.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/tr/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:31 +00:00
Adam Stachowicz
45c83fdd49 Translated using Weblate (Polish)
Currently translated at 100.0% (858 of 858 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (841 of 841 strings)

Co-authored-by: Adam Stachowicz <saibamenppl@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pl/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:31 +00:00
Davide Pirelli
a06d88832c Translated using Weblate (Italian)
Currently translated at 76.2% (641 of 841 strings)

Co-authored-by: Davide Pirelli <info@inkstudio.it>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/it/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:31 +00:00
OlevO1
59cadc20d0 Translated using Weblate (Hungarian)
Currently translated at 58.8% (495 of 841 strings)

Co-authored-by: OlevO1 <imagyarcsik@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/hu/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:31 +00:00
Ivan Bratović
2557cd3c3e Translated using Weblate (Croatian)
Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (861 of 861 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (859 of 859 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (841 of 841 strings)

Co-authored-by: Ivan Bratović <ivanbratovic4@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/hr/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:31 +00:00
Cyril59310
8b1324493e Translated using Weblate (French)
Currently translated at 100.0% (877 of 877 strings)

Translated using Weblate (French)

Currently translated at 100.0% (877 of 877 strings)

Translated using Weblate (French)

Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (French)

Currently translated at 100.0% (861 of 861 strings)

Translated using Weblate (French)

Currently translated at 100.0% (861 of 861 strings)

Translated using Weblate (French)

Currently translated at 100.0% (859 of 859 strings)

Translated using Weblate (French)

Currently translated at 100.0% (858 of 858 strings)

Translated using Weblate (French)

Currently translated at 100.0% (841 of 841 strings)

Co-authored-by: Cyril59310 <archas.cyril@hotmail.fr>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/fr/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:31 +00:00
Louis Lam
f80168e0de Translated using Weblate (Uzbek)
Currently translated at 0.2% (2 of 859 strings)

Added translation using Weblate (Uzbek)

Translated using Weblate (German)

Currently translated at 100.0% (841 of 841 strings)

Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de/
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/uz/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:31 +00:00
Marco
332bc43bbc Translated using Weblate (German (Switzerland))
Currently translated at 100.0% (858 of 858 strings)

Translated using Weblate (German)

Currently translated at 100.0% (841 of 841 strings)

Translated using Weblate (German (Switzerland))

Currently translated at 100.0% (841 of 841 strings)

Co-authored-by: Marco <marco@nanoweb.ch>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de/
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de_CH/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:31 +00:00
simonghpub
d28627e855 Translated using Weblate (Danish)
Currently translated at 75.3% (634 of 841 strings)

Co-authored-by: simonghpub <simonpmt@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/da/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:31 +00:00
MrEddX
26c3b79d5c Translated using Weblate (Bulgarian)
Currently translated at 100.0% (877 of 877 strings)

Translated using Weblate (Bulgarian)

Currently translated at 100.0% (877 of 877 strings)

Translated using Weblate (Bulgarian)

Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (Bulgarian)

Currently translated at 100.0% (861 of 861 strings)

Translated using Weblate (Bulgarian)

Currently translated at 100.0% (859 of 859 strings)

Translated using Weblate (Bulgarian)

Currently translated at 100.0% (858 of 858 strings)

Translated using Weblate (Bulgarian)

Currently translated at 100.0% (841 of 841 strings)

Co-authored-by: MrEddX <mreddx@chatrix.one>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/bg/
Translation: Uptime Kuma/Uptime Kuma
2023-12-15 10:18:31 +00:00
Louis Lam
207847505a 1.23.10 to master (#4226) 2023-12-13 02:10:04 +08:00
Louis Lam
1a47563eb8 Merge branch '1.23.X' into version-merge
# Conflicts:
#	package-lock.json
#	package.json
#	server/server.js
#	server/uptime-kuma-server.js
2023-12-13 01:54:08 +08:00
Nelson Chan
4185ec20b0 Fix: Origin undefined on error handling (#4224) 2023-12-13 01:35:39 +08:00
Louis Lam
4245ea86e7 Update to 1.23.10 2023-12-13 00:55:58 +08:00
Louis Lam
f861a48dfc Smoothing the update for origin check (#4216) 2023-12-12 16:23:41 +08:00
Louis Lam
fa1214ae5e Rebse #4213 (#4215)
Co-authored-by: Nelson Chan <chakflying@hotmail.com>
2023-12-11 19:30:01 +08:00
Nelson Chan
99adac3eb9 Fix: typo for disconnectAllSocketClients (#4213) 2023-12-11 19:26:20 +08:00
Nelson Chan
89beb5f264 Fix: Handle trailing slash for status page routing (#4185)
* Fix: Handle trailing slash

* Chore: Add desc for default slug

* Chore: Use margin instead of space

* Minor
2023-12-11 03:05:13 +08:00
Louis Lam
65e57e5621 Merge pull request #4208 from louislam/1.23.X-merge-to-2.X.X
1.23.9 changes merge to master
2023-12-11 02:40:12 +08:00
Louis Lam
719ef856e8 Merge manually 2023-12-11 02:36:08 +08:00
Louis Lam
869ee8ec50 Merge branch '1.23.X' into 1.23.X-merge-to-2.X.X
# Conflicts:
#	.github/workflows/auto-test.yml
#	extra/reset-password.js
#	package-lock.json
#	package.json
#	server/routers/status-page-router.js
#	server/server.js
#	server/socket-handlers/general-socket-handler.js
#	server/uptime-kuma-server.js
#	src/components/ActionInput.vue
#	src/util.js
#	src/util.ts
2023-12-11 02:13:47 +08:00
Louis Lam
530c8e5328 Drop cacheable-lookup (#4178)
* WIP

* WIP
2023-12-11 02:01:56 +08:00
Louis Lam
621419e434 Update to 1.23.9 2023-12-10 20:43:29 +08:00
Louis Lam
482049c72b Merge pull request from GHSA-88j4-pcx8-q4q3
* WIP, still need to handle npm run reset-password

* Implement it for "npm run reset-password"

Bug fixes and change along with this commit
- Move `ssl`, `hostname`, `port` to ./server/config.js, so `reset-password` is able to read it
- Fix: FBSD is missing, no idea who dropped it.
- Fix: Frontend code should not require any backend code (./server/config.js), moved "badgeConstants" to the common util (./src/util.ts) and drop vite-common.js

* Minor
2023-12-10 20:40:40 +08:00
Louis Lam
2815cc73cf Merge pull request from GHSA-mj22-23ff-2hrr
* WIP

* WIP

* Handle parsing error

* Fix matching origin issue
2023-12-10 20:39:43 +08:00
Cyril59310
97ed0a96d8 Missing translation key (#4200) 2023-12-10 14:33:01 +08:00
Louis Lam
e1147c06aa Update denpendecies 2023-12-10 02:45:42 +08:00
Ritik Singh
abc8f2b131 Fix: Correct Maintenance Start/End Time Input to Use Explicitly Specified Timezone (#4186) 2023-12-09 18:27:07 +08:00
Nelson Chan
46b300808d Chore: Fix console colors & add JSDoc (#4170) 2023-12-09 17:48:25 +08:00
Frank Elsinga
777ef6bc7b chore: added a helptext for ntfy's priority field (#4175)
* added a helptext for `ntfy`'s `priority` field

* linting fixes

* removed an unnecessary `Math.max` call
2023-12-09 17:37:33 +08:00
Louis Lam
b244e8fcbb Re-export the icon on vectr.com, so it can be editable again. The current icon.svg was reduced size by a contributor previously, but the border is detached after that, which cannot edit by any svg editor anymore. 2023-12-09 04:24:19 +08:00
Louis Lam
ad4629cb03 Fix UPTIME_KUMA_DB_NAME issue (#4169) 2023-12-05 05:16:55 +08:00
Duvergier Claude
478403ef63 Adding a way to reset the admin password via CLI without any user interaction (#3912)
* feat(cli): Allow unattended password reset via CLI

This commit adds a way to reset the admin password via CLI without any
user interaction (unattended operation).

It adds an optional `new_password` CLI argument that, when present is
used instead of prompting the user for password and password
confirmation.

It also makes sure the user is informed the password could leak into
it's shell history (it's up to him to do some cleaning if
needed/wanted).

* Change to dash style

* Add dry-run

* Fix number password issue

---------

Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-12-05 04:23:42 +08:00
Nelson Chan
81b84a3c53 Fix: Filtering works with group monitors (again) (#3685)
* Fix: Group monitors use nested filtering

* Chore: Fix lint
2023-12-05 04:04:54 +08:00
Frank Elsinga
031947319a Add an aria-label to the monitor search box (#4163)
* added the `Search monitored sites` label

* rebase
2023-12-05 01:15:28 +08:00
Adam Stachowicz
74a908a069 Max ESLint warnings 0 (#4158)
* Fix ESLint warnings. Update workflows. 0 ESLint warnings for auto-test

* json-yaml-validate: Fix `unable to find version `v2``
2023-12-04 18:19:18 +08:00
Louis Lam
20a68a16f5 Update CONTRIBUTING.md 2023-12-04 02:32:11 +08:00
Louis Lam
8aa497fb89 Update actions/stale from v7 to v8 and disable it for pull request 2023-12-04 02:11:52 +08:00
Frank Elsinga
9c56c9b346 Fixed the buttons of ActionsSelect and ActionsInput having a default type="submit" (#4162)
* fixed the buttons having a default type="submit"

* fixed linting issue
2023-12-04 01:15:40 +08:00
DevMirza
db7a92a74c 🐛 fix(remote-browser): Remove unused test() function (#4155)
* fix

* fix lint

* Update Notifications.vue

* Update ActionInput.vue
2023-12-03 20:27:09 +08:00
Nelson Chan
46432618e1 Feat: Add json-query to MQTT monitor type (#3857)
* Feat: Add json-query MQTT monitor type

* Fix: Allow result to be null

* Fix: Remove unused parameter

* Chore: Update JSDoc

* Fix: Add default if checkType is not set

---------

Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-12-03 01:36:19 +08:00
Nelson Chan
35479c7690 Fix: Disable timezone conversion for mariadb (#3756) 2023-12-03 01:34:26 +08:00
Louis Lam
7772a546db Merge 1.23.8 (#4142)
1.23.x merge to master
2023-12-02 18:47:26 +08:00
Louis Lam
c3260bbf51 Merge lock file 2023-12-02 18:43:41 +08:00
Louis Lam
c5d9c54a04 Merge branch 'master' into 1.23.X-merge-to-2.X.X-2
# Conflicts:
#	package.json
2023-12-02 18:43:06 +08:00
Louis Lam
0110c4d57a Merge branch '1.23.X' into 1.23.X-merge-to-2.X.X-2
# Conflicts:
#	package-lock.json
#	package.json
2023-12-02 18:42:40 +08:00
Louis Lam
81c9900e23 Merge branch '1.23.X' into 1.23.X-merge-to-2.X.X-2
# Conflicts:
#	docker/debian-base.dockerfile
2023-12-01 15:50:35 +08:00
Adam Hancock
62780001f7 Feature: remote browser support (#3904)
* [empty commit] pull request for remote browser support

* Remote browser: Added UI screens and DB tables.

* Remote browser working

* Fixing tests

* Fix tests

* Fix tests

* fix tests

* Test browser

* revert init_db.js

* Changed drop down to ActionSelect

* Fix translations

* added remote browsers toggle

* revert changes package-lock

* Fix bad english

* Set default remote browser

* Remote browsers Requested changes

* fixed description.
2023-12-01 15:29:10 +08:00
Louis Lam
0294118cbf Update README.md 2023-11-30 20:37:07 +08:00
Nenad Gal
01855e0ffe monitor path as a notification title mattermost (#3801) 2023-11-30 15:58:01 +08:00
dakriy
80efe9b831 Handle cookies on redirection (#3589)
* feat: Set and send cookies on redirection (louislam#3587).

* feat: Make proxy agents handle cookies

* Merge package-lock.json

* Merge package-lock.json

* Fix lint

---------

Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-11-29 17:25:33 +08:00
Nelson Chan
b8bd17ddbd Fix: Add timeout to testDockerHost (#4097) 2023-11-26 18:47:56 +08:00
Ikko Eltociear Ashimine
2ad8af9d14 Minor (#4104)
infomation -> information
2023-11-25 22:08:21 +08:00
Louis Lam
5bc8c0c66f Merge 1.23.7 (#4102)
1.23.x merge to 2.x.x
2023-11-25 03:32:12 +08:00
Louis Lam
60be875edd Fix a merge issue 2023-11-25 03:28:45 +08:00
Louis Lam
676587b7fb Merge package-lock.json 2023-11-25 03:25:50 +08:00
Louis Lam
e9bf02fc2c Merge branch '1.23.X' into 1.23.X-merge-to-2.X.X-2
# Conflicts:
#	package-lock.json
#	package.json
#	server/model/monitor.js
#	server/monitor-types/tailscale-ping.js
#	server/socket-handlers/general-socket-handler.js
#	server/uptime-kuma-server.js
2023-11-25 03:25:03 +08:00
Nelson Chan
67250d6302 Feat: Retries persistence (#3814)
* Feat: Retries persistence

* Fix: Set duration for first beat of push monitor

* Feat: Update UptimeCalculator in push route

* Fix: Handle resend in push route

* Chore: Remove debug log
2023-11-24 18:11:36 +08:00
Adam Hancock
ac452bbcb9 Zoom in on real browser screenshot (#3925)
* Screenshot in modal

* Update src/components/ScreenshotDialog.vue

Co-authored-by: Frank Elsinga <frank@elsinga.de>

* Update src/pages/Details.vue

Co-authored-by: Frank Elsinga <frank@elsinga.de>

* Added title

* Update ScreenshotDialog.vue

Co-authored-by: Frank Elsinga <frank@elsinga.de>

* Add translations

---------

Co-authored-by: Frank Elsinga <frank@elsinga.de>
2023-11-24 02:58:33 +08:00
Louis Lam
dc42420193 Change version to 2.0.0-dev 2023-11-22 19:35:56 +08:00
Louis Lam
d810a74d70 Move rootless images to an another set (#4052) 2023-11-22 16:12:15 +08:00
Louis Lam
1550a5f792 Merge pull request #4064 from louislam/1.23.X-merge-to-2.X.X
1.23.x merge to 2.x.x
2023-11-20 14:50:37 +08:00
Louis Lam
92e0eec6d4 Merge branch '1.23.X' into 1.23.X-merge-to-2.X.X
# Conflicts:
#	package.json
#	server/model/monitor.js
2023-11-20 14:49:45 +08:00
Louis Lam
9973d73dd7 Fix a merge issue 2023-11-20 14:48:20 +08:00
Rakibul Yeasin
e2782810cf fix: Clickable link monitors aren't underlined when editing status page (#3820) 2023-11-20 14:45:34 +08:00
Louis Lam
2918f723c9 Merge pull request #4050 from louislam/1.23.X-merge-to-2.X.X
1.23.x merge to 2.x.x
2023-11-18 01:38:35 +08:00
Louis Lam
2aa15ea635 Merge branch '1.23.X' into 1.23.X-merge-to-2.X.X
# Conflicts:
#	server/database.js
2023-11-18 01:37:30 +08:00
William Harrison
2547515a37 feat: grammar fixes (#4042)
* feat: grammar fixes

* Update PULL_REQUEST_TEMPLATE.md
2023-11-16 20:31:20 +08:00
Louis Lam
014231ef86 Merge pull request #3883 from louislam/1.23.X-merge-to-2.X.X
Merge 1.23.4 changes to 2.0.0
2023-11-13 21:26:40 +08:00
Louis Lam
188fdcb6ad Merge branch 'master' into 1.23.X-merge-to-2.X.X
# Conflicts:
#	server/model/monitor.js
#	server/util-server.js
2023-11-13 21:25:49 +08:00
Louis Lam
0f980e97b1 Merge dependencies 2023-11-13 21:25:00 +08:00
Louis Lam
65cbc7b318 Migrate kafka_producer patch 2023-11-13 21:19:43 +08:00
Louis Lam
ace1fe00c2 Merge branch 'master' into 1.23.X-merge-to-2.X.X
# Conflicts:
#	docker/debian-base.dockerfile
#	package-lock.json
#	server/database.js
#	server/model/monitor.js
#	server/uptime-kuma-server.js
#	server/util-server.js
2023-11-13 21:15:51 +08:00
Nelson Chan
5b6522a54e Fix: entryPage setting can be null (#3994) 2023-11-08 20:46:10 +08:00
Nelson Chan
b534fde265 Fix: Use ActionSelect for Docker Host & validate input (#3864)
* Fix: Use ActionSelect Docker Host & validate input

* Fix: Handle docker host deleted while editing

* UI: Use add for ActionSelect & prevent delete instead
2023-11-03 21:25:28 +08:00
Nelson Chan
fdfb572e09 Fix: Add axios abort signal (#3961)
* Fix: Add axios abort signal

* Chore: Fix comment
2023-11-01 09:48:13 +08:00
Louis Lam
df832f15fe Add Uzbek language (#3959)
* Add uz

* Update i18n.js
2023-10-30 09:23:47 +08:00
Louis Lam
d7b9bcf4b4 Drop install.sh and related files (#3955) 2023-10-29 15:28:47 +08:00
Nelson Chan
201c10416e Fix: Entry page setting in Dev mode (#3940) 2023-10-28 10:34:15 +08:00
check bot
b32d869823 Fix: sentence framing (#3945) 2023-10-28 08:16:53 +08:00
Chongyi Zheng
ddd135efa8 Confirm chrome path in macOS is correct (#3950) 2023-10-28 08:15:49 +08:00
Nelson Chan
9379498b49 Chore: Allow MS Edge for real-browser monitor (#3941) 2023-10-27 18:46:13 +08:00
Louis Lam
87b2e45fbf Check if the password changed when user is not null 2023-10-22 00:51:03 +08:00
atmaniak
9b599ccd1d Add Grafana Oncall notification provider (#2783)
* Add Grafana Oncall notification provider

* Fix linter errors

* Remove useless variables

* Remove test message

Co-authored-by: Frank Elsinga <frank@elsinga.de>

* spelling consistency

* Update server/notification-providers/grafana-oncall.js

Co-authored-by: Frank Elsinga <frank@elsinga.de>

* Update server/notification-providers/grafana-oncall.js

Co-authored-by: Frank Elsinga <frank@elsinga.de>

* eslint requirements

Co-authored-by: Matthew Nickson <mnickson@sidingsmedia.com>

* Add Grafana Oncall translation

* Update src/components/notifications/GrafanaOncall.vue

Co-authored-by: Frank Elsinga <frank@elsinga.de>

* Check empty url

---------

Co-authored-by: Emmanuel Cohen <emmanuel.cohen@bso.co>
Co-authored-by: Frank Elsinga <frank@elsinga.de>
Co-authored-by: Matthew Nickson <mnickson@sidingsmedia.com>
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-10-19 19:32:42 +08:00
Louis Lam
8412e19fe6 Add a comment 2023-10-19 09:41:30 +08:00
Louis Lam
bbaba29222 Set default ua for axios: Uptime-Kuma/version instead of axios/version 2023-10-18 21:54:49 +08:00
Louis Lam
e11aad2d60 Add some comments 2023-10-18 21:54:48 +08:00
DevMirza
8c7dea5219 🚀 Add CodeQL Action to analyze code (#3910)
* Create codeql-analysis.yml

* Update codeql-analysis.yml
2023-10-18 18:45:14 +08:00
Louis Lam
adc3548e9d Update README.md 2023-10-17 20:23:58 +08:00
Frank Elsinga
1515f4e121 chore:Webhook custom documentation (#3636)
* improved the documentation

* fixed the `customBodyPlaceholder` not being translated

* fixed required not being set where necessary

* changed the docs that `monitorJSON` is also avalibale for cert-expiry
2023-10-16 22:24:47 +08:00
Frank Elsinga
3fcb7bf181 Feature: SMTP-templating of customBody and customHeader via liquidjs (#3414)
* replaced the regex replacement engine with `Liquid`

* added custom bodys

* fixed a typo

* formatting fixes

* switched all template-variables to be camelCase
2023-10-16 22:16:49 +08:00
Louis Lam
579d7232c9 Translate login error 2023-10-15 01:35:27 +08:00
Louis Lam
966dfa6f88 Drop backup (#3892)
* Drop backup

* Fix warning
2023-10-14 23:38:31 +08:00
Louis Lam
8e441dd8f7 Follow up #3263 (#3847) 2023-10-14 19:00:27 +08:00
Louis Lam
9ebf4f97bb Add npm run start-server-dev:watch 2023-10-14 17:50:54 +08:00
Louis Lam
a362206fab Fix: do not colorize non-string log message 2023-10-14 17:48:41 +08:00
Nelson Chan
f6bdaacbba Fix: Clear toasts button blocked by bottom bar (#3863)
* Fix: Clear toasts button blocked

* Chore: Fix lint
2023-10-14 16:52:38 +08:00
Louis Lam
03e43ab364 Log color and simplify startup log for production (#3889) 2023-10-14 03:00:34 +08:00
Louis Lam
7212d884ef Enable eslint for util.ts (#3887)
* Enable eslint for util.ts

* Drop babel (since eslint parser was replaced by typescript-parser and it doesn't seem to be used anywhere)

* Apply "plugin:@typescript-eslint/recommended"

* Minor

* Remove comment for generated file (Keep the first comment only)
2023-10-13 22:42:45 +08:00
Louis Lam
aa676150eb Fix shutdown issue and tidy up 2023-10-12 21:26:11 +08:00
Louis Lam
a3a81f8059 Merge pull request #3659 from UptimeKumaBot/weblate-uptime-kuma-uptime-kuma
Translations Update from Weblate
2023-10-11 21:04:07 +08:00
simonghpub
4e401faefb Translated using Weblate (Danish)
Currently translated at 71.5% (601 of 840 strings)

Translated using Weblate (Danish)

Currently translated at 70.8% (595 of 840 strings)

Translated using Weblate (Danish)

Currently translated at 70.8% (595 of 840 strings)

Co-authored-by: simonghpub <simonpmt@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/da/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Andrea Biasi
53710b5f26 Translated using Weblate (Italian)
Currently translated at 70.2% (590 of 840 strings)

Co-authored-by: Andrea Biasi <andrea.biasi@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/it/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Muhammad Ari Al Ghifari
07a7233e6c Translated using Weblate (Indonesian)
Currently translated at 90.9% (764 of 840 strings)

Co-authored-by: Muhammad Ari Al Ghifari <ari@alfari.id>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/id/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Dim
d7797b8086 Translated using Weblate (French)
Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (French)

Currently translated at 100.0% (823 of 823 strings)

Co-authored-by: Dim <DimitriDR@users.noreply.weblate.kuma.pet>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/fr/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Nelson Chan
e9efbaa1df Translated using Weblate (Chinese (Traditional))
Currently translated at 91.8% (756 of 823 strings)

Translated using Weblate (Chinese (Traditional, Hong Kong))

Currently translated at 87.9% (724 of 823 strings)

Translated using Weblate (English)

Currently translated at 100.0% (823 of 823 strings)

Co-authored-by: Nelson Chan <chakflying@hotmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/en/
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/zh_Hant/
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/zh_Hant_HK/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Jesper
e0ffdb8371 Translated using Weblate (Swedish)
Currently translated at 45.3% (373 of 823 strings)

Co-authored-by: Jesper <jesper.bjorkbrant@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/sv/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
AmadeusGraves
87d595760d Translated using Weblate (Spanish)
Currently translated at 100.0% (820 of 820 strings)

Co-authored-by: AmadeusGraves <angelfx19@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/es/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Michal
6b81554281 Translated using Weblate (Czech)
Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Czech)

Currently translated at 99.6% (837 of 840 strings)

Translated using Weblate (Czech)

Currently translated at 99.7% (818 of 820 strings)

Co-authored-by: Michal <black23@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/cs/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Yoswaris Lawpaiboon
b70b8b8f12 Translated using Weblate (Thai)
Currently translated at 79.4% (651 of 819 strings)

Co-authored-by: Yoswaris Lawpaiboon <konglha19@outlook.co.th>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/th/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
AlwaleedAlwabel
0e97721c13 Translated using Weblate (Arabic)
Currently translated at 83.2% (682 of 819 strings)

Co-authored-by: AlwaleedAlwabel <xomsd1@hotmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ar/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Alexandre
bfaa6fd86a Translated using Weblate (Portuguese (Brazil))
Currently translated at 96.5% (791 of 819 strings)

Co-authored-by: Alexandre <alexandre@lopes.eng.br>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pt_BR/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Ivan Bratović
b0421e9651 Translated using Weblate (Croatian)
Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (820 of 820 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (819 of 819 strings)

Translated using Weblate (Croatian)

Currently translated at 98.0% (803 of 819 strings)

Co-authored-by: Ivan Bratović <ivanbratovic4@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/hr/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Rasmus Uhrskov
8691d171cf Translated using Weblate (Danish)
Currently translated at 68.4% (561 of 819 strings)

Co-authored-by: Rasmus Uhrskov <rasmus@outscale.dk>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/da/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
KDY
820950fced Translated using Weblate (Korean)
Currently translated at 88.7% (727 of 819 strings)

Co-authored-by: KDY <admin@gjan.info>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ko/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Marco
b8efc8603e Translated using Weblate (German)
Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (German (Switzerland))

Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (German)

Currently translated at 100.0% (823 of 823 strings)

Translated using Weblate (German (Switzerland))

Currently translated at 100.0% (823 of 823 strings)

Translated using Weblate (German)

Currently translated at 100.0% (820 of 820 strings)

Translated using Weblate (German (Switzerland))

Currently translated at 100.0% (820 of 820 strings)

Translated using Weblate (German)

Currently translated at 100.0% (819 of 819 strings)

Co-authored-by: Marco <marco@nanoweb.ch>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de/
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de_CH/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Vincent Peng
0ba2c1181a Translated using Weblate (Chinese (Traditional))
Currently translated at 92.3% (756 of 819 strings)

Co-authored-by: Vincent Peng <51seer.vincent@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/zh_Hant/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Buchtič
aecd95e72b Translated using Weblate (Czech)
Currently translated at 100.0% (815 of 815 strings)

Co-authored-by: Buchtič <martin.buchta@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/cs/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
MasatoSaitou
7c05ac6539 Translated using Weblate (Japanese)
Currently translated at 68.9% (562 of 815 strings)

Co-authored-by: MasatoSaitou <m3110.ebi@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ja/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Nathan Nogueira
ce4461d85b Translated using Weblate (Portuguese (Brazil))
Currently translated at 96.5% (791 of 819 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 93.8% (765 of 815 strings)

Co-authored-by: Nathan Nogueira <nathannogueira@hotmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pt_BR/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Alex Javadi
b6f7e3fe2a Translated using Weblate (Persian)
Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (820 of 820 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (815 of 815 strings)

Co-authored-by: Alex Javadi <15309978+aljvdi@users.noreply.github.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/fa/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Saimo
58bf3c784f Translated using Weblate (German)
Currently translated at 100.0% (815 of 815 strings)

Co-authored-by: Saimo <adam.yusupov@outlook.at>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Michal
f527f4b69d Translated using Weblate (Czech)
Currently translated at 99.7% (813 of 815 strings)

Co-authored-by: Michal <black23@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/cs/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
DoyunShin
bbca82845a Translated using Weblate (Korean)
Currently translated at 88.0% (718 of 815 strings)

Co-authored-by: DoyunShin <doyun.shin@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ko/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Marco
8cb6df2718 Translated using Weblate (German (Switzerland))
Currently translated at 100.0% (819 of 819 strings)

Translated using Weblate (German (Switzerland))

Currently translated at 100.0% (815 of 815 strings)

Translated using Weblate (German)

Currently translated at 100.0% (814 of 814 strings)

Co-authored-by: Marco <marco@nanoweb.ch>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de/
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de_CH/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
kennychan
58263c02af Translated using Weblate (Malay)
Currently translated at 6.3% (51 of 809 strings)

Co-authored-by: kennychan <me@kennychan.xyz>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ms/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Ömer Faruk Genç
2d51cfbbe2 Translated using Weblate (Turkish)
Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (823 of 823 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (823 of 823 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (820 of 820 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (819 of 819 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (815 of 815 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (814 of 814 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (809 of 809 strings)

Co-authored-by: Ömer Faruk Genç <omer@farukgenc.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/tr/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Wishw
8e5317fdd0 Translated using Weblate (Telugu)
Currently translated at 38.4% (311 of 809 strings)

Co-authored-by: Wishw <62600445+Wisw@users.noreply.github.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/te/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Lance
89cfa74163 Translated using Weblate (Chinese (Traditional))
Currently translated at 92.5% (749 of 809 strings)

Co-authored-by: Lance <2124757129@qq.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/zh_Hant/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
AnnAngela
05fb3d942c Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (823 of 823 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (820 of 820 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (819 of 819 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (815 of 815 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (814 of 814 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (809 of 809 strings)

Co-authored-by: AnnAngela <naganjue@vip.qq.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/zh_Hans/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
stanol
bef4452af3 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (823 of 823 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (820 of 820 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (819 of 819 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (815 of 815 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (814 of 814 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (809 of 809 strings)

Co-authored-by: stanol <stanol777@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/uk/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Christian O'Neill
cd4404ce3b Translated using Weblate (Swedish)
Currently translated at 44.6% (361 of 809 strings)

Co-authored-by: Christian O'Neill <oneill.christian97@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/sv/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
ITQ
2af35c161a Translated using Weblate (Russian)
Currently translated at 100.0% (823 of 823 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (815 of 815 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (809 of 809 strings)

Co-authored-by: ITQ <itq.dev@ya.ru>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ru/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Adam Stachowicz
e40b48be8e Translated using Weblate (Polish)
Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (815 of 815 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (809 of 809 strings)

Co-authored-by: Adam Stachowicz <saibamenppl@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pl/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Cyril59310
1adda5899c Translated using Weblate (French)
Currently translated at 100.0% (823 of 823 strings)

Translated using Weblate (French)

Currently translated at 100.0% (820 of 820 strings)

Translated using Weblate (French)

Currently translated at 100.0% (819 of 819 strings)

Translated using Weblate (French)

Currently translated at 100.0% (815 of 815 strings)

Translated using Weblate (French)

Currently translated at 100.0% (814 of 814 strings)

Translated using Weblate (French)

Currently translated at 100.0% (809 of 809 strings)

Co-authored-by: Cyril59310 <archas.cyril@hotmail.fr>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/fr/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
01Joel-Hazas
6d83385742 Translated using Weblate (Spanish)
Currently translated at 100.0% (809 of 809 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (809 of 809 strings)

Co-authored-by: 01Joel-Hazas <joel.hazas@outlook.es>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/es/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Asdrubal Duarte
fc01150af8 Translated using Weblate (Spanish)
Currently translated at 100.0% (809 of 809 strings)

Co-authored-by: Asdrubal Duarte <magyarlatin@gmail.com>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/es/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Alexander
2e3565b345 Translated using Weblate (German)
Currently translated at 100.0% (809 of 809 strings)

Co-authored-by: Alexander <info@torexit.in>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Marco
a410a9d142 Translated using Weblate (German (Switzerland))
Currently translated at 100.0% (814 of 814 strings)

Translated using Weblate (German (Switzerland))

Currently translated at 100.0% (809 of 809 strings)

Co-authored-by: Marco <marco@nanoweb.ch>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de_CH/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
MrEddX
b484c90176 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (840 of 840 strings)

Translated using Weblate (Bulgarian)

Currently translated at 98.2% (825 of 840 strings)

Translated using Weblate (Bulgarian)

Currently translated at 100.0% (823 of 823 strings)

Translated using Weblate (Bulgarian)

Currently translated at 100.0% (820 of 820 strings)

Translated using Weblate (Bulgarian)

Currently translated at 100.0% (819 of 819 strings)

Translated using Weblate (Bulgarian)

Currently translated at 100.0% (819 of 819 strings)

Translated using Weblate (Bulgarian)

Currently translated at 99.6% (811 of 814 strings)

Translated using Weblate (Bulgarian)

Currently translated at 100.0% (809 of 809 strings)

Co-authored-by: MrEddX <mreddx@chatrix.one>
Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/bg/
Translation: Uptime Kuma/Uptime Kuma
2023-10-11 11:28:16 +00:00
Andreas Brett
42bf27fe5a push monitor: increase token security (#912)
* increased pushToken security

* Merge manually

---------

Co-authored-by: Andreas Brett <github@abrett.de>
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-10-11 19:28:06 +08:00
DevMirza
67d0ef571d 🐛 fix: lint warnings & errors (#3862)
* fix: lint warnings & errors

* fix: lint warning

* fix: lint warnings

* Update user.js

* Update util-server.js

* Update server/util-server.js

Co-authored-by: Nelson Chan <3271800+chakflying@users.noreply.github.com>

* Update server/model/user.js

Co-authored-by: Nelson Chan <3271800+chakflying@users.noreply.github.com>

---------

Co-authored-by: Nelson Chan <3271800+chakflying@users.noreply.github.com>
2023-10-10 00:39:55 +08:00
Louis Lam
9d5cf5ea03 Fix merge conflict 2023-10-09 21:40:18 +08:00
Louis Lam
b59054454d Remove unused scripts 2023-10-09 21:37:16 +08:00
Louis Lam
c39043ec32 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	package-lock.json
2023-10-09 21:36:04 +08:00
Louis Lam
45b6fab313 Merge conflicts 2023-10-09 21:32:40 +08:00
Louis Lam
852b3fa61b Merge branch '1.23.X'
# Conflicts:
#	package-lock.json
#	server/database.js
#	server/server.js
#	server/util-server.js
2023-10-09 21:28:01 +08:00
Louis Lam
2fae40e677 Revert "Fix: Disable status page saving before getData (#3849)" (#3859)
This reverts commit b2439527de.
2023-10-09 06:40:16 +08:00
Nelson Chan
b2439527de Fix: Disable status page saving before getData (#3849) 2023-10-09 06:36:56 +08:00
Nelson Chan
5b7206f8e2 Fix: Wrong datatype for avgPing (#3724) 2023-10-09 02:33:32 +08:00
Louis Lam
99179c82d7 Drop @vitejs/plugin-legacy (#3858) 2023-10-09 01:20:37 +08:00
Louis Lam
3db418dcf6 Update README.md (#3856) 2023-10-08 21:52:45 +08:00
Louis Lam
91b4ffc6dd Minior 2023-10-07 20:52:19 +08:00
Nelson Chan
156614b303 Fix: Missing callbacks for batch pause/resume (#3813) 2023-10-06 03:52:16 +08:00
Adam Stachowicz
04b8681cfb Fix few markdownlint warnings (#3825) 2023-10-03 05:48:21 +08:00
mueller-ma
d5a3f7e385 Add LABEL to Docker image (#3802)
This label can be used to fetch more information about this image. For example Renovate uses this label to get the changelog of a specific version: https://docs.renovatebot.com/modules/datasource/docker/
2023-10-03 05:47:04 +08:00
Adam Stachowicz
6875ecdfbf Fix warnings (#3826) 2023-10-03 05:39:17 +08:00
0xflotus
5ea9766cd5 docs: fixed small error (#3835) 2023-10-02 18:51:25 +08:00
Frank Elsinga
e7980110fc chore:fixed the portable link in the readme (#3808) 2023-09-27 16:20:13 +08:00
Nelson Chan
2267655e99 Chore: Add remaining server translation keys (#3684) 2023-09-27 04:53:14 +08:00
Louis Lam
98b93c887a Show push example under the detail page (#3739) 2023-09-25 17:49:00 +08:00
Louis Lam
bef6a7911f Add GitHub Copilot Chat to devcontainer 2023-09-23 19:57:48 +00:00
Frank Elsinga
0fe8d04f78 made the way telegram handles axios errors like all the other notification providers (#3623) 2023-09-24 03:40:11 +08:00
Nelson Chan
7c49f7e5a6 Feat: Full server-side pagination for important events (#3515)
* Feat: Serverside pagination for importantBeats

* Chore: Remove unused state

* Apply suggestions from code review

Co-authored-by: Frank Elsinga <frank@elsinga.de>

* Fix: Add watch for monitor

* Fix: Fix compatibility with dynamic page length

* Chore: Fix lint

* Merge conflict

---------

Co-authored-by: Frank Elsinga <frank@elsinga.de>
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-09-23 19:03:45 +08:00
Chongyi Zheng
499429858c Use API v2 for Bark notification (#2759)
* Use API v2 for Bark notification

* API v2 endpoint should end with path `/push`

* Support both v1 and v2

* Flip the bool

* Allow selecting api version

* Apply review suggestion

Co-authored-by: Nelson Chan <3271800+chakflying@users.noreply.github.com>

* Add translated string to `en.json`

* Apply review suggestion

Co-authored-by: Nelson Chan <3271800+chakflying@users.noreply.github.com>

---------

Co-authored-by: Nelson Chan <3271800+chakflying@users.noreply.github.com>
2023-09-21 21:08:04 +08:00
Louis Lam
de7bc487ed Sync the column order 2023-09-21 20:41:16 +08:00
Floris-Jan
2266f31100 changed notification.config from varchar to text. (#3763) 2023-09-21 20:22:37 +08:00
Louis Lam
2ef759a362 Allow missing patch files for downgrade or testing pr. 2023-09-21 20:12:10 +08:00
Nelson Chan
33cc96f918 Fix: subtract time taken to run heartbeat (#3072) 2023-09-21 20:11:04 +08:00
Louis Lam
8c24b02fce Fix rebase-pr.js 2023-09-21 19:54:52 +08:00
Louis Lam
34b9fe2ffe A small tool for rebasing pr (#3781) 2023-09-21 19:38:51 +08:00
Louis Lam
4156c78c09 Update CONTRIBUTING.md 2023-09-21 17:41:46 +08:00
Louis Lam
38bcab67f9 Rollback eslint as a breaking change, just pin the version of eslint-plugin-jsdoc to avoid error 2023-09-18 04:09:17 +08:00
Louis Lam
22f5bb1684 Update eslint 2023-09-18 04:05:09 +08:00
Louis Lam
7a7783a266 Fix conflict 2023-09-18 03:30:40 +08:00
Louis Lam
59119b9e71 Merge branch '1.23.X'
# Conflicts:
#	package-lock.json
2023-09-18 03:26:59 +08:00
Nelson Chan
0d846be10e Fix: misc. styling fixes (#3757) 2023-09-17 20:43:09 +08:00
Louis Lam
9ef1e69ae0 Push Examples (#3735) 2023-09-13 20:03:12 +08:00
Louis Lam
9c24cd3973 Update README.md 2023-09-11 18:22:03 +08:00
Louis Lam
1654d13db9 Update CONTRIBUTING.md 2023-09-11 04:02:26 +08:00
DevMirza
82bad6deaa 🐛 fix: AutoTest workflow (#3725) 2023-09-10 18:33:55 +08:00
Louis Lam
83d91dbb1b Set mariadb timezone to UTC using +00:00 (#3723) 2023-09-10 18:33:09 +08:00
Louis Lam
13a799d778 [eslint] space-infix-ops = error 2023-09-10 02:06:06 +08:00
Frank Elsinga
7711679e1a made shure that all databse patches have the db-patch warning (#3624) 2023-09-10 00:28:53 +08:00
Louis Lam
faf8b5e7ce Fix prevent-file-change (#3722) 2023-09-09 19:45:11 +08:00
Louis Lam
fd680feb97 Prevent to modify lang files (#3720) 2023-09-09 19:25:09 +08:00
Frank Elsinga
d6af9162c1 Chore: Extracted the dns monitor to its own monitor-type (#3413)
* extracted the dns monitor to its own monitor-type

* linting fixes

* another formatting fix

* Fix: Improve dnsMessage handling (#3614)

* fixed docs

* fixed formatting changes
2023-09-09 18:14:55 +08:00
Anders Kvist
f0c54be43f Adding x-www-form-urlencoded (#3499)
* Adding x-www-form-urlencoded

* Adding example of x-www-form-urlencoding to body.

* A bit cleaner.

* Update server/model/monitor.js

Co-authored-by: Frank Elsinga <frank@elsinga.de>

* Update src/pages/EditMonitor.vue

Co-authored-by: Frank Elsinga <frank@elsinga.de>

* Update src/pages/EditMonitor.vue

Co-authored-by: Matthew Nickson <mnickson@sidingsmedia.com>

* Add simple test

---------

Co-authored-by: Anders Kvist <ak@cego.dk>
Co-authored-by: Frank Elsinga <frank@elsinga.de>
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
Co-authored-by: Matthew Nickson <mnickson@sidingsmedia.com>
2023-09-09 18:05:25 +08:00
Louis Lam
9f7f7a182e Minor 2023-09-07 16:35:31 +08:00
Frank Elsinga
d6302198f3 chore(jsdoc):Linting fixes (#3703)
* fixed the lockfile having a different version

* jsdoc
2023-09-07 15:42:44 +08:00
Louis Lam
d243cd84bf docker-compose change back to 1 2023-09-07 14:10:10 +08:00
Nelson Chan
f3e1a9c61a Fix: Incorrect database check in sqlHourOffset (#3706) 2023-09-07 14:00:49 +08:00
Louis Lam
a8bc0f8d6a Fix auto test (#3702) 2023-09-06 21:34:43 +08:00
Nelson Chan
bfc7b498be Feat: Toast notification timeout settings (#3441)
* Add toast timeout to the settings

Changing gui, adding timeout with a fix value

memo

rc

rollback readme

cleanup code

cleanup code

Review fixes

review fix 2

* Feat: Add clearAll button below toastContainer

* Feat: Load & Apply defaults, improve wording

Chore: Remove unused

* Feat: Change setting to affect monitor notif. only

* Apply suggestions from code review

Co-authored-by: Matthew Nickson <mnickson@sidingsmedia.com>

* Chore: Fix JSDoc

---------

Co-authored-by: Berczi Sandor <sandor.berczi@urss.hu>
Co-authored-by: Matthew Nickson <mnickson@sidingsmedia.com>
2023-09-06 19:52:54 +08:00
mueller-ma
62f4434711 Fix typo (#3694) 2023-09-06 01:35:47 +08:00
Louis Lam
33f7448048 Don't run worst case test on GitHub Actions (#3688)
* Don't run worst case test on GitHub Actions

* Deprecate jest
2023-09-05 02:08:18 +08:00
Louis Lam
9c61247162 Fix #3679 2023-09-04 21:32:48 +08:00
Louis Lam
ed04008569 Remove incorrect warning 2023-09-02 17:20:36 +08:00
Louis Lam
f3517bc08d Fix avg ping 2023-09-02 17:11:22 +08:00
Brandon De Rose
283d52a861 UI/UX: Added no tags found message to tags filter (#3676) 2023-09-02 14:14:14 +08:00
Louis Lam
6e887b056c Fix docker build issue in 2.0 2023-09-01 23:47:36 +08:00
Nelson Chan
52946c3e08 Feat: Translate toast messages by adding msgi18n to callbacks (#3263)
* WIP: Add msgTranslated to callbacks

* Chore: Unify Saved period

* Feat: add support for interpolation
2023-09-01 20:51:28 +08:00
Louis Lam
64b97c0f29 Lock to npm@9 (#3670) 2023-09-01 17:30:09 +08:00
Louis Lam
38f5f16dc7 [exe] Remove Costura.Fody 2023-09-01 16:29:05 +08:00
Jean-Paul van Houten - Bos
fd90828914 Added option to use --intranet to not download or update any files,… (#3350)
* Added option to use `--intranet` to not download or update any files, this can only be done after an initial run.

* Dropped some unneeded debug changes that I commited by accident

* Added conventional suggestions from Github.com comments

---------

Co-authored-by: Jean-Paul van Houten - Bos <jeanpaul.vhouten@koop.overheid.nl>
2023-09-01 16:20:00 +08:00
Louis Lam
42bba73ffe Merge pull request #2720 from louislam/2.0.X
2.0.0
2023-09-01 05:26:25 +08:00
Louis Lam
5061e42d4b Merge remote-tracking branch 'origin/2.0.X' into 2.0.X 2023-09-01 05:23:52 +08:00
Louis Lam
076331bf00 Uptime calculation improvement and 1-year uptime (#2750) 2023-09-01 05:19:21 +08:00
Louis Lam
a13fc7079e Merge branch 'master' into 2.0.X
# Conflicts:
#	package-lock.json
2023-08-30 01:39:16 +08:00
Louis Lam
eec221247f Merge branch 'master' into 2.0.X 2023-08-18 04:19:29 +08:00
Louis Lam
31c00081fa Merge branch 'master' into 2.0.X 2023-08-16 16:14:04 +08:00
Louis Lam
db3a7d69fe Change some jsdoc rule to warn instead of error 2023-08-11 22:29:45 +08:00
Louis Lam
d33b4f46e4 Disable e2e test temporarily and update some docs 2023-08-11 22:17:31 +08:00
Louis Lam
dd62bd3d91 Move patch files 2023-08-11 22:08:45 +08:00
Matthew Nickson
8a92054c2b Added JSDoc to ESLint (#3529)
* Added JSDoc to eslint rules

Signed-off-by: Matthew Nickson <mnickson@sidingsmedia.com>

* Fixed JSDoc eslint errors

Signed-off-by: Matthew Nickson <mnickson@sidingsmedia.com>

* Update the check-linters workflow to Node.js 20

---------

Signed-off-by: Matthew Nickson <mnickson@sidingsmedia.com>
Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
2023-08-11 15:46:41 +08:00
Louis Lam
da4f4e3d76 Update migrations 2023-08-09 21:07:23 +08:00
Louis Lam
e001fd7d1c incrementalVacuum for sqlite only 2023-08-09 21:05:15 +08:00
Louis Lam
83307b3446 Update dependencies 2023-08-09 20:13:22 +08:00
Louis Lam
3e0f5f4231 Merge branch 'master' into 2.0.X
# Conflicts:
#	package-lock.json
#	server/database.js
#	server/util-server.js
2023-08-09 20:09:56 +08:00
Louis Lam
0ab3507faf Update to nodejs 20 bookworm and use apt to install apprise 2023-07-30 23:47:07 +08:00
Louis Lam
a0bd4b248b Merge remote-tracking branch 'origin/master' into 2.0.X
# Conflicts:
#	docker/debian-base.dockerfile
#	package-lock.json
#	package.json
#	server/database.js
#	src/router.js
2023-07-30 19:15:09 +08:00
Louis Lam
ccc39b9516 Move all old db patch files to db/old_migrations/ 2023-07-01 20:54:47 +08:00
Louis Lam
e26abc3156 Improve the setup database 2023-07-01 02:48:42 +08:00
Louis Lam
d286c534bd Improve the setup database for embedded MariaDB 2023-06-30 22:17:07 +08:00
Louis Lam
7975caf29e Update db migration and dockerfile 2023-06-30 17:26:37 +08:00
Louis Lam
16a1a66e09 Merge remote-tracking branch 'origin/master' into 2.0.X
# Conflicts:
#	docker/alpine-base.dockerfile
#	docker/debian-base.dockerfile
#	docker/dockerfile
#	package.json
#	server/database.js
#	server/jobs/util-worker.js
#	server/model/maintenance.js
#	server/model/monitor.js
#	server/routers/api-router.js
#	server/server.js
#	server/uptime-kuma-server.js
2023-06-30 13:38:56 +08:00
Louis Lam
2e2747fb52 Handling DATE_ADD 2023-06-27 20:57:34 +08:00
Louis Lam
5388a37a26 Fix port NaN not working in MariaDB 2023-06-27 20:57:34 +08:00
Louis Lam
b2a1bd5214 WIP 2023-06-27 20:57:34 +08:00
Louis Lam
a2d147b88e Merge pull request #3017 from chakflying/v2/fix/external-database-setup
[2.0] Fix: Add external mariaDB setup
2023-06-27 20:55:21 +08:00
Nelson Chan
f70b971810 Fix: Improve error message
Co-authored-by: Frank Elsinga <frank@elsinga.de>
2023-05-21 15:42:13 +08:00
Nelson Chan
38fab198bb Fix: Fix user count check 2023-04-03 19:36:07 +08:00
Nelson Chan
8d5679a8ab Fix: Create database before connect 2023-04-03 19:35:31 +08:00
Louis Lam
f2633a5d01 Finished knex_init_db.js 2023-02-12 03:44:15 +08:00
Louis Lam
4056951915 WIP: building database in knex.js 2023-02-11 22:21:06 +08:00
Louis Lam
e4183ee2b7 Database Setup Page (#2738)
* WIP

* WIP: Database setup process

* Add database setup page
2023-02-11 14:41:02 +08:00
Louis Lam
db4663d6be Merge remote-tracking branch 'origin/master' into 2.0.X 2023-02-11 00:51:40 +08:00
Louis Lam
68ead3414d WIP 2023-02-06 22:26:13 +08:00
Louis Lam
e06c3ee5d4 Merge branch 'mariadb' into 2.0.X
# Conflicts:
#	package.json
2023-02-05 18:31:42 +08:00
Louis Lam
d4752b65de WIP 2023-02-05 18:01:54 +08:00
Louis Lam
dc4d2a77bb WIP 2023-02-05 17:45:36 +08:00
Louis Lam
33d9c1bbb1 Merge branch 'true-rootless' into mariadb
# Conflicts:
#	docker/dockerfile
2023-02-04 18:40:39 +08:00
Louis Lam
27eddb7253 Update dockerfile 2023-02-04 18:37:12 +08:00
Louis Lam
0b40c65139 Merge remote-tracking branch 'origin/master' into mariadb
# Conflicts:
#	docker/alpine-base.dockerfile
#	docker/dockerfile-alpine
#	package.json
#	server/database.js
2023-02-04 18:21:34 +08:00
Louis Lam
a4de93f976 WIP 2022-12-23 22:43:56 +08:00
Louis Lam
5e976afb27 Merge remote-tracking branch 'origin/master' into mariadb
# Conflicts:
#	docker/alpine-base.dockerfile
#	docker/dockerfile
#	package-lock.json
2022-12-18 21:03:06 +08:00
Louis Lam
00b52f23cf Merge remote-tracking branch 'origin/2.0.X' into 2.0.X 2022-10-04 21:21:39 +08:00
Louis Lam
ba1f7762b1 Merge pull request #2085 from louislam/drop-alpine
[2.0.X] Drop support for Alpine docker image
2022-09-25 21:06:35 +08:00
Louis Lam
73f7fbabd3 True rootless image 2022-09-14 18:05:02 +08:00
Louis Lam
0039f1f521 Drop support for Alpine docker image 2022-09-14 17:36:55 +08:00
Louis Lam
b0d39b44ce Testing 2022-07-22 23:15:55 +08:00
Louis Lam
301b2007a0 Drop Alpine support 2022-07-19 20:53:19 +08:00
398 changed files with 13550 additions and 11775 deletions

View File

@@ -6,7 +6,7 @@ You can modifiy Uptime Kuma in your browser without setting up a local developme
1. Click `Code` -> `Create codespace on master`
2. Wait a few minutes until you see there are two exposed ports
3. Go to the `3000` url, see if it is working
3. Go to the `3000` url, see if it is working
![image](https://github.com/louislam/uptime-kuma/assets/1336778/909b2eb4-4c5e-44e4-ac26-6d20ed856e7f)

View File

@@ -13,9 +13,10 @@
"customizations": {
"vscode": {
"extensions": [
"streetsidesoftware.code-spell-checker",
"dbaeumer.vscode-eslint"
]
"streetsidesoftware.code-spell-checker",
"dbaeumer.vscode-eslint",
"GitHub.copilot-chat"
]
}
},
"forwardPorts": [3000, 3001]

View File

@@ -1,6 +1,6 @@
/.idea
/node_modules
/data
/data*
/cypress
/out
/test
@@ -30,7 +30,6 @@ SECURITY.md
tsconfig.json
.env
/tmp
/babel.config.js
/ecosystem.config.js
/extra/healthcheck.exe
/extra/healthcheck

View File

@@ -1,6 +1,7 @@
module.exports = {
ignorePatterns: [
"test/*",
"test/*.js",
"test/cypress",
"server/modules/apicache/*",
"src/util.js"
],
@@ -14,13 +15,18 @@ module.exports = {
extends: [
"eslint:recommended",
"plugin:vue/vue3-recommended",
"plugin:jsdoc/recommended-error",
],
parser: "vue-eslint-parser",
parserOptions: {
parser: "@babel/eslint-parser",
parser: "@typescript-eslint/parser",
sourceType: "module",
requireConfigFile: false,
},
plugins: [
"jsdoc",
"@typescript-eslint",
],
rules: {
"yoda": "error",
eqeqeq: [ "warn", "smart" ],
@@ -71,14 +77,14 @@ module.exports = {
"no-var": "error",
"key-spacing": "warn",
"keyword-spacing": "warn",
"space-infix-ops": "warn",
"space-infix-ops": "error",
"arrow-spacing": "warn",
"no-trailing-spaces": "error",
"no-constant-condition": [ "error", {
"checkLoops": false,
}],
"space-before-blocks": "warn",
//'no-console': 'warn',
//"no-console": "warn",
"no-extra-boolean-cast": "off",
"no-multiple-empty-lines": [ "warn", {
"max": 1,
@@ -90,14 +96,51 @@ module.exports = {
"no-unneeded-ternary": "error",
"array-bracket-newline": [ "error", "consistent" ],
"eol-last": [ "error", "always" ],
//'prefer-template': 'error',
//"prefer-template": "error",
"template-curly-spacing": [ "warn", "never" ],
"comma-dangle": [ "warn", "only-multiline" ],
"no-empty": [ "error", {
"allowEmptyCatch": true
}],
"no-control-regex": "off",
"one-var": [ "error", "never" ],
"max-statements-per-line": [ "error", { "max": 1 }]
"max-statements-per-line": [ "error", { "max": 1 }],
"jsdoc/check-tag-names": [
"error",
{
"definedTags": [ "link" ]
}
],
"jsdoc/no-undefined-types": "off",
"jsdoc/no-defaults": [
"error",
{ "noOptionalParamNames": true }
],
"jsdoc/require-throws": "warn",
"jsdoc/require-jsdoc": [
"error",
{
"require": {
"FunctionDeclaration": true,
"MethodDefinition": true,
}
}
],
"jsdoc/no-blank-block-descriptions": "error",
"jsdoc/require-returns-description": "warn",
"jsdoc/require-returns-check": [
"error",
{ "reportMissingReturnForUndefinedTypes": false }
],
"jsdoc/require-returns": [
"warn",
{
"forceRequireReturn": true,
"forceReturnsWithAsync": true
}
],
"jsdoc/require-param-type": "warn",
"jsdoc/require-param-description": "warn"
},
"overrides": [
{
@@ -107,21 +150,20 @@ module.exports = {
}
},
// Override for jest puppeteer
// Override for TypeScript
{
"files": [
"**/*.spec.js",
"**/*.spec.jsx"
"**/*.ts",
],
env: {
jest: true,
},
globals: {
page: true,
browser: true,
context: true,
jestPuppeteer: true,
},
extends: [
"plugin:@typescript-eslint/recommended",
],
"rules": {
"jsdoc/require-returns-type": "off",
"jsdoc/require-param-type": "off",
"@typescript-eslint/no-explicit-any": "off",
"prefer-const": "off",
}
}
]
};

View File

@@ -12,8 +12,6 @@ labels:
DO NOT PROVIDE ANY DETAILS HERE. Please privately report to https://github.com/louislam/uptime-kuma/security/advisories/new.
Why need this issue? It is because GitHub Advisory do not send a notification to @louislam, it is a workaround to do so.
Your GitHub Advisory URL:

View File

@@ -1,7 +1,7 @@
⚠️⚠️⚠️ Since we do not accept all types of pull requests and do not want to waste your time. Please be sure that you have read pull request rules:
https://github.com/louislam/uptime-kuma/blob/master/CONTRIBUTING.md#can-i-create-a-pull-request-for-uptime-kuma
Tick the checkbox if you understand [x]:
Tick the checkbox if you understand [x]:
- [ ] I have read and understand the pull request rules.
# Description
@@ -15,7 +15,7 @@ Please delete any options that are not relevant.
- Bug fix (non-breaking change which fixes an issue)
- User interface (UI)
- New feature (non-breaking change which adds functionality)
- Breaking change (fix or feature that would cause existing functionality to not work as expected)
- Breaking change (a fix or feature that would cause existing functionality to not work as expected)
- Other
- This change requires a documentation update
@@ -24,9 +24,8 @@ Please delete any options that are not relevant.
- [ ] My code follows the style guidelines of this project
- [ ] I ran ESLint and other linters for modified files
- [ ] I have performed a self-review of my own code and tested it
- [ ] I have commented my code, particularly in hard-to-understand areas
(including JSDoc for methods)
- [ ] My changes generate no new warnings
- [ ] I have commented my code, particularly in hard-to-understand areas (including JSDoc for methods)
- [ ] My changes generates no new warnings
- [ ] My code needed automated testing. I have added them (this is optional task)
## Screenshots (if any)

View File

@@ -15,28 +15,28 @@ on:
jobs:
auto-test:
needs: [ check-linters ]
needs: [ check-linters, e2e-test ]
runs-on: ${{ matrix.os }}
timeout-minutes: 15
strategy:
matrix:
os: [macos-latest, ubuntu-latest, windows-latest, ARM64]
node: [ 14, 20 ]
node: [ 14, 20.5 ]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- run: git config --global core.autocrlf false # Mainly for Windows
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- run: npm install npm@9 -g
- run: npm install
- run: npm run build
- run: npm test
- run: npm run test-backend
env:
HEADLESS_TEST: 1
JUST_FOR_TEST: ${{ secrets.JUST_FOR_TEST }}
@@ -55,10 +55,10 @@ jobs:
steps:
- run: git config --global core.autocrlf false # Mainly for Windows
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- run: npm install npm@9 -g
@@ -69,41 +69,27 @@ jobs:
steps:
- run: git config --global core.autocrlf false # Mainly for Windows
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Use Node.js 14
uses: actions/setup-node@v3
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
node-version: 14
node-version: 20
- run: npm install
- run: npm run lint
- run: npm run lint:prod
e2e-tests:
e2e-test:
needs: [ check-linters ]
runs-on: ubuntu-latest
runs-on: ARM64
steps:
- run: git config --global core.autocrlf false # Mainly for Windows
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Use Node.js 14
uses: actions/setup-node@v3
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
node-version: 14
node-version: 20
- run: npm install
- run: npx playwright install
- run: npm run build
- run: npm run cy:test
frontend-unit-tests:
needs: [ check-linters ]
runs-on: ubuntu-latest
steps:
- run: git config --global core.autocrlf false # Mainly for Windows
- uses: actions/checkout@v3
- name: Use Node.js 14
uses: actions/setup-node@v3
with:
node-version: 14
- run: npm install
- run: npm run build
- run: npm run cy:run:unit
- run: npm run test-e2e

View File

@@ -14,10 +14,10 @@ jobs:
node-version: [16]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'

43
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@@ -0,0 +1,43 @@
name: "CodeQL"
on:
push:
branches: [ "master", "1.23.X"]
pull_request:
branches: [ "master", "1.23.X"]
schedule:
- cron: '16 22 * * 0'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
timeout-minutes: 360
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'go', 'javascript-typescript' ]
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
- name: Autobuild
uses: github/codeql-action/autobuild@v2
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: "/language:${{matrix.language}}"

View File

@@ -6,7 +6,7 @@ on:
pull_request:
branches:
- master
- 2.0.X
- 1.23.X
workflow_dispatch:
permissions:
@@ -17,11 +17,11 @@ jobs:
json-yaml-validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: json-yaml-validate
id: json-yaml-validate
uses: GrantBirki/json-yaml-validate@v1.3.0
uses: GrantBirki/json-yaml-validate@v2.4.0
with:
comment: "true" # enable comment mode
exclude_file: ".github/config/exclude.txt" # gitignore style file for exclusions

View File

@@ -0,0 +1,17 @@
name: prevent-file-change
on:
pull_request:
jobs:
check-file-changes:
runs-on: ubuntu-latest
steps:
- name: Prevent file change
uses: xalvarez/prevent-file-change-action@v1
with:
githubToken: ${{ secrets.GITHUB_TOKEN }}
# Regex, /src/lang/*.json is not allowed to be changed, except for /src/lang/en.json
pattern: '^(?!src/lang/en\.json$)src/lang/.*\.json$'
trustedAuthors: UptimeKumaBot

View File

@@ -1,4 +1,4 @@
name: 'Automatically close stale issues and PRs'
name: 'Automatically close stale issues'
on:
workflow_dispatch:
schedule:
@@ -9,14 +9,14 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v7
- uses: actions/stale@v8
with:
stale-issue-message: 'We are clearing up our old issues and your ticket has been open for 3 months with no activity. Remove stale label or comment or this will be closed in 2 days.'
close-issue-message: 'This issue was closed because it has been stalled for 2 days with no activity.'
days-before-stale: 90
days-before-close: 2
days-before-pr-stale: 999999999
days-before-pr-close: 1
days-before-pr-stale: -1
days-before-pr-close: -1
exempt-issue-labels: 'News,Medium,High,discussion,bug,doc,feature-request'
exempt-issue-assignees: 'louislam'
operations-per-run: 200

4
.gitignore vendored
View File

@@ -7,6 +7,7 @@ dist-ssr
/data
!/data/.gitkeep
/data*
.vscode
/private
@@ -14,9 +15,6 @@ dist-ssr
/tmp
.env
cypress/videos
cypress/screenshots
/extra/healthcheck.exe
/extra/healthcheck
/extra/healthcheck-armv7

View File

@@ -1,14 +1,14 @@
# Project Info
First of all, I want to thank everyone who made pull requests for Uptime Kuma. I never thought the GitHub Community would be so nice! Because of this, I also never thought that other people would actually read and edit my code. It is not very well structured or commented, sorry about that.
First of all, I want to thank everyone who have made pull requests for Uptime Kuma. I never thought the GitHub community would be so nice! Because of this, I also never thought that other people would actually read and edit my code. It is not very well structured or commented, sorry about that.
The project was created with vite.js (vue3). Then I created a subdirectory called "server" for the server part. Both frontend and backend share the same package.json.
The project was created with vite.js (vue3). Then I created a subdirectory called "server" for the server part. Both frontend and backend share the same `package.json`.
The frontend code builds into "dist" directory. The server (express.js) exposes the "dist" directory as the root of the endpoint. This is how production is working.
## Key Technical Skills
- Node.js (You should know about promise, async/await and arrow function etc.)
- Node.js (You should know about promises, async/await, arrow functions, etc.)
- Socket.io
- SCSS
- Vue.js
@@ -34,24 +34,27 @@ Yes or no, it depends on what you will try to do. Since I don't want to waste yo
Here are some references:
### ✅ Usually accepted:
### ✅ Usually accepted
- Bug fix
- Security fix
- Adding notification providers
- Adding new language files (see [these instructions](https://github.com/louislam/uptime-kuma/blob/master/src/lang/README.md))
- Adding new language keys: `$t("...")`
### ⚠️ Discussion required:
### ⚠️ Discussion required
- Large pull requests
- New features
### ❌ Won't be merged:
### ❌ Won't be merged
- A dedicated PR for translating existing languages (see [these instructions](https://github.com/louislam/uptime-kuma/blob/master/src/lang/README.md))
- Do not pass the auto-test
- Any breaking changes
- Duplicated pull requests
- Buggy
- UI/UX is not close to Uptime Kuma
- UI/UX is not close to Uptime Kuma
- Modifications or deletions of existing logic without a valid reason.
- Adding functions that is completely out of scope
- Converting existing code into other programming languages
@@ -59,27 +62,25 @@ Here are some references:
The above cases may not cover all possible situations.
I (@louislam) have the final say. If your pull request does not meet my expectations, I will reject it, no matter how much time you spend on it. Therefore, it is essential to have a discussion beforehand.
I ([@louislam](https://github.com/louislam)) have the final say. If your pull request does not meet my expectations, I will reject it, no matter how much time you spent on it. Therefore, it is essential to have a discussion beforehand.
I will assign your pull request to a [milestone](https://github.com/louislam/uptime-kuma/milestones), if I plan to review and merge it.
Also, please don't rush or ask for an ETA, because I have to understand the pull request, make sure it is no breaking changes and stick to my vision of this project, especially for large pull requests.
### Recommended Pull Request Guideline
Before deep into coding, discussion first is preferred. Creating an empty pull request for discussion would be recommended.
1. Fork the project
1. Clone your fork repo to local
1. Create a new branch
1. Create an empty commit
`git commit -m "[empty commit] pull request for <YOUR TASK NAME>" --allow-empty`
1. Push to your fork repo
1. Create a pull request: https://github.com/louislam/uptime-kuma/compare
1. Write a proper description
1. Click "Change to draft"
1. Discussion
2. Clone your fork repo to local
3. Create a new branch
4. Create an empty commit: `git commit -m "<YOUR TASK NAME>" --allow-empty`
5. Push to your fork repo
6. Prepare a pull request: https://github.com/louislam/uptime-kuma/compare
7. Write a proper description. You can mention @louislam in it, so @louislam will get the notification.
8. Create your pull request as a Draft
9. Wait for the discussion
## Project Styles
@@ -112,6 +113,18 @@ I personally do not like something that requires so many configurations before y
- IDE that supports [`ESLint`](https://eslint.org/) and EditorConfig (I am using [`IntelliJ IDEA`](https://www.jetbrains.com/idea/))
- A SQLite GUI tool (f.ex. [`SQLite Expert Personal`](https://www.sqliteexpert.com/download.html) or [`DBeaver Community`](https://dbeaver.io/download/))
### GitHub Codespaces
If you don't want to setup an local environment, you can now develop on GitHub Codespaces, read more:
https://github.com/louislam/uptime-kuma/tree/master/.devcontainer
## Git Branches
- `master`: 2.X.X development. If you want to add a new feature, your pull request should base on this.
- `1.23.X`: 1.23.X development. If you want to fix a bug for v1 and v2, your pull request should base on this.
- All other branches are unused, outdated or for dev.
## Install Dependencies for Development
```bash
@@ -131,7 +144,8 @@ npm run dev
```
But sometimes, you would like to restart the server, but not the frontend, you can run these commands in two terminals:
```
```bash
npm run start-frontend-dev
npm run start-server-dev
```
@@ -140,15 +154,14 @@ npm run start-server-dev
It binds to `0.0.0.0:3001` by default.
It is mainly a socket.io app + express.js.
express.js is used for:
express.js is used for:
- entry point such as redirecting to a status page or the dashboard
- serving the frontend built files (index.html, .js and .css etc.)
- serving internal APIs of the status page
### Structure in /server/
- jobs/ (Jobs that are running in another process)
@@ -163,9 +176,9 @@ express.js is used for:
## Frontend Dev Server
It binds to `0.0.0.0:3000` by default. The frontend dev server is used for development only.
It binds to `0.0.0.0:3000` by default. The frontend dev server is used for development only.
For production, it is not used. It will be compiled to `dist` directory instead.
For production, it is not used. It will be compiled to `dist` directory instead.
You can use Vue.js devtools Chrome extension for debugging.
@@ -187,8 +200,7 @@ The data and socket logic are in `src/mixins/socket.js`.
## Database Migration
1. Create `patch-{name}.sql` in `./db/`
2. Add your patch filename in the `patchList` list in `./server/database.js`
See: https://github.com/louislam/uptime-kuma/tree/master/db/knex_migrations
## Unit Test
@@ -218,9 +230,9 @@ If for security / bug / other reasons, a library must be updated, breaking chang
## Translations
Please add **all** the strings which are translatable to `src/lang/en.json` (If translation keys are omitted, they can not be translated).
Please add **all** the strings which are translatable to `src/lang/en.json` (if translation keys are omitted, they can not be translated.)
**Don't include any other languages in your initial Pull-Request** (even if this is your mother tongue), to avoid merge-conflicts between weblate and `master`.
**Don't include any other languages in your initial pull request** (even if this is your mother tongue), to avoid merge-conflicts between weblate and `master`.
The translations can then (after merging a PR into `master`) be translated by awesome people donating their language skills.
If you want to help by translating Uptime Kuma into your language, please visit the [instructions on how to translate using weblate](https://github.com/louislam/uptime-kuma/blob/master/src/lang/README.md).
@@ -232,10 +244,46 @@ My mother language is not English and my grammar is not that great.
## Wiki
Since there is no way to make a pull request to wiki's repo, I have set up another repo to do that.
Since there is no way to make a pull request to the wiki, I have set up another repo to do that.
https://github.com/louislam/uptime-kuma-wiki
## Docker
### Arch
- amd64
- arm64
- armv7
### Docker Tags
#### v2
- `2`, `latest-2`: v2 with full features such as Chromium and bundled MariaDB
- `2.x.x`
- `2-slim`: v2 with basic features
- `2.x.x-slim`
- `beta2`: Latest beta build
- `2.x.x-beta.x`
- `nightly2`: Dev build
- `base2`: Basic Debian setup without Uptime Kuma source code (Full features)
- `base2-slim`: Basic Debian setup without Uptime Kuma source code
- `pr-test2`: For testing pull request without setting up a local environment
#### v1
- `1`, `latest`, `1-debian`, `debian`: Latest version of v1
- `1.x.x`, `1.x.x-debian`
- `1.x.x-beta.x`: Beta build
- `beta`: Latest beta build
- `nightly`: Dev build
- `base-debian`: Basic Debian setup without Uptime Kuma source code
- `pr-test`: For testing pull request without setting up a local environment
- `base-alpine`: (Deprecated) Basic Alpine setup without Uptime Kuma source code
- `1-alpine`, `alpine`: (Deprecated)
- `1.x.x-alpine`: (Deprecated)
## Maintainer
Check the latest issues and pull requests:
@@ -246,12 +294,12 @@ https://github.com/louislam/uptime-kuma/issues?q=sort%3Aupdated-desc
1. Draft a release note
2. Make sure the repo is cleared
3. If the healthcheck is updated, remember to re-compile it: `npm run build-docker-builder-go`
3. `npm run release-final with env vars: `VERSION` and `GITHUB_TOKEN`
4. Wait until the `Press any key to continue`
5. `git push`
6. Publish the release note as 1.X.X
7. Press any key to continue
8. Deploy to the demo server: `npm run deploy-demo-server`
4. `npm run release-final` with env vars: `VERSION` and `GITHUB_TOKEN`
5. Wait until the `Press any key to continue`
6. `git push`
7. Publish the release note as 1.X.X
8. Press any key to continue
9. Deploy to the demo server: `npm run deploy-demo-server`
Checking:
@@ -284,3 +332,11 @@ git remote add production https://github.com/louislam/uptime-kuma.wiki.git
git pull
git push production master
```
## Useful Commands
Change the base of a pull request such as `master` to `1.23.X`
```bash
git rebase --onto <new parent> <old parent>
```

View File

@@ -23,17 +23,17 @@ It is a temporary live demo, all data will be deleted after 10 minutes. Use the
## ⭐ Features
* Monitoring uptime for HTTP(s) / TCP / HTTP(s) Keyword / HTTP(s) Json Query / Ping / DNS Record / Push / Steam Game Server / Docker Containers
* Fancy, Reactive, Fast UI/UX
* Notifications via Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), and [90+ notification services, click here for the full list](https://github.com/louislam/uptime-kuma/tree/master/src/components/notifications)
* 20-second intervals
* [Multi Languages](https://github.com/louislam/uptime-kuma/tree/master/src/lang)
* Multiple status pages
* Map status pages to specific domains
* Ping chart
* Certificate info
* Proxy support
* 2FA support
- Monitoring uptime for HTTP(s) / TCP / HTTP(s) Keyword / HTTP(s) Json Query / Ping / DNS Record / Push / Steam Game Server / Docker Containers
- Fancy, Reactive, Fast UI/UX
- Notifications via Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), and [90+ notification services, click here for the full list](https://github.com/louislam/uptime-kuma/tree/master/src/components/notifications)
- 20-second intervals
- [Multi Languages](https://github.com/louislam/uptime-kuma/tree/master/src/lang)
- Multiple status pages
- Map status pages to specific domains
- Ping chart
- Certificate info
- Proxy support
- 2FA support
## 🔧 How to Install
@@ -43,25 +43,27 @@ It is a temporary live demo, all data will be deleted after 10 minutes. Use the
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1
```
⚠️ Please use a **local volume** only. Other types such as NFS are not supported.
Uptime Kuma is now running on http://localhost:3001
> [!WARNING]
> File Systems like **NFS** (Network File System) are **NOT** supported. Please map to a local directory or volume.
### 💪🏻 Non-Docker
Requirements:
- Platform
- ✅ Major Linux distros such as Debian, Ubuntu, CentOS, Fedora and ArchLinux etc.
- ✅ Windows 10 (x64), Windows Server 2012 R2 (x64) or higher
- ❌ Replit / Heroku
- [Node.js](https://nodejs.org/en/download/) 14 / 16 / 18 / 20.4
- [npm](https://docs.npmjs.com/cli/) >= 7
- [npm](https://docs.npmjs.com/cli/) 9
- [Git](https://git-scm.com/downloads)
- [pm2](https://pm2.keymetrics.io/) - For running Uptime Kuma in the background
```bash
# Update your npm to the latest version
npm install npm -g
# Update your npm
npm install npm@9 -g
git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
@@ -76,9 +78,8 @@ npm install pm2 -g && pm2 install pm2-logrotate
# Start Server
pm2 start server/server.js --name uptime-kuma
```
Uptime Kuma is now running on http://localhost:3001
More useful PM2 Commands
@@ -91,10 +92,6 @@ pm2 monit
pm2 save && pm2 startup
```
### Windows Portable (x64)
https://github.com/louislam/uptime-kuma/releases/download/1.23.1/uptime-kuma-windows-x64-portable-1.23.1.zip
### Advanced Installation
If you need more options or need to browse via a reverse proxy, please read:
@@ -113,10 +110,6 @@ I will assign requests/issues to the next milestone.
https://github.com/louislam/uptime-kuma/milestones
Project Plan:
https://github.com/users/louislam/projects/4/views/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)
@@ -143,29 +136,33 @@ Telegram Notification Sample:
## Motivation
* I was looking for a self-hosted monitoring tool like "Uptime Robot", but it is hard to find a suitable one. One of the close ones is statping. Unfortunately, it is not stable and no longer maintained.
* Want to build a fancy UI.
* Learn Vue 3 and vite.js.
* Show the power of Bootstrap 5.
* Try to use WebSocket with SPA instead of REST API.
* Deploy my first Docker image to Docker Hub.
- I was looking for a self-hosted monitoring tool like "Uptime Robot", but it is hard to find a suitable one. One of the closest ones is statping. Unfortunately, it is not stable and no longer maintained.
- Wanted to build a fancy UI.
- Learn Vue 3 and vite.js.
- Show the power of Bootstrap 5.
- Try to use WebSocket with SPA instead of a REST API.
- Deploy my first Docker image to Docker Hub.
If you love this project, please consider giving me a ⭐.
If you love this project, please consider giving it a ⭐.
## 🗣️ Discussion / Ask for Help
⚠️ For any general or technical questions, please don't send me an email, as I am unable to provide support in that manner. I will not response if you asked such questions.
⚠️ For any general or technical questions, please don't send me an email, as I am unable to provide support in that manner. I will not respond if you ask questions there.
I recommend using Google, GitHub Issues, or Uptime Kuma's Subreddit for finding answers to your question. If you cannot find the information you need, feel free to ask:
I recommend using Google, GitHub Issues, or Uptime Kuma's subreddit for finding answers to your question. If you cannot find the information you need, feel free to ask:
- [GitHub Issues](https://github.com/louislam/uptime-kuma/issues)
- [Subreddit r/Uptime kuma](https://www.reddit.com/r/UptimeKuma/)
- [Subreddit (r/UptimeKuma)](https://www.reddit.com/r/UptimeKuma/)
My Reddit account: [u/louislamlam](https://reddit.com/u/louislamlam).
You can mention me if you ask a question on Reddit.
My Reddit account: [u/louislamlam](https://reddit.com/u/louislamlam)
You can mention me if you ask a question on the subreddit.
## Contributions
## Contribute
### Create Pull Requests
We DO NOT accept all types of pull requests and do not want to waste your time. Please be sure that you have read and follow pull request rules:
[CONTRIBUTING.md#can-i-create-a-pull-request-for-uptime-kuma](https://github.com/louislam/uptime-kuma/blob/master/CONTRIBUTING.md#can-i-create-a-pull-request-for-uptime-kuma)
### Test Pull Requests
@@ -179,15 +176,16 @@ https://github.com/louislam/uptime-kuma/wiki/Test-Pull-Requests
Check out the latest beta release here: https://github.com/louislam/uptime-kuma/releases
### Bug Reports / Feature Requests
If you want to report a bug or request a new feature, feel free to open a [new issue](https://github.com/louislam/uptime-kuma/issues).
### Translations
If you want to translate Uptime Kuma into your language, please visit [Weblate Readme](https://github.com/louislam/uptime-kuma/blob/master/src/lang/README.md).
## Spelling & Grammar
### Spelling & Grammar
Feel free to correct the grammar in the documentation or code.
My mother language is not english and my grammar is not that great.
My mother language is not English and my grammar is not that great.
### Create Pull Requests
If you want to modify Uptime Kuma, please read this guide and follow the rules here: https://github.com/louislam/uptime-kuma/blob/master/CONTRIBUTING.md

View File

@@ -3,7 +3,7 @@
## Reporting a Vulnerability
1. Please report security issues to https://github.com/louislam/uptime-kuma/security/advisories/new.
1. Please also create an empty security issue to alert me, as GitHub Advisories do not send a notification, I probably will miss it without this. https://github.com/louislam/uptime-kuma/issues/new?assignees=&labels=help&template=security.md
2. Please also create an empty security issue to alert me, as GitHub Advisories do not send a notification, I probably will miss it without this. https://github.com/louislam/uptime-kuma/issues/new?assignees=&labels=help&template=security.md
Do not use the public issue tracker or discuss it in public as it will cause more damage.
@@ -19,12 +19,12 @@ You should use or upgrade to the latest version of Uptime Kuma. All `1.X.X` vers
### Upgradable Docker Tags
| Tag | Supported |
| ------- | ------------------ |
| Tag | Supported |
|-|-|
| 1 | :white_check_mark: |
| 1-debian | :white_check_mark: |
| latest | :white_check_mark: |
| debian | :white_check_mark: |
| 1-alpine | ⚠️ Deprecated |
| alpine | ⚠️ Deprecated |
| All other tags | ❌ |
| All other tags | ❌ |

View File

@@ -1,7 +0,0 @@
const config = {};
if (process.env.TEST_FRONTEND) {
config.presets = [ "@babel/preset-env" ];
}
module.exports = config;

View File

@@ -0,0 +1,60 @@
import { defineConfig, devices } from "@playwright/test";
const port = 30001;
const url = `http://localhost:${port}`;
export default defineConfig({
// Look for test files in the "tests" directory, relative to this configuration file.
testDir: "../test/e2e",
outputDir: "../private/playwright-test-results",
fullyParallel: false,
locale: "en-US",
// Fail the build on CI if you accidentally left test.only in the source code.
forbidOnly: !!process.env.CI,
// Retry on CI only.
retries: process.env.CI ? 2 : 0,
// Opt out of parallel tests on CI.
workers: 1,
// Reporter to use
reporter: [
[
"html", {
outputFolder: "../private/playwright-report",
open: "never",
}
],
],
use: {
// Base URL to use in actions like `await page.goto('/')`.
baseURL: url,
// Collect trace when retrying the failed test.
trace: "on-first-retry",
},
// Configure projects for major browsers.
projects: [
{
name: "chromium",
use: { ...devices["Desktop Chrome"] },
},
/*
{
name: "firefox",
use: { browserName: "firefox" }
},*/
],
// Run your local dev server before starting the tests.
webServer: {
command: `node extra/remove-playwright-test-data.js && node server/server.js --port=${port} --data-dir=./data/playwright-test`,
url,
reuseExistingServer: false,
cwd: "../",
},
});

View File

@@ -1,9 +1,7 @@
import legacy from "@vitejs/plugin-legacy";
import vue from "@vitejs/plugin-vue";
import { defineConfig } from "vite";
import visualizer from "rollup-plugin-visualizer";
import viteCompression from "vite-plugin-compression";
import commonjs from "vite-plugin-commonjs";
const postCssScss = require("postcss-scss");
const postcssRTLCSS = require("postcss-rtlcss");
@@ -22,11 +20,7 @@ export default defineConfig({
"CODESPACE_NAME": JSON.stringify(process.env.CODESPACE_NAME),
},
plugins: [
commonjs(),
vue(),
legacy({
targets: [ "since 2015" ],
}),
visualizer({
filename: "tmp/dist-stats.html"
}),

562
db/knex_init_db.js Normal file
View File

@@ -0,0 +1,562 @@
const { R } = require("redbean-node");
const { log } = require("../src/util");
/**
* ⚠️⚠️⚠️⚠️⚠️⚠️ DO NOT ADD ANYTHING HERE!
* IF YOU NEED TO ADD FIELDS, ADD IT TO ./db/knex_migrations
* See ./db/knex_migrations/README.md for more information
* @returns {Promise<void>}
*/
async function createTables() {
log.info("mariadb", "Creating basic tables for MariaDB");
const knex = R.knex;
// TODO: Should check later if it is really the final patch sql file.
// docker_host
await knex.schema.createTable("docker_host", (table) => {
table.increments("id");
table.integer("user_id").unsigned().notNullable();
table.string("docker_daemon", 255);
table.string("docker_type", 255);
table.string("name", 255);
});
// group
await knex.schema.createTable("group", (table) => {
table.increments("id");
table.string("name", 255).notNullable();
table.datetime("created_date").notNullable().defaultTo(knex.fn.now());
table.boolean("public").notNullable().defaultTo(false);
table.boolean("active").notNullable().defaultTo(true);
table.integer("weight").notNullable().defaultTo(1000);
table.integer("status_page_id").unsigned();
});
// proxy
await knex.schema.createTable("proxy", (table) => {
table.increments("id");
table.integer("user_id").unsigned().notNullable();
table.string("protocol", 10).notNullable();
table.string("host", 255).notNullable();
table.smallint("port").notNullable(); // TODO: Maybe a issue with MariaDB, need migration to int
table.boolean("auth").notNullable();
table.string("username", 255).nullable();
table.string("password", 255).nullable();
table.boolean("active").notNullable().defaultTo(true);
table.boolean("default").notNullable().defaultTo(false);
table.datetime("created_date").notNullable().defaultTo(knex.fn.now());
table.index("user_id", "proxy_user_id");
});
// user
await knex.schema.createTable("user", (table) => {
table.increments("id");
table.string("username", 255).notNullable().unique().collate("utf8_general_ci");
table.string("password", 255);
table.boolean("active").notNullable().defaultTo(true);
table.string("timezone", 150);
table.string("twofa_secret", 64);
table.boolean("twofa_status").notNullable().defaultTo(false);
table.string("twofa_last_token", 6);
});
// monitor
await knex.schema.createTable("monitor", (table) => {
table.increments("id");
table.string("name", 150);
table.boolean("active").notNullable().defaultTo(true);
table.integer("user_id").unsigned()
.references("id").inTable("user")
.onDelete("SET NULL")
.onUpdate("CASCADE");
table.integer("interval").notNullable().defaultTo(20);
table.text("url");
table.string("type", 20);
table.integer("weight").defaultTo(2000);
table.string("hostname", 255);
table.integer("port");
table.datetime("created_date").notNullable().defaultTo(knex.fn.now());
table.string("keyword", 255);
table.integer("maxretries").notNullable().defaultTo(0);
table.boolean("ignore_tls").notNullable().defaultTo(false);
table.boolean("upside_down").notNullable().defaultTo(false);
table.integer("maxredirects").notNullable().defaultTo(10);
table.text("accepted_statuscodes_json").notNullable().defaultTo("[\"200-299\"]");
table.string("dns_resolve_type", 5);
table.string("dns_resolve_server", 255);
table.string("dns_last_result", 255);
table.integer("retry_interval").notNullable().defaultTo(0);
table.string("push_token", 20).defaultTo(null);
table.text("method").notNullable().defaultTo("GET");
table.text("body").defaultTo(null);
table.text("headers").defaultTo(null);
table.text("basic_auth_user").defaultTo(null);
table.text("basic_auth_pass").defaultTo(null);
table.integer("docker_host").unsigned()
.references("id").inTable("docker_host");
table.string("docker_container", 255);
table.integer("proxy_id").unsigned()
.references("id").inTable("proxy");
table.boolean("expiry_notification").defaultTo(true);
table.text("mqtt_topic");
table.string("mqtt_success_message", 255);
table.string("mqtt_username", 255);
table.string("mqtt_password", 255);
table.string("database_connection_string", 2000);
table.text("database_query");
table.string("auth_method", 250);
table.text("auth_domain");
table.text("auth_workstation");
table.string("grpc_url", 255).defaultTo(null);
table.text("grpc_protobuf").defaultTo(null);
table.text("grpc_body").defaultTo(null);
table.text("grpc_metadata").defaultTo(null);
table.text("grpc_method").defaultTo(null);
table.text("grpc_service_name").defaultTo(null);
table.boolean("grpc_enable_tls").notNullable().defaultTo(false);
table.string("radius_username", 255);
table.string("radius_password", 255);
table.string("radius_calling_station_id", 50);
table.string("radius_called_station_id", 50);
table.string("radius_secret", 255);
table.integer("resend_interval").notNullable().defaultTo(0);
table.integer("packet_size").notNullable().defaultTo(56);
table.string("game", 255);
});
// heartbeat
await knex.schema.createTable("heartbeat", (table) => {
table.increments("id");
table.boolean("important").notNullable().defaultTo(false);
table.integer("monitor_id").unsigned().notNullable()
.references("id").inTable("monitor")
.onDelete("CASCADE")
.onUpdate("CASCADE");
table.smallint("status").notNullable();
table.text("msg");
table.datetime("time").notNullable();
table.integer("ping");
table.integer("duration").notNullable().defaultTo(0);
table.integer("down_count").notNullable().defaultTo(0);
table.index("important");
table.index([ "monitor_id", "time" ], "monitor_time_index");
table.index("monitor_id");
table.index([ "monitor_id", "important", "time" ], "monitor_important_time_index");
});
// incident
await knex.schema.createTable("incident", (table) => {
table.increments("id");
table.string("title", 255).notNullable();
table.text("content", 255).notNullable();
table.string("style", 30).notNullable().defaultTo("warning");
table.datetime("created_date").notNullable().defaultTo(knex.fn.now());
table.datetime("last_updated_date");
table.boolean("pin").notNullable().defaultTo(true);
table.boolean("active").notNullable().defaultTo(true);
table.integer("status_page_id").unsigned();
});
// maintenance
await knex.schema.createTable("maintenance", (table) => {
table.increments("id");
table.string("title", 150).notNullable();
table.text("description").notNullable();
table.integer("user_id").unsigned()
.references("id").inTable("user")
.onDelete("SET NULL")
.onUpdate("CASCADE");
table.boolean("active").notNullable().defaultTo(true);
table.string("strategy", 50).notNullable().defaultTo("single");
table.datetime("start_date");
table.datetime("end_date");
table.time("start_time");
table.time("end_time");
table.string("weekdays", 250).defaultTo("[]");
table.text("days_of_month").defaultTo("[]");
table.integer("interval_day");
table.index("active");
table.index([ "strategy", "active" ], "manual_active");
table.index("user_id", "maintenance_user_id");
});
// status_page
await knex.schema.createTable("status_page", (table) => {
table.increments("id");
table.string("slug", 255).notNullable().unique().collate("utf8_general_ci");
table.string("title", 255).notNullable();
table.text("description");
table.string("icon", 255).notNullable();
table.string("theme", 30).notNullable();
table.boolean("published").notNullable().defaultTo(true);
table.boolean("search_engine_index").notNullable().defaultTo(true);
table.boolean("show_tags").notNullable().defaultTo(false);
table.string("password");
table.datetime("created_date").notNullable().defaultTo(knex.fn.now());
table.datetime("modified_date").notNullable().defaultTo(knex.fn.now());
table.text("footer_text");
table.text("custom_css");
table.boolean("show_powered_by").notNullable().defaultTo(true);
table.string("google_analytics_tag_id");
});
// maintenance_status_page
await knex.schema.createTable("maintenance_status_page", (table) => {
table.increments("id");
table.integer("status_page_id").unsigned().notNullable()
.references("id").inTable("status_page")
.onDelete("CASCADE")
.onUpdate("CASCADE");
table.integer("maintenance_id").unsigned().notNullable()
.references("id").inTable("maintenance")
.onDelete("CASCADE")
.onUpdate("CASCADE");
});
// maintenance_timeslot
await knex.schema.createTable("maintenance_timeslot", (table) => {
table.increments("id");
table.integer("maintenance_id").unsigned().notNullable()
.references("id").inTable("maintenance")
.onDelete("CASCADE")
.onUpdate("CASCADE");
table.datetime("start_date").notNullable();
table.datetime("end_date");
table.boolean("generated_next").defaultTo(false);
table.index("maintenance_id");
table.index([ "maintenance_id", "start_date", "end_date" ], "active_timeslot_index");
table.index("generated_next", "generated_next_index");
});
// monitor_group
await knex.schema.createTable("monitor_group", (table) => {
table.increments("id");
table.integer("monitor_id").unsigned().notNullable()
.references("id").inTable("monitor")
.onDelete("CASCADE")
.onUpdate("CASCADE");
table.integer("group_id").unsigned().notNullable()
.references("id").inTable("group")
.onDelete("CASCADE")
.onUpdate("CASCADE");
table.integer("weight").notNullable().defaultTo(1000);
table.boolean("send_url").notNullable().defaultTo(false);
table.index([ "monitor_id", "group_id" ], "fk");
});
// monitor_maintenance
await knex.schema.createTable("monitor_maintenance", (table) => {
table.increments("id");
table.integer("monitor_id").unsigned().notNullable()
.references("id").inTable("monitor")
.onDelete("CASCADE")
.onUpdate("CASCADE");
table.integer("maintenance_id").unsigned().notNullable()
.references("id").inTable("maintenance")
.onDelete("CASCADE")
.onUpdate("CASCADE");
table.index("maintenance_id", "maintenance_id_index2");
table.index("monitor_id", "monitor_id_index");
});
// notification
await knex.schema.createTable("notification", (table) => {
table.increments("id");
table.string("name", 255);
table.boolean("active").notNullable().defaultTo(true);
table.integer("user_id").unsigned();
table.boolean("is_default").notNullable().defaultTo(false);
table.text("config", "longtext");
});
// monitor_notification
await knex.schema.createTable("monitor_notification", (table) => {
table.increments("id").unsigned(); // TODO: no auto increment????
table.integer("monitor_id").unsigned().notNullable()
.references("id").inTable("monitor")
.onDelete("CASCADE")
.onUpdate("CASCADE");
table.integer("notification_id").unsigned().notNullable()
.references("id").inTable("notification")
.onDelete("CASCADE")
.onUpdate("CASCADE");
table.index([ "monitor_id", "notification_id" ], "monitor_notification_index");
});
// tag
await knex.schema.createTable("tag", (table) => {
table.increments("id");
table.string("name", 255).notNullable();
table.string("color", 255).notNullable();
table.datetime("created_date").notNullable().defaultTo(knex.fn.now());
});
// monitor_tag
await knex.schema.createTable("monitor_tag", (table) => {
table.increments("id");
table.integer("monitor_id").unsigned().notNullable()
.references("id").inTable("monitor")
.onDelete("CASCADE")
.onUpdate("CASCADE");
table.integer("tag_id").unsigned().notNullable()
.references("id").inTable("tag")
.onDelete("CASCADE")
.onUpdate("CASCADE");
table.text("value");
});
// monitor_tls_info
await knex.schema.createTable("monitor_tls_info", (table) => {
table.increments("id");
table.integer("monitor_id").unsigned().notNullable(); //TODO: no fk ?
table.text("info_json");
});
// notification_sent_history
await knex.schema.createTable("notification_sent_history", (table) => {
table.increments("id");
table.string("type", 50).notNullable();
table.integer("monitor_id").unsigned().notNullable();
table.integer("days").notNullable();
table.unique([ "type", "monitor_id", "days" ]);
table.index([ "type", "monitor_id", "days" ], "good_index");
});
// setting
await knex.schema.createTable("setting", (table) => {
table.increments("id");
table.string("key", 200).notNullable().unique().collate("utf8_general_ci");
table.text("value");
table.string("type", 20);
});
// status_page_cname
await knex.schema.createTable("status_page_cname", (table) => {
table.increments("id");
table.integer("status_page_id").unsigned()
.references("id").inTable("status_page")
.onDelete("CASCADE")
.onUpdate("CASCADE");
table.string("domain").notNullable().unique().collate("utf8_general_ci");
});
/*********************
* Converted Patch here
*********************/
// 2023-06-30-1348-http-body-encoding.js
// ALTER TABLE monitor ADD http_body_encoding VARCHAR(25);
// UPDATE monitor SET http_body_encoding = 'json' WHERE (type = 'http' or type = 'keyword') AND http_body_encoding IS NULL;
await knex.schema.table("monitor", function (table) {
table.string("http_body_encoding", 25);
});
await knex("monitor")
.where(function () {
this.where("type", "http").orWhere("type", "keyword");
})
.whereNull("http_body_encoding")
.update({
http_body_encoding: "json",
});
// 2023-06-30-1354-add-description-monitor.js
// ALTER TABLE monitor ADD description TEXT default null;
await knex.schema.table("monitor", function (table) {
table.text("description").defaultTo(null);
});
// 2023-06-30-1357-api-key-table.js
/*
CREATE TABLE [api_key] (
[id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[key] VARCHAR(255) NOT NULL,
[name] VARCHAR(255) NOT NULL,
[user_id] INTEGER NOT NULL,
[created_date] DATETIME DEFAULT (DATETIME('now')) NOT NULL,
[active] BOOLEAN DEFAULT 1 NOT NULL,
[expires] DATETIME DEFAULT NULL,
CONSTRAINT FK_user FOREIGN KEY ([user_id]) REFERENCES [user]([id]) ON DELETE CASCADE ON UPDATE CASCADE
);
*/
await knex.schema.createTable("api_key", function (table) {
table.increments("id").primary();
table.string("key", 255).notNullable();
table.string("name", 255).notNullable();
table.integer("user_id").unsigned().notNullable()
.references("id").inTable("user")
.onDelete("CASCADE")
.onUpdate("CASCADE");
table.dateTime("created_date").defaultTo(knex.fn.now()).notNullable();
table.boolean("active").defaultTo(1).notNullable();
table.dateTime("expires").defaultTo(null);
});
// 2023-06-30-1400-monitor-tls.js
/*
ALTER TABLE monitor
ADD tls_ca TEXT default null;
ALTER TABLE monitor
ADD tls_cert TEXT default null;
ALTER TABLE monitor
ADD tls_key TEXT default null;
*/
await knex.schema.table("monitor", function (table) {
table.text("tls_ca").defaultTo(null);
table.text("tls_cert").defaultTo(null);
table.text("tls_key").defaultTo(null);
});
// 2023-06-30-1401-maintenance-cron.js
/*
-- 999 characters. https://stackoverflow.com/questions/46134830/maximum-length-for-cron-job
DROP TABLE maintenance_timeslot;
ALTER TABLE maintenance ADD cron TEXT;
ALTER TABLE maintenance ADD timezone VARCHAR(255);
ALTER TABLE maintenance ADD duration INTEGER;
*/
await knex.schema
.dropTableIfExists("maintenance_timeslot")
.table("maintenance", function (table) {
table.text("cron");
table.string("timezone", 255);
table.integer("duration");
});
// 2023-06-30-1413-add-parent-monitor.js.
/*
ALTER TABLE monitor
ADD parent INTEGER REFERENCES [monitor] ([id]) ON DELETE SET NULL ON UPDATE CASCADE;
*/
await knex.schema.table("monitor", function (table) {
table.integer("parent").unsigned()
.references("id").inTable("monitor")
.onDelete("SET NULL")
.onUpdate("CASCADE");
});
/*
patch-add-invert-keyword.sql
ALTER TABLE monitor
ADD invert_keyword BOOLEAN default 0 not null;
*/
await knex.schema.table("monitor", function (table) {
table.boolean("invert_keyword").defaultTo(0).notNullable();
});
/*
patch-added-json-query.sql
ALTER TABLE monitor
ADD json_path TEXT;
ALTER TABLE monitor
ADD expected_value VARCHAR(255);
*/
await knex.schema.table("monitor", function (table) {
table.text("json_path");
table.string("expected_value", 255);
});
/*
patch-added-kafka-producer.sql
ALTER TABLE monitor
ADD kafka_producer_topic VARCHAR(255);
ALTER TABLE monitor
ADD kafka_producer_brokers TEXT;
ALTER TABLE monitor
ADD kafka_producer_ssl INTEGER;
ALTER TABLE monitor
ADD kafka_producer_allow_auto_topic_creation VARCHAR(255);
ALTER TABLE monitor
ADD kafka_producer_sasl_options TEXT;
ALTER TABLE monitor
ADD kafka_producer_message TEXT;
*/
await knex.schema.table("monitor", function (table) {
table.string("kafka_producer_topic", 255);
table.text("kafka_producer_brokers");
// patch-fix-kafka-producer-booleans.sql
table.boolean("kafka_producer_ssl").defaultTo(0).notNullable();
table.boolean("kafka_producer_allow_auto_topic_creation").defaultTo(0).notNullable();
table.text("kafka_producer_sasl_options");
table.text("kafka_producer_message");
});
/*
patch-add-certificate-expiry-status-page.sql
ALTER TABLE status_page
ADD show_certificate_expiry BOOLEAN default 0 NOT NULL;
*/
await knex.schema.table("status_page", function (table) {
table.boolean("show_certificate_expiry").defaultTo(0).notNullable();
});
/*
patch-monitor-oauth-cc.sql
ALTER TABLE monitor
ADD oauth_client_id TEXT default null;
ALTER TABLE monitor
ADD oauth_client_secret TEXT default null;
ALTER TABLE monitor
ADD oauth_token_url TEXT default null;
ALTER TABLE monitor
ADD oauth_scopes TEXT default null;
ALTER TABLE monitor
ADD oauth_auth_method TEXT default null;
*/
await knex.schema.table("monitor", function (table) {
table.text("oauth_client_id").defaultTo(null);
table.text("oauth_client_secret").defaultTo(null);
table.text("oauth_token_url").defaultTo(null);
table.text("oauth_scopes").defaultTo(null);
table.text("oauth_auth_method").defaultTo(null);
});
/*
patch-add-timeout-monitor.sql
ALTER TABLE monitor
ADD timeout DOUBLE default 0 not null;
*/
await knex.schema.table("monitor", function (table) {
table.double("timeout").defaultTo(0).notNullable();
});
/*
patch-add-gamedig-given-port.sql
ALTER TABLE monitor
ADD gamedig_given_port_only BOOLEAN default 1 not null;
*/
await knex.schema.table("monitor", function (table) {
table.boolean("gamedig_given_port_only").defaultTo(1).notNullable();
});
log.info("mariadb", "Created basic tables for MariaDB");
}
module.exports = {
createTables,
};

View File

@@ -0,0 +1,41 @@
exports.up = function (knex) {
return knex.schema
.createTable("stat_minutely", function (table) {
table.increments("id");
table.comment("This table contains the minutely aggregate statistics for each monitor");
table.integer("monitor_id").unsigned().notNullable()
.references("id").inTable("monitor")
.onDelete("CASCADE")
.onUpdate("CASCADE");
table.integer("timestamp")
.notNullable()
.comment("Unix timestamp rounded down to the nearest minute");
table.float("ping").notNullable().comment("Average ping in milliseconds");
table.smallint("up").notNullable();
table.smallint("down").notNullable();
table.unique([ "monitor_id", "timestamp" ]);
})
.createTable("stat_daily", function (table) {
table.increments("id");
table.comment("This table contains the daily aggregate statistics for each monitor");
table.integer("monitor_id").unsigned().notNullable()
.references("id").inTable("monitor")
.onDelete("CASCADE")
.onUpdate("CASCADE");
table.integer("timestamp")
.notNullable()
.comment("Unix timestamp rounded down to the nearest day");
table.float("ping").notNullable().comment("Average ping in milliseconds");
table.smallint("up").notNullable();
table.smallint("down").notNullable();
table.unique([ "monitor_id", "timestamp" ]);
});
};
exports.down = function (knex) {
return knex.schema
.dropTable("stat_minutely")
.dropTable("stat_daily");
};

View File

@@ -0,0 +1,16 @@
exports.up = function (knex) {
// Add new column heartbeat.end_time
return knex.schema
.alterTable("heartbeat", function (table) {
table.datetime("end_time").nullable().defaultTo(null);
});
};
exports.down = function (knex) {
// Rename heartbeat.start_time to heartbeat.time
return knex.schema
.alterTable("heartbeat", function (table) {
table.dropColumn("end_time");
});
};

View File

@@ -0,0 +1,15 @@
exports.up = function (knex) {
// Add new column heartbeat.retries
return knex.schema
.alterTable("heartbeat", function (table) {
table.integer("retries").notNullable().defaultTo(0);
});
};
exports.down = function (knex) {
return knex.schema
.alterTable("heartbeat", function (table) {
table.dropColumn("retries");
});
};

View File

@@ -0,0 +1,16 @@
exports.up = function (knex) {
// Add new column monitor.mqtt_check_type
return knex.schema
.alterTable("monitor", function (table) {
table.string("mqtt_check_type", 255).notNullable().defaultTo("keyword");
});
};
exports.down = function (knex) {
// Drop column monitor.mqtt_check_type
return knex.schema
.alterTable("monitor", function (table) {
table.dropColumn("mqtt_check_type");
});
};

View File

@@ -0,0 +1,14 @@
exports.up = function (knex) {
// update monitor.push_token to 32 length
return knex.schema
.alterTable("monitor", function (table) {
table.string("push_token", 32).alter();
});
};
exports.down = function (knex) {
return knex.schema
.alterTable("monitor", function (table) {
table.string("push_token", 20).alter();
});
};

View File

@@ -0,0 +1,21 @@
exports.up = function (knex) {
return knex.schema
.createTable("remote_browser", function (table) {
table.increments("id");
table.string("name", 255).notNullable();
table.string("url", 255).notNullable();
table.integer("user_id").unsigned();
}).alterTable("monitor", function (table) {
// Add new column monitor.remote_browser
table.integer("remote_browser").nullable().defaultTo(null).unsigned()
.index()
.references("id")
.inTable("remote_browser");
});
};
exports.down = function (knex) {
return knex.schema.dropTable("remote_browser").alterTable("monitor", function (table) {
table.dropColumn("remote_browser");
});
};

View File

@@ -0,0 +1,56 @@
# Info
https://knexjs.org/guide/migrations.html#knexfile-in-other-languages
## Basic rules
- All tables must have a primary key named `id`
- Filename format: `YYYY-MM-DD-HHMM-patch-name.js`
- Avoid native SQL syntax, use knex methods, because Uptime Kuma supports SQLite and MariaDB.
## Template
```js
exports.up = function(knex) {
};
exports.down = function(knex) {
};
// exports.config = { transaction: false };
```
## Example
Filename: 2023-06-30-1348-create-user-and-product.js
```js
exports.up = function(knex) {
return knex.schema
.createTable('user', function (table) {
table.increments('id');
table.string('first_name', 255).notNullable();
table.string('last_name', 255).notNullable();
})
.createTable('product', function (table) {
table.increments('id');
table.decimal('price').notNullable();
table.string('name', 1000).notNullable();
}).then(() => {
knex("products").insert([
{ price: 10, name: "Apple" },
{ price: 20, name: "Orange" },
]);
});
};
exports.down = function(knex) {
return knex.schema
.dropTable("product")
.dropTable("user");
};
```
https://knexjs.org/guide/migrations.html#transactions-in-migrations

View File

@@ -0,0 +1,3 @@
# Don't create a new migration file here
Please go to ./db/knex_migrations/README.md

View File

@@ -1,5 +1,7 @@
-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
BEGIN TRANSACTION;
ALTER TABLE monitor_group
ADD send_url BOOLEAN DEFAULT 0 NOT NULL;
COMMIT;

View File

@@ -1,4 +1,7 @@
-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
BEGIN TRANSACTION;
ALTER TABLE status_page ADD google_analytics_tag_id VARCHAR;
ALTER TABLE monitor
ADD game VARCHAR(255);
COMMIT;

View File

@@ -0,0 +1,7 @@
-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
BEGIN TRANSACTION;
ALTER TABLE status_page
ADD google_analytics_tag_id VARCHAR;
COMMIT;

View File

@@ -1,6 +1,7 @@
-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
BEGIN TRANSACTION;
ALTER TABLE monitor
ADD parent INTEGER REFERENCES [monitor] ([id]) ON DELETE SET NULL ON UPDATE CASCADE;
COMMIT
COMMIT;

View File

@@ -1,3 +1,4 @@
-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
BEGIN TRANSACTION;
ALTER TABLE monitor
@@ -15,4 +16,4 @@ ALTER TABLE monitor
ALTER TABLE monitor
ADD radius_secret VARCHAR(255);
COMMIT
COMMIT;

View File

@@ -3,4 +3,5 @@ BEGIN TRANSACTION;
ALTER TABLE monitor
ADD timeout DOUBLE default 0 not null;
COMMIT;
COMMIT;

View File

@@ -1,5 +1,6 @@
-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
BEGIN TRANSACTION;
CREATE TABLE [api_key] (
[id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[key] VARCHAR(255) NOT NULL,
@@ -10,4 +11,5 @@ CREATE TABLE [api_key] (
[expires] DATETIME DEFAULT NULL,
CONSTRAINT FK_user FOREIGN KEY ([user_id]) REFERENCES [user]([id]) ON DELETE CASCADE ON UPDATE CASCADE
);
COMMIT;

View File

@@ -1,5 +1,7 @@
-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
BEGIN TRANSACTION;
ALTER TABLE monitor
ADD packet_size INTEGER DEFAULT 56 NOT NULL;
COMMIT;

View File

@@ -18,5 +18,4 @@ drop table setting;
alter table setting_dg_tmp rename to setting;
COMMIT;

View File

@@ -0,0 +1,11 @@
-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
BEGIN TRANSACTION;
ALTER TABLE status_page
ADD footer_text TEXT;
ALTER TABLE status_page
ADD custom_css TEXT;
ALTER TABLE status_page
ADD show_powered_by BOOLEAN NOT NULL DEFAULT 1;
COMMIT;

View File

@@ -1,3 +1,4 @@
-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
BEGIN TRANSACTION;
CREATE TABLE monitor_tls_info (

View File

@@ -1,5 +0,0 @@
BEGIN TRANSACTION;
ALTER TABLE monitor
ADD game VARCHAR(255);
COMMIT

View File

@@ -1,6 +0,0 @@
-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
BEGIN TRANSACTION;
ALTER TABLE status_page ADD footer_text TEXT;
ALTER TABLE status_page ADD custom_css TEXT;
ALTER TABLE status_page ADD show_powered_by BOOLEAN NOT NULL DEFAULT 1;
COMMIT;

View File

@@ -1,8 +0,0 @@
# DON'T UPDATE TO alpine3.13, 1.14, see #41.
FROM node:16-alpine3.12
WORKDIR /app
# Install apprise, iputils for non-root ping, setpriv
RUN apk add --no-cache iputils setpriv dumb-init python3 py3-cryptography py3-pip py3-six py3-yaml py3-click py3-markdown py3-requests py3-requests-oauthlib git && \
pip3 --no-cache-dir install apprise==1.4.0 && \
rm -rf /root/.cache

View File

@@ -1,12 +1,9 @@
# DON'T UPDATE TO bullseye-slim, see #372.
# There is no 20-buster-slim for armv7 unfortunately, 18-buster-slim is the last one for Uptime Kuma v1.
FROM node:18-buster-slim
# If the image changed, the second stage image should be changed too
FROM node:20-bookworm-slim AS base2-slim
ARG TARGETPLATFORM
WORKDIR /app
# Specify --no-install-recommends to skip unused dependencies, make the base much smaller!
# python3* = apprise's dependencies
# apprise = for notifications (From testing repo)
# sqlite3 = for debugging
# iputils-ping = for ping
# util-linux = for setpriv (Should be dropped in 2.0.0?)
@@ -15,29 +12,25 @@ WORKDIR /app
# ca-certificates = keep the cert up-to-date
# sudo = for start service nscd with non-root user
# nscd = for better DNS caching
# (pip) apprise = for notifications
RUN apt-get update && \
apt-get --yes --no-install-recommends install \
python3 python3-pip python3-cryptography python3-six python3-yaml python3-click python3-markdown python3-requests python3-requests-oauthlib \
sqlite3 \
RUN echo "deb http://deb.debian.org/debian testing main" >> /etc/apt/sources.list && \
apt update && \
apt --yes --no-install-recommends -t testing install apprise sqlite3 ca-certificates && \
apt --yes --no-install-recommends -t stable install \
iputils-ping \
util-linux \
dumb-init \
curl \
ca-certificates \
sudo \
nscd && \
pip3 --no-cache-dir install apprise==1.6.0 && \
rm -rf /var/lib/apt/lists/* && \
apt --yes autoremove
# Install cloudflared
RUN set -eux && \
mkdir -p --mode=0755 /usr/share/keyrings && \
curl --fail --show-error --silent --location --insecure https://pkg.cloudflare.com/cloudflare-main.gpg --output /usr/share/keyrings/cloudflare-main.gpg && \
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared buster main' | tee /etc/apt/sources.list.d/cloudflared.list && \
apt-get update && \
apt-get install --yes --no-install-recommends cloudflared && \
RUN curl https://pkg.cloudflare.com/cloudflare-main.gpg --output /usr/share/keyrings/cloudflare-main.gpg && \
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared bullseye main' | tee /etc/apt/sources.list.d/cloudflared.list && \
apt update && \
apt install --yes --no-install-recommends -t stable cloudflared && \
cloudflared version && \
rm -rf /var/lib/apt/lists/* && \
apt --yes autoremove
@@ -46,3 +39,13 @@ RUN set -eux && \
COPY ./docker/etc/nscd.conf /etc/nscd.conf
COPY ./docker/etc/sudoers /etc/sudoers
# Full Base Image
# MariaDB, Chromium and fonts
FROM base2-slim AS base2
ENV UPTIME_KUMA_ENABLE_EMBEDDED_MARIADB=1
RUN apt update && \
apt --yes --no-install-recommends install chromium fonts-indic fonts-noto fonts-noto-cjk mariadb-server && \
rm -rf /var/lib/apt/lists/* && \
apt --yes autoremove && \
chown -R node:node /var/lib/mysql

View File

@@ -0,0 +1,14 @@
version: '3.8'
services:
uptime-kuma:
container_name: uptime-kuma-dev
image: louislam/uptime-kuma:nightly2
volumes:
#- ./data:/app/data
- ../server:/app/server
- ../db:/app/db
ports:
- "3001:3001" # <Host Port>:<Container Port>
- "3307:3306"

View File

@@ -1,14 +1,15 @@
# Simple docker-compose.yml
# You can change your port or volume location
version: '3.3'
version: '3.8'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
volumes:
- ./uptime-kuma-data:/app/data
- uptime-kuma:/app/data
ports:
- 3001:3001 # <Host Port>:<Container Port>
- "3001:3001" # <Host Port>:<Container Port>
restart: always
volumes:
uptime-kuma:

View File

@@ -1,6 +1,8 @@
ARG BASE_IMAGE=louislam/uptime-kuma:base2
############################################
# Build in Golang
# Run npm run build-healthcheck-armv7 in the host first, another it will be super slow where it is building the armv7 healthcheck
# Run npm run build-healthcheck-armv7 in the host first, otherwise it will be super slow where it is building the armv7 healthcheck
# Check file: builder-go.dockerfile
############################################
FROM louislam/uptime-kuma:builder-go AS build_healthcheck
@@ -8,49 +10,57 @@ FROM louislam/uptime-kuma:builder-go AS build_healthcheck
############################################
# Build in Node.js
############################################
FROM louislam/uptime-kuma:base-debian AS build
FROM louislam/uptime-kuma:base2 AS build
USER node
WORKDIR /app
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
COPY .npmrc .npmrc
COPY package.json package.json
COPY package-lock.json package-lock.json
COPY --chown=node:node .npmrc .npmrc
COPY --chown=node:node package.json package.json
COPY --chown=node:node package-lock.json package-lock.json
RUN npm ci --omit=dev
COPY . .
COPY --from=build_healthcheck /app/extra/healthcheck /app/extra/healthcheck
RUN chmod +x /app/extra/entrypoint.sh
COPY --chown=node:node --from=build_healthcheck /app/extra/healthcheck /app/extra/healthcheck
RUN mkdir ./data
############################################
# ⭐ Main Image
############################################
FROM louislam/uptime-kuma:base-debian AS release
FROM $BASE_IMAGE AS release
USER node
WORKDIR /app
LABEL org.opencontainers.image.source="https://github.com/louislam/uptime-kuma"
ENV UPTIME_KUMA_IS_CONTAINER=1
# Copy app files from build layer
COPY --from=build /app /app
COPY --chown=node:node --from=build /app /app
EXPOSE 3001
VOLUME ["/app/data"]
HEALTHCHECK --interval=60s --timeout=30s --start-period=180s --retries=5 CMD extra/healthcheck
ENTRYPOINT ["/usr/bin/dumb-init", "--", "extra/entrypoint.sh"]
ENTRYPOINT ["/usr/bin/dumb-init", "--"]
CMD ["node", "server/server.js"]
############################################
# Rootless Image
############################################
FROM release AS rootless
############################################
# Mark as Nightly
############################################
FROM release AS nightly
RUN npm run mark-as-nightly
FROM nightly AS nightly-rootless
USER node
############################################
# Build an image for testing pr
############################################
FROM louislam/uptime-kuma:base-debian AS pr-test
FROM louislam/uptime-kuma:base2 AS pr-test2
WORKDIR /app
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
## Install Git
@@ -78,7 +88,7 @@ CMD ["npm", "run", "start-pr-test"]
############################################
# Upload the artifact to Github
############################################
FROM louislam/uptime-kuma:base-debian AS upload-artifact
FROM louislam/uptime-kuma:base2 AS upload-artifact
WORKDIR /
RUN apt update && \
apt --yes install curl file

View File

@@ -1,27 +0,0 @@
FROM louislam/uptime-kuma:base-alpine AS build
WORKDIR /app
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1
COPY .npmrc .npmrc
COPY package.json package.json
COPY package-lock.json package-lock.json
RUN npm ci --omit=dev
COPY . .
RUN chmod +x /app/extra/entrypoint.sh
FROM louislam/uptime-kuma:base-alpine AS release
WORKDIR /app
# Copy app files from build layer
COPY --from=build /app /app
EXPOSE 3001
VOLUME ["/app/data"]
HEALTHCHECK --interval=60s --timeout=30s --start-period=180s --retries=5 CMD node extra/healthcheck.js
ENTRYPOINT ["/usr/bin/dumb-init", "--", "extra/entrypoint.sh"]
CMD ["node", "server/server.js"]
FROM release AS nightly
RUN npm run mark-as-nightly

View File

@@ -36,6 +36,8 @@ if (! exists) {
/**
* Commit updated files
* @param {string} version Version to update to
* @returns {void}
* @throws Error committing files
*/
function commit(version) {
let msg = "Update to " + version;
@@ -55,6 +57,7 @@ function commit(version) {
/**
* Create a tag with the specified version
* @param {string} version Tag to create
* @returns {void}
*/
function tag(version) {
let res = childProcess.spawnSync("git", [ "tag", version ]);
@@ -68,6 +71,7 @@ function tag(version) {
* Check if a tag exists for the specified version
* @param {string} version Version to check
* @returns {boolean} Does the tag already exist
* @throws Version is not valid
*/
function tagExists(version) {
if (! version) {

View File

@@ -15,6 +15,7 @@ download(url);
/**
* Downloads the latest version of the dist from a GitHub release.
* @param {string} url The URL to download from.
* @returns {void}
*
* Generated by Trelent
*/

View File

@@ -1,21 +0,0 @@
#!/usr/bin/env sh
# set -e Exit the script if an error happens
set -e
PUID=${PUID=0}
PGID=${PGID=0}
files_ownership () {
# -h Changes the ownership of an encountered symbolic link and not that of the file or directory pointed to by the symbolic link.
# -R Recursively descends the specified directories
# -c Like verbose but report only when a change is made
chown -hRc "$PUID":"$PGID" /app/data
}
echo "==> Performing startup jobs and maintenance tasks"
files_ownership
echo "==> Starting application with user $PUID group $PGID"
# --clear-groups Clear supplementary groups.
exec setpriv --reuid "$PUID" --regid "$PGID" --clear-groups "$@"

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
@@ -28,9 +28,15 @@ namespace UptimeKuma {
Environment.CurrentDirectory = cwd;
}
bool isIntranet = args.Contains("--intranet");
if (isIntranet) {
Console.WriteLine("The --intranet argument was provided, so we will not try to access the internet. The first time this application runs you'll need to run it without the --intranet param or copy the result from another machine to the intranet server.");
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new UptimeKumaApplicationContext());
Application.Run(new UptimeKumaApplicationContext(isIntranet));
}
}
@@ -49,8 +55,9 @@ namespace UptimeKuma {
private RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
private readonly bool intranetOnly;
public UptimeKumaApplicationContext() {
public UptimeKumaApplicationContext(bool intranetOnly) {
// Single instance only
bool createdNew;
@@ -59,6 +66,8 @@ namespace UptimeKuma {
return;
}
this.intranetOnly = intranetOnly;
var startingText = "Starting server...";
trayIcon = new NotifyIcon();
trayIcon.Text = startingText;
@@ -98,6 +107,10 @@ namespace UptimeKuma {
}
void DownloadFiles() {
if (intranetOnly) {
return;
}
var form = new DownloadForm();
form.Closed += Exit;
form.Show();
@@ -173,7 +186,9 @@ namespace UptimeKuma {
}
void CheckForUpdate(object sender, EventArgs e) {
var needUpdate = false;
if (intranetOnly) {
return;
}
// Check version.json exists
if (File.Exists("version.json")) {
@@ -204,8 +219,12 @@ namespace UptimeKuma {
}
void VisitGitHub(object sender, EventArgs e)
{
void VisitGitHub(object sender, EventArgs e) {
if (intranetOnly) {
MessageBox.Show("You have parsed in --intranet so we will not try to access the internet or visit github.com, please go to https://github.com/louislam/uptime-kuma if you want to visit github.");
return;
}
Process.Start("https://github.com/louislam/uptime-kuma");
}

View File

@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.1.0")]
[assembly: AssemblyFileVersion("1.0.1.0")]
[assembly: AssemblyVersion("1.0.2.0")]
[assembly: AssemblyFileVersion("1.0.2.0")]

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="packages\Costura.Fody.5.7.0\build\Costura.Fody.props" Condition="Exists('packages\Costura.Fody.5.7.0\build\Costura.Fody.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -39,107 +38,104 @@
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>COPY "$(SolutionDir)bin\Debug\uptime-kuma.exe" "%UserProfile%\Desktop\uptime-kuma-win64\"</PostBuildEvent>
<PostBuildEvent>COPY "$(SolutionDir)bin\Debug\uptime-kuma.exe" "%UserProfile%\Desktop\uptime-kuma-win64\"</PostBuildEvent>
</PropertyGroup>
<ItemGroup>
<Reference Include="Costura, Version=5.7.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>packages\Costura.Fody.5.7.0\lib\netstandard1.0\Costura.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Win32.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll</HintPath>
<HintPath>packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll</HintPath>
</Reference>
<Reference Include="mscorlib" />
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>packages\Newtonsoft.Json.13.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
<HintPath>packages\Newtonsoft.Json.13.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.AppContext, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll</HintPath>
<HintPath>packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll</HintPath>
</Reference>
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
<HintPath>packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Console, Version=4.0.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Console.4.3.1\lib\net46\System.Console.dll</HintPath>
<HintPath>packages\System.Console.4.3.1\lib\net46\System.Console.dll</HintPath>
</Reference>
<Reference Include="System.Core" />
<Reference Include="System.Diagnostics.DiagnosticSource, Version=7.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Diagnostics.DiagnosticSource.7.0.1\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
<HintPath>packages\System.Diagnostics.DiagnosticSource.7.0.1\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
</Reference>
<Reference Include="System.Diagnostics.Tracing, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll</HintPath>
<HintPath>packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll</HintPath>
</Reference>
<Reference Include="System.Globalization.Calendars, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll</HintPath>
<HintPath>packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll</HintPath>
</Reference>
<Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
<HintPath>packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
</Reference>
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
<HintPath>packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
</Reference>
<Reference Include="System.IO.Compression.FileSystem" />
<Reference Include="System.IO.Compression.ZipFile, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll</HintPath>
<HintPath>packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll</HintPath>
</Reference>
<Reference Include="System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll</HintPath>
<HintPath>packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll</HintPath>
</Reference>
<Reference Include="System.IO.FileSystem.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll</HintPath>
<HintPath>packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll</HintPath>
</Reference>
<Reference Include="System.Linq, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Linq.4.3.0\lib\net463\System.Linq.dll</HintPath>
<HintPath>packages\System.Linq.4.3.0\lib\net463\System.Linq.dll</HintPath>
</Reference>
<Reference Include="System.Linq.Expressions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll</HintPath>
<HintPath>packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
<HintPath>packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
<HintPath>packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
</Reference>
<Reference Include="System.Net.Sockets, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll</HintPath>
<HintPath>packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
<HintPath>packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Reflection, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll</HintPath>
<HintPath>packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll</HintPath>
</Reference>
<Reference Include="System.Runtime, Version=4.1.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Runtime.4.3.1\lib\net462\System.Runtime.dll</HintPath>
<HintPath>packages\System.Runtime.4.3.1\lib\net462\System.Runtime.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
<HintPath>packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Extensions, Version=4.1.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Runtime.Extensions.4.3.1\lib\net462\System.Runtime.Extensions.dll</HintPath>
<HintPath>packages\System.Runtime.Extensions.4.3.1\lib\net462\System.Runtime.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.InteropServices, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll</HintPath>
<HintPath>packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
<HintPath>packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
</Reference>
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Security.Cryptography.Algorithms.4.3.1\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
<HintPath>packages\System.Security.Cryptography.Algorithms.4.3.1\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
</Reference>
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
<HintPath>packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
</Reference>
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
<HintPath>packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
</Reference>
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Security.Cryptography.X509Certificates.4.3.2\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
<HintPath>packages\System.Security.Cryptography.X509Certificates.4.3.2\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
</Reference>
<Reference Include="System.Text.RegularExpressions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Text.RegularExpressions.4.3.1\lib\net463\System.Text.RegularExpressions.dll</HintPath>
<HintPath>packages\System.Text.RegularExpressions.4.3.1\lib\net463\System.Text.RegularExpressions.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
@@ -150,21 +146,21 @@
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Xml.ReaderWriter, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>packages\System.Xml.ReaderWriter.4.3.1\lib\net46\System.Xml.ReaderWriter.dll</HintPath>
<HintPath>packages\System.Xml.ReaderWriter.4.3.1\lib\net46\System.Xml.ReaderWriter.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="DownloadForm.cs">
<SubType>Form</SubType>
<SubType>Form</SubType>
</Compile>
<Compile Include="DownloadForm.Designer.cs">
<DependentUpon>DownloadForm.cs</DependentUpon>
<DependentUpon>DownloadForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Version.cs" />
<EmbeddedResource Include="DownloadForm.resx">
<DependentUpon>DownloadForm.cs</DependentUpon>
<DependentUpon>DownloadForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
@@ -176,7 +172,7 @@
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="..\..\public\favicon.ico">
<Link>favicon.ico</Link>
<Link>favicon.ico</Link>
</None>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
@@ -193,20 +189,15 @@
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Content Include=".gitignore" />
<Content Include="app.manifest" />
<Content Include=".gitignore" />
<Content Include="app.manifest" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105.The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('packages\Costura.Fody.5.7.0\build\Costura.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Costura.Fody.5.7.0\build\Costura.Fody.props'))" />
<Error Condition="!Exists('packages\Costura.Fody.5.7.0\build\Costura.Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Costura.Fody.5.7.0\build\Costura.Fody.targets'))" />
<Error Condition="!Exists('packages\Fody.6.6.4\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Fody.6.6.4\build\Fody.targets'))" />
<Error Condition="!Exists('packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets'))" />
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105.The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets'))" />
</Target>
<Import Project="packages\Costura.Fody.5.7.0\build\Costura.Fody.targets" Condition="Exists('packages\Costura.Fody.5.7.0\build\Costura.Fody.targets')" />
<Import Project="packages\Fody.6.6.4\build\Fody.targets" Condition="Exists('packages\Fody.6.6.4\build\Fody.targets')" />
<Import Project="packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" />
</Project>

View File

@@ -1,7 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Costura.Fody" version="5.7.0" targetFramework="net472" developmentDependency="true" />
<package id="Fody" version="6.6.4" targetFramework="net472" developmentDependency="true" />
<package id="Microsoft.NETCore.Platforms" version="7.0.0" targetFramework="net472" />
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net472" />
<package id="NETStandard.Library" version="2.0.3" targetFramework="net472" />
@@ -53,4 +51,4 @@
<package id="System.Threading.Tasks" version="4.3.0" targetFramework="net472" />
<package id="System.Threading.Timer" version="4.3.0" targetFramework="net472" />
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="net472" />
</packages>
</packages>

View File

@@ -4,12 +4,12 @@ const fs = require("fs");
* to avoid the runtime deprecation warning triggered for using `fs.rmdirSync` with `{ recursive: true }` in Node.js v16,
* or the `recursive` property removing completely in the future Node.js version.
* See the link below.
*
* @todo Once we drop the support for Node.js v14 (or at least versions before v14.14.0), we can safely replace this function with `fs.rmSync`, since `fs.rmSync` was add in Node.js v14.14.0 and currently we supports all the Node.js v14 versions that include the versions before the v14.14.0, and this function have almost the same signature with `fs.rmSync`.
* @link https://nodejs.org/docs/latest-v16.x/api/deprecations.html#dep0147-fsrmdirpath--recursive-true- the deprecation infomation of `fs.rmdirSync`
* @link https://nodejs.org/docs/latest-v16.x/api/deprecations.html#dep0147-fsrmdirpath--recursive-true- the deprecation information of `fs.rmdirSync`
* @link https://nodejs.org/docs/latest-v16.x/api/fs.html#fsrmsyncpath-options the document of `fs.rmSync`
* @param {fs.PathLike} path Valid types for path values in "fs".
* @param {fs.RmDirOptions} [options] options for `fs.rmdirSync`, if `fs.rmSync` is available and property `recursive` is true, it will automatically have property `force` with value `true`.
* @param {fs.RmDirOptions} options options for `fs.rmdirSync`, if `fs.rmSync` is available and property `recursive` is true, it will automatically have property `force` with value `true`.
* @returns {void}
*/
const rmSync = (path, options) => {
if (typeof fs.rmSync === "function") {

View File

@@ -6,7 +6,7 @@
* ⚠️ Deprecated: Changed to healthcheck.go, it will be deleted in the future.
* This script should be run after a period of time (180s), because the server may need some time to prepare.
*/
const { FBSD } = require("../server/util-server");
const FBSD = /^freebsd/.test(process.platform);
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

View File

@@ -1,276 +0,0 @@
// install.sh is generated by ./extra/install.batsh, do not modify it directly.
// "npm run compile-install-script" to compile install.sh
// The command is working on Windows PowerShell and Docker for Windows only.
// curl -o kuma_install.sh https://raw.githubusercontent.com/louislam/uptime-kuma/master/install.sh && sudo bash kuma_install.sh
println("=====================");
println("Uptime Kuma Install Script");
println("=====================");
println("Supported OS: Ubuntu >= 16.04, Debian and CentOS/RHEL 7/8");
println("---------------------------------------");
println("This script is designed for Linux and basic usage.");
println("For advanced usage, please go to https://github.com/louislam/uptime-kuma/wiki/Installation");
println("---------------------------------------");
println("");
println("Local - Install Uptime Kuma on your current machine with git, Node.js and pm2");
println("Docker - Install Uptime Kuma Docker container");
println("");
if ("$1" != "") {
type = "$1";
} else {
call("read", "-p", "Which installation method do you prefer? [DOCKER/local]: ", "type");
}
defaultPort = "3001";
function checkNode() {
bash("nodeVersion=$(node -e 'console.log(process.versions.node.split(`.`)[0])')");
println("Node Version: " ++ nodeVersion);
if (nodeVersion <= "12") {
println("Error: Required Node.js 14");
call("exit", "1");
}
}
function deb() {
bash("nodeCheck=$(node -v)");
bash("apt --yes update");
if (nodeCheck != "") {
checkNode();
} else {
// Old nodejs binary name is "nodejs"
bash("check=$(nodejs --version)");
if (check != "") {
println("Error: 'node' command is not found, but 'nodejs' command is found. Your NodeJS should be too old.");
bash("exit 1");
}
bash("curlCheck=$(curl --version)");
if (curlCheck == "") {
println("Installing Curl");
bash("apt --yes install curl");
}
println("Installing Node.js 16");
bash("curl -sL https://deb.nodesource.com/setup_16.x | bash - > log.txt");
bash("apt --yes install nodejs");
bash("node -v");
bash("nodeCheckAgain=$(node -v)");
if (nodeCheckAgain == "") {
println("Error during Node.js installation");
bash("exit 1");
}
}
bash("check=$(git --version)");
if (check == "") {
println("Installing Git");
bash("apt --yes install git");
}
}
if (type == "local") {
defaultInstallPath = "/opt/uptime-kuma";
if (exists("/etc/redhat-release")) {
os = call("cat", "/etc/redhat-release");
distribution = "rhel";
} else if (exists("/etc/issue")) {
bash("os=$(head -n1 /etc/issue | cut -f 1 -d ' ')");
if (os == "Ubuntu") {
distribution = "ubuntu";
// Get ubuntu version
bash(". /etc/lsb-release");
version = DISTRIB_RELEASE;
}
if (os == "Debian") {
distribution = "debian";
}
}
bash("arch=$(uname -i)");
println("Your OS: " ++ os);
println("Distribution: " ++ distribution);
println("Version: " ++ version);
println("Arch: " ++ arch);
if ("$3" != "") {
port = "$3";
} else {
call("read", "-p", "Listening Port [$defaultPort]: ", "port");
if (port == "") {
port = defaultPort;
}
}
if ("$2" != "") {
installPath = "$2";
} else {
call("read", "-p", "Installation Path [$defaultInstallPath]: ", "installPath");
if (installPath == "") {
installPath = defaultInstallPath;
}
}
// CentOS
if (distribution == "rhel") {
bash("nodeCheck=$(node -v)");
if (nodeCheck != "") {
checkNode();
} else {
bash("dnfCheck=$(dnf --version)");
// Use yum
if (dnfCheck == "") {
bash("curlCheck=$(curl --version)");
if (curlCheck == "") {
println("Installing Curl");
bash("yum -y -q install curl");
}
println("Installing Node.js 16");
bash("curl -sL https://rpm.nodesource.com/setup_16.x | bash - > log.txt");
bash("yum install -y -q nodejs");
} else {
bash("curlCheck=$(curl --version)");
if (curlCheck == "") {
println("Installing Curl");
bash("dnf -y install curl");
}
println("Installing Node.js 16");
bash("curl -sL https://rpm.nodesource.com/setup_16.x | bash - > log.txt");
bash("dnf install -y nodejs");
}
bash("node -v");
bash("nodeCheckAgain=$(node -v)");
if (nodeCheckAgain == "") {
println("Error during Node.js installation");
bash("exit 1");
}
}
bash("check=$(git --version)");
if (check == "") {
println("Installing Git");
bash("yum -y -q install git");
}
// Ubuntu
} else if (distribution == "ubuntu") {
deb();
// Debian
} else if (distribution == "debian") {
deb();
} else {
// Unknown distribution
error = 0;
bash("check=$(git --version)");
if (check == "") {
error = 1;
println("Error: git is not found!");
println("help: an installation guide is available at https://git-scm.com/book/en/v2/Getting-Started-Installing-Git");
}
bash("check=$(node -v)");
if (check == "") {
error = 1;
println("Error: node is not found");
println("help: an installation guide is available at https://nodejs.org/en/download");
}
if (error > 0) {
println("Please install above missing software");
bash("exit 1");
}
}
bash("check=$(pm2 --version)");
if (check == "") {
println("Installing PM2");
bash("npm install pm2 -g && pm2 install pm2-logrotate");
bash("pm2 startup");
}
// Check again
bash("check=$(pm2 --version)");
if (check == "") {
println("Error: pm2 is not found!");
println("help: an installation guide is available at https://pm2.keymetrics.io/docs/usage/quick-start/");
bash("exit 1");
}
bash("mkdir -p $installPath");
bash("cd $installPath");
bash("git clone https://github.com/louislam/uptime-kuma.git .");
bash("npm run setup");
bash("pm2 start server/server.js --name uptime-kuma -- --port=$port");
} else {
defaultVolume = "uptime-kuma";
bash("check=$(docker -v)");
if (check == "") {
println("Error: docker is not found!");
println("help: an installation guide is available at https://docs.docker.com/desktop/");
bash("exit 1");
}
bash("check=$(docker info)");
bash("if [[ \"$check\" == *\"Is the docker daemon running\"* ]]; then
\"echo\" \"Error: docker is not running\"
\"echo\" \"help: a troubleshooting guide is available at https://docs.docker.com/config/daemon/troubleshoot/\"
\"exit\" \"1\"
fi");
if ("$3" != "") {
port = "$3";
} else {
call("read", "-p", "Expose Port [$defaultPort]: ", "port");
if (port == "") {
port = defaultPort;
}
}
if ("$2" != "") {
volume = "$2";
} else {
call("read", "-p", "Volume Name [$defaultVolume]: ", "volume");
if (volume == "") {
volume = defaultVolume;
}
}
println("Port: $port");
println("Volume: $volume");
bash("docker volume create $volume");
bash("docker run -d --restart=always -p $port:3001 -v $volume:/app/data --name uptime-kuma louislam/uptime-kuma:1");
}
println("http://localhost:$port");

3
extra/push-examples/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
java/Index.class
csharp/index.exe
typescript-fetch/index.js

Some files were not shown because too many files have changed in this diff Show More