Compare commits
661 Commits
Author | SHA1 | Date |
---|---|---|
Tim Zandbergen | fccc264107 | |
Viharm | 61afb81554 | |
Viharm | 537b17ac01 | |
Tim Zandbergen | 5f65f92678 | |
Marc Farré | 850f0eac8d | |
Viharm | 59966c6cd2 | |
Viharm | c81a4a426c | |
Raphael.Bergmann | 7245f65873 | |
Samuel Denis-D'Ortun | 04a4d959fd | |
Samuel Denis-D'Ortun | 015cc9553b | |
Samuel Denis-D'Ortun | 462f091c69 | |
Germs2004 | 7f5b5878da | |
dependabot[bot] | 4693ff3910 | |
viharm | 9643ef3f6f | |
Tim Zandbergen | b18c4d2855 | |
Tim Zandbergen | 460db614f8 | |
Marc Farré | 8dcf5c2666 | |
Tim Zandbergen | 74dfeea08b | |
Tim Zandbergen | d725bd9234 | |
Tim Zandbergen | 87dfcd183b | |
Tim Zandbergen | cc6cece19c | |
ivnilv | 162bba0046 | |
Tim Zandbergen | b81f173a05 | |
Akshay Jain | 76d0c276c0 | |
Tim Zandbergen | 689afca21f | |
scheibling | e28192278c | |
Tim Zandbergen | 3daa804d5f | |
Tim Zandbergen | bb10a5f3c6 | |
scheibling | 32fcb8b0e8 | |
Tim | 6d74c45e0b | |
wilhelch | ecc1c6649a | |
Unknown | 2eb190e07e | |
Denis Stepanov | 434159e461 | |
imsoftware | cfe3a6f61c | |
Michael | 88708240c7 | |
Luke√ | 9c8ed81203 | |
TimZ99 | c0401fd143 | |
TimZ99 | 056b429230 | |
TacticalFreak | 617adeea6f | |
TimZ99 | de7c62cbce | |
Michael | 600f63097e | |
wienfuchs | e5b76ca49e | |
TimZ99 | dbd0217053 | |
TimZ99 | 13b893e1d0 | |
Oleg Petrov | 6281ae07bf | |
Seti | c3a3c3ab2c | |
dependabot[bot] | 803519479a | |
dependabot[bot] | 0a54b1444d | |
Viharm | 17cb13364b | |
hjcday | 79ccd15a76 | |
dependabot[bot] | a94f8ca677 | |
Philip | 28caad2c85 | |
Tim | 15edba0f1a | |
Joseph Helela | 54a5e2801c | |
jamgames2 | 59f4f44107 | |
Lukas | 10f111c830 | |
dependabot[bot] | 3a58a562dd | |
dependabot[bot] | d406f69231 | |
dependabot[bot] | 0a7844536f | |
dependabot[bot] | 0d44af0ee0 | |
Mario Rothauer | 31e987a1d5 | |
Samuel Denis-D'Ortun | b59f62c139 | |
Samuel Denis-D'Ortun | 3cf9a6e444 | |
Edgar Ostrowski | aad1a1eda7 | |
dependabot[bot] | 51949657c8 | |
dependabot[bot] | 7d31bf7e6b | |
dependabot[bot] | 5dfb66615a | |
dependabot[bot] | 30fe2c6dcf | |
dependabot[bot] | bc6bd379ac | |
dependabot[bot] | ba8c7c1c84 | |
dependabot[bot] | 799f512a92 | |
dependabot[bot] | 9fa924d0cc | |
dependabot[bot] | af1ddd6911 | |
dependabot[bot] | 2ea03a8650 | |
dependabot[bot] | 118d1e624e | |
dependabot[bot] | 474b90c123 | |
Tim | fd820dea06 | |
TimZ99 | 66983a0a66 | |
TimZ99 | f1df99c5ae | |
TimZ99 | 99bcc90c03 | |
Tim | 36e33b3215 | |
TimZ99 | e599c18f0b | |
TimZ99 | 57e53d77c4 | |
TimZ99 | 56b122471b | |
TimZ99 | 8cbf2dd7bf | |
TimZ99 | 27d9bd6a70 | |
TimZ99 | b94d66bfc0 | |
TimZ99 | 7d11f7bd1f | |
TimZ99 | 7745c752d1 | |
Marc Farré | ba0fa251e9 | |
Daniel Krusky | d0f5d18fc4 | |
imsoftware | fe9cdab437 | |
Dylan Ysmal | 74b97db66f | |
milux | 9fe598d774 | |
wienfuchs | c090a398d1 | |
Malte Grosse | 14f6e491cf | |
Alexandre ZANELLI | 60955f799e | |
Marc Farré | 97d61a972c | |
TimZ99 | f29da63fb8 | |
TimZ99 | 5c5d980bd3 | |
TimZ99 | be83403834 | |
TimZ99 | e69ae1f375 | |
TimZ99 | 69f227216e | |
TimZ99 | dd915ae97b | |
dependabot[bot] | 5ecdc75dcf | |
dhanrajbsheth | f5db23b1e5 | |
Mateusz Małek | 2a15b31ecd | |
wienfuchs | 7deac0815a | |
Tim | f02d55635e | |
wienfuchs | 07abc7d294 | |
wienfuchs | 96d0c3fa57 | |
Tim | ea33ba07ca | |
Tim | 7856de4bbb | |
Tim | a19127721c | |
Mateusz Małek | 7f1ea8452a | |
Mateusz Małek | de653fce9b | |
Mateusz Małek | 2fd9702485 | |
Mateusz Małek | 4894653891 | |
Tim | 6a869aff18 | |
TimZ99 | 875b0208b5 | |
Mateusz Małek | 72de1479fa | |
Mateusz Małek | 586c01136e | |
TimZ99 | c0e0b260d5 | |
Michael | 7daab77f8d | |
wienfuchs | 7bee25cc1e | |
imsoftware | 424fca1eb7 | |
TimZ99 | 9d0f8982b5 | |
TimZ99 | 5e4413bb2e | |
TimZ99 | 76687d8c45 | |
imsoftware | 02c746ae41 | |
imsoftware | 6c5665d0cd | |
TimZ99 | 58d73bda37 | |
TimZ99 | 7968e876c4 | |
Petr Suchy | af5334a073 | |
Flávio Gomes da Silva Lisboa | 63673b7641 | |
Flávio Gomes da Silva Lisboa | b346cd9c4d | |
Michael | 1358929958 | |
mklemme1 | bd6510b188 | |
Tim | 40dc6fe64a | |
Tim | a129d88167 | |
Rich B | ec21df1555 | |
TimZ99 | ee16078884 | |
TimZ99 | 86bff4dbae | |
TimZ99 | 11b1850754 | |
TimZ99 | 951586d77d | |
TimZ99 | be928f8241 | |
TimZ99 | 02f8484b3b | |
Tim | 098a552774 | |
TimZ99 | 39be47d573 | |
TimZ99 | 7ca93c40a6 | |
TimZ99 | c6e53b9a6f | |
TimZ99 | 7efffff40e | |
TimZ99 | 019d4050ac | |
Petr Suchy | 3193665ef8 | |
Michael | 1d779760ce | |
TimZ99 | ed6ef89df5 | |
Tim | 19fb244592 | |
TimZ99 | 7ffc75598a | |
Tim | 11d2d4bba8 | |
TimZ99 | 51dbbf9510 | |
Ing. Petr Suchy | 5934e9a25c | |
Ing. Petr Suchy | 8fa1bf6c0d | |
Ing. Petr Suchy | e32977ffff | |
Tim | 45d1c03e5a | |
Petr Suchy | 442f9d115e | |
Nayef Alebrahim | 3568a5700b | |
Petr Suchy | 71c4114747 | |
TimZ99 | 676e80d42f | |
TimZ99 | 0550ff7dcf | |
TimZ99 | 6ba4b59239 | |
Tim | d7536d209e | |
Tim | 50b5a6937b | |
Tim | 620ab023f9 | |
TimZ99 | ae6367b2a0 | |
TimZ99 | a9f0f64c78 | |
TimZ99 | 95d30f9619 | |
Tim | ed4b3e2fc7 | |
Tim | 07243f4cb5 | |
TimZ99 | 97f8a6d637 | |
Jeremy GHYS | b7426291f8 | |
TimZ99 | 7fbab86064 | |
TimZ99 | 084dd59b84 | |
Tim | 8d5935fe86 | |
Tim | 480efb9e48 | |
Tim | cb806361ed | |
Tim | dd6d9973fe | |
TimZ99 | 0a5a8c02f5 | |
TimZ99 | 2c51ad12f7 | |
Oleksa | e415d0fa41 | |
Tim | 01423d58fd | |
Tim | 235f848d16 | |
TimZ99 | 0c91d27a70 | |
TimZ99 | 7f5e698752 | |
TimZ99 | d7ea421d5c | |
TimZ99 | 420211f61f | |
Oleksa | 32ab865ae0 | |
TimZ99 | 24ee6d02c4 | |
TimZ99 | a53fc2a53e | |
dependabot[bot] | df1185b10c | |
Tim | 1c9f017f61 | |
ICTman1076 | 93ceb42a10 | |
sumarsono | aad4e2913d | |
Travis Botello | 7e3cbc94a9 | |
TimZ99 | 627a93cc7c | |
sx404 | 0969f4043e | |
TimZ99 | d40df0c024 | |
TimZ99 | 030b2b3c2f | |
TimZ99 | e47e0fca80 | |
TimZ99 | 0198d76a75 | |
TimZ99 | cf2566d1d3 | |
TimZ99 | 25e8cece3c | |
TimZ99 | 43c60867b3 | |
TimZ99 | a0cdcffabc | |
TimZ99 | ee5076a2ac | |
TimZ99 | 065d7c00f4 | |
TimZ99 | 56587826a3 | |
TimZ99 | a8eaedc817 | |
TimZ99 | 86b75c3068 | |
TimZ99 | 7316355658 | |
TimZ99 | dc45eee0d3 | |
Rémy Lebrun | 6fd71e1d55 | |
Emmanuel RABOTTEAU | 884a563e6a | |
TimZ99 | f84061ee14 | |
TimZ99 | 0fd889ebee | |
TimZ99 | 5c1d6d1f93 | |
TimZ99 | b0df0e77bf | |
TimZ99 | 932c695f4d | |
TimZ99 | 6aca2e1077 | |
TimZ99 | 9f3e140b29 | |
TimZ99 | 29adce2608 | |
TimZ99 | 9b6bf5a783 | |
TimZ99 | fb31859a90 | |
TimZ99 | 8035608fe3 | |
TimZ99 | b399327c4b | |
TimZ99 | 4ebe934b2e | |
TimZ99 | 8342a979aa | |
TimZ99 | 5d668b7882 | |
Jonne Haß | d62df0b34e | |
TimZ99 | fa536c312c | |
TimZ99 | 1b0d86b361 | |
damian | b0ea45ae76 | |
Tim | 918f8cdf69 | |
Tim | 450d5e9dcc | |
TimZ99 | 3b616c89a5 | |
TimZ99 | a8d36b08bb | |
caos30 | 98959d3a77 | |
TimZ99 | 6c1763e811 | |
Arkhee | dd3bc35009 | |
TimZ99 | 34a2303f21 | |
Federico Vera | 9db07f2c09 | |
TimZ99 | accd55630a | |
spmfox | 9c55413f57 | |
Federico Vera | 394f4a8b44 | |
Emmanuel RABOTTEAU | fe9ff4b30d | |
TimZ99 | 66996f0c73 | |
TimZ99 | 5d81d560e6 | |
TimZ99 | 86c0a5864b | |
TimZ99 | be9e3f7c88 | |
Christian Lorenz fr32k | 8cc8a0dbb7 | |
Acrylic Style | 6728fd14f4 | |
Shammi Shailaj | 8f43fd99e6 | |
Michael | 6761776a8f | |
IT. Orlando Hernandez (Masterk3y) | e2d904688a | |
TimZ99 | 1cb2357460 | |
TimZ99 | 32c17f372b | |
TimZ99 | b3de673c6a | |
TimZ99 | 5b0fba63aa | |
TimZ99 | 5511cd5579 | |
TimZ99 | 2599fb97af | |
TimZ99 | fcd12d9924 | |
TimZ99 | c343f1f2d1 | |
TimZ99 | df573e5bdc | |
TimZ99 | 6ca361519c | |
TimZ99 | 3e1b912e96 | |
TimZ99 | cba09ed5f1 | |
TimZ99 | f87e4e48cc | |
TimZ99 | 64a9bc1ac7 | |
TimZ99 | f70dacb023 | |
TimZ99 | 59be9f2b6d | |
TimZ99 | 9915a112e5 | |
TimZ99 | 0025af2067 | |
TimZ99 | fea3289417 | |
TimZ99 | 9eac461700 | |
TimZ99 | 560dc8a9a5 | |
TimZ99 | 5e5281dcc4 | |
TimZ99 | 9cdafc9554 | |
TimZ99 | 326eddd97d | |
TimZ99 | cf2f6b0788 | |
TimZ99 | c44760c0f7 | |
TimZ99 | 6c14709d7c | |
TimZ99 | 5424976400 | |
TimZ99 | 2c6ef08b39 | |
Tim | 1249e98a0f | |
Petr K | 63a2a6bbd3 | |
Tim | 6a8982ccce | |
Tim | c645444db9 | |
Tim | b59afd9d33 | |
TimZ99 | 617ffb5739 | |
TimZ99 | 1d0f6a6986 | |
TimZ99 | ed61b3854f | |
Tim | cf6f30adfc | |
Tim | d33c891be2 | |
Tim | b26f85d975 | |
Tim | 72b262c706 | |
Tim | 7aa7ec363b | |
Tim | 132a730d71 | |
Tim | de29906f27 | |
Tim | 170cecf8fe | |
Tim | 6e528aaf15 | |
Tim | 878b256698 | |
Tim | fa97fb6653 | |
TimZ99 | 2c1ef315c7 | |
TimZ99 | b49659f49a | |
Tim | ef28908c5f | |
Jason Cheng | 86ecc09c3b | |
Jason Cheng | c401a255d6 | |
Daniel Billing | 0e64ff54d1 | |
Jason Cheng | b235bf7639 | |
TimZ99 | f6173d4439 | |
TimZ99 | 267002ba20 | |
TimZ99 | 140447e975 | |
Tom Hatzer | 1f2dde3963 | |
TimZ99 | 5e61d89b7f | |
TimZ99 | ce8182e32f | |
TimZ99 | 51ef755e43 | |
TimZ99 | 6534749fbd | |
TimZ99 | e4bade32f9 | |
TimZ99 | d2dda8ac70 | |
Alexell | d41c7b2c3f | |
TimZ99 | f21f3db19e | |
TimZ99 | 476c59eb47 | |
TimZ99 | 1c984b30ff | |
TimZ99 | eac8ebc261 | |
TimZ99 | e2c424e167 | |
TimZ99 | a05d36d5f6 | |
TimZ99 | 3023c83226 | |
TimZ99 | a96e1e5a2e | |
TimZ99 | b0ea7eb272 | |
TimZ99 | 92e8312ff1 | |
TimZ99 | fc84c06813 | |
TimZ99 | 93b324f178 | |
TimZ99 | dd56e2971f | |
Tim | b98a4af412 | |
TimZ99 | 62254a534b | |
Ward Pieters | 57f4c369e9 | |
Tim | c3751e7e57 | |
Danial | 47ad693339 | |
Danial | 2b73d207db | |
TimZ99 | 3c55a353be | |
Tim | 41263a39b0 | |
Danial | 82d01b07f7 | |
Marcel Riedlinger | c4e6a61361 | |
TimZ99 | a496874d9c | |
Tim | 8ca259d524 | |
Axel Wehner | d64f27f705 | |
Matthew Pattman | 0580e75642 | |
Tim | 3a005f2201 | |
Tim | 46311d569e | |
Timz99 | 79742fe6bd | |
Tim | fc4ffd6b2f | |
Matthias Wirtz | 1bd14995fb | |
Tim | 9d30b9854c | |
Tim | a80452d916 | |
TimZ99 | 526c2523cb | |
TimZ99 | 64b4d60ffc | |
TimZ99 | 67632ab966 | |
TimZ99 | 7059ac6607 | |
Tim | 4348b7c91a | |
AUBERT Mathieu | ad1ca57b44 | |
Matthias Wirtz | 08eb9a55f7 | |
avahldiek | 11a021e7d9 | |
eezec | 7302e669fd | |
Tim | 24717675da | |
Tim | c66848e21c | |
Tim | 6eda990ed0 | |
Tim | b0fee68f6e | |
Tim | a97539998d | |
Tim | e910367faa | |
Tim | d121ad75e3 | |
Andy Gaskell | 71e1203f57 | |
Tim | b9a3b203b4 | |
Tim | 79a654e383 | |
rht0910 | 723a2ab313 | |
Tim | a9f4a5716e | |
Tim | 57340aae80 | |
shuhai | 8bb5d1ffab | |
rabauss | 462e489762 | |
Guillaume Moigneu | ca57189e56 | |
Nls | 8d720496d4 | |
Nls | b835de1cf6 | |
Nls | 6be807cf9a | |
Rob Fuller | dddeb1bbb5 | |
Rob Fuller | e9589070b8 | |
Andy Gaskell | 27b3bce8a0 | |
decryptus | fc63a445fc | |
Timz99 | 95dbfdfe9a | |
Pepijn Over | 32e018b6bb | |
Andy Gaskell | cdccb960c5 | |
Samuel Denis-D'Ortun | abd4d35d80 | |
Patrick HUSS | 439a63fa4f | |
Samuel Denis-D'Ortun | 3ebd0a271b | |
shuhai | fff4da8f45 | |
shuhai | 2c5fe21cbb | |
shuhai | 9d12311ab2 | |
Samuel Denis-D'Ortun | 5e87972387 | |
Jonas Hansen | fed9cec88b | |
Samuel Denis-D'Ortun | fb1772dd66 | |
Guillaume | b7c24742bf | |
Samuel Denis-D'Ortun | f66c3453b1 | |
Samuel Denis-D'Ortun | ca30284726 | |
sandybeachit | fc2a18fa22 | |
Samuel Denis-D'Ortun | fd0e698253 | |
Samuel Denis-D'Ortun | c49e37be49 | |
Samuel Denis-D'Ortun | 5b4525102a | |
Samuel Denis-D'Ortun | e8857f809b | |
invartam | 5a7e0e0bc4 | |
Samuel Denis-D'Ortun | b3e920250e | |
criwe | b0add8c210 | |
criwe | 479f2119f6 | |
Samuel Denis-D'Ortun | 34c07f7d46 | |
Tom Hatzer | 6805903089 | |
Tom Hatzer | b1df28d4d9 | |
Tom Hatzer | b780a6237e | |
Tom Hatzer | cd977e2e51 | |
Tom Hatzer | b2043b1b65 | |
Tom Hatzer | a9f11fb691 | |
Tom Hatzer | a3853241f8 | |
Tom Hatzer | 4a69f606d3 | |
Tom Hatzer | 80a092fa0c | |
Tom Hatzer | ff1013ed7c | |
Samuel Denis-D'Ortun | e120e8c636 | |
Tom Hatzer | 6bee28c78e | |
Samuel Denis-D'Ortun | 3118fdbdbc | |
Tom Hatzer | 3c961c8b91 | |
Samuel Denis-D'Ortun | 5836e27659 | |
Tom Hatzer | 8ee269ceaa | |
Tom Hatzer | b6060e7936 | |
Tom Hatzer | 5c0e889dd2 | |
Tom Hatzer | 3cd90b29ae | |
Tom Hatzer | 363f67b335 | |
Tom Hatzer | 4c7d2bd4f3 | |
Tom Hatzer | 2325a6c25f | |
Tom Hatzer | 92069a29a3 | |
Samuel Denis-D'Ortun | eadc9b145e | |
Benjy | f19dc454ee | |
Samuel Denis-D'Ortun | 74efd243c5 | |
Daif Alotaibi | d712bb7100 | |
Samuel Denis-D'Ortun | c981fe5daf | |
Samuel Denis-D'Ortun | fd64fe1ef2 | |
Samuel Denis-D'Ortun | 8ae313ebda | |
Samuel Denis-D'Ortun | a6d012f66a | |
Michael van Schaik | 43645bf36f | |
尘缘 | fe99c1cbec | |
Samuel Denis-D'Ortun | c4551ab59e | |
Samuel Denis-D'Ortun | 3f255f7461 | |
尘缘 | 80df5b7735 | |
尘缘 | 0be9f3a09c | |
尘缘 | a586425c65 | |
Samuel Denis-D'Ortun | d91c544128 | |
Samuel Denis-D'Ortun | 9a271e06a1 | |
Egogo Websolutions | 5e0b2ac00b | |
尘缘 | 1ac303af8c | |
尘缘 | 0b68d4fb89 | |
尘缘 | fac784641a | |
Samuel Denis-D'Ortun | 42c6c1c15c | |
Peter Misura | 66ddbdcf1b | |
Peter Misura | ea22e36007 | |
pieter-groeneweg | 0be8e40c50 | |
Samuel Denis-D'Ortun | 68c087025d | |
Valentin Deville | 1d39f18e0d | |
Quentin Varquet | 56ac7e969f | |
Alfredo Esteban | 7b3f792f76 | |
Samuel Denis-D'Ortun | 91336605db | |
Christian Leicht Jørgensen | ff0f6f4cda | |
Samuel Denis-D'Ortun | 58cb3a6adf | |
Christian Leicht Jørgensen | a07fb41728 | |
Samuel Denis-D'Ortun | cf41316998 | |
Samuel Denis-D'Ortun | 77fac34c54 | |
Alfredo Esteban | ad50e135e1 | |
Alfredo Esteban | 003d4ca47a | |
Samuel Denis-D'Ortun | 4e86794aff | |
Victor Macko | f229d18f2f | |
Samuel Denis-D'Ortun | 3dda7d6ad8 | |
Victor Macko | 62acb604c6 | |
Victor Macko | 3a1e8522a3 | |
Victor Macko | dc132831d4 | |
Victor Macko | 8e2698f4ce | |
Samuel Denis-D'Ortun | e6bc31681d | |
Valentin Deville | d9557b4115 | |
Samuel Denis-D'Ortun | ff37adcc60 | |
Pavel Dvořák | dc5b7a0cfc | |
Samuel Denis-D'Ortun | f7f8f0d000 | |
shaundma | f4037d2aaa | |
Samuel Denis-D'Ortun | 54dd7124ab | |
Samuel Denis-D'Ortun | a615303db1 | |
Samuel Denis-D'Ortun | 945226eb16 | |
Samuel Denis-D'Ortun | 67c2b273f6 | |
Samuel Denis-D'Ortun | 90a961613f | |
Tim | 02e24c53ef | |
Tim | 5a85eeff36 | |
Samuel Denis-D'Ortun | 10d2f3aeed | |
lploi91 | aee4eb0306 | |
Samuel Denis-D'Ortun | 1d02955a39 | |
Samuel Denis-D'Ortun | a654a8d44e | |
Samuel Denis-D'Ortun | dcd552517b | |
Samuel Denis-D'Ortun | 953a7ddf57 | |
Samuel Denis-D'Ortun | c811876c89 | |
Samuel Denis-D'Ortun | 0780fdef3a | |
Samuel Denis-D'Ortun | eb235e60ca | |
Pavel Dvořák | 24d7fee63e | |
Samuel Denis-D'Ortun | 4d480fe2c3 | |
Samuel Denis-D'Ortun | 678537cee5 | |
Samuel Denis-D'Ortun | 9ded89b6a5 | |
Samuel Denis-D'Ortun | 736b713a70 | |
Pavel Dvořák | 36b5229fcd | |
Samuel Denis-D'Ortun | fffdc7f022 | |
Pavel Dvořák | 340660da4b | |
Samuel Denis-D'Ortun | 8cbc93fc9e | |
Samuel Denis-D'Ortun | 3af2b23518 | |
Samuel Denis-D'Ortun | bbb9284689 | |
Samuel Denis-D'Ortun | fb131b843a | |
Samuel Denis-D'Ortun | aac195e893 | |
Pavel Dvořák | 5fc59454d0 | |
Pavel Dvořák | 2d460abbf8 | |
Samuel Denis-D'Ortun | cbfd60871e | |
Samuel Denis-D'Ortun | 9aadc6b8a8 | |
Samuel Denis-D'Ortun | bceb6ea3db | |
Samuel Denis-D'Ortun | 2b8fae9416 | |
Samuel Denis-D'Ortun | 6af6e4b459 | |
Samuel Denis-D'Ortun | 421a67abaa | |
Pavel Dvořák | f01c39695d | |
Pavel Dvořák | 22112777d1 | |
Pavel Dvořák | d7140c9b2a | |
Pavel Dvořák | e5db728634 | |
Samuel Denis-D'Ortun | 4e954e594d | |
Samuel Denis-D'Ortun | 73f77218fd | |
Samuel Denis-D'Ortun | 4f4676476d | |
Samuel Denis-D'Ortun | 36b19de7a5 | |
Jerome | 14b9e63e27 | |
Samuel Denis-D'Ortun | 9111e502c0 | |
Samuel Denis-D'Ortun | 72132efac6 | |
Samuel Denis-D'Ortun | 62ba2d7ae8 | |
Victor Macko | 7cf13e5b8a | |
Victor Macko | b77ffc95c3 | |
Alexis U (portable) | 87a576642c | |
Alexis U (portable) | 57a01d27c5 | |
Xendorf | 9bda115e47 | |
Preben Rather Sørensen | 1c763e82ef | |
Pepijn Over | a30dcf5610 | |
Pep | 62ee04707f | |
Pepijn Over | f46fae667b | |
Pepijn Over | 3093b421ea | |
Pepijn Over | 52803e2d70 | |
Pepijn Over | daf843df07 | |
Pepijn Over | 4be64dfa3a | |
Pepijn Over | b2d77ca27e | |
Pep | 653fe4f7b8 | |
Pepijn Over | 98faef1b06 | |
Pepijn Over | b2ed873b1b | |
Pepijn Over | 5947f7382f | |
Pepijn Over | 9c4191949b | |
Pepijn Over | 2ed52f8a8d | |
Pep | 6300e8103f | |
Pep | b1647d2c3f | |
Pep | c0b4264959 | |
Pep | 051788ffda | |
Southparkfan | 1cecc80845 | |
José Rigoni Jr | 7035410c1e | |
Pep | 57b9830c67 | |
Edi Septriyanto | a482ae5e27 | |
Pep | 27769143a9 | |
Sami Nieminen | dbb24dd38e | |
Sami Nieminen | 2fcb65036b | |
Sami Nieminen | c0bed02151 | |
Sami Nieminen | 03617ff58d | |
Sami Nieminen | 4bce8e24dd | |
Sami Nieminen | 53ee67773e | |
Sami Nieminen | bcfeaba773 | |
Sami Nieminen | 315e963cdb | |
Laurent | a02ea03399 | |
Javad Evazzadeh Kakroudi | 1c9823f165 | |
Javad Evazzadeh Kakroudi | c176cbc49f | |
Mauro Vietri | 0d3934108c | |
Luis Rodriguez | 6a2a4c1898 | |
ItsRichardRaz | 7cd962abf8 | |
Pepijn Over | ffd9cfc6c8 | |
Pepijn Over | 8505a34292 | |
Pepijn Over | 1123603f64 | |
Pepijn Over | dc54bf14ea | |
Pepijn Over | f63a39d92c | |
Pepijn Over | 38a50cf7bb | |
Pepijn Over | 9370397555 | |
Pepijn Over | 6172b35a81 | |
Pepijn Over | 51ff0f2044 | |
Pepijn Over | 390a8e6156 | |
Pepijn Over | d4843a2990 | |
Pepijn Over | 6548a16972 | |
Pepijn Over | dc7036c39a | |
Pepijn Over | e3dc55220c | |
Pep | b9a6bb4f41 | |
mustapha elbakai | 845665ca4e | |
Gildas NOEL | f0b8abe390 | |
Sudarshan Anbazhagan | 62c9822ee9 | |
Sudarshan Anbazhagan | 37aa55a472 | |
Michiel van der Wulp | 97d4118c94 | |
Michiel van der Wulp | 365131df40 | |
Michiel van der Wulp | 419ba4a0cf | |
Pepijn Over | 93ddf5139b | |
Pepijn Over | a726c99b7b | |
Pepijn Over | d5059074a3 | |
Pep | 69a2e4e668 | |
Pep | 7bf53b1368 | |
andlil | 8839c4d27b | |
andlil | fd357c814e | |
andlil | 4728ca9b5f | |
Pepijn Over | c629063af0 | |
Pepijn Over | ad81851375 | |
Pepijn Over | 4b2c83588a | |
Pepijn Over | 391701721b | |
Pepijn Over | 54f5dbf8f3 | |
Pepijn Over | 11adfd9ead | |
Pep | fe4e2d0778 | |
jerome | f903eb037d | |
Pepijn Over | a2753c6348 | |
Pepijn Over | a646928a70 | |
Pep | 863ad3e30a | |
Klemm89 | 18f987a5d5 | |
Pep | 7b6500982c | |
Pep | 706886f8b8 | |
Pep | 26baa6d96f | |
Pep | 880b322d98 | |
Pep | ed86b34c26 | |
Haydar Kulekci | 51ec51b9d5 | |
Luis Rodriguez | 490387820c | |
Luis Rodriguez | c19aa70781 | |
Luis Rodriguez | c10c4601c0 | |
Roman Beylin | be7279dd05 | |
Luiz Alberto | 40b9d3386d | |
Davy Rolink | 3cc48dff2d | |
Davy Rolink | 58b104c1fb | |
Davy Rolink | aaa073d9fd | |
Davy Rolink | 6aabe1eca7 | |
Arkadiusz Klenczar | 7a0f148c33 | |
Pepijn Over | e13ca5e1b6 | |
Pep | 9a88b830b6 | |
Pep | cb5f2b5952 | |
Pep | fe57fca39a | |
jerome | 5eb0e69c32 | |
Jean Pierre Kolb | ca9f52939c | |
Davy Rolink | 7585eb23e0 | |
Pepijn Over | ec9c07a3d7 | |
Pepijn Over | c54a48d668 | |
Pep | 1204c9a4b0 | |
Pep | d5273db51d | |
berkas1 | 8834dd6cfe | |
Plamen Vasilev | ef49e67366 | |
Pepijn Over | 16906708ad | |
Victor Macko | 5ddbfdd167 | |
Victor Macko | c91d3e75cf | |
Victor Macko | cbcb394e4b | |
Victor Macko | ae4cf0e288 |
|
@ -1,2 +1,14 @@
|
|||
# Autodetect text files
|
||||
* text=auto
|
||||
|
||||
# Force the following filetypes to have unix eols, so Windows does not break them
|
||||
*.txt text eol=lf
|
||||
*.php text eol=lf
|
||||
*.css text eol=lf
|
||||
*.js text eol=lf
|
||||
*.phar binary
|
||||
|
||||
.gitignore export-ignore
|
||||
.gitattributes export-ignore
|
||||
.gitattributes export-ignore
|
||||
Vagrantfile export-ignore
|
||||
puphpet export-ignore
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
# These are supported funding model platforms
|
||||
|
||||
github: TimZ99
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
custom: ["https://www.paypal.me/TimZandbergen99", "https://bunq.me/timz99"]
|
|
@ -0,0 +1,31 @@
|
|||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: "[BUG] "
|
||||
labels: 'Type: bug'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Version (please complete the following information):**
|
||||
- Version [e.g. 3.3.5]
|
||||
- PHP [e.g. 7.3]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: "[Feature Request]"
|
||||
labels: 'Type: Feature'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
name: Question
|
||||
about: Ask your questions
|
||||
title: "[Question] "
|
||||
labels: 'Type: Question'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
- [ ] Looked at the documentation first
|
||||
|
||||
**Describe the question**
|
||||
|
||||
**Version (please complete the following information):**
|
||||
- Version [e.g. 3.3.5]
|
||||
- PHP [e.g. 7.3]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
|
@ -0,0 +1,6 @@
|
|||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "composer"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
|
@ -4,3 +4,12 @@
|
|||
/build
|
||||
/docs/_build
|
||||
/vendor/
|
||||
.project
|
||||
/.vagrant/
|
||||
/puphpet/files/dot/ssh/
|
||||
*.bak
|
||||
__MACOSX/
|
||||
.DS_Store
|
||||
.buildpath
|
||||
.settings/
|
||||
/.vscode
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
Options -Indexes
|
||||
|
||||
<IfModule mod_expires.c>
|
||||
<FilesMatch "\.(js|jpg|jpeg|gif|png|css)$">
|
||||
ExpiresActive on
|
||||
ExpiresDefault "access plus 1 month"
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_deflate.c>
|
||||
AddOutputFilterByType DEFLATE text/plain
|
||||
AddOutputFilterByType DEFLATE text/html
|
||||
AddOutputFilterByType DEFLATE text/xml
|
||||
AddOutputFilterByType DEFLATE text/css
|
||||
AddOutputFilterByType DEFLATE application/xml
|
||||
AddOutputFilterByType DEFLATE application/xhtml+xml
|
||||
AddOutputFilterByType DEFLATE application/rss+xml
|
||||
AddOutputFilterByType DEFLATE application/javascript
|
||||
AddOutputFilterByType DEFLATE application/x-javascript
|
||||
</IfModule>
|
227
CHANGELOG.rst
227
CHANGELOG.rst
|
@ -1,6 +1,233 @@
|
|||
Changelog
|
||||
=========
|
||||
|
||||
|
||||
Not yet released
|
||||
----------------
|
||||
\-
|
||||
|
||||
v3.5.2 (released August 12, 2020)
|
||||
-----------------------------
|
||||
|
||||
* Fixed missing version numbers.
|
||||
* See https://github.com/phpservermon/phpservermon/compare/v3.5.1...v3.5.2
|
||||
|
||||
v3.5.1 (released August 12, 2020)
|
||||
-----------------------------
|
||||
|
||||
* Security update regaring jQuery, see #972.
|
||||
* See https://github.com/phpservermon/phpservermon/compare/v3.5.0...v3.5.1
|
||||
|
||||
v3.5.0 (released May 1, 2020)
|
||||
-----------------------------
|
||||
|
||||
* See https://github.com/phpservermon/phpservermon/compare/v3.4.5...v3.5.0
|
||||
|
||||
v3.4.5 (released September 30, 2019)
|
||||
------------------------------------
|
||||
|
||||
* a8eaedc8: Fixed undefined index last_output.
|
||||
|
||||
v3.4.4 (released September 26, 2019)
|
||||
------------------------------------
|
||||
|
||||
* 932c695f: Fixed selected view in graph.
|
||||
* 6aca2e10: Fixed auto refresh with wrong layout.
|
||||
* 9f3e140b: Changed static file path to new path.
|
||||
* 29adce26: Removed old static directory.
|
||||
|
||||
v3.4.3 (released September 26, 2019)
|
||||
------------------------------------
|
||||
|
||||
* b399327c: Fixed week/month/year graph.
|
||||
* 4ebe934b: Added timeout to services.
|
||||
* 8342a979: Changed auto-refresh_help to uniform name.
|
||||
* 5d668b78: Fixed auto-refresh.
|
||||
* #777: Fix pushover_status checkbox population from config.
|
||||
|
||||
v3.4.2 (released September 24, 2019)
|
||||
------------------------------------
|
||||
|
||||
* 1b0d86b: Fixed wrong upgrade query and added forgotten version_compare.
|
||||
|
||||
v3.4.1 (released September 17, 2019)
|
||||
------------------------------------
|
||||
|
||||
* #733: Added catalan ca_ES.lang.php.
|
||||
* 6c1763e: Updated table style.
|
||||
* #770: Changed last_output column to TEXT and restricted to 5000 characters.
|
||||
|
||||
v3.4.0 (released September 17, 2019)
|
||||
------------------------------------
|
||||
|
||||
* #741: Truncate server output.
|
||||
* accd556: Fixed typo in es_ES.lang.php.
|
||||
* #747: Added XML to requirements.
|
||||
* #740: Update es_ES.lang.php.
|
||||
* #752: Update fr_FR.lang.php.
|
||||
* 86c0a58: Added server_id as id (fixes #738).
|
||||
* be9e3f7: Composer update.
|
||||
* 8cc8a0d: Updated wget to curl.
|
||||
* #662: Updated Japanese Translations.
|
||||
* #697: Adding verbosity for cURL.
|
||||
* #695: Allow HTTP/2 status responses.
|
||||
* #703: Update es_ES.lang.php.
|
||||
* 5b0fba6: Add button when there are no servers.
|
||||
* 5511cd5: Added faq for #719.
|
||||
* fcd12d9: Updated bootstrap to 4.3.1.
|
||||
* 6ca3615: Added missing field to email config.
|
||||
* 3e1b912: Updated Bootstrap-select to v1.13.10.
|
||||
* cba09ed: Manifest, Sw.js - Fixed path to files.
|
||||
* f70dacb: Added sw.js and manifest.
|
||||
* 59be9f2: Added beter support for use without Javascript.
|
||||
* 9915a11: Improved accessibility.
|
||||
* 0025af2: Updated Bootstrap-select to v1.13.9.
|
||||
* fea3289: Added missing offline duration.
|
||||
* 560dc8a: Makefile - Adding an input to choose macOS as the current OS.
|
||||
* 5e5281d: Fixing #665.
|
||||
* 9cdafc9: Updated useragent to Github URL.
|
||||
* cf2f6b0: Changed database column to TEXT.
|
||||
* 6c14709: Updated default template (fixing #685).
|
||||
* 5424976: Fixed PHPMailer 6.0.5 Vulnerability (resolving #680).
|
||||
* 2c6ef08: Added noopener and updated download link to Github releases.
|
||||
* #656: Downgraded symfony/filesystem to ~3.4 (PHP 5.5.9 compatible) and added 7.0.8 as minimal PHP7 version.
|
||||
* #620: Added updater.sh shell script.
|
||||
* #653: Fixes wrong default type in upgrade/install query.
|
||||
* #642: Added post field as addition to #631.
|
||||
* #644: Fixed urlencoding in Nexmo message
|
||||
* #639: Added combined notifications.
|
||||
* #626: Added redirect check.
|
||||
* #627: Latest server output, error and output during a failure will be saved and are shown on the server page.
|
||||
* #631: Added option to specify the request method.
|
||||
* #628: Added the option to mark specific HTTP status codes as online.
|
||||
* #640: Removed () after last offline value when the last offline duration is unknown.
|
||||
* #637: Added php extensions to composer required list, spelling fixes in changelog and composer update.
|
||||
* #635: Changed server order on ?&mod=user&action=edit&id=x.
|
||||
* #634: Changed ' to " in sql query, both were used.
|
||||
* #629: Fix bug that made it impossible to check rdp:// and fixed port update.
|
||||
* b49659f: Added question to notification faq about not receiving notifications.
|
||||
* ef28908: Indentation fix.
|
||||
* #605: Added Norwegian language.
|
||||
* f6173d4: Added license to composer.json file.
|
||||
|
||||
v3.3.1 (released August 10, 2018)
|
||||
---------------------------------
|
||||
|
||||
* #403: Removed default mysql port settings from files and left empty values.
|
||||
* 5e61d89: Defined $encrypted_password.
|
||||
* ce8182e: Updated composer.lock.
|
||||
* 51ef755: Removed last_offline_duration = "" bug.
|
||||
* 6534749: Added last offline duration to all translations.
|
||||
* e4bade3: Updated PHPMailer namespace.
|
||||
* d2dda8a: Removed duplicate from Russian translation.
|
||||
* #613: Updated Russian translation.
|
||||
* f21f3db: Typo fix, removed unused code & updated documentation.
|
||||
* 476c59e: Update required PHP version to 5.5.9.
|
||||
* 1c984b3: Update documentation, added some small changes.
|
||||
* eac8ebc: Fixed sms error check.
|
||||
* e2c424e: Spacing, indentation and braces.
|
||||
* a05d36d: Fixed typos & removed unused code.
|
||||
* 3023c83: Changed die() to trigger_error().
|
||||
* a96e1e5: Removed eval(), redone get & load language functions.
|
||||
* b0ea7eb: Added forgotten translation.
|
||||
* 92e8312: Removed unused code.
|
||||
* fc84c06: Added cronjob over web to documentation. Changed HTMl error to 403.
|
||||
* 93b324f: Security update symfony/http-foundation.
|
||||
* dd56e29: Update composer.phar to new version.
|
||||
* b98a4af: Typo fix.
|
||||
|
||||
v3.3.0 (released May 30, 2018)
|
||||
------------------------------
|
||||
|
||||
* 57f4c36: Added support for the following SMS gateways: Plivo, SolutionsInfini, Callr and GatewayAPI.
|
||||
* c3751e7: Moved Clickatell api key to password field.
|
||||
* #590: Rollback Twig version update to work with PHP5.
|
||||
* #589: Enlarge select pattern_online width.
|
||||
* 3c55a35: Allow ping by hostname.
|
||||
* #579: Added support for "site online when pattern not found".
|
||||
* #587: Added __MACOSX/ to .gitignore.
|
||||
* a496874, 62254a5 and 57f4c36: Rewritten global and gateway specific SMS gateway functions.
|
||||
* 8ca259d: Updated list of available SMS gateways.
|
||||
* d64f27f: Add CM Telecom bulk SMS gateway.
|
||||
* 0580e75: Added last offline and the duration of the last outage.
|
||||
* 3a005f2: Fixing #580 removed results block.
|
||||
* 79742fe: Fixed ping error: Failed to parse address "8.8.8.8".
|
||||
* fc4ffd6: Added Twilio and Telegram to notification list and changed URL to download the latest release.
|
||||
* #571: Update several dependencies.
|
||||
* #569: Added support for Twilio SMS gateway.
|
||||
* a80452d: Added Telegram and Pushover to inline documentation.
|
||||
* 526c252: Added noopener to external link.
|
||||
* 64b4d60: Added activation process for Telegram notifications.
|
||||
* 67632ab: Added Telegram notifications to the documentation.
|
||||
* 7059ac6: Defined latency for new added servers.
|
||||
* 11a021e: Fixed indentation fail #515.
|
||||
* #550: Fix urlencode bug when sending SMS using FreeMobileSMS.
|
||||
* #541: Fix method declaration error in PHP7.2.
|
||||
* #515: Run archive and cleanup per server to reduce memory use.
|
||||
* #516: Fixed #500 ping latency.
|
||||
* 2471767: Fixed pre installed server query.
|
||||
|
||||
v3.2.2 (released March 27, 2018)
|
||||
--------------------------------
|
||||
|
||||
* #554: Implemented Telegram notifications.
|
||||
* #505: Added button to clear the logs.
|
||||
* #436: Nexmo.class.php updates to Nexmo.php.
|
||||
* #350: Removed utf8_decode.
|
||||
* Updated credits.
|
||||
* #535: Updated Japanese translation.
|
||||
* #502: Fixed database population bug during installation.
|
||||
* #512: Added username validation during installation and added the dot (.) to allowed characters.
|
||||
* #475: Added Japanese translation.
|
||||
|
||||
v3.2.1 (released March 27, 2018)
|
||||
--------------------------------
|
||||
|
||||
* #343: Added optional header value check.
|
||||
* #433: Changed baseurl repoforgeextras.
|
||||
* #432: Changed baseurl repoforge.
|
||||
* #437: Octopush.class.php updates to Octopush.php.
|
||||
* #435: Added Nexmo SMS to list in config.tpl.html.
|
||||
* #464: Updated attributes pushover_key and pushover_device in update.tpl.html.
|
||||
* #454: Updated HistoryGraph.php timestamp to number_format.
|
||||
|
||||
v3.2.0 (released April 15, 2017)
|
||||
--------------------------------
|
||||
|
||||
* #170: Implement Nexmo SMS.
|
||||
* #161: Added Swedish translation.
|
||||
* #185: Added Estonian translation.
|
||||
* #210: Added Finnish translation.
|
||||
* #201: Added Persian translation.
|
||||
* #195: Updated Spanish translation.
|
||||
* #169: Increased server ip char limit to 500.
|
||||
* #164: Added support for FreeVoipDeal SMS gateway <http://www.freevoipdeal.com>.
|
||||
* #181: Added blank index files to prevent directory listing.
|
||||
* #237: Adding CSRF protection.
|
||||
* #287: Default language - English.
|
||||
* #286: Add popular ports drop down.
|
||||
* #269: Added Slovenian language.
|
||||
* #96: Authentication for website checks.
|
||||
|
||||
|
||||
v3.1.1 (released November 6, 2014)
|
||||
----------------------------------
|
||||
|
||||
* #130: Added Czech translation.
|
||||
* #138: Added Polish translation.
|
||||
* #148: Added Turkish translation.
|
||||
* #124: Updated Bulgarian translation.
|
||||
* #132: Updated German translation.
|
||||
* #134: Updated French translation.
|
||||
* #144: Updated Brazilian translation.
|
||||
* #146: Updated Russian translation.
|
||||
* #147: Updated Spanish translation.
|
||||
* #128: Added SSL/TLS option for SMTP config.
|
||||
* #131: Allow URL and timeout to be passed as argument to the cronjob.
|
||||
* #135: Uptime percentage above 100%.
|
||||
* #151: Links in install results were stripped automatically from template.
|
||||
|
||||
|
||||
v3.1.0 (released August 7, 2014)
|
||||
--------------------------------
|
||||
|
||||
|
|
|
@ -2,10 +2,11 @@ tag = $(shell git describe)
|
|||
VERSION = ${subst v,,$(tag)}
|
||||
RELEASE_DIR = ./build
|
||||
RELEASE_FILE = phpservermon-$(VERSION)
|
||||
os = l
|
||||
|
||||
help:
|
||||
@echo ' PHP Server Monitor - $(tag)'
|
||||
@echo ' - make export [tag=...] - create a new release from tag '
|
||||
@echo ' - make export [os=...] [tag=...] - create a new release from tag. OS: Use m for macOS.'
|
||||
@echo ' - make install - install all dependencies '
|
||||
|
||||
install:
|
||||
|
@ -18,8 +19,15 @@ export:
|
|||
mkdir -p $(RELEASE_DIR) $(RELEASE_DIR)/$(RELEASE_FILE)
|
||||
rm -rf $(RELEASE_DIR)/$(RELEASE_FILE)/*
|
||||
git archive $(tag) | tar -xf - -C $(RELEASE_DIR)/$(RELEASE_FILE)/
|
||||
#find $(RELEASE_DIR)/$(RELEASE_FILE) -name "*.php" -exec sed -i "" "s/@package_version@/$(tag)/" {} \; # for osx
|
||||
ifeq (${os}, m)
|
||||
find $(RELEASE_DIR)/$(RELEASE_FILE) -name "*.php" -exec sed -i "" "s/@package_version@/$(tag)/" {} \; # for osx
|
||||
else
|
||||
ifeq (${os}, l)
|
||||
find $(RELEASE_DIR)/$(RELEASE_FILE) -name "*.php" -exec sed -i "s/@package_version@/$(tag)/" {} \; # for linux
|
||||
else
|
||||
$(error OS invalid, use m for macOS and l for Linux)
|
||||
endif
|
||||
endif
|
||||
@echo 'Testing on syntax errors (thats all the automated testing your are going to get for now..) '
|
||||
find $(RELEASE_DIR)/$(RELEASE_FILE) -name "*.php" | xargs -I file php -l file
|
||||
@echo 'Downloading dependencies'
|
||||
|
|
|
@ -1,7 +1,13 @@
|
|||
PHP Server Monitor
|
||||
==================
|
||||
|
||||
Version 3.1.0
|
||||
.. image:: https://badges.gitter.im/Join%20Chat.svg
|
||||
:alt: Join the chat at https://gitter.im/erickrf/nlpnet
|
||||
:target: https://gitter.im/phpservermon/phpservermon
|
||||
.. image:: https://cdn.huntr.dev/huntr_security_badge_mono.svg
|
||||
:alt: huntr
|
||||
:target: https://huntr.dev
|
||||
Version 3.6.0.beta2
|
||||
|
||||
PHP Server Monitor is a script that checks whether your websites and servers are up and running.
|
||||
It comes with a web based user interface where you can manage your services and websites,
|
||||
|
@ -12,7 +18,7 @@ Features:
|
|||
---------
|
||||
|
||||
* Monitor services and websites (see below).
|
||||
* Email, SMS and Pushover notifications.
|
||||
* Email, SMS, Discord, Pushover, Telegram and Jabber notifications.
|
||||
* View history graphs of uptime and latency.
|
||||
* User authentication with 2 levels (administrator and regular user).
|
||||
* Logs of connection errors, outgoing emails and text messages.
|
||||
|
@ -29,23 +35,39 @@ There are two different ways to monitor a server:
|
|||
* Website
|
||||
|
||||
You can enter a link to a website, it will then use cURL to open the website and check the HTTP status code.
|
||||
If the HTTP status code is in the 4xx range, it means an error occurred and the website is not accessible to the public.
|
||||
If the HTTP status code is in the 4xx/5xx, it means an error occurred and the website is not accessible to the public.
|
||||
You can also set a regular expression to match for content on the page itself.
|
||||
If the regular expression returns no matches, the website is considered down.
|
||||
In both cases the script will return a "status offline", and will start sending out notifications.
|
||||
|
||||
Each server has its own settings regarding notification.
|
||||
You can choose for email, text message (SMS) and Pushover.net notifications.
|
||||
You can choose for email, text message (SMS), Pushover.net, Telegram and Jabber notifications.
|
||||
The following SMS gateways are currently available:
|
||||
|
||||
* Clickatell - <https://www.clickatell.com>
|
||||
* Inetworx - <http://www.inetworx.ch>
|
||||
* Mollie - <http://www.mollie.nl>
|
||||
* Mosms - <http://www.mosms.com>
|
||||
* Smsglobal - <http://smsglobal.com/>
|
||||
* SMSit - <http://www.smsit.dk/>
|
||||
* Spryng - <http://www.spryng.nl>
|
||||
* Textmarketer - <http://www.textmarketer.co.uk>
|
||||
* Inetworx - <https://www.inetworx.ch>
|
||||
* Messagebird - <https://www.messagebird.com>
|
||||
* Mosms - <https://www.mosms.com>
|
||||
* Smsglobal - <https://smsglobal.com>
|
||||
* SMSit - <https://www.smsit.dk>
|
||||
* Spryng - <https://www.spryng.nl>
|
||||
* Textmarketer - <https://www.textmarketer.co.uk>
|
||||
* FreeVoipDeal - <https://www.freevoipdeal.com>
|
||||
* Nexmo - <https://www.nexmo.com>
|
||||
* OctoPush - <https://www.octopush.com>
|
||||
* FreeMobile (FR) - <https://mobile.free.fr>
|
||||
* Twilio - <https://twilio.com>
|
||||
* CM Telecom - <https://www.cm.com>
|
||||
* GatewayAPI - <https://gatewayapi.com>
|
||||
* SolutionsInfini - <https://solutionsinfini.com>
|
||||
* Plivo - <https://www.plivo.com>
|
||||
* Callr - <https://www.callr.com>
|
||||
* SMSAPI - <https://www.smsapi.com/en>
|
||||
* OVH SMS PRO - <https://www.ovhtelecom.fr/sms>
|
||||
* PromoSMS - <https://promosms.com>
|
||||
* Infobip - <https://www.infobip.com>
|
||||
* LabsMobile - <https://www.labsmobile.com>
|
||||
* Tele2 Messaging - <https://portal.tele2messaging.com>
|
||||
|
||||
Please note: for these gateways you will need an account with sufficient credits.
|
||||
|
||||
|
@ -53,7 +75,7 @@ Please note: for these gateways you will need an account with sufficient credits
|
|||
Download
|
||||
--------
|
||||
|
||||
The latest version can be downloaded from http://www.phpservermonitor.org/.
|
||||
The latest version can be downloaded from https://github.com/phpservermon/phpservermon/releases.
|
||||
|
||||
|
||||
Requirements
|
||||
|
@ -61,10 +83,21 @@ Requirements
|
|||
|
||||
* Web server
|
||||
* MySQL database
|
||||
* PHP 5.3.7+
|
||||
* PHP cURL package
|
||||
* PHP PDO mysql driver
|
||||
* For PHP5: 5.5.9+
|
||||
* For PHP7: 7.0.8+
|
||||
* PHP Extensions (modules)
|
||||
|
||||
* ext-curl
|
||||
* ext-ctype
|
||||
* ext-filter
|
||||
* ext-hash
|
||||
* ext-json
|
||||
* ext-libxml
|
||||
* ext-openssl
|
||||
* ext-pdo
|
||||
* ext-pcre
|
||||
* ext-sockets
|
||||
* ext-xml
|
||||
|
||||
Install
|
||||
-------
|
||||
|
@ -77,12 +110,17 @@ To be able to run an installation from the repo, you need to run the following c
|
|||
|
||||
php composer.phar install
|
||||
|
||||
If you are familiar with Vagrant (https://www.vagrantup.com)::
|
||||
|
||||
vagrant up
|
||||
|
||||
.. and browse to http://localhost:8080/psm/.
|
||||
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
The documentation is available in the docs folder or http://docs.phpservermonitor.org.
|
||||
The documentation is available in the docs folder or https://docs.phpservermonitor.org.
|
||||
|
||||
|
||||
License
|
||||
|
@ -99,4 +137,9 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with PHP Server Monitor. If not, see http://www.gnu.org/licenses/.
|
||||
along with PHP Server Monitor. If not, see https://www.gnu.org/licenses/.
|
||||
|
||||
Docker
|
||||
-------
|
||||
|
||||
PHPServerMonitor is now available on Docker : https://github.com/phpservermon/docker-phpservermonitor
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Only yhe latest version of PHPServerMon is being supported. Older versions won't recieve security updates.
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
|
||||
The PHPServerMon team and community take security bugs in PHPServerMon seriously. We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions.
|
||||
|
||||
To report a security issue, email Tim@xervion.nl and include the word "SECURITY" in the subject line.
|
||||
|
||||
The PHPServerMon team will send a response indicating the next steps in handling your report. After the initial reply to your report, the team will keep you informed of the progress towards a fix and full announcement, and may ask for additional information or guidance.
|
||||
|
||||
Report security bugs in third-party modules to the person or team maintaining the module.
|
|
@ -0,0 +1,21 @@
|
|||
# -*- mode: ruby -*-
|
||||
# vi: set ft=ruby :
|
||||
|
||||
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox'
|
||||
Vagrant.configure("2") do |config|
|
||||
##### VM definition #####
|
||||
config.vm.define "phpservermon-dev" do |config|
|
||||
config.vm.hostname = "phpservermon-dev"
|
||||
config.vm.box = "bento/ubuntu-20.04"
|
||||
config.vm.box_check_update = false
|
||||
config.vm.network "private_network", ip: "192.168.56.100"
|
||||
config.vm.provision :ansible do |ansible|
|
||||
ansible.limit = "all"
|
||||
ansible.playbook = "provision.yaml"
|
||||
end
|
||||
config.vm.provider "virtualbox" do |vb|
|
||||
vb.memory = "2048"
|
||||
vb.cpus = "2"
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,18 +1,33 @@
|
|||
{
|
||||
"name": "phpservermon/phpservermon",
|
||||
"description": "PHP Server Monitor",
|
||||
"homepage": "http://www.phpservermonitor.org",
|
||||
"repositories": [
|
||||
{
|
||||
"type": "vcs",
|
||||
"url": "https://github.com/phpservermon/php-pushover"
|
||||
}
|
||||
],
|
||||
"license": "GPL-3.0-or-later",
|
||||
"homepage": "https://www.phpservermonitor.org",
|
||||
"require": {
|
||||
"php": ">=5.3.7",
|
||||
"phpmailer/phpmailer": "5.2.6",
|
||||
"symfony/http-foundation": "2.4.*",
|
||||
"php": "^5.5.9|>=7.0.8",
|
||||
"ext-curl": "*",
|
||||
"ext-json": "*",
|
||||
"ext-pdo": "*",
|
||||
"ext-xml": "*",
|
||||
"phpmailer/phpmailer": ">=6.5.0 ~6.0",
|
||||
"symfony/config": "~3.4",
|
||||
"symfony/dependency-injection": "~3.4",
|
||||
"symfony/event-dispatcher": "~3.4",
|
||||
"symfony/http-foundation": ">=3.4.35 ~3.4",
|
||||
"symfony/filesystem": "~3.4",
|
||||
"php-pushover/php-pushover": "dev-master",
|
||||
"twig/twig": "1.*"
|
||||
"paragonie/random_compat": "^2.0",
|
||||
"twig/twig": "~1.35",
|
||||
"jaxl/jaxl": "^3.1",
|
||||
"viharm/psm-ldap-auth": "^1.1"
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"./src/includes/psmconfig.inc.php",
|
||||
"./src/includes/functions.inc.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"psm\\": "src/psm/"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -4,4 +4,7 @@ define('PSM_DB_USER', 'db_user');
|
|||
define('PSM_DB_PASS', 'db_pass');
|
||||
define('PSM_DB_NAME', 'db_name');
|
||||
define('PSM_DB_HOST', 'localhost');
|
||||
|
||||
define('PSM_DB_PORT', '3306'); //3306 is the default port for MySQL. If no specfic port is used, leave it empty.
|
||||
define('PSM_BASE_URL', '');
|
||||
define('PSM_WEBCRON_KEY', '');
|
||||
define('PSM_PUBLIC', false);
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -18,33 +19,147 @@
|
|||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
namespace {
|
||||
// include main configuration and functionality
|
||||
require_once dirname(__FILE__) . '/../src/bootstrap.php';
|
||||
use psm\Router;
|
||||
use psm\Util\Server\UpdateManager;
|
||||
|
||||
if(!psm_is_cli()) {
|
||||
die('This script can only be run from the command line.');
|
||||
}
|
||||
require_once __DIR__ . '/../src/bootstrap.php';
|
||||
|
||||
if (!psm_is_cli()) {
|
||||
// check if it's an allowed host
|
||||
if (!isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
|
||||
$_SERVER["HTTP_X_FORWARDED_FOR"] = "";
|
||||
}
|
||||
|
||||
// define won't accept array before php 7.0.0
|
||||
// check if data is serialized (not needed when using php 7.0.0 and higher)
|
||||
$data = @unserialize(PSM_CRON_ALLOW);
|
||||
$allow = $data === false ? PSM_CRON_ALLOW : $data;
|
||||
|
||||
if (!in_array($_SERVER['REMOTE_ADDR'], $allow) && !in_array($_SERVER["HTTP_X_FORWARDED_FOR"], $allow)
|
||||
&& ! (array_key_exists ("webcron_key", $_GET) &&
|
||||
$_GET["webcron_key"]==PSM_WEBCRON_KEY && (PSM_WEBCRON_KEY != ""))
|
||||
) {
|
||||
header('HTTP/1.0 403 Forbidden');
|
||||
die('
|
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html>
|
||||
<head><title>403 Forbidden</title></head>
|
||||
<body>
|
||||
<h1>Forbidden</h1><p>IP address not allowed. See the
|
||||
<a href="http://docs.phpservermonitor.org/en/latest/install.html#cronjob-over-web">documentation</a>
|
||||
for more info.</p>
|
||||
</body>
|
||||
</html>');
|
||||
}
|
||||
echo "OK";
|
||||
}
|
||||
|
||||
$cron_timeout = PSM_CRON_TIMEOUT;
|
||||
// parse a couple of arguments
|
||||
if (!empty($_SERVER['argv'])) {
|
||||
foreach ($_SERVER['argv'] as $argv) {
|
||||
$argi = explode('=', ltrim($argv, '--'));
|
||||
if (count($argi) !== 2) {
|
||||
continue;
|
||||
}
|
||||
switch ($argi[0]) {
|
||||
case 'uri':
|
||||
if (!defined('PSM_BASE_URL')) {
|
||||
define('PSM_BASE_URL', $argi[1]);
|
||||
}
|
||||
break;
|
||||
case 'timeout':
|
||||
$cron_timeout = intval($argi[1]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// prevent cron from running twice at the same time
|
||||
// however if the cron has been running for X mins, we'll assume it died and run anyway
|
||||
// if you want to change PSM_CRON_TIMEOUT, have a look in src/includes/psmconfig.inc.php.
|
||||
$time = time();
|
||||
if(psm_get_conf('cron_running') == 1 && ($time - psm_get_conf('cron_running_time') < PSM_CRON_TIMEOUT)) {
|
||||
die('Cron is already running. Exiting.');
|
||||
}
|
||||
if(!defined('PSM_DEBUG') || !PSM_DEBUG) {
|
||||
psm_update_conf('cron_running', 1);
|
||||
}
|
||||
psm_update_conf('cron_running_time', $time);
|
||||
// or you can provide the --timeout=x argument
|
||||
|
||||
$autorun = new \psm\Util\Server\UpdateManager($db);
|
||||
$autorun->run();
|
||||
$status = null;
|
||||
if (PHP_SAPI === 'cli') {
|
||||
$shortOptions = 's:'; // status
|
||||
|
||||
psm_update_conf('cron_running', 0);
|
||||
$longOptions = [
|
||||
'status:'
|
||||
];
|
||||
|
||||
$options = getopt($shortOptions, $longOptions);
|
||||
|
||||
$possibleValues = [
|
||||
'on' => 'on',
|
||||
'1' => 'on',
|
||||
'up' => 'on',
|
||||
'off' => 'off',
|
||||
'0' => 'off',
|
||||
'down' => 'off'
|
||||
];
|
||||
|
||||
if (
|
||||
true === array_key_exists('status', $options) &&
|
||||
true === array_key_exists(strtolower($options['status']), $possibleValues)
|
||||
) {
|
||||
$status = $possibleValues[$options['status']];
|
||||
} elseif (
|
||||
true === array_key_exists('s', $options) &&
|
||||
true === array_key_exists(strtolower($options['s']), $possibleValues)
|
||||
) {
|
||||
$status = $possibleValues[$options['s']];
|
||||
}
|
||||
}
|
||||
|
||||
if ($status === 'off') {
|
||||
$confPrefix = 'cron_off_';
|
||||
} else {
|
||||
$confPrefix = 'cron_';
|
||||
}
|
||||
|
||||
$time = time();
|
||||
if (
|
||||
psm_get_conf($confPrefix . 'running') == 1
|
||||
&& $cron_timeout > 0
|
||||
&& ($time - psm_get_conf($confPrefix . 'running_time') < $cron_timeout)
|
||||
) {
|
||||
die('Cron is already running. Exiting.');
|
||||
}
|
||||
if (!defined('PSM_DEBUG') || !PSM_DEBUG) {
|
||||
psm_update_conf($confPrefix . 'running', 1);
|
||||
}
|
||||
psm_update_conf($confPrefix . 'running_time', $time);
|
||||
|
||||
/** @var Router $router */
|
||||
/** @var UpdateManager $autorun */
|
||||
$autorun = $router->getService('util.server.updatemanager');
|
||||
|
||||
if ($status !== 'off') {
|
||||
$autorun->run(true, $status);
|
||||
} else {
|
||||
set_time_limit(60);
|
||||
if (false === defined('CRON_DOWN_INTERVAL')) {
|
||||
define('CRON_DOWN_INTERVAL', 5); // every 5 second call update
|
||||
}
|
||||
$start = time();
|
||||
$i = 0;
|
||||
while ($i < 59) {
|
||||
$autorun->run(true, $status);
|
||||
if ($i < (59 - CRON_DOWN_INTERVAL)) {
|
||||
time_sleep_until($start + $i + CRON_DOWN_INTERVAL);
|
||||
}
|
||||
$i += CRON_DOWN_INTERVAL;
|
||||
}
|
||||
}
|
||||
|
||||
psm_update_conf($confPrefix . 'running', 0);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
upstream php-fpm {
|
||||
server unix:/var/run/php/php7.4-fpm.sock;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name 192.168.56.100;
|
||||
|
||||
root /vagrant;
|
||||
index index.php;
|
||||
charset UTF-8;
|
||||
|
||||
gzip on;
|
||||
gzip_http_version 1.1;
|
||||
gzip_vary on;
|
||||
gzip_comp_level 6;
|
||||
gzip_proxied any;
|
||||
gzip_types text/plain text/xml text/css application/x-javascript;
|
||||
|
||||
access_log /var/log/nginx/psm.access.log;
|
||||
error_log /var/log/nginx/psm.com.error.log;
|
||||
|
||||
location = /favicon.ico {
|
||||
log_not_found off;
|
||||
access_log off;
|
||||
}
|
||||
|
||||
location = /robots.txt {
|
||||
deny all;
|
||||
log_not_found off;
|
||||
access_log off;
|
||||
}
|
||||
|
||||
location ~ /\.svn/* {
|
||||
deny all;
|
||||
}
|
||||
|
||||
location ~ /\.git/* {
|
||||
deny all;
|
||||
}
|
||||
|
||||
location /nginx_status {
|
||||
stub_status on;
|
||||
access_log off;
|
||||
}
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?q=$uri&$args;
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
|
||||
set $nocache "";
|
||||
if ($http_cookie ~ (comment_author_.*|wordpress_logged_in.*|wp-postpass_.*)) {
|
||||
set $nocache "Y";
|
||||
}
|
||||
|
||||
fastcgi_pass php-fpm;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME /vagrant$fastcgi_script_name;
|
||||
fastcgi_intercept_errors on;
|
||||
include fastcgi_params;
|
||||
|
||||
fastcgi_cache_use_stale error timeout invalid_header http_500;
|
||||
fastcgi_cache_key $host$request_uri;
|
||||
fastcgi_cache off;
|
||||
fastcgi_cache_valid 200 1m;
|
||||
fastcgi_cache_bypass $nocache;
|
||||
fastcgi_no_cache $nocache;
|
||||
}
|
||||
|
||||
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
|
||||
expires max;
|
||||
log_not_found off;
|
||||
}
|
||||
|
||||
location ~ ^/(status|ping)$ {
|
||||
include /etc/nginx/fastcgi_params;
|
||||
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
|
||||
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
|
||||
allow 127.0.0.1;
|
||||
deny all;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
define('PSM_DB_PREFIX', 'monitor_');
|
||||
define('PSM_DB_USER', 'psm');
|
||||
define('PSM_DB_PASS', 'psm-dev-password');
|
||||
define('PSM_DB_NAME', 'psm');
|
||||
define('PSM_DB_HOST', 'localhost');
|
||||
define('PSM_DB_PORT', '3306'); //3306 is the default port for MySQL. If no specfic port is used, leave it empty.
|
||||
define('PSM_BASE_URL', '');
|
||||
define('PSM_WEBCRON_KEY', '');
|
||||
define('PSM_PUBLIC', false);
|
|
@ -44,16 +44,16 @@ master_doc = 'index'
|
|||
|
||||
# General information about the project.
|
||||
project = u'PHP Server Monitor'
|
||||
copyright = u'2008-2014, Pepijn Over'
|
||||
copyright = u'2008-2017, Pepijn Over'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '3.1.0'
|
||||
version = '3.6'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = version
|
||||
release = '3.6.0.beta2'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
|
|
@ -5,7 +5,7 @@ Copyright
|
|||
|
||||
.. code-block:: none
|
||||
|
||||
Copyright (C) 2008-2014 Pepijn Over <pep_at_neanderthal-technology.com>
|
||||
Copyright (C) 2008-2017 Pepijn Over <pep_at_mailbox_org>
|
||||
|
||||
|
||||
PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
|
|
110
docs/credits.rst
110
docs/credits.rst
|
@ -9,9 +9,18 @@ Credits
|
|||
|
||||
The following people have contributed to the development of PHP Server Monitor:
|
||||
|
||||
|
||||
* Pepijn Over - https://github.com/dopeh
|
||||
|
||||
* Creator and project maintainer
|
||||
* Creator
|
||||
|
||||
* Samuel Denis-D'Ortun - https://github.com/sadortun
|
||||
|
||||
* Project developer
|
||||
|
||||
* Tim Zandbergen - https://github.com/TimZ99
|
||||
|
||||
* Project developer & maintainer
|
||||
|
||||
* Jérôme Cabanis - https://github.com/Abawell
|
||||
|
||||
|
@ -20,6 +29,11 @@ The following people have contributed to the development of PHP Server Monitor:
|
|||
* Mobile compatibility
|
||||
* Various fixes and improvements
|
||||
|
||||
* Ward Pieters - https://github.com/WardPieters
|
||||
|
||||
* GatewayAPI, Plivo, Callr and SolutionsInfini SMS Gateway
|
||||
* Other SMS Gateways rewritten
|
||||
|
||||
* Perri Vardy-Mason - https://github.com/VeoPVM
|
||||
|
||||
* Textmarketer SMS gateway
|
||||
|
@ -62,23 +76,60 @@ The following people have contributed to the development of PHP Server Monitor:
|
|||
|
||||
* Icon
|
||||
|
||||
* Michiel van der Wulp - https://github.com/mvdw
|
||||
|
||||
* FreeVoipDeal SMS gateway
|
||||
|
||||
|
||||
* Luis Rodriguez - https://github.com/ldrrp
|
||||
|
||||
* Nexmo SMS gateway
|
||||
|
||||
* Mateusz Małek - https://github.com/mateuszmalek
|
||||
|
||||
* SMSAPI gateway
|
||||
|
||||
* Daniel Krusky - https://github.com/dkrusky
|
||||
|
||||
* Discord webhook support
|
||||
|
||||
* Łukasz Szczepański - https://github.com/NixNotCastey
|
||||
|
||||
* PromoSMS gateway
|
||||
|
||||
Translators
|
||||
+++++++++++
|
||||
|
||||
The following people have contributed to the translation of PHP Server Monitor:
|
||||
|
||||
* Chinese
|
||||
|
||||
* manhere - https://github.com/manhere
|
||||
|
||||
* Bulgarian
|
||||
|
||||
* Plamen Vasilev - https://github.com/PVasileff
|
||||
|
||||
* Catalan
|
||||
|
||||
* caos30 - https://github.com/caos30
|
||||
|
||||
* Chinese
|
||||
|
||||
* manhere - https://github.com/manhere
|
||||
|
||||
* Czech
|
||||
|
||||
* Simon Berka - https://github.com/berkas1
|
||||
|
||||
* Danish
|
||||
|
||||
* nerdalertdk
|
||||
|
||||
* Estonian
|
||||
|
||||
* Richard A. - https://github.com/ItsRichardRaz
|
||||
|
||||
* Finnish
|
||||
|
||||
* Sami Nieminen - https://github.com/celeroncool
|
||||
|
||||
* French
|
||||
|
||||
* David Ribeiro
|
||||
|
@ -87,37 +138,70 @@ The following people have contributed to the translation of PHP Server Monitor:
|
|||
* German
|
||||
|
||||
* Brunbaur Herbert
|
||||
* Jean Pierre Kolb - https://github.com/JPKCom
|
||||
|
||||
* Italian
|
||||
|
||||
* Marco Gargani
|
||||
|
||||
* Japanese
|
||||
|
||||
* Vus520 - https://github.com/vus520
|
||||
* Rht0910 - https://github.com/rht0910
|
||||
|
||||
* Korean
|
||||
|
||||
* Ik-Jun
|
||||
|
||||
* Persian
|
||||
|
||||
* Javad Evazzadeh Kakroudi - https://github.com/evazzadeh
|
||||
|
||||
* Polish
|
||||
|
||||
* Arkadiusz Klenczar - https://github.com/aklenczar
|
||||
|
||||
* Portuguese (Brazil)
|
||||
|
||||
* Luiz Alberto S. Ribeiro
|
||||
|
||||
* Spanish
|
||||
|
||||
* Klemens Häckel - http://clickdimension.wordpress.com
|
||||
|
||||
* Russian
|
||||
|
||||
* Roman Beylin - https://github.com/roman-beylin
|
||||
* Yuriy Lyutov - https://github.com/delysh
|
||||
* Alexell - https://github.com/Alexell
|
||||
|
||||
* Spanish
|
||||
|
||||
* Klemens Häckel - http://clickdimension.wordpress.com
|
||||
* Luis Rodriguez - https://github.com/ldrrp
|
||||
* Mauro Vietri - https://github.com/Esselans
|
||||
|
||||
* Swedish
|
||||
|
||||
* Andlil - https://github.com/andlil
|
||||
|
||||
* Turkish
|
||||
|
||||
* Haydar Kulekci - https://github.com/hkulekci
|
||||
|
||||
* Ukrainian
|
||||
|
||||
* Oleksa Vyshnivsky - https://github.com/oleksavyshnivsky
|
||||
|
||||
Vendors
|
||||
+++++++
|
||||
|
||||
The following libraries are being used by PHP Server Monitor:
|
||||
|
||||
* jqPlot - http://www.jqplot.com
|
||||
* Chart.js - http://chartjs.org/
|
||||
* Twitter Bootstrap - http://getbootstrap.com
|
||||
* Bootstrap Multiselect - https://github.com/davidstutz/bootstrap-multiselect
|
||||
* jQuery - https://jquery.com
|
||||
* Font Awesome - https://fontawesome.com
|
||||
* Twig - https://twig.symfony.com
|
||||
* Bootstrap-select - https://github.com/snapappointments/bootstrap-select
|
||||
* PHP Mailer - https://github.com/PHPMailer/PHPMailer
|
||||
* php-pushover - https://github.com/kryap/php-pushover
|
||||
* Twig - http://twig.sensiolabs.org
|
||||
* PHP-Pushover - https://github.com/kryap/php-pushover
|
||||
* Symfony - https://symfony.com
|
||||
* Random_compat - https://github.com/paragonie/random_compat
|
||||
* Hammer.js - https://github.com/hammerjs/hammer.js
|
||||
|
|
|
@ -25,6 +25,10 @@ Each language file should contain a 'locale' key which can be used for formattin
|
|||
|
||||
For more information, see http://www.php.net/manual/en/function.setlocale.php
|
||||
|
||||
For display purposes, the language file should also provide the text direction (ltr / rtl) and language subtag.
|
||||
Unfortunately they do not match 1:1 with the locales used for the server.
|
||||
Valid language subtags can be found on http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry.
|
||||
|
||||
Adding a new language
|
||||
---------------------
|
||||
|
||||
|
@ -40,6 +44,25 @@ To add a new language, follow these steps:
|
|||
Getting started
|
||||
+++++++++++++++
|
||||
|
||||
Vagrant
|
||||
-------
|
||||
|
||||
If you are not familiar with Vagrant, have a look at https://www.vagrantup.com/ for more information (it is awesome).
|
||||
|
||||
|
||||
To ease development, a Vagrantfile has been included along with a full provisioning profile generated using ansible.
|
||||
The Vagrantfile is configured to set up a Ubuntu 20.04 box with PHP 7.4 (FPM) and MySQL installed, with a dedicated private IP for accessing the dev environment(http://192.168.56.100).
|
||||
To set up the development environment, make sure you have Vagrant, Ansible and VirtualBox (https://www.virtualbox.org/) installed, then run::
|
||||
|
||||
vagrant up
|
||||
|
||||
The initial setup may take some time as the virtual machine needs to be provisioned.
|
||||
After that, you can access your development environment by navigating to http://192.168.56.100/.
|
||||
The config.php file has been created automatically, but the first time you do need to run through the install wizard.
|
||||
|
||||
Code
|
||||
----
|
||||
|
||||
All code related to phpservermon lives in the "psm" namespace, which can be found under "src/psm".
|
||||
|
||||
The Router (https://github.com/phpservermon/phpservermon/blob/develop/src/psm/Router.class.php) is used to load the modules.
|
||||
|
|
110
docs/faq.rst
110
docs/faq.rst
|
@ -10,7 +10,7 @@ Users
|
|||
What are the differences between the user levels?
|
||||
-------------------------------------------------
|
||||
|
||||
There are 2 user levels available: regular user and administrator.
|
||||
There are 3 user levels available: anonymous, regular user and administrator.
|
||||
|
||||
Administrators:
|
||||
|
||||
|
@ -24,6 +24,16 @@ Regular users:
|
|||
* View the history and logs of their assigned servers.
|
||||
* Run the updater on their assigned servers.
|
||||
|
||||
Anonymous:
|
||||
Only meant for user '__PUBLIC__' and can't be assigned to any other user.
|
||||
|
||||
* View the status of their assigned servers without password.
|
||||
|
||||
I removed user '__PUBLIC__', what now?
|
||||
--------------------------------------
|
||||
|
||||
* Go to users -> create new user.
|
||||
* Set the username to '__PUBLIC__', level to 'anonymous' and the rest is up to you.
|
||||
|
||||
Servers
|
||||
+++++++
|
||||
|
@ -51,10 +61,27 @@ The other way is to parse the access logs created by your webserver software, wh
|
|||
|
||||
When using tools such as Google Analytics, the monitor requests will not show up in your statistics, because the monitor does not execute any Javascript.
|
||||
Tools that parse your raw access logs like Awstats, will include the requests made by the monitor.
|
||||
To make sure these requests can be identified, the monitor uses a custom user agent, which you can usually filter out. The user agent of the monitor looks like::
|
||||
To make sure these requests can be identified, the monitor uses a custom user agent, which you can usually filter out. The user agent can be modified in the config section, but bij default looks like::
|
||||
|
||||
Mozilla/5.0 (compatible; phpservermon/3.0.1; +http://www.phpservermonitor.org)
|
||||
|
||||
What is the log retention period?
|
||||
---------------------------------
|
||||
|
||||
The monitor uses 2 different tables in the database to store history information regarding servers.
|
||||
The first one is called the "uptime" table. This one keeps full track of the past 7 days, so that detailed information is available (e.g. which checks failed/passed etc).
|
||||
This allows the monitor to create a detailed graph on the server info page.
|
||||
In order to prevent the uptime table growing beyond reasonable, after a week the uptime records are archived to a different table.
|
||||
Archiving means that per day only one record is stored with averages. This still allows some basic statistics, although they are not as detailed as the uptime records.
|
||||
|
||||
The retention period tells the monitor how long to keep records in the archive table.
|
||||
|
||||
How to disable caching?
|
||||
------------------------
|
||||
|
||||
Caching can be stopt by using a unique url. Place `%cachebuster%` in the url,
|
||||
this will be replaced with the value of time().
|
||||
Example: https://example.com?%cachebuster% will run as https://example.com?571768757.
|
||||
|
||||
Configuration
|
||||
+++++++++++++
|
||||
|
@ -77,4 +104,81 @@ The second part is the actual message. There are a few variables you can use in
|
|||
* %LABEL% - The name of the server
|
||||
* %IP% - The ip of the server
|
||||
* %PORT% - The port of the server
|
||||
* %ERROR% - This one only works for the off_* messages and contains the error returned by the monitor
|
||||
* %ERROR% - This one only works for the off_* messages and contains the error returned by the monitor
|
||||
|
||||
After upgrading, my email stopped working.
|
||||
------------------------------------------
|
||||
|
||||
Run 'php composer.phar update' and you should be good to go!
|
||||
|
||||
Setting up a public page.
|
||||
-------------------------
|
||||
|
||||
1. Set PSM_PUBLIC to true in config.php.
|
||||
2. If not yet existing, create a user with username '__PUBLIC__'. See Users -> "I removed user '__PUBLIC__', what now?" for help.
|
||||
3. Add servers to user '__PUBLIC__'.
|
||||
4. Go to /public.php.
|
||||
|
||||
Notifications
|
||||
+++++++++++++
|
||||
|
||||
I'm not recieving a notification after my server went down.
|
||||
-----------------------------------------------------------
|
||||
|
||||
1. Check if you have setup the noticication method correctly on the config tab.
|
||||
2. Check if you have added the user to the server you want to monitor. This can be found under permissions while editting the server.
|
||||
3. Check if you have enabled the notification method for the server. This can be changed on the server edit page.
|
||||
|
||||
How do I setup Telegram?
|
||||
------------------------
|
||||
A few steps are required to get Telegram notifications working.
|
||||
You need to be an administrator for this part.
|
||||
|
||||
1. Go to @botfather (https://t.me/BotFather) and type /start .
|
||||
2. Type /newbot and give your bot an unique name.
|
||||
3. Save the API token.
|
||||
4. Login to PhpServerMonitor dashboard > config > Telegram > put your api token into Telegram API Token's column.
|
||||
|
||||
How do I sent Telegram notifications to a person?
|
||||
-------------------------------------------------
|
||||
|
||||
1. Go to @cid_bot (https://t.me/cid_bot) and start.
|
||||
2. Save your chat id.
|
||||
3. Login to PhpServerMonitor dashboard then open user profile page, then put your chat id into Telegram chat id's column.
|
||||
4. Press save then activate Telegram notifications button.
|
||||
5. Go to your chat with the bot and press start of type /start.
|
||||
|
||||
How do I sent Telegram notifications to a group?
|
||||
------------------------------------------------
|
||||
|
||||
1. Add @cid_bot (https://t.me/cid_bot) to the group.
|
||||
2. Save the chat id (including the -).
|
||||
3. Remove @cid_bot from the group.
|
||||
4. Add your bot to the group.
|
||||
|
||||
How do I sent Telegram notifications to a channel?
|
||||
--------------------------------------------------
|
||||
|
||||
1. Create a public channel.
|
||||
2. Add the bot as an administator to the channel.
|
||||
3. Save chat id as: @channelname.
|
||||
|
||||
What is the username of my bot?
|
||||
-------------------------------
|
||||
|
||||
1. Go to profile on the monitor.
|
||||
2. Press activate.
|
||||
3. A button will appear, this will direct you to your Telegram bot.
|
||||
|
||||
How do I setup Jabber notifications from Google account?
|
||||
--------------------------------------------------------
|
||||
A few steps are required to get Jabber notifications working for Google account.
|
||||
You need to be an administrator for this part.
|
||||
|
||||
1. Go into you Google Account Security settings (https://myaccount.google.com/security).
|
||||
2. Check that you have two factor auth enabled. If not, activate it.
|
||||
3. Add new app password - copy it.
|
||||
4. Login to PhpServerMonitor dashboard > config > Jabber and use password from step 3 with your Google account in PhpServerMonitor jabber settings.
|
||||
5. As host use `talk.google.com`.
|
||||
6. As username use your whole Google account (for example `example@google.com`).
|
||||
7. As port use `5223` (really, not typo error ...).
|
||||
|
|
|
@ -26,7 +26,8 @@ To change these values correctly, only update the second parameter of the functi
|
|||
define('PSM_DB_HOST', 'db_host');
|
||||
define('PSM_DB_NAME', 'db_name');
|
||||
define('PSM_DB_USER', 'db_user');
|
||||
define('PSM_DB_PASS', 'db_user_password');
|
||||
define('PSM_DB_PASS', 'db_user_password'); NOTE: password containing '%' will cause an error.
|
||||
define('PSM_DB_PORT', 'most likely 3306, may also be empty');
|
||||
|
||||
For example: to change your username you should ONLY change the 'db\_user' part.
|
||||
Do NOT remove the quotes around your username as that will result in an error.
|
||||
|
@ -49,6 +50,8 @@ For a regular upgrade, follow these steps:
|
|||
* Follow the steps
|
||||
* Enjoy
|
||||
|
||||
Alternatively you can use updater.sh script.
|
||||
|
||||
From 2.0
|
||||
--------
|
||||
|
||||
|
@ -91,10 +94,67 @@ Please note that some distros have user-specific crontabs (e.g. Debian). If that
|
|||
|
||||
*/15 * * * * /usr/bin/php /var/www/html/phpservermon/cron/status.cron.php
|
||||
|
||||
If you want to check in different intervals online and offline servers you can use attribute `-s` (or `--status`) with value `on` or `off`.
|
||||
So for example you want to check your servers which are online every 10 minutes and offline every 5 seconds. So configure two cron jobs::
|
||||
|
||||
*/10 * * * * /usr/bin/php /var/www/html/phpservermon/cron/status.cron.php -s on
|
||||
*/1 * * * * /usr/bin/php /var/www/html/phpservermon/cron/status.cron.php -s off
|
||||
|
||||
By default `off` servers are checked every 5 seconds. If you want to change it add into your config file this constant with required value in seconds::
|
||||
|
||||
define('CRON_DOWN_INTERVAL', 1); // every 1 second call update
|
||||
|
||||
The update script has been designed to prevent itself from running multiple times. It has a maximum timeout of 10 minutes.
|
||||
After that the script is assumed dead and the cronjob will run again.
|
||||
If you want to change the 10 minutes timeout, find the constant "PSM_CRON_TIMEOUT" in src/includes/psmconfig.inc.php.
|
||||
You can also provide it as an argument (in seconds!). The following example would change to timeout to 10 seconds::
|
||||
|
||||
php status.cron.php --timeout=10
|
||||
|
||||
By default, no URLs are generated for notifications created in the cronjob.
|
||||
To specify the base url to your monitor installation, use the "--uri" argument, like so::
|
||||
|
||||
php status.cron.php --uri="http://www.phpservermonitor.org/mymonitor/"
|
||||
|
||||
CPanel
|
||||
-------
|
||||
|
||||
If you're work with cPanel you can follow these steps:
|
||||
|
||||
1. Log into your cPanel account
|
||||
|
||||
2. Go to cron jobs
|
||||
|
||||
3. Add a new cronjob
|
||||
|
||||
- Type `*/15` in the minute field
|
||||
|
||||
- Type `*` in the other field
|
||||
|
||||
- Type `php /home2/<Type here your cPanel username>/public_html/phpservermon/cron/status.cron.php` in the command field
|
||||
|
||||
4. Submit
|
||||
|
||||
Cronjob over web
|
||||
----------------
|
||||
To allow scheduled status updates over the web, the commandline check is extended with a check on allowed IP address(es).
|
||||
|
||||
In config.php add following line::
|
||||
|
||||
// PHP 7.0.0 and higher
|
||||
define('PSM_CRON_ALLOW', array("xxx.xxx.xxx.xxx", "yyy.yyy.yyy.yyy", "zzz.zzz.zzz.zzz"));
|
||||
// lower versions
|
||||
define('PSM_CRON_ALLOW', serialize(array("xxx.xxx.xxx.xxx", "yyy.yyy.yyy.yyy", "zzz.zzz.zzz.zzz")));
|
||||
|
||||
After that, you can hit the url http(s)://"yourmonitor.com"/cron/status.cron.php over the web from your allowed IP.
|
||||
|
||||
Alternatively, define a secret key to allow the update over the web:
|
||||
|
||||
In config.php add following line::
|
||||
|
||||
define('PSM_WEBCRON_KEY', 'YOURKEY');
|
||||
|
||||
After that, you can hit the url http(s)://"yourmonitor.com"/cron/status.cron.php?webcron_key=YOURKEY .
|
||||
|
||||
Troubleshooting
|
||||
+++++++++++++++
|
||||
|
@ -102,4 +162,5 @@ Troubleshooting
|
|||
If you have problems setting up or accessing your monitor and do not know why, enable debug mode to turn on error reporting.
|
||||
To enable debug mode, add the following line to your config.php file::
|
||||
|
||||
define('PSM_DEBUG', true);
|
||||
define('PSM_DEBUG', true);
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ Features
|
|||
++++++++
|
||||
|
||||
* Monitor services and websites (see below).
|
||||
* Email, SMS and Pushover notifications.
|
||||
* Email, SMS, Pushover, Telegram and Jabber notifications.
|
||||
* View history graphs of uptime and latency.
|
||||
* User authentication with 2 levels (administrator and regular user).
|
||||
* Logs of connection errors, outgoing emails and text messages.
|
||||
|
@ -44,17 +44,27 @@ There are two different ways to monitor a server:
|
|||
Notifications
|
||||
-------------
|
||||
Each server has its own settings regarding notification.
|
||||
You can choose for email, text message (SMS) and Pushover.net notifications.
|
||||
You can choose for email, text message (SMS), Pushover.net, Telegram and Jabber notifications.
|
||||
The following SMS gateways are currently available:
|
||||
|
||||
* Clickatell - <https://www.clickatell.com>
|
||||
* Inetworx - <http://www.inetworx.ch>
|
||||
* Mollie - <http://www.mollie.nl>
|
||||
* Mosms - <http://www.mosms.com>
|
||||
* Smsglobal - <http://smsglobal.com/>
|
||||
* SMSit - <http://www.smsit.dk/>
|
||||
* Spryng - <http://www.spryng.nl>
|
||||
* Textmarketer - <http://www.textmarketer.co.uk>
|
||||
* Inetworx - <https://www.inetworx.ch>
|
||||
* Messagebird - <https://www.messagebird.com>
|
||||
* Mosms - <https://www.mosms.com>
|
||||
* Smsglobal - <https://smsglobal.com/>
|
||||
* SMSit - <https://www.smsit.dk/>
|
||||
* Spryng - <https://www.spryng.nl>
|
||||
* Textmarketer - <https://www.textmarketer.co.uk>
|
||||
* FreeVoipDeal - <https://www.freevoipdeal.com>
|
||||
* Nexmo - <https://www.nexmo.com/>
|
||||
* OctoPush - <https://www.octopush.com/>
|
||||
* FreeMobile (FR) - <https://mobile.free.fr/>
|
||||
* Twilio - <https://twilio.com>
|
||||
* CM Telecom - <https://www.cm.com/>
|
||||
* GatewayAPI - <https://gatewayapi.com/>
|
||||
* SolutionsInfini - <https://solutionsinfini.com/>
|
||||
* Plivo - <https://www.plivo.com/>
|
||||
* Callr - <https://www.callr.com/>
|
||||
|
||||
Please note: for these gateways you will need an account with sufficient credits.
|
||||
|
||||
|
@ -62,4 +72,4 @@ Please note: for these gateways you will need an account with sufficient credits
|
|||
Download
|
||||
++++++++
|
||||
|
||||
The latest version can be downloaded from http://www.phpservermonitor.org/.
|
||||
The latest version can be downloaded from http://www.phpservermonitor.org/.
|
||||
|
|
484
docs/make.bat
484
docs/make.bat
|
@ -1,242 +1,242 @@
|
|||
@ECHO OFF
|
||||
|
||||
REM Command file for Sphinx documentation
|
||||
|
||||
if "%SPHINXBUILD%" == "" (
|
||||
set SPHINXBUILD=sphinx-build
|
||||
)
|
||||
set BUILDDIR=_build
|
||||
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
|
||||
set I18NSPHINXOPTS=%SPHINXOPTS% .
|
||||
if NOT "%PAPER%" == "" (
|
||||
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
|
||||
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
|
||||
)
|
||||
|
||||
if "%1" == "" goto help
|
||||
|
||||
if "%1" == "help" (
|
||||
:help
|
||||
echo.Please use `make ^<target^>` where ^<target^> is one of
|
||||
echo. html to make standalone HTML files
|
||||
echo. dirhtml to make HTML files named index.html in directories
|
||||
echo. singlehtml to make a single large HTML file
|
||||
echo. pickle to make pickle files
|
||||
echo. json to make JSON files
|
||||
echo. htmlhelp to make HTML files and a HTML help project
|
||||
echo. qthelp to make HTML files and a qthelp project
|
||||
echo. devhelp to make HTML files and a Devhelp project
|
||||
echo. epub to make an epub
|
||||
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
|
||||
echo. text to make text files
|
||||
echo. man to make manual pages
|
||||
echo. texinfo to make Texinfo files
|
||||
echo. gettext to make PO message catalogs
|
||||
echo. changes to make an overview over all changed/added/deprecated items
|
||||
echo. xml to make Docutils-native XML files
|
||||
echo. pseudoxml to make pseudoxml-XML files for display purposes
|
||||
echo. linkcheck to check all external links for integrity
|
||||
echo. doctest to run all doctests embedded in the documentation if enabled
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "clean" (
|
||||
for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
|
||||
del /q /s %BUILDDIR%\*
|
||||
goto end
|
||||
)
|
||||
|
||||
|
||||
%SPHINXBUILD% 2> nul
|
||||
if errorlevel 9009 (
|
||||
echo.
|
||||
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
|
||||
echo.installed, then set the SPHINXBUILD environment variable to point
|
||||
echo.to the full path of the 'sphinx-build' executable. Alternatively you
|
||||
echo.may add the Sphinx directory to PATH.
|
||||
echo.
|
||||
echo.If you don't have Sphinx installed, grab it from
|
||||
echo.http://sphinx-doc.org/
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if "%1" == "html" (
|
||||
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "dirhtml" (
|
||||
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "singlehtml" (
|
||||
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "pickle" (
|
||||
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished; now you can process the pickle files.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "json" (
|
||||
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished; now you can process the JSON files.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "htmlhelp" (
|
||||
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished; now you can run HTML Help Workshop with the ^
|
||||
.hhp project file in %BUILDDIR%/htmlhelp.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "qthelp" (
|
||||
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished; now you can run "qcollectiongenerator" with the ^
|
||||
.qhcp project file in %BUILDDIR%/qthelp, like this:
|
||||
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\phpservermon.qhcp
|
||||
echo.To view the help file:
|
||||
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\phpservermon.ghc
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "devhelp" (
|
||||
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "epub" (
|
||||
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The epub file is in %BUILDDIR%/epub.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "latex" (
|
||||
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "latexpdf" (
|
||||
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
|
||||
cd %BUILDDIR%/latex
|
||||
make all-pdf
|
||||
cd %BUILDDIR%/..
|
||||
echo.
|
||||
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "latexpdfja" (
|
||||
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
|
||||
cd %BUILDDIR%/latex
|
||||
make all-pdf-ja
|
||||
cd %BUILDDIR%/..
|
||||
echo.
|
||||
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "text" (
|
||||
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The text files are in %BUILDDIR%/text.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "man" (
|
||||
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The manual pages are in %BUILDDIR%/man.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "texinfo" (
|
||||
%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "gettext" (
|
||||
%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "changes" (
|
||||
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.The overview file is in %BUILDDIR%/changes.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "linkcheck" (
|
||||
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Link check complete; look for any errors in the above output ^
|
||||
or in %BUILDDIR%/linkcheck/output.txt.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "doctest" (
|
||||
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Testing of doctests in the sources finished, look at the ^
|
||||
results in %BUILDDIR%/doctest/output.txt.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "xml" (
|
||||
%SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The XML files are in %BUILDDIR%/xml.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "pseudoxml" (
|
||||
%SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.
|
||||
goto end
|
||||
)
|
||||
|
||||
:end
|
||||
@ECHO OFF
|
||||
|
||||
REM Command file for Sphinx documentation
|
||||
|
||||
if "%SPHINXBUILD%" == "" (
|
||||
set SPHINXBUILD=sphinx-build
|
||||
)
|
||||
set BUILDDIR=_build
|
||||
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
|
||||
set I18NSPHINXOPTS=%SPHINXOPTS% .
|
||||
if NOT "%PAPER%" == "" (
|
||||
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
|
||||
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
|
||||
)
|
||||
|
||||
if "%1" == "" goto help
|
||||
|
||||
if "%1" == "help" (
|
||||
:help
|
||||
echo.Please use `make ^<target^>` where ^<target^> is one of
|
||||
echo. html to make standalone HTML files
|
||||
echo. dirhtml to make HTML files named index.html in directories
|
||||
echo. singlehtml to make a single large HTML file
|
||||
echo. pickle to make pickle files
|
||||
echo. json to make JSON files
|
||||
echo. htmlhelp to make HTML files and a HTML help project
|
||||
echo. qthelp to make HTML files and a qthelp project
|
||||
echo. devhelp to make HTML files and a Devhelp project
|
||||
echo. epub to make an epub
|
||||
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
|
||||
echo. text to make text files
|
||||
echo. man to make manual pages
|
||||
echo. texinfo to make Texinfo files
|
||||
echo. gettext to make PO message catalogs
|
||||
echo. changes to make an overview over all changed/added/deprecated items
|
||||
echo. xml to make Docutils-native XML files
|
||||
echo. pseudoxml to make pseudoxml-XML files for display purposes
|
||||
echo. linkcheck to check all external links for integrity
|
||||
echo. doctest to run all doctests embedded in the documentation if enabled
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "clean" (
|
||||
for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
|
||||
del /q /s %BUILDDIR%\*
|
||||
goto end
|
||||
)
|
||||
|
||||
|
||||
%SPHINXBUILD% 2> nul
|
||||
if errorlevel 9009 (
|
||||
echo.
|
||||
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
|
||||
echo.installed, then set the SPHINXBUILD environment variable to point
|
||||
echo.to the full path of the 'sphinx-build' executable. Alternatively you
|
||||
echo.may add the Sphinx directory to PATH.
|
||||
echo.
|
||||
echo.If you don't have Sphinx installed, grab it from
|
||||
echo.http://sphinx-doc.org/
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if "%1" == "html" (
|
||||
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "dirhtml" (
|
||||
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "singlehtml" (
|
||||
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "pickle" (
|
||||
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished; now you can process the pickle files.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "json" (
|
||||
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished; now you can process the JSON files.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "htmlhelp" (
|
||||
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished; now you can run HTML Help Workshop with the ^
|
||||
.hhp project file in %BUILDDIR%/htmlhelp.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "qthelp" (
|
||||
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished; now you can run "qcollectiongenerator" with the ^
|
||||
.qhcp project file in %BUILDDIR%/qthelp, like this:
|
||||
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\phpservermon.qhcp
|
||||
echo.To view the help file:
|
||||
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\phpservermon.ghc
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "devhelp" (
|
||||
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "epub" (
|
||||
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The epub file is in %BUILDDIR%/epub.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "latex" (
|
||||
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "latexpdf" (
|
||||
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
|
||||
cd %BUILDDIR%/latex
|
||||
make all-pdf
|
||||
cd %BUILDDIR%/..
|
||||
echo.
|
||||
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "latexpdfja" (
|
||||
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
|
||||
cd %BUILDDIR%/latex
|
||||
make all-pdf-ja
|
||||
cd %BUILDDIR%/..
|
||||
echo.
|
||||
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "text" (
|
||||
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The text files are in %BUILDDIR%/text.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "man" (
|
||||
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The manual pages are in %BUILDDIR%/man.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "texinfo" (
|
||||
%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "gettext" (
|
||||
%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "changes" (
|
||||
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.The overview file is in %BUILDDIR%/changes.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "linkcheck" (
|
||||
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Link check complete; look for any errors in the above output ^
|
||||
or in %BUILDDIR%/linkcheck/output.txt.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "doctest" (
|
||||
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Testing of doctests in the sources finished, look at the ^
|
||||
results in %BUILDDIR%/doctest/output.txt.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "xml" (
|
||||
%SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The XML files are in %BUILDDIR%/xml.
|
||||
goto end
|
||||
)
|
||||
|
||||
if "%1" == "pseudoxml" (
|
||||
%SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml
|
||||
if errorlevel 1 exit /b 1
|
||||
echo.
|
||||
echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.
|
||||
goto end
|
||||
)
|
||||
|
||||
:end
|
||||
|
|
|
@ -5,6 +5,8 @@ Requirements
|
|||
|
||||
* Web server
|
||||
* MySQL database
|
||||
* PHP 5.3.7+
|
||||
* For PHP5: 5.5.9+
|
||||
* For PHP7: 7.0.8+
|
||||
* PHP cURL package
|
||||
* PHP PDO mysql driver
|
||||
* PHP PDO mysql driver
|
||||
* PHP XML package
|
||||
|
|
BIN
favicon.png
BIN
favicon.png
Binary file not shown.
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.4 KiB |
26
index.php
26
index.php
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -18,16 +19,31 @@
|
|||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
require 'src/bootstrap.php';
|
||||
require __DIR__ . '/src/bootstrap.php';
|
||||
|
||||
psm_no_cache();
|
||||
|
||||
$router = new psm\Router();
|
||||
$router->run();
|
||||
if (isset($_GET["logout"])) {
|
||||
$router->getService('user')->doLogout();
|
||||
// logged out, redirect to login
|
||||
header('Location: ' . psm_build_url());
|
||||
die();
|
||||
}
|
||||
|
||||
$mod = psm_GET('mod', PSM_MODULE_DEFAULT);
|
||||
|
||||
try {
|
||||
$router->run($mod);
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
// invalid module, try the default one
|
||||
// it that somehow also doesnt exist, we have a bit of an issue
|
||||
// and we really have no reason catch it
|
||||
$router->run(PSM_MODULE_DEFAULT);
|
||||
}
|
||||
|
|
14
install.php
14
install.php
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -18,16 +19,17 @@
|
|||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
define('PSM_INSTALL', true);
|
||||
namespace {
|
||||
define('PSM_INSTALL', true);
|
||||
|
||||
require 'src/bootstrap.php';
|
||||
require __DIR__ . '/src/bootstrap.php';
|
||||
|
||||
$router = new psm\Router();
|
||||
$router->run('install');
|
||||
$router->run('install');
|
||||
}
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
*
|
||||
!.gitignore
|
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"name": "PHP Server Monitor",
|
||||
"short_name": "PSM",
|
||||
"icons": [{
|
||||
"src": "phpservermon.png",
|
||||
"sizes": "128x128",
|
||||
"type": "image/png"
|
||||
}, {
|
||||
"src": "favicon.png",
|
||||
"sizes": "32x32",
|
||||
"type": "image/png"
|
||||
} ,{
|
||||
"src": "favicon.ico",
|
||||
"sizes": "32x32",
|
||||
"type": "image/x-icon"
|
||||
}],
|
||||
"start_url": "index.php",
|
||||
"display": "standalone",
|
||||
"background_color": "#3E4EB8",
|
||||
"theme_color": "#ffffff"
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 6.0 KiB |
|
@ -0,0 +1,70 @@
|
|||
---
|
||||
- hosts: all
|
||||
become: yes
|
||||
become_method: sudo
|
||||
tasks:
|
||||
- name: Update OS
|
||||
package:
|
||||
name: '*'
|
||||
state: latest
|
||||
- name: wget percona release installation file
|
||||
shell: cd /root/ && wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb; dpkg -i /root/percona-release_latest.$(lsb_release -sc)_all.deb
|
||||
|
||||
- name: setup percona repositories to percona server 5.7
|
||||
shell: percona-release setup ps57
|
||||
|
||||
- name: Update repositories cache
|
||||
apt:
|
||||
update_cache: yes
|
||||
|
||||
- name: ensure nginx is at the latest version
|
||||
apt: name=nginx state=latest
|
||||
- name: start nginx
|
||||
service:
|
||||
name: nginx
|
||||
state: started
|
||||
|
||||
- name: Add nginx stable repository from PPA and install its signing key on Ubuntu target
|
||||
ansible.builtin.apt_repository:
|
||||
repo: ppa:ondrej/php
|
||||
|
||||
- name: ensure php7.4-fpm is at the latest version
|
||||
apt: name=php7.4-fpm state=latest
|
||||
|
||||
- name: install php7.4-curl
|
||||
apt: name=php7.4-curl state=latest
|
||||
|
||||
- name: install php7.4-xml
|
||||
apt: name=php7.4-xml state=latest
|
||||
|
||||
- name: install php7.4-pdo
|
||||
apt: name=php7.4-pdo state=latest
|
||||
|
||||
- name: install php7.4-mysql
|
||||
apt: name=php7.4-mysql state=latest
|
||||
|
||||
- name: ensure gpupg2 is at the latest version
|
||||
apt: name=gnupg2 state=latest
|
||||
|
||||
- name: ensure percona-server-57 is installed
|
||||
apt: name=percona-server-server-5.7 state=latest
|
||||
|
||||
# - name: Create a new database with name 'psm'
|
||||
# shell: mysql -e "CREATE DATABASE psm;"
|
||||
- name: setup mysql
|
||||
shell: /vagrant/setup-mysql.sh
|
||||
|
||||
- name: copy psm nginx vhost
|
||||
shell: /bin/cp -far /vagrant/dev/phpservermon-default /etc/nginx/sites-available/default
|
||||
|
||||
- name: setup php dependencies
|
||||
shell: /vagrant/setup-php.sh
|
||||
|
||||
- name: copy psm config file
|
||||
shell: /bin/cp -far /vagrant/dev/vagrant-config.php /vagrant/config.php
|
||||
|
||||
- name: apply nginx modifications
|
||||
service:
|
||||
name: nginx
|
||||
state: restarted
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Tim Zandbergen <Tim@Xervion.nl>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 3.6.0
|
||||
**/
|
||||
|
||||
namespace {
|
||||
define('PSM_PUBLIC_PAGE', true);
|
||||
|
||||
require __DIR__ . '/src/bootstrap.php';
|
||||
|
||||
$router->run('server_status');
|
||||
|
||||
// By destroying the session the login will show when going to another page
|
||||
session_destroy();
|
||||
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
var dataCacheName = 'PSM-v1';
|
||||
var cacheName = 'PSM-PWA-final-1';
|
||||
var filesToCache = [
|
||||
'',
|
||||
'index.php',
|
||||
'src/templates/default/static/js/history.js',
|
||||
'src/templates/default/static/js/scripts.js',
|
||||
'src/templates/default/static/js/search.js',
|
||||
'src/templates/default/static/css/bootstrap.min.css',
|
||||
'src/templates/default/static/css/search.min.css',
|
||||
'src/templates/default/static/css/style.min.css',
|
||||
'phpservermon.png'
|
||||
];
|
||||
|
||||
self.addEventListener('install', function(e) {
|
||||
console.log('[ServiceWorker] Install');
|
||||
e.waitUntil(
|
||||
caches.open(cacheName).then(function(cache) {
|
||||
console.log('[ServiceWorker] Caching app shell');
|
||||
return cache.addAll(filesToCache);
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
self.addEventListener('activate', function(e) {
|
||||
console.log('[ServiceWorker] Activate');
|
||||
e.waitUntil(
|
||||
caches.keys().then(function(keyList) {
|
||||
return Promise.all(keyList.map(function(key) {
|
||||
if (key !== cacheName && key !== dataCacheName) {
|
||||
console.log('[ServiceWorker] Removing old cache', key);
|
||||
return caches.delete(key);
|
||||
}
|
||||
}));
|
||||
})
|
||||
);
|
||||
return self.clients.claim();
|
||||
});
|
||||
|
||||
/*self.addEventListener('fetch', function(e) {
|
||||
console.log('[Service Worker] Fetch', e.request.url);
|
||||
var dataUrl = 'https://query.yahooapis.com/v1/public/yql';
|
||||
if (e.request.url.indexOf(dataUrl) > -1) {
|
||||
/*
|
||||
* When the request URL contains dataUrl, the app is asking for fresh
|
||||
* weather data. In this case, the service worker always goes to the
|
||||
* network and then caches the response. This is called the "Cache then
|
||||
* network" strategy:
|
||||
* https://jakearchibald.com/2014/offline-cookbook/#cache-then-network
|
||||
*/
|
||||
/*
|
||||
e.respondWith(
|
||||
caches.open(dataCacheName).then(function(cache) {
|
||||
return fetch(e.request).then(function(response){
|
||||
cache.put(e.request.url, response.clone());
|
||||
return response;
|
||||
});
|
||||
})
|
||||
);
|
||||
} else {
|
||||
/*
|
||||
* The app is asking for app shell files. In this scenario the app uses the
|
||||
* "Cache, falling back to the network" offline strategy:
|
||||
* https://jakearchibald.com/2014/offline-cookbook/#cache-falling-back-to-network
|
||||
*/
|
||||
/*
|
||||
e.respondWith(
|
||||
caches.match(e.request).then(function(response) {
|
||||
return response || fetch(e.request);
|
||||
})
|
||||
);
|
||||
}
|
||||
});*/
|
|
@ -0,0 +1,8 @@
|
|||
#!/usr/bin/env bash
|
||||
# Create database
|
||||
mysql -e "CREATE DATABASE psm;"
|
||||
# Create user
|
||||
mysql -e "CREATE USER 'psm'@'localhost' IDENTIFIED BY 'psm-dev-password';"
|
||||
mysql -e "GRANT ALL PRIVILEGES ON psm.* TO 'psm'@'localhost';"
|
||||
mysql -e "FLUSH PRIVILEGES;"
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
#!/usr/bin/env bash
|
||||
# check if vendor dir is existing
|
||||
DIR="/vagrant/vendor/"
|
||||
if [ -d "$DIR" ]; then
|
||||
# Take action if $DIR exists. #
|
||||
echo "vendor dir found, nothing to do..."
|
||||
else
|
||||
echo "vendor dir not found, installing dependencies..."
|
||||
cd /vagrant/ && php composer.phar install
|
||||
fi
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -18,100 +19,108 @@
|
|||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 2.1.0
|
||||
**/
|
||||
|
||||
// Include paths
|
||||
define('PSM_PATH_SRC', dirname(__FILE__) . DIRECTORY_SEPARATOR);
|
||||
define('PSM_PATH_INC', PSM_PATH_SRC . 'includes' . DIRECTORY_SEPARATOR);
|
||||
define('PSM_PATH_TPL', PSM_PATH_SRC . 'templates' . DIRECTORY_SEPARATOR);
|
||||
define('PSM_PATH_LANG', PSM_PATH_SRC . 'lang' . DIRECTORY_SEPARATOR);
|
||||
namespace {
|
||||
// Include paths
|
||||
define('PSM_PATH_SRC', __DIR__ . DIRECTORY_SEPARATOR);
|
||||
define('PSM_PATH_CONFIG', PSM_PATH_SRC . 'config' . DIRECTORY_SEPARATOR);
|
||||
define('PSM_PATH_LANG', PSM_PATH_SRC . 'lang' . DIRECTORY_SEPARATOR);
|
||||
define('PSM_PATH_SMS_GATEWAY', PSM_PATH_SRC . 'psm' . DIRECTORY_SEPARATOR . 'Txtmsg' . DIRECTORY_SEPARATOR);
|
||||
|
||||
// user levels
|
||||
define('PSM_USER_ADMIN', 10);
|
||||
define('PSM_USER_USER', 20);
|
||||
define('PSM_USER_ANONYMOUS', 30);
|
||||
// user levels
|
||||
define('PSM_USER_ADMIN', 10);
|
||||
define('PSM_USER_USER', 20);
|
||||
define('PSM_USER_ANONYMOUS', 30);
|
||||
|
||||
if(function_exists('date_default_timezone_set') && function_exists('date_default_timezone_get')) {
|
||||
date_default_timezone_set(@date_default_timezone_get());
|
||||
if (function_exists('date_default_timezone_set') && function_exists('date_default_timezone_get')) {
|
||||
date_default_timezone_set(@date_default_timezone_get());
|
||||
}
|
||||
|
||||
// find config file
|
||||
$path_conf = PSM_PATH_SRC . '../config.php';
|
||||
if (file_exists($path_conf)) {
|
||||
include_once $path_conf;
|
||||
}
|
||||
// check for a debug var
|
||||
if (!defined('PSM_DEBUG')) {
|
||||
define('PSM_DEBUG', false);
|
||||
}
|
||||
|
||||
// Debug enabled: report everything
|
||||
// Debug disabled: report error only if created manually
|
||||
ini_set('display_errors', 1);
|
||||
PSM_DEBUG ? error_reporting(E_ALL) : error_reporting(E_USER_ERROR);
|
||||
|
||||
// check for a cron allowed ip array
|
||||
if (!defined('PSM_CRON_ALLOW')) {
|
||||
//serialize for php version lower than 7.0.0
|
||||
define('PSM_CRON_ALLOW', serialize(array()));
|
||||
}
|
||||
|
||||
$vendor_autoload = PSM_PATH_SRC . '..' . DIRECTORY_SEPARATOR . 'vendor' .
|
||||
DIRECTORY_SEPARATOR . 'autoload.php';
|
||||
if (!file_exists($vendor_autoload)) {
|
||||
trigger_error(
|
||||
"No dependencies found in vendor dir. Did you install the dependencies?
|
||||
Please run \"php composer.phar install\".",
|
||||
E_USER_ERROR
|
||||
);
|
||||
}
|
||||
require_once $vendor_autoload;
|
||||
|
||||
$router = new psm\Router();
|
||||
// this may seem insignificant, but right now lots of functions
|
||||
// depend on the following global var definition:
|
||||
$db = $router->getService('db');
|
||||
|
||||
// sanity check!
|
||||
if (!defined('PSM_INSTALL') || !PSM_INSTALL) {
|
||||
if ($db->getDbHost() === null) {
|
||||
// no config file has been loaded, redirect the user to the install
|
||||
header('Location: install.php');
|
||||
die();
|
||||
}
|
||||
// config file has been loaded, check if we have a connection
|
||||
if (!$db->status()) {
|
||||
trigger_error("Unable to establish database connection...", E_USER_ERROR);
|
||||
}
|
||||
// attempt to load configuration from database
|
||||
if (!psm_load_conf()) {
|
||||
// unable to load from config table
|
||||
header('Location: install.php');
|
||||
die();
|
||||
}
|
||||
// config load OK, make sure database version is up to date
|
||||
$installer = new \psm\Util\Install\Installer($db);
|
||||
if ($installer->isUpgradeRequired()) {
|
||||
trigger_error(
|
||||
"Your database is for an older version and requires an upgrade,
|
||||
<a href=\"install.php\">please click here</a> to update your database to the latest version.",
|
||||
E_USER_ERROR
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// check for a public page var
|
||||
// This should be defined in the config
|
||||
if (!defined('PSM_PUBLIC')) {
|
||||
define('PSM_PUBLIC', false);
|
||||
}
|
||||
|
||||
// check for a public page
|
||||
// This variable is for internal use
|
||||
// and should not be changed by the user manualy
|
||||
if (!defined('PSM_PUBLIC_PAGE')) {
|
||||
define('PSM_PUBLIC_PAGE', false);
|
||||
}
|
||||
|
||||
$lang = psm_get_conf('language', 'en_US');
|
||||
psm_load_lang($lang);
|
||||
}
|
||||
|
||||
// find config file
|
||||
$path_conf = PSM_PATH_SRC . '../config.php';
|
||||
if(file_exists($path_conf)) {
|
||||
include_once $path_conf;
|
||||
}
|
||||
// check for a debug var
|
||||
if(!defined('PSM_DEBUG')) {
|
||||
define('PSM_DEBUG', false);
|
||||
}
|
||||
if(PSM_DEBUG) {
|
||||
error_reporting(E_ALL);
|
||||
ini_set('display_erors', 1);
|
||||
} else {
|
||||
error_reporting(0);
|
||||
ini_set('display_errors', 0);
|
||||
}
|
||||
|
||||
$vendor_autoload = PSM_PATH_SRC . '..' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
|
||||
if(!file_exists($vendor_autoload)) {
|
||||
die('No dependencies found in vendor dir. Did you install the dependencies? Please run "php composer.phar install".');
|
||||
}
|
||||
require_once $vendor_autoload;
|
||||
|
||||
// set autoloader, make sure to set $prepend = true so that our autoloader is called first
|
||||
spl_autoload_register(function($class) {
|
||||
// remove leading \
|
||||
$class = ltrim($class, '\\');
|
||||
$path_parts = explode('\\', $class);
|
||||
|
||||
$filename = array_pop($path_parts);
|
||||
$path = PSM_PATH_SRC . implode(DIRECTORY_SEPARATOR, $path_parts) .
|
||||
DIRECTORY_SEPARATOR .
|
||||
$filename . '.class.php'
|
||||
;
|
||||
if(file_exists($path)) {
|
||||
require_once $path;
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
// auto-find all include files
|
||||
$includes = glob(PSM_PATH_INC . '*.inc.php');
|
||||
foreach($includes as $file) {
|
||||
include_once $file;
|
||||
}
|
||||
// init db connection
|
||||
$db = new psm\Service\Database();
|
||||
|
||||
// sanity check!
|
||||
if(!defined('PSM_INSTALL') || !PSM_INSTALL) {
|
||||
if($db->getDbHost() === null) {
|
||||
// no config file has been loaded, redirect the user to the install
|
||||
header('Location: install.php');
|
||||
die();
|
||||
}
|
||||
// config file has been loaded, check if we have a connection
|
||||
if(!$db->status()) {
|
||||
die('Unable to establish database connection...');
|
||||
}
|
||||
// attempt to load configuration from database
|
||||
if(!psm_load_conf()) {
|
||||
// unable to load from config table
|
||||
header('Location: install.php');
|
||||
die();
|
||||
}
|
||||
// config load OK, make sure database version is up to date
|
||||
$installer = new \psm\Util\Install\Installer($db);
|
||||
if($installer->isUpgradeRequired()) {
|
||||
die('Your database is for an older version and requires an upgrade, <a href="install.php">please click here</a> to update your database to the latest version.');
|
||||
}
|
||||
}
|
||||
|
||||
$lang = psm_get_conf('language', 'en_US');
|
||||
psm_load_lang($lang);
|
|
@ -0,0 +1,68 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<container xmlns="http://symfony.com/schema/dic/services"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
|
||||
<parameters>
|
||||
<parameter key="config.theme" type="constant">PSM_THEME</parameter>
|
||||
|
||||
<parameter key="modules" type="collection">
|
||||
<parameter>module.config</parameter>
|
||||
<parameter>module.error</parameter>
|
||||
<parameter>module.server</parameter>
|
||||
<parameter>module.user</parameter>
|
||||
<parameter>module.install</parameter>
|
||||
</parameter>
|
||||
|
||||
<parameter key="path.src" type="constant">PSM_PATH_SRC</parameter>
|
||||
<parameter key="path.templates">%path.src%templates</parameter>
|
||||
|
||||
<parameter key="db.host" type="constant">PSM_DB_HOST</parameter>
|
||||
<parameter key="db.port" type="constant">PSM_DB_PORT</parameter>
|
||||
<parameter key="db.user" type="constant">PSM_DB_USER</parameter>
|
||||
<parameter key="db.pass" type="constant">PSM_DB_PASS</parameter>
|
||||
<parameter key="db.name" type="constant">PSM_DB_NAME</parameter>
|
||||
</parameters>
|
||||
|
||||
<services>
|
||||
<!--MODULES start-->
|
||||
<service id="module.config" class="psm\Module\Config\ConfigModule" />
|
||||
<service id="module.error" class="psm\Module\Error\ErrorModule" />
|
||||
<service id="module.server" class="psm\Module\Server\ServerModule" />
|
||||
<service id="module.user" class="psm\Module\User\UserModule" />
|
||||
<service id="module.install" class="psm\Module\Install\InstallModule" />
|
||||
<!--MODULES end-->
|
||||
|
||||
<!--SERVICES start-->
|
||||
<service id="db" class="psm\Service\Database">
|
||||
<argument>%db.host%</argument>
|
||||
<argument>%db.user%</argument>
|
||||
<argument>%db.pass%</argument>
|
||||
<argument>%db.name%</argument>
|
||||
<argument>%db.port%</argument>
|
||||
</service>
|
||||
|
||||
<service id="event" class="Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher">
|
||||
<argument type="service" id="service_container" />
|
||||
</service>
|
||||
<service id="user" class="psm\Service\User">
|
||||
<argument type="service" id="db" />
|
||||
</service>
|
||||
<service id="twig.loader" class="Twig_Loader_Filesystem">
|
||||
<argument>%path.templates%/%config.theme%</argument>
|
||||
</service>
|
||||
<service id="twig" class="Twig_Environment">
|
||||
<argument type="service" id="twig.loader" />
|
||||
</service>
|
||||
<!--SERVICES end-->
|
||||
|
||||
<!--UTIL start-->
|
||||
<service id="util.user.validator" class="psm\Util\User\UserValidator">
|
||||
<argument type="service" id="user" />
|
||||
</service>
|
||||
<service id="util.server.updatemanager" class="psm\Util\Server\UpdateManager">
|
||||
<argument type="service" id="service_container" />
|
||||
</service>
|
||||
<!--UTIL end-->
|
||||
</services>
|
||||
</container>
|
File diff suppressed because it is too large
Load Diff
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -19,7 +20,7 @@
|
|||
*
|
||||
* @package phpservermon
|
||||
* @author Anthony Ferrara <ircmaxell@php.net>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
|
@ -35,7 +36,6 @@
|
|||
*/
|
||||
|
||||
if (!defined('PASSWORD_DEFAULT')) {
|
||||
|
||||
define('PASSWORD_BCRYPT', 1);
|
||||
define('PASSWORD_DEFAULT', PASSWORD_BCRYPT);
|
||||
|
||||
|
@ -48,7 +48,8 @@ if (!defined('PASSWORD_DEFAULT')) {
|
|||
*
|
||||
* @return string|false The hashed password, or false on error.
|
||||
*/
|
||||
function password_hash($password, $algo, array $options = array()) {
|
||||
function password_hash($password, $algo, array $options = array())
|
||||
{
|
||||
if (!function_exists('crypt')) {
|
||||
trigger_error("Crypt must be loaded for password_hash to function", E_USER_WARNING);
|
||||
return null;
|
||||
|
@ -58,7 +59,8 @@ if (!defined('PASSWORD_DEFAULT')) {
|
|||
return null;
|
||||
}
|
||||
if (!is_int($algo)) {
|
||||
trigger_error("password_hash() expects parameter 2 to be long, " . gettype($algo) . " given", E_USER_WARNING);
|
||||
trigger_error("password_hash() expects parameter 2 to be long, " . gettype($algo) .
|
||||
" given", E_USER_WARNING);
|
||||
return null;
|
||||
}
|
||||
switch ($algo) {
|
||||
|
@ -68,7 +70,10 @@ if (!defined('PASSWORD_DEFAULT')) {
|
|||
if (isset($options['cost'])) {
|
||||
$cost = $options['cost'];
|
||||
if ($cost < 4 || $cost > 31) {
|
||||
trigger_error(sprintf("password_hash(): Invalid bcrypt cost parameter specified: %d", $cost), E_USER_WARNING);
|
||||
trigger_error(
|
||||
sprintf("password_hash(): Invalid bcrypt cost parameter specified: %d", $cost),
|
||||
E_USER_WARNING
|
||||
);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -79,7 +84,10 @@ if (!defined('PASSWORD_DEFAULT')) {
|
|||
$hash_format = sprintf("$2y$%02d$", $cost);
|
||||
break;
|
||||
default:
|
||||
trigger_error(sprintf("password_hash(): Unknown password hashing algorithm: %s", $algo), E_USER_WARNING);
|
||||
trigger_error(
|
||||
sprintf("password_hash(): Unknown password hashing algorithm: %s", $algo),
|
||||
E_USER_WARNING
|
||||
);
|
||||
return null;
|
||||
}
|
||||
if (isset($options['salt'])) {
|
||||
|
@ -96,6 +104,7 @@ if (!defined('PASSWORD_DEFAULT')) {
|
|||
$salt = (string) $options['salt'];
|
||||
break;
|
||||
}
|
||||
// no break
|
||||
case 'array':
|
||||
case 'resource':
|
||||
default:
|
||||
|
@ -103,7 +112,14 @@ if (!defined('PASSWORD_DEFAULT')) {
|
|||
return null;
|
||||
}
|
||||
if (strlen($salt) < $required_salt_len) {
|
||||
trigger_error(sprintf("password_hash(): Provided salt is too short: %d expecting %d", strlen($salt), $required_salt_len), E_USER_WARNING);
|
||||
trigger_error(
|
||||
sprintf(
|
||||
"password_hash(): Provided salt is too short: %d expecting %d",
|
||||
strlen($salt),
|
||||
$required_salt_len
|
||||
),
|
||||
E_USER_WARNING
|
||||
);
|
||||
return null;
|
||||
} elseif (0 == preg_match('#^[a-zA-Z0-9./]+$#D', $salt)) {
|
||||
$salt = str_replace('+', '.', base64_encode($salt));
|
||||
|
@ -176,7 +192,8 @@ if (!defined('PASSWORD_DEFAULT')) {
|
|||
*
|
||||
* @return array The array of information about the hash.
|
||||
*/
|
||||
function password_get_info($hash) {
|
||||
function password_get_info($hash)
|
||||
{
|
||||
$return = array(
|
||||
'algo' => 0,
|
||||
'algoName' => 'unknown',
|
||||
|
@ -202,7 +219,8 @@ if (!defined('PASSWORD_DEFAULT')) {
|
|||
*
|
||||
* @return boolean True if the password needs to be rehashed.
|
||||
*/
|
||||
function password_needs_rehash($hash, $algo, array $options = array()) {
|
||||
function password_needs_rehash($hash, $algo, array $options = array())
|
||||
{
|
||||
$info = password_get_info($hash);
|
||||
if ($info['algo'] != $algo) {
|
||||
return true;
|
||||
|
@ -226,7 +244,8 @@ if (!defined('PASSWORD_DEFAULT')) {
|
|||
*
|
||||
* @return boolean If the password matches the hash
|
||||
*/
|
||||
function password_verify($password, $hash) {
|
||||
function password_verify($password, $hash)
|
||||
{
|
||||
if (!function_exists('crypt')) {
|
||||
trigger_error("Crypt must be loaded for password_verify to function", E_USER_WARNING);
|
||||
return false;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -18,8 +19,8 @@
|
|||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
|
@ -29,19 +30,19 @@
|
|||
/**
|
||||
* Current PSM version
|
||||
*/
|
||||
define('PSM_VERSION', '3.1.0');
|
||||
define('PSM_VERSION', '3.6.0');
|
||||
|
||||
/**
|
||||
* URL to check for updates. Will not be checked if turned off on config page.
|
||||
* @see psm_update_available()
|
||||
*/
|
||||
define('PSM_UPDATE_URL', 'http://www.phpservermonitor.org/version.php');
|
||||
define('PSM_UPDATE_URL', 'https://api.github.com/repos/phpservermon/phpservermon/releases/latest');
|
||||
|
||||
/**
|
||||
* Default update interval (1 week). Only applicable when updates are enabled.
|
||||
* Default update interval (1 day). Only applicable when updates are enabled.
|
||||
* @see psm_update_available()
|
||||
*/
|
||||
define('PSM_UPDATE_INTERVAL', 7 * 24 * 60 * 60);
|
||||
define('PSM_UPDATE_INTERVAL', 1 * 24 * 60 * 60);
|
||||
|
||||
/**
|
||||
* Configuration for: Hashing strength
|
||||
|
@ -66,7 +67,7 @@ define('PSM_UPDATE_INTERVAL', 7 * 24 * 60 * 60);
|
|||
*
|
||||
* This constant will be used in the login and the registration class.
|
||||
*/
|
||||
define("PSM_LOGIN_HASH_COST_FACTOR", "10");
|
||||
define('PSM_LOGIN_HASH_COST_FACTOR', '10');
|
||||
|
||||
/**
|
||||
* Configuration for: Cookies
|
||||
|
@ -83,9 +84,9 @@ define("PSM_LOGIN_HASH_COST_FACTOR", "10");
|
|||
* COOKIE_DOMAIN: The domain where the cookie is valid for, like '.mydomain.com'
|
||||
* COOKIE_SECRET_KEY: Put a random value here to make your app more secure. When changed, all cookies are reset.
|
||||
*/
|
||||
define("PSM_LOGIN_COOKIE_RUNTIME", 1209600);
|
||||
define("PSM_LOGIN_COOKIE_DOMAIN", null);
|
||||
define("PSM_LOGIN_COOKIE_SECRET_KEY", "4w900de52e3ap7y77y8675jy6c594286");
|
||||
define('PSM_LOGIN_COOKIE_RUNTIME', 1209600);
|
||||
define('PSM_LOGIN_COOKIE_DOMAIN', null);
|
||||
define('PSM_LOGIN_COOKIE_SECRET_KEY', '4w900de52e3ap7y77y8675jy6c594286');
|
||||
|
||||
/**
|
||||
* Number of seconds the reset link is valid after sending it to the user.
|
||||
|
@ -93,7 +94,7 @@ define("PSM_LOGIN_COOKIE_SECRET_KEY", "4w900de52e3ap7y77y8675jy6c594286");
|
|||
define('PSM_LOGIN_RESET_RUNTIME', 3600);
|
||||
|
||||
/**
|
||||
* Number of seconds the cron is supposedly dead and we will run another cron anyway.
|
||||
* Number of seconds the cron is supposedly dead and we will run another cron anyway. Set to 0 to disable.
|
||||
*/
|
||||
define('PSM_CRON_TIMEOUT', 600);
|
||||
|
||||
|
@ -102,13 +103,42 @@ define('PSM_CRON_TIMEOUT', 600);
|
|||
*/
|
||||
define('PSM_CURL_TIMEOUT', 10);
|
||||
|
||||
|
||||
/**
|
||||
* Name of the default theme.
|
||||
*/
|
||||
define('PSM_THEME', 'default');
|
||||
|
||||
/**
|
||||
* Clone URL for the Pushover.net service.
|
||||
*/
|
||||
define('PSM_PUSHOVER_CLONE_URL', 'https://pushover.net/apps/clone/php_server_monitor');
|
||||
define('PSM_PUSHOVER_CLONE_URL', 'https://pushover.net/apps/clone/php_server_monitor');
|
||||
|
||||
/**
|
||||
* Get chat id for Telegram service.
|
||||
*/
|
||||
define('PSM_TELEGRAM_GET_ID_URL', 'https://telegram.me/cid_bot');
|
||||
|
||||
/**
|
||||
* By defining the PSM_BASE_URL, you will force the psm_build_url() to use this.
|
||||
* Useful for cronjobs if it cannot be auto-detected.
|
||||
*/
|
||||
//define('PSM_BASE_URL', null);
|
||||
|
||||
if (!defined('PSM_MODULE_DEFAULT')) {
|
||||
/**
|
||||
* Default theme
|
||||
*/
|
||||
define('PSM_THEME', 'default');
|
||||
|
||||
/**
|
||||
* Default module (if none given or invalid one)
|
||||
*/
|
||||
define('PSM_MODULE_DEFAULT', 'server_status');
|
||||
}
|
||||
|
||||
if (defined('PSM_JABBER_FORCE_TLS') === false) {
|
||||
define('PSM_JABBER_FORCE_TLS', true);
|
||||
}
|
||||
if (defined('PSM_JABBER_AUTH_TYPE') === false) {
|
||||
// possible values: PLAIN, X-OAUTH2, DIGEST-MD5, CRAM-MD5, SCRAM-SHA-1, ANONYMOUS, EXTERNAL
|
||||
define('PSM_JABBER_AUTH_TYPE', 'PLAIN'); // default just plain because of google for example :(
|
||||
}
|
||||
if (defined('PSM_JABBER_DEBUG_LEVEL') === false) {
|
||||
// possible values: ERROR, WARNING, NOTICE, INFO, DEBUG
|
||||
define('PSM_JABBER_DEBUG_LEVEL', JAXLLogger::WARNING);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -19,279 +20,350 @@
|
|||
*
|
||||
* @package phpservermon
|
||||
* @author Plamen Vasilev a.k.a Paco <p.vasileff@gmail.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Български - Bulgarian',
|
||||
'locale' => array('bg_BG.UTF-8', 'bg_BG', 'bulgarian'),
|
||||
'system' => array(
|
||||
'title' => 'Мониторинг',
|
||||
'install' => 'Инсталация',
|
||||
'action' => 'Действие',
|
||||
'save' => 'Запиши',
|
||||
'edit' => 'Редактирай',
|
||||
'delete' => 'Изтрий',
|
||||
'date' => 'Дата',
|
||||
'message' => 'Съобщение',
|
||||
'yes' => 'Да',
|
||||
'no' => 'Не',
|
||||
'insert' => 'Добавяне',
|
||||
'add_new' => 'Добави нов',
|
||||
'update_available' => 'Налична е нова версия: ({version}). Може да я свалите от <a href="http://www.phpservermonitor.org" target="_blank">тук</a>.',
|
||||
'back_to_top' => 'Нагоре',
|
||||
'go_back' => 'Назад',
|
||||
'ok' => 'Ок',
|
||||
'cancel' => 'Отказ',
|
||||
// date/time са във формат според параметъра strftime PHP функцията http://php.net/manual/function.strftime.php
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Вчера в %k:%M',
|
||||
'other_day_format' => '%A в %k:%M',
|
||||
'never' => 'Никога',
|
||||
'hours_ago' => 'преди %d часа',
|
||||
'an_hour_ago' => 'преди час',
|
||||
'minutes_ago' => 'преди %d минути',
|
||||
'a_minute_ago' => 'преди минута',
|
||||
'seconds_ago' => 'преди %d секунди',
|
||||
'a_second_ago' => 'преди секунда',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Настройки',
|
||||
'server' => 'Сървъри',
|
||||
'server_log' => 'Логове',
|
||||
'server_status' => 'Статус',
|
||||
'server_update' => 'Обнови данните',
|
||||
'user' => 'Потребители',
|
||||
'help' => 'Помощ',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Потребител',
|
||||
'name' => 'Име',
|
||||
'user_name' => 'Потребител',
|
||||
'password' => 'Парола',
|
||||
'password_repeat' => 'Повторете паролата',
|
||||
'password_leave_blank' => 'Оставете празно, за да не бъде променена паролата',
|
||||
'level' => 'Ниво на достъп',
|
||||
'level_10' => 'Администратор',
|
||||
'level_20' => 'Потребител',
|
||||
'level_description' => '<b>Администраторите</b> имат пълен достъп: могат да управляват сървърите, потребителите и да редактират глобалните настройки.<br/><b>Потребителите</b> могат само да виждат статуса на сървърите и да обнояват информацията за даден сървър, за който им е разрешен достъп.',
|
||||
'mobile' => 'Мобилен телефон',
|
||||
'email' => 'Имейл',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||
'delete_title' => 'Изтриване на потребител',
|
||||
'delete_message' => 'Сигурни ли сте, че искате да изтриете потребител \'%1\'?',
|
||||
'deleted' => 'Потребителят е изтрит успешно.',
|
||||
'updated' => 'Информацията за потребителя е обновена.',
|
||||
'inserted' => 'Потребителят е добавен.',
|
||||
'profile' => 'Профил',
|
||||
'profile_updated' => 'Профилът е обновен успешно',
|
||||
'error_user_name_bad_length' => 'Потребителското име трябва да съдържа между 2 и 64 символа',
|
||||
'error_user_name_invalid' => 'Може да съдържа само латински букви (a-z, A-Z), цифри (0-9) и долна черта (_).',
|
||||
'error_user_name_exists' => 'Вече съществува акаунт с това потребителско име.',
|
||||
'error_user_email_bad_length' => 'Имейл адреса трябва да съдържа между 5 и 255 символа.',
|
||||
'error_user_email_invalid' => 'Въведения имейл адрес е грешен.',
|
||||
'error_user_level_invalid' => 'Избраното ниво на достъп е грешно.',
|
||||
'error_user_no_match' => 'Потребителят не може да бъде намерен.',
|
||||
'error_user_password_invalid' => 'Въведената парола е грешка.',
|
||||
'error_user_password_no_match' => 'Въведените пароли не съвпадат.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Записи в лога',
|
||||
'type' => 'Тип',
|
||||
'status' => 'Статус',
|
||||
'email' => 'Имейл',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'Няма налични логове',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Сървър',
|
||||
'status' => 'Статус',
|
||||
'label' => 'Име',
|
||||
'domain' => 'Хост',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||
'port' => 'Порт',
|
||||
'type' => 'Тип',
|
||||
'type_website' => 'Сайт',
|
||||
'type_service' => 'Услуга',
|
||||
'pattern' => 'Търсене на стринг/образец',
|
||||
'pattern_description' => 'Ако този текст не е намерен в интернет страницата (когато имате добавен сайт), той ще бъде маркиран като Офлайн. Регулярните изрази са разрешени.',
|
||||
'last_check' => 'Последна проверка',
|
||||
'last_online' => 'Последно на линия',
|
||||
'monitoring' => 'Мониторинг',
|
||||
'no_monitoring' => 'Не се наблюдава',
|
||||
'email' => 'Имейл',
|
||||
'send_email' => 'Имейл',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Users',
|
||||
'delete_title' => 'Изтриване на сървър',
|
||||
'delete_message' => 'Сигурни ли сте, че искате да изтриете сървър \'%1\'?',
|
||||
'deleted' => 'Сървъра е изтрит успешно.',
|
||||
'updated' => 'Информацията за сървъра е обновена.',
|
||||
'inserted' => 'Сървърът е добавен успешно.',
|
||||
'latency' => 'Латенция',
|
||||
'latency_max' => 'Латенция (максимална)',
|
||||
'latency_min' => 'Латенция (минимална)',
|
||||
'latency_avg' => 'Латенция (средна)',
|
||||
'uptime' => 'Ъптайм',
|
||||
'year' => 'Година',
|
||||
'month' => 'Месец',
|
||||
'week' => 'Седмица',
|
||||
'day' => 'Ден',
|
||||
'hour' => 'Час',
|
||||
'warning_threshold' => 'Предупредителен праг',
|
||||
'warning_threshold_description' => 'Брой неуспешни проверки, преди сървъра или сайта да бъдат маркирани като Офлайн.',
|
||||
'chart_last_week' => 'Последната седмица',
|
||||
'chart_history' => 'История',
|
||||
// Charts формат на датата според jqPlot http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html
|
||||
'chart_day_format' => '%d.%m.%Y',
|
||||
'chart_long_date_format' => '%d.%m.%Y %H:%M:%S',
|
||||
'chart_short_date_format' => '%d.%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||
'error_server_no_match' => 'Server not found.',
|
||||
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_service' => 'The IP address is not valid.',
|
||||
'error_server_ip_bad_website' => 'The website URL is not valid.',
|
||||
'error_server_type_invalid' => 'The selected server type is invalid.',
|
||||
'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Основни настройки',
|
||||
'language' => 'Език',
|
||||
'show_update' => 'Да проверява ли за нова версия всяка седмица',
|
||||
'email_status' => 'Да се изпращат ли имейли',
|
||||
'email_from_email' => 'Имейл, от който да се изпращат съобщенията',
|
||||
'email_from_name' => 'Име на изпращача',
|
||||
'email_smtp' => 'Активиране на SMTP',
|
||||
'email_smtp_host' => 'SMTP сървър',
|
||||
'email_smtp_port' => 'SMTP порт',
|
||||
'email_smtp_username' => 'SMTP потребителско име',
|
||||
'email_smtp_password' => 'SMTP парола',
|
||||
'email_smtp_noauth' => 'Оставете празно за "без аутентикация"',
|
||||
'sms_status' => 'Да се изпращат ли SMS-и',
|
||||
'sms_gateway' => 'Портал за изпращане на SMS-и',
|
||||
'sms_gateway_mosms' => 'Mosms',
|
||||
'sms_gateway_smsit' => 'Smsit',
|
||||
'sms_gateway_mollie' => 'Mollie',
|
||||
'sms_gateway_spryng' => 'Spryng',
|
||||
'sms_gateway_inetworx' => 'Inetworx',
|
||||
'sms_gateway_clickatell' => 'Clickatell',
|
||||
'sms_gateway_textmarketer' => 'Textmarketer',
|
||||
'sms_gateway_smsglobal' => 'SMSGlobal',
|
||||
'sms_gateway_username' => 'Потребител',
|
||||
'sms_gateway_password' => 'Парола',
|
||||
'sms_from' => 'Номер на изпращача',
|
||||
'pushover_status' => 'Allow sending Pushover messages',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Before you can use Pushover, you need to <a href="%1$s" target="_blank">register an App</a> at their website and enter the App API Token here.',
|
||||
'alert_type' => 'Изберете кога желаете да получавате известия',
|
||||
'alert_type_description' => '<b>Промяна на сатуса:</b><br>'.
|
||||
'Ще получавате известие когато има промяна със връзката на даден някой от описаните сървър или сайт. От Онлайн -> Офлайн и от Офлайн -> Онлайн.<br/>'.
|
||||
'<br/><b>Офлайн</b><br>'.
|
||||
'Ще получите известие когато връзката до сървъра е изгубена за *ПЪРВИ ПЪТ*. Например, '.
|
||||
'вашия cron скрипт проверява всеки 15 минути и връзката до сървъра е изгубена в 1 часа през нощта и не работи до 6 часа сутринта '.
|
||||
'Вие ще получите едно известие в 1 часа за това<br/>'.
|
||||
'<br><b>Винаги:</b><br> '.
|
||||
'Ще получавате известие при всяка проверка на Вашия крон скрипт дори когато връзката до даден сървър или сайт е била прекъсната в продължение на часове.',
|
||||
'alert_type_status' => 'Промяна на статуса',
|
||||
'alert_type_offline' => 'Офлайн',
|
||||
'alert_type_always' => 'Винаги',
|
||||
'log_status' => 'Статус на логовете',
|
||||
'log_status_description' => 'Ако е отметнато, системата ще записва всяка промяна.',
|
||||
'log_email' => 'Да се пази ли лог на изпратените имейли от системата',
|
||||
'log_sms' => 'Да се пази ли лог на изпратените SMS съобщения от системата',
|
||||
'log_pushover' => 'Log pushover messages sent by the script',
|
||||
'updated' => 'Настройките са обновени успешно.',
|
||||
'tab_email' => 'Имейл',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Имейл настройки',
|
||||
'settings_sms' => 'SMS настройки',
|
||||
'settings_pushover' => 'Pushover settings',
|
||||
'settings_notification' => 'Настройки на известията',
|
||||
'settings_log' => 'Настройки на логовете',
|
||||
'auto_refresh' => 'Автоматично опресняване',
|
||||
'auto_refresh_servers' =>
|
||||
'Автоматично опресняване на страницата.<br/>'.
|
||||
'<span class="small">'.
|
||||
'Времето е в секунди, ако е 0 страницата няма да се обновява.'.
|
||||
'</span>',
|
||||
'seconds' => 'секунди',
|
||||
'test' => 'Тест',
|
||||
'test_email' => 'Ще бъде изпратенo тестово съобщение до имейл адреса, който сте задали в профила си.',
|
||||
'test_sms' => 'Ще бъде изпратен тестово SMS съобщение до телефонния номер, който сте задали в профила си.',
|
||||
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||
'send' => 'Изпрати',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Тестово съобщение',
|
||||
'email_sent' => 'Тестовия имейл е изпратен успешно.',
|
||||
'email_error' => 'Възникна грешка при изпращането на тесовия имейл',
|
||||
'sms_sent' => 'Тестовото SMS съобщение е изпратеното успешно.',
|
||||
'sms_error' => 'Възникна грешка при изпращането на тестовия SMS',
|
||||
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||
'pushover_sent' => 'Pushover notification sent',
|
||||
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||
'log_retention_period' => 'Log retention period',
|
||||
'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
|
||||
'log_retention_days' => 'days',
|
||||
),
|
||||
// За нов ред в имейл съобщението, моля използвайте тага <br/>
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Сървър \'%LABEL%\' е Офлайн: ip=%IP%, port=%PORT%. Greshka=%ERROR%',
|
||||
'off_email_subject' => 'Връзката до \'%LABEL%\' е ИЗГУБЕНА',
|
||||
'off_email_body' => "Неуспешно свързване:<br/><br/>Сървър: %LABEL%<br/>IP адрес: %IP%<br/>Порт: %PORT%<br/>Грешка: %ERROR%<br/>Днес: %DATE%",
|
||||
'off_pushover_title' => 'Връзката до \'%LABEL%\' е ИЗГУБЕНА',
|
||||
'off_pushover_message' => "Неуспешно свързване:<br/><br/>Сървър: %LABEL%<br/>IP адрес: %IP%<br/>Порт: %PORT%<br/>Грешка: %ERROR%<br/>Днес: %DATE%",
|
||||
'on_sms' => 'Сървър \'%LABEL%\' е Онлайн: ip=%IP%, port=%PORT%',
|
||||
'on_email_subject' => 'Връзката до \'%LABEL%\' е ВЪЗСТАНОВЕНА',
|
||||
'on_email_body' => "Връзката до '%LABEL%' беше ВЪЗСТАНОВЕНА:<br/><br/>Сървър: %LABEL%<br/>IP адрес: %IP%<br/>Порт: %PORT%<br/>Днес: %DATE%",
|
||||
'on_pushover_title' => 'Връзката до \'%LABEL%\' е ВЪЗСТАНОВЕНА',
|
||||
'on_pushover_message' => "Връзката до '%LABEL%' беше ВЪЗСТАНОВЕНА:<br/><br/>Сървър: %LABEL%<br/>IP адрес: %IP%<br/>Порт: %PORT%<br/>Днес: %DATE%",
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Добре дошъл, %user_name%',
|
||||
'title_sign_in' => 'Моля, влезте с профила си',
|
||||
'title_forgot' => 'Забравили сте паролата си?',
|
||||
'title_reset' => 'Възстановяване на паролата',
|
||||
'submit' => 'Вход',
|
||||
'remember_me' => 'Искам да остана логнат',
|
||||
'login' => 'Вход',
|
||||
'logout' => 'Изход',
|
||||
'username' => 'Потребител',
|
||||
'password' => 'Парола',
|
||||
'password_repeat' => 'Повторете паролата',
|
||||
'password_forgot' => 'Забравили сте паролата си?',
|
||||
'password_reset' => 'Възстановяване на паролата',
|
||||
'password_reset_email_subject' => 'Възстановяване на парола за PHP Сървър Мониторинг',
|
||||
'password_reset_email_body' => 'За да възстановите паролата си е нужно да кликнете на линка по-долу. Валидността на линка е един час.<br/><br/>%link%',
|
||||
'error_user_incorrect' => 'Потребителят не може да бъде намерен.',
|
||||
'error_login_incorrect' => 'Информацията е грешна.',
|
||||
'error_login_passwords_nomatch' => 'Паролите не съвпадат.',
|
||||
'error_reset_invalid_link' => 'Линкът за възстановяване на паролата не е валиден.',
|
||||
'success_password_forgot' => 'Изпратен е имейл с информация за възстановяване на паролата.',
|
||||
'success_password_reset' => 'Вашата парола е променена успешно. Моля, влезте в системата.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Unauthorized',
|
||||
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||
),
|
||||
'name' => 'Български - Bulgarian',
|
||||
'locale' => array(
|
||||
'0' => 'bg_BG.UTF-8',
|
||||
'1' => 'bg_BG',
|
||||
'2' => 'bulgarian',
|
||||
),
|
||||
'locale_tag' => 'bg',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Мониторинг',
|
||||
'install' => 'Инсталация',
|
||||
'action' => 'Действие',
|
||||
'save' => 'Запиши',
|
||||
'edit' => 'Редактирай',
|
||||
'delete' => 'Изтрий',
|
||||
'date' => 'Дата',
|
||||
'message' => 'Съобщение',
|
||||
'yes' => 'Да',
|
||||
'no' => 'Не',
|
||||
'insert' => 'Добавяне',
|
||||
'add_new' => 'Добави нов',
|
||||
'update_available' => 'Налична е нова версия: ({version}). Може да я свалите
|
||||
от <a href="https://github.com/phpservermon/phpservermon/releases/latest"
|
||||
target="_blank" rel="noopener">тук</a>.',
|
||||
'back_to_top' => 'Нагоре',
|
||||
'go_back' => 'Назад',
|
||||
'ok' => 'Ок',
|
||||
'cancel' => 'Отказ',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Вчера в %k:%M',
|
||||
'other_day_format' => '%A в %k:%M',
|
||||
'never' => 'Никога',
|
||||
'hours_ago' => 'преди %d часа',
|
||||
'an_hour_ago' => 'преди час',
|
||||
'minutes_ago' => 'преди %d минути',
|
||||
'a_minute_ago' => 'преди минута',
|
||||
'seconds_ago' => 'преди %d секунди',
|
||||
'a_second_ago' => 'преди секунда',
|
||||
'seconds' => 'секунди',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Настройки',
|
||||
'server' => 'Сървъри',
|
||||
'server_log' => 'Логове',
|
||||
'server_status' => 'Статус',
|
||||
'server_update' => 'Обнови данните',
|
||||
'user' => 'Потребители',
|
||||
'help' => 'Помощ',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Потребител',
|
||||
'name' => 'Име',
|
||||
'user_name' => 'Потребител',
|
||||
'password' => 'Парола',
|
||||
'password_repeat' => 'Повторете паролата',
|
||||
'password_leave_blank' => 'Оставете празно, за да не бъде променена
|
||||
паролата',
|
||||
'level' => 'Ниво на достъп',
|
||||
'level_10' => 'Администратор',
|
||||
'level_20' => 'Потребител',
|
||||
'level_description' => '<b>Администраторите</b> имат пълен достъп: могат
|
||||
да управляват сървърите, потребителите и да
|
||||
редактират глобалните
|
||||
настройки.<br><b>Потребителите</b> могат само да
|
||||
виждат статуса на сървърите и да обнояват
|
||||
информацията за даден сървър, за който им е
|
||||
разрешен достъп.',
|
||||
'mobile' => 'Мобилен телефон',
|
||||
'email' => 'Имейл',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover е услуга, която улеснява получаването на
|
||||
известия в реално време. Посетете <a
|
||||
href="https://pushover.net/" target="_blank">техния сайт</a> за
|
||||
повече информация.',
|
||||
'pushover_key' => 'Pushover Ключ',
|
||||
'pushover_device' => 'Pushover Устройство',
|
||||
'pushover_device_description' => 'Име на устройство, което да получава
|
||||
съобщение. Оставете празно, за изпращане
|
||||
до всички устройства.',
|
||||
'delete_title' => 'Изтриване на потребител',
|
||||
'delete_message' => 'Сигурни ли сте, че искате да изтриете потребител
|
||||
\'%1\'?',
|
||||
'deleted' => 'Потребителят е изтрит успешно.',
|
||||
'updated' => 'Информацията за потребителя е обновена.',
|
||||
'inserted' => 'Потребителят е добавен.',
|
||||
'profile' => 'Профил',
|
||||
'profile_updated' => 'Профилът е обновен успешно',
|
||||
'error_user_name_bad_length' => 'Потребителското име трябва да съдържа
|
||||
между 2 и 64 символа',
|
||||
'error_user_name_invalid' => 'Може да съдържа само латински букви (a-z, A-Z),
|
||||
цифри (0-9), точка (.) и долна черта (_).',
|
||||
'error_user_name_exists' => 'Вече съществува акаунт с това потребителско
|
||||
име.',
|
||||
'error_user_email_bad_length' => 'Имейл адреса трябва да съдържа между 5 и 255
|
||||
символа.',
|
||||
'error_user_email_invalid' => 'Въведения имейл адрес е грешен.',
|
||||
'error_user_level_invalid' => 'Избраното ниво на достъп е грешно.',
|
||||
'error_user_no_match' => 'Потребителят не може да бъде намерен.',
|
||||
'error_user_password_invalid' => 'Въведената парола е грешка.',
|
||||
'error_user_password_no_match' => 'Въведените пароли не съвпадат.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Записи в лога',
|
||||
'type' => 'Тип',
|
||||
'status' => 'Статус',
|
||||
'email' => 'Имейл',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'Няма налични логове',
|
||||
'clear' => 'Изчистване на дневника',
|
||||
'delete_title' => 'Изтриване на дневника',
|
||||
'delete_message' => 'Наистина ли искате да изтриете <b>всички</b>
|
||||
дневници?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Сървър',
|
||||
'status' => 'Статус',
|
||||
'label' => 'Име',
|
||||
'domain' => 'Хост',
|
||||
'timeout' => 'Изчакване',
|
||||
'timeout_description' => 'Брой секунди, който да изчака отговор от
|
||||
сървъра',
|
||||
'port' => 'Порт',
|
||||
'type' => 'Тип',
|
||||
'type_website' => 'Сайт',
|
||||
'type_service' => 'Услуга',
|
||||
'pattern' => 'Търсене на стринг/образец',
|
||||
'pattern_description' => 'Ако този текст не е намерен в интернет
|
||||
страницата (когато имате добавен сайт), той ще
|
||||
бъде маркиран като Офлайн. Регулярните изрази
|
||||
са разрешени.',
|
||||
'last_check' => 'Последна проверка',
|
||||
'last_online' => 'Последно на линия',
|
||||
'last_offline' => 'Last offline',
|
||||
'monitoring' => 'Мониторинг',
|
||||
'no_monitoring' => 'Не се наблюдава',
|
||||
'email' => 'Имейл',
|
||||
'send_email' => 'Имейл',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Потребители',
|
||||
'delete_title' => 'Изтриване на сървър',
|
||||
'delete_message' => 'Сигурни ли сте, че искате да изтриете сървър \'%1\'?',
|
||||
'deleted' => 'Сървъра е изтрит успешно.',
|
||||
'updated' => 'Информацията за сървъра е обновена.',
|
||||
'inserted' => 'Сървърът е добавен успешно.',
|
||||
'latency' => 'Латенция',
|
||||
'latency_max' => 'Латенция (максимална)',
|
||||
'latency_min' => 'Латенция (минимална)',
|
||||
'latency_avg' => 'Латенция (средна)',
|
||||
'uptime' => 'Ъптайм',
|
||||
'year' => 'Година',
|
||||
'month' => 'Месец',
|
||||
'week' => 'Седмица',
|
||||
'day' => 'Ден',
|
||||
'hour' => 'Час',
|
||||
'warning_threshold' => 'Предупредителен праг',
|
||||
'warning_threshold_description' => 'Брой неуспешни проверки, преди сървъра
|
||||
или сайта да бъдат маркирани като
|
||||
Офлайн.',
|
||||
'chart_last_week' => 'Последната седмица',
|
||||
'chart_history' => 'История',
|
||||
'chart_day_format' => '%d.%m.%Y',
|
||||
'chart_long_date_format' => '%d.%m.%Y %H:%M:%S',
|
||||
'chart_short_date_format' => '%d.%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS известията са изключени.',
|
||||
'warning_notifications_disabled_email' => 'Имейл известията са изключени.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover известията са изключени.',
|
||||
'error_server_no_match' => 'Сървърът не е намерен.',
|
||||
'error_server_label_bad_length' => 'Името трябва да е между 1 и 255 символа.',
|
||||
'error_server_ip_bad_length' => 'Хоста/IP адреса трябва да е между 1 и 255
|
||||
символа.',
|
||||
'error_server_ip_bad_service' => 'IP адреса е невалиден.',
|
||||
'error_server_ip_bad_website' => 'Сайта е невалиден.',
|
||||
'error_server_type_invalid' => 'Избраният тип сървър е невалиден.',
|
||||
'error_server_warning_threshold_invalid' => 'Броя неуспешни проверки, преди
|
||||
сървъра или сайта да бъдат
|
||||
маркирани като Офлайн трябва да е
|
||||
цифра по-голяма от 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Основни настройки',
|
||||
'language' => 'Език',
|
||||
'show_update' => 'Да проверява ли за нова версия всяка седмица',
|
||||
'email_status' => 'Да се изпращат ли имейли',
|
||||
'email_from_email' => 'Имейл, от който да се изпращат съобщенията',
|
||||
'email_from_name' => 'Име на изпращача',
|
||||
'email_smtp' => 'Активиране на SMTP',
|
||||
'email_smtp_host' => 'SMTP сървър',
|
||||
'email_smtp_port' => 'SMTP порт',
|
||||
'email_smtp_username' => 'SMTP потребителско име',
|
||||
'email_smtp_password' => 'SMTP парола',
|
||||
'email_smtp_noauth' => 'Оставете празно за "без аутентикация"',
|
||||
'sms_status' => 'Да се изпращат ли SMS-и',
|
||||
'sms_gateway' => 'Портал за изпращане на SMS-и',
|
||||
'sms_gateway_username' => 'Потребител',
|
||||
'sms_gateway_password' => 'Парола',
|
||||
'sms_from' => 'Номер на изпращача',
|
||||
'pushover_status' => 'Позволява изпращането на Pushover съобщения',
|
||||
'pushover_description' => 'Pushover е услуга, която улеснява получаването на
|
||||
известия в реално време. Посетете <a
|
||||
href="https://pushover.net/" target="_blank">техния сайт</a> за
|
||||
повече информация.',
|
||||
'pushover_clone_app' => 'Кликнете тук за да създаване на вашият Pushover App',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Преди да използвате Pushover, трябва да <a
|
||||
href="%1$s" target="_blank" rel="noopener">регистрирате
|
||||
свой App</a> в техния сайт и въведете вашия
|
||||
App API Token тук.',
|
||||
'alert_type' => 'Изберете кога желаете да получавате известия',
|
||||
'alert_type_description' => '<b>Промяна на сатуса:</b><br>Ще получавате
|
||||
известие когато има промяна със връзката на
|
||||
даден някой от описаните сървър или сайт. От
|
||||
Онлайн -> Офлайн и от Офлайн ->
|
||||
Онлайн.<br><br><b>Офлайн</b><br>Ще получите
|
||||
известие когато връзката до сървъра е
|
||||
изгубена за *ПЪРВИ ПЪТ*. Например, вашия cron
|
||||
скрипт проверява всеки 15 минути и връзката
|
||||
до сървъра е изгубена в 1 часа през нощта и не
|
||||
работи до 6 часа сутринта Вие ще получите
|
||||
едно известие в 1 часа за
|
||||
това<br><br><b>Винаги:</b><br> Ще получавате
|
||||
известие при всяка проверка на Вашия крон
|
||||
скрипт дори когато връзката до даден сървър
|
||||
или сайт е била прекъсната в продължение на
|
||||
часове.',
|
||||
'alert_type_status' => 'Промяна на статуса',
|
||||
'alert_type_offline' => 'Офлайн',
|
||||
'alert_type_always' => 'Винаги',
|
||||
'log_status' => 'Статус на логовете',
|
||||
'log_status_description' => 'Ако е отметнато, системата ще записва всяка
|
||||
промяна.',
|
||||
'log_email' => 'Да се пази ли лог на изпратените имейли от
|
||||
системата',
|
||||
'log_sms' => 'Да се пази ли лог на изпратените SMS съобщения от
|
||||
системата',
|
||||
'updated' => 'Настройките са обновени успешно.',
|
||||
'tab_email' => 'Имейл',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Имейл настройки',
|
||||
'settings_sms' => 'SMS настройки',
|
||||
'settings_pushover' => 'Pushover настройки',
|
||||
'settings_notification' => 'Настройки на известията',
|
||||
'settings_log' => 'Настройки на логовете',
|
||||
'auto_refresh' => 'Автоматично опресняване',
|
||||
'auto_refresh_description' => 'Автоматично опресняване на
|
||||
страницата.<br><span class="small">Времето е в
|
||||
секунди, ако е 0 страницата няма да се
|
||||
обновява.</span>',
|
||||
'seconds' => 'секунди',
|
||||
'test' => 'Тест',
|
||||
'test_email' => 'Ще бъде изпратенo тестово съобщение до имейл
|
||||
адреса, който сте задали в профила си.',
|
||||
'test_sms' => 'Ще бъде изпратен тестово SMS съобщение до телефонния
|
||||
номер, който сте задали в профила си.',
|
||||
'test_pushover' => 'Pushover известоята ще бъдат изпратени до
|
||||
потребителски ключ/устройство посочено във
|
||||
вашият профил.',
|
||||
'send' => 'Изпрати',
|
||||
'test_subject' => 'Тестово съобщение',
|
||||
'test_message' => 'Тестово съобщение изпртено от PHP Сървър
|
||||
мониторинг',
|
||||
'email_sent' => 'Тестовия имейл е изпратен успешно.',
|
||||
'email_error' => 'Възникна грешка при изпращането на тесовия имейл',
|
||||
'sms_sent' => 'Тестовото SMS съобщение е изпратеното успешно.',
|
||||
'sms_error' => 'Възникна грешка при изпращането на тестовия SMS. %s',
|
||||
'sms_error_nomobile' => 'Неуспешно изпращане на тестов SMS: не е намерен
|
||||
валиден телефонен номер във вашия профил.',
|
||||
'pushover_sent' => 'Pushover тестово известие',
|
||||
'pushover_error' => 'Възникна грешка при изпращане на тестово Pushover
|
||||
известие: %s',
|
||||
'pushover_error_noapp' => 'Unable to send test notification: не е зададен валиден Pushover
|
||||
App API token в настройките.',
|
||||
'pushover_error_nokey' => 'Unable to send test notification: не е зададен валиден Pushover
|
||||
ключ във вашия профил.',
|
||||
'log_retention_period' => 'Период на съхранение на логовете',
|
||||
'log_retention_period_description' => 'Какъв брой дни да се пазят логовете от
|
||||
известията и архиви за ъптайм на
|
||||
сървърите. Въведете 0 ако желаете
|
||||
логовете да не се трият.',
|
||||
'log_retention_days' => 'дни',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Сървър \'%LABEL%\' е Офлайн: ip=%IP%, port=%PORT%. Greshka=%ERROR%',
|
||||
'off_email_subject' => 'Връзката до \'%LABEL%\' е ИЗГУБЕНА',
|
||||
'off_email_body' => 'Неуспешно свързване:<br><br>Сървър: %LABEL%<br>IP адрес:
|
||||
%IP%<br>Порт: %PORT%<br>Грешка: %ERROR%<br>Днес: %DATE%',
|
||||
'off_pushover_title' => 'Връзката до \'%LABEL%\' е ИЗГУБЕНА',
|
||||
'off_pushover_message' => 'Неуспешно свързване:<br><br>Сървър: %LABEL%<br>IP
|
||||
адрес: %IP%<br>Порт: %PORT%<br>Грешка: %ERROR%<br>Днес: %DATE%',
|
||||
'on_sms' => 'Сървър \'%LABEL%\' е Онлайн: ip=%IP%, port=%PORT%, it was down for
|
||||
%LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'Връзката до \'%LABEL%\' е ВЪЗСТАНОВЕНА',
|
||||
'on_email_body' => 'Връзката до \'%LABEL%\' беше ВЪЗСТАНОВЕНА, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Сървър: %LABEL%<br>IP адрес: %IP%<br>Порт:
|
||||
%PORT%<br>Днес: %DATE%',
|
||||
'on_pushover_title' => 'Връзката до \'%LABEL%\' е ВЪЗСТАНОВЕНА',
|
||||
'on_pushover_message' => 'Връзката до \'%LABEL%\' беше ВЪЗСТАНОВЕНА, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Сървър: %LABEL%<br>IP адрес:
|
||||
%IP%<br>Порт: %PORT%<br>Днес: %DATE%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Добре дошъл, %user_name%',
|
||||
'title_sign_in' => 'Моля, влезте с профила си',
|
||||
'title_forgot' => 'Забравили сте паролата си?',
|
||||
'title_reset' => 'Възстановяване на паролата',
|
||||
'submit' => 'Вход',
|
||||
'remember_me' => 'Искам да остана логнат',
|
||||
'login' => 'Вход',
|
||||
'logout' => 'Изход',
|
||||
'username' => 'Потребител',
|
||||
'password' => 'Парола',
|
||||
'password_repeat' => 'Повторете паролата',
|
||||
'password_forgot' => 'Забравили сте паролата си?',
|
||||
'password_reset' => 'Възстановяване на паролата',
|
||||
'password_reset_email_subject' => 'Възстановяване на парола за PHP Сървър
|
||||
Мониторинг',
|
||||
'password_reset_email_body' => 'За да възстановите паролата си е нужно да
|
||||
кликнете на линка по-долу. Валидността на
|
||||
линка е един час.<br><br>%link%',
|
||||
'error_user_incorrect' => 'Потребителят не може да бъде намерен.',
|
||||
'error_login_incorrect' => 'Информацията е грешна.',
|
||||
'error_login_passwords_nomatch' => 'Паролите не съвпадат.',
|
||||
'error_reset_invalid_link' => 'Линкът за възстановяване на паролата не е
|
||||
валиден.',
|
||||
'success_password_forgot' => 'Изпратен е имейл с информация за
|
||||
възстановяване на паролата.',
|
||||
'success_password_reset' => 'Вашата парола е променена успешно. Моля,
|
||||
влезте в системата.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Неоторизиран достъп',
|
||||
'401_unauthorized_description' => 'Нямате нужното ниво на достъп за да
|
||||
прегледате тази страница.',
|
||||
),
|
||||
);
|
||||
|
|
|
@ -0,0 +1,457 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: v3.4.1
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Català - Catalan',
|
||||
'locale' => array(
|
||||
'0' => 'ca_ES.UTF-8',
|
||||
'1' => 'ca_ES',
|
||||
'2' => 'catalan',
|
||||
'3' => 'catalan-es',
|
||||
),
|
||||
'locale_tag' => 'ca',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Instal·lar',
|
||||
'action' => 'Acció',
|
||||
'save' => 'Desar',
|
||||
'edit' => 'Editar',
|
||||
'delete' => 'Esborrar',
|
||||
'date' => 'Data',
|
||||
'message' => 'Missatge',
|
||||
'yes' => 'Sí',
|
||||
'no' => 'No',
|
||||
'insert' => 'Inserir',
|
||||
'add_new' => 'Afegir nou',
|
||||
'update_available' => 'Hi ha disponible una nova versió ({version}) a <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">https://github.com/phpservermon</a>.',
|
||||
'back_to_top' => 'Tornar a dalt',
|
||||
'go_back' => 'Enrere',
|
||||
'ok' => 'OK',
|
||||
'bad' => 'dolent',
|
||||
'cancel' => 'Cancel·lar',
|
||||
'none' => 'Cap',
|
||||
'activate' => 'Activar',
|
||||
'short_day_format' => '%e %B',
|
||||
'long_day_format' => '%e %B %Y',
|
||||
'yesterday_format' => 'Ahir a les %k:%M',
|
||||
'other_day_format' => '%A a les %k:%M',
|
||||
'never' => 'Mai',
|
||||
'hours_ago' => 'fa %d hores',
|
||||
'an_hour_ago' => 'fa una hora',
|
||||
'minutes_ago' => 'fa %d minuts',
|
||||
'a_minute_ago' => 'fa un minut',
|
||||
'seconds_ago' => 'fa %d segons',
|
||||
'a_second_ago' => 'fa un segon',
|
||||
'year' => 'any',
|
||||
'years' => 'anys',
|
||||
'month' => 'mes',
|
||||
'months' => 'mesos',
|
||||
'day' => 'dia',
|
||||
'days' => 'dies',
|
||||
'hour' => 'hora',
|
||||
'hours' => 'hores',
|
||||
'minute' => 'minut',
|
||||
'minutes' => 'minuts',
|
||||
'second' => 'segon',
|
||||
'seconds' => 'segons',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Configuració',
|
||||
'server' => 'Servidors',
|
||||
'server_log' => 'Log',
|
||||
'server_status' => 'Estat',
|
||||
'server_update' => 'FER PING ARA',
|
||||
'user' => 'Usuaris',
|
||||
'help' => 'Ajuda',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Usuari',
|
||||
'name' => 'Nom',
|
||||
'user_name' => 'Nom d\'usuari',
|
||||
'password' => 'Contrasenya',
|
||||
'password_repeat' => 'Repetir contrasenya',
|
||||
'password_leave_blank' => 'Deixar en blanc si no es vol canviar',
|
||||
'level' => 'Nivell',
|
||||
'level_10' => 'Administrador',
|
||||
'level_20' => 'Usuari',
|
||||
'level_description' => 'Els <b>administradors</b> tenen accés complet: poden administrar servidors, usuaris i
|
||||
editar la configuració general.<br/>Els <b>usuaris</b> només poden engegar
|
||||
actualitzacions dels servidors que els han estat assignats.',
|
||||
'mobile' => 'Mòbil',
|
||||
'email' => 'Correu',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover és un servei que fa fàcil obtenir notificacions en temps real. Veieu <a
|
||||
href="https://pushover.net/" target="_blank">la seva web</a> per a més
|
||||
informació.',
|
||||
'pushover_key' => 'Clau Pushover',
|
||||
'pushover_device' => 'Dispositiu Pushover',
|
||||
'pushover_device_description' => 'Nom del dispositiu al qual enviar els missatges. Deixau en blanc per enviar
|
||||
a tots els dispositius.',
|
||||
'telegram' => 'Telegram',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> és una app de
|
||||
missatgeria que facilita el rebre notificacions en temps real. Consulteu la <a
|
||||
href="http://docs.phpservermonitor.org/" target="_blank">documentació</a> per a
|
||||
més informació i per saber com instal·lar-ho.',
|
||||
'telegram_chat_id' => 'Codi ID del xat a Telegram',
|
||||
'telegram_chat_id_description' => 'Els missatges seran enviats al xat de Telegram amb aquest ID.',
|
||||
'telegram_get_chat_id' => 'Premeu aquí per a obtenir el codi ID del vostre xat',
|
||||
'activate_telegram' => 'Activar notificacions de Telegram',
|
||||
'activate_telegram_description' => 'Permetre a Telegram enviar notificacions al xat amb aquest ID. Sense
|
||||
aquest permís, Telegram rebutjarà qualsevol missatge enviat des
|
||||
d\'aquesta aplicació.',
|
||||
'telegram_bot_username_found' => 'S\'ha trobat el bot!<br><a href="%s" target="_blank"><button class="btn
|
||||
btn-primary">Següent pas</button></a> <br>S\'obrirà un xat amb el bot. És
|
||||
necessari que premeu el botó START o escriviu el comandament /start com a
|
||||
missatge pel bot.',
|
||||
'telegram_bot_username_error_token' => '401 - No autoritzat. Assegureu-vos que el token de la API és vàlid.',
|
||||
'telegram_bot_error' => 'Ha succeït un error mentre s\'intentava activar les notificacions amb Telegram: %s',
|
||||
'delete_title' => 'Esborrar usuari',
|
||||
'delete_message' => 'Aquesta és una acció irreversible, n\'esteu segurs de voler esborrar l\'usuari \'%1\'?',
|
||||
'deleted' => 'Usuari esborrat.',
|
||||
'updated' => 'Usuari actualitzat.',
|
||||
'inserted' => 'Usuari afegit.',
|
||||
'profile' => 'Perfil',
|
||||
'profile_updated' => 'El vostre perfil ha estat actualitzat.',
|
||||
'error_user_name_bad_length' => 'El nom d\'usuari ha de tenir entre 2 i 64 caràcters.',
|
||||
'error_user_name_invalid' => 'El nom d\'usuari només pot tenir caràcters alfanumèrics (a-z, A-Z), digits
|
||||
(0-9) i guions baixos (_).',
|
||||
'error_user_name_exists' => 'Aquest nom d\'usuari ja existeix. Esculliu un altre.',
|
||||
'error_user_email_bad_length' => 'L\'adreça de correu ha de tenir entre 5 i 255 caràcters.',
|
||||
'error_user_email_invalid' => 'L\'adreça de correu no és correcta.',
|
||||
'error_user_level_invalid' => 'Aquest nivell d\'usuari no és vàlid.',
|
||||
'error_user_no_match' => 'No s\'ha trobat aquest usuari a la base de dades.',
|
||||
'error_user_password_invalid' => 'Aquesta contrasenya no és vàlida.',
|
||||
'error_user_password_no_match' => 'LEs contrasenyes no coincideixen.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Entrades del LOG',
|
||||
'type' => 'Tipus',
|
||||
'status' => 'Estat',
|
||||
'email' => 'Correu',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'telegram' => 'Telegram',
|
||||
'no_logs' => 'No generar LOGs',
|
||||
'clear' => 'Netejar LOG',
|
||||
'delete_title' => 'Esborrar LOG',
|
||||
'delete_message' => 'Voleu esborrar <b>tots</b> els LOGs?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Servidor',
|
||||
'status' => 'Estat',
|
||||
'label' => 'Etiqueta',
|
||||
'domain' => 'Domini/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Nombre de segons que cal esperar a que el servidor respongui.',
|
||||
'authentication_settings' => 'Opcions d\'autenticació (opcional)',
|
||||
'website_username' => 'Nom d\'usuari',
|
||||
'website_username_description' => 'Nom d\'usuari per accedir al portal web (només està soportada
|
||||
l\'autenticació d\'Apache).',
|
||||
'website_password' => 'Contrasenya',
|
||||
'website_password_description' => 'Contrasenya per accedir al portal web. La contrasenya es desa encriptada a
|
||||
la base de dades.',
|
||||
'fieldset_monitoring' => 'Monitorització',
|
||||
'fieldset_permissions' => 'Permisos',
|
||||
'port' => 'Port',
|
||||
'custom_port' => 'Port personalitzat',
|
||||
'popular_ports' => 'Ports populars',
|
||||
'request_method' => 'Mètode de crida',
|
||||
'custom_request_method' => 'Mètode de crida personalitzat',
|
||||
'popular_request_methods' => 'Mètodes de crida habituals',
|
||||
'post_field' => 'Camp POST',
|
||||
'post_field_description' => 'Els camps de dades que seran enviats emprant el mètode de crida de dalt.
|
||||
Exemple: param1=val1&param2=val2&...',
|
||||
'please_select' => 'Seleccioneu',
|
||||
'type' => 'Tipus',
|
||||
'type_website' => 'Website',
|
||||
'type_service' => 'Servei',
|
||||
'type_ping' => 'Ping',
|
||||
'pattern' => 'cercar cadena/patrò',
|
||||
'pattern_description' => 'Si aquest patró no es troba al lloc web, el servidor es marcarà fora de línia. Es
|
||||
permeten expressions regulars.',
|
||||
'pattern_online' => 'El patró indica que el website és',
|
||||
'pattern_online_description' => 'En línia: si aquest patró es pot trobar en la resposta del servidor, el
|
||||
servidor serà marcat com en línia. Fóra de línia: si aquest patró no es
|
||||
pot trobar en la resposta del servidor, aquest serà marcat fóra de línia.',
|
||||
'redirect_check' => 'El redireccionament cap a un altre domini és',
|
||||
'redirect_check_description' => 'El redireccionament cap a un altre domini habitualment és un mal senyal.',
|
||||
'allow_http_status' => 'Permetre codi d\'estat HTTP',
|
||||
'allow_http_status_description' => 'Marcar el website com en línia. Els codis d\'estat HTTP inferiors a 400
|
||||
són marcats com en línia per defecte. Empreu el símbol | per separar
|
||||
més d\'un estat. Exemple: 401|403.',
|
||||
'header_name_description' => 'Nom de la capçalera (sensible a majúscules)',
|
||||
'header_value_description' => 'Valor de la capçalera. Es permeten expressions regulars.',
|
||||
'last_check' => 'Darrera comprovació',
|
||||
'last_online' => 'Darrer cop en línia',
|
||||
'last_offline' => 'Darrer cop fóra de línia',
|
||||
'last_output' => 'Darrera sortida positiva',
|
||||
'last_error' => 'Darrer error',
|
||||
'last_error_output' => 'Darrera sortida amb error',
|
||||
'monitoring' => 'Monitorització',
|
||||
'no_monitoring' => 'Sense monitorització',
|
||||
'email' => 'Correu',
|
||||
'send_email' => 'Enviar correu',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Enviar SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'send_pushover' => 'Enviar notificació per Pushover',
|
||||
'telegram' => 'Telegram',
|
||||
'send_telegram' => 'Enviar notificació per Telegram',
|
||||
'users' => 'Usuaris',
|
||||
'delete_title' => 'Esborrar servidor',
|
||||
'delete_message' => 'Esteu segurs de que voleu esborrar el servidor \'%1\'?',
|
||||
'deleted' => 'Servidor esborrat.',
|
||||
'updated' => 'Servidor actualitzat.',
|
||||
'inserted' => 'Servidor afegit.',
|
||||
'latency' => 'Latència',
|
||||
'latency_max' => 'Latència (màxima)',
|
||||
'latency_min' => 'Latència (mínima)',
|
||||
'latency_avg' => 'Latència (mitjana)',
|
||||
'uptime' => 'Temps actiu',
|
||||
'year' => 'Any',
|
||||
'month' => 'Mes',
|
||||
'week' => 'Setmana',
|
||||
'day' => 'Dia',
|
||||
'hour' => 'Hora',
|
||||
'warning_threshold' => 'Llindar \'advertència',
|
||||
'warning_threshold_description' => 'Nombre de comprovacions fallides necessàries abans de considerar el
|
||||
servidor fóra de línia.',
|
||||
'chart_last_week' => 'Darrera setmana',
|
||||
'chart_history' => 'Historial',
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%d/%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'Les notificacions per SMS estan deshabilitades.',
|
||||
'warning_notifications_disabled_email' => 'Les notificacions per correu estan deshabilitades.',
|
||||
'warning_notifications_disabled_pushover' => 'Les notificacions per Pushover estan deshabilitades.',
|
||||
'warning_notifications_disabled_telegram' => 'Les notificacions per Telegram estan deshabilitades.',
|
||||
'error_server_no_match' => 'No s\'ha trobat el servidor.',
|
||||
'error_server_label_bad_length' => 'L\'etiqueta ha de tenir entre 1 i 255 caràcters.',
|
||||
'error_server_ip_bad_length' => 'El nom de domini o IP ha de tenir entre 1 i 255 caràcters.',
|
||||
'error_server_ip_bad_service' => 'L\'adreça IP no és vàlida',
|
||||
'error_server_ip_bad_website' => 'L\'adreça URL del lloc web no és vàlida.',
|
||||
'error_server_type_invalid' => 'El tipus de servidor escollit no és vàlid.',
|
||||
'error_server_warning_threshold_invalid' => 'El llindar d\'advertència ha de ser un valor sencer positiu.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'General',
|
||||
'language' => 'Idioma',
|
||||
'show_update' => 'Comprovar actualitzacions?',
|
||||
'password_encrypt_key' => 'La clau per xifrar contrasenyes',
|
||||
'password_encrypt_key_note' => 'Aquesta és la clau emprada per xifrar les contrasenyes que són
|
||||
emmagatzemades als servidors per accedir als llocs web. Si la clau canviés la
|
||||
contrasenya guardada no seria vàlida!',
|
||||
'proxy' => 'Habilitar proxy',
|
||||
'proxy_url' => 'URL del proxy',
|
||||
'proxy_user' => 'Usuari del proxy',
|
||||
'proxy_password' => 'Contrasenya del proxy',
|
||||
'email_status' => 'Permetre l\'enviament de correus',
|
||||
'email_from_email' => 'Adreça del remitent',
|
||||
'email_from_name' => 'Nom del remitent',
|
||||
'email_smtp' => 'Habilitar SMTP',
|
||||
'email_smtp_host' => 'Servidor SMTP',
|
||||
'email_smtp_port' => 'Port SMTP',
|
||||
'email_smtp_security' => 'Seguretat SMTP',
|
||||
'email_smtp_security_none' => 'Cap',
|
||||
'email_smtp_username' => 'Usuari SMTP',
|
||||
'email_smtp_password' => 'Contrasenya SMTP',
|
||||
'email_smtp_noauth' => 'Deixar en blanc si no cal autenticació',
|
||||
'sms_status' => 'Permetre l\'enviament de missatges de text',
|
||||
'sms_gateway' => 'Servei \'Gateway\' per l\'enviament de SMS',
|
||||
'sms_gateway_username' => 'Usuari del Gateway',
|
||||
'sms_gateway_password' => 'Contrasenya del Gateway',
|
||||
'sms_from' => 'Numero de telèfon de qui envia',
|
||||
'pushover_status' => 'Permetre l\'enviament de missatges per Pushover',
|
||||
'pushover_description' => 'Pushover és un servei que facilita la recepció de notificacions en temps real.
|
||||
Veieu <a href=\'https://pushover.net/\'>la serv web</a> per a més informació.',
|
||||
'pushover_clone_app' => 'premeu aquí per a crear la vostra app Pushover',
|
||||
'pushover_api_token' => 'Token de la API de la App Pushover',
|
||||
'pushover_api_token_description' => 'Abans de poder emprar Pushover necessiteu <a href="%1$s"
|
||||
target="_blank">registrar una app</a> al seu portal web i introduïr
|
||||
aquí el Token de la API.',
|
||||
'telegram_status' => 'Permetre l\'enviament de missatges per Telegram',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> és una app de xat
|
||||
(mòbil i PC) que facilita la recepció de notificacions en temps real. Veieu la <a
|
||||
href="http://docs.phpservermonitor.org/" target="_blank">documentació</a> per
|
||||
saber més i saber com activar-ho.',
|
||||
'telegram_api_token' => 'Token de l\'API de Telegram',
|
||||
'telegram_api_token_description' => 'Abans de poder emprar Telegram necessiteu obtenir un token de l\'API.
|
||||
Consulteu la <a href="http://docs.phpservermonitor.org/"
|
||||
target="_blank">documentació</a> per saber més.',
|
||||
'alert_type' => 'Seleccioneu quan voleu ser notificats.',
|
||||
'alert_type_description' => '<b>Canvi d\'estat:</b> Rebreu una notificació quan un servidor tingui un canvi
|
||||
d\'estat. És a dir, passi d\'estar en línia a fora de línia o viceversa.<br
|
||||
/><br /><b>Fora de línia:</b> Rebreu una notificació només *EL PRIMER COP* que
|
||||
un servidor passa a estar fora de línia. Per exemple, la vostra aplicació
|
||||
s\'executa cada 15 minuts i el servidor esdevé fora de línia a la una de la
|
||||
matinada i es queda així fins les sis. llavors rebríeu només una notificació.
|
||||
No se us aviasarà quan torni a ser en línia.<br /><br><b>Sempre:</b> Rebreu una
|
||||
notificació *CADA COP* que l\'aplicació detecti que el servidor és fora de
|
||||
línia, fins que torni a estar en línia.',
|
||||
'alert_type_status' => 'Canvi \'estat',
|
||||
'alert_type_offline' => 'Fora de línia',
|
||||
'alert_type_always' => 'Sempre',
|
||||
'combine_notifications' => 'Combinar notificacions',
|
||||
'combine_notifications_description' => 'Redueix el nombre de notificacions en combinar-les en una de sola.
|
||||
(Això no afecta a les notificacions per SMS.)',
|
||||
'alert_proxy' => 'Encara que s\'habiliti, el proxy no és emprat mai per als serveis',
|
||||
'alert_proxy_url' => '<b>Format:</b> Servidor:Port',
|
||||
'log_status' => 'LOG d\'estat',
|
||||
'log_status_description' => 'Si el LOG d\'estat es configura a SÍ, l\'aplicació enregistrarà aquells events
|
||||
que disparin les notificacions.',
|
||||
'log_email' => 'Enregistrar els correus enviats per l\'aplicació',
|
||||
'log_sms' => 'Enregistrar els SMS enviats per l\'aplicació',
|
||||
'log_pushover' => 'Enregistrar els missatges enviats a Pushover per l\'aplicació',
|
||||
'log_telegram' => 'Enregistrar els missatges enviats a Telegram per l\'aplicació',
|
||||
'updated' => 'S\'ha actualitzat la configuració',
|
||||
'tab_email' => 'Correu',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'tab_telegram' => 'Telegram',
|
||||
'settings_email' => 'Preferències de correu',
|
||||
'settings_sms' => 'Preferències de SMS',
|
||||
'settings_pushover' => 'Preferències de Pushover',
|
||||
'settings_telegram' => 'Preferències de Telegram',
|
||||
'settings_notification' => 'Preferències de notificacions',
|
||||
'settings_log' => 'Preferències de LOG',
|
||||
'settings_proxy' => 'Preferències de Proxy',
|
||||
'auto_refresh' => 'Auto-recàrrega',
|
||||
'auto_refresh_description' => 'Recarregar automàticament la plana Servidors.<br/><span class="small">Temps en
|
||||
segons, si poseu ZERO la plana no s\'auto-recarregarà.</span>',
|
||||
'test' => 'Provar',
|
||||
'test_email' => 'S\'enviarà un correu a l\'adreça que teniu al vostre perfil d\'usuari.',
|
||||
'test_sms' => 'S\'enviarà un SMS al telèfon que teniu al vostre perfil d\'usuari.',
|
||||
'test_pushover' => 'S\'enviarà una notificació per Pushover a la clau d\'usuari/dispositiu que teniu al
|
||||
vostre perfil d\'usuari.',
|
||||
'test_telegram' => 'S\'enviarà una notificació per Telegram al xat amb l\'ID que teniu al vostre perfil
|
||||
d\'usuari.',
|
||||
'send' => 'Enviar',
|
||||
'test_subject' => 'Provar',
|
||||
'test_message' => 'Missatge de prova',
|
||||
'email_sent' => 'Correu enviat',
|
||||
'email_error' => 'Hi ha hagut un error provant d\'enviar el correu',
|
||||
'sms_sent' => 'Sms enviat',
|
||||
'sms_error' => 'Hi ha hagut un error provant d\'enviar el SMS',
|
||||
'sms_error_nomobile' => 'No ha estat posible enviar el SMS de prova: no s\'ha trobat un telèfon vàlid al
|
||||
vostre perfil d\'usuari.',
|
||||
'pushover_sent' => 'Notificació enviada per Pushover',
|
||||
'pushover_error' => 'Ha succeït un error provant d\'enviar la notificació Pushover: %s',
|
||||
'pushover_error_noapp' => 'No ha estat posible enviar la notificació de prova: no s\'ha trobat cap token
|
||||
d\'API d\'una App Pushover a la configuració general.',
|
||||
'pushover_error_nokey' => 'No ha estat posible enviar la notificació de prova: no s\'ha trobat cap clau
|
||||
Pushover al vostre perfil d\'usuari.',
|
||||
'telegram_sent' => 'Notificació enviada per Telegram',
|
||||
'telegram_error' => 'Ha succeït un error provant d\'enviar la notificació per Telegram: %s',
|
||||
'telegram_error_notoken' => 'No ha estat posible enviar la notificació de prova: no s\'ha trobat cap token
|
||||
d\'API de Telegram a la configuració general.',
|
||||
'telegram_error_noid' => 'No ha estat posible enviar la notificació de prova: no s\'ha trobat cap codi ID de
|
||||
xat al vostre perfil d\'usuari.',
|
||||
'log_retention_period' => 'Període de retenció al LOG',
|
||||
'log_retention_period_description' => 'Nombre de dies a conservar al LOG les notificacions i informació sobre
|
||||
l\'activitat dels servidors. Poseu 0 per evitar que el LOG es buidi
|
||||
mai.',
|
||||
'log_retention_days' => 'dies',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'El servidor \'%LABEL%\' NO RESPON: IP=%IP%, Port=%PORT%. Error=%ERROR%',
|
||||
'off_email_subject' => 'IMPORTANT: El servidor \'%LABEL%\' NO RESPON',
|
||||
'off_email_body' => 'Ha fallat la connexió amb aquest servidor:<br/><br/>Servidor: %LABEL%<br/>IP:
|
||||
%IP%<br/>Port: %PORT%<br/>Error: %ERROR%<br/>Data: %DATE%',
|
||||
'off_pushover_title' => 'El servidor \'%LABEL%\' NO RESPON',
|
||||
'off_pushover_message' => 'Ha fallat la connexió amb aquest servidor:<br/><br/>Servidor: %LABEL%<br/>IP:
|
||||
%IP%<br/>Port: %PORT%<br/>Error: %ERROR%<br/>Data: %DATE%',
|
||||
'off_telegram_message' => 'Ha fallat la connexió amb aquest servidor:<br/><br/>Servidor: %LABEL%<br/>IP:
|
||||
%IP%<br/>Port: %PORT%<br/>Error: %ERROR%<br/>Data: %DATE%',
|
||||
'on_sms' => 'El servidor \'%LABEL%\' TORNA A FUNCIONAR: ip=%IP%, port=%PORT%, temps
|
||||
caigut=%LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'IMPORTANT: el servidor \'%LABEL%\' TORNA A FUNCIONAR',
|
||||
'on_email_body' => 'El servidor \'%LABEL%\' TORNA A FUNCIONAR:<br/><br/>Servidor: %LABEL%<br/>IP:
|
||||
%IP%<br/>Port: %PORT%<br/>Data: %DATE%<br/>Temps fóra de línia: %LAST_OFFLINE_DURATION%',
|
||||
'on_pushover_title' => 'El servidor \'%LABEL%\' TORNA A FUNCIONAR',
|
||||
'on_pushover_message' => 'El servidor \'%LABEL%\' TORNA A FUNCIONAR:<br/><br/>Servidor: %LABEL%<br/>IP:
|
||||
%IP%<br/>Port: %PORT%<br/>Data: %DATE%<br/>Temps fóra de línia:
|
||||
%LAST_OFFLINE_DURATION%',
|
||||
'on_telegram_message' => 'El servidor \'%LABEL%\' TORNA A FUNCIONAR:<br/><br/>Servidor: %LABEL%<br/>IP:
|
||||
%IP%<br/>Port: %PORT%<br/>Data: %DATE%<br/>Temps fóra de línia:
|
||||
%LAST_OFFLINE_DURATION%',
|
||||
'combi_off_email_message' => '<ul><li>Servidor: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Error:
|
||||
%ERROR%</li><li>Data: %DATE%</li></ul>',
|
||||
'combi_off_pushover_message' => '<ul><li>Servidor: %LABEL%</li><li>IP: %IP%</li><li>Port:
|
||||
%PORT%</li><li>Error: %ERROR%</li><li>Data: %DATE%</li></ul>',
|
||||
'combi_off_telegram_message' => '- Servidor: %LABEL%<br/>- IP: %IP%<br/>- Port: %PORT%<br/>- Error:
|
||||
%ERROR%<br/>- Data: %DATE%<br/><br/>',
|
||||
'combi_on_email_message' => '<ul><li>Servidor: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Data:
|
||||
%DATE%</li><li>Temps fóra de línia: %LAST_OFFLINE_DURATION%</li></ul>',
|
||||
'combi_on_pushover_message' => '<ul><li>Servidor: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Data:
|
||||
%DATE%</li><li>Temps fóra de línia: %LAST_OFFLINE_DURATION%</li></ul>',
|
||||
'combi_on_telegram_message' => '- Servidor: %LABEL%<br/>- IP: %IP%<br/>- Port: %PORT%<br/>- Data: %DATE%<br/>-
|
||||
Temps fóra de línia: %LAST_OFFLINE_DURATION%<br/><br/>',
|
||||
'combi_email_subject' => 'IMPORTANT: els servidors \'%UP%\' TORNEN A FUNCIONAR, els servidors \'%DOWN%\' NO
|
||||
RESPONEN',
|
||||
'combi_pushover_subject' => 'Els servidors \'%UP%\' TORNEN A FUNCIONAR, els servidors \'%DOWN%\' NO RESPONEN',
|
||||
'combi_email_message' => '<b>Aquests servidors NO RESPONEN:</b><br/>%DOWN_SERVERS%<br/><b>Aquests servidors
|
||||
TORNEN A FUNCIONAR:</b><br/>%UP_SERVERS%',
|
||||
'combi_pushover_message' => '<b>Aquests servidors NO RESPONEN:</b><br/>%DOWN_SERVERS%<br/><b>Aquests servidors
|
||||
TORNEN A FUNCIONAR:</b><br/>%UP_SERVERS%',
|
||||
'combi_telegram_message' => '<b>Aquests servidors NO RESPONEN:</b><br/>%DOWN_SERVERS%<br/><b>Aquests servidors
|
||||
TORNEN A FUNCIONAR:</b><br/>%UP_SERVERS%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Benvingut(a), %user_name%',
|
||||
'title_sign_in' => 'Credencials d\'accés',
|
||||
'title_forgot' => 'Heu oblidat la contrasenya?',
|
||||
'title_reset' => 'Restablir la contrasenya',
|
||||
'submit' => 'Enviar',
|
||||
'remember_me' => 'Recorda\'m',
|
||||
'login' => 'Accedir',
|
||||
'logout' => 'Tancar sessió',
|
||||
'username' => 'Usuari',
|
||||
'password' => 'Contrasenya',
|
||||
'password_repeat' => 'Repetir contrasenya',
|
||||
'password_forgot' => 'Heu oblidat la contrasenya?',
|
||||
'password_reset' => 'Restablir la contrasenya',
|
||||
'password_reset_email_subject' => 'Restablir la vostra contrasenya per accedir a PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Empreu el següent enllaç per restablir la vostra contrasenya. Tingueu en
|
||||
compte que expira en 1 hora.<br/><br/>%link%',
|
||||
'error_user_incorrect' => 'No s\'ha trobat l\'usuari especificat.',
|
||||
'error_login_incorrect' => 'Aquestes credencials no són vàlides.',
|
||||
'error_login_passwords_nomatch' => 'Les dues contrasenyes no coincideixen.',
|
||||
'error_reset_invalid_link' => 'L\'enllaç per restablir la contrasenya no és vàlid.',
|
||||
'success_password_forgot' => 'Se us ha enviat un correu amb informació per restablir la vostra contrasenya.',
|
||||
'success_password_reset' => 'La vostra contrasenya s\'ha restablert amb èxit. Ja podeu entrar.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'No-autoritzat',
|
||||
'401_unauthorized_description' => 'No teniu els privilegis per veure aquesta plana o potser la vostra sessió
|
||||
ha expirat.',
|
||||
),
|
||||
);
|
|
@ -0,0 +1,335 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Simon Berka <berka@berkasimon.com>
|
||||
* @author Pavel Laupe Dvorak <pavel@pavel-dvorak.cz>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Česky - Czech',
|
||||
'locale' => array(
|
||||
'0' => 'cs_CZ.UTF-8',
|
||||
'1' => 'cs_CZ',
|
||||
'2' => 'czech',
|
||||
'3' => 'czech',
|
||||
),
|
||||
'locale_tag' => 'cs',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Instalace',
|
||||
'action' => 'Akce',
|
||||
'save' => 'Uložit',
|
||||
'edit' => 'Upravit',
|
||||
'delete' => 'Smazat',
|
||||
'date' => 'Datum',
|
||||
'message' => 'Zpráva',
|
||||
'yes' => 'Ano',
|
||||
'no' => 'Ne',
|
||||
'insert' => 'Vložit',
|
||||
'add_new' => 'Přidat',
|
||||
'update_available' => 'Nová verze - ({version}) je dostupná na <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Zpět na začátek',
|
||||
'go_back' => 'Zpět',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Zrušit',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Včera v %k:%M',
|
||||
'other_day_format' => '%A v %k:%M',
|
||||
'never' => 'Nikdy',
|
||||
'hours_ago' => 'před %d hodinami',
|
||||
'an_hour_ago' => 'cca před hodinou',
|
||||
'minutes_ago' => 'před %d minutami',
|
||||
'a_minute_ago' => 'cca před minutou',
|
||||
'seconds_ago' => 'před %d vteřinami',
|
||||
'a_second_ago' => 'před chvílí',
|
||||
'seconds' => 'sekunder',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Konfigurace',
|
||||
'server' => 'Servery',
|
||||
'server_log' => 'Log',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => 'Aktualizace',
|
||||
'user' => 'Uživatelé',
|
||||
'help' => 'Nápověda',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Uživatel',
|
||||
'name' => 'Jméno',
|
||||
'user_name' => 'Uživatelské jméno',
|
||||
'password' => 'Heslo',
|
||||
'password_repeat' => 'Stejné heslo (pro kontrolu)',
|
||||
'password_leave_blank' => 'Ponechte prázdné pro ponechání beze změn.',
|
||||
'level' => 'Oprávnění',
|
||||
'level_10' => 'Administrátor',
|
||||
'level_20' => 'Uživatel',
|
||||
'level_description' => '<b>Administrátor</b> má plný přístup: může spravovat servery, uživatele a
|
||||
upravit globální konfiguraci.<br><b>Uživatel</b> má práva pouze na čtení a
|
||||
spustit aktualizaci serverů, které má přiřazeny.',
|
||||
'mobile' => 'Mobil',
|
||||
'email' => 'E-mail',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover je služba umožňující jednoduše zasílat real-time upozornění.
|
||||
Více na <a href="https://pushover.net/" target="_blank">webu Pushover</a>',
|
||||
'pushover_key' => 'Pushover Token',
|
||||
'pushover_device' => 'Pushover Zařízení',
|
||||
'pushover_device_description' => 'Název zařízení, na které má být zráva odeslána. Ponechte prázdné
|
||||
pro odeslání na všechna zařízení.',
|
||||
'delete_title' => 'Smazat uživatele',
|
||||
'delete_message' => 'Opravdu smazat uživatele \'%1\'?',
|
||||
'deleted' => 'Uživatel smazán.',
|
||||
'updated' => 'Uživatel aktualizován.',
|
||||
'inserted' => 'Uživatel přidán.',
|
||||
'profile' => 'Profil',
|
||||
'profile_updated' => 'Váš uživatelský profil byl upraven.',
|
||||
'error_user_name_bad_length' => 'Uživatelské jméno musí obsahovat 2 až 64 znaků.',
|
||||
'error_user_name_invalid' => 'Uživatelské jméno může obsahovat pouze písmena (a-z, A-Z), čísla (0-9),
|
||||
tečky (.) a podtržítka (_).',
|
||||
'error_user_name_exists' => 'Zadané uživatelské jméno již existuje v databázi.',
|
||||
'error_user_email_bad_length' => 'E-mailová adresa musí obsahovat 5 až 255 znaků .',
|
||||
'error_user_email_invalid' => 'E-mailová adresa je neplatná',
|
||||
'error_user_level_invalid' => 'Zadané oprávnění je neplatné.',
|
||||
'error_user_no_match' => 'Uživatel nebyl nalezen.',
|
||||
'error_user_password_invalid' => 'Zadané heslo je neplatné.',
|
||||
'error_user_password_no_match' => 'Zadaná hesla neodpovídají.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Záznamy logu',
|
||||
'type' => 'Typ',
|
||||
'status' => 'Stav',
|
||||
'email' => 'E-mail',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'Žádné záznamy',
|
||||
'clear' => 'Jasný protokol',
|
||||
'delete_title' => 'Odstranit protokol',
|
||||
'delete_message' => 'Opravdu chcete odstranit protokoly <b>všechny</b>?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Server',
|
||||
'status' => 'Stav',
|
||||
'label' => 'Popis',
|
||||
'domain' => 'Doména/IP',
|
||||
'timeout' => 'Časový limit',
|
||||
'timeout_description' => 'Počet vteřin čekání na odpověď serveru.',
|
||||
'authentication_settings' => 'Nastavení autentizace',
|
||||
'optional' => 'volitelný',
|
||||
'website_username' => 'Uživatelské jméno',
|
||||
'website_username_description' => 'Uživatelské jméno pro přístup na stránku. (Pouze Apache autorizace je
|
||||
podporovaná.)',
|
||||
'website_password' => 'Heslo',
|
||||
'website_password_description' => 'Heslo pro přístup na stránku. Heslo je v databázi šifrované.',
|
||||
'fieldset_monitoring' => 'Monitoring',
|
||||
'fieldset_permissions' => 'Oprávnění',
|
||||
'port' => 'Port',
|
||||
'custom_port' => 'Uživatelský Port',
|
||||
'popular_ports' => 'Populární Porty',
|
||||
'please_select' => 'Prosím vyberte',
|
||||
'type' => 'Typ',
|
||||
'type_website' => 'Web',
|
||||
'type_service' => 'Služba',
|
||||
'pattern' => 'Vyhledat řetězec/vzorek',
|
||||
'pattern_description' => 'Pokud vzorek nebude na webu nalezen, bude server označen jako offline. Regulární
|
||||
výrazy jsou povoleny.',
|
||||
'last_check' => 'Poslední kontrola',
|
||||
'last_online' => 'Naposledy online',
|
||||
'last_offline' => 'Naposledy offline',
|
||||
'monitoring' => 'Monitoring',
|
||||
'no_monitoring' => 'Žádné monitorované služby',
|
||||
'email' => 'E-mail',
|
||||
'send_email' => 'Odeslat e-mail',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Odeslat SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Uživatelé',
|
||||
'delete_title' => 'Smazat server',
|
||||
'delete_message' => 'Opravdu si přejete smazat \'%1\'?',
|
||||
'deleted' => 'Server smazán.',
|
||||
'updated' => 'Server aktualizován.',
|
||||
'inserted' => 'Server přidán.',
|
||||
'latency' => 'Latence',
|
||||
'latency_max' => 'Latence (maximum)',
|
||||
'latency_min' => 'Latence (minimum)',
|
||||
'latency_avg' => 'Latence (průměr)',
|
||||
'uptime' => 'Uptime',
|
||||
'year' => 'Rok',
|
||||
'month' => 'Měsíc',
|
||||
'week' => 'Týden',
|
||||
'day' => 'Den',
|
||||
'hour' => 'Hodina',
|
||||
'warning_threshold' => 'Stropní hranice varování',
|
||||
'warning_threshold_description' => 'Počet neúspěšných pokusů před označením serveru jako offline.',
|
||||
'chart_last_week' => 'Minulý týden',
|
||||
'chart_history' => 'Historie',
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS upozornění jsou vypnuta.',
|
||||
'warning_notifications_disabled_email' => 'E-mailová upozornění jsou vypnuta.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover upozornění jsou vypnuta.',
|
||||
'error_server_no_match' => 'Server nenalezen.',
|
||||
'error_server_label_bad_length' => 'Popisek musí obsahovat 1 až 255 znaků.',
|
||||
'error_server_ip_bad_length' => 'Doména/IP adresa musí obsahovat 1 až 255 znaků.',
|
||||
'error_server_ip_bad_service' => 'IP adresa není platná.',
|
||||
'error_server_ip_bad_website' => 'URL webu není platná.',
|
||||
'error_server_type_invalid' => 'Zvolený typ serveru není platný',
|
||||
'error_server_warning_threshold_invalid' => 'Hranice varování musí být číslo větší než 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Obecné',
|
||||
'language' => 'Jazyk',
|
||||
'show_update' => 'Kontrolovat aktualizace?',
|
||||
'password_encrypt_key' => 'Šifrovací klíč pro hesla',
|
||||
'password_encrypt_key_note' => 'Tímto klíčem se šifrují hesla, která se ukládají u serverů pro
|
||||
přístup na webové stránky. Pokud klíč změníte budou uložená hesla
|
||||
neplatná!',
|
||||
'email_status' => 'Povolit odesílání e-mailu',
|
||||
'email_from_email' => 'E-mailová adresa odesilatele',
|
||||
'email_from_name' => 'Jméno odesilatele',
|
||||
'email_smtp' => 'Zapnout SMTP',
|
||||
'email_smtp_host' => 'SMTP adresa',
|
||||
'email_smtp_port' => 'SMTP port',
|
||||
'email_smtp_security' => 'SMTP zabezpečení',
|
||||
'email_smtp_security_none' => 'žádné',
|
||||
'email_smtp_username' => 'SMTP uživatelské jméno',
|
||||
'email_smtp_password' => 'SMTP heslo',
|
||||
'email_smtp_noauth' => 'Ponechte prázdné pro použití SMTP bez hesla',
|
||||
'sms_status' => 'Povolit odesílání textových zpráv',
|
||||
'sms_gateway' => 'Brána použitá pro odesílání zpráv',
|
||||
'sms_gateway_username' => 'Uživatelské jméno brány',
|
||||
'sms_gateway_password' => 'Heslo brány',
|
||||
'sms_from' => 'Telefonní číslo odesilatele',
|
||||
'pushover_status' => 'Povolit zasílání Pushover zpráv',
|
||||
'pushover_description' => 'Pushover je služba umožňující jednoduše zasílat real-time upozornění.
|
||||
Více na <a href="https://pushover.net/" target="_blank">webu Pushover</a>',
|
||||
'pushover_clone_app' => 'Klikněte pro vytvoření Pushover aplikace',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Pře použitím Pushoveru se musíte <a href="%1$s" target="_blank"
|
||||
rel="noopener">registrovat</a> a získat API Token.',
|
||||
'alert_type' => 'Zvolte kdy si přejete být upozorněni.',
|
||||
'alert_type_description' => '<b>Změna stavu:</b> Obdržíte upozornění při změně stavu, tedy:online ->
|
||||
offline nebo offline -> online.<br><br /><b>Offline:</b> Obdržíte upozornění,
|
||||
kdy server přejde poprvé do offline stavu. Například, pokud je cron nastaven
|
||||
na 15 minut a sledovaný server bude offline mezi 01:00 a 06:00. Obdržíte
|
||||
upozornění pouze v 01:00. <br><br><b>Vždy:</b> Obdržíte upozornění při
|
||||
každém spuštění kontroly, tedy i pokud bude server offline několik hodin.',
|
||||
'alert_type_status' => 'Změna stavu',
|
||||
'alert_type_offline' => 'Offline',
|
||||
'alert_type_always' => 'Vždy',
|
||||
'log_status' => 'Log',
|
||||
'log_status_description' => 'Pokud je Log nastaven na hodnotu TRUE, systém do něj zapíše veškerá
|
||||
provedená upozornění.',
|
||||
'log_email' => 'Logovat odeslané e-maily',
|
||||
'log_sms' => 'Logovat odeslané textové zprávy',
|
||||
'log_pushover' => 'Logovat odeslané Pushover zprávy',
|
||||
'updated' => 'Nastavení bylo aktualizováno.',
|
||||
'tab_email' => 'E-mail',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Nastavení e-mailů',
|
||||
'settings_sms' => 'Nastavení textových zpráv',
|
||||
'settings_pushover' => 'Nastavení Pushover',
|
||||
'settings_notification' => 'Nastavení upozornění',
|
||||
'settings_log' => 'Nastavení logu',
|
||||
'auto_refresh' => 'Automaticky obnovit',
|
||||
'auto_refresh_description' => 'Automaticky obnovit stránku Servery.<br><span class="small">Čas v sekundách,
|
||||
0 pro vypnutí automatického obnovení.</span>',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'E-mail bude odeslán na adresu uvedenou v uživatelském profilu.',
|
||||
'test_sms' => 'SMS bude odeslána na telefonní číslo uvedené v uživatelském profilu.',
|
||||
'test_pushover' => 'Pushover upozornění bude odesláno uživateli/zařízení dle nastavení v
|
||||
uživatelském profilu.',
|
||||
'send' => 'Odeslat',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Testovací zpráva',
|
||||
'email_sent' => 'E-mail odeslán',
|
||||
'email_error' => 'Chyba při odeslání e-mailu',
|
||||
'sms_sent' => 'SMS odeslána',
|
||||
'sms_error' => 'Chyba při odeslání SMS. %s',
|
||||
'sms_error_nomobile' => 'Nebylo možné odeslat SMS: v uživatelském profilu nebylo nalezeno platné
|
||||
telefonní číslo.',
|
||||
'pushover_sent' => 'Pushover upozornění odesláno.',
|
||||
'pushover_error' => 'Nastala chyba při odesílání Pushover upozornění: %s',
|
||||
'pushover_error_noapp' => 'Nebylo možné odeslat testovací upozornění: v globálním nastavení nebyl
|
||||
nalezen žádný API token.',
|
||||
'pushover_error_nokey' => 'Nebylo možné odeslat testovací upozornění: ve vašem profilu není definován
|
||||
Pushover key.',
|
||||
'log_retention_period' => 'Rotace logu',
|
||||
'log_retention_period_description' => 'Počet dnů po které budou zachovány logy upozornění. Vložte 0 pro
|
||||
vypnutí autorotace.',
|
||||
'log_retention_days' => 'dnů',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Server \'%LABEL%\' je offline: ip=%IP%, port=%PORT%. Chyba=%ERROR%',
|
||||
'off_email_subject' => 'DŮLEŽITÉ: Server \'%LABEL%\' je offline',
|
||||
'off_email_body' => 'Nebylo možné spojit se se serverem:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Chyba: %ERROR%<br>Datum: %DATE%',
|
||||
'off_pushover_title' => 'Server \'%LABEL%\' je offline',
|
||||
'off_pushover_message' => 'Nebylo možné spojit se se serverem:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Chyba: %ERROR%<br>Datum: %DATE%',
|
||||
'on_sms' => 'Server \'%LABEL%\' je online: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'DŮLEŽITÉ: Server \'%LABEL%\' je online',
|
||||
'on_email_body' => 'Server \'%LABEL%\' je opět online, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Datum:
|
||||
%DATE%',
|
||||
'on_pushover_title' => 'Server \'%LABEL%\' je online',
|
||||
'on_pushover_message' => 'Server \'%LABEL%\' je znovu online, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Datum: %DATE%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Vítejte, %user_name%',
|
||||
'title_sign_in' => 'Prosím přihlašte se',
|
||||
'title_forgot' => 'Zapomenuté heslo?',
|
||||
'title_reset' => 'Obnova hesla',
|
||||
'submit' => 'Odeslat',
|
||||
'remember_me' => 'Zapamatovat údaje',
|
||||
'login' => 'Přihlásit',
|
||||
'logout' => 'Odhlásit',
|
||||
'username' => 'Uživatelské jméno',
|
||||
'password' => 'Heslo',
|
||||
'password_repeat' => 'Opište heslo',
|
||||
'password_forgot' => 'Zapomenuté heslo?',
|
||||
'password_reset' => 'Obnovit heslo',
|
||||
'password_reset_email_subject' => 'Obnovit heslo pro PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Použijte následující odkaz pro obnovení hesla. Odkaz je platný jednu
|
||||
hodinu.<br><br>%link%',
|
||||
'error_user_incorrect' => 'Zadané uživatelské jméno nebylo nalezeno.',
|
||||
'error_login_incorrect' => 'Přihlášení nebylo úspěšné.',
|
||||
'error_login_passwords_nomatch' => 'Zadaná hesla neodpovídají.',
|
||||
'error_reset_invalid_link' => 'Odkaz je neplatný.',
|
||||
'success_password_forgot' => 'Na vaši e-mailovou adresu byl zaslán e-mail s informacemi pro obnovu hesla.',
|
||||
'success_password_reset' => 'Vaše heslo bylo úspěšně obnoveno. Prosím přihlašte se.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Nedostatečné oprávnění',
|
||||
'401_unauthorized_description' => 'Nemáte oprávnění zobrazit tuto stránku.',
|
||||
),
|
||||
);
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -19,279 +20,299 @@
|
|||
*
|
||||
* @package phpservermon
|
||||
* @author nerdalertdk
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Dansk - Danish',
|
||||
'locale' => array('da_DK.UTF-8', 'da_DK', 'danish', 'danish-dk'),
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Installere',
|
||||
'action' => 'Action',
|
||||
'save' => 'Gem',
|
||||
'edit' => 'Redigere',
|
||||
'delete' => 'Slet',
|
||||
'date' => 'Dato',
|
||||
'message' => 'Besked',
|
||||
'yes' => 'Ja',
|
||||
'no' => 'Nej',
|
||||
'insert' => 'Indsæt',
|
||||
'add_new' => 'Tilføj ny',
|
||||
'update_available' => 'En ny version ({version}) er tilgængelig på <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Til toppen',
|
||||
'go_back' => 'Tilbage',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Annuller',
|
||||
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Igår %k:%M',
|
||||
'other_day_format' => '%A %k:%M',
|
||||
'never' => 'Aldrig',
|
||||
'hours_ago' => '%d timer siden',
|
||||
'an_hour_ago' => 'omkring en time siden',
|
||||
'minutes_ago' => '%d minutter siden',
|
||||
'a_minute_ago' => 'omkring et minut siden',
|
||||
'seconds_ago' => '%d sekunder siden',
|
||||
'a_second_ago' => 'et sekund siden',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Indstillinger',
|
||||
'server' => 'Servere',
|
||||
'server_log' => 'Log',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => 'Opdatere',
|
||||
'user' => 'Brugere',
|
||||
'help' => 'Hjælp',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Bruger',
|
||||
'name' => 'Navn',
|
||||
'user_name' => 'Brugernavn',
|
||||
'password' => 'Adgangskode',
|
||||
'password_repeat' => 'Adgangskode igen',
|
||||
'password_leave_blank' => 'Udfyldes hvis du vil skifte kode',
|
||||
'level' => 'Level',
|
||||
'level_10' => 'Administrator',
|
||||
'level_20' => 'Bruger',
|
||||
'level_description' => '<b>Administratore</b> har fuld adgang: De kan styre servere, brugere og indstillingere.<br/><b>Brugere</b> kan kun se og køre opdatere for servere som er tildelt til dem.',
|
||||
'mobile' => 'Mobil',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||
'delete_title' => 'Slet bruger',
|
||||
'delete_message' => 'Er du sikker på du vil slette bruger \'%1\'?',
|
||||
'deleted' => 'Bruger slettet.',
|
||||
'updated' => 'Bruger opdateret.',
|
||||
'inserted' => 'Bruger tilføjet.',
|
||||
'profile' => 'Profil',
|
||||
'profile_updated' => 'Din profil er opdateret.',
|
||||
'error_user_name_bad_length' => 'Brugernavn skal være mellem 2 til 64 tegn.',
|
||||
'error_user_name_invalid' => 'Brugernavn må kun indholde alfabetiske tegn (a-z, A-Z), tal (0-9) og (_).',
|
||||
'error_user_name_exists' => 'Det valgte brugernavn findes allerede.',
|
||||
'error_user_email_bad_length' => 'Email addresser skal være mellem 5 til 255 tegn.',
|
||||
'error_user_email_invalid' => 'Den valgte email er ugyldig.',
|
||||
'error_user_level_invalid' => 'Det angivet bruger niveau er ugyldig.',
|
||||
'error_user_no_match' => 'Brugeren findes ikke.',
|
||||
'error_user_password_invalid' => 'Den indtastede adgangskode er ugyldig.',
|
||||
'error_user_password_no_match' => 'De to adgangskode er ikke ens.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Logposter',
|
||||
'type' => 'Type',
|
||||
'status' => 'Status',
|
||||
'email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'Intet i loggen',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Server',
|
||||
'status' => 'Status',
|
||||
'label' => 'Label',
|
||||
'domain' => 'Domæne/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||
'port' => 'Port',
|
||||
'type' => 'Type',
|
||||
'type_website' => 'Hjemmeside',
|
||||
'type_service' => 'Tjeneste',
|
||||
'pattern' => 'Søge streng/mønster',
|
||||
'pattern_description' => 'Hvis dette mønster ikke findes på hjemmesiden, vil serveren blive markeret offline. Regulære udtryk er tilladt.',
|
||||
'last_check' => 'Sidst kontrolleret',
|
||||
'last_online' => 'Sidst online',
|
||||
'monitoring' => 'Overvågning',
|
||||
'no_monitoring' => 'Ingen overvågning',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Send Email',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Send SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Users',
|
||||
'delete_title' => 'Slet server',
|
||||
'delete_message' => 'Er du sikker på du vil slette server \'%1\'?',
|
||||
'deleted' => 'Server slettet.',
|
||||
'updated' => 'Server opdateret.',
|
||||
'inserted' => 'Server tilføjet.',
|
||||
'latency' => 'Latency',
|
||||
'latency_max' => 'Latency (maksimum)',
|
||||
'latency_min' => 'Latency (minimum)',
|
||||
'latency_avg' => 'Latency (gennemsnitlig)',
|
||||
'uptime' => 'Oppetid',
|
||||
'year' => 'År',
|
||||
'month' => 'Måned',
|
||||
'week' => 'Uge',
|
||||
'day' => 'Dag',
|
||||
'hour' => 'Time',
|
||||
'warning_threshold' => 'Advarsel grænse',
|
||||
'warning_threshold_description' => 'Antal af fejl før status skifter til offline.',
|
||||
'chart_last_week' => 'Sidste uge',
|
||||
'chart_history' => 'Historie',
|
||||
// Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html
|
||||
'chart_day_format' => '%d-%m-%Y',
|
||||
'chart_long_date_format' => '%d-%m-%Y %H:%M:%S',
|
||||
'chart_short_date_format' => '%d/%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||
'error_server_no_match' => 'Server not found.',
|
||||
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_service' => 'The IP address is not valid.',
|
||||
'error_server_ip_bad_website' => 'The website URL is not valid.',
|
||||
'error_server_type_invalid' => 'The selected server type is invalid.',
|
||||
'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Generelt',
|
||||
'language' => 'Sprog',
|
||||
'show_update' => 'Opdateringer',
|
||||
'email_status' => 'Tillad at sende mail',
|
||||
'email_from_email' => 'Email fra adresse',
|
||||
'email_from_name' => 'Email fra navn',
|
||||
'email_smtp' => 'Aktiver SMTP',
|
||||
'email_smtp_host' => 'SMTP vært',
|
||||
'email_smtp_port' => 'SMTP port',
|
||||
'email_smtp_username' => 'SMTP brugernavn',
|
||||
'email_smtp_password' => 'SMTP adgangskode',
|
||||
'email_smtp_noauth' => 'Efterladt blank hvis det ikke er opkrævet',
|
||||
'sms_status' => 'Tillad at sende SMS beskeder',
|
||||
'sms_gateway' => 'SMS Gateway',
|
||||
'sms_gateway_mosms' => 'Mosms',
|
||||
'sms_gateway_mollie' => 'Mollie',
|
||||
'sms_gateway_spryng' => 'Spryng',
|
||||
'sms_gateway_inetworx' => 'Inetworx',
|
||||
'sms_gateway_clickatell' => 'Clickatell',
|
||||
'sms_gateway_textmarketer' => 'Textmarketer',
|
||||
'sms_gateway_smsglobal' => 'SMSGlobal',
|
||||
'sms_gateway_smsit' => 'Smsit',
|
||||
'sms_gateway_username' => 'Gateway brugernavn/apikey',
|
||||
'sms_gateway_password' => 'Gateway adgangskode',
|
||||
'sms_from' => 'Afsenders navn.',
|
||||
'pushover_status' => 'Allow sending Pushover messages',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Before you can use Pushover, you need to <a href="%1$s" target="_blank">register an App</a> at their website and enter the App API Token here.',
|
||||
'alert_type' => 'Vælg hvornår du vil modtage besked',
|
||||
'alert_type_description' => '<b>Status ændring:</b> '.
|
||||
'Du vil modtage en notifcation når en server har en ændring i status. Fra online -> offline eller offline -> online.<br/>'.
|
||||
'<br /><b>Offline:</b> '.
|
||||
'Du vil modtage en meddelelse, når en server går offline for * kun første gang *. for eksempel, '.
|
||||
'Hvis dit cronjob køre hvert kvatere og din server går ned kl 01 og kommer først op kl 06 '.
|
||||
' så vil du kun modtage en mail kl 01.<br/>'.
|
||||
'<br><b>Altid:</b> '.
|
||||
'Du vil modtage en besked, hver gang scriptet kører og et websted er nede, selvom site har været offline i flere timer.',
|
||||
'alert_type_status' => 'Status ændret',
|
||||
'alert_type_offline' => 'Offline',
|
||||
'alert_type_always' => 'Altid',
|
||||
'log_status' => 'Log status',
|
||||
'log_status_description' => 'Hvis log status er sat til TRUE, vil monitoren logge hændelsen hver gang status ændre sig.',
|
||||
'log_email' => 'Log mails sendt af systemet',
|
||||
'log_sms' => 'Log SMS sendt af systemet',
|
||||
'log_pushover' => 'Log pushover messages sent by the script',
|
||||
'updated' => 'Indstillingerne er blevet opdateret.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Email indstillinger',
|
||||
'settings_sms' => 'SMS indstillinger',
|
||||
'settings_pushover' => 'Pushover settings',
|
||||
'settings_notification' => 'Meddelelse indstillinger',
|
||||
'settings_log' => 'Log indstillinger',
|
||||
'auto_refresh' => 'Genopfriske automatisk',
|
||||
'auto_refresh_servers' =>
|
||||
'Genopfriske automatisk server sider.<br/>'.
|
||||
'<span class="small">'.
|
||||
'Tid i sekunder, Hvis 0 vil siden ikke genopfriske automatisk'.
|
||||
'</span>',
|
||||
'seconds' => 'sekunder',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'En email vil blive sendt til den adresse, der er angivet i din brugerprofil.',
|
||||
'test_sms' => 'En SMS vil blive sendt til det nummer, der er angivet i din brugerprofil.',
|
||||
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||
'send' => 'Send',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Test besked',
|
||||
'email_sent' => 'Email sendt',
|
||||
'email_error' => 'Fejl ved afsendelse af email',
|
||||
'sms_sent' => 'Sms sendt',
|
||||
'sms_error' => 'Fejl ved afsendelse af SMS',
|
||||
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||
'pushover_sent' => 'Pushover notification sent',
|
||||
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||
'log_retention_period' => 'Log retention period',
|
||||
'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
|
||||
'log_retention_days' => 'days',
|
||||
),
|
||||
// for newlines in the email messages use <br/>
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Server \'%LABEL%\' is DOWN: ip=%IP%, port=%PORT%. Fejl=%ERROR%',
|
||||
'off_email_subject' => 'VIGTIG: Server \'%LABEL%\' is DOWN',
|
||||
'off_email_body' => "Det lykkedes ikke at oprette forbindelse til følgende server:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Fejl: %ERROR%<br/>Date: %DATE%",
|
||||
'off_pushover_title' => 'Server \'%LABEL%\' is DOWN',
|
||||
'off_pushover_message' => "Det lykkedes ikke at oprette forbindelse til følgende server:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Fejl: %ERROR%<br/>Date: %DATE%",
|
||||
'on_sms' => 'Server \'%LABEL%\' is RUNNING: ip=%IP%, port=%PORT%',
|
||||
'on_email_subject' => 'VIGTIG: Server \'%LABEL%\' is RUNNING',
|
||||
'on_email_body' => "Server '%LABEL%' køre igen:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Dato: %DATE%",
|
||||
'on_pushover_title' => 'Server \'%LABEL%\' is RUNNING',
|
||||
'on_pushover_message' => "Server '%LABEL%' køre igen:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Dato: %DATE%",
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Velkommen, %user_name%',
|
||||
'title_sign_in' => 'Log ind',
|
||||
'title_forgot' => 'Glemt adgangskode?',
|
||||
'title_reset' => 'Nulstil din adgangskode',
|
||||
'submit' => 'Indsend',
|
||||
'remember_me' => 'Husk kode',
|
||||
'login' => 'Log ind',
|
||||
'logout' => 'Log ud',
|
||||
'username' => 'Brugernavn',
|
||||
'password' => 'Adgangskode',
|
||||
'password_repeat' => 'Skriv adgangskode igen',
|
||||
'password_forgot' => 'Glemt adgangskode?',
|
||||
'password_reset' => 'Nulstil adgangskode',
|
||||
'password_reset_email_subject' => 'Nulstil din adgangskode for PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Brug venligst følgende link for at nulstille din adgangskode. Bemærk det udløber på 1 time.<br/><br/>%link%',
|
||||
'error_user_incorrect' => 'Det angivet brugernavn kunne ikke findes.',
|
||||
'error_login_incorrect' => 'Oplysningerne stemmer ikke overens.',
|
||||
'error_login_passwords_nomatch' => 'De angivet adgangskoder matcher ikke.',
|
||||
'error_reset_invalid_link' => 'Følgende link er ugyldigt.',
|
||||
'success_password_forgot' => 'En e-mail er blevet sendt til dig med oplysninger om, hvordan du nulstiller din adgangskode.',
|
||||
'success_password_reset' => 'Dit password er blevet nulstillet. venligst log ind.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Unauthorized',
|
||||
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||
),
|
||||
'name' => 'Dansk - Danish',
|
||||
'locale' => array(
|
||||
'0' => 'da_DK.UTF-8',
|
||||
'1' => 'da_DK',
|
||||
'2' => 'danish',
|
||||
'3' => 'danish-dk',
|
||||
),
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Installér',
|
||||
'action' => 'Action',
|
||||
'save' => 'Gem',
|
||||
'edit' => 'Redigér',
|
||||
'delete' => 'Slet',
|
||||
'date' => 'Dato',
|
||||
'message' => 'Besked',
|
||||
'yes' => 'Ja',
|
||||
'no' => 'Nej',
|
||||
'insert' => 'Indsæt',
|
||||
'add_new' => 'Tilføj ny',
|
||||
'update_available' => 'En ny version ({version}) er tilgængelig på <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Til toppen',
|
||||
'go_back' => 'Tilbage',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Annullér',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Igår %k:%M',
|
||||
'other_day_format' => '%A %k:%M',
|
||||
'never' => 'Aldrig',
|
||||
'hours_ago' => '%d timer siden',
|
||||
'an_hour_ago' => 'omkring en time siden',
|
||||
'minutes_ago' => '%d minutter siden',
|
||||
'a_minute_ago' => 'omkring et minut siden',
|
||||
'seconds_ago' => '%d sekunder siden',
|
||||
'a_second_ago' => 'et sekund siden',
|
||||
'seconds' => 'sekunder',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Indstillinger',
|
||||
'server' => 'Servere',
|
||||
'server_log' => 'Log',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => 'Opdatér',
|
||||
'user' => 'Brugere',
|
||||
'help' => 'Hjælp',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Bruger',
|
||||
'name' => 'Navn',
|
||||
'user_name' => 'Brugernavn',
|
||||
'password' => 'Adgangskode',
|
||||
'password_repeat' => 'Adgangskode igen',
|
||||
'password_leave_blank' => 'Udfyldes hvis du vil skifte adgangskode',
|
||||
'level' => 'Niveau',
|
||||
'level_10' => 'Administrator',
|
||||
'level_20' => 'Bruger',
|
||||
'level_description' => '<b>Administratorer</b> har fuld adgang: De kan styre servere, brugere og
|
||||
indstillinger.<br><b>Brugere</b> kan kun se og opdatere servere som er de har adgang
|
||||
til.',
|
||||
'mobile' => 'Mobil',
|
||||
'email' => 'E-mail',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover er en service der gør det let at modtage real-time notifikationer. Se <a
|
||||
href="https://pushover.net/" target="_blank">deres website</a> for mere
|
||||
information.',
|
||||
'pushover_key' => 'Pushover nøgle',
|
||||
'pushover_device' => 'Pushover enhed',
|
||||
'pushover_device_description' => 'Navnet på enheden som beskeden skal sendes til. Lad denne være tom hvis
|
||||
alle skal modtage beskeden.',
|
||||
'delete_title' => 'Slet bruger',
|
||||
'delete_message' => 'Er du sikker på du vil slette bruger \'%1\'?',
|
||||
'deleted' => 'Bruger slettet.',
|
||||
'updated' => 'Bruger opdateret.',
|
||||
'inserted' => 'Bruger tilføjet.',
|
||||
'profile' => 'Profil',
|
||||
'profile_updated' => 'Din profil er opdateret.',
|
||||
'error_user_name_bad_length' => 'Brugernavn skal være mellem 2 til 64 tegn.',
|
||||
'error_user_name_invalid' => 'Brugernavn må kun indholde alfabetiske tegn (a-z, A-Z), tal (0-9), prikker (.)
|
||||
og (_).',
|
||||
'error_user_name_exists' => 'Det valgte brugernavn findes allerede.',
|
||||
'error_user_email_bad_length' => 'E-mail addresser skal være mellem 5 til 255 tegn.',
|
||||
'error_user_email_invalid' => 'Den valgte e-mail er ugyldig.',
|
||||
'error_user_level_invalid' => 'Det angivet bruger niveau er ugyldig.',
|
||||
'error_user_no_match' => 'Brugeren findes ikke.',
|
||||
'error_user_password_invalid' => 'Den indtastede adgangskode er ugyldig.',
|
||||
'error_user_password_no_match' => 'De to adgangskode er ikke ens.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Logposter',
|
||||
'type' => 'Type',
|
||||
'status' => 'Status',
|
||||
'email' => 'E-mail',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'Intet i loggen',
|
||||
'clear' => 'Ryd log',
|
||||
'delete_title' => 'Slet log',
|
||||
'delete_message' => 'Er du sikker på, at du vil slette <b>alle</b> logfiler?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Server',
|
||||
'status' => 'Status',
|
||||
'label' => 'Label',
|
||||
'domain' => 'Domæne/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Antal sekunder som serveren har til at svare.',
|
||||
'port' => 'Port',
|
||||
'type' => 'Type',
|
||||
'type_website' => 'Hjemmeside',
|
||||
'type_service' => 'Tjeneste',
|
||||
'pattern' => 'Søgestreng/mønster',
|
||||
'pattern_description' => 'Hvis dette mønster ikke findes på hjemmesiden, vil serveren blive markeret som
|
||||
værende offline. Regulære udtryk er tilladt.',
|
||||
'last_check' => 'Sidst kontrolleret',
|
||||
'last_online' => 'Sidst online',
|
||||
'last_offline' => 'Sidst offline',
|
||||
'monitoring' => 'Overvågning',
|
||||
'no_monitoring' => 'Ingen overvågning',
|
||||
'email' => 'E-mail',
|
||||
'send_email' => 'Send E-mail',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Send SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Users',
|
||||
'delete_title' => 'Slet server',
|
||||
'delete_message' => 'Er du sikker på du vil slette server \'%1\'?',
|
||||
'deleted' => 'Server slettet.',
|
||||
'updated' => 'Server opdateret.',
|
||||
'inserted' => 'Server tilføjet.',
|
||||
'latency' => 'Forsinkelse',
|
||||
'latency_max' => 'Forsinkelse (maksimum)',
|
||||
'latency_min' => 'Forsinkelse (minimum)',
|
||||
'latency_avg' => 'Forsinkelse (gennemsnitlig)',
|
||||
'uptime' => 'Oppetid',
|
||||
'year' => 'År',
|
||||
'month' => 'Måned',
|
||||
'week' => 'Uge',
|
||||
'day' => 'Dag',
|
||||
'hour' => 'Time',
|
||||
'warning_threshold' => 'Advarsel grænse',
|
||||
'warning_threshold_description' => 'Antallet af fejl, før status skifter til offline.',
|
||||
'chart_last_week' => 'Sidste uge',
|
||||
'chart_history' => 'Historie',
|
||||
'chart_day_format' => '%d-%m-%Y',
|
||||
'chart_long_date_format' => '%d-%m-%Y %H:%M:%S',
|
||||
'chart_short_date_format' => '%d/%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS notifikationer er deaktiveret.',
|
||||
'warning_notifications_disabled_email' => 'E-mail notifikationer er deaktiveret.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover notifikationer er deaktiveret.',
|
||||
'error_server_no_match' => 'Server ikke fundet.',
|
||||
'error_server_label_bad_length' => 'Label skal være mellem et og 255 karakterer.',
|
||||
'error_server_ip_bad_length' => 'Domænet/IP skal være mellem et og 255 karakterer.',
|
||||
'error_server_ip_bad_service' => 'IP adressen er ikke gyldig.',
|
||||
'error_server_ip_bad_website' => 'Websitets URL er ikke gyldigt.',
|
||||
'error_server_type_invalid' => 'Den valgte servertype er ikke gyldig.',
|
||||
'error_server_warning_threshold_invalid' => 'Advarsels-tærskel skal være et gyldigt tal større end 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Generelt',
|
||||
'language' => 'Sprog',
|
||||
'show_update' => 'Opdateringer',
|
||||
'email_status' => 'Tillad at sende e-mail',
|
||||
'email_from_email' => 'E-mail fra adresse',
|
||||
'email_from_name' => 'E-mail fra navn',
|
||||
'email_smtp' => 'Aktiver SMTP',
|
||||
'email_smtp_host' => 'SMTP vært',
|
||||
'email_smtp_port' => 'SMTP port',
|
||||
'email_smtp_security' => 'SMTP c',
|
||||
'email_smtp_security_none' => 'Ingen',
|
||||
'email_smtp_username' => 'SMTP brugernavn',
|
||||
'email_smtp_password' => 'SMTP adgangskode',
|
||||
'email_smtp_noauth' => 'Efterlad blank hvis det ikke er krævet',
|
||||
'sms_status' => 'Tillad at sende SMS beskeder',
|
||||
'sms_gateway' => 'SMS Gateway',
|
||||
'sms_gateway_username' => 'Gateway brugernavn/apikey',
|
||||
'sms_gateway_password' => 'Gateway adgangskode',
|
||||
'sms_from' => 'Afsenderens navn.',
|
||||
'pushover_status' => 'Tillad at sende Pushover beskeder',
|
||||
'pushover_description' => 'Pushover er en service det gør det nemt at modtage real-time notifikationer. Se <a
|
||||
href="https://pushover.net/" target="_blank">deres website</a> for yderligere
|
||||
information.',
|
||||
'pushover_clone_app' => 'Klik her for at oprette din Pushover app',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Før du kan benytte Pushover, skal du <a href="%1$s" target="_blank"
|
||||
rel="noopener">registrere en app</a> på deres website og indtaste en App
|
||||
API Token her.',
|
||||
'alert_type' => 'Vælg hvornår du vil modtage beskeden',
|
||||
'alert_type_description' => '<b>Status ændring:</b> Du vil modtage en notifkation når en server har en
|
||||
ændring i status. Fra online -> offline eller offline -> online.<br><br
|
||||
/><b>Offline:</b> Du vil modtage en meddelelse, når en server går offline for
|
||||
første gang. Eksempelvis hvis dit cronjob kører hvert kvarter, og din server
|
||||
går ned kl 01 og kommer først op kl 06, vil du kun modtage en mail kl
|
||||
01.<br><br><b>Altid:</b> Du vil modtage en besked, hver gang scriptet kører og
|
||||
et websted er nede, selvom site har været offline i flere timer.',
|
||||
'alert_type_status' => 'Status ændret',
|
||||
'alert_type_offline' => 'Offline',
|
||||
'alert_type_always' => 'Altid',
|
||||
'log_status' => 'Log status',
|
||||
'log_status_description' => 'Hvis log status er sat til TRUE, vil monitoren logge hændelsen hver gang status
|
||||
ændre sig.',
|
||||
'log_email' => 'Log e-mails sendt af systemet',
|
||||
'log_sms' => 'Log SMS sendt af systemet',
|
||||
'log_pushover' => 'Log pushover messages sent by the script',
|
||||
'updated' => 'Indstillingerne er blevet opdateret.',
|
||||
'tab_email' => 'E-mail',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'E-mail indstillinger',
|
||||
'settings_sms' => 'SMS indstillinger',
|
||||
'settings_pushover' => 'Pushover settings',
|
||||
'settings_notification' => 'Meddelelse indstillinger',
|
||||
'settings_log' => 'Log indstillinger',
|
||||
'auto_refresh' => 'Genopfrisk automatisk',
|
||||
'auto_refresh_description' => 'Genopfrisk automatisk serversider.<br><span class="small">Tid i sekunder. Hvis
|
||||
0 vil siden ikke genopfriske automatisk</span>',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'En e-mail vil blive sendt til den adresse, der er angivet i din brugerprofil.',
|
||||
'test_sms' => 'En SMS vil blive sendt til det nummer, der er angivet i din brugerprofil.',
|
||||
'test_pushover' => 'En Pushover notifikation vil blive sendt til brugerens enhed, specificeret i
|
||||
brugerprofilen.',
|
||||
'send' => 'Send',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Test besked',
|
||||
'email_sent' => 'E-mail sendt',
|
||||
'email_error' => 'Fejl ved afsendelse af e-mail',
|
||||
'sms_sent' => 'Sms sendt',
|
||||
'sms_error' => 'Fejl ved afsendelse af SMS. %s',
|
||||
'sms_error_nomobile' => 'Ikke muligt at sende SMS: Intet gyldigt telefonnummer blev fundet i din profil.',
|
||||
'pushover_sent' => 'Pushover notifikation blev sendt',
|
||||
'pushover_error' => 'En fejl opstod under afsendelse af Pushover notifikation: %s',
|
||||
'pushover_error_noapp' => 'Ikke muligt at sende test notifikation: Intet Pushover App API token fundet i den
|
||||
globale konfiguration.',
|
||||
'pushover_error_nokey' => 'Ikke muligt at sende test notifikation: Ingen Pushover key fundet i din profil.',
|
||||
'log_retention_period' => 'Logs gemmes',
|
||||
'log_retention_period_description' => 'Antal dage over hvor længe logs med notifikationer og arkiverede
|
||||
serveres oppetid skal gemmes. Indtast 0 for at deaktivere logoprydning.',
|
||||
'log_retention_days' => 'dage',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Serveren \'%LABEL%\' er NEDE: ip=%IP%, port=%PORT%. Fejl=%ERROR%',
|
||||
'off_email_subject' => 'VIGTIGT: Server \'%LABEL%\' er NEDE',
|
||||
'off_email_body' => 'Det lykkedes ikke at oprette forbindelse til følgende server:<br><br>Server:
|
||||
%LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Fejl: %ERROR%<br>Dato: %DATE%',
|
||||
'off_pushover_title' => 'Serveren \'%LABEL%\' er NEDE',
|
||||
'off_pushover_message' => 'Det lykkedes ikke at oprette forbindelse til følgende server:<br><br>Server:
|
||||
%LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Fejl: %ERROR%<br>Dato: %DATE%',
|
||||
'on_sms' => 'Serveren \'%LABEL%\' KØRER: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'VIGTIGT: Serveren \'%LABEL%\' KØRER',
|
||||
'on_email_body' => 'Serveren \'%LABEL%\' kører igen, it was down for %LAST_OFFLINE_DURATION%:<br><br>Server:
|
||||
%LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Dato: %DATE%',
|
||||
'on_pushover_title' => 'Serveren \'%LABEL%\' KØRER',
|
||||
'on_pushover_message' => 'Serveren \'%LABEL%\' kører igen, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Dato:
|
||||
%DATE%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Velkommen, %user_name%',
|
||||
'title_sign_in' => 'Log ind',
|
||||
'title_forgot' => 'Glemt adgangskode?',
|
||||
'title_reset' => 'Nulstil din adgangskode',
|
||||
'submit' => 'Indsend',
|
||||
'remember_me' => 'Husk kode',
|
||||
'login' => 'Log ind',
|
||||
'logout' => 'Log ud',
|
||||
'username' => 'Brugernavn',
|
||||
'password' => 'Adgangskode',
|
||||
'password_repeat' => 'Skriv adgangskode igen',
|
||||
'password_forgot' => 'Glemt adgangskode?',
|
||||
'password_reset' => 'Nulstil adgangskode',
|
||||
'password_reset_email_subject' => 'Nulstil din adgangskode for PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Brug venligst følgende link for at nulstille din adgangskode. Bemærk at
|
||||
linkets gyldighed udløber efter en time.<br><br>%link%',
|
||||
'error_user_incorrect' => 'Det angivet brugernavn kunne ikke findes.',
|
||||
'error_login_incorrect' => 'Oplysningerne stemmer ikke overens.',
|
||||
'error_login_passwords_nomatch' => 'De angivne adgangskoder er ikke ens.',
|
||||
'error_reset_invalid_link' => 'Følgende link er ugyldigt.',
|
||||
'success_password_forgot' => 'En e-mail er blevet sendt til dig med oplysninger om, hvordan du nulstiller din
|
||||
adgangskode.',
|
||||
'success_password_reset' => 'Din adgangskode er blevet nulstillet. Log venligst ind igen.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Uautoriseret',
|
||||
'401_unauthorized_description' => 'Du har ikke rettigheder til at se denne side.',
|
||||
),
|
||||
);
|
||||
|
|
|
@ -1,297 +1,336 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Brunbaur Herbert
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Deutsch - German',
|
||||
'locale' => array('de_DE.UTF-8', 'de_DE', 'german'),
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Install',
|
||||
'action' => 'Aktion',
|
||||
'save' => 'Speichern',
|
||||
'edit' => 'Bearbeiten',
|
||||
'delete' => 'Löschen',
|
||||
'date' => 'Datum',
|
||||
'message' => 'Meldung',
|
||||
'yes' => 'Ja',
|
||||
'no' => 'Nein',
|
||||
'insert' => 'Einfügen',
|
||||
'add_new' => 'Neuen Eintrag erstellen',
|
||||
'update_available' => 'Ein neues Update ({version}) ist verfügbar auf <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Back to top',
|
||||
'go_back' => 'Go back',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Cancel',
|
||||
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Gestern um %k:%M',
|
||||
'other_day_format' => '%A um %k:%M',
|
||||
'never' => 'Never',
|
||||
'hours_ago' => '%d hours ago',
|
||||
'an_hour_ago' => 'about an hour ago',
|
||||
'minutes_ago' => '%d minutes ago',
|
||||
'a_minute_ago' => 'about a minute ago',
|
||||
'seconds_ago' => '%d seconds ago',
|
||||
'a_second_ago' => 'a second ago',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Einstellungen',
|
||||
'server' => 'Server',
|
||||
'server_log' => 'Log',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => 'Updates',
|
||||
'user' => 'Benutzer',
|
||||
'help' => 'Hilfe',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Benutzer',
|
||||
'name' => 'Name',
|
||||
'user_name' => 'Username',
|
||||
'password' => 'Password',
|
||||
'password_repeat' => 'Password repeat',
|
||||
'password_leave_blank' => 'Leave blank to keep unchanged',
|
||||
'level' => 'Level',
|
||||
'level_10' => 'Administrator',
|
||||
'level_20' => 'User',
|
||||
'level_description' => '<b>Administrators</b> have full access: they can manage servers, users and edit the global configuration.<br/><b>Users</b> can only view and run the updater for the servers that have been assigned to them.',
|
||||
'mobile' => 'Mobil',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||
'delete_title' => 'Delete User',
|
||||
'delete_message' => 'Are you sure you want to delete user \'%1\'?',
|
||||
'deleted' => 'User deleted.',
|
||||
'updated' => 'Benutzer bearbeitet.',
|
||||
'inserted' => 'Benutzer eingetragen.',
|
||||
'profile' => 'Profile',
|
||||
'profile_updated' => 'Your profile has been updated.',
|
||||
'error_user_name_bad_length' => 'Usernames must be between 2 and 64 characters.',
|
||||
'error_user_name_invalid' => 'It may only contain alphabetic characters (a-z, A-Z), digits (0-9) and underscores (_).',
|
||||
'error_user_name_exists' => 'The given username already exists in the database.',
|
||||
'error_user_email_bad_length' => 'Email addresses must be between 5 and 255 characters.',
|
||||
'error_user_email_invalid' => 'The email address is invalid.',
|
||||
'error_user_level_invalid' => 'The given user level is invalid.',
|
||||
'error_user_no_match' => 'The user could not be found in the database.',
|
||||
'error_user_password_invalid' => 'The entered password is invalid.',
|
||||
'error_user_password_no_match' => 'The entered passwords do not match.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Log Einträge',
|
||||
'type' => 'Type',
|
||||
'status' => 'Status',
|
||||
'email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'No logs',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Server',
|
||||
'status' => 'Status',
|
||||
'label' => 'Beschriftung',
|
||||
'domain' => 'Domain/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||
'port' => 'Port',
|
||||
'type' => 'Type',
|
||||
'type_website' => 'Website',
|
||||
'type_service' => 'Service',
|
||||
'pattern' => 'Search string/pattern',
|
||||
'pattern_description' => 'If this pattern is not found on the website, the server will be marked offline. Regular expressions are allowed.',
|
||||
'last_check' => 'Letzter Check',
|
||||
'last_online' => 'Letztes mal Online',
|
||||
'monitoring' => 'Monitoring',
|
||||
'no_monitoring' => 'No monitoring',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Users',
|
||||
'delete_title' => 'Delete Server',
|
||||
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
|
||||
'deleted' => 'Server deleted.',
|
||||
'updated' => 'Server aktualisiert.',
|
||||
'inserted' => 'Server eingetragen.',
|
||||
'latency' => 'Antwortzeit',
|
||||
'latency_max' => 'Latency (maximum)',
|
||||
'latency_min' => 'Latency (minimum)',
|
||||
'latency_avg' => 'Latency (average)',
|
||||
'uptime' => 'Uptime',
|
||||
'year' => 'Year',
|
||||
'month' => 'Month',
|
||||
'week' => 'Week',
|
||||
'day' => 'Day',
|
||||
'hour' => 'Hour',
|
||||
'warning_threshold' => 'Warning threshold',
|
||||
'warning_threshold_description' => 'Number of failed checks required before it is marked offline.',
|
||||
'chart_last_week' => 'Last week',
|
||||
'chart_history' => 'History',
|
||||
// Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html
|
||||
'chart_day_format' => '%d.%m.%Y',
|
||||
'chart_long_date_format' => '%d.%m.%Y %H:%M:%S',
|
||||
'chart_short_date_format' => '%d.%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||
'error_server_no_match' => 'Server not found.',
|
||||
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_service' => 'The IP address is not valid.',
|
||||
'error_server_ip_bad_website' => 'The website URL is not valid.',
|
||||
'error_server_type_invalid' => 'The selected server type is invalid.',
|
||||
'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'General',
|
||||
'language' => 'Sprache',
|
||||
'show_update' => 'Updats wöchentlich prüfen?',
|
||||
'email_status' => 'Email senden erlauben?',
|
||||
'email_from_email' => 'Email from address',
|
||||
'email_from_name' => 'Email from name',
|
||||
'email_smtp' => 'Enable SMTP',
|
||||
'email_smtp_host' => 'SMTP host',
|
||||
'email_smtp_port' => 'SMTP port',
|
||||
'email_smtp_username' => 'SMTP username',
|
||||
'email_smtp_password' => 'SMTP password',
|
||||
'email_smtp_noauth' => 'Leave blank for no authentication',
|
||||
'sms_status' => 'SMS Nachricht senden erlauben?',
|
||||
'sms_gateway' => 'SMS Gateway',
|
||||
'sms_gateway_mosms' => 'Mosms',
|
||||
'sms_gateway_mollie' => 'Mollie',
|
||||
'sms_gateway_spryng' => 'Spryng',
|
||||
'sms_gateway_inetworx' => 'Inetworx',
|
||||
'sms_gateway_clickatell' => 'Clickatell',
|
||||
'sms_gateway_textmarketer' => 'Textmarketer',
|
||||
'sms_gateway_smsglobal' => 'SMSGlobal',
|
||||
'sms_gateway_smsit' => 'Smsit',
|
||||
'sms_gateway_username' => 'Gateway Benutzername',
|
||||
'sms_gateway_password' => 'Gateway Passwort',
|
||||
'sms_from' => 'SMS Sendernummer',
|
||||
'pushover_status' => 'Allow sending Pushover messages',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Before you can use Pushover, you need to <a href="%1$s" target="_blank">register an App</a> at their website and enter the App API Token here.',
|
||||
'alert_type' => 'Wann möchten Sie benachrichtig werden?',
|
||||
'alert_type_description' => '<b>Status geändert:</b> '.
|
||||
'... wenn sich der Status ändert<br/>'.
|
||||
'z.B. online -> offline oder offline -> online.<br/>'.
|
||||
'<br/><b>Offline: </b>'.
|
||||
'Sie bekommen eine Benachrichtigung, wenn ein Server Offline ist.<br/>'.
|
||||
'Es wird nur eine Mitteilung versendet.<br/>'.
|
||||
'<br/><b>Immer: </b>'.
|
||||
'Sie werden jedesmal wenn der CronJob oder das Script ausgeführt wird benachrichtigt auch wenn der Dienst mehreres Stunden offline ist',
|
||||
'alert_type_status' => 'Status geändert',
|
||||
'alert_type_offline' => 'Offline',
|
||||
'alert_type_always' => 'Immer',
|
||||
'log_status' => 'Log Status',
|
||||
'log_status_description' => 'Ist der Log Status auf TRUE (ein Hacken) gesetzt, wird jeder Status protokolliert.',
|
||||
'log_email' => 'Email Log per Script senden?',
|
||||
'log_sms' => 'SMS Log per Script senden?',
|
||||
'log_pushover' => 'Pushover Log per Script senden?',
|
||||
'updated' => 'Die Einstellungen wurden gespeichert.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Email',
|
||||
'settings_sms' => 'SMS Nachricht',
|
||||
'settings_pushover' => 'Pushover settings',
|
||||
'settings_notification' => 'Benachrichtigung',
|
||||
'settings_log' => 'Log',
|
||||
'auto_refresh' => 'Auto-refresh',
|
||||
'auto_refresh_servers' =>
|
||||
'Auto-refresh servers page<br/>'.
|
||||
'<span class="small">'.
|
||||
'Time in seconds, if 0 the page won\'t refresh.'.
|
||||
'</span>',
|
||||
'seconds' => 'seconds',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'An email will be sent to the address specified in your user profile.',
|
||||
'test_sms' => 'An SMS will be sent to the phone number specified in your user profile.',
|
||||
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||
'send' => 'Send',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Test message',
|
||||
'email_sent' => 'Email sent',
|
||||
'email_error' => 'Error in email sending',
|
||||
'sms_sent' => 'Sms sent',
|
||||
'sms_error' => 'Error in sms sending',
|
||||
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||
'pushover_sent' => 'Pushover notification sent',
|
||||
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||
'log_retention_period' => 'Log retention period',
|
||||
'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
|
||||
'log_retention_days' => 'days',
|
||||
),
|
||||
// for newlines in the email messages use <br/>
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Server \'%LABEL%\' ist Offline: ip=%IP%, port=%PORT%. Fehler=%ERROR%',
|
||||
'off_email_subject' => 'Wichtig: Server \'%LABEL%\' ist Offline',
|
||||
'off_email_body' => "Kann keine Verbindung zum Server aufbauen:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Fehler: %ERROR%<br/>Datum: %DATE%",
|
||||
'off_pushover_title' => 'Server \'%LABEL%\' ist Offline',
|
||||
'off_pushover_message' => "Kann keine Verbindung zum Server aufbauen:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Fehler: %ERROR%<br/>Datum: %DATE%",
|
||||
'on_sms' => 'Server \'%LABEL%\' ist wieder Online: ip=%IP%, port=%PORT%',
|
||||
'on_email_subject' => 'Wichtig: Server \'%LABEL%\' ist wieder Online',
|
||||
'on_email_body' => "Server '%LABEL%' läuft wieder:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Datum: %DATE%",
|
||||
'on_pushover_title' => 'Server \'%LABEL%\' ist wieder Online',
|
||||
'on_pushover_message' => "Server '%LABEL%' läuft wieder:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Datum: %DATE%",
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Welcome, %user_name%',
|
||||
'title_sign_in' => 'Please sign in',
|
||||
'title_forgot' => 'Forgot your password?',
|
||||
'title_reset' => 'Reset your password',
|
||||
'submit' => 'Submit',
|
||||
'remember_me' => 'Remember me',
|
||||
'login' => 'Login',
|
||||
'logout' => 'Logout',
|
||||
'username' => 'Username',
|
||||
'password' => 'Password',
|
||||
'password_repeat' => 'Repeat password',
|
||||
'password_forgot' => 'Forgot password?',
|
||||
'password_reset' => 'Reset password',
|
||||
'password_reset_email_subject' => 'Reset your password for PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Please use the following link to reset your password. Please note it expires in 1 hour.<br/><br/>%link%',
|
||||
'error_user_incorrect' => 'The provided username could not be found.',
|
||||
'error_login_incorrect' => 'The information is incorrect.',
|
||||
'error_login_passwords_nomatch' => 'The provided passwords do not match.',
|
||||
'error_reset_invalid_link' => 'The reset link you provided is invalid.',
|
||||
'success_password_forgot' => 'An email has been sent to you with information how to reset your password.',
|
||||
'success_password_reset' => 'Your password has been reset successfully. Please login.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Unauthorized',
|
||||
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||
),
|
||||
);
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Jean Pierre Kolb <http://www.jpkc.com/>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Deutsch - German',
|
||||
'locale' => array(
|
||||
'0' => 'de_DE.UTF-8',
|
||||
'1' => 'de_DE',
|
||||
'2' => 'german',
|
||||
),
|
||||
'locale_tag' => 'de',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Installation',
|
||||
'action' => 'Aktion',
|
||||
'save' => 'Speichern',
|
||||
'edit' => 'Bearbeiten',
|
||||
'delete' => 'Löschen',
|
||||
'date' => 'Datum',
|
||||
'message' => 'Meldung',
|
||||
'yes' => 'Ja',
|
||||
'no' => 'Nein',
|
||||
'insert' => 'Einfügen',
|
||||
'add_new' => 'Neuen Eintrag erstellen',
|
||||
'update_available' => 'Eine Aktualisierung ({version}) ist verfügbar unter <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'nach oben',
|
||||
'go_back' => 'Zurück',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Abbrechen',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Gestern um %k:%M Uhr',
|
||||
'other_day_format' => '%A um %k:%M Uhr',
|
||||
'never' => 'Nie',
|
||||
'hours_ago' => 'vor %d Stunden',
|
||||
'an_hour_ago' => 'vor über einer Stunde',
|
||||
'minutes_ago' => 'vor %d Minuten',
|
||||
'a_minute_ago' => 'vor über einer Minute',
|
||||
'seconds_ago' => 'vor %d Sekunden',
|
||||
'a_second_ago' => 'vor über einer Sekunde',
|
||||
'seconds' => 'Sekunden',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Einstellungen',
|
||||
'server' => 'Server',
|
||||
'server_log' => 'Protokoll',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => 'Update',
|
||||
'user' => 'Benutzer',
|
||||
'help' => 'Hilfe',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Benutzer',
|
||||
'name' => 'Name',
|
||||
'user_name' => 'Benutzername',
|
||||
'password' => 'Passwort',
|
||||
'password_repeat' => 'Passwort wiederholen',
|
||||
'password_leave_blank' => 'Passwort ändern...',
|
||||
'level' => 'Berechtigungsstufe',
|
||||
'level_10' => 'Administrator',
|
||||
'level_20' => 'Benutzer',
|
||||
'level_description' => '<b>Administratoren</b> haben vollen Zugriff — sie können Webseiten, Benutzer und
|
||||
globale Einstellungen verwalten.<br><b>Benutzer</b> können nur (für ihnen
|
||||
zugeordnete Webseiten) Analysedaten einsehen und deren Aktualisierung veranlassen.',
|
||||
'mobile' => 'Mobil',
|
||||
'email' => 'E-Mail',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover ist ein Dienst, der es stark vereinfacht, Statusbenachrichtigungen in
|
||||
Echtzeit zu erhalten. Besuchen Sie <a href="https://pushover.net/"
|
||||
target="_blank">pushover.net</a> für weitere Informationen.',
|
||||
'pushover_key' => 'Pushover Key/Schlüssel',
|
||||
'pushover_device' => 'Pushover Gerät',
|
||||
'pushover_device_description' => 'Name des Gerätes, an das die Nachricht gesendet werden soll. Leer lassen,
|
||||
um die Nachricht an alle registrierten Geräte zu senden.',
|
||||
'delete_title' => 'Benutzer löschen',
|
||||
'delete_message' => 'Sind Sie sicher, dass Sie den Benutzer \'%1\' löschen wollen?',
|
||||
'deleted' => 'Benutzer gelöscht.',
|
||||
'updated' => 'Benutzer bearbeitet.',
|
||||
'inserted' => 'Benutzer hinzugefügt.',
|
||||
'profile' => 'Profileinstellungen',
|
||||
'profile_updated' => 'Ihr Profil wurde aktualisiert.',
|
||||
'error_user_name_bad_length' => 'Benutzernamen müssen zwischen 2 und 64 Zeichen lang sein.',
|
||||
'error_user_name_invalid' => 'Der Benutzername darf nur alphanumerische Zeichen (a-z, A-Z), Zahlen (0-9),
|
||||
Punkte (.) und Unterstriche (_) enthalten.',
|
||||
'error_user_name_exists' => 'Der gewählte Benutzername existiert bereits in der Datenbank.',
|
||||
'error_user_email_bad_length' => 'E-Mail-Adressen müssen zwischen 5 und 255 Zeichen lang sein.',
|
||||
'error_user_email_invalid' => 'Die E-Mail-Adresse ist ungültig.',
|
||||
'error_user_level_invalid' => 'Die gewählte Berechtigungsstufe ist ungültig.',
|
||||
'error_user_no_match' => 'Der Benutzer konnte in der Datenbank nicht gefunden werden.',
|
||||
'error_user_password_invalid' => 'Das eingegebene Passwort ist nicht korrekt.',
|
||||
'error_user_password_no_match' => 'Die eingegebenen Passwörter stimmen nicht überein.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Protokoll',
|
||||
'type' => 'Typ',
|
||||
'status' => 'Status',
|
||||
'email' => 'E-Mail',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'Keine Protokolle vorhanden.',
|
||||
'clear' => 'Protokoll löschen',
|
||||
'delete_title' => 'Protokoll löschen',
|
||||
'delete_message' => 'Bist du sicher, dass du <b>alle</b> Protokolle löschen möchtest?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Server',
|
||||
'status' => 'Status',
|
||||
'label' => 'Beschriftung',
|
||||
'domain' => 'Domain/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Anzahl der Sekunden, die auf eine Antwort des Servers gewartet werden soll.',
|
||||
'port' => 'Port',
|
||||
'type' => 'Typ',
|
||||
'type_website' => 'Webseite',
|
||||
'type_service' => 'Service',
|
||||
'type_ping' => 'Ping',
|
||||
'pattern' => 'Suchstring/-muster',
|
||||
'pattern_description' => 'Wenn das gesuchte Muster nicht in der Webseite ist, wird die Seite als offline
|
||||
markiert. Reguläre Ausdrücke sind erlaubt.',
|
||||
'last_check' => 'Letzter Check',
|
||||
'last_online' => 'Zuletzt online',
|
||||
'last_offline' => 'Zuletzt offline',
|
||||
'monitoring' => 'Monitoring',
|
||||
'no_monitoring' => 'Monitoring inaktiv',
|
||||
'email' => 'E-Mail',
|
||||
'send_email' => 'E-Mail versenden',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'SMS versenden',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Benutzer',
|
||||
'delete_title' => 'Server löschen',
|
||||
'delete_message' => 'Sind Sie sicher, dass Sie den Server \'%1\' löschen wollen?',
|
||||
'deleted' => 'Server gelöscht.',
|
||||
'updated' => 'Server aktualisiert.',
|
||||
'inserted' => 'Server hinzugefügt.',
|
||||
'latency' => 'Antwortzeit',
|
||||
'latency_max' => 'Antwortzeit (Maximum)',
|
||||
'latency_min' => 'Antwortzeit (Minimum)',
|
||||
'latency_avg' => 'Antwortzeit (im Durchschnitt)',
|
||||
'uptime' => 'Uptime',
|
||||
'year' => 'Jahr',
|
||||
'month' => 'Monat',
|
||||
'week' => 'Woche',
|
||||
'day' => 'Tag',
|
||||
'hour' => 'Stunde',
|
||||
'warning_threshold' => 'Warnschwelle',
|
||||
'warning_threshold_description' => 'Anzahl der fehlgeschlagenen Überprüfungen, bevor der Status als offline
|
||||
markiert wird.',
|
||||
'chart_last_week' => 'Letzte Woche',
|
||||
'chart_history' => 'Historie',
|
||||
'chart_day_format' => '%d.%m.%Y',
|
||||
'chart_long_date_format' => '%d.%m.%Y %H:%M:%S Uhr',
|
||||
'chart_short_date_format' => '%d.%m %H:%M Uhr',
|
||||
'chart_short_time_format' => '%H:%M Uhr',
|
||||
'warning_notifications_disabled_sms' => 'SMS-Benachrichtigungen sind deaktiviert.',
|
||||
'warning_notifications_disabled_email' => 'E-Mail-Benachrichtigungen sind deaktiviert.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover-Benachrichtigungen sind deaktiviert.',
|
||||
'error_server_no_match' => 'Server nicht gefunden.',
|
||||
'error_server_label_bad_length' => 'Das Label muss zwischen 1 und 255 Zeichen lang sein.',
|
||||
'error_server_ip_bad_length' => 'Die Domain/IP muss zwischen 1 und 255 Zeichen lang sein.',
|
||||
'error_server_ip_bad_service' => 'Die eingegebene IP-Adresse ist ungültig.',
|
||||
'error_server_ip_bad_website' => 'Die eingegebene Webseiten-URL ist ungültig.',
|
||||
'error_server_type_invalid' => 'Der gewählte Server-Typ ist ungültig.',
|
||||
'error_server_warning_threshold_invalid' => 'Die Warnschwelle muss eine gültige ganze Zahl größer als 0
|
||||
sein.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Allgemein',
|
||||
'language' => 'Sprache',
|
||||
'show_update' => 'Wöchentlich auf Aktualisierungen prüfen?',
|
||||
'email_add_url' => 'Server URL an E-Mail anhängen?',
|
||||
'email_status' => 'E-Mail-Versand erlauben?',
|
||||
'email_from_email' => 'Absenderadresse',
|
||||
'email_from_name' => 'Name des Absenders',
|
||||
'email_smtp' => 'SMTP-Versand aktivieren',
|
||||
'email_smtp_host' => 'SMTP Server/Host',
|
||||
'email_smtp_port' => 'SMTP Port',
|
||||
'email_smtp_security' => 'SMTP Authentifizierung',
|
||||
'email_smtp_security_none' => 'Keine',
|
||||
'email_smtp_username' => 'SMTP Benutzername',
|
||||
'email_smtp_password' => 'SMTP Passwort',
|
||||
'email_smtp_noauth' => 'Feld leer lassen, bei fehlender Authentifizierung',
|
||||
'sms_status' => 'SMS-Nachrichtenversand erlauben?',
|
||||
'sms_gateway' => 'SMS Gateway',
|
||||
'sms_gateway_username' => 'Gateway Benutzername',
|
||||
'sms_gateway_password' => 'Gateway Passwort',
|
||||
'sms_from' => 'SMS-Sendernummer',
|
||||
'pushover_status' => 'Ermögliche das Senden von Pushover-Nachrichten',
|
||||
'pushover_description' => 'Pushover ist ein Dienst, der es stark vereinfacht, Statusbenachrichtigungen in
|
||||
Echtzeit zu erhalten. Besuchen Sie <a href="https://pushover.net/"
|
||||
target="_blank">pushover.net</a> für weitere Informationen.',
|
||||
'pushover_clone_app' => 'Klicken Sie hier, um Ihre Pushover-Anwendung zu erstellen',
|
||||
'pushover_api_token' => 'Pushover-Anwendungs-API-Token',
|
||||
'pushover_api_token_description' => 'Bevor Sie Pushover verwenden können, müssen Sie Ihre <a href="%1$s"
|
||||
target="_blank" rel="noopener">Anwendung hier registrieren</a> und Ihren
|
||||
Anwendungs-API-Token hier eingeben.',
|
||||
'telegram_status' => 'Telegram Nachrichten erlauben?',
|
||||
'telegram_add_url' => 'Server URL an Nachricht anhängen?',
|
||||
'jabber_status' => 'Allow sending Jabber (XMPP) messages',
|
||||
'alert_type' => 'Wann möchten Sie benachrichtigt werden?',
|
||||
'alert_type_description' => '<b>Status geändert:</b> ... wenn sich der Status ändert<br>z. B. online ->
|
||||
offline oder offline -> online.<br><br><b>Offline: </b>Sie bekommen eine
|
||||
Benachrichtigung, wenn ein Server offline ist.<br>Es wird nur eine Mitteilung
|
||||
versendet.<br><br><b>Immer: </b>Sie erhalten jedes Mal eine Benachrichtigung,
|
||||
sobald der CronJob oder das Skript ausgeführt werden, auch wenn der Dienst
|
||||
mehrere Stunden offline sein sollte.',
|
||||
'alert_type_status' => 'Status geändert',
|
||||
'alert_type_offline' => 'Offline',
|
||||
'alert_type_always' => 'Immer',
|
||||
'log_status' => 'Protokollierung aktivieren?',
|
||||
'log_status_description' => 'Ist die Protokollierung aktiviert (d.h. ist ein Haken gesetzt), wird jeder Status
|
||||
und jede Meldung vom System protokolliert.',
|
||||
'log_email' => 'E-Mail-Versand protokollieren?',
|
||||
'log_sms' => 'SMS-Versand protokollieren?',
|
||||
'log_pushover' => 'Pushover-Versand protokollieren?',
|
||||
'log_telegram' => 'Telegram-Versand protokollieren?',
|
||||
'updated' => 'Die Einstellungen wurden gespeichert.',
|
||||
'tab_email' => 'E-Mail',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'E-Mail-Einstellungen',
|
||||
'settings_sms' => 'SMS-Einstellungen',
|
||||
'settings_pushover' => 'Pushover-Einstellungen',
|
||||
'settings_notification' => 'Benachrichtigungseinstellungen',
|
||||
'settings_log' => 'Protokollierungseinstellungen',
|
||||
'auto_refresh' => 'Automatische Aktualisierung',
|
||||
'auto_refresh_description' => 'Automatische Aktualisierung der Server-Übersichtsseite<br><span
|
||||
class="small">Zeit in Sekunden - die Ziffer \'0\' deaktiviert die automatische
|
||||
Aktualisierung.</span>',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'Eine E-Mail wird an die E-Mail-Adresse gesendet, die in Ihrem Profil hinterlegt ist.',
|
||||
'test_sms' => 'Eine SMS wird an die Telefonnummer gesendet, die in Ihrem Profil hinterlegt ist.',
|
||||
'test_pushover' => 'Eine Pushover-Benachrichtigung wird an den Schlüssel/das Gerät gesendet, welche(s) in
|
||||
Ihrem Profil hinterlegt ist.',
|
||||
'send' => 'Senden',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Testnachricht',
|
||||
'email_sent' => 'E-Mail gesendet.',
|
||||
'email_error' => 'Beim Versand der E-Mail trat ein Fehler auf.',
|
||||
'sms_sent' => 'SMS-Nachricht gesendet.',
|
||||
'sms_error' => 'Beim Versand der SMS-Nachricht trat ein Fehler auf. %s',
|
||||
'sms_error_nomobile' => 'Versand der SMS-Nachricht nicht möglich: Es wurde keine gültige Telefonnummer in
|
||||
Ihrem Profil hinterlegt.',
|
||||
'pushover_sent' => 'Pushover-Benachrichtigung versendet',
|
||||
'pushover_error' => 'Beim Versand der Pushover-Benachrichtigung trat ein Fehler auf: %s',
|
||||
'pushover_error_noapp' => 'Es konnte keine Testbenachrichtigung versendet werden: Kein
|
||||
Pushover-Anwendungs-API-Token in den allgemeinen Einstellungen hinterlegt.',
|
||||
'pushover_error_nokey' => 'Es konnte keine Testbenachrichtigung versendet werden: Es wurde kein Pushover
|
||||
Key/Schlüssel in Ihrem Profil hinterlegt.',
|
||||
'log_retention_period' => 'Protokollierungszeitraum',
|
||||
'log_retention_period_description' => 'Anzahl in Tagen bis zur automatischen Bereinigung/Löschung sämtlicher
|
||||
Protokollierungsdaten im System. Geben Sie die Ziffer \'0\' ein, um die
|
||||
automatische Bereinigung/Löschung zu deaktivieren.',
|
||||
'log_retention_days' => 'Tage',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Dienst/Webseite \'%LABEL%\' ist offline: ip=%IP%, port=%PORT%. Fehler=%ERROR%',
|
||||
'off_email_subject' => 'Warnung: Dienst/Webseite \'%LABEL%\' ist offline.',
|
||||
'off_email_body' => 'Kann keine funktionierende Verbindung zum Dienst bzw. der Webseite
|
||||
aufbauen:<br><br>Dienst/Webseite: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Fehler:
|
||||
%ERROR%<br>Datum: %DATE% Uhr',
|
||||
'off_pushover_title' => 'Dienst/Webseite \'%LABEL%\' ist offline.',
|
||||
'off_pushover_message' => 'Kann keine funktionierende Verbindung zum Dienst bzw. der Webseite
|
||||
aufbauen:<br><br>Dienst/Webseite: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Fehler:
|
||||
%ERROR%<br>Datum: %DATE% Uhr',
|
||||
'on_sms' => 'Dienst/Webseite \'%LABEL%\' ist wieder online: ip=%IP%, port=%PORT%, offline für
|
||||
%LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'Hinweis: Dienst/Webseite \'%LABEL%\' ist wieder online.',
|
||||
'on_email_body' => 'Dienst/Webseite \'%LABEL%\' ist wieder erreichbar, offline für
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Datum:
|
||||
%DATE% Uhr',
|
||||
'on_pushover_title' => 'Dienst/Webseite \'%LABEL%\' ist wieder online.',
|
||||
'on_pushover_message' => 'Dienst/Webseite \'%LABEL%\' ist wieder erreichbar, offline für
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Datum: %DATE% Uhr',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => '%user_name%',
|
||||
'title_sign_in' => 'Bitte loggen Sie sich ein.',
|
||||
'title_forgot' => 'Passwort vergessen?',
|
||||
'title_reset' => 'Ihr Passwort zurücksetzen',
|
||||
'submit' => 'Senden',
|
||||
'remember_me' => 'Angemeldet bleiben',
|
||||
'login' => 'Login',
|
||||
'logout' => 'Abmelden',
|
||||
'username' => 'Benutzername',
|
||||
'password' => 'Passwort',
|
||||
'password_repeat' => 'Passwort wiederholen',
|
||||
'password_forgot' => 'Passwort vergessen?',
|
||||
'password_reset' => 'Passwort zurücksetzen',
|
||||
'password_reset_email_subject' => 'Setzen Sie Ihr Zugangspasswort für den Server Monitor',
|
||||
'password_reset_email_body' => 'Benutzen Sie bitte den folgenden Link, um Ihr Zugangspasswort zurückzusetzen.
|
||||
Bitte beachten Sie: Der Link verfällt in einer Stunde.<br><br>%link%',
|
||||
'error_user_incorrect' => 'Der angegebene Benutzername konnte nicht gefunden werden.',
|
||||
'error_login_incorrect' => 'Die angegebenen Informationen sind leider nicht korrekt.',
|
||||
'error_login_passwords_nomatch' => 'Die angegebenen Passwörter stimmen nicht überein.',
|
||||
'error_reset_invalid_link' => 'Der angegebene Link, um Ihr Zugangspasswort zurückzusetzen, ist ungültig.',
|
||||
'success_password_forgot' => 'Eine Nachricht wurde an Ihre E-Mail-Adresse versendet. Sie beschreibt, wie Sie
|
||||
Ihr Passwort zurücksetzen können.',
|
||||
'success_password_reset' => 'Ihr Passwort wurde erfolgreich zurückgesetzt. Bitte versuchen Sie, sich erneut
|
||||
anzumelden.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Nicht autorisiert',
|
||||
'401_unauthorized_description' => 'Sie haben nicht die erforderlichen Zugriffsrechte, um diese Seite
|
||||
aufzurufen.',
|
||||
),
|
||||
);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -18,280 +19,562 @@
|
|||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'English',
|
||||
'locale' => array('en_US.UTF-8', 'en_US', 'american', 'english-us'),
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Install',
|
||||
'action' => 'Action',
|
||||
'save' => 'Save',
|
||||
'edit' => 'Edit',
|
||||
'delete' => 'Delete',
|
||||
'date' => 'Date',
|
||||
'message' => 'Message',
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
'insert' => 'Insert',
|
||||
'add_new' => 'Add new',
|
||||
'update_available' => 'A new version ({version}) is available from <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Back to top',
|
||||
'go_back' => 'Go back',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Cancel',
|
||||
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Yesterday at %k:%M',
|
||||
'other_day_format' => '%A at %k:%M',
|
||||
'never' => 'Never',
|
||||
'hours_ago' => '%d hours ago',
|
||||
'an_hour_ago' => 'about an hour ago',
|
||||
'minutes_ago' => '%d minutes ago',
|
||||
'a_minute_ago' => 'about a minute ago',
|
||||
'seconds_ago' => '%d seconds ago',
|
||||
'a_second_ago' => 'a second ago',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Config',
|
||||
'server' => 'Servers',
|
||||
'server_log' => 'Log',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => 'Update',
|
||||
'user' => 'Users',
|
||||
'help' => 'Help',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'User',
|
||||
'name' => 'Name',
|
||||
'user_name' => 'Username',
|
||||
'password' => 'Password',
|
||||
'password_repeat' => 'Password repeat',
|
||||
'password_leave_blank' => 'Leave blank to keep unchanged',
|
||||
'level' => 'Level',
|
||||
'level_10' => 'Administrator',
|
||||
'level_20' => 'User',
|
||||
'level_description' => '<b>Administrators</b> have full access: they can manage servers, users and edit the global configuration.<br/><b>Users</b> can only view and run the updater for the servers that have been assigned to them.',
|
||||
'mobile' => 'Mobile',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||
'delete_title' => 'Delete User',
|
||||
'delete_message' => 'Are you sure you want to delete user \'%1\'?',
|
||||
'deleted' => 'User deleted.',
|
||||
'updated' => 'User updated.',
|
||||
'inserted' => 'User added.',
|
||||
'profile' => 'Profile',
|
||||
'profile_updated' => 'Your profile has been updated.',
|
||||
'error_user_name_bad_length' => 'Usernames must be between 2 and 64 characters.',
|
||||
'error_user_name_invalid' => 'The username may only contain alphabetic characters (a-z, A-Z), digits (0-9) and underscores (_).',
|
||||
'error_user_name_exists' => 'The given username already exists in the database.',
|
||||
'error_user_email_bad_length' => 'Email addresses must be between 5 and 255 characters.',
|
||||
'error_user_email_invalid' => 'The email address is invalid.',
|
||||
'error_user_level_invalid' => 'The given user level is invalid.',
|
||||
'error_user_no_match' => 'The user could not be found in the database.',
|
||||
'error_user_password_invalid' => 'The entered password is invalid.',
|
||||
'error_user_password_no_match' => 'The entered passwords do not match.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Log entries',
|
||||
'type' => 'Type',
|
||||
'status' => 'Status',
|
||||
'email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'No logs',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Server',
|
||||
'status' => 'Status',
|
||||
'label' => 'Label',
|
||||
'domain' => 'Domain/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||
'port' => 'Port',
|
||||
'type' => 'Type',
|
||||
'type_website' => 'Website',
|
||||
'type_service' => 'Service',
|
||||
'pattern' => 'Search string/pattern',
|
||||
'pattern_description' => 'If this pattern is not found on the website, the server will be marked offline. Regular expressions are allowed.',
|
||||
'last_check' => 'Last check',
|
||||
'last_online' => 'Last online',
|
||||
'monitoring' => 'Monitoring',
|
||||
'no_monitoring' => 'No monitoring',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Send Email',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Send SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Users',
|
||||
'delete_title' => 'Delete server',
|
||||
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
|
||||
'deleted' => 'Server deleted.',
|
||||
'updated' => 'Server updated.',
|
||||
'inserted' => 'Server added.',
|
||||
'latency' => 'Latency',
|
||||
'latency_max' => 'Latency (maximum)',
|
||||
'latency_min' => 'Latency (minimum)',
|
||||
'latency_avg' => 'Latency (average)',
|
||||
'uptime' => 'Uptime',
|
||||
'year' => 'Year',
|
||||
'month' => 'Month',
|
||||
'week' => 'Week',
|
||||
'day' => 'Day',
|
||||
'hour' => 'Hour',
|
||||
'warning_threshold' => 'Warning threshold',
|
||||
'warning_threshold_description' => 'Number of failed checks required before it is marked offline.',
|
||||
'chart_last_week' => 'Last week',
|
||||
'chart_history' => 'History',
|
||||
// Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||
'error_server_no_match' => 'Server not found.',
|
||||
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_service' => 'The IP address is not valid.',
|
||||
'error_server_ip_bad_website' => 'The website URL is not valid.',
|
||||
'error_server_type_invalid' => 'The selected server type is invalid.',
|
||||
'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'General',
|
||||
'language' => 'Language',
|
||||
'show_update' => 'Check for updates?',
|
||||
'email_status' => 'Allow sending email',
|
||||
'email_from_email' => 'Email from address',
|
||||
'email_from_name' => 'Email from name',
|
||||
'email_smtp' => 'Enable SMTP',
|
||||
'email_smtp_host' => 'SMTP host',
|
||||
'email_smtp_port' => 'SMTP port',
|
||||
'email_smtp_username' => 'SMTP username',
|
||||
'email_smtp_password' => 'SMTP password',
|
||||
'email_smtp_noauth' => 'Leave blank for no authentication',
|
||||
'sms_status' => 'Allow sending text messages',
|
||||
'sms_gateway' => 'Gateway to use for sending messages',
|
||||
'sms_gateway_mosms' => 'Mosms',
|
||||
'sms_gateway_mollie' => 'Mollie',
|
||||
'sms_gateway_spryng' => 'Spryng',
|
||||
'sms_gateway_inetworx' => 'Inetworx',
|
||||
'sms_gateway_clickatell' => 'Clickatell',
|
||||
'sms_gateway_textmarketer' => 'Textmarketer',
|
||||
'sms_gateway_smsglobal' => 'SMSGlobal',
|
||||
'sms_gateway_smsit' => 'Smsit',
|
||||
'sms_gateway_username' => 'Gateway username',
|
||||
'sms_gateway_password' => 'Gateway password',
|
||||
'sms_from' => 'Sender\'s phone number',
|
||||
'pushover_status' => 'Allow sending Pushover messages',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Before you can use Pushover, you need to <a href="%1$s" target="_blank">register an App</a> at their website and enter the App API Token here.',
|
||||
'alert_type' => 'Select when you\'d like to be notified.',
|
||||
'alert_type_description' => '<b>Status change:</b> '.
|
||||
'You will receive a notifcation when a server has a change in status. So from online -> offline or offline -> online.<br/>'.
|
||||
'<br /><b>Offline:</b> '.
|
||||
'You will receive a notification when a server goes offline for the *FIRST TIME ONLY*. For example, '.
|
||||
'your cronjob is every 15 mins and your server goes down at 1 am and stays down till 6 am. '.
|
||||
'You will get 1 notification at 1 am and thats it.<br/>'.
|
||||
'<br><b>Always:</b> '.
|
||||
'You will receive a notification every time the script runs and a site is down, even if the site has been offline for hours.',
|
||||
'alert_type_status' => 'Status change',
|
||||
'alert_type_offline' => 'Offline',
|
||||
'alert_type_always' => 'Always',
|
||||
'log_status' => 'Log status',
|
||||
'log_status_description' => 'If log status is set to TRUE, the monitor will log the event whenever the Notification settings are passed.',
|
||||
'log_email' => 'Log emails sent by the script',
|
||||
'log_sms' => 'Log text messages sent by the script',
|
||||
'log_pushover' => 'Log pushover messages sent by the script',
|
||||
'updated' => 'The configuration has been updated.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Email settings',
|
||||
'settings_sms' => 'Text message settings',
|
||||
'settings_pushover' => 'Pushover settings',
|
||||
'settings_notification' => 'Notification settings',
|
||||
'settings_log' => 'Log settings',
|
||||
'auto_refresh' => 'Auto-refresh',
|
||||
'auto_refresh_servers' =>
|
||||
'Auto-refresh servers page.<br/>'.
|
||||
'<span class="small">'.
|
||||
'Time in seconds, if 0 the page won\'t refresh.'.
|
||||
'</span>',
|
||||
'seconds' => 'seconds',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'An email will be sent to the address specified in your user profile.',
|
||||
'test_sms' => 'An SMS will be sent to the phone number specified in your user profile.',
|
||||
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||
'send' => 'Send',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Test message',
|
||||
'email_sent' => 'Email sent',
|
||||
'email_error' => 'Error in email sending',
|
||||
'sms_sent' => 'Sms sent',
|
||||
'sms_error' => 'Error in sms sending',
|
||||
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||
'pushover_sent' => 'Pushover notification sent',
|
||||
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||
'log_retention_period' => 'Log retention period',
|
||||
'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
|
||||
'log_retention_days' => 'days',
|
||||
),
|
||||
// for newlines in the email messages use <br/>
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Server \'%LABEL%\' is DOWN: ip=%IP%, port=%PORT%. Error=%ERROR%',
|
||||
'off_email_subject' => 'IMPORTANT: Server \'%LABEL%\' is DOWN',
|
||||
'off_email_body' => "Failed to connect to the following server:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Error: %ERROR%<br/>Date: %DATE%",
|
||||
'off_pushover_title' => 'Server \'%LABEL%\' is DOWN',
|
||||
'off_pushover_message' => "Failed to connect to the following server:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Error: %ERROR%<br/>Date: %DATE%",
|
||||
'on_sms' => 'Server \'%LABEL%\' is RUNNING: ip=%IP%, port=%PORT%',
|
||||
'on_email_subject' => 'IMPORTANT: Server \'%LABEL%\' is RUNNING',
|
||||
'on_email_body' => "Server '%LABEL%' is running again:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Date: %DATE%",
|
||||
'on_pushover_title' => 'Server \'%LABEL%\' is RUNNING',
|
||||
'on_pushover_message' => 'Server \'%LABEL%\' is running again:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Date: %DATE%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Welcome, %user_name%',
|
||||
'title_sign_in' => 'Please sign in',
|
||||
'title_forgot' => 'Forgot your password?',
|
||||
'title_reset' => 'Reset your password',
|
||||
'submit' => 'Submit',
|
||||
'remember_me' => 'Remember me',
|
||||
'login' => 'Login',
|
||||
'logout' => 'Logout',
|
||||
'username' => 'Username',
|
||||
'password' => 'Password',
|
||||
'password_repeat' => 'Repeat password',
|
||||
'password_forgot' => 'Forgot password?',
|
||||
'password_reset' => 'Reset password',
|
||||
'password_reset_email_subject' => 'Reset your password for PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Please use the following link to reset your password. Please note it expires in 1 hour.<br/><br/>%link%',
|
||||
'error_user_incorrect' => 'The provided username could not be found.',
|
||||
'error_login_incorrect' => 'The information is incorrect.',
|
||||
'error_login_passwords_nomatch' => 'The provided passwords do not match.',
|
||||
'error_reset_invalid_link' => 'The reset link you provided is invalid.',
|
||||
'success_password_forgot' => 'An email has been sent to you with information how to reset your password.',
|
||||
'success_password_reset' => 'Your password has been reset successfully. Please login.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Unauthorized',
|
||||
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||
),
|
||||
'name' => 'English',
|
||||
'locale' => array(
|
||||
'0' => 'en_US.UTF-8',
|
||||
'1' => 'en_US',
|
||||
'2' => 'american',
|
||||
'3' => 'english-us',
|
||||
),
|
||||
'locale_tag' => 'en',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Install',
|
||||
'action' => 'Action',
|
||||
'save' => 'Save',
|
||||
'edit' => 'Edit',
|
||||
'delete' => 'Delete',
|
||||
'view' => 'View',
|
||||
'date' => 'Date',
|
||||
'message' => 'Message',
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
'insert' => 'Insert',
|
||||
'add_new' => 'Add new',
|
||||
'update_available' => 'A new version ({version}) is available. Click <a href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank" rel="noopener">here</a> to download the update.',
|
||||
'back_to_top' => 'Back to top',
|
||||
'go_back' => 'Go back',
|
||||
'ok' => 'OK',
|
||||
'bad' => 'bad',
|
||||
'cancel' => 'Cancel',
|
||||
'none' => 'None',
|
||||
'activate' => 'Activate',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Yesterday at %k:%M',
|
||||
'other_day_format' => '%A at %k:%M',
|
||||
'never' => 'Never',
|
||||
'hours_ago' => '%d hours ago',
|
||||
'an_hour_ago' => 'about an hour ago',
|
||||
'minutes_ago' => '%d minutes ago',
|
||||
'a_minute_ago' => 'about a minute ago',
|
||||
'seconds_ago' => '%d seconds ago',
|
||||
'a_second_ago' => 'a second ago',
|
||||
'year' => 'year',
|
||||
'years' => 'years',
|
||||
'month' => 'month',
|
||||
'months' => 'months',
|
||||
'day' => 'day',
|
||||
'days' => 'days',
|
||||
'hour' => 'hour',
|
||||
'hours' => 'hours',
|
||||
'minute' => 'minute',
|
||||
'minutes' => 'minutes',
|
||||
'second' => 'second',
|
||||
'seconds' => 'seconds',
|
||||
'millisecond' => 'millisecond',
|
||||
'milliseconds' => 'milliseconds',
|
||||
'current' => 'current',
|
||||
'settings' => 'Settings',
|
||||
'search' => 'Search',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Config',
|
||||
'server' => 'Servers',
|
||||
'server_log' => 'Log',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => 'Update',
|
||||
'user' => 'Users',
|
||||
'help' => 'Help',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'User',
|
||||
'name' => 'Name',
|
||||
'user_name' => 'Username',
|
||||
'password' => 'Password',
|
||||
'password_repeat' => 'Password repeat',
|
||||
'password_leave_blank' => 'Leave blank to keep unchanged',
|
||||
'level' => 'Level',
|
||||
'level_10' => 'Administrator',
|
||||
'level_20' => 'User',
|
||||
'level_30' => 'Anonymous',
|
||||
'level_description' => '<b>Administrators</b> have full access: they can manage servers, users and edit the
|
||||
global configuration.<br><b>Users</b> can only view and run the updater for the
|
||||
servers that have been assigned to them.',
|
||||
'mobile' => 'Mobile',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/" target="_blank">their website</a> for more info.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||
'discord' => 'Discord',
|
||||
'discord_label' => 'Discord',
|
||||
'discord_description' => 'Put your <a href="https://discordjs.guide/popular-topics/webhooks.html" target="_blank">webhook</a> here.',
|
||||
'telegram' => 'Telegram',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> is a chat app that makes it easy to get real-time notifications. Visit the <a href="http://docs.phpservermonitor.org/" target="_blank">documentation</a> for more info and an install guide.',
|
||||
'telegram_chat_id' => 'Telegram chat id',
|
||||
'telegram_chat_id_description' => 'The message will be send to the corresponding chat.',
|
||||
'telegram_get_chat_id' => 'Click here to get your chat id',
|
||||
'activate_telegram' => 'Activate Telegram notifications',
|
||||
'activate_telegram_description' => 'Allow Telegram notifications to be sent to the specified chat id. Without this permission, Telegram doesn\'t allow us to send notifications to you.',
|
||||
'telegram_bot_username_found' => 'The bot was found!<br><a href="%s" target="_blank" rel="noopener"><button class="btn btn-primary">Next step</button></a> <br>This will open a chat with the bot. Here you need to press start or type /start.',
|
||||
'telegram_bot_username_error_token' => '401 - Unauthorized. Please make sure that the API token is valid.',
|
||||
'telegram_bot_error' => 'An error has occurred while activating Telegram notification: %s',
|
||||
'jabber' => 'Jabber',
|
||||
'jabber_label' => 'Jabber',
|
||||
'jabber_description' => 'You Jabber account',
|
||||
'webhook' => 'Webhook',
|
||||
'webhook_description' => 'Send a json webhook to a certain endpoint.',
|
||||
'webhook_url' => 'Webhook Url',
|
||||
'webhook_url_description' => 'Webhook public endpoint url, should start with https://.',
|
||||
'webhook_json' => 'Webhook JSON',
|
||||
'webhook_json_description' => 'Define a custom json, e.g. {"username": "servermon: #server_label" "text": "#server_ip is **#status**"}.<br>Available variables: #message, #server_error, #server_ip, #server_label, #server_last_offline_duration and #status',
|
||||
'delete_title' => 'Delete User',
|
||||
'delete_message' => 'Are you sure you want to delete user \'%1\'?',
|
||||
'deleted' => 'User deleted.',
|
||||
'updated' => 'User updated.',
|
||||
'inserted' => 'User added.',
|
||||
'profile' => 'Profile',
|
||||
'profile_updated' => 'Your profile has been updated.',
|
||||
'error_user_name_bad_length' => 'Usernames must be between 2 and 64 characters.',
|
||||
'error_user_name_invalid' => 'The username may only contain alphabetic characters (a-z, A-Z), digits (0-9), dots (.) and underscores (_).',
|
||||
'error_user_name_exists' => 'The given username already exists in the database.',
|
||||
'error_user_email_bad_length' => 'Email addresses must be between 5 and 255 characters.',
|
||||
'error_user_email_invalid' => 'The email address is invalid.',
|
||||
'error_user_level_invalid' => 'The given user level is invalid.',
|
||||
'error_user_no_match' => 'The user could not be found in the database.',
|
||||
'error_user_password_invalid' => 'The entered password is invalid.',
|
||||
'error_user_password_no_match' => 'The entered passwords do not match.',
|
||||
'error_user_admin_cant_be_deleted' => 'You can\'t remove the last administrator.',
|
||||
'error_user_cant_be_anonymous' => 'Only user \'__public__\' can have the level anonymous.'
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Log entries',
|
||||
'type' => 'Type',
|
||||
'status' => 'Status',
|
||||
'email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'discord' => 'Discord',
|
||||
'pushover' => 'Pushover',
|
||||
'webhook' => 'Webhook',
|
||||
'telegram' => 'Telegram',
|
||||
'jabber' => 'Jabber',
|
||||
'no_logs' => 'No logs',
|
||||
'clear' => 'Clear log',
|
||||
'delete_title' => 'Delete log',
|
||||
'delete_message' => 'Are you sure you want to delete <b>all</b> logs?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Server',
|
||||
'status' => 'Status',
|
||||
'label' => 'Label',
|
||||
'domain' => 'Domain/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||
'authentication_settings' => 'Authentication Settings',
|
||||
'optional' => 'Optional',
|
||||
'website_username' => 'Username',
|
||||
'website_username_description' => 'Username to access the site. (Only Apache authentication is supported.)',
|
||||
'website_password' => 'Password',
|
||||
'website_password_description' => 'Password to access the site. The password is encrypted in the database.',
|
||||
'fieldset_monitoring' => 'Monitoring',
|
||||
'fieldset_permissions' => 'Permissions',
|
||||
'permissions' => 'Users who can view and be notified about this server',
|
||||
'port' => 'Port',
|
||||
'custom_port' => 'Custom Port',
|
||||
'popular_ports' => 'Popular Ports',
|
||||
'request_method' => 'Request method',
|
||||
'custom_request_method' => 'Custom request method',
|
||||
'popular_request_methods' => 'Popular request methods',
|
||||
'post_field' => 'Post field',
|
||||
'post_field_description' => 'The data that will be send using the request method above.',
|
||||
'please_select' => 'Please select',
|
||||
'type' => 'Type',
|
||||
'type_website' => 'Website',
|
||||
'type_service' => 'Service',
|
||||
'type_ping' => 'Ping',
|
||||
'pattern' => 'Search string/pattern',
|
||||
'pattern_description' => 'If this pattern is not found on the website, the server will be marked online/offline. Regular expressions are allowed.',
|
||||
'pattern_online' => 'Pattern indicates website is',
|
||||
'pattern_online_description' => 'Online: If this pattern was found on the website, the server will be marked online. Offline: If this pattern was not found on the website, the server will be marked offline.',
|
||||
'redirect_check' => 'Redirecting to another domain is',
|
||||
'redirect_check_description' => 'Redirect to another domain is usually a bad sign.',
|
||||
'allow_http_status' => 'Allow HTTP status code',
|
||||
'allow_http_status_description' => 'Mark website as online. HTTP Status codes lower then 400 are marked as online by default. Seperate with |.',
|
||||
'header_name' => 'Header name',
|
||||
'header_value' => 'Header value',
|
||||
'header_name_description' => 'Case-sensitive.',
|
||||
'header_value_description' => 'Regular expressions are allowed.',
|
||||
'last_check' => 'Last check',
|
||||
'last_online' => 'Last online',
|
||||
'last_offline' => 'Last offline',
|
||||
'last_output' => 'Last positive output',
|
||||
'last_error' => 'Last error',
|
||||
'last_error_output' => 'Last error output',
|
||||
'output' => 'Output',
|
||||
'monitoring' => 'Monitoring',
|
||||
'no_monitoring' => 'No monitoring',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Send Email',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Send SMS',
|
||||
'discord' => 'Discord',
|
||||
'send_discord' => 'Send Discord notification',
|
||||
'webhook' => 'Webhook',
|
||||
'send_webhook' => 'Send Webhook notification',
|
||||
'pushover' => 'Pushover',
|
||||
'send_pushover' => 'Send Pushover notification',
|
||||
'telegram' => 'Telegram',
|
||||
'send_telegram' => 'Send Telegram notification',
|
||||
'jabber' => 'Jabber',
|
||||
'send_jabber' => 'Send Jabber notification',
|
||||
'users' => 'Users',
|
||||
'delete_title' => 'Delete server',
|
||||
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
|
||||
'deleted' => 'Server deleted.',
|
||||
'updated' => 'Server updated.',
|
||||
'inserted' => 'Server added.',
|
||||
'latency' => 'Latency',
|
||||
'latency_max' => 'Latency (maximum)',
|
||||
'latency_min' => 'Latency (minimum)',
|
||||
'latency_avg' => 'Latency (average)',
|
||||
'online' => 'online',
|
||||
'offline' => 'offline',
|
||||
'uptime' => 'Uptime',
|
||||
'year' => 'Year',
|
||||
'month' => 'Month',
|
||||
'week' => 'Week',
|
||||
'day' => 'Day',
|
||||
'hour' => 'Hour',
|
||||
'warning_threshold' => 'Warning threshold',
|
||||
'warning_threshold_description' => 'Number of failed checks required before it is marked offline.',
|
||||
'ssl_cert_expiry_days' => 'SSL Certificate Validity',
|
||||
'ssl_cert_expiry_days_description' => 'The minimum remaining days the SSL certificate is still valid. Use 0 to disable check.',
|
||||
'ssl_cert_expired' => 'SSL certificate expired since',
|
||||
'ssl_cert_expiring' => 'SSL certificate expiring:',
|
||||
'chart_last_week' => 'Last week',
|
||||
'chart_history' => 'History',
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||
'warning_notifications_disabled_discord' => 'Discord notifications are disabled.',
|
||||
'warning_notifications_disabled_webhook' => 'Webhook notifications are disabled.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||
'warning_notifications_disabled_telegram' => 'Telegram notifications are disabled.',
|
||||
'warning_notifications_disabled_jabber' => 'Jabber notifications are disabled.',
|
||||
'error_server_no_match' => 'Server not found.',
|
||||
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_service' => 'The IP address is not valid.',
|
||||
'error_server_ip_bad_website' => 'The website URL is not valid.',
|
||||
'error_server_type_invalid' => 'The selected server type is invalid.',
|
||||
'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
|
||||
'error_server_ssl_cert_expiry_days' => 'The remaining days for SSL certificate validity must be a valid integer greater than or equal to 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'General',
|
||||
'site_title' => 'Site title',
|
||||
'language' => 'Language',
|
||||
'show_update' => 'Check for updates?',
|
||||
'password_encrypt_key' => 'The encryption key password',
|
||||
'password_encrypt_key_note' => 'This key is used to encrypt passwords that are stored on servers for access to websites. If the key will change the stored password is invalid!',
|
||||
'proxy' => 'Enable proxy',
|
||||
'proxy_url' => 'Proxy URL',
|
||||
'proxy_user' => 'Proxy username',
|
||||
'proxy_password' => 'Proxy password',
|
||||
'email_status' => 'Allow sending email',
|
||||
'email_add_url' => 'Add url to the monitor in email',
|
||||
'email_from_email' => 'Email from address',
|
||||
'email_from_name' => 'Email from name',
|
||||
'email_smtp' => 'Enable SMTP',
|
||||
'email_smtp_host' => 'SMTP host',
|
||||
'email_smtp_port' => 'SMTP port',
|
||||
'email_smtp_security' => 'SMTP security',
|
||||
'email_smtp_security_none' => 'None',
|
||||
'email_smtp_username' => 'SMTP username',
|
||||
'email_smtp_password' => 'SMTP password',
|
||||
'email_smtp_noauth' => 'Leave blank for no authentication',
|
||||
'sms_status' => 'Allow sending text messages',
|
||||
'sms_gateway' => 'Gateway to use for sending messages',
|
||||
'sms_gateway_username' => 'Gateway username',
|
||||
'sms_gateway_password' => 'Gateway password',
|
||||
'sms_from' => 'Sender\'s phone number',
|
||||
'discord_status' => 'Allow sending Discord messages',
|
||||
'discord_description' => 'Discord is a service that makes it easy to get real-time notifications. See <a href="https://discord.com/" target="_blank">their website</a> for more info.',
|
||||
'webhook_status' => 'Allow sending webhooks',
|
||||
'webhook_description' => 'Allow sending webhooks to services like slack. The message payload end endpoint are defined in the profile settings.',
|
||||
'webhook_url' => 'Webhook Url',
|
||||
'webhook_url_description' => 'Url to webhook endpoint',
|
||||
'webhook_json' => 'Webhook Json',
|
||||
'webhook_json_description' => 'Define a custom json. Available variables: #message, #server_error, #server_ip, #server_label, #server_last_offline_duration and #status',
|
||||
'pushover_status' => 'Allow sending Pushover messages',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/" target="_blank">their website</a> for more info.',
|
||||
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Before you can use Pushover, you need to <a href="%1$s" target="_blank" rel="noopener">register an App</a> at their website and enter the App API Token here.',
|
||||
'telegram_status' => 'Allow sending Telegram messages',
|
||||
'telegram_add_url' => 'Add url to the monitor in the message',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> is a chat app that makes it easy to get real-time notifications. Visit the <a href="http://docs.phpservermonitor.org/" target="_blank">documentation</a> for more info and an install guide.',
|
||||
'telegram_api_token' => 'Telegram API Token',
|
||||
'telegram_api_token_description' => 'Before you can use Telegram, you need to get a API token. Visit the <a href="http://docs.phpservermonitor.org/" target="_blank">documentation</a> for help.',
|
||||
'jabber_status' => 'Allow sending Jabber (XMPP) messages',
|
||||
'jabber_description' => 'Visit the <a href="http://docs.phpservermonitor.org/">documentation</a> for more info and an install guide.',
|
||||
'jabber_host' => 'Host',
|
||||
'jabber_host_description' => 'Host of your Jabber account provider. For Google Account use talk.google.com.',
|
||||
'jabber_port' => 'Port',
|
||||
'jabber_port_description' => 'Port of your Jabber provider. Default 5222. For Google Account use 5223.',
|
||||
'jabber_username' => 'Username',
|
||||
'jabber_username_description' => 'For Google Account use incl. domain so for example example@google.com.',
|
||||
'jabber_domain' => 'Domain',
|
||||
'jabber_domain_description' => 'Domain of your Jabber provider. Left empty for Google Account.',
|
||||
'jabber_password' => 'Password',
|
||||
'jabber_password_description' => 'Fill only to set or change.',
|
||||
'jabber_check' => 'Check your Jabber account if message was received.',
|
||||
'dirauth_status' => 'Authenticate with directory service',
|
||||
'authdir_host_locn' => 'Directory host',
|
||||
'authdir_host_port' => 'Directory port',
|
||||
'authdir_type' => 'Service type',
|
||||
'authdir_type_description' => 'OpenLDAP: Directory is an OpenLDAP service.<br>AD
|
||||
DS: Directory is an Active Directory Domain Service.<br>AD
|
||||
LDS: Directory is an Active Directory Lightweight Directory
|
||||
Service.',
|
||||
'authdir_type_openldap' => 'OpenLDAP',
|
||||
'authdir_type_adds' => 'AD DS',
|
||||
'authdir_type_adlds' => 'AD LDS',
|
||||
'authdir_userdomain' => 'Active Directory domain',
|
||||
'authdir_userdomain_description' => 'User domain for Active Directory. This is typically the NETBIOS domain
|
||||
for AD DS and the DNS domain for AD LDS. Not used for OpenLDAP
|
||||
directories.',
|
||||
'authdir_ldapver' => 'LDAP protocol version',
|
||||
'authdir_ldapver_description' => 'Version of the LDAP specification. This is typically Version 3 (default).
|
||||
Version 2 was deprecated in 2003 (RFC3494).',
|
||||
'authdir_ldapfollowref' => 'Follow referrals',
|
||||
'authdir_ldapfollowref_description' => 'Follow referrals if the specified server refers to another server for
|
||||
the required information. Leave unchecked if you are unaware of this
|
||||
functionality.',
|
||||
'authdir_basedn' => 'Base DN*',
|
||||
'authdir_basedn_description' => 'Base distinguished name (DN) of the directory service. E.g.,
|
||||
dc=domain,dc=tld. This is a required field.',
|
||||
'authdir_usernameattrib' => 'Username attribute',
|
||||
'authdir_usernameattrib_description' => 'Attribute used by the directory service to refer to the username of
|
||||
the user.',
|
||||
'authdir_groupnameattrib' => 'Group name attribute',
|
||||
'authdir_groupnameattrib_description' => 'Attribute used by the directory service to refer to the group name
|
||||
of a group. This is used to check for group membership.',
|
||||
'authdir_groupmemattrib' => 'Group member attribute',
|
||||
'authdir_groupmemattrib_description' => 'Attribute used by the directory service to refer to the group(s) of
|
||||
which the user is a member. This is used to check for group
|
||||
membership.',
|
||||
'authdir_usercontainerrdn' => 'User container RDN',
|
||||
'authdir_usercontainerrdn_description' => 'Relative distinguished name of the users container in the
|
||||
directory. E.g., ou=Users',
|
||||
'authdir_groupcontainerrdn' => 'Group container RDN',
|
||||
'authdir_groupcontainerrdn_description' => 'Relative distinguished name of the groups container in the
|
||||
directory. E.g., ou=Groups',
|
||||
'authdir_groupname' => 'Authorised directory group',
|
||||
'authdir_groupname_description' => 'Directory group authorised to access application. Directory users not
|
||||
members of this group will not be authenticated (currently not available
|
||||
for AD).',
|
||||
'authdir_defaultrole' => 'Default role',
|
||||
'authdir_defaultrole_description' => 'Default role to be assigned to users logging in for the first time.',
|
||||
'alert_type' => 'Select when you\'d like to be notified.',
|
||||
'alert_type_description' => '<b>Status change:</b> You will receive a notification when a server has a change in status. So from online -> offline or offline -> online.<br><br><b>Offline:</b> You will receive a notification when a server goes offline for the *FIRST TIME ONLY*. For example, your cronjob is every 15 minutes and your server goes down at 1 am and stays down till 6 am. You will get 1 notification at 1 am and that\'s it.<br><br><b>Always:</b> You will receive a notification every time the script runs and a site is down, even if the site has been offline for hours.',
|
||||
'alert_type_status' => 'Status change',
|
||||
'alert_type_offline' => 'Offline',
|
||||
'alert_type_always' => 'Always',
|
||||
'combine_notifications' => 'Combine notifications',
|
||||
'combine_notifications_description' => 'Reduces the amount of notification by combining the notifications into 1 single notification. (This does not affect SMS notifications.)',
|
||||
'alert_proxy' => 'Even if enabled, proxy is never used for services',
|
||||
'alert_proxy_url' => 'Format: host:port',
|
||||
'log_status' => 'Log status',
|
||||
'log_status_description' => 'If log status is set to TRUE, the monitor will log the event whenever the notification settings are passed.',
|
||||
'log_email' => 'Log emails sent by the script',
|
||||
'log_sms' => 'Log text messages sent by the script',
|
||||
'log_discord' => 'Log Discord messages sent by the script',
|
||||
'log_pushover' => 'Log pushover messages sent by the script',
|
||||
'log_webhook' => 'Log webhook messages sent by the script',
|
||||
'log_telegram' => 'Log Telegram messages sent by the script',
|
||||
'log_jabber' => 'Log Jabber messages sent by the script',
|
||||
'updated' => 'The configuration has been updated.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_discord' => 'Discord',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'tab_webhook' => 'Webhook',
|
||||
'tab_telegram' => 'Telegram',
|
||||
'tab_jabber' => 'Jabber',
|
||||
'tab_auth' => 'Authentication',
|
||||
'settings_email' => 'Email settings',
|
||||
'settings_sms' => 'Text message settings',
|
||||
'settings_discord' => 'Discord settings',
|
||||
'settings_pushover' => 'Pushover settings',
|
||||
'settings_webhook' => 'Webhook settings',
|
||||
'settings_telegram' => 'Telegram settings',
|
||||
'settings_jabber' => 'Jabber settings',
|
||||
'settings_notification' => 'Notification settings',
|
||||
'settings_log' => 'Log settings',
|
||||
'settings_proxy' => 'Proxy settings',
|
||||
'settings_dirauth' => 'LDAP settings',
|
||||
'auto_refresh' => 'Auto-refresh',
|
||||
'auto_refresh_description' => 'Auto-refresh servers page.<br><span class="small">Time in seconds, if 0 the page won\'t refresh.</span>',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'An email will be sent to the address specified in your user profile.',
|
||||
'test_sms' => 'An SMS will be sent to the phone number specified in your user profile.',
|
||||
'test_discord' => 'A Discord notification will be sent to the webhook specified in your user profile.',
|
||||
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user
|
||||
profile.',
|
||||
'test_webhook' => 'A webhook notification will be sent to the given url endpoint.',
|
||||
'test_telegram' => 'A Telegram notification will be sent to the chat id specified in your user profile.',
|
||||
'test_jabber' => 'A Jabber notification will be sent to the jabber account specified in your user profile.',
|
||||
'send' => 'Send',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Test message',
|
||||
'email_sent' => 'Email sent',
|
||||
'email_error' => 'Error in email sending',
|
||||
'sms_sent' => 'SMS sent',
|
||||
'sms_error' => 'An error has occurred while sending the SMS: %s',
|
||||
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||
'discord_sent' => 'Discord notification sent',
|
||||
'discord_error' => 'An error has occurred while sending the Discord notification: %s',
|
||||
'discord_error_nowebhook' => 'Unable to send test Discord notification: no valid Discord webhook found in your user profile.',
|
||||
'webhook_sent' => 'Webhook notification sent',
|
||||
'webhook_error' => 'An error has occurred while sending the webhook notification: %s',
|
||||
'webhook_error_nourl' => 'Unable to send test notification: no url found in user profile.',
|
||||
'webhook_error_nojson' => 'Unable to send test notification: no json found in user profile.',
|
||||
'pushover_sent' => 'Pushover notification sent',
|
||||
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||
'telegram_sent' => 'Telegram notification sent',
|
||||
'telegram_error' => 'An error has occurred while sending the Telegram notification: %s',
|
||||
'telegram_error_notoken' => 'Unable to send test notification: no Telegram API token found in the global configuration.',
|
||||
'telegram_error_noid' => 'Unable to send test notification: no chat id found in your profile.',
|
||||
'jabber_sent' => 'Jabber notification sent',
|
||||
'jabber_error' => 'An error has occurred while sending the Jabber notification: %s',
|
||||
'jabber_error_noconfig' => 'Unable to send test notification: no Jabber account set in the global configuration.',
|
||||
'jabber_error_noaccount' => 'Unable to send test notification: no Jabber account found in your profile.',
|
||||
'log_retention_period' => 'Log retention period',
|
||||
'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
|
||||
'log_retention_days' => 'days',
|
||||
'user_agent' => 'User Agent',
|
||||
'user_agent_key_note' => 'Custom user agent used by monitor within communication with external services.',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Server \'%LABEL%\' is DOWN: ip=%IP%, port=%PORT%. Error=%ERROR%',
|
||||
'off_email_subject' => 'IMPORTANT: Server \'%LABEL%\' is DOWN',
|
||||
'off_email_body' => 'Failed to connect to the following server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Error: %ERROR%<br>Date: %DATE%',
|
||||
'off_discord_message' => 'Failed to connect to the following server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Error: %ERROR%<br>Date: %DATE%',
|
||||
'off_email_body' => 'Failed to connect to the following server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Error: %ERROR%<br>Date: %DATE%',
|
||||
'off_webhook_title' => 'Server \'%LABEL%\' is DOWN',
|
||||
'off_webhook_message' => 'Failed to connect to the following server:<br><br>Server: %LABEL%<br>IP:
|
||||
%IP%<br>Port: %PORT%<br>Error: %ERROR%<br>Date: %DATE%',
|
||||
'off_pushover_title' => 'Server \'%LABEL%\' is DOWN',
|
||||
'off_pushover_message' => 'Failed to connect to the following server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Error: %ERROR%<br>Date: %DATE%',
|
||||
'off_telegram_message' => 'Failed to connect to the following server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Error: %ERROR%<br>Date: %DATE%',
|
||||
'off_jabber_message' => 'Failed to connect to the following server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Error: %ERROR%<br>Date: %DATE%',
|
||||
'on_sms' => 'Server \'%LABEL%\' is RUNNING: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'IMPORTANT: Server \'%LABEL%\' is RUNNING',
|
||||
'on_email_body' => 'Server \'%LABEL%\' is running again, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Date:
|
||||
%DATE%',
|
||||
'on_discord_message' => 'Server \'%LABEL%\' is running again, it was down for:
|
||||
%LAST_OFFLINE_DURATION%<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Date: %DATE%',
|
||||
'on_webhook_title' => 'Server \'%LABEL%\' is RUNNING',
|
||||
'on_webhook_message' => 'Server \'%LABEL%\' is running again, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Date:
|
||||
%DATE%',
|
||||
'on_pushover_title' => 'Server \'%LABEL%\' is RUNNING',
|
||||
'on_pushover_message' => 'Server \'%LABEL%\' is running again, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Date:
|
||||
%DATE%',
|
||||
'on_telegram_message' => 'Server \'%LABEL%\' is running again, it was down for:
|
||||
%LAST_OFFLINE_DURATION%<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Date:
|
||||
%DATE%',
|
||||
'on_jabber_message' => 'Server \'%LABEL%\' is running again, it was down for:
|
||||
%LAST_OFFLINE_DURATION%<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Date:
|
||||
%DATE%',
|
||||
'combi_off_email_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Error:
|
||||
%ERROR%</li><li>Date: %DATE%</li></ul>',
|
||||
'combi_off_discord_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>- Error: %ERROR%<br>-
|
||||
Date: %DATE%<br><br>',
|
||||
'combi_off_webhook_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Error:
|
||||
%ERROR%</li><li>Date: %DATE%</li></ul>',
|
||||
'combi_off_pushover_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Error:
|
||||
%ERROR%</li><li>Date: %DATE%</li></ul>',
|
||||
'combi_off_telegram_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>- Error: %ERROR%<br>-
|
||||
Date: %DATE%<br><br>',
|
||||
'combi_off_jabber_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>- Error: %ERROR%<br>-
|
||||
Date: %DATE%<br><br>',
|
||||
'combi_on_email_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Downtime:
|
||||
%LAST_OFFLINE_DURATION%</li><li>Date: %DATE%</li></ul>',
|
||||
'combi_on_webhook_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port:
|
||||
%PORT%</li><li>Downtime: %LAST_OFFLINE_DURATION%</li><li>Date:
|
||||
%DATE%</li></ul>',
|
||||
'combi_on_discord_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>-
|
||||
Downtime: %LAST_OFFLINE_DURATION%<br>- Date: %DATE%<br><br>',
|
||||
'combi_on_pushover_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port:
|
||||
%PORT%</li><li>Downtime: %LAST_OFFLINE_DURATION%</li><li>Date:
|
||||
%DATE%</li></ul>',
|
||||
'combi_on_telegram_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>- Downtime:
|
||||
%LAST_OFFLINE_DURATION%<br>- Date: %DATE%<br><br>',
|
||||
'combi_on_jabber_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>- Downtime:
|
||||
%LAST_OFFLINE_DURATION%<br>- Date: %DATE%<br><br>',
|
||||
'combi_email_subject' => 'IMPORTANT: \'%UP%\' servers UP again, \'%DOWN%\' servers DOWN',
|
||||
'combi_webhook_subject' => '\'%UP%\' servers UP again, \'%DOWN%\' servers DOWN',
|
||||
'combi_pushover_subject' => '\'%UP%\' servers UP again, \'%DOWN%\' servers DOWN',
|
||||
'combi_email_message' => '<b>The following servers went down:</b><br>%DOWN_SERVERS%<br><b>The following
|
||||
servers are up again:</b><br>%UP_SERVERS%',
|
||||
'combi_discord_message' => '<b>The following servers went down:</b><br>%DOWN_SERVERS%<br><b>The following
|
||||
servers are up again:</b><br>%UP_SERVERS%',
|
||||
'combi_webhook_message' => '<b>The following servers went down:</b><br>%DOWN_SERVERS%<br><b>The following
|
||||
servers are up again:</b><br>%UP_SERVERS%',
|
||||
'combi_pushover_message' => '<b>The following servers went down:</b><br>%DOWN_SERVERS%<br><b>The following
|
||||
servers are up again:</b><br>%UP_SERVERS%',
|
||||
'combi_telegram_message' => '<b>The following servers went down:</b><br>%DOWN_SERVERS%<br><b>The following
|
||||
servers are up again:</b><br>%UP_SERVERS%',
|
||||
'combi_jabber_message' => '<b>The following servers went down:</b><br>%DOWN_SERVERS%<br><b>The following
|
||||
servers are up again:</b><br>%UP_SERVERS%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Welcome, %user_name%',
|
||||
'title_sign_in' => 'Please sign in',
|
||||
'title_forgot' => 'Forgot your password?',
|
||||
'title_reset' => 'Reset your password',
|
||||
'submit' => 'Submit',
|
||||
'remember_me' => 'Remember me',
|
||||
'login' => 'Login',
|
||||
'logout' => 'Logout',
|
||||
'username' => 'Username',
|
||||
'password' => 'Password',
|
||||
'password_repeat' => 'Repeat password',
|
||||
'password_forgot' => 'Forgot password?',
|
||||
'password_reset' => 'Reset password',
|
||||
'password_reset_email_subject' => 'Reset your password for PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Please use the following link to reset your password. Please note it expires in 1 hour.<br><br>%link%',
|
||||
'error_user_incorrect' => 'The provided username could not be found.',
|
||||
'error_login_incorrect' => 'The information is incorrect.',
|
||||
'error_login_passwords_nomatch' => 'The provided passwords do not match.',
|
||||
'error_reset_invalid_link' => 'The reset link you provided is invalid.',
|
||||
'success_password_forgot' => 'An email has been sent to you with information how to reset your password.',
|
||||
'success_password_reset' => 'Your password has been reset successfully. Please login.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Unauthorized',
|
||||
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||
),
|
||||
);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -19,279 +20,449 @@
|
|||
*
|
||||
* @package phpservermon
|
||||
* @author Klemens Häckel <http://clickdimension.wordpress.com/>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @author Luis Rodriguez <luis@techreanimate.com>
|
||||
* @author Mauro Vietri <mauro.vietri@outlook.com>
|
||||
* @author Federico Vera <fede@riddler.com.ar>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Español - Spanish',
|
||||
'locale' => array('es_ES.UTF-8', 'es_ES', 'spanish', 'esp'),
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Install',
|
||||
'action' => 'Acción',
|
||||
'save' => 'Guardar',
|
||||
'edit' => 'Modificar',
|
||||
'delete' => 'Eliminar',
|
||||
'date' => 'Fecha',
|
||||
'message' => 'Mensaje',
|
||||
'yes' => 'Si',
|
||||
'no' => 'No',
|
||||
'insert' => 'Insertar',
|
||||
'add_new' => 'Agregar nuevo',
|
||||
'update_available' => 'Hay una nueva versión ({version}) disponible en <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Back to top',
|
||||
'go_back' => 'Go back',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Cancel',
|
||||
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Yesterday at %k:%M',
|
||||
'other_day_format' => '%A at %k:%M',
|
||||
'never' => 'Never',
|
||||
'hours_ago' => '%d hours ago',
|
||||
'an_hour_ago' => 'about an hour ago',
|
||||
'minutes_ago' => '%d minutes ago',
|
||||
'a_minute_ago' => 'about a minute ago',
|
||||
'seconds_ago' => '%d seconds ago',
|
||||
'a_second_ago' => 'a second ago',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Configurar',
|
||||
'server' => 'Servidores',
|
||||
'server_log' => 'Log',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => 'Actualizar',
|
||||
'user' => 'Usuarios',
|
||||
'help' => 'Ayuda',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Usuario',
|
||||
'name' => 'Nombre',
|
||||
'user_name' => 'Username',
|
||||
'password' => 'Password',
|
||||
'password_repeat' => 'Password repeat',
|
||||
'password_leave_blank' => 'Leave blank to keep unchanged',
|
||||
'level' => 'Level',
|
||||
'level_10' => 'Administrator',
|
||||
'level_20' => 'User',
|
||||
'level_description' => '<b>Administrators</b> have full access: they can manage servers, users and edit the global configuration.<br/><b>Users</b> can only view and run the updater for the servers that have been assigned to them.',
|
||||
'mobile' => 'Mobil',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||
'delete_title' => 'Delete User',
|
||||
'delete_message' => 'Are you sure you want to delete user \'%1\'?',
|
||||
'deleted' => 'User deleted.',
|
||||
'updated' => 'Usuario actualizado.',
|
||||
'inserted' => 'Usuario ingresado.',
|
||||
'profile' => 'Profile',
|
||||
'profile_updated' => 'Your profile has been updated.',
|
||||
'error_user_name_bad_length' => 'Usernames must be between 2 and 64 characters.',
|
||||
'error_user_name_invalid' => 'The username may only contain alphabetic characters (a-z, A-Z), digits (0-9) and underscores (_).',
|
||||
'error_user_name_exists' => 'The given username already exists in the database.',
|
||||
'error_user_email_bad_length' => 'Email addresses must be between 5 and 255 characters.',
|
||||
'error_user_email_invalid' => 'The email address is invalid.',
|
||||
'error_user_level_invalid' => 'The given user level is invalid.',
|
||||
'error_user_no_match' => 'The user could not be found in the database.',
|
||||
'error_user_password_invalid' => 'The entered password is invalid.',
|
||||
'error_user_password_no_match' => 'The entered passwords do not match.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Registro Log',
|
||||
'type' => 'Tipo',
|
||||
'status' => 'Estado',
|
||||
'email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'No logs',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Servidores',
|
||||
'status' => 'Status',
|
||||
'label' => 'Titulo',
|
||||
'domain' => 'Domain/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||
'port' => 'Port',
|
||||
'type' => 'Tipo',
|
||||
'type_website' => 'Website',
|
||||
'type_service' => 'Service',
|
||||
'pattern' => 'Search string/pattern',
|
||||
'pattern_description' => 'If this pattern is not found on the website, the server will be marked offline. Regular expressions are allowed.',
|
||||
'last_check' => 'Ultima verificación',
|
||||
'last_online' => 'Última vez en línea',
|
||||
'monitoring' => 'Monitoreo',
|
||||
'no_monitoring' => 'No monitoring',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Users',
|
||||
'delete_title' => 'Delete Server',
|
||||
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
|
||||
'deleted' => 'Server deleted.',
|
||||
'updated' => 'Servidor arctualizado.',
|
||||
'inserted' => 'Servidor ingresado.',
|
||||
'latency' => 'Tiempo de respuesta',
|
||||
'latency_max' => 'Tiempo de respuesta (maximum)',
|
||||
'latency_min' => 'Tiempo de respuesta (minimum)',
|
||||
'latency_avg' => 'Tiempo de respuesta (average)',
|
||||
'uptime' => 'Uptime',
|
||||
'year' => 'Year',
|
||||
'month' => 'Month',
|
||||
'week' => 'Week',
|
||||
'day' => 'Day',
|
||||
'hour' => 'Hour',
|
||||
'warning_threshold' => 'Warning threshold',
|
||||
'warning_threshold_description' => 'Number of failed checks required before it is marked offline.',
|
||||
'chart_last_week' => 'Last week',
|
||||
'chart_history' => 'History',
|
||||
// Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||
'error_server_no_match' => 'Server not found.',
|
||||
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_service' => 'The IP address is not valid.',
|
||||
'error_server_ip_bad_website' => 'The website URL is not valid.',
|
||||
'error_server_type_invalid' => 'The selected server type is invalid.',
|
||||
'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'General',
|
||||
'language' => 'Idioma',
|
||||
'show_update' => 'Comprobar actualizaciones semanalmente ?',
|
||||
'email_status' => 'Habilitar envio de email ?',
|
||||
'email_from_email' => 'Email desde dirección',
|
||||
'email_from_name' => 'Email desde nombre',
|
||||
'email_smtp' => 'Enable SMTP',
|
||||
'email_smtp_host' => 'SMTP host',
|
||||
'email_smtp_port' => 'SMTP port',
|
||||
'email_smtp_username' => 'SMTP username',
|
||||
'email_smtp_password' => 'SMTP password',
|
||||
'email_smtp_noauth' => 'Leave blank for no authentication',
|
||||
'sms_status' => 'Habilitar envio de SMS ?',
|
||||
'sms_gateway' => 'SMS Gateway',
|
||||
'sms_gateway_mosms' => 'Mosms',
|
||||
'sms_gateway_mollie' => 'Mollie',
|
||||
'sms_gateway_spryng' => 'Spryng',
|
||||
'sms_gateway_inetworx' => 'Inetworx',
|
||||
'sms_gateway_clickatell' => 'Clickatell',
|
||||
'sms_gateway_textmarketer' => 'Textmarketer',
|
||||
'sms_gateway_smsglobal' => 'SMSGlobal',
|
||||
'sms_gateway_smsit' => 'Smsit',
|
||||
'sms_gateway_username' => 'Gateway username',
|
||||
'sms_gateway_password' => 'Gateway password',
|
||||
'sms_from' => 'Número origen del SMS',
|
||||
'pushover_status' => 'Allow sending Pushover messages',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Before you can use Pushover, you need to <a href="%1$s" target="_blank">register an App</a> at their website and enter the App API Token here.',
|
||||
'alert_type' => 'Cuando desea recibir notificaciones ?',
|
||||
'alert_type_description' => '<b>... Al cambiar el estado:</b> '.
|
||||
'p.ej. online -> offline o offline -> online.<br/>'.
|
||||
'<br /><b>Offline:</b> '.
|
||||
'Recibirá una notificación cuando el servidor va fuera de línea.'.
|
||||
'Se envia un sólo mensaje cuando el CronJob detecta la caída por primera vez.<br/>'.
|
||||
'<br><b>Siempre:</b> '.
|
||||
'Se le enviará una notificación, cada vez que se ejecuta el script o el CronJob, '.
|
||||
'aunqué el servicio puede haber estado fuera de línea por varias horas antes.',
|
||||
'alert_type_status' => 'Cambio de estado',
|
||||
'alert_type_offline' => 'Offline',
|
||||
'alert_type_always' => 'Siempre',
|
||||
'log_status' => 'Log status',
|
||||
'log_status_description' => 'Al setear TRUE (marcar) se protocolan todos los estados.',
|
||||
'log_email' => 'Enviar Log via email?',
|
||||
'log_sms' => 'Enviar Log via SMS ?',
|
||||
'log_pushover' => 'Log pushover messages sent by the script',
|
||||
'updated' => 'Configuración guardada.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Email',
|
||||
'settings_sms' => 'Mensaje SMS',
|
||||
'settings_pushover' => 'Pushover settings',
|
||||
'settings_notification' => 'Notificación',
|
||||
'settings_log' => 'Log',
|
||||
'auto_refresh' => 'Refrescar automáticamente página de servidores',
|
||||
'auto_refresh_servers' =>
|
||||
'Refrescar automáticamente página de servidores.<br/>'.
|
||||
'<span class="small">'.
|
||||
'Tiempo en segundos, indicar "0" para no actualizar.'.
|
||||
'</span>',
|
||||
'seconds' => 'seconds',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'An email will be sent to the address specified in your user profile.',
|
||||
'test_sms' => 'An SMS will be sent to the phone number specified in your user profile.',
|
||||
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||
'send' => 'Send',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Test message',
|
||||
'email_sent' => 'Email sent',
|
||||
'email_error' => 'Error in email sending',
|
||||
'sms_sent' => 'Sms sent',
|
||||
'sms_error' => 'Error in sms sending',
|
||||
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||
'pushover_sent' => 'Pushover notification sent',
|
||||
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||
'log_retention_period' => 'Log retention period',
|
||||
'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
|
||||
'log_retention_days' => 'days',
|
||||
),
|
||||
// for newlines in the email messages use <br/>
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Servidor \'%LABEL%\' está fuera de línea: ip=%IP%, port=%PORT%. error=%ERROR%',
|
||||
'off_email_subject' => 'Importante: Servidor \'%LABEL%\' está fuera de línea',
|
||||
'off_email_body' => "No posible conectar al servidor:<br/><br/>Servidor: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Error: %ERROR%<br/>Fecha: %DATE%",
|
||||
'off_pushover_title' => 'Servidor \'%LABEL%\' está fuera de línea',
|
||||
'off_pushover_message' => "No posible conectar al servidor:<br/><br/>Servidor: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Error: %ERROR%<br/>Fecha: %DATE%",
|
||||
'on_sms' => 'Servidor \'%LABEL%\' ya está de nuevo funcionando en línea: ip=%IP%, port=%PORT%',
|
||||
'on_email_subject' => 'Importante: Servidor \'%LABEL%\' ya está de nuevo en línea',
|
||||
'on_email_body' => "Servidor '%LABEL%' ya está funcionando en línea de nuevo:<br/><br/>Servidor: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Fecha: %DATE%",
|
||||
'on_pushover_title' => 'Servidor \'%LABEL%\' ya está de nuevo en línea',
|
||||
'on_pushover_message' => "Servidor '%LABEL%' ya está funcionando en línea de nuevo:<br/><br/>Servidor: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Fecha: %DATE%",
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Welcome, %user_name%',
|
||||
'title_sign_in' => 'Please sign in',
|
||||
'title_forgot' => 'Forgot your password?',
|
||||
'title_reset' => 'Reset your password',
|
||||
'submit' => 'Submit',
|
||||
'remember_me' => 'Remember me',
|
||||
'login' => 'Login',
|
||||
'logout' => 'Logout',
|
||||
'username' => 'Username',
|
||||
'password' => 'Password',
|
||||
'password_repeat' => 'Repeat password',
|
||||
'password_forgot' => 'Forgot password?',
|
||||
'password_reset' => 'Reset password',
|
||||
'password_reset_email_subject' => 'Reset your password for PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Please use the following link to reset your password. Please note it expires in 1 hour.<br/><br/>%link%',
|
||||
'error_user_incorrect' => 'The provided username could not be found.',
|
||||
'error_login_incorrect' => 'The information is incorrect.',
|
||||
'error_login_passwords_nomatch' => 'The provided passwords do not match.',
|
||||
'error_reset_invalid_link' => 'The reset link you provided is invalid.',
|
||||
'success_password_forgot' => 'An email has been sent to you with information how to reset your password.',
|
||||
'success_password_reset' => 'Your password has been reset successfully. Please login.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Unauthorized',
|
||||
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||
),
|
||||
'name' => 'Español - Spanish',
|
||||
'locale' => array(
|
||||
'0' => 'es_ES.UTF-8',
|
||||
'1' => 'es_ES',
|
||||
'2' => 'spanish',
|
||||
'3' => 'esp',
|
||||
),
|
||||
'locale_tag' => 'es',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Instalar',
|
||||
'action' => 'Acción',
|
||||
'save' => 'Guardar',
|
||||
'edit' => 'Modificar',
|
||||
'delete' => 'Eliminar',
|
||||
'view' => 'Ver',
|
||||
'date' => 'Fecha',
|
||||
'message' => 'Mensaje',
|
||||
'yes' => 'Si',
|
||||
'no' => 'No',
|
||||
'insert' => 'Insertar',
|
||||
'add_new' => 'Agregar nuevo',
|
||||
'update_available' => 'Hay una nueva versión ({version}) disponible en <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Volver arriba',
|
||||
'go_back' => 'Volver',
|
||||
'ok' => 'Bueno',
|
||||
'bad' => 'Malo',
|
||||
'cancel' => 'Cancelar',
|
||||
'none' => 'None',
|
||||
'activate' => 'Activar',
|
||||
'short_day_format' => '%e de %B',
|
||||
'long_day_format' => '%e de %B de %Y',
|
||||
'yesterday_format' => 'Ayer a las %k:%M',
|
||||
'other_day_format' => '%A a las %k:%M',
|
||||
'never' => 'Nunca',
|
||||
'hours_ago' => 'Hace %d horas',
|
||||
'an_hour_ago' => 'Hace aproximadamente una hora',
|
||||
'minutes_ago' => 'Hace %d minutos',
|
||||
'a_minute_ago' => 'Hace aproximadamente un minuto',
|
||||
'seconds_ago' => 'Hace %d segundos',
|
||||
'a_second_ago' => 'Hace aproximadamente un segundo',
|
||||
'year' => 'año',
|
||||
'years' => 'años',
|
||||
'month' => 'mes',
|
||||
'months' => 'meses',
|
||||
'day' => 'día',
|
||||
'days' => 'días',
|
||||
'hour' => 'hora',
|
||||
'hours' => 'horas',
|
||||
'minute' => 'minuto',
|
||||
'minutes' => 'minutos',
|
||||
'second' => 'segundo',
|
||||
'seconds' => 'segundos',
|
||||
'current' => 'actual',
|
||||
'settings' => 'Configuración',
|
||||
'search' => 'Buscar',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Configurar',
|
||||
'server' => 'Servidores',
|
||||
'server_log' => 'Registro',
|
||||
'server_status' => 'Estado',
|
||||
'server_update' => 'Actualizar',
|
||||
'user' => 'Usuarios',
|
||||
'help' => 'Ayuda',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Usuario',
|
||||
'name' => 'Nombre',
|
||||
'user_name' => 'Nombre de Usuario',
|
||||
'password' => 'Contraseña',
|
||||
'password_repeat' => 'Repetir Contraseña',
|
||||
'password_leave_blank' => 'Dejar en blanco para mantener sin cambios',
|
||||
'level' => 'Nivel',
|
||||
'level_10' => 'Administrador',
|
||||
'level_20' => 'Usuarios',
|
||||
'level_description' => '<b>Administradores</b> tienen acceso completo: pueden administrar servidores, usuarios
|
||||
y editar la configuración global.<br>Los <b>usuarios</b> sólo pueden ver y ejecutar
|
||||
el programa de actualización para los servidores que se han asignado a los mismos.',
|
||||
'mobile' => 'Móvil',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover es un servicio que hace que sea fácil de obtener notificaciones en tiempo
|
||||
real. Vea <a href="https://pushover.net/" target="_blank"> su página web </a> para
|
||||
más información.',
|
||||
'pushover_key' => 'Clave Pushover',
|
||||
'pushover_device' => 'Dispositivo Pushover',
|
||||
'pushover_device_description' => 'Nombre del dispositivo para enviar el mensaje. Dejar en blanco para enviarlo
|
||||
a todos los dispositivos.',
|
||||
'telegram' => 'Telegram',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> is a chat app that
|
||||
makes it easy to get real-time notifications. Visit the <a
|
||||
href="http://docs.phpservermonitor.org/" target="_blank">documentation</a> for more
|
||||
info and an install guide.',
|
||||
'telegram_chat_id' => 'Telegram chat id',
|
||||
'telegram_chat_id_description' => 'El mensaje será enviado al chat correspondiente.',
|
||||
'telegram_get_chat_id' => 'Haga click aquí para obtener su chat id',
|
||||
'activate_telegram' => 'Activar las notificaciones de Telegram',
|
||||
'activate_telegram_description' => 'Permitir a Telegram enviar notificaciones al chat id especificado. Sin
|
||||
este permiso, Telegram no podrá enviarle mensajes.',
|
||||
'telegram_bot_username_found' => '¡El bot fue encontrado!<br><a href="%s" target="_blank"
|
||||
rel="noopener"><button class="btn btn-primary">Próximo paso</button></a>
|
||||
<br>Esto abrirá un chat con el bot. Necesita presionar start o escribir
|
||||
/start.',
|
||||
'telegram_bot_username_error_token' => '401 - No autorizado. Por favor asegúrese que el Token es válido.',
|
||||
'telegram_bot_error' => 'Ocurrió un error activando las notificaciones de Telegram: %s',
|
||||
'delete_title' => 'Eliminar usuario',
|
||||
'delete_message' => 'Realmente desea eliminar el usuario \'%1\'?',
|
||||
'deleted' => 'Usuario eliminado.',
|
||||
'updated' => 'Usuario actualizado.',
|
||||
'inserted' => 'Usuario ingresado.',
|
||||
'profile' => 'Perfil',
|
||||
'profile_updated' => 'Su perfil ha sido actualizado.',
|
||||
'error_user_name_bad_length' => 'Los nombres de usuario deben tener entre 2 y 64 caracteres.',
|
||||
'error_user_name_invalid' => 'El nombre de usuario sólo puede contener caracteres alfabéticos (a-z, A-Z),
|
||||
números (0-9), puntos (.) y guiones bajos (_).',
|
||||
'error_user_name_exists' => 'El nombre de usuario dado ya existe en la base de datos.',
|
||||
'error_user_email_bad_length' => 'Direcciones de correo electrónico deben estar entre 5 y 255 caracteres.',
|
||||
'error_user_email_invalid' => 'La dirección de correo electrónico no es válida.',
|
||||
'error_user_level_invalid' => 'El nivel de usuario dado es inválido.',
|
||||
'error_user_no_match' => 'El usuario no se pudo encontrar en la base de datos.',
|
||||
'error_user_password_invalid' => 'La contraseña introducida no es válida.',
|
||||
'error_user_password_no_match' => 'Las contraseñas introducidas no coinciden.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Registro',
|
||||
'type' => 'Tipo',
|
||||
'status' => 'Estado',
|
||||
'email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'telegram' => 'Telegram',
|
||||
'no_logs' => 'No hay registros',
|
||||
'clear' => 'Borrar registros',
|
||||
'delete_title' => 'Eliminar registro',
|
||||
'delete_message' => '¿Estás seguro de que quieres eliminar <b>todos</b> los registros?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Servidores',
|
||||
'status' => 'Estado',
|
||||
'label' => 'Título',
|
||||
'domain' => 'Dominio/IP',
|
||||
'timeout' => 'Tiempo de espera',
|
||||
'timeout_description' => 'Número de segundos a esperar para que el servidor responda.',
|
||||
'authentication_settings' => 'Configuración de autenticación',
|
||||
'optional' => 'Opcional',
|
||||
'website_username' => 'Nombre de usuario',
|
||||
'website_username_description' => 'Nombre de usuario para acceder al sitio. (Solo se soporta la autenticación
|
||||
de Apache.)',
|
||||
'website_password' => 'Contraseña',
|
||||
'website_password_description' => 'Contraseña para acceder al sitio. La contraseña se almacenará encriptada
|
||||
en la base de datos.',
|
||||
'fieldset_monitoring' => 'Monitoreo',
|
||||
'fieldset_permissions' => 'Permisos',
|
||||
'permissions' => 'El servidor será visible para los siguientes usuarios',
|
||||
'port' => 'Puerto',
|
||||
'custom_port' => 'Puerto personalizado',
|
||||
'popular_ports' => 'Puertos comunes',
|
||||
'request_method' => 'Método',
|
||||
'custom_request_method' => 'Método personalizado',
|
||||
'popular_request_methods' => 'Método común',
|
||||
'post_field' => 'Post field',
|
||||
'post_field_description' => 'Los datos que serán enviado utilizando el método especificado.',
|
||||
'please_select' => 'Por favor seleccionar',
|
||||
'type' => 'Tipo',
|
||||
'type_website' => 'Sitio Web',
|
||||
'type_service' => 'Servicio',
|
||||
'type_ping' => 'Ping',
|
||||
'pattern' => 'Patrón/texto de búsqueda',
|
||||
'pattern_description' => 'Si el patrón no se encuentra en el sitio, se marcará al servidor como en
|
||||
línea/fuera de línea. Se permiten expresiones regulares.',
|
||||
'pattern_online' => 'El patrón indica si el servidor está:',
|
||||
'pattern_online_description' => 'En línea: Si el patrón encuentra en el sitio, se marcará al servidor como
|
||||
en línea. Fuera de línea: Si el patrón no se encutra en el sitio, se
|
||||
marcará al servidor como furea de línea.',
|
||||
'redirect_check' => 'Redirigir a otra dirección es:',
|
||||
'redirect_check_description' => 'Redirigir normalmente es una mala señal.',
|
||||
'allow_http_status' => 'Permitir revisar el código de estado HTTP',
|
||||
'allow_http_status_description' => 'Marcar el sitio como en línea. Los estados HTTP menores que 400 son
|
||||
marcados como en línea por defecto. Separar con |.',
|
||||
'header_name' => 'Nombre del encabezado',
|
||||
'header_value' => 'Valor del encabezado',
|
||||
'header_name_description' => 'Respetar mayúsculas y minúsculas.',
|
||||
'header_value_description' => 'Se permiten expresiones regulares.',
|
||||
'last_check' => 'Último control',
|
||||
'last_online' => 'Última vez en línea',
|
||||
'last_offline' => 'Última vez fuera de línea',
|
||||
'last_output' => 'Última salida',
|
||||
'last_error' => 'Último error',
|
||||
'last_error_output' => 'Último error',
|
||||
'output' => 'Salida',
|
||||
'monitoring' => 'Monitoreado',
|
||||
'no_monitoring' => 'No monitoreando',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Enviar correo electrónico',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Eviar SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'send_pushover' => 'Enviar notificación por Pushover',
|
||||
'telegram' => 'Telegram',
|
||||
'send_telegram' => 'Enviar notificación por Telegram',
|
||||
'users' => 'Usuarios',
|
||||
'delete_title' => 'Eliminar servidor',
|
||||
'delete_message' => '¿Seguro que desea eliminar el servidor \'%1\'?',
|
||||
'deleted' => 'Servidor eliminado.',
|
||||
'updated' => 'Servidor actualizado.',
|
||||
'inserted' => 'Servidor ingresado.',
|
||||
'latency' => 'Latencia',
|
||||
'latency_max' => 'Latencia (máximo)',
|
||||
'latency_min' => 'Latencia (mínimo)',
|
||||
'latency_avg' => 'Latencia (promedio)',
|
||||
'online' => 'en línea',
|
||||
'offline' => 'fuera de línea',
|
||||
'uptime' => 'Activo',
|
||||
'year' => 'Año',
|
||||
'month' => 'Mes',
|
||||
'week' => 'Semana',
|
||||
'day' => 'Día',
|
||||
'hour' => 'Hora',
|
||||
'warning_threshold' => 'Umbral de advertencia',
|
||||
'warning_threshold_description' => 'Número de controles fallidos necesarios antes de que se marque como fuera
|
||||
de línea.',
|
||||
'chart_last_week' => 'Última semana',
|
||||
'chart_history' => 'Historial',
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'Las notificaciones por SMS están desactivadas.',
|
||||
'warning_notifications_disabled_email' => 'Las notificaciones por correo electrónico están desactivados.',
|
||||
'warning_notifications_disabled_pushover' => 'Las notificaciones Pushover están desactivadas.',
|
||||
'warning_notifications_disabled_telegram' => 'Las notificaciones Telegram están desactivadas.',
|
||||
'error_server_no_match' => 'Servidor no encontrado.',
|
||||
'error_server_label_bad_length' => 'La etiqueta debe estar entre 1 y 255 caracteres.',
|
||||
'error_server_ip_bad_length' => 'El dominio / IP debe estar entre 1 y 255 caracteres.',
|
||||
'error_server_ip_bad_service' => 'La dirección IP no es válida.',
|
||||
'error_server_ip_bad_website' => 'El URL del Sitio Web no es válido.',
|
||||
'error_server_type_invalid' => 'El tipo de servidor seleccionado no es válido.',
|
||||
'error_server_warning_threshold_invalid' => 'El umbral de advertencia debe ser un entero válido mayor que 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'General',
|
||||
'language' => 'Idioma',
|
||||
'show_update' => '¿Comprobar actualizaciones?',
|
||||
'password_encrypt_key' => 'Clave cripográfica',
|
||||
'password_encrypt_key_note' => 'Esta es la clave utilizada para encriptar las contraseñas de acceso a los
|
||||
servidores. ¡Si la contraseña cambia las credenciales serán inválidas!',
|
||||
'proxy' => 'Activar Proxy',
|
||||
'proxy_url' => 'URL del proxy',
|
||||
'proxy_user' => 'Usuario',
|
||||
'proxy_password' => 'Contraseña',
|
||||
'email_status' => '¿Habilitar envio de email?',
|
||||
'email_from_email' => 'Dirección del Remitente',
|
||||
'email_from_name' => 'Nombre del Remitente',
|
||||
'email_smtp' => 'Habilitar SMTP',
|
||||
'email_smtp_host' => 'Servidor SMTP',
|
||||
'email_smtp_port' => 'Puerto SMTP',
|
||||
'email_smtp_security' => 'Seguridad SMTP',
|
||||
'email_smtp_security_none' => 'Ninguna',
|
||||
'email_smtp_username' => 'Usuario SMTP',
|
||||
'email_smtp_password' => 'Contraseña SMTP',
|
||||
'email_smtp_noauth' => 'Deja en blanco para ninguna autenticación',
|
||||
'sms_status' => '¿Habilitar envio de SMS?',
|
||||
'sms_gateway' => 'Proveedor de SMS',
|
||||
'sms_gateway_username' => 'Usuario',
|
||||
'sms_gateway_password' => 'Contraseña',
|
||||
'sms_from' => 'Número origen del SMS',
|
||||
'pushover_status' => '¿Habilitar el envío de mensajes Pushover?',
|
||||
'pushover_description' => 'Pushover es un servicio que hace que sea fácil de obtener notificaciones en tiempo
|
||||
real. Vea <a href="https://pushover.net/" target="_blank"> su página web </a> para
|
||||
más información.',
|
||||
'pushover_clone_app' => 'Haga clic aquí para crear tu aplicación Pushover',
|
||||
'pushover_api_token' => 'Token API de Pushover',
|
||||
'pushover_api_token_description' => 'Antes de poder utilizar Pushover, necesita <a href="%1$s" target="_blank"
|
||||
rel="noopener"> registrar </a> su aplicación en la página web e
|
||||
ingresar el token API.',
|
||||
'telegram_status' => '¿Habilitar el envío de mensajes de Telegram?',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> es una aplicación de
|
||||
mensajería instantánea que permite recibir notificaciones en tiempo real. Visite
|
||||
la <a href="http://docs.phpservermonitor.org/" target="_blank">documentación</a>
|
||||
para una guía mas detallada.',
|
||||
'telegram_api_token' => 'Token API de Telegram',
|
||||
'telegram_api_token_description' => 'Antes de utilizar Telegram, necesita un Token de API. Visite la <a
|
||||
href="http://docs.phpservermonitor.org/"
|
||||
target="_blank">documentación</a> para más información.',
|
||||
'alert_type' => '¿Cuándo desea recibir notificaciones?',
|
||||
'alert_type_description' => '<b>Al cambiar el estado:</b> p.ej. en línea -> fuera de línea o fuera de línea
|
||||
-> en línea.<br><br /><b>Fuera de Línea:</b> Recibirá una notificación cuando
|
||||
el servidor esté fuera de línea.Se envia un sólo mensaje cuando se detecte la
|
||||
caída por primera vez.<br><br><b>Siempre:</b> Se le enviará una notificación
|
||||
cada vez que se ejecuta el script aunqué el servicio puede haber estado fuera de
|
||||
línea por varias horas.',
|
||||
'alert_type_status' => 'Cambio de estado',
|
||||
'alert_type_offline' => 'Fuera de Línea',
|
||||
'alert_type_always' => 'Siempre',
|
||||
'combine_notifications' => 'Combinar notificaciones',
|
||||
'combine_notifications_description' => 'Reduce la cantidad de notificaciones combinando los mensajes en una
|
||||
sola notificación. (Esto no afecta a las notificaciones por SMS.)',
|
||||
'alert_proxy' => 'Incluso si está activo, los proxy no se utilizarán para los servicios.',
|
||||
'alert_proxy_url' => 'Formato: host:puerto',
|
||||
'log_status' => 'Registro de estados',
|
||||
'log_status_description' => 'Al setear TRUE (marcar) se registrarán todos los estados.',
|
||||
'log_email' => 'Guardar emails enviados en el registro',
|
||||
'log_sms' => 'Guardar SMS enviados en el registro',
|
||||
'log_pushover' => 'Guardar notificaciones Pushover enviadas en el registro',
|
||||
'log_telegram' => 'Guardar notificaciones Telegram enviadas en el registro',
|
||||
'updated' => 'Configuración guardada.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'tab_telegram' => 'Telegram',
|
||||
'settings_email' => 'Configuración de Correo Electrónico',
|
||||
'settings_sms' => 'Configuración de Mensajes de Texto',
|
||||
'settings_pushover' => 'Configuración de Pushover',
|
||||
'settings_telegram' => 'Configuración de Telegram',
|
||||
'settings_notification' => 'Configuración de las notificaciones',
|
||||
'settings_log' => 'Configuración de registros',
|
||||
'settings_proxy' => 'Configuración del proxy',
|
||||
'auto_refresh' => 'Auto-actualizar',
|
||||
'auto_refresh_description' => 'Auto-actualizar la página de servidores.<br><span class="small">Tiempo en
|
||||
segundos, si se utiliza 0 la página no se actualizará.</span>',
|
||||
'test' => 'Prueba',
|
||||
'test_email' => 'Un correo electrónico será enviado a la dirección especificada en su perfil de usuario.',
|
||||
'test_sms' => 'Un SMS se enviará al número de teléfono especificado en su perfil de usuario.',
|
||||
'test_pushover' => 'Una notificación Pushover será enviada a la clave de usuario / dispositivo especificado
|
||||
en su perfil de usuario.',
|
||||
'test_telegram' => 'Una notificación de Telegram será enviada al chat id especificado en su perfil de
|
||||
usuario.',
|
||||
'send' => 'Enviar',
|
||||
'test_subject' => 'Prueba',
|
||||
'test_message' => 'Mensaje de prueba',
|
||||
'email_sent' => 'Correo enviado',
|
||||
'email_error' => 'Error al enviar el correo',
|
||||
'sms_sent' => 'SMS enviado',
|
||||
'sms_error' => 'Error al enviar el SMS: %s',
|
||||
'sms_error_nomobile' => 'Imposible enviar el SMS: no se encontró un número de teléfono válido en su
|
||||
perfil.',
|
||||
'pushover_sent' => 'Notificación de Pushover enviada',
|
||||
'pushover_error' => 'Ocurrió un error enviado la notificación de Pushover: %s',
|
||||
'pushover_error_noapp' => 'No se puede enviar una notificación de prueba: no existe un token API de Pushover
|
||||
en la configuración global.',
|
||||
'pushover_error_nokey' => 'No se puede enviar una notificación de prueba: no existe ninguna clave de Pushover
|
||||
en su perfil.',
|
||||
'telegram_sent' => 'Notificación de Telegram enviada',
|
||||
'telegram_error' => 'Ocurrió un error enviado la notificación de Telegram: %s',
|
||||
'telegram_error_notoken' => 'Imposible enviar la notificación: No se encontró un Token de API en la
|
||||
configuración global.',
|
||||
'telegram_error_noid' => 'Imposible enviar la notificación: No se encontró un chat id en su perfil.',
|
||||
'log_retention_period' => 'Período de retención del registro',
|
||||
'log_retention_period_description' => 'Número de días que se conservan registros de las notificaciones y los
|
||||
archivos de tiempo de actividad del servidor. Introduzca 0 para
|
||||
desactivar la limpieza de los registros.',
|
||||
'log_retention_days' => 'días',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Servidor \'%LABEL%\' está fuera de línea: ip=%IP%, puerto=%PORT%. error=%ERROR%',
|
||||
'off_email_subject' => 'Importante: Servidor \'%LABEL%\' está fuera de línea',
|
||||
'off_email_body' => 'Imposible conectar al servidor:<br/><br/>Servidor: %LABEL%<br/>IP: %IP%<br/>Puerto:
|
||||
%PORT%<br/>Error: %ERROR%<br/>Fecha: %DATE%',
|
||||
'off_pushover_title' => 'Servidor \'%LABEL%\' está fuera de línea',
|
||||
'off_pushover_message' => 'No posible conectar al servidor:<br/><br/>Servidor: %LABEL%<br/>IP:
|
||||
%IP%<br/>Puerto: %PORT%<br/>Error: %ERROR%<br/>Fecha: %DATE%',
|
||||
'off_telegram_message' => 'No posible conectar al servidor:<br/><br/>Servidor: %LABEL%<br/>IP:
|
||||
%IP%<br/>Puerto: %PORT%<br/>Error: %ERROR%<br/>Fecha: %DATE%',
|
||||
'on_sms' => 'Servidor \'%LABEL%\' ya está de nuevo funcionando en línea: ip=%IP%, puerto=%PORT%, la
|
||||
duración de la caída fue de %LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'Importante: Servidor \'%LABEL%\' ya está de nuevo en línea',
|
||||
'on_email_body' => 'Servidor \'%LABEL%\' ya está funcionando en línea de nuevo, la duración de la caída
|
||||
fue de %LAST_OFFLINE_DURATION%:<br/><br/>Servidor: %LABEL%<br/>IP: %IP%<br/>Puerto:
|
||||
%PORT%<br/>Fecha: %DATE%',
|
||||
'on_pushover_title' => 'Servidor \'%LABEL%\' ya está de nuevo en línea',
|
||||
'on_pushover_message' => 'Servidor \'%LABEL%\' ya está funcionando en línea de nuevo, la duración de la
|
||||
caída fue de %LAST_OFFLINE_DURATION%:<br/><br/>Servidor: %LABEL%<br/>IP:
|
||||
%IP%<br/>Puerto: %PORT%<br/>Fecha: %DATE%',
|
||||
'on_telegram_message' => 'Servidor \'%LABEL%\' ya está funcionando en línea de nuevo, la duración de la
|
||||
caída fue de %LAST_OFFLINE_DURATION%:<br/><br/>Servidor: %LABEL%<br/>IP:
|
||||
%IP%<br/>Puerto: %PORT%<br/>Fecha: %DATE%',
|
||||
'combi_off_email_message' => '<ul><li>Servidor: %LABEL%</li><li>IP: %IP%</li><li>Puerto: %PORT%</li><li>Error:
|
||||
%ERROR%</li><li>Fecha: %DATE%</li></ul>',
|
||||
'combi_off_pushover_message' => '<ul><li>Servidor: %LABEL%</li><li>IP: %IP%</li><li>Puerto:
|
||||
%PORT%</li><li>Error: %ERROR%</li><li>Fecha: %DATE%</li></ul>',
|
||||
'combi_off_telegram_message' => '- Servidor: %LABEL%<br>- IP: %IP%<br>- Puerto: %PORT%<br>- Error:
|
||||
%ERROR%<br>- Fecha: %DATE%<br><br>',
|
||||
'combi_on_email_message' => '<ul><li>Servidor: %LABEL%</li><li>IP: %IP%</li><li>Puerto:
|
||||
%PORT%</li><li>Duración de la caída: %LAST_OFFLINE_DURATION%</li><li>Fecha:
|
||||
%DATE%</li></ul>',
|
||||
'combi_on_pushover_message' => '<ul><li>Servidor: %LABEL%</li><li>IP: %IP%</li><li>Puerto:
|
||||
%PORT%</li><li>Duración de la caída: %LAST_OFFLINE_DURATION%</li><li>Fecha:
|
||||
%DATE%</li></ul>',
|
||||
'combi_on_telegram_message' => '- Servidor: %LABEL%<br>- IP: %IP%<br>- Puerto: %PORT%<br>- Duración de la
|
||||
caída: %LAST_OFFLINE_DURATION%<br>- Fecha: %DATE%<br><br>',
|
||||
'combi_email_subject' => 'IMPORTANTE: %UP% servidores están en línea, %DOWN% servidores están ahora fuera
|
||||
de línea',
|
||||
'combi_pushover_subject' => '%UP% servidores están en línea, %DOWN% servidores están ahora fuera de línea',
|
||||
'combi_email_message' => '<b>Los siguentes servidores están fuera de línea:</b><br>%DOWN_SERVERS%<br><b>Los
|
||||
siguientes servidores están en línea:</b><br>%UP_SERVERS%',
|
||||
'combi_pushover_message' => '<b>Los siguentes servidores están fuera de
|
||||
línea:</b><br>%DOWN_SERVERS%<br><b>Los siguientes servidores están en
|
||||
línea:</b><br>%UP_SERVERS%',
|
||||
'combi_telegram_message' => '<b>Los siguentes servidores están fuera de
|
||||
línea:</b><br>%DOWN_SERVERS%<br><b>Los siguientes servidores están en
|
||||
línea:</b><br>%UP_SERVERS%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => '%user_name%',
|
||||
'title_sign_in' => 'Por favor, inicie sesión',
|
||||
'title_forgot' => '¿Olvidaste tu contraseña?',
|
||||
'title_reset' => 'Restablecer su contraseña',
|
||||
'submit' => 'Enviar',
|
||||
'remember_me' => 'Recordarme',
|
||||
'login' => 'Iniciar sesión',
|
||||
'logout' => 'Salir',
|
||||
'username' => 'Nombre de usuario',
|
||||
'password' => 'Contraseña',
|
||||
'password_repeat' => 'Repita la contraseña',
|
||||
'password_forgot' => '¿Has olvidado tu contraseña?',
|
||||
'password_reset' => 'Perdí mi contraseña',
|
||||
'password_reset_email_subject' => 'Restablecer la contraseña para PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Utilice el siguiente enlace para restablecer tu contraseña. Tenga en cuenta
|
||||
que expira de 1 hora.<br><br>%link%',
|
||||
'error_user_incorrect' => 'El nombre de usuario proporcionado no se pudo encontrar.',
|
||||
'error_login_incorrect' => 'La información es incorrecta.',
|
||||
'error_login_passwords_nomatch' => 'Las contraseñas proporcionadas no coinciden.',
|
||||
'error_reset_invalid_link' => 'El vínculo de cambio que ya ha proporcionado no es válido.',
|
||||
'success_password_forgot' => 'Un correo electrónico ha sido enviado a usted con información de cómo
|
||||
restablecer su contraseña.',
|
||||
'success_password_reset' => 'Su contraseña ha sido restablecida correctamente. Por favor, inicia sesión.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'No Autorizado',
|
||||
'401_unauthorized_description' => 'Usted no tiene los privilegios para ver esta página.',
|
||||
),
|
||||
);
|
||||
|
|
|
@ -0,0 +1,316 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Richard A.
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Eesti keel - Estonian',
|
||||
'locale' => array(
|
||||
'0' => 'et_ET.UTF-8',
|
||||
'1' => 'et_ET',
|
||||
'2' => 'estonian',
|
||||
),
|
||||
'locale_tag' => 'et',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Serveri Monitor',
|
||||
'install' => 'Installeeri',
|
||||
'action' => 'Toiming',
|
||||
'save' => 'Salvesta',
|
||||
'edit' => 'Muuda',
|
||||
'delete' => 'Kustuta',
|
||||
'date' => 'Kuupäev',
|
||||
'message' => 'Sõnum',
|
||||
'yes' => 'Jah',
|
||||
'no' => 'Ei',
|
||||
'insert' => 'Sisesta',
|
||||
'add_new' => 'Lisa uus',
|
||||
'update_available' => 'Uus versioon ({version}) on saadaval <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Tagasi üles',
|
||||
'go_back' => 'Mine tagasi',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Tühista',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Eile kell %k:%M',
|
||||
'other_day_format' => '%A kell %k:%M',
|
||||
'never' => 'Never',
|
||||
'hours_ago' => '%d tundi tagasi',
|
||||
'an_hour_ago' => 'umbes tund aega tagasi',
|
||||
'minutes_ago' => '%d minutit tagasi',
|
||||
'a_minute_ago' => 'umbes minut aega tagasi',
|
||||
'seconds_ago' => '%d sekundit tagasi',
|
||||
'a_second_ago' => 'üks sekund tagasi',
|
||||
'seconds' => 'sekundit',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Konfiguratsioon',
|
||||
'server' => 'Serverid',
|
||||
'server_log' => 'Logi',
|
||||
'server_status' => 'Staatus',
|
||||
'server_update' => 'Uuenda',
|
||||
'user' => 'Kasutajad',
|
||||
'help' => 'Abi',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Kasutaja',
|
||||
'name' => 'Nimi',
|
||||
'user_name' => 'Kasutajanimi',
|
||||
'password' => 'Parool',
|
||||
'password_repeat' => 'Korda parooli',
|
||||
'password_leave_blank' => 'Jäta tühjaks, et jätta samaks',
|
||||
'level' => 'Tase',
|
||||
'level_10' => 'Administraator',
|
||||
'level_20' => 'Kasutaja',
|
||||
'level_description' => '<b>Administraatoritel</b> on täielik ligipääs: nad saavad hallata servereid,
|
||||
kasutajaid ja muuta globaalset konfiguratsiooni.<br><b>Kasutajad</b> saavad ainult
|
||||
näha ja uuendada neid servereid, mis on neile määratud.',
|
||||
'mobile' => 'Mobiil',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover on teenus, mis teeb reaalaja teavitused imelihtsaks. Vaata <a
|
||||
href="https://pushover.net/" target="_blank">nende kodulehte</a> rohkema info
|
||||
jaoks.',
|
||||
'pushover_key' => 'Pushoveri Võti',
|
||||
'pushover_device' => 'Pushoveri Seade',
|
||||
'pushover_device_description' => 'Seadme nimi, kuhu teavitus saata. Jäta tühjaks, et saata igale seadmele.',
|
||||
'delete_title' => 'Kustuta Kasutaja',
|
||||
'delete_message' => 'Oled kindel, et soovid selle kasutaja kustutada \'%1\'?',
|
||||
'deleted' => 'Kasutaja kustutatud.',
|
||||
'updated' => 'Kasutaja uuendatud.',
|
||||
'inserted' => 'Kasutaja lisatud.',
|
||||
'profile' => 'Profiil',
|
||||
'profile_updated' => 'Sinu profiil on uuendatud.',
|
||||
'error_user_name_bad_length' => 'Kasutajanimi peab olema 2 kuni 64 tähemärki pikk.',
|
||||
'error_user_name_invalid' => 'Kasutajanimi võib koosneda ainult tähenumbrilistest kombinatsioonidest (a-z,
|
||||
A-Z), numbritest (0-9), punktid (.) ja alakriipsust (_).',
|
||||
'error_user_name_exists' => 'Antud kasutaja juba eksisteerib andmebaasis.',
|
||||
'error_user_email_bad_length' => 'Email võib olla 5 kuni 255 tähemärki pikk.',
|
||||
'error_user_email_invalid' => 'Emaili aadress on kehtetu.',
|
||||
'error_user_level_invalid' => 'Antud kasutaja tase on kehtetu.',
|
||||
'error_user_no_match' => 'Kasutajat ei leitud andmebaasist.',
|
||||
'error_user_password_invalid' => 'Sisestatud parool on kehtetu.',
|
||||
'error_user_password_no_match' => 'Sisestatud paroolid ei kattu.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Logi kirjed',
|
||||
'type' => 'Tüüp',
|
||||
'status' => 'Staatus',
|
||||
'email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'Logisid ei eksisteeri',
|
||||
'clear' => 'Puhasta logig',
|
||||
'delete_title' => 'Kustuta logi',
|
||||
'delete_message' => 'Kas olete kindel, et soovite kustutada <b>kõik</b> logid?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Server',
|
||||
'status' => 'Staatus',
|
||||
'label' => 'Silt',
|
||||
'domain' => 'Domeen/IP',
|
||||
'timeout' => 'Ajalõpp',
|
||||
'timeout_description' => 'Arv sekundeid oodata serveri vastamiseks.',
|
||||
'port' => 'Port',
|
||||
'type' => 'Tüüp',
|
||||
'type_website' => 'Veebileht',
|
||||
'type_service' => 'Teenus',
|
||||
'pattern' => 'Otsi nööri/mudelit',
|
||||
'pattern_description' => 'Kui seda mudelit serverist ei leita, siis server märgitakse võrgustväljas.
|
||||
Tavapärased väljendid on lubatud.',
|
||||
'last_check' => 'Viimane kontroll',
|
||||
'last_online' => 'Viimati oli võrgus',
|
||||
'monitoring' => 'Jälgib',
|
||||
'no_monitoring' => 'Ei jälgi',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Saada Email',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Saada SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Kasutajad',
|
||||
'delete_title' => 'Kustuta server',
|
||||
'delete_message' => 'Oled kindel, et soovid serveri kustutada \'%1\'?',
|
||||
'deleted' => 'Server kustutatud.',
|
||||
'updated' => 'Server uuendatud.',
|
||||
'inserted' => 'Server lisatud.',
|
||||
'latency' => 'Viivitus',
|
||||
'latency_max' => 'Viivitus (maksimaalne)',
|
||||
'latency_min' => 'Viivitus (minimaalne)',
|
||||
'latency_avg' => 'Viivitus (keskmine)',
|
||||
'uptime' => 'Võrgus oldud aeg',
|
||||
'year' => 'Aasta',
|
||||
'month' => 'Kuu',
|
||||
'week' => 'Nädal',
|
||||
'day' => 'Päev',
|
||||
'hour' => 'Tund',
|
||||
'warning_threshold' => 'Hoiatuskünnis',
|
||||
'warning_threshold_description' => 'Arv ebaõnnestunud kontrolle enne võrgustväljas märkimist.',
|
||||
'chart_last_week' => 'Eelmine nädal',
|
||||
'chart_history' => 'Ajalugu',
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%d/%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS teavitused on väljas.',
|
||||
'warning_notifications_disabled_email' => 'Emaili teavitused on väljas.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover teavitused on väljas.',
|
||||
'error_server_no_match' => 'Serverit ei leitud.',
|
||||
'error_server_label_bad_length' => 'Silt peab olema 1 kuni 255 tähemärki pikk.',
|
||||
'error_server_ip_bad_length' => 'Domeen / IP peab olema 1 kuni 255 tähemärki pikk.',
|
||||
'error_server_ip_bad_service' => 'Antud IP aadress ei ole kehtiv.',
|
||||
'error_server_ip_bad_website' => 'Antud veebileht ei ole kehtiv.',
|
||||
'error_server_type_invalid' => 'Valitud server oli kehtetu.',
|
||||
'error_server_warning_threshold_invalid' => 'Hoiatuskünnis peab olema suurem täisarv kui 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Üldine',
|
||||
'language' => 'Keel',
|
||||
'show_update' => 'Otsi värskendusi?',
|
||||
'email_status' => 'Luba emailide saatmine',
|
||||
'email_from_email' => 'Email aadressilt',
|
||||
'email_from_name' => 'Email nimelt',
|
||||
'email_smtp' => 'Luba SMTP',
|
||||
'email_smtp_host' => 'SMTP host',
|
||||
'email_smtp_port' => 'SMTP port',
|
||||
'email_smtp_security' => 'SMTP turvalisus',
|
||||
'email_smtp_security_none' => 'Mitte ükski',
|
||||
'email_smtp_username' => 'SMTP kasutajanimi',
|
||||
'email_smtp_password' => 'SMTP parool',
|
||||
'email_smtp_noauth' => 'Jäta tühjaks, et jätkata ilma autentimiseta',
|
||||
'sms_status' => 'Luba sõnumite saatmine',
|
||||
'sms_gateway' => 'Väravad sõnumite saatmiseks',
|
||||
'sms_gateway_username' => 'Värava kasutajanimi',
|
||||
'sms_gateway_password' => 'Värava parool',
|
||||
'sms_from' => 'Saatja telefoni number',
|
||||
'pushover_status' => 'Luba Pushoveri sõnumite saatmine',
|
||||
'pushover_description' => 'Pushover on teenus, mis teeb reaalaja teavitused imelihtsaks. Vaata <a
|
||||
href="https://pushover.net/" target="_blank">nende kodulehte</a> rohkema info
|
||||
jaoks.',
|
||||
'pushover_clone_app' => 'Kliki siia, et teha oma Pushover äpp',
|
||||
'pushover_api_token' => 'Pushover Äppi API Žetoon',
|
||||
'pushover_api_token_description' => 'Enne, kui saad Pushoverida pead sa <a href="%1$s" target="_blank"
|
||||
rel="noopener">regristreerima äpi</a> nende kodulehel ja sisestama API
|
||||
žetooni siia.',
|
||||
'alert_type' => 'Vali, millal sa sooviksid olla teavitatud.',
|
||||
'alert_type_description' => '<b>Staatuse muutus:</b> Saate teavituse kui serveri staatuses toimub muudatusi.
|
||||
Seega kättesaadav -> võrgust väljas või võrgust väljas ->
|
||||
kättesaadav.<br><br /><b>Võrgust väljas:</b> Saate teavituse kui server läheb
|
||||
võrgust välja *ESIMEST KORDA*. Näiteks, sinu cronjob on iga 15 minuti tagant
|
||||
ja sulgub kell 1 öösel kuni kella 6ni hommikul. Saate 1 teavituse kell 1
|
||||
öösel ja see on kõik.<br><br><b>Alati:</b> Saate teavituse iga kord kui
|
||||
staatust uuendatakse, isegi kui leht on olnud maas juba tunde.',
|
||||
'alert_type_status' => 'Staatuse muutus',
|
||||
'alert_type_offline' => 'Võrgust väljas',
|
||||
'alert_type_always' => 'Alati',
|
||||
'log_status' => 'Logi staatus',
|
||||
'log_status_description' => 'Kui logimine on seatud TÕESEKS, siis monitor logib aktiivsuse mil teavituse
|
||||
seaded on läbitud.',
|
||||
'log_email' => 'Logi saadetud emailid',
|
||||
'log_sms' => 'Logi saadetud sõnumid',
|
||||
'log_pushover' => 'Logi Pushoveri saadetud teavitused',
|
||||
'updated' => 'Konfiguratsioon on uuendatud.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Emaili seaded',
|
||||
'settings_sms' => 'Sõnumite seaded',
|
||||
'settings_pushover' => 'Pushoveri seaded',
|
||||
'settings_notification' => 'Teavituste seaded',
|
||||
'settings_log' => 'Logi seaded',
|
||||
'auto_refresh' => 'Automaatne värskendamine',
|
||||
'auto_refresh_description' => 'Värskenda lehte automaatselt.<br><span class="small">Aeg sekundites, kui 0
|
||||
siis lehte ei värskendata.</span>',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'Email saadetakse profiilil märgitud aadressile.',
|
||||
'test_sms' => 'SMS saadetakse profiilil märgitud numbrile.',
|
||||
'test_pushover' => 'Pushover teavitus saadetakse profiilil märgitud seadmele/tele.',
|
||||
'send' => 'Saada',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Test sõnum',
|
||||
'email_sent' => 'Email saadetud',
|
||||
'email_error' => 'Emaili saatmisel esines error',
|
||||
'sms_sent' => 'Sms saadetud',
|
||||
'sms_error' => 'Smsi saatmisel esines error. %s',
|
||||
'sms_error_nomobile' => 'Test SMSi ei saadetud: kehtivat telefoni numbrit ei leitud.',
|
||||
'pushover_sent' => 'Pushover teavitus saadetud',
|
||||
'pushover_error' => 'Pushover teavituse saatmisel esines error: %s',
|
||||
'pushover_error_noapp' => 'Test teavitust ei saadetud: Pushover API žetooni ei leitud globaalsest
|
||||
konfiguratsioonist.',
|
||||
'pushover_error_nokey' => 'Test teavitust ei saadetud: Pushover võtit ei leitud.',
|
||||
'log_retention_period' => 'Logi säilitamis periood',
|
||||
'log_retention_period_description' => 'Arv päevi, mil hoida logid alles. Sisesta 0, et keelata logide
|
||||
puhastus.',
|
||||
'log_retention_days' => 'päeva',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Server \'%LABEL%\' on MAAS: ip=%IP%, port=%PORT%. Error=%ERROR%',
|
||||
'off_email_subject' => 'TÄHTIS: Server \'%LABEL%\' is MAAS',
|
||||
'off_email_body' => 'Ühendus järgnevasse serverisse ebaõnnestus:<br><br>Server: %LABEL%<br>IP:
|
||||
%IP%<br>Port: %PORT%<br>Error: %ERROR%<br>Kuupäev: %DATE%',
|
||||
'off_pushover_title' => 'Server \'%LABEL%\' on MAAS',
|
||||
'off_pushover_message' => 'Ühendus järgnevasse serverisse ebaõnnestus:<br><br>Server: %LABEL%<br>IP:
|
||||
%IP%<br>Port: %PORT%<br>Error: %ERROR%<br>Kuupäev: %DATE%',
|
||||
'on_sms' => 'Server \'%LABEL%\' on KÄTTESAADAV: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'TÄHTIS: Server \'%LABEL%\' on kättesaadav',
|
||||
'on_email_body' => 'Server \'%LABEL%\' on jälle kättesaadav, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Kuupäev:
|
||||
%DATE%',
|
||||
'on_pushover_title' => 'Server \'%LABEL%\' on kättesaadav',
|
||||
'on_pushover_message' => 'Server \'%LABEL%\' on jälle kättesaadav, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Kuupäev: %DATE%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Teretulemast, %user_name%',
|
||||
'title_sign_in' => 'Palun logi sisse',
|
||||
'title_forgot' => 'Unustasid oma salasõna?',
|
||||
'title_reset' => 'Lähtesta oma parool',
|
||||
'submit' => 'Esita',
|
||||
'remember_me' => 'Mäleta mind',
|
||||
'login' => 'Logi sisse',
|
||||
'logout' => 'Logi välja',
|
||||
'username' => 'Kasutajanimi',
|
||||
'password' => 'Parool',
|
||||
'password_repeat' => 'Korda salasõna',
|
||||
'password_forgot' => 'Unustasid salasõna?',
|
||||
'password_reset' => 'Lähtesta parool',
|
||||
'password_reset_email_subject' => 'Lähtestage oma PHP Serveri Monitori parool',
|
||||
'password_reset_email_body' => 'Palun kasutage järgnevat linki oma parooli lähtestamiseks. Palume
|
||||
tähendada, et see aegub 1 tunni jooksul.<br><br>%link%',
|
||||
'error_user_incorrect' => 'Antud kasutaja ei ole kehtiv.',
|
||||
'error_login_incorrect' => 'Informatsioon ei ole õige.',
|
||||
'error_login_passwords_nomatch' => 'Sisestatud paroolid ei kattu.',
|
||||
'error_reset_invalid_link' => 'Teie antud lähtestus link ei kehti.',
|
||||
'success_password_forgot' => 'Teile saadeti email, kuidas lähtestada oma parooli.',
|
||||
'success_password_reset' => 'Teie parool on edukalt muudetud. Palun logige sisse.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Puuduvad õigused',
|
||||
'401_unauthorized_description' => 'Teil ei ole piisavalt õigusi seda lehte vaadata.',
|
||||
),
|
||||
);
|
|
@ -0,0 +1,348 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Javad Evazzadeh Kakroudi
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'فارسی - Persian',
|
||||
'locale' => array(
|
||||
'0' => 'fa_IR.UTF-8',
|
||||
'1' => 'fa_IR',
|
||||
'2' => 'far',
|
||||
'3' => 'per',
|
||||
),
|
||||
'locale_tag' => 'fa',
|
||||
'locale_dir' => 'rtl',
|
||||
'system' => array(
|
||||
'title' => 'مانیتورینگ سرور',
|
||||
'install' => 'نصب',
|
||||
'action' => 'عملیات',
|
||||
'save' => 'ذخیره',
|
||||
'edit' => 'ویرایش',
|
||||
'delete' => 'حذف',
|
||||
'date' => 'تاریخ',
|
||||
'message' => 'پیغام',
|
||||
'yes' => 'بله',
|
||||
'no' => 'خیر',
|
||||
'insert' => 'افزودن',
|
||||
'add_new' => 'افزودن',
|
||||
'update_available' => 'نسخه جدیدتر ({version}) در <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a> موجود است.',
|
||||
'back_to_top' => 'برو به بالا',
|
||||
'go_back' => 'برگرد',
|
||||
'ok' => 'تایید',
|
||||
'cancel' => 'انصراف',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'دیروز در %k:%M',
|
||||
'other_day_format' => '%A در %k:%M',
|
||||
'never' => 'هرگز',
|
||||
'hours_ago' => '%d ساعت پیش',
|
||||
'an_hour_ago' => 'حدود یک ساعت پیش',
|
||||
'minutes_ago' => '%d دقیقه پیش',
|
||||
'a_minute_ago' => 'حدود یک دقیقه پیش',
|
||||
'seconds_ago' => '%d ثانیه پیش',
|
||||
'a_second_ago' => 'یک ثانیه پیش',
|
||||
'seconds' => 'ثانیه',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'تنظیم',
|
||||
'server' => 'سرور',
|
||||
'server_log' => 'لاگ',
|
||||
'server_status' => 'وضعیت',
|
||||
'server_update' => 'بروزرسانی',
|
||||
'user' => 'کاربران',
|
||||
'help' => 'پشتیبانی',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'کاربر',
|
||||
'name' => 'نام',
|
||||
'user_name' => 'نام کاربری',
|
||||
'password' => 'کلمه عبور',
|
||||
'password_repeat' => 'تکرار کلمه عبور',
|
||||
'password_leave_blank' => 'برای عدم تغییر خالی بگذارید',
|
||||
'level' => 'سطح',
|
||||
'level_10' => 'مدیر',
|
||||
'level_20' => 'کاربر',
|
||||
'level_description' => '<b>مدیر</b> دسترسی کامل: این گروه ها توانایی
|
||||
مدیریت سرورها، کاربران و ویرایش تنظیمات عمومی
|
||||
را داردند.<br><b>کاربران</b> تنها توانایی دیدن و
|
||||
بروزرسانی سرورهای اختصاص داده شده به خودشان را
|
||||
داردند.',
|
||||
'mobile' => 'موبایل',
|
||||
'email' => 'ایمیل',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover سرویسی است که دریافت اطلاعیه های بلادرنگ
|
||||
را ساده می کند. برای اطلاعات بیشتر <a
|
||||
href="https://pushover.net/" target="_blank">سایت آن ها</a> را
|
||||
ببینید.',
|
||||
'pushover_key' => 'کلید Pushover',
|
||||
'pushover_device' => 'دستگاه Pushover',
|
||||
'pushover_device_description' => 'نام دستگاه برای ارسال پیام. برای ارسال به
|
||||
همه دستگاه ها آن را خالی بگذارید',
|
||||
'delete_title' => 'حذف کاربر',
|
||||
'delete_message' => 'آیا برای حذف کاربر \'%1\' مطئن هستیند؟',
|
||||
'deleted' => 'کاربر حذف شد.',
|
||||
'updated' => 'کاربر بروزرسانی شد.',
|
||||
'inserted' => 'کاربر اضافه شد.',
|
||||
'profile' => 'پروفایل',
|
||||
'profile_updated' => 'پروفایل شما بروزرسانی شد.',
|
||||
'error_user_name_bad_length' => 'نام های کاربری باید بین 2 و 64 کاراکتر باشد.',
|
||||
'error_user_name_invalid' => 'نام کاربری باید فقط شامل حروف (a-z, A-Z)، نقطه (.)
|
||||
اعداد (0-9) و علامت (_) باشد.',
|
||||
'error_user_name_exists' => 'نام کاربری وارد شده در حال حاضر در پایگاه
|
||||
داده موجود است.',
|
||||
'error_user_email_bad_length' => 'آدرس های ایمیل باید بین 5 و 255 کاراکتر باشد.',
|
||||
'error_user_email_invalid' => 'آدرس ایمیل نامعتبر است.',
|
||||
'error_user_level_invalid' => 'سطح کاربرد داده شده نامعتبر است.',
|
||||
'error_user_no_match' => 'کاربر داده شده در پایگاه داده موجود نیست.',
|
||||
'error_user_password_invalid' => 'کلمه عبور وارد شده نامعتبر است.',
|
||||
'error_user_password_no_match' => 'کلمه های عبور وارد شده یکسان نیستند.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'ورودی های لاگ',
|
||||
'type' => 'نوع',
|
||||
'status' => 'وضعیت',
|
||||
'email' => 'ایمیل',
|
||||
'sms' => 'پیامک',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'لاگی وجود ندارد.',
|
||||
'clear' => 'پاک کردن ورود',
|
||||
'delete_title' => 'حذف ورود',
|
||||
'delete_message' => 'آیا مطمئن هستید که میخواهید سیاهههای «همه» را
|
||||
حذف کنید؟',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'سرور',
|
||||
'status' => 'وضعیت',
|
||||
'label' => 'برچسب',
|
||||
'domain' => 'دامنه/آی پی',
|
||||
'timeout' => 'تایم اوت',
|
||||
'timeout_description' => 'زمان مورد نیاز برای سرور جهت پاسخ دهی به ثانیه',
|
||||
'port' => 'پورت',
|
||||
'type' => 'نوع',
|
||||
'type_website' => 'وب سایت',
|
||||
'type_service' => 'سرویس',
|
||||
'pattern' => 'جستجوری رشته/الگو',
|
||||
'pattern_description' => 'اگر این الگو در سایت یافته نشد، سرور آفلاین
|
||||
نمایش داده خواهد شد. عبارات منظم مجاز هستند.',
|
||||
'last_check' => 'آخرین بررسی',
|
||||
'last_online' => 'آخرین زمان آنلاین بودن',
|
||||
'monitoring' => 'مانیتورینگ',
|
||||
'no_monitoring' => 'بدون مانیتورینگ',
|
||||
'email' => 'ایمیل',
|
||||
'send_email' => 'ارسال ایمیل',
|
||||
'sms' => 'پیامک',
|
||||
'send_sms' => 'ارسال پیامک',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'کاربران',
|
||||
'delete_title' => 'حذف سرور',
|
||||
'delete_message' => 'مطمئنید که میخواهید سرور را پاک کنید \'%1\'؟',
|
||||
'deleted' => 'سرور پاک شد.',
|
||||
'updated' => 'سرور به روز رسانی شد.',
|
||||
'inserted' => 'سرور اضافه شد.',
|
||||
'latency' => 'زمان بررسی',
|
||||
'latency_max' => 'زمان بررسی (حداکثر)',
|
||||
'latency_min' => 'زمان بررسی (حداقل)',
|
||||
'latency_avg' => 'زمان بررسی (میانگین)',
|
||||
'uptime' => 'آپ تایم',
|
||||
'year' => 'سال',
|
||||
'month' => 'ماه',
|
||||
'week' => 'هفته',
|
||||
'day' => 'روز',
|
||||
'hour' => 'ساعت',
|
||||
'warning_threshold' => 'آستانه هشدار',
|
||||
'warning_threshold_description' => 'تعداد چک های شکست خورده قبل از اینکه به
|
||||
عنوان آفلاین نشانه گذاری شود.',
|
||||
'chart_last_week' => 'هفته گذشته',
|
||||
'chart_history' => 'تاریخچه',
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'اطلاعیه های پیامک غیرفعال هستند.',
|
||||
'warning_notifications_disabled_email' => 'اطلاعیه های ایمیل غیرفعال هستند.',
|
||||
'warning_notifications_disabled_pushover' => 'اطلاعیه های پوش آور غیرفعال هستند.',
|
||||
'error_server_no_match' => 'سرور پیدا نشد.',
|
||||
'error_server_label_bad_length' => 'برچسب باید بین 1 و 255 کاراکتر باشد.',
|
||||
'error_server_ip_bad_length' => 'دامنمه / آی پی باید بین 1 و 255 کاراکتر باشد.',
|
||||
'error_server_ip_bad_service' => 'آدرس آی پی معتبر نیست.',
|
||||
'error_server_ip_bad_website' => 'آدرس وب سایت معتبر نیست.',
|
||||
'error_server_type_invalid' => 'نوع سرور انتخاب شده نامعتبر است.',
|
||||
'error_server_warning_threshold_invalid' => 'آستانه هشدار باید یک عدد صحیح
|
||||
بزرگتر از 0 باشد.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'عمومی',
|
||||
'language' => 'زبان',
|
||||
'show_update' => 'به روز رسانی بررسی شود؟',
|
||||
'email_status' => 'اجازه ارسال ایمیل',
|
||||
'email_from_email' => 'ایمیل ارسال کننده',
|
||||
'email_from_name' => 'نام ارسال کننده',
|
||||
'email_smtp' => 'فعالسازی SMTP',
|
||||
'email_smtp_host' => 'هاست SMTP',
|
||||
'email_smtp_port' => 'پورت SMTP',
|
||||
'email_smtp_security' => 'امنیت SMTP',
|
||||
'email_smtp_security_none' => 'هیچ کدام',
|
||||
'email_smtp_username' => 'نام کاربری SMTP',
|
||||
'email_smtp_password' => 'کلمه عبور SMTP',
|
||||
'email_smtp_noauth' => 'برای عدم احراز هویت اینجا را خالی بگذارید.',
|
||||
'sms_status' => 'اجازه ارسال پیام های متنی',
|
||||
'sms_gateway' => 'گیت وی برای ارسال پیام ها',
|
||||
'sms_gateway_username' => 'نام کاربری Gateway',
|
||||
'sms_gateway_password' => 'کلمه عبور Gateway',
|
||||
'sms_from' => 'شماره تلفن ارسال کننده',
|
||||
'pushover_status' => 'اجازه ارسال پیام های Pushover',
|
||||
'pushover_description' => 'Pushover سرویسی است که دریافت اطلاعیه های بلادرنگ
|
||||
را ساده می کند. برای اطلاعات بیشتر <a
|
||||
href="https://pushover.net/" target="_blank">سایت آن ها</a> را
|
||||
ببینید.',
|
||||
'pushover_clone_app' => 'برای ایجاد برنامه پوش آور خود اینجا را کلیک
|
||||
کنید.',
|
||||
'pushover_api_token' => 'رمز API برنامه پوش آور',
|
||||
'pushover_api_token_description' => 'قبل از استفاده از پوش آور، شما باید در
|
||||
سایت آن ها <a href="%1$s" target="_blank" rel="noopener">یک
|
||||
برنامه ثبت نام کنید</a> و رمز API برنامه پوش
|
||||
آور را اینجا وارد کنید.',
|
||||
'alert_type' => 'زمان دلخواه خورد برای دریافت اطلاعیه ها را انتخاب
|
||||
کنید.',
|
||||
'alert_type_description' => '<b>تغییر وضعیت:</b> زمانی که وضعیت سرور تغییر
|
||||
کرد شما یک اطلاعیته دریافت خواهید کرد. از
|
||||
آنلاین -> آفلاین یا آفلاین -> آنلاین.<br><br
|
||||
/><b>آفلاین:</b> زمانی که یک سرور *فقط برای اولین
|
||||
بار* آفلاین شد شما یک اطلاعیه دریافت خواهید
|
||||
کرد. به عنوان مثال،cronjob شما هر 15 دقیقه است و
|
||||
سرور شما در ساعت 1 صبح دان می شود و تا ساعت 6
|
||||
صبح دان می ماند.شما 1 اطلاعیه در ساعت 1 صبح
|
||||
دریافت خواهید کرد. همین و بس!<br><b>همیشه:</b> هر
|
||||
بار که اسکریپت اجرا شود و یک سایت دان شود شما
|
||||
یک اطلاعیه دریافت خواهید کرد، حتی اگر سایت
|
||||
چند ساعت آفلاین باشد.',
|
||||
'alert_type_status' => 'تغییر وضعیت',
|
||||
'alert_type_offline' => 'آفلاین',
|
||||
'alert_type_always' => 'همیشه',
|
||||
'log_status' => 'وضعیت لاگ',
|
||||
'log_status_description' => 'اگر لاگ در وضعیت درست باشد مانیتور هر وقت که
|
||||
تنظیمات اطلاعیه ها وارد شود رویدادها را لاگ
|
||||
می کند.',
|
||||
'log_email' => 'لاگ کردن ایمیل هایی که ارسال شده توسط اسکریپت',
|
||||
'log_sms' => 'لاگ کردن پیامک های ارسال شده توسط اسکریپت',
|
||||
'log_pushover' => 'لاگ پیام های پوش آور ارسال شده توسط سرور',
|
||||
'updated' => 'پیکربندی به روز رسانی شد.',
|
||||
'tab_email' => 'ایمیل',
|
||||
'tab_sms' => 'پیامک',
|
||||
'tab_pushover' => 'پوش آور',
|
||||
'settings_email' => 'تنظیمات ایمیل',
|
||||
'settings_sms' => 'تنظیمات پیامک',
|
||||
'settings_pushover' => 'تنظیمات پوش آور',
|
||||
'settings_notification' => 'تنظیمات اطلاعیه ها',
|
||||
'settings_log' => 'تنظیمات لاگ',
|
||||
'auto_refresh' => 'رفرش خودکار',
|
||||
'auto_refresh_description' => 'رفرش خودکار صفحه سرورها.<br><span class="small">زمان
|
||||
به ثنیه, اگر 0 باشد صفحه رفرش نخواهد شد.</span>',
|
||||
'test' => 'تست',
|
||||
'test_email' => 'یک ایمیل به آدرس تعیین شده در پروفایل شما ارسال
|
||||
خواهد شد.',
|
||||
'test_sms' => 'یک پیامک به شماره تلفن تعیین شده در پروفایل شما
|
||||
ارسال خواهد شد.',
|
||||
'test_pushover' => 'یک پیام پوش آور به کلید کاربر/دستگاه تعیین شده در
|
||||
پروفایل شما ارسال خواهد شد.',
|
||||
'send' => 'ارسال',
|
||||
'test_subject' => 'تست',
|
||||
'test_message' => 'پیام تستی',
|
||||
'email_sent' => 'ایمیل ارسال شد',
|
||||
'email_error' => 'خطا در ارسال ایمیل',
|
||||
'sms_sent' => 'پیامک ارسال شد',
|
||||
'sms_error' => '%s خطا در ارسال پیامک',
|
||||
'sms_error_nomobile' => 'قادر به ارسال پیامک تستی نیستیم: شماره تلفن
|
||||
معتبر در پروفایل شما یافته نشد.',
|
||||
'pushover_sent' => 'اطلاعیه پوش آور ارسال شد.',
|
||||
'pushover_error' => 'یک خطا در هنگام ارسال اطلاعیه پوش آور رخ داده است:
|
||||
%s',
|
||||
'pushover_error_noapp' => 'قادر به ارسال اطلاعیه تستی نیستیم: رمز API
|
||||
برنامه پوش آور در پیکربندی عمومی یافته نشد.',
|
||||
'pushover_error_nokey' => 'قادر به ارسال اطلاعیه تستی نیستیم: کلید پوش
|
||||
آور در پروفایل شما یافته نشد.',
|
||||
'log_retention_period' => 'مدت زمان ذخیره سازی لاگ ها',
|
||||
'log_retention_period_description' => 'تعداد روزها برای نگهداری لاگ اطلاعیه
|
||||
ها و آرشیو های آپ تایم های سرور. برای
|
||||
غیرفعال کردن پاکسازی لاگ 0 وارد کنید.',
|
||||
'log_retention_days' => 'روزها',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Server \'%LABEL%\' دان است: آی پی=%IP%, پورت=%PORT%. خطا=%ERROR%',
|
||||
'off_email_subject' => 'مهم: سرور \'%LABEL%\' دان است',
|
||||
'off_email_body' => 'اتصال به سرور زیر با شکست مواجه شد:<br><br>سرور:
|
||||
%LABEL%<br>آی پی: %IP%<br>پورت: %PORT%<br>خطا: %ERROR%<br>تاریخ: %DATE%',
|
||||
'off_pushover_title' => 'سرور \'%LABEL%\' دان است',
|
||||
'off_pushover_message' => 'اتصال به سرور زیر با شکست مواجه شد:<br><br>سرور:
|
||||
%LABEL%<br>آی پی: %IP%<br>پورت: %PORT%<br>خطا: %ERROR%<br>تاریخ:
|
||||
%DATE%',
|
||||
'on_sms' => 'سرور \'%LABEL%\' در حال اجراست: آی پی=%IP%, پورت=%PORT%, it was down for
|
||||
%LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'مهم: سرور \'%LABEL%\' در حال اجراست',
|
||||
'on_email_body' => 'سرور \'%LABEL%\' دوباره در حال اجراست, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>سرور: %LABEL%<br>آی پی: %IP%<br>پورت:
|
||||
%PORT%<br>تاریخ: %DATE%',
|
||||
'on_pushover_title' => 'سرور \'%LABEL%\' در حال اجراست',
|
||||
'on_pushover_message' => 'سرور \'%LABEL%\' دوباره در حال اجراست, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>سرور: %LABEL%<br>آی پی: %IP%<br>پورت:
|
||||
%PORT%<br>تاریخ: %DATE%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'خوش آمدید, %user_name%',
|
||||
'title_sign_in' => 'لطفا وارد شوید',
|
||||
'title_forgot' => 'کلمه عبور خود را فراموش کرده اید؟',
|
||||
'title_reset' => 'کلمه عبور خود را بازنشانی کنید',
|
||||
'submit' => 'ثبت کردن',
|
||||
'remember_me' => 'من را به خاطر بسپار',
|
||||
'login' => 'ورود',
|
||||
'logout' => 'خروج',
|
||||
'username' => 'نام کاربری',
|
||||
'password' => 'کلمه عبور',
|
||||
'password_repeat' => 'تکرار کلمه عبور',
|
||||
'password_forgot' => 'کلمه عبور خود را فراموش کرده اید؟',
|
||||
'password_reset' => 'بازنشانی کلمه عبور',
|
||||
'password_reset_email_subject' => 'کلمه عبور خود را برای مانیتور سرور PHP
|
||||
بازنشانی کنید',
|
||||
'password_reset_email_body' => 'لطفا برای بازنشانی کلمه عبور خود از این
|
||||
لینک استفاده کنید. لطفا توجه کنید تنها 1
|
||||
ساعت وقت دارید.<br><br>%link%',
|
||||
'error_user_incorrect' => 'نام کاربری ارائه شده یافته نشد.',
|
||||
'error_login_incorrect' => 'اطلاعات نادرست است.',
|
||||
'error_login_passwords_nomatch' => 'کلمه های عبور یکسان نیستند.',
|
||||
'error_reset_invalid_link' => 'لینک بازنشانی شما نامعتبر است.',
|
||||
'success_password_forgot' => 'یک ایمیل حاوی اطلاعات مورد نیاز برای
|
||||
بازنشانی کلمه عبور برای شما ارسال شد.',
|
||||
'success_password_reset' => 'کلمه عبور شما با موفقیت بازنشانی شد. لطفا
|
||||
وارد شوید.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'غیر مجاز',
|
||||
'401_unauthorized_description' => 'شما اجازه مشاهده این صفحه را ندارید.',
|
||||
),
|
||||
);
|
|
@ -0,0 +1,298 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Sami Nieminen <nieminen.sami2@gmail.com>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Suomi - Finnish',
|
||||
'locale' => array(
|
||||
'0' => 'fi_FI.UTF-8',
|
||||
'1' => 'fi_FI',
|
||||
'2' => 'finnish',
|
||||
'3' => 'finnish-fi',
|
||||
),
|
||||
'locale_tag' => 'fi',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Asenna',
|
||||
'action' => 'Toiminta',
|
||||
'save' => 'Tallenna',
|
||||
'edit' => 'Muokkaa',
|
||||
'delete' => 'Poista',
|
||||
'date' => 'Päivä',
|
||||
'message' => 'Viesti',
|
||||
'yes' => 'Kyllä',
|
||||
'no' => 'Ei',
|
||||
'insert' => 'Asetukset',
|
||||
'add_new' => 'Lisää uusi',
|
||||
'update_available' => 'Uusi versio ({version}) on ladattavissa osoitteessa <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Takaisin ylös',
|
||||
'go_back' => 'Takaisin',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Peruuta',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Eilen klo %k:%M',
|
||||
'other_day_format' => '%A klo %k:%M',
|
||||
'never' => 'Ei koskaan',
|
||||
'hours_ago' => '%d tuntia sitten',
|
||||
'an_hour_ago' => 'noin tunti sitten',
|
||||
'minutes_ago' => '%d minuuttia sitten',
|
||||
'a_minute_ago' => 'noin minuutti sitten',
|
||||
'seconds_ago' => '%d sekuntia sitten',
|
||||
'a_second_ago' => 'sekunti sitten',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Asetukset',
|
||||
'server' => 'Palvelimet',
|
||||
'server_log' => 'Tapahtumat',
|
||||
'server_status' => 'Tila',
|
||||
'server_update' => 'Päivitä',
|
||||
'user' => 'Käyttäjät',
|
||||
'help' => 'Apua',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Käyttäjä',
|
||||
'name' => 'Nimi',
|
||||
'user_name' => 'Käyttäjänimi',
|
||||
'password' => 'Salasana',
|
||||
'password_repeat' => 'Salasana uudestaan',
|
||||
'password_leave_blank' => 'Jätä tyhjäksi jos et halua vaihtaa',
|
||||
'level' => 'Taso',
|
||||
'level_10' => 'Järjestelmänvalvoja',
|
||||
'level_20' => 'Käyttäjä',
|
||||
'level_description' => '<b>Järjestelmänvalvojilla</b> on täydet oikeudet: he voivat hallita palvelimia,
|
||||
käyttäjiä ja muokata ohjelmiston asetuksia.<br><b>Käyttäjät</b> voivat vain
|
||||
nähdä ja päivittää palvelimia jotka on asetettu heille.',
|
||||
'mobile' => 'Puhelin',
|
||||
'email' => 'Sähköposti',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover on palvelu jolla on helppo lähettää reaaliaikaisia tilaviestejä. Katso
|
||||
<a href="https://pushover.net/" target="_blank">verkkosivuilta</a> lisäinfoa.',
|
||||
'pushover_key' => 'Pushover avain',
|
||||
'pushover_device' => 'Pushover laite',
|
||||
'pushover_device_description' => 'Laitteen nimi johon viesti lähetetään. Jätä tyhjäksi lähettääksesi
|
||||
kaikkiin laitteisiin.',
|
||||
'delete_title' => 'Poista käyttäjä',
|
||||
'delete_message' => 'Haluatko varmasti poistaa käyttäjän \'%1\'?',
|
||||
'deleted' => 'Käyttäjä poistettu.',
|
||||
'updated' => 'Käyttäjä päivitetty.',
|
||||
'inserted' => 'Käyttäjä lisätty.',
|
||||
'profile' => 'Profiili',
|
||||
'profile_updated' => 'Profiilisi on päivitetty.',
|
||||
'error_user_name_bad_length' => 'Käyttäjänimi saa olla 2-64 merkkiä pitkä.',
|
||||
'error_user_name_invalid' => 'Käyttäjänimessä saa olla vain kirjaimia (a-z, A-Z), numeroita (0-9),
|
||||
pisteitä (.) ja alaviivoja (_).',
|
||||
'error_user_name_exists' => 'Annettu käyttäjänimi on jo tietokannassa.',
|
||||
'error_user_email_bad_length' => 'Sähköpostiosoitteen täytyy olla 5-255 merkkiä pitkä.',
|
||||
'error_user_email_invalid' => 'Annettu sähköposti ei kelpaa.',
|
||||
'error_user_level_invalid' => 'Annettu käyttäjän taso ei kelpaa.',
|
||||
'error_user_no_match' => 'Käyttäjää ei löydetty tietokannasta.',
|
||||
'error_user_password_invalid' => 'Annettu salasana on väärin.',
|
||||
'error_user_password_no_match' => 'Annetut salasanat eivät täsmää.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Tapahtumamerkinnät',
|
||||
'type' => 'Tyyppi',
|
||||
'status' => 'Tila',
|
||||
'email' => 'Sähköposti',
|
||||
'sms' => 'Tekstiviesti',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'Ei tapahtumia',
|
||||
'clear' => 'Tyhjennä loki',
|
||||
'delete_title' => 'Poista loki',
|
||||
'delete_message' => 'Haluatko varmasti poistaa <b>kaikki</b> lokit?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Palvelin',
|
||||
'status' => 'Tila',
|
||||
'label' => 'Nimi',
|
||||
'domain' => 'Isäntänimi/IP',
|
||||
'timeout' => 'Aikakatkaisu',
|
||||
'timeout_description' => 'Kuinka monta sekuntia odottaa kunnes palvelin merkitään sammuneeksi.',
|
||||
'port' => 'Portti',
|
||||
'type' => 'Tyyppi',
|
||||
'type_website' => 'Verkkosivu',
|
||||
'type_service' => 'Palvelu',
|
||||
'pattern' => 'Etsittävä sarja/kuvio',
|
||||
'pattern_description' => 'Jos määriteltyä sarjaa ei löydetä verkkosivuilta, palvelin merkitään
|
||||
sammuneeksi. REGEX on sallittua.',
|
||||
'last_check' => 'Viimeisin tarkistus',
|
||||
'last_online' => 'Viimeksi nähty',
|
||||
'monitoring' => 'Valvottava',
|
||||
'no_monitoring' => 'Ei valvontaa',
|
||||
'email' => 'Sähköposti',
|
||||
'send_email' => 'Lähetä sähköposti',
|
||||
'sms' => 'Tekstiviesti',
|
||||
'send_sms' => 'Lähetä tekstiviesti',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Käyttäjät',
|
||||
'delete_title' => 'Poista palvelin',
|
||||
'delete_message' => 'Haluatko varmasti poistaa palvelimen \'%1\'?',
|
||||
'deleted' => 'Palvelin poistettu.',
|
||||
'updated' => 'Palvelin päivitetty.',
|
||||
'inserted' => 'Palvelin lisätty.',
|
||||
'latency' => 'Viive',
|
||||
'latency_max' => 'Viive (maksimi)',
|
||||
'latency_min' => 'Viive (minimi)',
|
||||
'latency_avg' => 'Viive (keskiarvo)',
|
||||
'uptime' => 'Päälläoloaika',
|
||||
'year' => 'Vuosi',
|
||||
'month' => 'Kuukausi',
|
||||
'week' => 'Viikko',
|
||||
'day' => 'Päivä',
|
||||
'hour' => 'Tunti',
|
||||
'warning_threshold' => 'Varoituskynnys',
|
||||
'warning_threshold_description' => 'Epäonnistuneiden tarkistuksien määrä kunnes se merkataan sammuneeksi.',
|
||||
'chart_last_week' => 'Viime viikolla',
|
||||
'chart_history' => 'Historia',
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'Tekstiviesti-ilmoitukset on poistettu käytöstä.',
|
||||
'warning_notifications_disabled_email' => 'Sähköposti-ilmoitukset on poistettu käytöstä.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover-ilmoitukset on poistettu käytöstä.',
|
||||
'error_server_no_match' => 'Palvelinta ei löydetty.',
|
||||
'error_server_label_bad_length' => 'Nimen pitää olla 1-255 merkkiä pitkä.',
|
||||
'error_server_ip_bad_length' => 'Isäntänimen / IP:n pitää olla 1-255 merkkiä pitkä.',
|
||||
'error_server_ip_bad_service' => 'Annettu IP osoite ei kelpaa.',
|
||||
'error_server_ip_bad_website' => 'Annettu verkkosivun osoite ei kelpaa.',
|
||||
'error_server_type_invalid' => 'Valittu palvelintyyppi ei kelpaa.',
|
||||
'error_server_warning_threshold_invalid' => 'Varoituskynnyksen arvo pitää olla suurempi kuin 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Yleiset',
|
||||
'language' => 'Kieli',
|
||||
'show_update' => 'Tarkista päivitykset?',
|
||||
'email_status' => 'Salli sähköpostin lähettäminen',
|
||||
'email_from_email' => 'Lähettäjän osoite',
|
||||
'email_from_name' => 'Lähettäjän nimi',
|
||||
'email_smtp' => 'Käytä SMTP:tä',
|
||||
'email_smtp_host' => 'SMTP isäntä',
|
||||
'email_smtp_port' => 'SMTP portti',
|
||||
'email_smtp_security' => 'SMTP turvallisuus',
|
||||
'email_smtp_security_none' => 'Ei mitään',
|
||||
'email_smtp_username' => 'SMTP käyttäjänimi',
|
||||
'email_smtp_password' => 'SMTP salasana',
|
||||
'email_smtp_noauth' => 'Jätä tyhjäksi jos ei varmennusta',
|
||||
'sms_status' => 'Salli tekstiviestien lähetys',
|
||||
'sms_gateway' => 'Palvelu jonka kautta tekstiviestit lähetetään',
|
||||
'sms_gateway_username' => 'Palvelun käyttäjänimi',
|
||||
'sms_gateway_password' => 'Palvelun salasana',
|
||||
'sms_from' => 'Lähettäjän puhelinnumero',
|
||||
'pushover_status' => 'Salli Pushover-viestien lähetys',
|
||||
'pushover_description' => 'Pushover on palvelu jolla on helppo lähettää reaaliaikaisia tilaviestejä. Katso
|
||||
<a href="https://pushover.net/" target="_blank">verkkosivuilta</a> lisäinfoa.',
|
||||
'pushover_clone_app' => 'Paina tästä luodaksesi Pushover-sovelluksesi',
|
||||
'pushover_api_token' => 'Pushover API-avain',
|
||||
'pushover_api_token_description' => 'Ennen kuin voit käyttää Pushoveria, sinun täytyy <a href="%1$s"
|
||||
target="_blank" rel="noopener">rekisteröidä sovellus</a> heidän
|
||||
nettisivuillaan, ja kopioida API-avain tänne.',
|
||||
'alert_type' => 'Valitse milloin haluat ilmoituksia.',
|
||||
'alert_type_description' => '<b>Tilan muutos:</b> Saat ilmoituksen kun palvelimen tila vaihtuu. Eli tilasta
|
||||
päällä -> sammunut tai sammunut -> päällä.<br><br /><b>Sammunut:</b> Saat
|
||||
yhden ilmoituksen kun palvelimen tila vaihtuu sammuneeksi, mutta *VAIN
|
||||
ENSIMMÄISEN KERRAN*. Esimerkiksi, jos tarkistus tehdään joka 15 minuutti, ja
|
||||
palvelin sammuu klo 1 ja pysyy sammuneena klo 6 asti. Saat vain yhden ilmoituksen
|
||||
klo 1, ei muuta.<br><br><b>Aina:</b> Saat ilmoituksen joka kerta kun palvelin
|
||||
tarkistetaan, vaikka palvelin olisi ollut sammuneena tunteja.',
|
||||
'alert_type_status' => 'Tilan muutos',
|
||||
'alert_type_offline' => 'Sammunut',
|
||||
'alert_type_always' => 'Aina',
|
||||
'log_status' => 'Tallenna tapahtumat',
|
||||
'log_status_description' => 'Jos arvo on tosi, palvelin tallentaa tapahtumamerkinnän jokaisesta tilan
|
||||
muutoksesta.',
|
||||
'log_email' => 'Tallenna lähetetyt sähköpostitapahtumat',
|
||||
'log_sms' => 'Tallenna lähetetyt tekstiviestitapahtumat',
|
||||
'log_pushover' => 'Tallenna lähetetyt Pushover-tapahtumat',
|
||||
'updated' => 'Asetukset tallennettu ja päivitetty.',
|
||||
'tab_email' => 'Sähköposti',
|
||||
'tab_sms' => 'Tekstiviesti',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Sähköposti asetukset',
|
||||
'settings_sms' => 'Tekstiviesti asetukset',
|
||||
'settings_pushover' => 'Pushover asetukset',
|
||||
'settings_notification' => 'Ilmoitusasetukset',
|
||||
'settings_log' => 'Tapahtumamerkintöjen asetukset',
|
||||
'auto_refresh' => 'Automaattipäivitys',
|
||||
'auto_refresh_description' => 'Päivittää automaattisesti palvelimet-sivun.<br><span class="small">Aika
|
||||
sekunteina, jos 0, sivu ei päivity automaattisesti.</span>',
|
||||
'test' => 'Testi',
|
||||
'test_email' => 'Testisähköposti lähetetään profiilisi sähköpostiosoitteeseen.',
|
||||
'test_sms' => 'Testitekstiviesti lähetetään profiilisi numeroon.',
|
||||
'test_pushover' => 'Pushover-ilmoitus lähetetään profiilissa asetettuun laitteeseen.',
|
||||
'send' => 'Lähetä',
|
||||
'test_subject' => 'Testi',
|
||||
'test_message' => 'Testiviesti',
|
||||
'email_sent' => 'Sähköposti lähetetty',
|
||||
'email_error' => 'Virhe sähköpostin lähetyksessä',
|
||||
'sms_sent' => 'Tekstiviesti lähetetty',
|
||||
'sms_error' => 'Virhe tekstiviestin lähetyksessä. %s',
|
||||
'sms_error_nomobile' => 'Testitektiviestin lähetys epäonnistui: toimivaa numeroa ei löydetty profiilistasi.',
|
||||
'pushover_sent' => 'Pushover ilmoitus lähetetty',
|
||||
'pushover_error' => 'Virhe Pushover-ilmoitusta lähetettäessä: %s',
|
||||
'pushover_error_noapp' => 'Virhe lähetettäessä Pushover-ilmoitusta: Pushover API-avainta ei löydetty
|
||||
asetuksista.',
|
||||
'pushover_error_nokey' => 'Virhe lähetettäessä Pushover-ilmoitusta: Pushover avainta ei löydetty
|
||||
profiilistasi.',
|
||||
'log_retention_period' => 'Tapahtumien säilytysaika',
|
||||
'log_retention_period_description' => 'Kuinka monta päivää pitää palvelinten päälläoloaikoja ja muita
|
||||
tapahtumia. Aseta arvoksi 0 jos haluat pitää ne loputtomasti.',
|
||||
'log_retention_days' => 'päivää',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Tervetuloa, %user_name%',
|
||||
'title_sign_in' => 'Ole hyvä ja kirjaudu sisään',
|
||||
'title_forgot' => 'Unohtuiko salasanasi?',
|
||||
'title_reset' => 'Resetoi salasanasi',
|
||||
'submit' => 'Lähetä',
|
||||
'remember_me' => 'Muista minut',
|
||||
'login' => 'Kirjaudu sisään',
|
||||
'logout' => 'Kirjaudu ulos',
|
||||
'username' => 'Käyttäjänimi',
|
||||
'password' => 'Salasana',
|
||||
'password_repeat' => 'Salasana uudestaan',
|
||||
'password_forgot' => 'Unohtuiko salasanasi?',
|
||||
'password_reset' => 'Resetoi salasanasi',
|
||||
'password_reset_email_subject' => 'Resetoi salasanasi PHP Server Monitoriin',
|
||||
'password_reset_email_body' => 'Ole hyvä ja käytä seuraavaa linkkiä restoidaksesi salasanasi. Huomaa että
|
||||
linkki vanhentuu tunnin sisällä.<br><br>%link%',
|
||||
'error_user_incorrect' => 'Annettua käyttäjänimeä ei löydetty.',
|
||||
'error_login_incorrect' => 'Antamasi tiedot eivät ole oikein.',
|
||||
'error_login_passwords_nomatch' => 'Annetut salasanat eivät täsmää.',
|
||||
'error_reset_invalid_link' => 'Resetointilinkkisi on väärä.',
|
||||
'success_password_forgot' => 'Sähköpostiisi on lähetetty ohjeet kuinka resetoida salasanasi.',
|
||||
'success_password_reset' => 'Salasanasi on resetoitu onnistuneesti, ole hyvä ja kirjaudu sisään.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Ei käyttöoikeuksia',
|
||||
'401_unauthorized_description' => 'Sinulla ei ole käyttöoikeuksia katsoa tätä sivua.',
|
||||
),
|
||||
);
|
|
@ -1,298 +1,473 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author David Ribeiro
|
||||
* @author Jérôme Cabanis <jerome@lauraly.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Français - French',
|
||||
'locale' => array('fr_FR.UTF-8', 'fr_FR', 'french'),
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Installer',
|
||||
'action' => 'Action',
|
||||
'save' => 'Enregistrer',
|
||||
'edit' => 'Editer',
|
||||
'delete' => 'Supprimer',
|
||||
'date' => 'Date',
|
||||
'message' => 'Message',
|
||||
'yes' => 'Oui',
|
||||
'no' => 'Non',
|
||||
'insert' => 'Nouveau',
|
||||
'add_new' => 'Nouveau',
|
||||
'update_available' => 'Une nouvelle version ({version}) est disponible à l\'adresse <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Haut de page',
|
||||
'go_back' => 'Retour',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Annuler',
|
||||
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||
'short_day_format' => 'Le %e %B',
|
||||
'long_day_format' => 'Le %e %B %Y',
|
||||
'yesterday_format' => 'Hier à %kh%M',
|
||||
'other_day_format' => '%A à %kh%M',
|
||||
'never' => 'Jamais',
|
||||
'hours_ago' => 'Il y a %d heures',
|
||||
'an_hour_ago' => 'Il y a une heure',
|
||||
'minutes_ago' => 'Il y a %d minutes',
|
||||
'a_minute_ago' => 'Il y a une minute',
|
||||
'seconds_ago' => 'Il y a %d secondes',
|
||||
'a_second_ago' => 'Il y a une seconde',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Configuration',
|
||||
'server' => 'Serveurs',
|
||||
'server_log' => 'Événements',
|
||||
'server_status' => 'États',
|
||||
'server_update' => 'Mise à jour',
|
||||
'user' => 'Utilisateurs',
|
||||
'help' => 'Aide',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Utilisateur',
|
||||
'name' => 'Nom',
|
||||
'user_name' => 'Nom d\'utilisateur',
|
||||
'password' => 'Mot de passe',
|
||||
'password_repeat' => 'Répéter le mot de passe',
|
||||
'password_leave_blank' => 'Laisser vide pour ne pas le modifier',
|
||||
'level' => 'Niveau',
|
||||
'level_10' => 'Administrateur',
|
||||
'level_20' => 'Utilisateur',
|
||||
'level_description' => 'Les <b>Administrateurs</b> ont un accès total. Ils peuvent gérer les serveurs, les utilisateurs et éditer la configuration globale.<br/>Les <b>Utilisateurs</b> ne peuvent que voir et mettre à jour les serveurs qui leur ont été assignés.',
|
||||
'mobile' => 'Téléphone',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||
'delete_title' => 'Supprimer un utilisateur',
|
||||
'delete_message' => 'Êtes-vous sûr de vouloir supprimer l\'utilisateur \'%1\' ?',
|
||||
'deleted' => 'Utilisateur supprimé.',
|
||||
'updated' => 'Utilisateur mis à jour.',
|
||||
'inserted' => 'Utilisateur ajouté.',
|
||||
'profile' => 'Profil',
|
||||
'profile_updated' => 'Votre profil a été mis à jour.',
|
||||
'error_user_name_bad_length' => 'Le nom d\'utilisateur doit avoir entre 2 et 64 caractères.',
|
||||
'error_user_name_invalid' => 'Le nom d\'utilisateur ne peut contenir que des caractères alphabetiques (a-z, A-Z), des chiffres (0-9) ou underscore (_).',
|
||||
'error_user_name_exists' => 'Ce nom d\'utilisateur existe déjà.',
|
||||
'error_user_email_bad_length' => 'L\'adresse email doit avoir entre 5 et 255 caractères.',
|
||||
'error_user_email_invalid' => 'L\'adresse email n\'est pas valide.',
|
||||
'error_user_level_invalid' => 'Le niveau d\'utilisateur n\'est pas valide.',
|
||||
'error_user_no_match' => 'L\'utilisateur n\'a pas été trouvé dans la base de donnée.',
|
||||
'error_user_password_invalid' => 'Le mot de passe n\'est pas valide.',
|
||||
'error_user_password_no_match' => 'Le mot de passe est incorrect.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Événements',
|
||||
'type' => 'Type',
|
||||
'status' => 'État',
|
||||
'email' => 'email',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'Aucun événement',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Serveur',
|
||||
'status' => 'État',
|
||||
'label' => 'Nom',
|
||||
'domain' => 'Domaine/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||
'port' => 'Port',
|
||||
'type' => 'Type',
|
||||
'type_website' => 'Site Web',
|
||||
'type_service' => 'Service',
|
||||
'pattern' => 'Rechercher un texte/motif',
|
||||
'pattern_description' => 'Si ce texte n\'est par retrouvé sur le site web, le serveur est marqué hors-service. Les expressions réguliaires sont autorisées.',
|
||||
'last_check' => 'Dernière vérification',
|
||||
'last_online' => 'Dernière fois OK',
|
||||
'monitoring' => 'Serveillé',
|
||||
'no_monitoring' => 'Non serveillé',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Envoyer un email',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Envoyer un SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Users',
|
||||
'delete_title' => 'Supprimer un serveur',
|
||||
'delete_message' => 'Êtes-vous sûr de vouloir supprimer le serveur \'%1\' ?',
|
||||
'deleted' => 'Serveur supprimé.',
|
||||
'updated' => 'Serveur mis à jour.',
|
||||
'inserted' => 'Serveur ajouté.',
|
||||
'latency' => 'Temps de réponse',
|
||||
'latency_max' => 'Temps de réponse maximum',
|
||||
'latency_min' => 'Temps de réponse minimum',
|
||||
'latency_avg' => 'Temps de réponse moyen',
|
||||
'uptime' => 'Disponibilité',
|
||||
'year' => 'Année',
|
||||
'month' => 'Mois',
|
||||
'week' => 'Semaine',
|
||||
'day' => 'Jour',
|
||||
'hour' => 'Heure',
|
||||
'warning_threshold' => 'Seuil d\'alerte',
|
||||
'warning_threshold_description' => 'Nombre d\'échecs de connexion avant que le serveur soit marqué hors-service.',
|
||||
'chart_last_week' => 'La dernière semaine',
|
||||
'chart_history' => 'Historique',
|
||||
// Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html
|
||||
'chart_day_format' => '%d/%m/%Y',
|
||||
'chart_long_date_format' => '%d/%m/%Y %H:%M:%S',
|
||||
'chart_short_date_format' => '%d/%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||
'error_server_no_match' => 'Serveur non trouvé.',
|
||||
'error_server_label_bad_length' => 'Le nom doit avoir entre 1 et 255 caractères.',
|
||||
'error_server_ip_bad_length' => 'Domaine/IP doit avoir entre 1 et 255 caractères.',
|
||||
'error_server_ip_bad_service' => 'L\'adresse IP n\'est pas valide.',
|
||||
'error_server_ip_bad_website' => 'L\'URL du site web n\'est pas valide.',
|
||||
'error_server_type_invalid' => 'Le type de service sélectionné n\'est pas valide.',
|
||||
'error_server_warning_threshold_invalid' => 'Le seuil d\'alerte doit être un nombre entier supérieur à 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Général',
|
||||
'language' => 'Langue',
|
||||
'show_update' => 'Vérifier les nouvelles mise à jour chaque semaines',
|
||||
'email_status' => 'Autoriser l\'envoi de mail',
|
||||
'email_from_email' => 'Adresse de l\'expéditeur',
|
||||
'email_from_name' => 'Nom de l\'expéditeur',
|
||||
'email_smtp' => 'Utiliser un serveur SMTP',
|
||||
'email_smtp_host' => 'Adresse serveur SMTP',
|
||||
'email_smtp_port' => 'Port SMTP',
|
||||
'email_smtp_username' => 'Nom utilisateur SMTP',
|
||||
'email_smtp_password' => 'Mot de passe SMTP',
|
||||
'email_smtp_noauth' => 'Laisser vide si pas d\'authentication',
|
||||
'sms_status' => 'Autoriser l\'envoi de SMS',
|
||||
'sms_gateway' => 'Passerelle à utiliser pour l\'envoi de SMS',
|
||||
'sms_gateway_mosms' => 'Mosms',
|
||||
'sms_gateway_mollie' => 'Mollie',
|
||||
'sms_gateway_spryng' => 'Spryng',
|
||||
'sms_gateway_inetworx' => 'Inetworx',
|
||||
'sms_gateway_clickatell' => 'Clickatell',
|
||||
'sms_gateway_textmarketer' => 'Textmarketer',
|
||||
'sms_gateway_smsglobal' => 'SMSGlobal',
|
||||
'sms_gateway_smsit' => 'Smsit',
|
||||
'sms_gateway_username' => 'Nom utilisateur de la passerelle',
|
||||
'sms_gateway_password' => 'Mot de passe de la passerelle',
|
||||
'sms_from' => 'SMS de l\'expéditeur',
|
||||
'pushover_status' => 'Allow sending Pushover messages',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Before you can use Pushover, you need to <a href="%1$s" target="_blank">register an App</a> at their website and enter the App API Token here.',
|
||||
'alert_type' => 'Choisissez quand vous souhaitez être notifié',
|
||||
'alert_type_description' => '<b>Changement d\'état : </b>'.
|
||||
'Vous recevez une notification chaque fois que le serveur change d\'état. C\'est-à-dire passe de l\'état OK à HORS SERVICE ou de HORS SERVICE à OK.<br/>'.
|
||||
'<br/><b>Hors service : </b>'.
|
||||
'Vous ne recevez une notification que quand le serveur passe de l\'état OK à HORS SERVICE. Par exemple, '.
|
||||
'Votre tache planifiée s\'exécute toute les 15 minutes et votre serveur passe à l\'état HORS SERVICE à 1 heure du matin et le reste jusqu\'à 6 heures du matin.'.
|
||||
'Vous ne recevez qu\'une seule notification à 1 heure du matin.<br/>'.
|
||||
'<br/><b>Toujours : </b>'.
|
||||
'Vous recevez une notification à chaque exécution de la tache planifiée si le serveur est à l\'état HORS SERVICE ',
|
||||
'alert_type_status' => 'Changement d\'état',
|
||||
'alert_type_offline' => 'Hors service',
|
||||
'alert_type_always' => 'Toujours',
|
||||
'log_status' => 'Etat des événements',
|
||||
'log_status_description' => 'Si l\'option est activée, un événement est enregistré chaque fois qu\'une notification a lieu.',
|
||||
'log_email' => 'Enregistrer tout les emails envoyés',
|
||||
'log_sms' => 'Enregistrer tout les SMS envoyés',
|
||||
'log_pushover' => 'Log pushover messages sent by the script',
|
||||
'updated' => 'La configuration a été mise à jour.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Configuration email',
|
||||
'settings_sms' => 'Configuration SMS',
|
||||
'settings_pushover' => 'Pushover settings',
|
||||
'settings_notification' => 'Configuration des notifications',
|
||||
'settings_log' => 'Configuration des événements',
|
||||
'auto_refresh' => 'Auto-rachaîchissement',
|
||||
'auto_refresh_servers' =>
|
||||
'Auto-rachaîchissement de la page serveurs.<br/>'.
|
||||
'<span class="small">'.
|
||||
'Temps en secondes. Si 0, la page n\'est pas rafraîchie.'.
|
||||
'</span>',
|
||||
'seconds' => 'secondes',
|
||||
'test' => 'Tester',
|
||||
'test_email' => 'Un email va vous être envoyé à l\'adresse définie dans votre profil utilisateur.',
|
||||
'test_sms' => 'Un SMS va vous être envoyé au numéro défini dans votre profil utilisateur.',
|
||||
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||
'send' => 'Envoyer',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Message de test',
|
||||
'email_sent' => 'Email envoyé',
|
||||
'email_error' => 'Erreur lors de l\'envoie de l\'email',
|
||||
'sms_sent' => 'Sms envoyé',
|
||||
'sms_error' => 'Erreur lors de l\'envoie du sms',
|
||||
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||
'pushover_sent' => 'Pushover notification sent',
|
||||
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||
'log_retention_period' => 'Log retention period',
|
||||
'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
|
||||
'log_retention_days' => 'days',
|
||||
),
|
||||
// for newlines in the email messages use <br/>
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Le Serveur \'%LABEL%\' est HORS SERVICE: IP=%IP%, Port=%PORT%. Erreur=%ERROR%',
|
||||
'off_email_subject' => 'IMPORTANT: Le Serveur \'%LABEL%\' est HORS SERVICE',
|
||||
'off_email_body' => "Impossible de se connecter au serveur suivant:<br/><br/>Serveur: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Erreur: %ERROR%<br/>Date: %DATE%",
|
||||
'off_pushover_title' => 'Le Serveur \'%LABEL%\' est HORS SERVICE',
|
||||
'off_pushover_message' => "Impossible de se connecter au serveur suivant:<br/><br/>Serveur: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Erreur: %ERROR%<br/>Date: %DATE%",
|
||||
'on_sms' => 'Le Serveur \'%LABEL%\' est OK: IP=%IP%, Port=%PORT%',
|
||||
'on_email_subject' => 'IMPORTANT: Le Serveur \'%LABEL%\' est OK',
|
||||
'on_email_body' => "Le Serveur '%LABEL%' est de nouveau OK:<br/><br/>Serveur: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Date: %DATE%",
|
||||
'on_pushover_title' => 'Le Serveur \'%LABEL%\' est OK',
|
||||
'on_pushover_message' => "Le Serveur '%LABEL%' est de nouveau OK:<br/><br/>Serveur: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Date: %DATE%",
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Bonjour %user_name%',
|
||||
'title_sign_in' => 'Connectez vous SVP',
|
||||
'title_forgot' => 'Mot de passe oublié ?',
|
||||
'title_reset' => 'Réinitialisation du mot de passe',
|
||||
'submit' => 'Envoyer',
|
||||
'remember_me' => 'Se vouvenir de moi',
|
||||
'login' => 'Connexion',
|
||||
'logout' => 'Déconnexion',
|
||||
'username' => 'Nom',
|
||||
'password' => 'Mot de passe',
|
||||
'password_repeat' => 'Répéter le mot de passe',
|
||||
'password_forgot' => 'Mot de passe oublié ?',
|
||||
'password_reset' => 'Réinitialiser le mot de passe',
|
||||
'password_reset_email_subject' => 'Réinitialisation du mot de passe pour PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Cliquez sur le lien ci-dessous pour réinitialiser votre mot de passe. Veuillez noter qu\'il expire dans une heure.<br/><br/>%link%',
|
||||
'error_user_incorrect' => 'Nom d\'utilisateur invalide.',
|
||||
'error_login_incorrect' => 'Informations incorrectes.',
|
||||
'error_login_passwords_nomatch' => 'Mot de passe invalide.',
|
||||
'error_reset_invalid_link' => 'Le lien d\initialisation du mot de passe n\'est pas valide.',
|
||||
'success_password_forgot' => 'Un email vous a été envoyé pour réinitialiser votre mot de passe.',
|
||||
'success_password_reset' => 'Votre mot de passe a été réinitialisé.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Unauthorized',
|
||||
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||
),
|
||||
);
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author David Ribeiro
|
||||
* @author Jérôme Cabanis <jerome@lauraly.com>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Français - French',
|
||||
'locale' => array(
|
||||
'0' => 'fr_FR.UTF-8',
|
||||
'1' => 'fr_FR',
|
||||
'2' => 'french',
|
||||
),
|
||||
'locale_tag' => 'fr',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Installer',
|
||||
'action' => 'Action',
|
||||
'save' => 'Enregistrer',
|
||||
'edit' => 'Editer',
|
||||
'delete' => 'Supprimer',
|
||||
'view' => 'Détails',
|
||||
'date' => 'Date',
|
||||
'message' => 'Message',
|
||||
'yes' => 'Oui',
|
||||
'no' => 'Non',
|
||||
'insert' => 'Nouveau',
|
||||
'add_new' => 'Nouveau',
|
||||
'update_available' => 'Une nouvelle version ({version}) est disponible à l\'adresse <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Haut de page',
|
||||
'go_back' => 'Retour',
|
||||
'ok' => 'OK',
|
||||
'bad' => 'mauvais',
|
||||
'cancel' => 'Annuler',
|
||||
'none' => 'Aucun',
|
||||
'activate' => 'Activer',
|
||||
'short_day_format' => 'Le %e %B',
|
||||
'long_day_format' => 'Le %e %B %Y',
|
||||
'yesterday_format' => 'Hier à %kh%M',
|
||||
'other_day_format' => '%A à %kh%M',
|
||||
'never' => 'Jamais',
|
||||
'hours_ago' => 'Il y a %d heures',
|
||||
'an_hour_ago' => 'Il y a une heure',
|
||||
'minutes_ago' => 'Il y a %d minutes',
|
||||
'a_minute_ago' => 'Il y a une minute',
|
||||
'seconds_ago' => 'Il y a %d secondes',
|
||||
'a_second_ago' => 'Il y a une seconde',
|
||||
'year' => 'année',
|
||||
'years' => 'années',
|
||||
'month' => 'mois',
|
||||
'months' => 'mois',
|
||||
'day' => 'jour',
|
||||
'days' => 'jours',
|
||||
'hour' => 'heure',
|
||||
'hours' => 'heures',
|
||||
'minute' => 'minute',
|
||||
'minutes' => 'minutes',
|
||||
'second' => 'seconde',
|
||||
'seconds' => 'secondes',
|
||||
'current' => 'actuel',
|
||||
'settings' => 'Paramètres',
|
||||
'search' => 'Recherche',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Configuration',
|
||||
'server' => 'Serveurs',
|
||||
'server_log' => 'Événements',
|
||||
'server_status' => 'États',
|
||||
'server_update' => 'Mise à jour',
|
||||
'user' => 'Utilisateurs',
|
||||
'help' => 'Aide',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Utilisateur',
|
||||
'name' => 'Nom',
|
||||
'user_name' => 'Nom d\'utilisateur',
|
||||
'password' => 'Mot de passe',
|
||||
'password_repeat' => 'Répéter le mot de passe',
|
||||
'password_leave_blank' => 'Laisser vide pour ne pas le modifier',
|
||||
'level' => 'Rôle',
|
||||
'level_10' => 'Administrateur',
|
||||
'level_20' => 'Utilisateur',
|
||||
'level_description' => 'Les <b>Administrateurs</b> ont un accès total. Ils peuvent gérer les serveurs, les
|
||||
utilisateurs et éditer la configuration globale.<br>Les <b>Utilisateurs</b> ne
|
||||
peuvent que voir et mettre à jour les serveurs qui leur ont été assignés.',
|
||||
'mobile' => 'Téléphone',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover est un service qui simplifie les notifications en temps réel. Voir <a
|
||||
href="https://pushover.net/" target="_blank">leur site web</a> pour plus
|
||||
d\'informations.',
|
||||
'pushover_key' => 'Clé Pushover',
|
||||
'pushover_device' => 'Appareil Pushover',
|
||||
'pushover_device_description' => 'Nom de l\'appareil auquel le message doit être envoyé. Laissez vide pour
|
||||
l\'envoyer à tous les appareils.',
|
||||
'telegram' => 'Telegram',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> est une application de
|
||||
messagerie instantanée qui facilite la réception de notification en temps réel.
|
||||
Lisez la <a href="http://docs.phpservermonitor.org/"
|
||||
target="_blank">documentation</a> pour obtenir plus d\'informations sur la
|
||||
configuration de ce service.',
|
||||
'telegram_chat_id' => 'ID de conversation (Chat ID) Telegram',
|
||||
'telegram_chat_id_description' => 'Les notifications seront envoyées à la conversation correspondante.',
|
||||
'telegram_get_chat_id' => 'Cliquez ici pour obtenir votre ID de conversation (Chat ID)',
|
||||
'activate_telegram' => 'Activer les alertes Telegram',
|
||||
'activate_telegram_description' => 'Permet aux notifications Telegram d\'être envoyée à la conversation
|
||||
spécifiée. Sans cette permission, Telegram ne nous autorise pas à vous
|
||||
envoyer des notifications.',
|
||||
'telegram_bot_username_found' => 'Le BOT a été trouvé !<br><a href="%s" target="_blank"
|
||||
rel="noopener"><button class="btn btn-primary">Étape suivante</button></a>
|
||||
<br>Cela va ouvrir une conversation avec le BOT. Vous devez appuyer sur
|
||||
\'/start\' ou le saisir.',
|
||||
'telegram_bot_username_error_token' => '<b>401 - Unauthorized</b>. Assurez-vous que le Token API soit valide.',
|
||||
'telegram_bot_error' => 'Une erreur s\'est produite en tentant d\'activer les notifications Telegram : %s',
|
||||
'delete_title' => 'Supprimer un utilisateur',
|
||||
'delete_message' => 'Êtes-vous sûr de vouloir supprimer l\'utilisateur \'%1\' ?',
|
||||
'deleted' => 'Utilisateur supprimé.',
|
||||
'updated' => 'Utilisateur mis à jour.',
|
||||
'inserted' => 'Utilisateur ajouté.',
|
||||
'profile' => 'Profil',
|
||||
'profile_updated' => 'Votre profil a été mis à jour.',
|
||||
'error_user_name_bad_length' => 'Le nom d\'utilisateur doit avoir entre 2 et 64 caractères.',
|
||||
'error_user_name_invalid' => 'Le nom d\'utilisateur ne peut contenir que des caractères alphabétiques (a-z,
|
||||
A-Z), des chiffres (0-9), points (.) ou underscore (_).',
|
||||
'error_user_name_exists' => 'Ce nom d\'utilisateur existe déjà.',
|
||||
'error_user_email_bad_length' => 'L\'adresse email doit avoir entre 5 et 255 caractères.',
|
||||
'error_user_email_invalid' => 'L\'adresse email n\'est pas valide.',
|
||||
'error_user_level_invalid' => 'Le rôle d\'utilisateur n\'est pas valide.',
|
||||
'error_user_no_match' => 'L\'utilisateur n\'a pas été trouvé dans la base de données.',
|
||||
'error_user_password_invalid' => 'Le mot de passe n\'est pas valide.',
|
||||
'error_user_password_no_match' => 'Le mot de passe est incorrect.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Événements',
|
||||
'type' => 'Type',
|
||||
'status' => 'État',
|
||||
'email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'telegram' => 'Telegram',
|
||||
'no_logs' => 'Aucun événement',
|
||||
'clear' => 'Effacer les journaux',
|
||||
'delete_title' => 'Supprimer les journaux',
|
||||
'delete_message' => 'Êtes-vous sûr de vouloir supprimer <b>tous</b> les journaux ?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Serveur',
|
||||
'status' => 'État',
|
||||
'label' => 'Nom',
|
||||
'domain' => 'Domaine/IP',
|
||||
'timeout' => 'Délai d\'attente',
|
||||
'timeout_description' => 'Nombre de secondes à attendre une réponse du serveur.',
|
||||
'authentication_settings' => 'Paramètres d\'authentification',
|
||||
'optional' => 'Optionnel',
|
||||
'website_username' => 'Nom d\'utilisateur',
|
||||
'website_username_description' => 'Nom d\'utilisateur pour accèder au site. (Seul l\'authentification Apache
|
||||
est supporté.)',
|
||||
'website_password' => 'Mot de passe',
|
||||
'website_password_description' => 'Mot de passe pour accèder au site. Le mot de passe est cryptè dans la
|
||||
base de donnée.',
|
||||
'fieldset_monitoring' => 'Monitoring',
|
||||
'fieldset_permissions' => 'Permissions',
|
||||
'permissions' => 'Les utilisateurs suivants pourront voir le serveur.',
|
||||
'port' => 'Port',
|
||||
'custom_port' => 'Port personnalisé',
|
||||
'popular_ports' => 'Ports courant',
|
||||
'request_method' => 'Type de requête',
|
||||
'custom_request_method' => 'Type de requête personalisée',
|
||||
'popular_request_methods' => 'Type de requête prédéfinie',
|
||||
'post_field' => 'Champ POST',
|
||||
'post_field_description' => 'Les données qui seront envoyées en utilisant le type de requête choisi.',
|
||||
'please_select' => 'Veuillez choisir',
|
||||
'type' => 'Type',
|
||||
'type_website' => 'Site Web',
|
||||
'type_service' => 'Service',
|
||||
'type_ping' => 'Ping',
|
||||
'pattern' => 'Rechercher un texte/motif',
|
||||
'pattern_description' => 'Si ce texte n\'est par retrouvé sur le site web, le serveur est marqué
|
||||
hors-service. Les expressions régulières sont autorisées.',
|
||||
'pattern_online' => 'Le texte indique que le site est',
|
||||
'pattern_online_description' => 'En ligne : Si ce texte est trouvé sur le site internet, le serveur sera
|
||||
considéré en ligne. Hors-ligne : Si ce texte n\'est pas trouvé sur le
|
||||
site, le serveur sera considéré hors-ligne.',
|
||||
'redirect_check' => 'La redirection vers un autre domaine est',
|
||||
'redirect_check_description' => 'Une redirection vers un autre domaine est généralement mauvais signe.',
|
||||
'allow_http_status' => 'Autoriser Les codes de statuts HTTP',
|
||||
'allow_http_status_description' => 'Marquer le serveur en ligne. Les codes de statuts HTTP inférieur à 400
|
||||
sont considérés comme en ligne par défaut. Séparer les valeurs avec
|
||||
|.',
|
||||
'header_name' => 'Nom d\'en-têtes',
|
||||
'header_value' => 'Valeur d\'en-tête',
|
||||
'header_name_description' => 'Sensible à la casse.',
|
||||
'header_value_description' => 'Les expressions régulières sont autorisées.',
|
||||
'last_check' => 'Dernière vérification',
|
||||
'last_online' => 'Dernière fois OK',
|
||||
'last_offline' => 'Dernière fois hors-ligne',
|
||||
'last_output' => 'Dernière sortie positive',
|
||||
'last_error' => 'Dernière erreur',
|
||||
'last_error_output' => 'Dernière erreur de sortie',
|
||||
'output' => 'Sortie',
|
||||
'monitoring' => 'Surveillé',
|
||||
'no_monitoring' => 'Non surveillé',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Envoyer un email',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Envoyer un SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'send_pushover' => 'Envoyer des notifications Pushover',
|
||||
'telegram' => 'Telegram',
|
||||
'send_telegram' => 'Envoyer des notifications Telegram',
|
||||
'users' => 'Utilisateurs',
|
||||
'delete_title' => 'Supprimer un serveur',
|
||||
'delete_message' => 'Êtes-vous sûr de vouloir supprimer le serveur \'%1\' ?',
|
||||
'deleted' => 'Serveur supprimé.',
|
||||
'updated' => 'Serveur mis à jour.',
|
||||
'inserted' => 'Serveur ajouté.',
|
||||
'latency' => 'Temps de réponse',
|
||||
'latency_max' => 'Temps de réponse maximum',
|
||||
'latency_min' => 'Temps de réponse minimum',
|
||||
'latency_avg' => 'Temps de réponse moyen',
|
||||
'online' => 'en ligne',
|
||||
'offline' => 'hors ligne',
|
||||
'uptime' => 'Disponibilité',
|
||||
'year' => 'Année',
|
||||
'month' => 'Mois',
|
||||
'week' => 'Semaine',
|
||||
'day' => 'Jour',
|
||||
'hour' => 'Heure',
|
||||
'warning_threshold' => 'Seuil d\'alerte',
|
||||
'warning_threshold_description' => 'Nombre d\'échecs de connexion avant que le serveur soit marqué
|
||||
hors-service.',
|
||||
'chart_last_week' => 'La dernière semaine',
|
||||
'chart_history' => 'Historique',
|
||||
'chart_day_format' => '%d/%m/%Y',
|
||||
'chart_long_date_format' => '%d/%m/%Y %H:%M:%S',
|
||||
'chart_short_date_format' => '%d/%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'Les notifications SMS sont désactivées.',
|
||||
'warning_notifications_disabled_email' => 'Les notifications par email sont désactivées.',
|
||||
'warning_notifications_disabled_pushover' => 'Les notifications Pushover sont désactivées.',
|
||||
'warning_notifications_disabled_telegram' => 'Les notifications Telegram sont désactivées.',
|
||||
'error_server_no_match' => 'Serveur non trouvé.',
|
||||
'error_server_label_bad_length' => 'Le nom doit avoir entre 1 et 255 caractères.',
|
||||
'error_server_ip_bad_length' => 'Domaine/IP doit avoir entre 1 et 255 caractères.',
|
||||
'error_server_ip_bad_service' => 'L\'adresse IP n\'est pas valide.',
|
||||
'error_server_ip_bad_website' => 'L\'URL du site web n\'est pas valide.',
|
||||
'error_server_type_invalid' => 'Le type de service sélectionné n\'est pas valide.',
|
||||
'error_server_warning_threshold_invalid' => 'Le seuil d\'alerte doit être un nombre entier supérieur à 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Général',
|
||||
'language' => 'Langue',
|
||||
'show_update' => 'Vérifier les nouvelles mises à jour chaque semaine',
|
||||
'password_encrypt_key' => 'Clé de chiffrement des mots de passe',
|
||||
'password_encrypt_key_note' => 'Cette clé est utilisée pour chiffrer les mots
|
||||
de passe qui sont enregistrés dans la base de données pour les serveurs qui requierent une authentification. Si la clé
|
||||
est modifiée, les mots de passe enregistrés ne seront plus valide !',
|
||||
'proxy' => 'Activer le proxy',
|
||||
'proxy_url' => 'URL du proxy',
|
||||
'proxy_user' => 'Nom d\'utilisateur du proxy',
|
||||
'proxy_password' => 'Mot de passe du proxy',
|
||||
'email_status' => 'Autoriser l\'envoi de mail',
|
||||
'email_from_email' => 'Adresse de l\'expéditeur',
|
||||
'email_from_name' => 'Nom de l\'expéditeur',
|
||||
'email_smtp' => 'Utiliser un serveur SMTP',
|
||||
'email_smtp_host' => 'Adresse serveur SMTP',
|
||||
'email_smtp_port' => 'Port SMTP',
|
||||
'email_smtp_security' => 'Protocole de sécurité SMTP',
|
||||
'email_smtp_security_none' => 'Aucun',
|
||||
'email_smtp_username' => 'Nom utilisateur SMTP',
|
||||
'email_smtp_password' => 'Mot de passe SMTP',
|
||||
'email_smtp_noauth' => 'Laisser vide si pas d\'authentication',
|
||||
'sms_status' => 'Autoriser l\'envoi de SMS',
|
||||
'sms_gateway' => 'Passerelle à utiliser pour l\'envoi de SMS',
|
||||
'sms_gateway_username' => 'Nom utilisateur de la passerelle',
|
||||
'sms_gateway_password' => 'Mot de passe de la passerelle',
|
||||
'sms_from' => 'SMS de l\'expéditeur',
|
||||
'pushover_status' => 'Autoriser l\'envoi des messages Pushover',
|
||||
'pushover_description' => 'Pushover est un service qui simplifie les notifications en temps réel. Voir <a
|
||||
href="https://pushover.net/" target="_blank">leur site web</a> pour plus
|
||||
d\'informations.',
|
||||
'pushover_clone_app' => 'Cliquez ici pour créer votre application Pushover',
|
||||
'pushover_api_token' => 'Jeton application Pushover',
|
||||
'pushover_api_token_description' => 'Avant de pouvoir utiliser Pushover, vous devez <a href="%1$s"
|
||||
target="_blank" rel="noopener">créer une application</a> sur leur site
|
||||
web et entrer ici le jeton (Token) de l\'application.',
|
||||
'telegram_status' => 'Autorise l\'envoi de message Telegram',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> est une application de
|
||||
messagerie instantanée qui facilite la réception de notification en temps réel.
|
||||
Lisez la <a href="http://docs.phpservermonitor.org/"
|
||||
target="_blank">documentation</a> pour obtenir plus d\'informations sur la
|
||||
configuration de ce service.',
|
||||
'telegram_api_token' => 'Token API Telegram',
|
||||
'telegram_api_token_description' => 'Afin de pouvoir utiliser Telegram, il vous faut obtenir un token api.
|
||||
Consultez la <a href="http://docs.phpservermonitor.org/"
|
||||
target="_blank">documentation</a> pour obtenir de l\'aide.',
|
||||
'alert_type' => 'Choisissez quand vous souhaitez être notifié',
|
||||
'alert_type_description' => '<b>Changement d\'état : </b>Vous recevez une notification chaque fois que
|
||||
le serveur change d\'état. C\'est-à-dire passe de l\'état OK à HORS SERVICE
|
||||
ou de HORS SERVICE à OK.<br><br><b>Hors service : </b>Vous ne recevez une
|
||||
notification que quand le serveur passe de l\'état OK à HORS SERVICE. Par
|
||||
exemple, Votre tâche planifiée s\'exécute toutes les 15 minutes et votre
|
||||
serveur passe à l\'état HORS SERVICE à 1 heure du matin et le reste jusqu\'à
|
||||
6 heures du matin.Vous ne recevez qu\'une seule notification à 1 heure du
|
||||
matin.<br><br><b>Toujours : </b>Vous recevez une notification à chaque
|
||||
exécution de la tâche planifiée si le serveur est à l\'état HORS SERVICE ',
|
||||
'alert_type_status' => 'Changement d\'état',
|
||||
'alert_type_offline' => 'Hors service',
|
||||
'alert_type_always' => 'Toujours',
|
||||
'combine_notifications' => 'Combiner les notifications',
|
||||
'combine_notifications_description' => 'Réduit le nombre de notifications en les combinant toutes en une
|
||||
seule. (Cela ne s\'applique pas aux SMS.)',
|
||||
'alert_proxy' => 'Le serveur proxy n\'est jamais utilisé pour les services, même quand celui-ci est activé.',
|
||||
'alert_proxy_url' => 'Format : hôte:port',
|
||||
'log_status' => 'Etat des événements',
|
||||
'log_status_description' => 'Si l\'option est activée, un événement est enregistré chaque fois qu\'une
|
||||
notification a lieu.',
|
||||
'log_email' => 'Enregistrer tous les emails envoyés',
|
||||
'log_sms' => 'Enregistrer tous les SMS envoyés',
|
||||
'log_pushover' => 'Enregistrer tous les messages Pushover envoyés',
|
||||
'log_telegram' => 'Enregistrer tous les messages Telegram envoyés',
|
||||
'updated' => 'La configuration a été mise à jour.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'tab_telegram' => 'Telegram',
|
||||
'settings_email' => 'Configuration email',
|
||||
'settings_sms' => 'Configuration SMS',
|
||||
'settings_pushover' => 'Configuration Pushover',
|
||||
'settings_telegram' => 'Configuration Telegram',
|
||||
'settings_notification' => 'Configuration des notifications',
|
||||
'settings_log' => 'Configuration des événements',
|
||||
'settings_proxy' => 'Configuration du proxy',
|
||||
'auto_refresh' => 'Auto-rafraîchissement',
|
||||
'auto_refresh_description' => 'Auto-rafraîchissement de la page serveurs.<br><span class="small">Temps en
|
||||
secondes. Si 0, la page n\'est pas rafraîchie.</span>',
|
||||
'test' => 'Tester',
|
||||
'test_email' => 'Un email va vous être envoyé à l\'adresse définie dans votre profil utilisateur.',
|
||||
'test_sms' => 'Un SMS va vous être envoyé au numéro défini dans votre profil utilisateur.',
|
||||
'test_pushover' => 'Une notification Pushover va être envoyée en utilisant la clé spécifiée dans votre
|
||||
profil utilisateur.',
|
||||
'test_telegram' => 'Une notification Telegram sera envoyé à la conversion indiqué sur votre profil (ID de
|
||||
conversation).',
|
||||
'send' => 'Envoyer',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Message de test',
|
||||
'email_sent' => 'Email envoyé',
|
||||
'email_error' => 'Erreur lors de l\'envoi de l\'email',
|
||||
'sms_sent' => 'SMS envoyé',
|
||||
'sms_error' => 'Erreur lors de l\'envoi du SMS. %s',
|
||||
'sms_error_nomobile' => 'Impossible d\'envoyer un SMS de test: aucun numéro de téléphone défini dans votre
|
||||
profil.',
|
||||
'pushover_sent' => 'Notification Pushover envoyée',
|
||||
'pushover_error' => 'Une erreur s\'est produite lors de l\'envoi de la notification Pushover : %s',
|
||||
'pushover_error_noapp' => 'Impossible d\'envoyer une notification de test: Aucun jeton application Pushover
|
||||
n\'a été défini dans la configuration Pushover.',
|
||||
'pushover_error_nokey' => 'Impossible d\'envoyer une notification de test: Aucune clé Pushover n\'a été
|
||||
définie dans votre profil.',
|
||||
'telegram_sent' => 'Notification Telegram envoyée',
|
||||
'telegram_error' => 'Une erreur s\'est produite lors de l\'envoi de la notification : %s',
|
||||
'telegram_error_notoken' => 'Impossible d\'envoyer la notification de test : aucun token APII token
|
||||
trouvé dans la configuration.',
|
||||
'telegram_error_noid' => 'Impossible d\'envoyer la notification de test : aucun ID de conversation
|
||||
trouvé dans votre profil utilisateur.',
|
||||
'log_retention_period' => 'Durée de conservation',
|
||||
'log_retention_period_description' => 'Nombre de jours de conservation des événements envoyés et des temps
|
||||
de réponse des serveurs. Entrez 0 pour les conserver indéfiniment.',
|
||||
'log_retention_days' => 'jours',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Le Serveur \'%LABEL%\' est HORS SERVICE: IP=%IP%, Port=%PORT%. Erreur=%ERROR%',
|
||||
'off_email_subject' => 'IMPORTANT: Le Serveur \'%LABEL%\' est HORS SERVICE',
|
||||
'off_email_body' => 'Impossible de se connecter au serveur suivant:<br><br>Serveur : %LABEL%<br>IP :
|
||||
%IP%<br>Port : %PORT%<br>Erreur : %ERROR%<br>Date: %DATE%',
|
||||
'off_pushover_title' => 'Le Serveur \'%LABEL%\' est HORS SERVICE',
|
||||
'off_pushover_message' => 'Impossible de se connecter au serveur suivant :<br><br>Serveur :
|
||||
%LABEL%<br>IP : %IP%<br>Port : %PORT%<br>Erreur :
|
||||
%ERROR%<br>Date : %DATE%',
|
||||
'off_telegram_message' => 'Impossible de se connecter au serveur suivant :<br><br>Serveur :
|
||||
%LABEL%<br>IP : %IP%<br>Port : %PORT%<br>Erreur :
|
||||
%ERROR%<br>Date : %DATE%',
|
||||
'on_sms' => 'Le Serveur \'%LABEL%\' est OK: IP=%IP%, Port=%PORT%, il était hors-ligne pendant
|
||||
%LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'IMPORTANT: Le Serveur \'%LABEL%\' est OK',
|
||||
'on_email_body' => 'Le Serveur \'%LABEL%\' est de nouveau OK, il était hors-ligne pendant
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Serveur: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Date:
|
||||
%DATE%',
|
||||
'on_pushover_title' => 'Le Serveur \'%LABEL%\' est OK',
|
||||
'on_pushover_message' => 'Le Serveur \'%LABEL%\' est de nouveau OK, il était hors-ligne pendant
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Serveur: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Date: %DATE%',
|
||||
'on_telegram_message' => 'Server \'%LABEL%\' est de nouveau OK, il était hors-ligne pendant:
|
||||
%LAST_OFFLINE_DURATION%<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Date:
|
||||
%DATE%',
|
||||
'combi_off_email_message' => '<ul><li>Serveur : %LABEL%</li><li>IP : %IP%</li><li>Port :
|
||||
%PORT%</li><li>Erreur : %ERROR%</li><li>Date : %DATE%</li></ul>',
|
||||
'combi_off_pushover_message' => '<ul><li>Serveur : %LABEL%</li><li>IP : %IP%</li><li>Port :
|
||||
%PORT%</li><li>Erreur : %ERROR%</li><li>Date : %DATE%</li></ul>',
|
||||
'combi_off_telegram_message' => '- Serveur : %LABEL%<br>- IP : %IP%<br>- Port : %PORT%<br>-
|
||||
Erreur : %ERROR%<br>- Date : %DATE%<br><br>',
|
||||
'combi_on_email_message' => '<ul><li>Serveur : %LABEL%</li><li>IP : %IP%</li><li>Port :
|
||||
%PORT%</li><li>Durée : %LAST_OFFLINE_DURATION%</li><li>Date :
|
||||
%DATE%</li></ul>',
|
||||
'combi_on_pushover_message' => '<ul><li>Serveur : %LABEL%</li><li>IP : %IP%</li><li>Port :
|
||||
%PORT%</li><li>Durée : %LAST_OFFLINE_DURATION%</li><li>Date :
|
||||
%DATE%</li></ul>',
|
||||
'combi_on_telegram_message' => '- Serveur : %LABEL%<br>- IP: %IP%<br>- Port : %PORT%<br>-
|
||||
Durée : %LAST_OFFLINE_DURATION%<br>- Date : %DATE%<br><br>',
|
||||
'combi_email_subject' => 'IMPORTANT : \'%UP%\' serveur(s) de nouveau en ligne, \'%DOWN%\'
|
||||
hors-ligne',
|
||||
'combi_pushover_subject' => '\'%UP%\' serveur(s) de nouveaux en ligne, \'%DOWN%\' serveur(s) hors-ligne',
|
||||
'combi_email_message' => '<b>Le(s) serveur(s) suivant(s) hors-ligne :</b><br>%DOWN_SERVERS%<br><b>Le(s)
|
||||
serveur(s) suivant(s) en ligne :</b><br>%UP_SERVERS%',
|
||||
'combi_pushover_message' => '<b>Le(s) serveur(s) suivant(s) hors-ligne :</b><br>%DOWN_SERVERS%<br><b>Le(s)
|
||||
serveur(s) suivant(s) en ligne :</b><br>%UP_SERVERS%',
|
||||
'combi_telegram_message' => '<b>Le(s) serveur(s) suivant(s) hors-ligne :</b><br>%DOWN_SERVERS%<br><b>Le(s)
|
||||
serveur(s) suivant(s) en ligne :</b><br>%UP_SERVERS%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Bonjour %user_name%',
|
||||
'title_sign_in' => 'Connectez vous SVP',
|
||||
'title_forgot' => 'Mot de passe oublié ?',
|
||||
'title_reset' => 'Réinitialisation du mot de passe',
|
||||
'submit' => 'Envoyer',
|
||||
'remember_me' => 'Se souvenir de moi',
|
||||
'login' => 'Connexion',
|
||||
'logout' => 'Déconnexion',
|
||||
'username' => 'Nom',
|
||||
'password' => 'Mot de passe',
|
||||
'password_repeat' => 'Répéter le mot de passe',
|
||||
'password_forgot' => 'Mot de passe oublié ?',
|
||||
'password_reset' => 'Réinitialiser le mot de passe',
|
||||
'password_reset_email_subject' => 'Réinitialisation du mot de passe pour PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Cliquez sur le lien ci-dessous pour réinitialiser votre mot de passe.
|
||||
Veuillez noter qu\'il expire dans une heure.<br><br>%link%',
|
||||
'error_user_incorrect' => 'Nom d\'utilisateur invalide.',
|
||||
'error_login_incorrect' => 'Informations incorrectes.',
|
||||
'error_login_passwords_nomatch' => 'Mot de passe invalide.',
|
||||
'error_reset_invalid_link' => 'Le lien d\'initialisation du mot de passe n\'est pas valide.',
|
||||
'success_password_forgot' => 'Un email vous a été envoyé pour réinitialiser votre mot de passe.',
|
||||
'success_password_reset' => 'Votre mot de passe a été réinitialisé.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Non autorisée',
|
||||
'401_unauthorized_description' => 'Vous n\'avez pas les privilèges nécessaires pour voir cette page.',
|
||||
),
|
||||
);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -19,279 +20,303 @@
|
|||
*
|
||||
* @package phpservermon
|
||||
* @author Marco Gargani <http://www.marcogargani.it>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Italiano - Italian',
|
||||
'locale' => array('it_IT.UTF-8', 'it_IT', 'italian', 'ita'),
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Install',
|
||||
'action' => 'Azione',
|
||||
'save' => 'Salva',
|
||||
'edit' => 'Modifica',
|
||||
'delete' => 'Elimina',
|
||||
'date' => 'Data',
|
||||
'message' => 'Messaggio',
|
||||
'yes' => 'Sì',
|
||||
'no' => 'No',
|
||||
'insert' => 'Inserisci',
|
||||
'add_new' => 'Aggiungi Nuovo?',
|
||||
'update_available' => 'Un nuovo aggiornamento ({version}) è disponibile su <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Back to top',
|
||||
'go_back' => 'Go back',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Cancel',
|
||||
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Yesterday at %k:%M',
|
||||
'other_day_format' => '%A at %k:%M',
|
||||
'never' => 'Never',
|
||||
'hours_ago' => '%d hours ago',
|
||||
'an_hour_ago' => 'about an hour ago',
|
||||
'minutes_ago' => '%d minutes ago',
|
||||
'a_minute_ago' => 'about a minute ago',
|
||||
'seconds_ago' => '%d seconds ago',
|
||||
'a_second_ago' => 'a second ago',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Configurazione',
|
||||
'server' => 'Servers',
|
||||
'server_log' => 'Log',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => 'Aggiorna',
|
||||
'user' => 'Utenti',
|
||||
'help' => 'Aiuto',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Utente',
|
||||
'name' => 'Nome',
|
||||
'user_name' => 'Username',
|
||||
'password' => 'Password',
|
||||
'password_repeat' => 'Password repeat',
|
||||
'password_leave_blank' => 'Leave blank to keep unchanged',
|
||||
'level' => 'Level',
|
||||
'level_10' => 'Administrator',
|
||||
'level_20' => 'User',
|
||||
'level_description' => '<b>Administrators</b> have full access: they can manage servers, users and edit the global configuration.<br/><b>Users</b> can only view and run the updater for the servers that have been assigned to them.',
|
||||
'mobile' => 'Cellulare',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||
'delete_title' => 'Delete User',
|
||||
'delete_message' => 'Are you sure you want to delete user \'%1\'?',
|
||||
'deleted' => 'User deleted.',
|
||||
'updated' => 'Utente aggiornato.',
|
||||
'inserted' => 'Utente aggiunto.',
|
||||
'profile' => 'Profile',
|
||||
'profile_updated' => 'Your profile has been updated.',
|
||||
'error_user_name_bad_length' => 'Usernames must be between 2 and 64 characters.',
|
||||
'error_user_name_invalid' => 'The username may only contain alphabetic characters (a-z, A-Z), digits (0-9) and underscores (_).',
|
||||
'error_user_name_exists' => 'The given username already exists in the database.',
|
||||
'error_user_email_bad_length' => 'Email addresses must be between 5 and 255 characters.',
|
||||
'error_user_email_invalid' => 'The email address is invalid.',
|
||||
'error_user_level_invalid' => 'The given user level is invalid.',
|
||||
'error_user_no_match' => 'The user could not be found in the database.',
|
||||
'error_user_password_invalid' => 'The entered password is invalid.',
|
||||
'error_user_password_no_match' => 'The entered passwords do not match.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Righe log',
|
||||
'type' => 'Tipo',
|
||||
'status' => 'Stato',
|
||||
'email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'No logs',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Server',
|
||||
'status' => 'Status',
|
||||
'label' => 'Nome',
|
||||
'domain' => 'Dominio/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||
'port' => 'Porta',
|
||||
'type' => 'Tipo',
|
||||
'type_website' => 'Website',
|
||||
'type_service' => 'Service',
|
||||
'pattern' => 'Search string/pattern',
|
||||
'pattern_description' => 'If this pattern is not found on the website, the server will be marked offline. Regular expressions are allowed.',
|
||||
'last_check' => 'Ultimo Controllo',
|
||||
'last_online' => 'Ultima volta Online',
|
||||
'monitoring' => 'Sotto Controllo',
|
||||
'no_monitoring' => 'No monitoring',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Invia Email',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Invia SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Users',
|
||||
'delete_title' => 'Delete Server',
|
||||
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
|
||||
'deleted' => 'Server deleted.',
|
||||
'updated' => 'Server aggiornato.',
|
||||
'inserted' => 'Server aggiunto.',
|
||||
'latency' => 'Tempo di risposta',
|
||||
'latency_max' => 'Tempo di risposta (maximum)',
|
||||
'latency_min' => 'Tempo di risposta (minimum)',
|
||||
'latency_avg' => 'Tempo di risposta (average)',
|
||||
'uptime' => 'Uptime',
|
||||
'year' => 'Year',
|
||||
'month' => 'Month',
|
||||
'week' => 'Week',
|
||||
'day' => 'Day',
|
||||
'hour' => 'Hour',
|
||||
'warning_threshold' => 'Warning threshold',
|
||||
'warning_threshold_description' => 'Number of failed checks required before it is marked offline.',
|
||||
'chart_last_week' => 'Last week',
|
||||
'chart_history' => 'History',
|
||||
// Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||
'error_server_no_match' => 'Server not found.',
|
||||
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_service' => 'The IP address is not valid.',
|
||||
'error_server_ip_bad_website' => 'The website URL is not valid.',
|
||||
'error_server_type_invalid' => 'The selected server type is invalid.',
|
||||
'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Generale',
|
||||
'language' => 'Linguaggio',
|
||||
'show_update' => 'Controllare settimanalmente per nuovi aggiornamenti?',
|
||||
'email_status' => 'Permetti invio email?',
|
||||
'email_from_email' => 'Indirizzo Email mittente',
|
||||
'email_from_name' => 'Nome Email mittente',
|
||||
'email_smtp' => 'Enable SMTP',
|
||||
'email_smtp_host' => 'SMTP host',
|
||||
'email_smtp_port' => 'SMTP port',
|
||||
'email_smtp_username' => 'SMTP username',
|
||||
'email_smtp_password' => 'SMTP password',
|
||||
'email_smtp_noauth' => 'Leave blank for no authentication',
|
||||
'sms_status' => 'Permetti invio SMS?',
|
||||
'sms_gateway' => 'Gateway da usare per inviare SMS',
|
||||
'sms_gateway_mosms' => 'Mosms',
|
||||
'sms_gateway_mollie' => 'Mollie',
|
||||
'sms_gateway_spryng' => 'Spryng',
|
||||
'sms_gateway_inetworx' => 'Inetworx',
|
||||
'sms_gateway_clickatell' => 'Clickatell',
|
||||
'sms_gateway_textmarketer' => 'Textmarketer',
|
||||
'sms_gateway_smsglobal' => 'SMSGlobal',
|
||||
'sms_gateway_smsit' => 'Smsit',
|
||||
'sms_gateway_username' => 'Nome Utente Gateway',
|
||||
'sms_gateway_password' => 'Password Gateway',
|
||||
'sms_from' => 'Numero di telefono del mittente',
|
||||
'pushover_status' => 'Allow sending Pushover messages',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Before you can use Pushover, you need to <a href="%1$s" target="_blank">register an App</a> at their website and enter the App API Token here.',
|
||||
'alert_type' => 'Seleziona quando vuoi essere notificato',
|
||||
'alert_type_description' => '<b>Cambio di Stato:</b> '.
|
||||
'Riceverai una notifica solo quando un server cambierà stato. Quindi da online -> offline oppure da offline -> online.<br/>'.
|
||||
'<br /><b>Offline:</b> '.
|
||||
'Riceverai una notifica solo quando un server andrà offline *SOLO LA PRIMA VOLTA*. Per esempio, '.
|
||||
'Se il tuo cronjob è impostato per controllare ogni 15 min e il tuo server andrà offline dalle 2AM alle 6AM. '.
|
||||
'Riceverai una sola notifica alle 2AM e nient\'altro.<br/>'.
|
||||
'<br><b>Sempre:</b> '.
|
||||
'Riceverai una notifica ogni volta che lo script troverà un server down anche se è stato offline per ore.',
|
||||
'alert_type_status' => 'Cambio di Stato',
|
||||
'alert_type_offline' => 'Offline',
|
||||
'alert_type_always' => 'Sempre',
|
||||
'log_status' => 'Stato Log',
|
||||
'log_status_description' => 'Se lo Stato Log è impostato su VERO, il monitor registrerà nel log gli eventi appena le notifiche verranno inviate.',
|
||||
'log_email' => 'Registra email inviate dallo script.',
|
||||
'log_sms' => 'Registra SMS inviati dallo script.',
|
||||
'log_pushover' => 'Log pushover messages sent by the script',
|
||||
'updated' => 'La configurazione è stato aggiornata.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Impostazioni Email',
|
||||
'settings_sms' => 'Impostazioni SMS',
|
||||
'settings_pushover' => 'Pushover settings',
|
||||
'settings_notification' => 'Impostazioni Notifiche',
|
||||
'settings_log' => 'Impostazioni Log',
|
||||
'auto_refresh' => 'Auto-Aggiorna pagina servers',
|
||||
'auto_refresh_servers' =>
|
||||
'Auto-Aggiorna pagina servers.<br/>'.
|
||||
'<span class="small">'.
|
||||
'Tempo in secondi, se impostato a 0 la pagina non si aggiornerà.'.
|
||||
'</span>',
|
||||
'seconds' => 'seconds',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'An email will be sent to the address specified in your user profile.',
|
||||
'test_sms' => 'An SMS will be sent to the phone number specified in your user profile.',
|
||||
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||
'send' => 'Send',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Test message',
|
||||
'email_sent' => 'Email sent',
|
||||
'email_error' => 'Error in email sending',
|
||||
'sms_sent' => 'Sms sent',
|
||||
'sms_error' => 'Error in sms sending',
|
||||
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||
'pushover_sent' => 'Pushover notification sent',
|
||||
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||
'log_retention_period' => 'Log retention period',
|
||||
'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
|
||||
'log_retention_days' => 'days',
|
||||
),
|
||||
// for newlines in the email messages use <br/>
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Server \'%LABEL%\' è DOWN: ip=%IP%, porta=%PORT%. Errore=%ERROR%',
|
||||
'off_email_subject' => 'IMPORTANTE: Server \'%LABEL%\' è DOWN',
|
||||
'off_email_body' => "Impossibile connettersi al seguente server:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Porta: %PORT%<br/>Errore: %ERROR%<br/>Data: %DATE%",
|
||||
'off_pushover_title' => 'Server \'%LABEL%\' è DOWN',
|
||||
'off_pushover_message' => "Impossibile connettersi al seguente server:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Porta: %PORT%<br/>Errore: %ERROR%<br/>Data: %DATE%",
|
||||
'on_sms' => 'Server \'%LABEL%\' è ATTIVO: ip=%IP%, porta=%PORT%',
|
||||
'on_email_subject' => 'IMPORTANTE: Server \'%LABEL%\' è ATTIVO',
|
||||
'on_email_body' => "Server '%LABEL%' è di nuovo attivo:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Porta: %PORT%<br/>Data: %DATE%",
|
||||
'on_pushover_title' => 'Server \'%LABEL%\' è ATTIVO',
|
||||
'on_pushover_message' => "Server '%LABEL%' è di nuovo attivo:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Porta: %PORT%<br/>Data: %DATE%",
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Welcome, %user_name%',
|
||||
'title_sign_in' => 'Please sign in',
|
||||
'title_forgot' => 'Forgot your password?',
|
||||
'title_reset' => 'Reset your password',
|
||||
'submit' => 'Submit',
|
||||
'remember_me' => 'Remember me',
|
||||
'login' => 'Login',
|
||||
'logout' => 'Logout',
|
||||
'username' => 'Username',
|
||||
'password' => 'Password',
|
||||
'password_repeat' => 'Repeat password',
|
||||
'password_forgot' => 'Forgot password?',
|
||||
'password_reset' => 'Reset password',
|
||||
'password_reset_email_subject' => 'Reset your password for PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Please use the following link to reset your password. Please note it expires in 1 hour.<br/><br/>%link%',
|
||||
'error_user_incorrect' => 'The provided username could not be found.',
|
||||
'error_login_incorrect' => 'The information is incorrect.',
|
||||
'error_login_passwords_nomatch' => 'The provided passwords do not match.',
|
||||
'error_reset_invalid_link' => 'The reset link you provided is invalid.',
|
||||
'success_password_forgot' => 'An email has been sent to you with information how to reset your password.',
|
||||
'success_password_reset' => 'Your password has been reset successfully. Please login.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Unauthorized',
|
||||
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||
),
|
||||
'name' => 'Italiano - Italian',
|
||||
'locale' => array(
|
||||
'0' => 'it_IT.UTF-8',
|
||||
'1' => 'it_IT',
|
||||
'2' => 'italian',
|
||||
'3' => 'ita',
|
||||
),
|
||||
'locale_tag' => 'it',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Installa',
|
||||
'action' => 'Azione',
|
||||
'save' => 'Salva',
|
||||
'edit' => 'Modifica',
|
||||
'delete' => 'Elimina',
|
||||
'date' => 'Data',
|
||||
'message' => 'Messaggio',
|
||||
'yes' => 'Sì',
|
||||
'no' => 'No',
|
||||
'insert' => 'Inserisci',
|
||||
'add_new' => 'Aggiungi Nuovo',
|
||||
'update_available' => 'Una nuova versione ({version}) è disponibile su <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Torna su',
|
||||
'go_back' => 'Indietro',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Annulla',
|
||||
'short_day_format' => '%e %B',
|
||||
'long_day_format' => '%e %B %Y',
|
||||
'yesterday_format' => 'Ieri alle %H:%M',
|
||||
'other_day_format' => '%A alle %H:%M',
|
||||
'never' => 'Mai',
|
||||
'hours_ago' => '%d ore fa',
|
||||
'an_hour_ago' => 'circa un ora fa',
|
||||
'minutes_ago' => '%d minuti fa',
|
||||
'a_minute_ago' => 'circa un minuto fa',
|
||||
'seconds_ago' => '%d secondi fa',
|
||||
'a_second_ago' => 'un secondo fa',
|
||||
'seconds' => 'secondi',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Configurazione',
|
||||
'server' => 'Servers',
|
||||
'server_log' => 'Log',
|
||||
'server_status' => 'Stato',
|
||||
'server_update' => 'Aggiorna',
|
||||
'user' => 'Utenti',
|
||||
'help' => 'Aiuto',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Utente',
|
||||
'name' => 'Nome',
|
||||
'user_name' => 'Nome utente',
|
||||
'password' => 'Password',
|
||||
'password_repeat' => 'Ripeti password',
|
||||
'password_leave_blank' => 'Lascia vuoto per non modificare',
|
||||
'level' => 'Livello',
|
||||
'level_10' => 'Amministratore',
|
||||
'level_20' => 'Utente',
|
||||
'level_description' => 'Gli <b>Amministratori</b> hanno pieno accesso: possono gestire server, utenti e
|
||||
modificare la configurazione globale.<br>Gli <b>Utenti</b> possono solo visualizzare
|
||||
ed eseguire l\'aggiornamento per i server a cui sono assegnati.',
|
||||
'mobile' => 'Cellulare',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover è un servizio che rende semplice ottenere notifiche in tempo reale. Vedi
|
||||
<a href="https://pushover.net/">il loro sito web</a> per maggiori informazioni.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Dispositivo Pushover',
|
||||
'pushover_device_description' => 'Nome del dispositivo a cui inviare il messaggio. Lascia vuoto per inviarlo a
|
||||
tutti i dispositivi.',
|
||||
'delete_title' => 'Elimina Utente',
|
||||
'delete_message' => 'Sei sicuro di voler eliminare l\'utente \'%1\'?',
|
||||
'deleted' => 'Utente eliminato.',
|
||||
'updated' => 'Utente aggiornato.',
|
||||
'inserted' => 'Utente aggiunto.',
|
||||
'profile' => 'Profilo',
|
||||
'profile_updated' => 'Il tuo profilo è stato aggiornato.',
|
||||
'error_user_name_bad_length' => 'Il nome utente deve essere composto da almeno 2 caratteri (massimo 64).',
|
||||
'error_user_name_invalid' => 'Lo username può contenere solo caratteri alfabetici (a-z, A-Z), numeri (0-9),
|
||||
il punto (.) ed la sottolineatura (_).',
|
||||
'error_user_name_exists' => 'Nome utente già in uso.',
|
||||
'error_user_email_bad_length' => 'L\'indirizzo Email deve essere composto da 5 a 255 caratteri.',
|
||||
'error_user_email_invalid' => 'Indirizzo Email non valido.',
|
||||
'error_user_level_invalid' => 'Livello utente non valido.',
|
||||
'error_user_no_match' => 'L\'utente non è stato trovato nel database.',
|
||||
'error_user_password_invalid' => 'La password inserita non è valida.',
|
||||
'error_user_password_no_match' => 'Le password inserite non corrispondono.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Righe log',
|
||||
'type' => 'Tipo',
|
||||
'status' => 'Stato',
|
||||
'email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'Nessun log',
|
||||
'clear' => 'Pulisci il registro',
|
||||
'delete_title' => 'Elimina log',
|
||||
'delete_message' => 'Sei sicuro di voler eliminare <b>tutti</b> i registri?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Server',
|
||||
'status' => 'Stato',
|
||||
'label' => 'Nome',
|
||||
'domain' => 'Dominio/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Numero di secondi da attendere per la risposta del server.',
|
||||
'port' => 'Porta',
|
||||
'type' => 'Tipo',
|
||||
'type_website' => 'Sito web',
|
||||
'type_service' => 'Servizio',
|
||||
'pattern' => 'Cerca stringa/pattern',
|
||||
'pattern_description' => 'Se questo pattern non è trovato nel sito web, il server verrà contrassegnato come
|
||||
fuori linea. Le espressioni regolari sono consentite.',
|
||||
'last_check' => 'Ultimo Controllo',
|
||||
'last_online' => 'Ultima volta Online',
|
||||
'last_offline' => 'Ultima volta offline',
|
||||
'monitoring' => 'Monitoraggio',
|
||||
'no_monitoring' => 'Non monitorato',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Invia Email',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Invia SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Utenti',
|
||||
'delete_title' => 'Elimina Server',
|
||||
'delete_message' => 'Sei sicuro di voler eliminare il server \'%1\'?',
|
||||
'deleted' => 'Server eliminato.',
|
||||
'updated' => 'Server aggiornato.',
|
||||
'inserted' => 'Server aggiunto.',
|
||||
'latency' => 'Tempo di risposta',
|
||||
'latency_max' => 'Tempo di risposta (massimo)',
|
||||
'latency_min' => 'Tempo di risposta (minimo)',
|
||||
'latency_avg' => 'Tempo di risposta (medio)',
|
||||
'uptime' => 'Uptime',
|
||||
'year' => 'Anno',
|
||||
'month' => 'Mese',
|
||||
'week' => 'Settimana',
|
||||
'day' => 'Giorno',
|
||||
'hour' => 'Ora',
|
||||
'warning_threshold' => 'Soglia di allarme',
|
||||
'warning_threshold_description' => 'Numero richiesto di verifiche fallite prima di ritenerlo fuori linea.',
|
||||
'chart_last_week' => 'Ultima settimana',
|
||||
'chart_history' => 'Cronologia',
|
||||
'chart_day_format' => '%d-%m-%Y',
|
||||
'chart_long_date_format' => '%d-%m-%Y %H:%M:%S',
|
||||
'chart_short_date_format' => '%d/%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'Le notifiche SMS sono disabilitate.',
|
||||
'warning_notifications_disabled_email' => 'Le notifiche Email sono disabilitate.',
|
||||
'warning_notifications_disabled_pushover' => 'Le notifiche Pushover sono disabilitate.',
|
||||
'error_server_no_match' => 'Server non trovato.',
|
||||
'error_server_label_bad_length' => 'L\'etichetta deve contenere da 1 a 255 caratteri.',
|
||||
'error_server_ip_bad_length' => 'Il dominio / IP deve contenere da 1 a 255 caratteri.',
|
||||
'error_server_ip_bad_service' => 'L\'indirizzo IP non è valido.',
|
||||
'error_server_ip_bad_website' => 'L\'indirizzo URL del sito web non è valido.',
|
||||
'error_server_type_invalid' => 'Tipologia di server selezionata non valida.',
|
||||
'error_server_warning_threshold_invalid' => 'La soglia d\'allarme deve essere un numero intero valido,
|
||||
superiore a zero.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Generale',
|
||||
'language' => 'Linguaggio',
|
||||
'show_update' => 'Controllare per nuovi aggiornamenti?',
|
||||
'email_status' => 'Permetti invio email',
|
||||
'email_from_email' => 'Indirizzo Email mittente',
|
||||
'email_from_name' => 'Nome Email mittente',
|
||||
'email_smtp' => 'Abilita SMTP',
|
||||
'email_smtp_host' => 'Server SMTP',
|
||||
'email_smtp_port' => 'Porta SMTP',
|
||||
'email_smtp_security' => 'Sicurezza SMTP',
|
||||
'email_smtp_security_none' => 'Nessuna',
|
||||
'email_smtp_username' => 'Nome utente SMTP',
|
||||
'email_smtp_password' => 'Password SMTP',
|
||||
'email_smtp_noauth' => 'Lasciare vuoto per nessuna autentificazione',
|
||||
'sms_status' => 'Permetti invio SMS',
|
||||
'sms_gateway' => 'Gateway da usare per inviare SMS',
|
||||
'sms_gateway_username' => 'Nome Utente Gateway',
|
||||
'sms_gateway_password' => 'Password Gateway',
|
||||
'sms_from' => 'Numero di telefono del mittente',
|
||||
'pushover_status' => 'Permetti invio messaggi da Pushover',
|
||||
'pushover_description' => 'Pushover è un servizio che rende semplice ottenere notifiche in tempo reale. Vedi
|
||||
<a href="https://pushover.net/">il loro sito web</a> per maggiori informazioni.',
|
||||
'pushover_clone_app' => 'Clicca qui per creare la tua Pushover app',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Prima di poter usare Pushover, devi <a href="%1$s" target="_blank"
|
||||
rel="noopener">registrare un\'App</a> nel loro sito web ed inserire la
|
||||
\'App API Token\' qui.',
|
||||
'alert_type' => 'Seleziona quando vuoi essere notificato',
|
||||
'alert_type_description' => '<b>Cambio di Stato:</b> Riceverai una notifica solo quando un server cambierà
|
||||
stato. Quindi da online -> offline oppure da offline -> online.<br><br /><b>Fuori
|
||||
linea:</b> Riceverai una notifica solo quando un server andrà offline *SOLO LA
|
||||
PRIMA VOLTA*. Per esempio, Se il tuo cronjob è impostato per controllare ogni 15
|
||||
min e il tuo server andrà offline dalle 2AM alle 6AM. Riceverai una sola
|
||||
notifica alle 2AM e nient\'altro.<br><br><b>Sempre:</b> Riceverai una notifica
|
||||
ogni volta che lo script troverà un server down anche se è stato offline per
|
||||
ore.',
|
||||
'alert_type_status' => 'Cambio di Stato',
|
||||
'alert_type_offline' => 'Fuori linea',
|
||||
'alert_type_always' => 'Sempre',
|
||||
'log_status' => 'Stato Log',
|
||||
'log_status_description' => 'Se lo Stato Log è impostato su VERO, il monitor registrerà nel log gli eventi
|
||||
appena le notifiche verranno inviate.',
|
||||
'log_email' => 'Registra email inviate dal sistema.',
|
||||
'log_sms' => 'Registra SMS inviati dal sistema.',
|
||||
'log_pushover' => 'Registra messaggi Pushover inviati dal sistema',
|
||||
'updated' => 'La configurazione è stato aggiornata.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Impostazioni Email',
|
||||
'settings_sms' => 'Impostazioni SMS',
|
||||
'settings_pushover' => 'Impostazioni Pushover',
|
||||
'settings_notification' => 'Impostazioni Notifiche',
|
||||
'settings_log' => 'Impostazioni Log',
|
||||
'auto_refresh' => 'Auto-Aggiornamento',
|
||||
'auto_refresh_description' => 'Auto-Aggiornamento pagina servers.<br><span class="small">Tempo in secondi, se
|
||||
impostato a 0 la pagina non si aggiornerà.</span>',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'Un Email verrà inviata all\'indirizzo specificato nel tuo profilo.',
|
||||
'test_sms' => 'Un SMS verrà inviato al numero di telefono specificato nel tuo profilo.',
|
||||
'test_pushover' => 'Una notifica Pushover verrà inviata al dispositivo specificato nel tuo profilo.',
|
||||
'send' => 'Invia',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Messaggio di test',
|
||||
'email_sent' => 'Email inviata',
|
||||
'email_error' => 'Errore in invio Email',
|
||||
'sms_sent' => 'SMS inviato',
|
||||
'sms_error' => 'Errore in invio SMS. %s',
|
||||
'sms_error_nomobile' => 'Impossibile inviare SMS: nessun numero di telefono valido inserito nel tuo profilo.',
|
||||
'pushover_sent' => 'Notifica Pushover inviata',
|
||||
'pushover_error' => 'Riscontrato un errore durante l\'invio della notifica Pushover: %s',
|
||||
'pushover_error_noapp' => 'Impossibile inviare la notifica: nessun \'Pushover App API Token\' inserito nella
|
||||
configurazione globale.',
|
||||
'pushover_error_nokey' => 'Impossibile inviare la notifica: nessuna \'Pushover Key\' inserita nel tuo profilo.',
|
||||
'log_retention_period' => 'Periodo conservazione Log',
|
||||
'log_retention_period_description' => 'Numero di giorni per la conservazione dei log delle notifiche e
|
||||
risultati monitoraggio. Inserire 0 (zero) per disabilitare la
|
||||
cancellazione dei log.',
|
||||
'log_retention_days' => 'giorni',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Server \'%LABEL%\' INATTIVO: ip=%IP%, porta=%PORT%. Errore=%ERROR%',
|
||||
'off_email_subject' => 'IMPORTANTE: Il Server \'%LABEL%\' è INATTIVO',
|
||||
'off_email_body' => 'Impossibile connettersi al seguente server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Porta:
|
||||
%PORT%<br>Errore: %ERROR%<br>Data: %DATE%',
|
||||
'off_pushover_title' => 'Server \'%LABEL%\' INATTIVO',
|
||||
'off_pushover_message' => 'Impossibile connettersi al seguente server:<br><br>Server: %LABEL%<br>IP:
|
||||
%IP%<br>Porta: %PORT%<br>Errore: %ERROR%<br>Data: %DATE%',
|
||||
'on_sms' => 'Server \'%LABEL%\' ATTIVO: ip=%IP%, porta=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'IMPORTANTE: Server \'%LABEL%\' è ATTIVO',
|
||||
'on_email_body' => 'Server \'%LABEL%\' è di nuovo attivo, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Porta: %PORT%<br>Data:
|
||||
%DATE%',
|
||||
'on_pushover_title' => 'Server \'%LABEL%\' ATTIVO',
|
||||
'on_pushover_message' => 'Server \'%LABEL%\' è di nuovo attivo, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Porta:
|
||||
%PORT%<br>Data: %DATE%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Benvenuto, %user_name%',
|
||||
'title_sign_in' => 'Registrati',
|
||||
'title_forgot' => 'Password dimenticata?',
|
||||
'title_reset' => 'Reimposta la tua password',
|
||||
'submit' => 'Invia',
|
||||
'remember_me' => 'Ricordami',
|
||||
'login' => 'Accedi',
|
||||
'logout' => 'Uscita',
|
||||
'username' => 'Nome utente',
|
||||
'password' => 'Password',
|
||||
'password_repeat' => 'Ripeti password',
|
||||
'password_forgot' => 'Password dimenticata?',
|
||||
'password_reset' => 'Reimposta password',
|
||||
'password_reset_email_subject' => 'Reimpossta la tua password per PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Usa il seguente link per reimpostare la tua password. Ricordati che scade tra
|
||||
un ora.<br><br>%link%',
|
||||
'error_user_incorrect' => 'Il nome utente inserito non è staot trovato.',
|
||||
'error_login_incorrect' => 'Le informazioni sono errate.',
|
||||
'error_login_passwords_nomatch' => 'Le password inserite non sono valide.',
|
||||
'error_reset_invalid_link' => 'Il link di reimpostazione password non è valido.',
|
||||
'success_password_forgot' => 'Ti è stata inviata un\'Email con le istruzioni da seguire per reimpostare la
|
||||
tua password.',
|
||||
'success_password_reset' => 'La tua password è stata correttamente reimpostata. Ora puoi effettuare
|
||||
l\'accesso.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Non autorizzato',
|
||||
'401_unauthorized_description' => 'Non hai i permessi necessari per visualizzare questa pagina.',
|
||||
),
|
||||
);
|
||||
|
|
|
@ -0,0 +1,458 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: v3.2.0
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => '日本語 - Japanese',
|
||||
'locale' => array(
|
||||
'0' => 'ja_JP.UTF-8',
|
||||
'1' => 'ja_JP',
|
||||
'2' => 'Japan',
|
||||
'3' => 'Japanese',
|
||||
),
|
||||
'locale_tag' => 'ja',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'サーバーモニター',
|
||||
'install' => 'インストール',
|
||||
'action' => 'アクション',
|
||||
'save' => 'セーブ',
|
||||
'edit' => '編集',
|
||||
'delete' => '削除',
|
||||
'date' => '日時',
|
||||
'message' => 'メッセージ',
|
||||
'yes' => 'はい',
|
||||
'no' => 'いいえ',
|
||||
'insert' => '挿入',
|
||||
'add_new' => '新規に追加',
|
||||
'update_available' => '新しいバージョン({version})
|
||||
がリリースされています。ここから入手可能です: <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'トップに戻る',
|
||||
'go_back' => '戻る',
|
||||
'ok' => 'OK',
|
||||
'bad' => 'よくない',
|
||||
'cancel' => 'キャンセル',
|
||||
'none' => 'なし',
|
||||
'activate' => '有効化',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => '昨日の %k:%M',
|
||||
'other_day_format' => '%A の %k:%M',
|
||||
'never' => 'なし',
|
||||
'hours_ago' => '%d 時間前',
|
||||
'an_hour_ago' => '1時間くらい前',
|
||||
'minutes_ago' => '%d 分前',
|
||||
'a_minute_ago' => '1分くらい前',
|
||||
'seconds_ago' => '%d 秒前',
|
||||
'a_second_ago' => '<1秒',
|
||||
'year' => '年',
|
||||
'years' => '年',
|
||||
'month' => '月',
|
||||
'months' => '月',
|
||||
'day' => '日',
|
||||
'days' => '日',
|
||||
'hour' => '時間',
|
||||
'hours' => '時間',
|
||||
'minute' => '分',
|
||||
'minutes' => '分',
|
||||
'second' => '秒',
|
||||
'seconds' => '秒',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => '設定',
|
||||
'server' => 'サーバー',
|
||||
'server_log' => 'ログ',
|
||||
'server_status' => 'ステータス',
|
||||
'server_update' => 'アップデート',
|
||||
'user' => 'ユーザー',
|
||||
'help' => 'ヘルプ',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'ユーザー',
|
||||
'name' => '名前',
|
||||
'user_name' => 'ユーザーネーム',
|
||||
'password' => 'パスワード',
|
||||
'password_repeat' => 'パスワードを繰り返す',
|
||||
'password_leave_blank' => '空白のままにしておく',
|
||||
'level' => 'レベル',
|
||||
'level_10' => '管理者(Administrator)',
|
||||
'level_20' => 'ユーザー(User)',
|
||||
'level_description' => '<b>管理者(Administrator)</b>
|
||||
はフルアクセス権があります:サーバーの管理、
|
||||
ユーザーとグローバル設定を変更できます。<br><b>ユーザー(Users)</b>は、割り当てられたサーバーのアップデータのみを表示して実行できます。',
|
||||
'mobile' => 'モバイル',
|
||||
'email' => 'メールアドレス',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushoverサービスは、リアルタイムで通知を受け取るのが簡単にできます。詳細についてはこちらをご覧ください:
|
||||
<a href="https://pushover.net/" target="_blank"
|
||||
rel="noopener">https://pushover.net/</a>',
|
||||
'pushover_key' => 'Pushoverキー',
|
||||
'pushover_device' => 'Pushoverデバイス',
|
||||
'pushover_device_description' => '指定したデバイスに送信します。空欄ですべてのデバイスに送信できます。',
|
||||
'telegram' => 'Telegram',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank" rel="noopener">Telegram</a>
|
||||
はチャットアプリで、簡単にリアルタイム通知を受け取ることができます。
|
||||
<a href="http://docs.phpservermonitor.org/" target="_blank"
|
||||
rel="noopener">ドキュメント</a>
|
||||
で詳しい情報、インストールの方法を知りましょう。',
|
||||
'telegram_chat_id' => 'Telegram チャットID',
|
||||
'telegram_chat_id_description' => 'メッセージは対応するチャットへ送信されます。',
|
||||
'telegram_get_chat_id' => 'ここをクリックしてあなたのチャットIDを取得します。',
|
||||
'activate_telegram' => 'Telegramの通知を有効化',
|
||||
'activate_telegram_description' => '指定されたチャットIDにTelegram通知を送信できるようにします。
|
||||
この許可がなければ、Telegramはあなたに通知を送信することができません。',
|
||||
'telegram_bot_username_found' => 'ボットが見つかりました!<br><a href="%s" target="_blank"><button
|
||||
class="btn btn-primary">次のステップ</button></a>
|
||||
<br>これにより、ボットとあなたのチャットが開かれます。ここであなたは、
|
||||
/start を入力する必要があります。',
|
||||
'telegram_bot_username_error_token' => '401 - 未認証。
|
||||
APIトークンが有効であることを確認してください。',
|
||||
'telegram_bot_error' => 'Telegram通知を有効化中にエラーが発生: %s',
|
||||
'delete_title' => 'ユーザーを削除',
|
||||
'delete_message' => '本当にユーザーを削除しますか?: \'%1\'?',
|
||||
'deleted' => 'ユーザーを削除しました。',
|
||||
'updated' => 'ユーザー情報を更新しました。',
|
||||
'inserted' => 'ユーザーを追加しました。',
|
||||
'profile' => 'プロフィール',
|
||||
'profile_updated' => 'あなたのプロフィールは更新されました。',
|
||||
'error_user_name_bad_length' => 'ユーザーネームは2~64文字以内で入力してください。',
|
||||
'error_user_name_invalid' => 'ユーザー名は、アルファベット、数字とアンダーバーのみを含むことができます
|
||||
ドット(.)。',
|
||||
'error_user_name_exists' => '登録しようとしたユーザー名は既にデータベースに登録されています。',
|
||||
'error_user_email_bad_length' => 'メールアドレスは5~255文字以内で入力してください。',
|
||||
'error_user_email_invalid' => 'メールアドレスが無効です。',
|
||||
'error_user_level_invalid' => '指定したレベルが無効です。',
|
||||
'error_user_no_match' => 'このユーザー名は存在しません。',
|
||||
'error_user_password_invalid' => 'パスワードが無効です。',
|
||||
'error_user_password_no_match' => '確認のパスワードが一致しません。',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'ログエントリー',
|
||||
'type' => 'タイプ',
|
||||
'status' => 'ステータス',
|
||||
'email' => 'メール',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'telegram' => 'Telegram',
|
||||
'no_logs' => 'ログがありません',
|
||||
'clear' => 'ログをクリアする',
|
||||
'delete_title' => 'ログを削除する',
|
||||
'delete_message' => 'すべてのログを削除してもよろしいですか?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'サーバー',
|
||||
'status' => 'ステータス',
|
||||
'label' => 'ラベル',
|
||||
'domain' => 'ドメイン/IP',
|
||||
'timeout' => 'タイムアウト',
|
||||
'timeout_description' => '指定した秒数、サーバーのレスポンスを待ちます。',
|
||||
'authentication_settings' => '認証設定',
|
||||
'optional' => 'オプション',
|
||||
'website_username' => 'ユーザー名',
|
||||
'website_username_description' => 'ユーザー名でウェブサイトにアクセスします。
|
||||
(サポートはApache認証のみです。)',
|
||||
'website_password' => 'パスワード',
|
||||
'website_password_description' => 'パスワードはサイトのアクセスに使用します。パスワードは暗号化されてデータベースへ保存されます。',
|
||||
'fieldset_monitoring' => 'モニター',
|
||||
'fieldset_permissions' => '権限',
|
||||
'port' => 'ポート',
|
||||
'custom_port' => 'カスタムポート',
|
||||
'popular_ports' => '主要なポート',
|
||||
'request_method' => 'リクエストメソッド',
|
||||
'custom_request_method' => 'カスタムリクエストメソッド',
|
||||
'popular_request_methods' => '主要なリクエストメソッド',
|
||||
'post_field' => 'Postフィールド',
|
||||
'post_field_description' => 'このデータは上記のリクエストメソッドを使用する際に使用されます。
|
||||
例: param1=val1&param2=val2&...',
|
||||
'please_select' => '選択してください',
|
||||
'type' => 'タイプ',
|
||||
'type_website' => 'ウェブサイト',
|
||||
'type_service' => 'サービス',
|
||||
'type_ping' => 'Ping',
|
||||
'pattern' => '文字列/パターンを検索',
|
||||
'pattern_description' => '指定した文字列/パターンが存在しない場合は、「オフライン」としてマークされます。また、標準的な計算式は許可されています。',
|
||||
'pattern_online' => 'パターンがウェブサイトであることを示すパターン: ',
|
||||
'pattern_online_description' => 'オンライン:このパターンがWebサイトにある場合、オンラインとしてマークされます。
|
||||
オフライン:このパターンがWebサイトにない場合、オフラインとしてマークされます。',
|
||||
'redirect_check' => '別のドメインへのリダイレクト: ',
|
||||
'redirect_check_description' => '別のドメインにリダイレクトするのは通常は悪い兆候です。',
|
||||
'allow_http_status' => 'HTTPステータスコードを許可する',
|
||||
'allow_http_status_description' => 'ウェブサイトをオンラインにマークします。
|
||||
400未満のステータスコードはデフォルトでオンラインとマークされます。
|
||||
| で区切ります。 例: 401|403.',
|
||||
'header_name_description' => 'ヘッダー名(大文字小文字を区別します)',
|
||||
'header_value_description' => 'ヘッダーの値。正規表現が利用可能です。',
|
||||
'last_check' => '最後の確認',
|
||||
'last_online' => '最後のオンライン',
|
||||
'last_offline' => '最後のオフライン',
|
||||
'last_output' => '最後のポジティブの出力',
|
||||
'last_error' => '最後のエラー',
|
||||
'last_error_output' => '最後のエラー出力',
|
||||
'monitoring' => 'モニタリング',
|
||||
'no_monitoring' => 'モニタリングなし',
|
||||
'email' => 'メール',
|
||||
'send_email' => 'メールを送信',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'SMSを送信',
|
||||
'pushover' => 'Pushover',
|
||||
'send_pushover' => 'Pushover通知を送信',
|
||||
'telegram' => 'Telegram',
|
||||
'send_telegram' => 'Telegram通知を送信',
|
||||
'users' => 'ユーザー',
|
||||
'delete_title' => 'サーバーを削除',
|
||||
'delete_message' => '本当にこのサーバーを削除しますか?: \'%1\'?',
|
||||
'deleted' => 'サーバーを削除しました。',
|
||||
'updated' => 'サーバーを更新しました。',
|
||||
'inserted' => 'サーバーを追加しました。',
|
||||
'latency' => 'レイテンシ',
|
||||
'latency_max' => 'レイテンシ(最大)',
|
||||
'latency_min' => 'レイテンシ(最小)',
|
||||
'latency_avg' => 'レイテンシ(アベレージ)',
|
||||
'uptime' => '稼働時間',
|
||||
'year' => '年',
|
||||
'month' => '月',
|
||||
'week' => '週間',
|
||||
'day' => '日',
|
||||
'hour' => '時間',
|
||||
'warning_threshold' => '警告閾値',
|
||||
'warning_threshold_description' => 'オフラインとしてマークされる前に失敗したチェックの数',
|
||||
'chart_last_week' => '最後の週間',
|
||||
'chart_history' => '履歴',
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS 通知は無効です。',
|
||||
'warning_notifications_disabled_email' => 'メール通知は無効です。',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover通知は無効です。',
|
||||
'warning_notifications_disabled_telegram' => 'Telegram通知は無効です。',
|
||||
'error_server_no_match' => 'サーバーが見つかりません',
|
||||
'error_server_label_bad_length' => 'ラベルは1~255文字以内で入力してください。',
|
||||
'error_server_ip_bad_length' => 'ドメイン/IPは1~255文字以内で入力してください。',
|
||||
'error_server_ip_bad_service' => '無効なIPです。',
|
||||
'error_server_ip_bad_website' => 'ウェブサイトのURLが無効です。',
|
||||
'error_server_type_invalid' => '選択されたサーバータイプが無効です。',
|
||||
'error_server_warning_threshold_invalid' => '警告のしきい値は、0より大きい有効な整数でなければなりません。',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => '基本',
|
||||
'language' => '言語',
|
||||
'show_update' => 'アップデートをチェックしますか?',
|
||||
'password_encrypt_key' => '暗号鍵パスワード',
|
||||
'password_encrypt_key_note' => 'このキーは、Webサイトにアクセスするためにサーバーに保存されているパスワードを暗号化するために使用されます。
|
||||
キーが変更された場合、保存されたパスワードは無効です!',
|
||||
'proxy' => 'プロキシを有効化する',
|
||||
'proxy_url' => 'プロキシのURL',
|
||||
'proxy_user' => 'プロキシのユーザー名',
|
||||
'proxy_password' => 'プロキシのパスワード',
|
||||
'email_status' => 'メールの送信を許可',
|
||||
'email_from_email' => 'アドレスからのメール',
|
||||
'email_from_name' => '名前からのメール',
|
||||
'email_smtp' => 'SMTPを有効にしますか?',
|
||||
'email_smtp_host' => 'SMTPホスト',
|
||||
'email_smtp_port' => 'SMTPポート',
|
||||
'email_smtp_security' => 'SMTPセキュリティ',
|
||||
'email_smtp_security_none' => 'なし',
|
||||
'email_smtp_username' => 'SMTPのユーザー名',
|
||||
'email_smtp_password' => 'SMTPのパスワード',
|
||||
'email_smtp_noauth' => '空白で認証なしになります',
|
||||
'sms_status' => 'テキストメッセージの送信を許可する',
|
||||
'sms_gateway' => 'このゲートウェイは、メッセージの送信に使用されます。',
|
||||
'sms_gateway_username' => 'ゲートウェイのユーザー名',
|
||||
'sms_gateway_password' => 'ゲートウェイのパスワード',
|
||||
'sms_from' => '送信者の電話番号:',
|
||||
'pushover_status' => 'Pushoverのメッセージを送信することを許可する',
|
||||
'pushover_description' => 'Pushoverは、リアルタイムの通知を簡単に取得できるサービスです。
|
||||
詳細については、
|
||||
href="https://pushover.net/">ウェブサイト</a>をご覧ください。',
|
||||
'pushover_clone_app' => 'クリックでPushoverアプリケーションを作成できます。',
|
||||
'pushover_api_token' => 'PushoverアプリケーションのAPIトークン',
|
||||
'pushover_api_token_description' => 'Pushoverを使用するには、事前にウェブサイトで<a
|
||||
href="%1$s" target="_blank"
|
||||
rel="noopener">アプリを登録</a>してApp
|
||||
APIトークンを入力する必要があります。',
|
||||
'telegram_status' => 'Telegramメッセージの送信を許可する',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank" rel="noopener">Telegram</a>
|
||||
はチャットアプリで、簡単にリアルタイム通知を受け取ることができます。
|
||||
<a href="http://docs.phpservermonitor.org/" target="_blank"
|
||||
rel="noopener">documentation</a>
|
||||
で詳しい情報、インストールの方法を知りましょう。',
|
||||
'telegram_api_token' => 'Telegram APIトークン',
|
||||
'telegram_api_token_description' => 'Telegramを使用する前に、APIトークンを取得する必要があります。
|
||||
<a href="http://docs.phpservermonitor.org/" target="_blank"
|
||||
rel="noopener">documentation</a>
|
||||
でヘルプを参照してください。',
|
||||
'alert_type' => '通知するタイミングを選択',
|
||||
'alert_type_description' => '<b>状態の変化:</b>
|
||||
サーバーのステータスが変更されたときに通知を受け取ります。
|
||||
だからオンライン -> オフラインまたはオフライン ->
|
||||
オンライン。<br><br /><b>オフライン:</b>
|
||||
サーバーが*初めての間*オフラインになったときに通知を受け取ります。
|
||||
例えば、あなたのcronの仕事は15分ごとです。あなたのサーバーは午前1時にダウンし、午前6時まで停止します。
|
||||
午前1時に1つの通知が届きます。<br><br><b>常に:</b>
|
||||
サイトが数時間にわたってオフラインになっていても、スクリプトが実行され、サイトが停止するたびに通知を受け取ります。',
|
||||
'alert_type_status' => '状況の変化',
|
||||
'alert_type_offline' => 'オフライン',
|
||||
'alert_type_always' => '常に',
|
||||
'combine_notifications' => '通知の結合',
|
||||
'combine_notifications_description' => '通知を1つの通知にまとめて通知の量を削減します。(これはSMS通知には影響しません。)',
|
||||
'alert_proxy' => '有効にしても、プロキシはサービスに使用されません',
|
||||
'alert_proxy_url' => 'フォーマット: ホスト:ポート',
|
||||
'log_status' => 'ログステータス',
|
||||
'log_status_description' => 'ログステータスがTRUEに設定されている場合、モニターは通知設定が渡されるたびにイベントを記録します。',
|
||||
'log_email' => 'スクリプトによって送信された電子メールを記録する',
|
||||
'log_sms' => 'スクリプトによって送信されたテキストメッセージを記録する',
|
||||
'log_pushover' => 'スクリプトによって送信されたPushoverメッセージを記録する',
|
||||
'log_telegram' => 'スクリプトによって送信されたTelegramメッセージを記録する',
|
||||
'updated' => '設定は更新されました。',
|
||||
'tab_email' => 'メール',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'tab_telegram' => 'Telegram',
|
||||
'settings_email' => 'メール設定',
|
||||
'settings_sms' => 'テキストメッセージ設定',
|
||||
'settings_pushover' => 'Pushover設定',
|
||||
'settings_telegram' => 'Telegram設定',
|
||||
'settings_notification' => '通知設定',
|
||||
'settings_log' => 'ログ設定',
|
||||
'settings_proxy' => 'プロキシ設定',
|
||||
'auto_refresh' => '自動更新',
|
||||
'auto_refresh_description' => 'サーバーページを自動更新します。<br><span
|
||||
class="small">時間を秒で指定し、0に設定すると更新しません。</span>',
|
||||
'test' => 'テスト',
|
||||
'test_email' => 'あなたのユーザープロフィールで指定されたアドレスに電子メールが送信されます。',
|
||||
'test_sms' => 'あなたのユーザープロフィールで指定された電話番号にSMSが送信されます。',
|
||||
'test_pushover' => 'あなたのユーザープロフィールで指定されたユーザー
|
||||
キー/デバイスにPushover通知が送信されます。',
|
||||
'test_telegram' => 'あなたのユーザープロフィールで指定されたチャットIDにTelegram通知が送信されます。',
|
||||
'send' => '送信',
|
||||
'test_subject' => 'テスト',
|
||||
'test_message' => 'これはテストメッセージです',
|
||||
'email_sent' => 'メールが送信されました',
|
||||
'email_error' => 'メールを送信中にエラーが発生しました',
|
||||
'sms_sent' => 'SMSが送信されました',
|
||||
'sms_error' => 'SMSを送信中にエラーが発生しました %s',
|
||||
'sms_error_nomobile' => 'テストSMSの送信に失敗:
|
||||
あなたのプロフィールに有効な電話番号がありません',
|
||||
'pushover_sent' => 'Pushover通知が送信されました',
|
||||
'pushover_error' => 'Pushover通知を送信中にエラーが発生しました: %s',
|
||||
'pushover_error_noapp' => 'テスト通知の送信に失敗しました:グローバル設定にAPIトークンがありません',
|
||||
'pushover_error_nokey' => 'テスト通知の送信に失敗しました:あなたのプロフィールに有効なPushoverキーがありません',
|
||||
'telegram_sent' => 'Telegram通知が送信されました',
|
||||
'telegram_error' => 'Telegram通知を送信中にエラーが発生しました: %s',
|
||||
'telegram_error_notoken' => 'テスト通知の送信に失敗しました:グローバル設定にTelegram
|
||||
APIトークンがありません',
|
||||
'telegram_error_noid' => 'テスト通知の送信に失敗しました:あなたのプロフィールに有効なチャットIDがありません',
|
||||
'log_retention_period' => 'ログ保持期間',
|
||||
'log_retention_period_description' => '通知のログおよびサーバー稼働時間のアーカイブを保持する日数。
|
||||
ログのクリーンアップを無効にするには、0を入力します。',
|
||||
'log_retention_days' => '日',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'サーバー \'%LABEL%\' はダウンしています: ip=%IP%, ポート=%PORT%.
|
||||
エラー=%ERROR%',
|
||||
'off_email_subject' => '重要: サーバー \'%LABEL%\' がダウンしています!',
|
||||
'off_email_body' => 'サーバーへの接続に失敗しました:<br><br>Server: %LABEL%<br>IP:
|
||||
%IP%<br>ポート: %PORT%<br>エラー: %ERROR%<br>日時: %DATE%',
|
||||
'off_pushover_title' => 'サーバー \'%LABEL%\' がダウンしています!',
|
||||
'off_pushover_message' => 'サーバーへの接続に失敗しました:<br/><br/>Server: %LABEL%<br/>IP:
|
||||
%IP%<br/>ポート: %PORT%<br/>エラー: %ERROR%<br/>日時: %DATE%',
|
||||
'off_telegram_message' => 'サーバーへの接続に失敗しました:<br/><br/>Server: %LABEL%<br/>IP:
|
||||
%IP%<br/>ポート: %PORT%<br/>エラー: %ERROR%<br/>日時: %DATE%',
|
||||
'on_sms' => 'サーバー \'%LABEL%\' は動作しています: ip=%IP%, port=%PORT%, it was down for
|
||||
%LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => '重要: サーバー \'%LABEL%\' は動作しています',
|
||||
'on_email_body' => 'サーバー \'%LABEL%\' は動作中です。
|
||||
この期間の間ダウンしていました:
|
||||
%LAST_OFFLINE_DURATION%:<br/><br/>サーバー: %LABEL%<br/>IP: %IP%<br/>ポート:
|
||||
%PORT%<br/>日時: %DATE%',
|
||||
'on_pushover_title' => 'サーバー \'%LABEL%\' は動作しています',
|
||||
'on_pushover_message' => 'サーバー \'%LABEL%\' は動作中です。
|
||||
この期間の間ダウンしていました:
|
||||
%LAST_OFFLINE_DURATION%:<br/><br/>サーバー: %LABEL%<br/>IP: %IP%<br/>ポート:
|
||||
%PORT%<br/>日時: %DATE%',
|
||||
'on_telegram_message' => 'サーバー \'%LABEL%\' は動作中です。
|
||||
この期間の間ダウンしていました: <br/><br/>サーバー:
|
||||
%LABEL%<br/>IP: %IP%<br/>ポート: %PORT%<br/>ダウンタイム:
|
||||
%LAST_OFFLINE_DURATION%<br/>日時: %DATE%',
|
||||
'combi_off_email_message' => '<ul><li>サーバー: %LABEL%</li><li>IP: %IP%</li><li>ポート:
|
||||
%PORT%</li><li>エラー: %ERROR%</li><li>日時: %DATE%</li></ul>',
|
||||
'combi_off_pushover_message' => '<ul><li>サーバー: %LABEL%</li><li>IP: %IP%</li><li>ポート:
|
||||
%PORT%</li><li>エラー: %ERROR%</li><li>日時: %DATE%</li></ul>',
|
||||
'combi_off_telegram_message' => '- サーバー: %LABEL%<br/>- IP: %IP%<br/>- ポート: %PORT%<br/>-
|
||||
エラー: %ERROR%<br/>- 日時: %DATE%<br/><br/>',
|
||||
'combi_on_email_message' => '<ul><li>サーバー: %LABEL%</li><li>IP: %IP%</li><li>ポート:
|
||||
%PORT%</li><li>ダウンタイム: %LAST_OFFLINE_DURATION%</li><li>日時:
|
||||
%DATE%</li></ul>',
|
||||
'combi_on_pushover_message' => '<ul><li>サーバー: %LABEL%</li><li>IP: %IP%</li><li>ポート:
|
||||
%PORT%</li><li>ダウンタイム: %LAST_OFFLINE_DURATION%</li><li>日時:
|
||||
%DATE%</li></ul>',
|
||||
'combi_on_telegram_message' => '- サーバー: %LABEL%<br/>- IP: %IP%<br/>- ポート: %PORT%<br/>-
|
||||
ダウンタイム: %LAST_OFFLINE_DURATION%<br/>- 日時: %DATE%<br/><br/>',
|
||||
'combi_email_subject' => '重要: \'%UP%\' サーバーは動作を再開しました。 \'%DOWN%\'
|
||||
サーバーはダウンしています。',
|
||||
'combi_pushover_subject' => '\'%UP%\' サーバーは動作を再開しました。 \'%DOWN%\'
|
||||
サーバーはダウンしています。',
|
||||
'combi_email_message' => '<b>以下のサーバーはダウンしています:
|
||||
</b><br/>%DOWN_SERVERS%<br/><b>以下のサーバーは動作を再開しました:</b><br/>%UP_SERVERS%',
|
||||
'combi_pushover_message' => '<b>以下のサーバーはダウンしています:
|
||||
</b><br/>%DOWN_SERVERS%<br/><b>以下のサーバーは動作を再開しました:</b><br/>%UP_SERVERS%',
|
||||
'combi_telegram_message' => '<b>以下のサーバーはダウンしています:
|
||||
</b><br/>%DOWN_SERVERS%<br/><b>以下のサーバーは動作を再開しました:</b><br/>%UP_SERVERS%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'ようこそ、 %user_name%',
|
||||
'title_sign_in' => 'サインインしてください。',
|
||||
'title_forgot' => 'パスワードを忘れましたか?',
|
||||
'title_reset' => 'パスワードをリセットする',
|
||||
'submit' => '送信',
|
||||
'remember_me' => 'ログイン状態を保持する',
|
||||
'login' => 'ログイン',
|
||||
'logout' => 'ログアウト',
|
||||
'username' => 'ユーザー名',
|
||||
'password' => 'パスワード',
|
||||
'password_repeat' => 'パスワードを繰り返してください',
|
||||
'password_forgot' => 'パスワードを忘れましたか?',
|
||||
'password_reset' => 'パスワードをリセットする',
|
||||
'password_reset_email_subject' => 'PHP Server Monitorのパスワードをリセットする',
|
||||
'password_reset_email_body' => 'パスワードをリセットするには、次のリンクを使用してください。
|
||||
1時間で期限切れになりますのでご注意ください。<br /><br
|
||||
/> %link%',
|
||||
'error_user_incorrect' => '指定されたユーザー名が見つかりませんでした。',
|
||||
'error_login_incorrect' => '情報が間違っています。',
|
||||
'error_login_passwords_nomatch' => '指定されたパスワードが一致しません。',
|
||||
'error_reset_invalid_link' => '指定したリセットリンクは無効です。',
|
||||
'success_password_forgot' => 'パスワードをリセットする方法に関する情報が電子メールで送信されました。',
|
||||
'success_password_reset' => 'パスワードは正常にリセットされました。ログインしてください。',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => '未認証',
|
||||
'401_unauthorized_description' => 'このページを表示する権限がありません。',
|
||||
),
|
||||
);
|
|
@ -1,297 +1,142 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Ik-Jun
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => '한국 - Korean',
|
||||
'locale' => array('ko_KR.UTF-8', 'ko_KR', 'korean'),
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Install',
|
||||
'action' => 'Action',
|
||||
'save' => '저장',
|
||||
'edit' => '수정',
|
||||
'delete' => '삭제',
|
||||
'date' => '날짜',
|
||||
'message' => '메세지',
|
||||
'yes' => '예',
|
||||
'no' => '아니오',
|
||||
'insert' => '삽입',
|
||||
'add_new' => '새계정 추가',
|
||||
'update_available' => '새로운 업데이트가 있습니다 ({version}). 다음사이트를 방문 해 주십시오. <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Back to top',
|
||||
'go_back' => 'Go back',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Cancel',
|
||||
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Yesterday at %X',
|
||||
'other_day_format' => '%A at %X',
|
||||
'never' => 'Never',
|
||||
'hours_ago' => '%d hours ago',
|
||||
'an_hour_ago' => 'about an hour ago',
|
||||
'minutes_ago' => '%d minutes ago',
|
||||
'a_minute_ago' => 'about a minute ago',
|
||||
'seconds_ago' => '%d seconds ago',
|
||||
'a_second_ago' => 'a second ago',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => '설정',
|
||||
'server' => '서버목록',
|
||||
'server_log' => '로그',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => '업데이트',
|
||||
'user' => '사용자',
|
||||
'help' => '도움말',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => '사용자',
|
||||
'name' => '이름',
|
||||
'user_name' => 'Username',
|
||||
'password' => 'Password',
|
||||
'password_repeat' => 'Password repeat',
|
||||
'password_leave_blank' => 'Leave blank to keep unchanged',
|
||||
'level' => 'Level',
|
||||
'level_10' => 'Administrator',
|
||||
'level_20' => 'User',
|
||||
'level_description' => '<b>Administrators</b> have full access: they can manage servers, users and edit the global configuration.<br/><b>Users</b> can only view and run the updater for the servers that have been assigned to them.',
|
||||
'mobile' => '휴대폰',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||
'delete_title' => 'Delete User',
|
||||
'delete_message' => 'Are you sure you want to delete user \'%1\'?',
|
||||
'deleted' => 'User deleted.',
|
||||
'updated' => '수정되었습니다.',
|
||||
'inserted' => '추가되었습니다.',
|
||||
'profile' => 'Profile',
|
||||
'profile_updated' => 'Your profile has been updated.',
|
||||
'error_user_name_bad_length' => 'Usernames must be between 2 and 64 characters.',
|
||||
'error_user_name_invalid' => 'It may only contain alphabetic characters (a-z, A-Z), digits (0-9) and underscores (_).',
|
||||
'error_user_name_exists' => 'The given username already exists in the database.',
|
||||
'error_user_email_bad_length' => 'Email addresses must be between 5 and 255 characters.',
|
||||
'error_user_email_invalid' => 'The email address is invalid.',
|
||||
'error_user_level_invalid' => 'The given user level is invalid.',
|
||||
'error_user_no_match' => 'The user could not be found in the database.',
|
||||
'error_user_password_invalid' => 'The entered password is invalid.',
|
||||
'error_user_password_no_match' => 'The entered passwords do not match.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Log entries',
|
||||
'type' => '속성',
|
||||
'status' => '상태',
|
||||
'email' => 'email',
|
||||
'sms' => 'sms',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'No logs',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => '서버',
|
||||
'status' => 'Status',
|
||||
'label' => 'Label',
|
||||
'domain' => 'Domain/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||
'port' => 'Port',
|
||||
'type' => 'Type',
|
||||
'type_website' => 'Website',
|
||||
'type_service' => 'Service',
|
||||
'pattern' => 'Search string/regex',
|
||||
'pattern_description' => 'If this pattern is not found on the website, the server will be marked offline. Regular expressions are allowed.',
|
||||
'last_check' => '최근체크',
|
||||
'last_online' => '최근접속',
|
||||
'monitoring' => '확인중',
|
||||
'no_monitoring' => 'No monitoring',
|
||||
'email' => '메일 전송',
|
||||
'send_email' => '메일 전송',
|
||||
'sms' => 'SMS 전송',
|
||||
'send_sms' => 'SMS 전송',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Users',
|
||||
'delete_title' => 'Delete Server',
|
||||
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
|
||||
'deleted' => 'Server deleted.',
|
||||
'updated' => '서버가 수정되었습니다.',
|
||||
'inserted' => '서버가 추가되었습니다.',
|
||||
'latency' => '응답',
|
||||
'latency_max' => 'Latency (maximum)',
|
||||
'latency_min' => 'Latency (minimum)',
|
||||
'latency_avg' => 'Latency (average)',
|
||||
'uptime' => 'Uptime',
|
||||
'year' => 'Year',
|
||||
'month' => 'Month',
|
||||
'week' => 'Week',
|
||||
'day' => 'Day',
|
||||
'hour' => 'Hour',
|
||||
'warning_threshold' => 'Warning threshold',
|
||||
'warning_threshold_description' => 'Number of failed checks required before it is marked offline.',
|
||||
'chart_last_week' => 'Last week',
|
||||
'chart_history' => 'History',
|
||||
// Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||
'error_server_no_match' => 'Server not found.',
|
||||
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_service' => 'The IP address is not valid.',
|
||||
'error_server_ip_bad_website' => 'The website URL is not valid.',
|
||||
'error_server_type_invalid' => 'The selected server type is invalid.',
|
||||
'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => '일반',
|
||||
'language' => '언어',
|
||||
'show_update' => '매주 업데이트를 확인하시겠습니까?',
|
||||
'email_status' => '메일전송 허용',
|
||||
'email_from_email' => 'Email 주소',
|
||||
'email_from_name' => 'Email 사용자',
|
||||
'email_smtp' => 'Enable SMTP',
|
||||
'email_smtp_host' => 'SMTP host',
|
||||
'email_smtp_port' => 'SMTP port',
|
||||
'email_smtp_username' => 'SMTP username',
|
||||
'email_smtp_password' => 'SMTP password',
|
||||
'email_smtp_noauth' => 'Leave blank for no authentication',
|
||||
'sms_status' => 'SMS전송 허용',
|
||||
'sms_gateway' => '메세지 전송을 위한 게이트웨이 허용',
|
||||
'sms_gateway_mosms' => 'Mosms',
|
||||
'sms_gateway_mollie' => 'Mollie',
|
||||
'sms_gateway_spryng' => 'Spryng',
|
||||
'sms_gateway_inetworx' => 'Inetworx',
|
||||
'sms_gateway_clickatell' => 'Clickatell',
|
||||
'sms_gateway_smsit' => 'Smsit',
|
||||
'sms_gateway_textmarketer' => 'Textmarketer',
|
||||
'sms_gateway_smsglobal' => 'SMSGlobal',
|
||||
'sms_gateway_username' => 'Gateway username',
|
||||
'sms_gateway_password' => 'Gateway password',
|
||||
'sms_from' => 'Sender\'s phone number',
|
||||
'pushover_status' => 'Allow sending Pushover messages',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Before you can use Pushover, you need to <a href="%1$s" target="_blank">register an App</a> at their website and enter the App API Token here.',
|
||||
'alert_type' => '알림을 원하면 다음과 같이 변경하십시오.',
|
||||
'alert_type_description' => '<b>상태 변경: </b><br/>'.
|
||||
'서버 상태가 변경이되면 알림을 받습니다. online -> offline -> online.<br/>'.
|
||||
'<br/><b>오프라인: </b><br/>'.
|
||||
'서버가 첫번째로 오프라인이 되었을 때 알림을 받습니다. 예를들어, '.
|
||||
'cron이 매 15분이고 오전1시 부터 오전6시까지 다운되었을때 오전1시에 한번 알림을 받습니다.<br />' .
|
||||
'<br/><b>항상: </b><br/>'.
|
||||
'사이트가 다운되었을 때 매시간 알림을 받습니다.',
|
||||
|
||||
'alert_type_status' => '상태 변경',
|
||||
'alert_type_offline' => '오프라인',
|
||||
'alert_type_always' => '항상',
|
||||
'log_status' => '로그 상태',
|
||||
'log_status_description' => '로그상태가 TRUE이면 알림설정이 통과할때마다 이벤트를 기록합니다.',
|
||||
'log_email' => '이메일로 로그를 전송하시겠습니까?',
|
||||
'log_sms' => 'SMS로 로그를 전송하시겠습니까?',
|
||||
'log_pushover' => 'Log pushover messages sent by the script',
|
||||
'updated' => '설정이 수정되었습니다.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Email 설정',
|
||||
'settings_sms' => 'SMS 설정',
|
||||
'settings_pushover' => 'Pushover settings',
|
||||
'settings_notification' => '알림 설정',
|
||||
'settings_log' => '로그 설정',
|
||||
'auto_refresh' => 'Auto-refresh',
|
||||
'auto_refresh_servers' =>
|
||||
'서버페이지를 자동으로 새로고침.<br/>'.
|
||||
'<span class="small">'.
|
||||
'시간은 초(sec)로 설정을 하고, 0은 새로고침을 하지 않습니다.'.
|
||||
'</span>',
|
||||
'seconds' => 'seconds',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'An email will be sent to the address specified in your user profile.',
|
||||
'test_sms' => 'An SMS will be sent to the phone number specified in your user profile.',
|
||||
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||
'send' => 'Send',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Test message',
|
||||
'email_sent' => 'Email sent',
|
||||
'email_error' => 'Error in email sending',
|
||||
'sms_sent' => 'Sms sent',
|
||||
'sms_error' => 'Error in sms sending',
|
||||
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||
'pushover_sent' => 'Pushover notification sent',
|
||||
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||
'log_retention_period' => 'Log retention period',
|
||||
'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
|
||||
'log_retention_days' => 'days',
|
||||
),
|
||||
// for newlines in the email messages use <br/>
|
||||
'notifications' => array(
|
||||
'off_sms' => '서버(\'%LABEL%\')가 다운되었습니다. : ip=%IP%, port=%PORT%. Error=%ERROR%',
|
||||
'off_email_subject' => '중요: 서버(\'%LABEL%\')가 다운되었습니다.',
|
||||
'off_email_body' => "서버 접속을 실패하였습니다.<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Error: %ERROR%<br/>Date: %DATE%",
|
||||
'off_pushover_title' => '서버(\'%LABEL%\')가 다운되었습니다.',
|
||||
'off_pushover_message' => "서버 접속을 실패하였습니다.<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Error: %ERROR%<br/>Date: %DATE%",
|
||||
'on_sms' => '서버(\'%LABEL%\') 가동중: ip=%IP%, port=%PORT%',
|
||||
'on_email_subject' => '중요: 서버(\'%LABEL%\')가 가동중입니다.',
|
||||
'on_email_body' => "서버('%LABEL%')가 재가동됩니다.:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Date: %DATE%",
|
||||
'on_pushover_title' => '서버(\'%LABEL%\')가 가동중입니다.',
|
||||
'on_pushover_message' => "서버('%LABEL%')가 재가동됩니다.:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Date: %DATE%",
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Welcome, %user_name%',
|
||||
'title_sign_in' => 'Please sign in',
|
||||
'title_forgot' => 'Forgot your password?',
|
||||
'title_reset' => 'Reset your password',
|
||||
'submit' => 'Submit',
|
||||
'remember_me' => 'Remember me',
|
||||
'login' => 'Login',
|
||||
'logout' => 'Logout',
|
||||
'username' => 'Username',
|
||||
'password' => 'Password',
|
||||
'password_repeat' => 'Repeat password',
|
||||
'password_forgot' => 'Forgot password?',
|
||||
'password_reset' => 'Reset password',
|
||||
'password_reset_email_subject' => 'Reset your password for PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Please use the following link to reset your password. Please note it expires in 1 hour.<br/><br/>%link%',
|
||||
'error_user_incorrect' => 'The provided username could not be found.',
|
||||
'error_login_incorrect' => 'The information is incorrect.',
|
||||
'error_login_passwords_nomatch' => 'The provided passwords do not match.',
|
||||
'error_reset_invalid_link' => 'The reset link you provided is invalid.',
|
||||
'success_password_forgot' => 'An email has been sent to you with information how to reset your password.',
|
||||
'success_password_reset' => 'Your password has been reset successfully. Please login.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Unauthorized',
|
||||
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||
),
|
||||
);
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Ik-Jun
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => '한국 - Korean',
|
||||
'locale' => array(
|
||||
'0' => 'ko_KR.UTF-8',
|
||||
'1' => 'ko_KR',
|
||||
'2' => 'korean',
|
||||
),
|
||||
'locale_tag' => 'ko',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'save' => '저장',
|
||||
'edit' => '수정',
|
||||
'delete' => '삭제',
|
||||
'date' => '날짜',
|
||||
'message' => '메세지',
|
||||
'yes' => '예',
|
||||
'no' => '아니오',
|
||||
'insert' => '삽입',
|
||||
'add_new' => '새계정 추가',
|
||||
'update_available' => '새로운 업데이트가 있습니다 ({version}). 다음사이트를 방문 해
|
||||
주십시오. <a href="https://github.com/phpservermon/phpservermon/releases/latest"
|
||||
target="_blank" rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => '설정',
|
||||
'server' => '서버목록',
|
||||
'server_log' => '로그',
|
||||
'server_update' => '업데이트',
|
||||
'user' => '사용자',
|
||||
'help' => '도움말',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => '사용자',
|
||||
'name' => '이름',
|
||||
'mobile' => '휴대폰',
|
||||
'updated' => '수정되었습니다.',
|
||||
'inserted' => '추가되었습니다.',
|
||||
),
|
||||
'log' => array(
|
||||
'type' => '속성',
|
||||
'status' => '상태',
|
||||
'email' => 'email',
|
||||
'sms' => 'sms',
|
||||
'pushover' => 'Pushover',
|
||||
'telegram' => 'Telegram',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => '서버',
|
||||
'last_check' => '최근체크',
|
||||
'last_online' => '최근접속',
|
||||
'monitoring' => '확인중',
|
||||
'email' => '메일 전송',
|
||||
'send_email' => '메일 전송',
|
||||
'sms' => 'SMS 전송',
|
||||
'send_sms' => 'SMS 전송',
|
||||
'updated' => '서버가 수정되었습니다.',
|
||||
'inserted' => '서버가 추가되었습니다.',
|
||||
'latency' => '응답',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => '일반',
|
||||
'language' => '언어',
|
||||
'show_update' => '매주 업데이트를 확인하시겠습니까?',
|
||||
'email_status' => '메일전송 허용',
|
||||
'email_from_email' => 'Email 주소',
|
||||
'email_from_name' => 'Email 사용자',
|
||||
'sms_status' => 'SMS전송 허용',
|
||||
'sms_gateway' => '메세지 전송을 위한 게이트웨이 허용',
|
||||
'alert_type' => '알림을 원하면 다음과 같이 변경하십시오.',
|
||||
'alert_type_description' => '<b>상태 변경: </b><br>서버 상태가 변경이되면 알림을
|
||||
받습니다. online -> offline -> online.<br><br><b>오프라인:
|
||||
</b><br>서버가 첫번째로 오프라인이 되었을 때 알림을
|
||||
받습니다. 예를들어, cron이 매 15분이고 오전1시 부터
|
||||
오전6시까지 다운되었을때 오전1시에 한번 알림을
|
||||
받습니다.<br /><br><b>항상: </b><br>사이트가 다운되었을 때
|
||||
매시간 알림을 받습니다.',
|
||||
'alert_type_status' => '상태 변경',
|
||||
'alert_type_offline' => '오프라인',
|
||||
'alert_type_always' => '항상',
|
||||
'log_status' => '로그 상태',
|
||||
'log_status_description' => '로그상태가 TRUE이면 알림설정이 통과할때마다 이벤트를
|
||||
기록합니다.',
|
||||
'log_email' => '이메일로 로그를 전송하시겠습니까?',
|
||||
'log_sms' => 'SMS로 로그를 전송하시겠습니까?',
|
||||
'updated' => '설정이 수정되었습니다.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Email 설정',
|
||||
'settings_sms' => 'SMS 설정',
|
||||
'settings_notification' => '알림 설정',
|
||||
'settings_log' => '로그 설정',
|
||||
'auto_refresh_description' => '서버페이지를 자동으로 새로고침.<br><span class="small">시간은
|
||||
초(sec)로 설정을 하고, 0은 새로고침을 하지 않습니다.</span>',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => '서버(\'%LABEL%\')가 다운되었습니다. : ip=%IP%, port=%PORT%. Error=%ERROR%',
|
||||
'off_email_subject' => '중요: 서버(\'%LABEL%\')가 다운되었습니다.',
|
||||
'off_email_body' => '서버 접속을 실패하였습니다.<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Error: %ERROR%<br>Date: %DATE%',
|
||||
'off_pushover_title' => '서버(\'%LABEL%\')가 다운되었습니다.',
|
||||
'off_pushover_message' => '서버 접속을 실패하였습니다.<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Error: %ERROR%<br>Date: %DATE%',
|
||||
'on_sms' => '서버(\'%LABEL%\') 가동중: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => '중요: 서버(\'%LABEL%\')가 가동중입니다.',
|
||||
'on_email_body' => '서버(\'%LABEL%\')가 재가동됩니다., it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Date:
|
||||
%DATE%',
|
||||
'on_pushover_title' => '서버(\'%LABEL%\')가 가동중입니다.',
|
||||
'on_pushover_message' => '서버(\'%LABEL%\')가 재가동됩니다., it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Date:
|
||||
%DATE%',
|
||||
),
|
||||
);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -18,280 +19,375 @@
|
|||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Nederlands - Dutch',
|
||||
'locale' => array('nl_NL.UTF-8', 'nl_NL', 'dutch'),
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Intalleren',
|
||||
'action' => 'Actie',
|
||||
'save' => 'Opslaan',
|
||||
'edit' => 'Wijzig',
|
||||
'delete' => 'Verwijder',
|
||||
'date' => 'Datum',
|
||||
'message' => 'Bericht',
|
||||
'yes' => 'Ja',
|
||||
'no' => 'Nee',
|
||||
'insert' => 'Voeg toe',
|
||||
'add_new' => 'Voeg toe',
|
||||
'update_available' => 'Een nieuwe update ({version}) is beschikbaar op <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Terug naar boven',
|
||||
'go_back' => 'Terug',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Cancel',
|
||||
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Gisteren om %k:%M',
|
||||
'other_day_format' => '%A om %k:%M',
|
||||
'never' => 'Nooit',
|
||||
'hours_ago' => '%d uren geleden',
|
||||
'an_hour_ago' => 'een uur geleden',
|
||||
'minutes_ago' => '%d minuten geleden',
|
||||
'a_minute_ago' => 'een minuut geleden',
|
||||
'seconds_ago' => '%d seconden geleden',
|
||||
'a_second_ago' => 'een seconde geleden',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Configuratie',
|
||||
'server' => 'Servers',
|
||||
'server_log' => 'Log',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => 'Update',
|
||||
'user' => 'Gebruikers',
|
||||
'help' => 'Help',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Gebruiker',
|
||||
'name' => 'Naam',
|
||||
'user_name' => 'Gebruikersnaam',
|
||||
'password' => 'Wachtwoord',
|
||||
'password_repeat' => 'Herhaal wachtwoord',
|
||||
'password_leave_blank' => 'Laat leeg om niet te wijzigen',
|
||||
'level' => 'Level',
|
||||
'level_10' => 'Beheerder',
|
||||
'level_20' => 'Gebruiker',
|
||||
'level_description' => '<b>Beheerders</b> hebben volledige toegang: ze kunnen servers en gebruiker beheren en de globale configuratie aanpassen.<br/><b>Gebruikers</b> kunnen alleen de servers bekijken en op fouten testen die aan hun zijn toegewezen.',
|
||||
'mobile' => 'Mobiel',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover is een dienst die het gemakkelijk maakt om real-time notificaties te ontvangen. Zie <a href="https://pushover.net/">hun website</a> voor meer informatie.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => 'Apparaat waar de berichten naar toe gaan. Laat leeg voor alle apparaten.',
|
||||
'delete_title' => 'Verwijder gebruiker',
|
||||
'delete_message' => 'Weet je zeker dat je deze gebruiker wilt verwijderen: \'%1\'?',
|
||||
'deleted' => 'Gebruiker verwijderd.',
|
||||
'updated' => 'Gebruiker gewijzigd.',
|
||||
'inserted' => 'Gebruiker toegevoegd.',
|
||||
'profile' => 'Profiel',
|
||||
'profile_updated' => 'Je profiel is bijgewerkt.',
|
||||
'error_user_name_bad_length' => 'Een gebruikersnaam moet tussen de 2 en 64 tekens zijn.',
|
||||
'error_user_name_invalid' => 'Een gebruikersnaam mag alleen alfabetische tekens (a-z, A-Z), cijfers (0-9) en underscores (_) bevatten.',
|
||||
'error_user_name_exists' => 'De opgegeven gebruikersnaam bestaat al.',
|
||||
'error_user_email_bad_length' => 'Een email adres moet tussen de 5 en 255 tekens zijn.',
|
||||
'error_user_email_invalid' => 'Het email adres is ongeldig.',
|
||||
'error_user_level_invalid' => 'Het gebruikersniveau is ongeldig.',
|
||||
'error_user_no_match' => 'De gebruiker kon niet worden toegevoegd aan de database.',
|
||||
'error_user_password_invalid' => 'Het ingevulde wachtwoord is ongeldig.',
|
||||
'error_user_password_no_match' => 'De ingevulde wachtwoorden komen niet overeen.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Log entries',
|
||||
'type' => 'Type',
|
||||
'status' => 'Status',
|
||||
'email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'No logs',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Server',
|
||||
'status' => 'Status',
|
||||
'label' => 'Label',
|
||||
'domain' => 'Domein/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Aantal seconden te wachten op een reactie van de server.',
|
||||
'port' => 'Poort',
|
||||
'type' => 'Type',
|
||||
'type_website' => 'Website',
|
||||
'type_service' => 'Service',
|
||||
'pattern' => 'Zoek voor tekst/regex',
|
||||
'pattern_description' => 'Als dit patroon niet gevonden wordt op de website, zal de server als offline gemarkeerd worden. Regular expressions zijn toegestaan.',
|
||||
'last_check' => 'Laatst gecontroleerd',
|
||||
'last_online' => 'Laatst online',
|
||||
'monitoring' => 'Monitoring',
|
||||
'no_monitoring' => 'No monitoring',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Stuur email',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Stuur SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Gebruikers',
|
||||
'delete_title' => 'Verwijder server',
|
||||
'delete_message' => 'Weet je zeker dat je deze server wilt verwijderen: \'%1\'?',
|
||||
'deleted' => 'Server verwijderd.',
|
||||
'updated' => 'Server gewijzigd.',
|
||||
'inserted' => 'Server toegevoegd.',
|
||||
'latency' => 'Response tijd',
|
||||
'latency_max' => 'Latency (maximum)',
|
||||
'latency_min' => 'Latency (minimum)',
|
||||
'latency_avg' => 'Latency (gemiddeld)',
|
||||
'uptime' => 'Uptime',
|
||||
'year' => 'Jaar',
|
||||
'month' => 'Maand',
|
||||
'week' => 'Week',
|
||||
'day' => 'Dag',
|
||||
'hour' => 'Uur',
|
||||
'warning_threshold' => 'Warning threshold',
|
||||
'warning_threshold_description' => 'Aantal mislukte pogingen voordat de server als offline gemarkeerd wordt.',
|
||||
'chart_last_week' => 'Afgelopen week',
|
||||
'chart_history' => 'Geschiedenis',
|
||||
// Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html
|
||||
'chart_day_format' => '%d-%m-%Y',
|
||||
'chart_long_date_format' => '%d-%m-%Y %H:%M:%S',
|
||||
'chart_short_date_format' => '%d-%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS notificaties zijn uitgeschakeld.',
|
||||
'warning_notifications_disabled_email' => 'Email notificaties zijn uitgeschakeld.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover notificaties zijn uitgeschakeld.',
|
||||
'error_server_no_match' => 'Server niet gevonden.',
|
||||
'error_server_label_bad_length' => 'Het label moet tussen de 1 en 255 karakters lang zijn.',
|
||||
'error_server_ip_bad_length' => 'Het domein / IP moet tussen de 1 en 255 karakters lang zijn.',
|
||||
'error_server_ip_bad_service' => 'Het IP adres is ongeldig.',
|
||||
'error_server_ip_bad_website' => 'De website URL is ongeldig.',
|
||||
'error_server_type_invalid' => 'Het geselecteerde server type is ongeldig.',
|
||||
'error_server_warning_threshold_invalid' => 'De warning threshold moet een numerieke waarde zijn groter dan 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Algemeen',
|
||||
'language' => 'Taal',
|
||||
'show_update' => 'Controleer wekelijks voor updates?',
|
||||
'email_status' => 'Sta email berichten toe?',
|
||||
'email_from_email' => 'Email van adres',
|
||||
'email_from_name' => 'Email van naam',
|
||||
'email_smtp' => 'SMTP gebruiken',
|
||||
'email_smtp_host' => 'SMTP host',
|
||||
'email_smtp_port' => 'SMTP poort',
|
||||
'email_smtp_username' => 'SMTP gebruikersnaam',
|
||||
'email_smtp_password' => 'SMTP wachtwoord',
|
||||
'email_smtp_noauth' => 'Laat leeg voor geen authenticatie',
|
||||
'sms_status' => 'Sta SMS berichten toe?',
|
||||
'sms_gateway' => 'Gateway voor het sturen van SMS',
|
||||
'sms_gateway_mosms' => 'Mosms',
|
||||
'sms_gateway_mollie' => 'Mollie',
|
||||
'sms_gateway_spryng' => 'Spryng',
|
||||
'sms_gateway_inetworx' => 'Inetworx',
|
||||
'sms_gateway_clickatell' => 'Clickatell',
|
||||
'sms_gateway_textmarketer' => 'Textmarketer',
|
||||
'sms_gateway_smsglobal' => 'SMSGlobal',
|
||||
'sms_gateway_smsit' => 'Smsit',
|
||||
'sms_gateway_username' => 'Gateway gebruikersnaam',
|
||||
'sms_gateway_password' => 'Gateway wachtwoord',
|
||||
'sms_from' => 'Telefoonnummer afzender',
|
||||
'pushover_status' => 'Sta Pushover berichten toe?',
|
||||
'pushover_description' => 'Pushover is een dienst die het gemakkelijk maakt om real-time notificaties te ontvangen. Zie <a href="https://pushover.net/">hun website</a> voor meer informatie.',
|
||||
'pushover_clone_app' => 'Klik hier om je Pushover app te maken',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Voordat je Pushover kunt gebruiken moet je een <a href="%1$s" target="_blank">App registreren</a> via hun website, en daarvan de App API Token hier invullen.',
|
||||
'alert_type' => 'Selecteer wanneer je een notificatie wilt',
|
||||
'alert_type_description' => '<b>Status change:</b> '.
|
||||
'Je ontvangt alleen bericht wanneer een server van status verandert. Dus van online -> offline of offline -> online.<br/>'.
|
||||
'<br /><b>Offline:</b> '.
|
||||
'Je ontvangt bericht wanneer een server offline gaat voor de *EERSTE KEER*. Bijvoorbeeld, '.
|
||||
'je cronjob draait iedere 15 min en je server gaat down om 01:00 en blijft offline tot 06:00. '.
|
||||
'Je krijgt 1 bericht om 01:00 en dat is het.<br/>'.
|
||||
'<br/><b>Altijd:</b> '.
|
||||
'Je krijgt een bericht elke keer dat het script draait en een website is down, ook al is de site al een paar uur offline.',
|
||||
'alert_type_status' => 'Status verandering',
|
||||
'alert_type_offline' => 'Offline',
|
||||
'alert_type_always' => 'Altijd',
|
||||
'log_status' => 'Log status',
|
||||
'log_status_description' => 'Als de log status aan staat, zal de monitor een log aanmaken elke keer dat hij door de notificatie instellingen komt.',
|
||||
'log_email' => 'Log emails verstuurd bij het script?',
|
||||
'log_sms' => 'Log sms berichten verstuurd bij het script?',
|
||||
'log_pushover' => 'Log Pushover berichten verstuurd bij het script?',
|
||||
'updated' => 'De configuratie is gewijzigd.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Email instellingen',
|
||||
'settings_sms' => 'SMS instellingen',
|
||||
'settings_pushover' => 'Pushover instellingen',
|
||||
'settings_notification' => 'Notificatie instellingen',
|
||||
'settings_log' => 'Log instellingen',
|
||||
'auto_refresh' => 'Auto-refresh',
|
||||
'auto_refresh_servers' =>
|
||||
'Auto-refresh servers pagina.<br/>'.
|
||||
'<span class="small">'.
|
||||
'Tijd in seconden, als de tijd 0 is wordt de pagina niet ververst.'.
|
||||
'</span>',
|
||||
'seconds' => 'seconden',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'Er zal een email verstuurd worden naar het email adres in je profiel.',
|
||||
'test_sms' => 'Er zal een SMS verstuurd worden naar het telefoonnummer in je profiel.',
|
||||
'test_pushover' => 'Er zal een Pushover notificatie verstuurd worden naar de user key/device in je profiel.',
|
||||
'send' => 'Verstuur',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Test bericht',
|
||||
'email_sent' => 'Email verzonden',
|
||||
'email_error' => 'Er is een fout opgetreden tijdens het verzenden',
|
||||
'sms_sent' => 'SMS verzonden',
|
||||
'sms_error' => 'Er is een fout opgetreden tijdens het verzenden',
|
||||
'sms_error_nomobile' => 'Kan test SMS niet verzenden: er is geen telefoonnummer ingevuld in je profiel.',
|
||||
'pushover_sent' => 'Pushover notificatie verzonden',
|
||||
'pushover_error' => 'De volgende fout is opgetreden bij het versturen van de Pushover notificatie: %s',
|
||||
'pushover_error_noapp' => 'Kan test notificatie niet verzenden: er is geen Pushover App API token gevonden in de algemene configuratie.',
|
||||
'pushover_error_nokey' => 'Kan test notificatie niet verzenden: er is geen Pushover key gevonden in je profiel.',
|
||||
'log_retention_period' => 'Log retentie periode',
|
||||
'log_retention_period_description' => 'Aantal dagen dat logs van notificaties en archieven van server uptime worden bewaard. Vul 0 in om log opruiming uit te zetten.',
|
||||
'log_retention_days' => 'dagen',
|
||||
),
|
||||
// for newlines in the email messages use <br/>
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Server %LABEL% is DOWN: ip=%IP%, poort=%PORT%. Fout=%ERROR%',
|
||||
'off_email_subject' => 'BELANGRIJK: Server %LABEL% is DOWN',
|
||||
'off_email_body' => "De server kon niet worden bereikt:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Poort: %PORT%<br/>Fout: %ERROR%<br/>Datum: %DATE%",
|
||||
'off_pushover_title' => 'Server %LABEL% is DOWN',
|
||||
'off_pushover_message' => "De server kon niet worden bereikt:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Poort: %PORT%<br/>Fout: %ERROR%<br/>Datum: %DATE%",
|
||||
'on_sms' => 'Server %LABEL% is RUNNING: ip=%IP%, poort=%PORT%',
|
||||
'on_email_subject' => 'BELANGRIJK: Server %LABEL% is RUNNING',
|
||||
'on_email_body' => "Server %LABEL% is weer online:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Poort: %PORT%<br/>Datum: %DATE%",
|
||||
'on_pushover_title' => 'Server %LABEL% is RUNNING',
|
||||
'on_pushover_message' => "Server %LABEL% is weer online:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Poort: %PORT%<br/>Datum: %DATE%",
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Welkom, %user_name%',
|
||||
'title_sign_in' => 'Log in',
|
||||
'title_forgot' => 'Wachtwoord vergeten?',
|
||||
'title_reset' => 'Herstel wachtwoord',
|
||||
'submit' => 'Sla op',
|
||||
'remember_me' => 'Onthoud mij',
|
||||
'login' => 'Login',
|
||||
'logout' => 'Uitloggen',
|
||||
'username' => 'Gebruikersnaam',
|
||||
'password' => 'Wachtwoord',
|
||||
'password_repeat' => 'Herhaal wachtwoord',
|
||||
'password_forgot' => 'Wachtwoord vergeten?',
|
||||
'password_reset' => 'Wachtwoord herstellen',
|
||||
'password_reset_email_subject' => 'Wijzig je wachtwoord voor PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Gebruik de onderstaande link om je wachtwoord te wijzigen. Let op, deze link verloopt na 1 uur.<br/><br/>%link%',
|
||||
'error_user_incorrect' => 'De opgegeven gebruikersnaam is onjuist.',
|
||||
'error_login_incorrect' => 'De informatie is niet juist.',
|
||||
'error_login_passwords_nomatch' => 'De ingevulde wachtwoorden komen niet overeen.',
|
||||
'error_reset_invalid_link' => 'De reset link is ongeldig.',
|
||||
'success_password_forgot' => 'Er is een mail verstuurd met informatie om je wachtwoord aan te passen.',
|
||||
'success_password_reset' => 'Je wachtwoord is aangepast. Je kunt nu inloggen.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Unauthorized',
|
||||
'401_unauthorized_description' => 'U heeft niet de juiste bevoegdheden om deze pagina te bekijken.',
|
||||
),
|
||||
'name' => 'Nederlands - Dutch',
|
||||
'locale' => array(
|
||||
'0' => 'nl_NL.UTF-8',
|
||||
'1' => 'nl_NL',
|
||||
'2' => 'dutch',
|
||||
),
|
||||
'locale_tag' => 'nl',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Installeren',
|
||||
'action' => 'Actie',
|
||||
'save' => 'Opslaan',
|
||||
'edit' => 'Wijzig',
|
||||
'delete' => 'Verwijder',
|
||||
'date' => 'Datum',
|
||||
'message' => 'Bericht',
|
||||
'yes' => 'Ja',
|
||||
'no' => 'Nee',
|
||||
'insert' => 'Voeg toe',
|
||||
'add_new' => 'Voeg toe',
|
||||
'update_available' => 'Een nieuwe update ({version}) is beschikbaar op <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Terug naar boven',
|
||||
'go_back' => 'Terug',
|
||||
'ok' => 'OK',
|
||||
'bad' => 'niet goed',
|
||||
'cancel' => 'Cancel',
|
||||
'none' => 'Geen',
|
||||
'activate' => 'Activeer',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Gisteren om %k:%M',
|
||||
'other_day_format' => '%A om %k:%M',
|
||||
'never' => 'Nooit',
|
||||
'hours_ago' => '%d uren geleden',
|
||||
'an_hour_ago' => 'een uur geleden',
|
||||
'minutes_ago' => '%d minuten geleden',
|
||||
'a_minute_ago' => 'een minuut geleden',
|
||||
'seconds_ago' => '%d seconden geleden',
|
||||
'a_second_ago' => 'een seconde geleden',
|
||||
'year' => 'jaar',
|
||||
'years' => 'jaren',
|
||||
'month' => 'maand',
|
||||
'months' => 'maanden',
|
||||
'day' => 'dag',
|
||||
'days' => 'dagen',
|
||||
'hour' => 'uur',
|
||||
'hours' => 'uren',
|
||||
'minute' => 'minuut',
|
||||
'minutes' => 'minuten',
|
||||
'second' => 'seconde',
|
||||
'seconds' => 'seconden',
|
||||
'millisecond' => 'milliseconde',
|
||||
'milliseconds' => 'milliseconden',
|
||||
'current' => 'huidig',
|
||||
'settings' => 'Instellingen',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Configuratie',
|
||||
'server' => 'Servers',
|
||||
'server_log' => 'Log',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => 'Update',
|
||||
'user' => 'Gebruikers',
|
||||
'help' => 'Help',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Gebruiker',
|
||||
'name' => 'Naam',
|
||||
'user_name' => 'Gebruikersnaam',
|
||||
'password' => 'Wachtwoord',
|
||||
'password_repeat' => 'Herhaal wachtwoord',
|
||||
'password_leave_blank' => 'Laat leeg om niet te wijzigen',
|
||||
'level' => 'Level',
|
||||
'level_10' => 'Beheerder',
|
||||
'level_20' => 'Gebruiker',
|
||||
'level_description' => '<b>Beheerders</b> hebben volledige toegang: ze kunnen servers en gebruiker beheren en
|
||||
de globale configuratie aanpassen.<br><b>Gebruikers</b> kunnen alleen de servers
|
||||
bekijken en op fouten testen die aan hun zijn toegewezen.',
|
||||
'mobile' => 'Mobiel',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover is een dienst die het gemakkelijk maakt om real-time notificaties te
|
||||
ontvangen. Zie <a href="https://pushover.net/" target="_blank">hun website</a> voor
|
||||
meer informatie.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => 'Apparaat waar de berichten naar toe gaan. Laat leeg voor alle apparaten.',
|
||||
'telegram' => 'Telegram',
|
||||
'telegram_chat_id' => 'Telegram chat id',
|
||||
'telegram_get_chat_id' => 'Klik hier om je chat id te vinden',
|
||||
'activate_telegram' => 'Activeer Telegram notificaties',
|
||||
'telegram_bot_username_found' => 'De Telegram bot is gevonden! <br><a href="%s" target="_blank"
|
||||
rel="noopener"><button class="btn btn-primary">Volgende stap</button></a>
|
||||
<br>Dit zal een chat met de bot openen. Klik vervolgens op start of typ
|
||||
/start.',
|
||||
'telegram_bot_error' => 'Er is een error voorgekomen tijdens de activatie van Telegram notificaties: %s',
|
||||
'delete_title' => 'Verwijder gebruiker',
|
||||
'delete_message' => 'Weet je zeker dat je deze gebruiker wilt verwijderen: \'%1\'?',
|
||||
'deleted' => 'Gebruiker verwijderd.',
|
||||
'updated' => 'Gebruiker gewijzigd.',
|
||||
'inserted' => 'Gebruiker toegevoegd.',
|
||||
'profile' => 'Profiel',
|
||||
'profile_updated' => 'Je profiel is bijgewerkt.',
|
||||
'error_user_name_bad_length' => 'Een gebruikersnaam moet tussen de 2 en 64 tekens zijn.',
|
||||
'error_user_name_invalid' => 'Een gebruikersnaam mag alleen alfabetische tekens (a-z, A-Z), cijfers (0-9),
|
||||
punten (.) en underscores (_) bevatten.',
|
||||
'error_user_name_exists' => 'De opgegeven gebruikersnaam bestaat al.',
|
||||
'error_user_email_bad_length' => 'Een email adres moet tussen de 5 en 255 tekens zijn.',
|
||||
'error_user_email_invalid' => 'Het email adres is ongeldig.',
|
||||
'error_user_level_invalid' => 'Het gebruikersniveau is ongeldig.',
|
||||
'error_user_no_match' => 'De gebruiker kon niet worden toegevoegd aan de database.',
|
||||
'error_user_password_invalid' => 'Het ingevulde wachtwoord is ongeldig.',
|
||||
'error_user_password_no_match' => 'De ingevulde wachtwoorden komen niet overeen.',
|
||||
'error_user_admin_cant_be_deleted' => 'Je kan de laatste administrator niet verwijderen.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Log entries',
|
||||
'type' => 'Type',
|
||||
'status' => 'Status',
|
||||
'email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'telegram' => 'Telegram',
|
||||
'no_logs' => 'Geen logs',
|
||||
'clear' => 'Logboek opschonen',
|
||||
'delete_title' => 'Logboek opschonen',
|
||||
'delete_message' => 'Weet je zeker dat je <b>alle</b> logs wilt opschonen?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Server',
|
||||
'status' => 'Status',
|
||||
'label' => 'Label',
|
||||
'domain' => 'Domein/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Aantal seconden te wachten op een reactie van de server.',
|
||||
'authentication_settings' => 'Authenticatie instellingen',
|
||||
'optional' => 'Optioneel',
|
||||
'website_username' => 'Gebruikersnaam',
|
||||
'website_password' => 'Wachtwoord',
|
||||
'port' => 'Poort',
|
||||
'custom_port' => 'Aangepaste poort',
|
||||
'popular_ports' => 'Populaire poorten',
|
||||
'post_field' => 'POST veld',
|
||||
'please_select' => 'Selecteer',
|
||||
'type' => 'Type',
|
||||
'type_website' => 'Website',
|
||||
'type_service' => 'Service',
|
||||
'type_ping' => 'Ping',
|
||||
'pattern' => 'Zoek voor tekst/regex',
|
||||
'pattern_description' => 'Als dit patroon niet gevonden wordt op de website, zal de server als offline
|
||||
gemarkeerd worden. Regular expressions zijn toegestaan.',
|
||||
'redirect_check' => 'Omleiden naar een ander domein is',
|
||||
'redirect_check_description' => 'Een omleiding naar een ander domein is meestal een slecht teken.',
|
||||
'allow_http_status' => 'Sta HTTP status code toe',
|
||||
'allow_http_status_description' => 'Markeer website als online. HTTP status code lager dan 400 worden
|
||||
standaard als online gemarkeerd. Scheiden met |.',
|
||||
'header_name' => 'Header naam',
|
||||
'header_value' => 'Header waarde',
|
||||
'header_name_description' => 'Hoofdlettergevoelig',
|
||||
'last_check' => 'Laatst gecontroleerd',
|
||||
'last_online' => 'Laatst online',
|
||||
'last_offline' => 'Laatst offline',
|
||||
'last_output' => 'Laatste succesvole uitvoer',
|
||||
'last_error' => 'Laatste error',
|
||||
'last_error_output' => 'Laatste error uitvoer',
|
||||
'output' => 'Uitvoer',
|
||||
'monitoring' => 'Monitoring',
|
||||
'no_monitoring' => 'Geen monitoring',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Stuur email',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Stuur SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'send_pushover' => 'Stuur Pushover notificatie',
|
||||
'telegram' => 'Telegram',
|
||||
'send_telegram' => 'Stuur Telegram notificatie',
|
||||
'users' => 'Gebruikers',
|
||||
'delete_title' => 'Verwijder server',
|
||||
'delete_message' => 'Weet je zeker dat je deze server wilt verwijderen: \'%1\'?',
|
||||
'deleted' => 'Server verwijderd.',
|
||||
'updated' => 'Server gewijzigd.',
|
||||
'inserted' => 'Server toegevoegd.',
|
||||
'latency' => 'Response tijd',
|
||||
'latency_max' => 'Latency (maximum)',
|
||||
'latency_min' => 'Latency (minimum)',
|
||||
'latency_avg' => 'Latency (gemiddeld)',
|
||||
'online' => 'online',
|
||||
'offline' => 'offline',
|
||||
'uptime' => 'Uptime',
|
||||
'year' => 'Jaar',
|
||||
'month' => 'Maand',
|
||||
'week' => 'Week',
|
||||
'day' => 'Dag',
|
||||
'hour' => 'Uur',
|
||||
'warning_threshold' => 'Waarschuwingsdrempel',
|
||||
'warning_threshold_description' => 'Aantal mislukte pogingen voordat de server als offline gemarkeerd wordt.',
|
||||
'chart_last_week' => 'Afgelopen week',
|
||||
'chart_history' => 'Geschiedenis',
|
||||
'chart_day_format' => '%d-%m-%Y',
|
||||
'chart_long_date_format' => '%d-%m-%Y %H:%M:%S',
|
||||
'chart_short_date_format' => '%d-%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS notificaties zijn uitgeschakeld.',
|
||||
'warning_notifications_disabled_email' => 'Email notificaties zijn uitgeschakeld.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover notificaties zijn uitgeschakeld.',
|
||||
'warning_notifications_disabled_telegram' => 'Telegram notificaties zijn uitgeschakeld.',
|
||||
'error_server_no_match' => 'Server niet gevonden.',
|
||||
'error_server_label_bad_length' => 'Het label moet tussen de 1 en 255 karakters lang zijn.',
|
||||
'error_server_ip_bad_length' => 'Het domein / IP moet tussen de 1 en 255 karakters lang zijn.',
|
||||
'error_server_ip_bad_service' => 'Het IP adres is ongeldig.',
|
||||
'error_server_ip_bad_website' => 'De website URL is ongeldig.',
|
||||
'error_server_type_invalid' => 'Het geselecteerde server type is ongeldig.',
|
||||
'error_server_warning_threshold_invalid' => 'De warning threshold moet een numerieke waarde zijn groter dan 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Algemeen',
|
||||
'site_title' => 'Website titel',
|
||||
'language' => 'Taal',
|
||||
'show_update' => 'Controleer wekelijks voor updates?',
|
||||
'email_status' => 'Sta email berichten toe?',
|
||||
'email_add_url' => 'Voeg url van de monitor toe aan de email',
|
||||
'email_from_email' => 'Email van adres',
|
||||
'email_from_name' => 'Email van naam',
|
||||
'email_smtp' => 'SMTP gebruiken',
|
||||
'email_smtp_host' => 'SMTP host',
|
||||
'email_smtp_port' => 'SMTP poort',
|
||||
'email_smtp_security' => 'SMTP beveiliging',
|
||||
'email_smtp_security_none' => 'Geen',
|
||||
'email_smtp_username' => 'SMTP gebruikersnaam',
|
||||
'email_smtp_password' => 'SMTP wachtwoord',
|
||||
'email_smtp_noauth' => 'Laat leeg voor geen authenticatie',
|
||||
'sms_status' => 'Sta SMS berichten toe?',
|
||||
'sms_gateway' => 'Gateway voor het sturen van SMS',
|
||||
'sms_gateway_username' => 'Gateway gebruikersnaam',
|
||||
'sms_gateway_password' => 'Gateway wachtwoord',
|
||||
'sms_from' => 'Telefoonnummer afzender',
|
||||
'pushover_status' => 'Sta Pushover berichten toe?',
|
||||
'pushover_description' => 'Pushover is een dienst die het gemakkelijk maakt om real-time notificaties te
|
||||
ontvangen. Zie <a href="https://pushover.net/" target="_blank">hun website</a> voor
|
||||
meer informatie.',
|
||||
'pushover_clone_app' => 'Klik hier om je Pushover app te maken',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Voordat je Pushover kunt gebruiken moet je een <a href="%1$s"
|
||||
target="_blank" rel="noopener">App registreren</a> via hun website, en
|
||||
daarvan de App API Token hier invullen.',
|
||||
'telegram_status' => 'Sta Telegram berichten toe?',
|
||||
'telegram_add_url' => 'voeg url van de monitor toe aan het bericht',
|
||||
'telegram_api_token' => 'Telegram API Token',
|
||||
'alert_type' => 'Selecteer wanneer je een notificatie wilt',
|
||||
'alert_type_description' => '<b>Status verandert:</b> Je ontvangt alleen bericht wanneer een server van status
|
||||
verandert. Dus van online -> offline of offline -> online.<br><br
|
||||
/><b>Offline:</b> Je ontvangt bericht wanneer een server offline gaat voor de
|
||||
*EERSTE KEER*. Bijvoorbeeld, je cronjob draait iedere 15 min en je server gaat
|
||||
down om 01:00 en blijft offline tot 06:00. Je krijgt 1 bericht om 01:00 en dat is
|
||||
het.<br><br><b>Altijd:</b> Je krijgt een bericht elke keer dat het script draait
|
||||
en een website is down, ook al is de site al een paar uur offline.',
|
||||
'alert_type_status' => 'Status verandering',
|
||||
'alert_type_offline' => 'Offline',
|
||||
'alert_type_always' => 'Altijd',
|
||||
'combine_notifications' => 'Combineer notificaties',
|
||||
'alert_proxy_url' => 'Formaat: host:poort',
|
||||
'log_status' => 'Log status',
|
||||
'log_status_description' => 'Als de log status aan staat, zal de monitor een log aanmaken elke keer dat hij
|
||||
door de notificatie instellingen komt.',
|
||||
'log_email' => 'Log emails verstuurd bij het script?',
|
||||
'log_sms' => 'Log sms berichten verstuurd bij het script?',
|
||||
'log_pushover' => 'Log Pushover berichten verstuurd bij het script?',
|
||||
'log_telegram' => 'Log Telegram berichten verstuurd bij het script?',
|
||||
'updated' => 'De configuratie is gewijzigd.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'tab_telegram' => 'Telegram',
|
||||
'settings_email' => 'Email instellingen',
|
||||
'settings_sms' => 'SMS instellingen',
|
||||
'settings_pushover' => 'Pushover instellingen',
|
||||
'settings_telegram' => 'Telegram instellingen',
|
||||
'settings_notification' => 'Notificatie instellingen',
|
||||
'settings_log' => 'Log instellingen',
|
||||
'settings_proxy' => 'Proxy instellingen',
|
||||
'auto_refresh' => 'Herlaad automatisch',
|
||||
'auto_refresh_description' => 'Auto-herladen servers pagina.<br><span class="small">Tijd in seconden, als de
|
||||
tijd 0 is wordt de pagina niet ververst.</span>',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'Er zal een email verstuurd worden naar het email adres in je profiel.',
|
||||
'test_sms' => 'Er zal een SMS verstuurd worden naar het telefoonnummer in je profiel.',
|
||||
'test_pushover' => 'Er zal een Pushover notificatie verstuurd worden naar de user key/device in je profiel.',
|
||||
'send' => 'Verstuur',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Test bericht',
|
||||
'email_sent' => 'Email verzonden',
|
||||
'email_error' => 'Er is een fout opgetreden tijdens het verzenden',
|
||||
'sms_sent' => 'SMS verzonden',
|
||||
'sms_error' => 'Er is een fout opgetreden tijdens het verzenden. %s',
|
||||
'sms_error_nomobile' => 'Kan test SMS niet verzenden: er is geen telefoonnummer ingevuld in je profiel.',
|
||||
'pushover_sent' => 'Pushover notificatie verzonden',
|
||||
'pushover_error' => 'De volgende fout is opgetreden bij het versturen van de Pushover notificatie: %s',
|
||||
'pushover_error_noapp' => 'Kan test notificatie niet verzenden: er is geen Pushover App API token gevonden in
|
||||
de algemene configuratie.',
|
||||
'pushover_error_nokey' => 'Kan test notificatie niet verzenden: er is geen Pushover key gevonden in je
|
||||
profiel.',
|
||||
'telegram_sent' => 'Telegram notificatie verstuurd',
|
||||
'telegram_error' => 'Er is een error voorgekomen tijdens het versturen van de Telegram notificatie: %s',
|
||||
'telegram_error_notoken' => 'Niet mogelijk on test notificatie te versturen: Telegram API token niet gevonden
|
||||
in globale instellingen.',
|
||||
'telegram_error_noid' => 'Niet mogelijk on test notificatie te versturen: chat id niet gevonden op profiel.',
|
||||
'log_retention_period' => 'Log retentie periode',
|
||||
'log_retention_period_description' => 'Aantal dagen dat logs van notificaties en archieven van server uptime
|
||||
worden bewaard. Vul 0 in om log opruiming uit te zetten.',
|
||||
'log_retention_days' => 'dagen',
|
||||
'user_agent' => 'User Agent',
|
||||
'user_agent_key_note' => 'Aangepaste user agent wordt door de monitor gebruikt bij de communicatie met externe
|
||||
services.',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Server %LABEL% is DOWN: ip=%IP%, poort=%PORT%. Fout=%ERROR%',
|
||||
'off_email_subject' => 'BELANGRIJK: Server %LABEL% is DOWN',
|
||||
'off_email_body' => 'De server kon niet worden bereikt:<br><br>Server: %LABEL%<br>IP: %IP%<br>Poort:
|
||||
%PORT%<br>Fout: %ERROR%<br>Datum: %DATE%',
|
||||
'off_pushover_title' => 'Server %LABEL% is DOWN',
|
||||
'off_pushover_message' => 'De server kon niet worden bereikt:<br><br>Server: %LABEL%<br>IP: %IP%<br>Poort:
|
||||
%PORT%<br>Fout: %ERROR%<br>Datum: %DATE%',
|
||||
'off_telegram_message' => 'De server kon niet worden bereikt:<br><br>Server: %LABEL%<br>IP: %IP%<br>Poort:
|
||||
%PORT%<br>Fout: %ERROR%<br>Datum: %DATE%',
|
||||
'on_sms' => 'Server %LABEL% is RUNNING: ip=%IP%, poort=%PORT%, tijd offline=%LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'BELANGRIJK: Server %LABEL% is RUNNING',
|
||||
'on_email_body' => 'Server %LABEL% is na %LAST_OFFLINE_DURATION% weer online:<br><br>Server: %LABEL%<br>IP:
|
||||
%IP%<br>Poort: %PORT%<br>Datum: %DATE%',
|
||||
'on_pushover_title' => 'Server %LABEL% is RUNNING',
|
||||
'on_pushover_message' => 'Server %LABEL% is na %LAST_OFFLINE_DURATION% weer online:<br><br>Server:
|
||||
%LABEL%<br>IP: %IP%<br>Poort: %PORT%<br>Datum: %DATE%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Welkom, %user_name%',
|
||||
'title_sign_in' => 'Log in',
|
||||
'title_forgot' => 'Wachtwoord vergeten?',
|
||||
'title_reset' => 'Herstel wachtwoord',
|
||||
'submit' => 'Sla op',
|
||||
'remember_me' => 'Onthoud mij',
|
||||
'login' => 'Login',
|
||||
'logout' => 'Uitloggen',
|
||||
'username' => 'Gebruikersnaam',
|
||||
'password' => 'Wachtwoord',
|
||||
'password_repeat' => 'Herhaal wachtwoord',
|
||||
'password_forgot' => 'Wachtwoord vergeten?',
|
||||
'password_reset' => 'Wachtwoord herstellen',
|
||||
'password_reset_email_subject' => 'Wijzig je wachtwoord voor PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Gebruik de onderstaande link om je wachtwoord te wijzigen. Let op, deze link
|
||||
verloopt na 1 uur.<br><br>%link%',
|
||||
'error_user_incorrect' => 'De opgegeven gebruikersnaam is onjuist.',
|
||||
'error_login_incorrect' => 'De informatie is niet juist.',
|
||||
'error_login_passwords_nomatch' => 'De ingevulde wachtwoorden komen niet overeen.',
|
||||
'error_reset_invalid_link' => 'De reset link is ongeldig.',
|
||||
'success_password_forgot' => 'Er is een mail verstuurd met informatie om je wachtwoord aan te passen.',
|
||||
'success_password_reset' => 'Je wachtwoord is aangepast. Je kunt nu inloggen.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Unauthorized',
|
||||
'401_unauthorized_description' => 'Je hebt niet de juiste bevoegdheden om deze pagina te bekijken.',
|
||||
),
|
||||
);
|
||||
|
|
|
@ -0,0 +1,409 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Daniel S. Billing <daniel@infihex.com>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Norsk - Norwegian',
|
||||
'locale' => array(
|
||||
'0' => 'no_NB.UTF-8',
|
||||
'1' => 'no_NB',
|
||||
'2' => 'norwegian',
|
||||
'3' => 'norwegian-no',
|
||||
),
|
||||
'locale_tag' => 'no',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Overvåking',
|
||||
'install' => 'Installer',
|
||||
'action' => 'Handling',
|
||||
'save' => 'Lagre',
|
||||
'edit' => 'Endre',
|
||||
'delete' => 'Slett',
|
||||
'date' => 'Dato',
|
||||
'message' => 'Melding',
|
||||
'yes' => 'Ja',
|
||||
'no' => 'Nei',
|
||||
'insert' => 'Sett inn',
|
||||
'add_new' => 'Legg til ny',
|
||||
'update_available' => 'En ny versjon ({versjon}) er tilgjengelig på <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Tilbake til toppen',
|
||||
'go_back' => 'Gå tilbake',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Avbryt',
|
||||
'activate' => 'Aktiver',
|
||||
'short_day_format' => '%e. %B',
|
||||
'long_day_format' => '%e. %B, %Y',
|
||||
'yesterday_format' => 'Yesterday at %H:%M',
|
||||
'other_day_format' => '%A at %H:%M',
|
||||
'never' => 'Aldri',
|
||||
'hours_ago' => '%d timer siden',
|
||||
'an_hour_ago' => 'omtrent et time siden',
|
||||
'minutes_ago' => '%d minutter siden',
|
||||
'a_minute_ago' => 'omtrent et minutt siden',
|
||||
'seconds_ago' => '%d sekunder siden',
|
||||
'a_second_ago' => 'et sekund siden',
|
||||
'year' => 'år',
|
||||
'years' => 'år',
|
||||
'month' => 'måned',
|
||||
'months' => 'måneder',
|
||||
'day' => 'dag',
|
||||
'days' => 'dager',
|
||||
'hour' => 'time',
|
||||
'hours' => 'timer',
|
||||
'minute' => 'minutt',
|
||||
'minutes' => 'minutter',
|
||||
'second' => 'sekund',
|
||||
'seconds' => 'sekunder',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Konfig',
|
||||
'server' => 'Servere',
|
||||
'server_log' => 'Logg',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => 'Oppdater',
|
||||
'user' => 'Brukere',
|
||||
'help' => 'Hjelp',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Bruker',
|
||||
'name' => 'Navn',
|
||||
'user_name' => 'Brukernavn',
|
||||
'password' => 'Passord',
|
||||
'password_repeat' => 'Gjenta passord',
|
||||
'password_leave_blank' => 'La være tom for å forbli uendret',
|
||||
'level' => 'Level',
|
||||
'level_10' => 'Administrator',
|
||||
'level_20' => 'Bruker',
|
||||
'level_description' => '<b>Administratorer</b> har full tilgang: de kan administrere servere, brukere og
|
||||
redigere den globale konfigurasjonen.<br><b>Brukere</b> kan bare vise og kjøre
|
||||
oppdatering for serverne som er tildelt dem.',
|
||||
'mobile' => 'Mobil',
|
||||
'email' => 'E-post',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover er en tjeneste som gjør det enkelt å få meldinger i sanntid. Se <a
|
||||
href="https://pushover.net/" target="_blank">deres nettside</a> for mer info.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => 'Enhetsnavn for å sende meldingen til. La det være tomt for å sende det
|
||||
til alle enheter.',
|
||||
'telegram' => 'Telegram',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> er en chat-app som
|
||||
gjør det enkelt å få meldinger i sanntid. Gå til <a
|
||||
href="http://docs.phpservermonitor.org/" target="_blank">dokumentasjonen</a> for
|
||||
mer informasjon og en installasjonsguide. ',
|
||||
'telegram_chat_id' => 'Telegram chat-ID',
|
||||
'telegram_chat_id_description' => 'Meldingen vil bli sendt til tilhørende chat.',
|
||||
'telegram_get_chat_id' => 'Klikk her for å få chat-ID',
|
||||
'activate_telegram' => 'Aktiver Telegram notifications',
|
||||
'activate_telegram_description' => 'Tillat Telegram varsler som skal sendes til det angitte chat-IDet. Uten
|
||||
denne tillatelsen tillater Telegram oss ikke å sende varsler til deg.',
|
||||
'telegram_bot_username_found' => 'The bot was found!<br><a href="%s" target="_blank" rel="noopener"><button
|
||||
class="btn btn-primary">Neste steg</button></a> <br>Dette åpner en chat med
|
||||
bot. Her må du trykke på start ved å skrive: /start.',
|
||||
'telegram_bot_username_error_token' => '401 - Unauthorized. Pass på at API-token er gyldig.',
|
||||
'telegram_bot_error' => 'Det har oppstått en feil under aktivering av Telegram varsling: %s',
|
||||
'delete_title' => 'Slett bruker',
|
||||
'delete_message' => 'Er du sikker på at du vil slette brukeren \'%1\'?',
|
||||
'deleted' => 'Bruker slettet.',
|
||||
'updated' => 'Bruker oppdatert.',
|
||||
'inserted' => 'Bruker lagt til.',
|
||||
'profile' => 'Profil',
|
||||
'profile_updated' => 'Din profil har blitt oppdatert.',
|
||||
'error_user_name_bad_length' => 'Brukernavn må være mellom 2 og 64 tegn.',
|
||||
'error_user_name_invalid' => 'Brukernavnet kan bare inneholde alfabetiske tegn (a-z, A-Z), sifre (0-9),
|
||||
punktum (.) and understrek (_).',
|
||||
'error_user_name_exists' => 'Det oppgitte brukernavnet eksisterer allerede i databasen.',
|
||||
'error_user_email_bad_length' => 'E-postadresser må være mellom 5 og 255 tegn.',
|
||||
'error_user_email_invalid' => 'E-postadressen er ugyldig.',
|
||||
'error_user_level_invalid' => 'Det oppgitte brukernivået er ugyldig.',
|
||||
'error_user_no_match' => 'Brukeren kunne ikke bli funnet i databasen.',
|
||||
'error_user_password_invalid' => 'Det oppgitte passordet er ugyldig.',
|
||||
'error_user_password_no_match' => 'De oppgitte passordene stemmer ikke overens.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Logg oppføringer',
|
||||
'type' => 'Type',
|
||||
'status' => 'Status',
|
||||
'email' => 'E-post',
|
||||
'sms' => 'Tekstmelding',
|
||||
'pushover' => 'Pushover',
|
||||
'telegram' => 'Telegram',
|
||||
'no_logs' => 'Ingen logger',
|
||||
'clear' => 'Tøm logg',
|
||||
'delete_title' => 'Slett logg',
|
||||
'delete_message' => 'Er du sikker på at du vil slette <b>alle</ b> logger?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Server',
|
||||
'status' => 'Status',
|
||||
'label' => 'Label',
|
||||
'domain' => 'Domene/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Antall sekunder å vente på at serveren skal svare.',
|
||||
'authentication_settings' => 'Autentiseringsinnstillinger',
|
||||
'optional' => 'ValgfrittF',
|
||||
'website_username' => 'Brukernavn',
|
||||
'website_username_description' => 'Brukernavn for å få tilgang til nettstedet. (Kun Apache-godkjenning
|
||||
støttes.)',
|
||||
'website_password' => 'Password',
|
||||
'website_password_description' => 'Passord for å få tilgang til nettstedet. Passordet er kryptert i
|
||||
databasen.',
|
||||
'fieldset_monitoring' => 'Overvåkning',
|
||||
'fieldset_permissions' => 'Tilganger',
|
||||
'port' => 'Port',
|
||||
'custom_port' => 'Tilpasset Port',
|
||||
'popular_ports' => 'Populære Ports',
|
||||
'please_select' => 'Vennligst vent',
|
||||
'type' => 'Type',
|
||||
'type_website' => 'Nettside',
|
||||
'type_service' => 'Tjeneste',
|
||||
'type_ping' => 'Ping',
|
||||
'pattern' => 'Søke streng/mønster',
|
||||
'pattern_description' => 'Hvis dette mønsteret ikke er funnet på nettstedet, blir serveren merket
|
||||
online/offline. Vanlige uttrykk er tillatt.',
|
||||
'pattern_online' => 'Mønster indikerer at nettstedet er',
|
||||
'pattern_online_description' => 'Online: Hvis dette mønsteret blir funnet på nettstedet, er serverens merke
|
||||
online. Frakoblet: Hvis dette mønsteret ikke blir funnet på nettstedet,
|
||||
flagges serveren offline.',
|
||||
'header_name' => 'Overskriftnavn',
|
||||
'header_value' => 'Overskriftsverdi',
|
||||
'header_name_description' => 'Versalsensitivt.',
|
||||
'header_value_description' => 'Vanlige uttrykk er tillatt.',
|
||||
'last_check' => 'Siste sjekk',
|
||||
'last_online' => 'Sist online',
|
||||
'last_offline' => 'Sist offline',
|
||||
'monitoring' => 'Overvåking',
|
||||
'no_monitoring' => 'Ingen overvåking',
|
||||
'email' => 'E-post',
|
||||
'send_email' => 'Send e-post',
|
||||
'sms' => 'Tekstmelding',
|
||||
'send_sms' => 'Send tekstmelding',
|
||||
'pushover' => 'Pushover',
|
||||
'send_pushover' => 'Send Pushover melding',
|
||||
'telegram' => 'Telegram',
|
||||
'send_telegram' => 'Send Telegram melding',
|
||||
'users' => 'Brukere',
|
||||
'delete_title' => 'Slett server',
|
||||
'delete_message' => 'Er du sikker på at du vil slette serveren \'%1\'?',
|
||||
'deleted' => 'Server slettet.',
|
||||
'updated' => 'Server oppdatert.',
|
||||
'inserted' => 'Server lagt til.',
|
||||
'latency' => 'Ventetid',
|
||||
'latency_max' => 'Ventetid (maximum)',
|
||||
'latency_min' => 'Ventetid (minimum)',
|
||||
'latency_avg' => 'Ventetid (gjennomsnitt)',
|
||||
'online' => 'online',
|
||||
'offline' => 'offline',
|
||||
'uptime' => 'Oppetid',
|
||||
'year' => 'År',
|
||||
'month' => 'Måned',
|
||||
'week' => 'Uke',
|
||||
'day' => 'Dag',
|
||||
'hour' => 'Time',
|
||||
'warning_threshold' => 'Advarselsgrense',
|
||||
'warning_threshold_description' => 'Antall mislykkede sjekker kreves før den er merket frakoblet.',
|
||||
'chart_last_week' => 'Forrige uke',
|
||||
'chart_history' => 'Historie',
|
||||
'chart_day_format' => '%d-%m-%Y',
|
||||
'chart_long_date_format' => '%d-%m-%Y %H:%M:%S',
|
||||
'chart_short_date_format' => '%d/%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'Tekstmelding varsling er deaktivert.',
|
||||
'warning_notifications_disabled_email' => 'E-post varsling er deaktivert.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover varsling er deaktivert.',
|
||||
'warning_notifications_disabled_telegram' => 'Telegram varsling er deaktivert.',
|
||||
'error_server_no_match' => 'Server ikke funnet.',
|
||||
'error_server_label_bad_length' => 'Etiketten må være mellom 1 og 255 tegn.',
|
||||
'error_server_ip_bad_length' => 'Domenet / IP må være mellom 1 og 255 tegn.',
|
||||
'error_server_ip_bad_service' => 'IP-adressen er ikke gyldig.',
|
||||
'error_server_ip_bad_website' => 'Nettstedets URL er ikke gyldig.',
|
||||
'error_server_type_invalid' => 'Den valgte servertypen er ugyldig.',
|
||||
'error_server_warning_threshold_invalid' => 'Advarselsgrensen må være et gyldig heltall større enn 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'General',
|
||||
'language' => 'Språk',
|
||||
'show_update' => 'Se etter oppdateringer?',
|
||||
'password_encrypt_key' => 'Krypteringsnøkkelpassordet',
|
||||
'password_encrypt_key_note' => 'Denne nøkkelen brukes til å kryptere passord som er lagret på servere for
|
||||
tilgang til nettsteder. Hvis nøkkelen endres, er det lagrede passordet
|
||||
ugyldig!',
|
||||
'proxy' => 'Aktiver proxy',
|
||||
'proxy_url' => 'Proxy URL',
|
||||
'proxy_user' => 'Proxy brukernavn',
|
||||
'proxy_password' => 'Proxy passord',
|
||||
'email_status' => 'Tillat sending av e-post',
|
||||
'email_from_email' => 'E-post fra adresse',
|
||||
'email_from_name' => 'E-post from navn',
|
||||
'email_smtp' => 'Aktiver SMTP',
|
||||
'email_smtp_host' => 'SMTP-vert',
|
||||
'email_smtp_port' => 'SMTP-port',
|
||||
'email_smtp_security' => 'SMTP-sikkerhet',
|
||||
'email_smtp_security_none' => 'Ingen',
|
||||
'email_smtp_username' => 'SMTP brukernavn',
|
||||
'email_smtp_password' => 'SMTP passord',
|
||||
'email_smtp_noauth' => 'La være tom for ingen godkjenning',
|
||||
'sms_status' => 'Tillat sending av tekstmeldinger',
|
||||
'sms_gateway' => 'Gateway for bruk for sending av meldinger',
|
||||
'sms_gateway_username' => 'Gateway brukernavn',
|
||||
'sms_gateway_password' => 'Gateway passord',
|
||||
'sms_from' => 'Avsenderens telefonnummer',
|
||||
'pushover_status' => 'Tillat sending av Pushover-meldinger',
|
||||
'pushover_description' => 'Pushover er en tjeneste som gjør det enkelt å få meldinger i sanntid. Se <a
|
||||
href="https://pushover.net/" target="_blank">deres nettside</a> for mer info.',
|
||||
'pushover_clone_app' => 'Klikk her for å lage din Pushover-app',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Før du kan bruke Pushover, må du <a href="%1$s" target="_blank"
|
||||
rel="noopener"> registrere en app </a> på deres nettside og angi App API
|
||||
Token her.',
|
||||
'telegram_status' => 'Tillat sending av Telegram-meldinger',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> er en chat-app som
|
||||
gjør det enkelt å få meldinger i sanntid. Gå til <a
|
||||
href="http://docs.phpservermonitor.org/" target="_blank">dokumentasjonen</a> for
|
||||
mer informasjon og en installasjonsveiledning.',
|
||||
'telegram_api_token' => 'Telegram API Token',
|
||||
'telegram_api_token_description' => 'Før du kan bruke Telegram, må du få en API-token. Gå til <a
|
||||
href="http://docs.phpservermonitor.org/"
|
||||
target="_blank">dokumentasjonen</a> for å få hjelp.',
|
||||
'alert_type' => 'Velg når du vil bli varslet.',
|
||||
'alert_type_description' => '<b>Statusendring:</b> Du vil motta et varsel når en server har endret status.
|
||||
Så fra online -> offline eller offline -> online.<br><br /><b>Offline:</b> Du
|
||||
vil motta et varsel når en server går offline for *FØRSTE GANG BARE*. For
|
||||
eksempel,din cronjob er hver 15 minutter og serveren din går ned klokken 01:00
|
||||
og holder seg ned til 06:00. Du får 1 melding klokken 01:00 og det er
|
||||
det.<br><br><b>Alltid:</b> Du vil motta et varsel hver gang scriptet kjører, og
|
||||
et nettsted er nede, selv om nettstedet har vært offline i flere timer.',
|
||||
'alert_type_status' => 'Statusendring',
|
||||
'alert_type_offline' => 'Offline',
|
||||
'alert_type_always' => 'Alltid',
|
||||
'alert_proxy' => 'Selv om aktivert, blir proxy aldri brukt for tjenester',
|
||||
'alert_proxy_url' => 'Format: Vert:Port',
|
||||
'log_status' => 'Logg status',
|
||||
'log_status_description' => 'Hvis loggstatus er satt til SANT, logger monitoren på hendelsen når
|
||||
meldingsinnstillingene er bestått.',
|
||||
'log_email' => 'Logg e-post sendt av skriptet',
|
||||
'log_sms' => 'Logg tekstmeldinger sendt av skriptet',
|
||||
'log_pushover' => 'Logg pushover-meldinger sendt av skriptet',
|
||||
'log_telegram' => 'Logg Telegram-meldinger sendt av skriptet',
|
||||
'updated' => 'Konfigurasjonen er oppdatert.',
|
||||
'tab_email' => 'E-post',
|
||||
'tab_sms' => 'Tekstmelding',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'tab_telegram' => 'Telegram',
|
||||
'settings_email' => 'E-post innstillinger',
|
||||
'settings_sms' => 'Tekstmelding innstillinger',
|
||||
'settings_pushover' => 'Pushover innstillinger',
|
||||
'settings_telegram' => 'Telegram innstillinger',
|
||||
'settings_notification' => 'Varsling innstillinger',
|
||||
'settings_log' => 'Logg innstillinger',
|
||||
'settings_proxy' => 'Proxy innstillinger',
|
||||
'auto_refresh' => 'Auto-refresh',
|
||||
'auto_refresh_description' => 'Auto-refresh server side.<br><span class="small">Tid i sekunder, hvis 0 siden
|
||||
ikke blir oppdatert.</span>',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'En e-post vil bli sendt til adressen spesifisert i brukerprofilen din.',
|
||||
'test_sms' => 'En tekstmelding vil bli sendt til telefonnummeret som er angitt i brukerprofilen din.',
|
||||
'test_pushover' => 'En Pushover varsling vil bli sendt til brukernøkkelen/enheten som er angitt i
|
||||
brukerprofilen din.',
|
||||
'test_telegram' => 'Et telegramvarsling vil bli sendt til chat-ID-en spesifisert i brukerprofilen din.',
|
||||
'send' => 'Send',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Test melding',
|
||||
'email_sent' => 'E-post sent',
|
||||
'email_error' => 'Feil ved sending av e-post',
|
||||
'sms_sent' => 'Tekstmelding sendt',
|
||||
'sms_error' => 'Det har oppstått en feil under sending av tekstmelding: %s',
|
||||
'sms_error_nomobile' => 'Kan ikke sende test tekstmelding: ingen gyldig telefonnummer funnet i profilen din.',
|
||||
'pushover_sent' => 'Pushover varsling sendt',
|
||||
'pushover_error' => 'Det har oppstått en feil under sending av Pushover-varslingen: %s',
|
||||
'pushover_error_noapp' => 'Kan ikke sende testvarsling: Ingen Pushover App API-token funnet i den globale
|
||||
konfigurasjonen.',
|
||||
'pushover_error_nokey' => 'Kan ikke sende testvarsling: Ingen Pushover-nøkkel funnet i profilen din.',
|
||||
'telegram_sent' => 'Telegram varsling sent',
|
||||
'telegram_error' => 'Det har oppstått en feil under sending av telegrammeldingen: %s',
|
||||
'telegram_error_notoken' => 'Kan ikke sende testvarsling: Ingen Telegram API-token funnet i den globale
|
||||
konfigurasjonen.',
|
||||
'telegram_error_noid' => 'Kan ikke sende testvarsling: Ingen chat-ID funnet i profilen din.',
|
||||
'log_retention_period' => 'Oppbevaringsperiode for logg',
|
||||
'log_retention_period_description' => 'Antall dager for å holde logger over varsler og arkiver av
|
||||
serveroppetid. Skriv 0 for å deaktivere loggopprydding.',
|
||||
'log_retention_days' => 'dager',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Serveren \'%LABEL%\' er NEDE: ip=%IP%, port=%PORT%. Feil=%ERROR%',
|
||||
'off_email_subject' => 'VIKTIG: Serveren \'%LABEL%\' er NEDE',
|
||||
'off_email_body' => 'Kunne ikke koble til følgende server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Feil: %ERROR%<br>Dato: %DATE%',
|
||||
'off_pushover_title' => 'Server \'%LABEL%\' er NEDE',
|
||||
'off_pushover_message' => 'Kunne ikke koble til følgende server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Feil: %ERROR%<br>Dato: %DATE%',
|
||||
'off_telegram_message' => 'Kunne ikke koble til følgende server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Feil: %ERROR%<br>Dato: %DATE%',
|
||||
'on_sms' => 'Server \'%LABEL%\' er OPPE igjen: ip=%IP%, port=%PORT%, det var nede i %LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'VIKTIG: Server \'%LABEL%\' er OPPE',
|
||||
'on_email_body' => 'Server \'%LABEL%\' er oppe igjen, det var nede i %LAST_OFFLINE_DURATION%:<br><br>Server:
|
||||
%LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Dato: %DATE%',
|
||||
'on_pushover_title' => 'Server \'%LABEL%\' er OPPE',
|
||||
'on_pushover_message' => 'Server \'%LABEL%\' er oppe igjen, det var nede i
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Dato:
|
||||
%DATE%',
|
||||
'on_telegram_message' => 'Server \'%LABEL%\' er oppe igjen, det var nede i
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Dato:
|
||||
%DATE%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Velkommen, %user_name%',
|
||||
'title_sign_in' => 'Vennligst logg inn',
|
||||
'title_forgot' => 'Glemt passordet?',
|
||||
'title_reset' => 'Tilbakestill passordet ditt',
|
||||
'submit' => 'Send inn',
|
||||
'remember_me' => 'Husk meg',
|
||||
'login' => 'Logg inn',
|
||||
'logout' => 'Logg ut',
|
||||
'username' => 'Brukernavn',
|
||||
'password' => 'Passord',
|
||||
'password_repeat' => 'Gjenta passord',
|
||||
'password_forgot' => 'Glemt passordet?',
|
||||
'password_reset' => 'Tilbakestille passord',
|
||||
'password_reset_email_subject' => 'Tilbakestill passordet ditt for PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Vennligst bruk følgende link for å tilbakestille passordet ditt. Vær
|
||||
oppmerksom på at det utløper om 1 time.<br><br>%link%',
|
||||
'error_user_incorrect' => 'Det oppgitte brukernavnet ble ikke funnet.',
|
||||
'error_login_incorrect' => 'Informasjonen er feil.',
|
||||
'error_login_passwords_nomatch' => 'De oppgitte passordene stemmer ikke overens.',
|
||||
'error_reset_invalid_link' => 'Tilbakestill lenken du oppgav er ugyldig.',
|
||||
'success_password_forgot' => 'En epost er sendt til deg med informasjon om hvordan du tilbakestiller passordet
|
||||
ditt.',
|
||||
'success_password_reset' => 'Ditt passord er tilbakestilt. Vennligst logg inn.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Uautorisert',
|
||||
'401_unauthorized_description' => 'Du har ikke rettighetene til å se denne siden.',
|
||||
),
|
||||
);
|
|
@ -0,0 +1,598 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Arkadiusz Klenczar <a.klenczar@gmail.com>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: v3.5.2
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Polski - Polish',
|
||||
'locale' => array(
|
||||
'0' => 'pl_PL.UTF-8',
|
||||
'1' => 'pl_PL',
|
||||
'2' => 'polski',
|
||||
'3' => 'polski',
|
||||
),
|
||||
'locale_tag' => 'pl',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Instalacja',
|
||||
'action' => 'Akcja',
|
||||
'save' => 'Zapisz',
|
||||
'edit' => 'Edycja',
|
||||
'delete' => 'Usuń',
|
||||
'view' => 'Zobacz',
|
||||
'date' => 'Data',
|
||||
'message' => 'Wiadomość',
|
||||
'yes' => 'Tak',
|
||||
'no' => 'Nie',
|
||||
'insert' => 'Wstaw',
|
||||
'add_new' => 'Dodaj',
|
||||
'update_available' => 'Nowa wersja ({version}) jest dostępna do pobrania z <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Do góry',
|
||||
'go_back' => 'Wstecz',
|
||||
'ok' => 'pożądane',
|
||||
'bad' => 'niepożądane',
|
||||
'cancel' => 'Anuluj',
|
||||
'none' => 'Brak',
|
||||
'activate' => 'Aktywny',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Wczoraj o %k:%M',
|
||||
'other_day_format' => '%A o %k:%M',
|
||||
'never' => 'Nigdy',
|
||||
'hours_ago' => '%d godzin temu',
|
||||
'an_hour_ago' => 'godzinę temu',
|
||||
'minutes_ago' => '%d minut temu',
|
||||
'a_minute_ago' => 'minutę temu',
|
||||
'seconds_ago' => '%d sekund temu',
|
||||
'a_second_ago' => 'sekundę temu',
|
||||
'year' => 'rok',
|
||||
'years' => 'lata',
|
||||
'month' => 'miesiąc',
|
||||
'months' => 'miesiące',
|
||||
'day' => 'dzień',
|
||||
'days' => 'dni',
|
||||
'hour' => 'godzina',
|
||||
'hours' => 'godziny',
|
||||
'minute' => 'minuta',
|
||||
'minutes' => 'minut',
|
||||
'second' => 'sekunda',
|
||||
'seconds' => 'sekundy',
|
||||
'millisecond' => 'milisekunka',
|
||||
'milliseconds' => 'milisekundy',
|
||||
'current' => 'aktualnie',
|
||||
'settings' => 'Ustawienia',
|
||||
'search' => 'Szukaj',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Konfiguracja',
|
||||
'server' => 'Serwery',
|
||||
'server_log' => 'Logi',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => 'Aktualizuj',
|
||||
'user' => 'Użytkownicy',
|
||||
'help' => 'Pomoc',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Użytkownik',
|
||||
'name' => 'Nazwa',
|
||||
'user_name' => 'Login',
|
||||
'password' => 'Hasło',
|
||||
'password_repeat' => 'Powtórz hasło',
|
||||
'password_leave_blank' => 'Pozostaw puste aby zaniechać zmian',
|
||||
'level' => 'Poziom',
|
||||
'level_10' => 'Administrator',
|
||||
'level_20' => 'Użytkownik',
|
||||
'level_description' => '<b>Administratorzy</b> posiadają pełny dostęp: mogą zarządzać serwerami,
|
||||
użytkownikami oraz edytować konfigurację globalną.<br><b>Użytkownicy</b> mogą
|
||||
podejrzeć serwer oraz uruchomić aktualizację statusu dla serwerów do nich
|
||||
przypisanych.',
|
||||
'mobile' => 'Telefon',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover jest usługą szybkich notyfikacji. Sprawdź <a
|
||||
href="https://pushover.net/" target="_blank">ich stronę</a> po więcej informacji.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Urządzenie dla Pushover',
|
||||
'pushover_device_description' => 'Nazwa urządzenia do którego wysłać powiadomienie. Pozostaw puste aby
|
||||
wysłać do wszystkich urządzeń.',
|
||||
'discord' => 'Discord',
|
||||
'discord_label' => 'Discord',
|
||||
'discord_description' => 'Podaj swoje <a href="https://discordjs.guide/popular-topics/webhooks.html"
|
||||
target="_blank">webhook</a> tutaj.',
|
||||
'telegram' => 'Telegram',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> jest komunikatorem
|
||||
internetowym, który umożliwa notyfikacje w czasie rzeczywistym. Odwiedź stronę
|
||||
z <a href="http://docs.phpservermonitor.org/" target="_blank">documentacja</a> aby
|
||||
uzyskać więcej informacji.',
|
||||
'telegram_chat_id' => 'Telegram chat id',
|
||||
'telegram_chat_id_description' => 'Wiadomość zostanie wysłana do odpowiedniej rozmowy.',
|
||||
'telegram_get_chat_id' => 'Kliknij tutaj żeby otrzywać swój chat id',
|
||||
'activate_telegram' => 'Aktywuj notyfikacje Telegram',
|
||||
'activate_telegram_description' => 'Zezwól na wysyłanie notyfikacji Telegram do podanego chat id. Bez tej
|
||||
zgodny Telegram nie zezwoli na wysyłanie notyfikacji do Ciebie.',
|
||||
'telegram_bot_username_found' => 'Bot został odnaleziony!<br><a href="%s" target="_blank"
|
||||
rel="noopener"><button class="btn btn-primary">Następny krok</button></a>
|
||||
<br>Następnie otworzy się okno rozmowy z botem. Musisz nacisnąć start
|
||||
lub wpisać /start.',
|
||||
'telegram_bot_username_error_token' => '401 - Błąd autoryzacji. Proszę sprawdzić czy API token jest
|
||||
prawidłowy.',
|
||||
'telegram_bot_error' => 'Wystąpił błąd podczas aktywowania notyfikacji Telegram: %s',
|
||||
'jabber' => 'Jabber',
|
||||
'jabber_label' => 'Jabber',
|
||||
'jabber_description' => 'Twoje konto Jabber',
|
||||
'webhook' => 'Webhook',
|
||||
'webhook_description' => 'Wyślij json webhook do wybranego endpoint. <br/>Zapytanie json może być dowolnie
|
||||
dostosowane np. {"text":"servermon: #message"}',
|
||||
'webhook_url' => 'Webhook URL',
|
||||
'webhook_url_description' => 'Publiczne webhook endpoint URL powinny się zaczynać od https://.',
|
||||
'webhook_json' => 'Webhook JSON',
|
||||
'webhook_json_description' => 'Zdefiniuj niestandardowy json, użyj #message jak zmienną z treścią
|
||||
wiadomości.',
|
||||
'delete_title' => 'Usuń użytkownika',
|
||||
'delete_message' => 'Czy jesteś pewny że chcesz usunąć użytkownika \'%1\'?',
|
||||
'deleted' => 'Użytkownik usunięty.',
|
||||
'updated' => 'Użytkownik zaktualizowany.',
|
||||
'inserted' => 'Użytkownik dodany.',
|
||||
'profile' => 'Profil',
|
||||
'profile_updated' => 'Twój profil został zaktualizowany.',
|
||||
'error_user_name_bad_length' => 'Login musi mieć od 2 do 64 znaków.',
|
||||
'error_user_name_invalid' => 'Login może zawierać tylko litery (a-z, A-Z), cyfry (0-9), kropki (.) oraz znak
|
||||
podkreślenia (_).',
|
||||
'error_user_name_exists' => 'Wybrana nazwa użytkownika jest już używana.',
|
||||
'error_user_email_bad_length' => 'Email powinien mieć od 5 do 255 znaków.',
|
||||
'error_user_email_invalid' => 'Wprowadzony adres email jest nieprawidłowy.',
|
||||
'error_user_level_invalid' => 'Wybrany poziom uprawnień użytkownika jest nieprawidłowy.',
|
||||
'error_user_no_match' => 'Użytkownik nie został odnaleziony.',
|
||||
'error_user_password_invalid' => 'Wprowadzone hasło jest nieprawidłowe.',
|
||||
'error_user_password_no_match' => 'Wprowadzone hasła są różne.',
|
||||
'error_user_admin_cant_be_deleted' => 'Nie można usunąć jedynego konta administratora.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Logi',
|
||||
'type' => 'Typ',
|
||||
'status' => 'Status',
|
||||
'email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'discord' => 'Discord',
|
||||
'pushover' => 'Pushover',
|
||||
'webhook' => 'Webhook',
|
||||
'telegram' => 'Telegram',
|
||||
'jabber' => 'Jabber',
|
||||
'no_logs' => 'Brak logów',
|
||||
'clear' => 'Wyczyść log',
|
||||
'delete_title' => 'Wyczyść log',
|
||||
'delete_message' => 'Czy na pewno chcesz usunąć <b>wszystkie</b> dzienniki?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Server',
|
||||
'status' => 'Status',
|
||||
'label' => 'Etykieta',
|
||||
'domain' => 'Domena/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Liczba sekund do odczekania na odpowiedź serwera.',
|
||||
'authentication_settings' => 'Ustawienia uwierzytelniania',
|
||||
'optional' => 'Opcjonalne',
|
||||
'website_username' => 'Nazwa użytkownika',
|
||||
'website_username_description' => 'Nazwa użytkownika z dostępem do strony (tylko uwierzytelnianie Apache
|
||||
jest wspierana).',
|
||||
'website_password' => 'Hasło',
|
||||
'website_password_description' => 'Hasło dostęput do strony. Hasło zostanie zaszyfrowane i zapisane w
|
||||
badzie danych.',
|
||||
'fieldset_monitoring' => 'Monitoring',
|
||||
'fieldset_permissions' => 'Uprawnienia',
|
||||
'permissions' => 'Serwer będzie widoczny dla następujących użytkowników',
|
||||
'port' => 'Port',
|
||||
'custom_port' => 'Niestandardowy port',
|
||||
'popular_ports' => 'Popularne porty',
|
||||
'request_method' => 'Metoda HTTP',
|
||||
'custom_request_method' => 'Niestandardowe metoda HTTP',
|
||||
'popular_request_methods' => 'Popularne metody HTTP',
|
||||
'post_field' => 'Pole Post',
|
||||
'post_field_description' => 'Dane zostaną wysłane za pomocą wyżej wybranej metody.',
|
||||
'please_select' => 'Proszę wybrać',
|
||||
'type' => 'Typ',
|
||||
'type_website' => 'Strona',
|
||||
'type_service' => 'Usługa',
|
||||
'type_ping' => 'Ping',
|
||||
'pattern' => 'Wyszukiwane wyrażenie/wzorzec',
|
||||
'pattern_description' => 'Jeśli wzorzec nie zostanie odnaleziony, status zostanie zmieniony. Dozwolone są
|
||||
wyrażenia regularne.',
|
||||
'pattern_online' => 'Wykrycie wzorca oznacza, że strona jest',
|
||||
'pattern_online_description' => 'Online: jeżeli wzorzec zostanie wykryty na stronie to server zostanie
|
||||
oznaczony jako online. Offline: jeżeli wzorzec nie zostanie wykryty na
|
||||
stronie to serwer zostanie oznaczony jako offline.',
|
||||
'redirect_check' => 'Przekierowanie na inną domenę jest',
|
||||
'redirect_check_description' => 'Przekierowanie na inną domenę zazwyczaj jest niepożądanym zachowaniem.',
|
||||
'allow_http_status' => 'Dozwolone kody odpowiedzi HTTP',
|
||||
'allow_http_status_description' => 'Podaj listę dozwolonych kodów odpowiedzi HTTP, kolejne wartości
|
||||
oddzielone za pomocą |. Domyślnie odpowiedzi o wartości poniżej 400
|
||||
zostaną uznane jako prawidłowe.',
|
||||
'header_name' => 'Nazwa nagłówka',
|
||||
'header_value' => 'Wartość nagłówka',
|
||||
'header_name_description' => 'Wielkość liter ma znaczenie.',
|
||||
'header_value_description' => 'Dozwolone są wyrażenia regularne.',
|
||||
'last_check' => 'Ostatnie sprawdzenie',
|
||||
'last_online' => 'Ostatnio online',
|
||||
'last_offline' => 'Ostatnio offline',
|
||||
'last_output' => 'Ostatni prawidłowy wynik',
|
||||
'last_error' => 'Ostatni bląd',
|
||||
'last_error_output' => 'Ostatni wynik blądu',
|
||||
'output' => 'Wynik',
|
||||
'monitoring' => 'Monitorowany',
|
||||
'no_monitoring' => 'Brak monitoringu',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Wyślij Email',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Wyślij SMS',
|
||||
'discord' => 'Discord',
|
||||
'send_discord' => 'Wyślij powiadomienie Discord',
|
||||
'webhook' => 'Webook',
|
||||
'send_webhook' => 'Wyślij powiadomienie Webhook',
|
||||
'pushover' => 'Pushover',
|
||||
'send_pushover' => 'Wyślij powiadomienie Pushover',
|
||||
'telegram' => 'Telegram',
|
||||
'send_telegram' => 'Wyślij powiadomienie Telegram',
|
||||
'jabber' => 'Jabber',
|
||||
'send_jabber' => 'Wyślij powiadomienie Jabber',
|
||||
'users' => 'Użytkownicy',
|
||||
'delete_title' => 'Usuń serwer',
|
||||
'delete_message' => 'Czy jesteś pewny że chcesz usunąć serwer \'%1\'?',
|
||||
'deleted' => 'Serwer usunięty.',
|
||||
'updated' => 'Serwer zaktualizowany.',
|
||||
'inserted' => 'Server dodany.',
|
||||
'latency' => 'Opóźnienie',
|
||||
'latency_max' => 'Opóźnienie (maksymalne)',
|
||||
'latency_min' => 'Opóźnienie (minimalne)',
|
||||
'latency_avg' => 'Opóźnienie (średnie)',
|
||||
'online' => 'online',
|
||||
'offline' => 'offline',
|
||||
'uptime' => 'Czas dostępności',
|
||||
'year' => 'Rok',
|
||||
'month' => 'Miesiąc',
|
||||
'week' => 'Tydzień',
|
||||
'day' => 'Dzień',
|
||||
'hour' => 'Godzina',
|
||||
'warning_threshold' => 'Próg ostrzeżeń',
|
||||
'warning_threshold_description' => 'Ilość wymaganych niepowodzeń przed oznaczeniem serwera jako offline.',
|
||||
'ssl_cert_expiry_days' => 'Ważność certyfikatu SSL',
|
||||
'ssl_cert_expiry_days_description' => 'Minimalna ilość dni, których certyfikat SSL musi być ważny.
|
||||
Ustawienie wartości 0 spowoduje, że ważność certyfikatu nie
|
||||
będzie sprawdzana.',
|
||||
'ssl_cert_expired' => 'Certyfikat SSL wygasł',
|
||||
'ssl_cert_expiring' => 'Certyfikat SSL wygaśnie:',
|
||||
'chart_last_week' => 'Ostatni tydzień',
|
||||
'chart_history' => 'Historia',
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'Powiadomienia SMS są wyłączone.',
|
||||
'warning_notifications_disabled_email' => 'Powiadomienia Email są wyłączone.',
|
||||
'warning_notifications_disabled_discord' => 'Powiadomienia Discord są wyłączone.',
|
||||
'warning_notifications_disabled_webhook' => 'Powiadomienia Webhook są wyłączone.',
|
||||
'warning_notifications_disabled_pushover' => 'Powiadomienia Pushover są wyłączone.',
|
||||
'warning_notifications_disabled_telegram' => 'Powiadomienia Telegram są wyłączone.',
|
||||
'warning_notifications_disabled_jabber' => 'Powiadomienia Jabber są wyłączone.',
|
||||
'error_server_no_match' => 'Nie odnaleziono serwera.',
|
||||
'error_server_label_bad_length' => 'Etykieta musi mieć pomiędzy 1 a 255 znaków.',
|
||||
'error_server_ip_bad_length' => 'Domena/IP musi mieć pomiędzy 1 a 255 znaków.',
|
||||
'error_server_ip_bad_service' => 'Adres IP jest nieprawidłowy.',
|
||||
'error_server_ip_bad_website' => 'Adres URL jest nieprawidłowy.',
|
||||
'error_server_type_invalid' => 'Wybrany typ serwera jest nieprawidłowy.',
|
||||
'error_server_warning_threshold_invalid' => 'Próg ostrzeżeń musi być liczbą całkowitą większą od 0.',
|
||||
'error_server_ssl_cert_expiry_days' => 'Minimalna ilość dla ważności certyfikatu SSL musi być liczbą
|
||||
całkowitą większą lub równą 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Ogólne',
|
||||
'site_title' => 'Tytuł strony',
|
||||
'language' => 'Język',
|
||||
'show_update' => 'Sprawdzić aktualizacje?',
|
||||
'password_encrypt_key' => 'Klucz szyfrowania haseł',
|
||||
'password_encrypt_key_note' => 'Klucz będzie użyty do szyfrowania haseł, które są zapisane w ustawieniach
|
||||
serwerów żeby mieć dostęp do stron. Jeżeli klucz zostanie zmienione to
|
||||
zapisane hasła będą nieprawidłowe!',
|
||||
'proxy' => 'Włącz proxy',
|
||||
'proxy_url' => 'Proxy ULR',
|
||||
'proxy_user' => 'Użytkownik proxy',
|
||||
'proxy_password' => 'Hasło proxy',
|
||||
'email_status' => 'Pozwól na wysyłkę email',
|
||||
'email_from_email' => 'Email z adresu',
|
||||
'email_from_name' => 'Email od(nazwa)',
|
||||
'email_smtp' => 'Włącz SMTP',
|
||||
'email_smtp_host' => 'SMTP host',
|
||||
'email_smtp_port' => 'SMTP port',
|
||||
'email_smtp_security' => 'SMTP security',
|
||||
'email_smtp_security_none' => 'None',
|
||||
'email_smtp_username' => 'SMTP login',
|
||||
'email_smtp_password' => 'SMTP hasło',
|
||||
'email_smtp_noauth' => 'Pozostaw puste dla braku uwierzytelniania',
|
||||
'sms_status' => 'Pozwól na wysyłkę SMS',
|
||||
'sms_gateway' => 'Bramka SMS',
|
||||
'sms_gateway_username' => 'Login do bramki',
|
||||
'sms_gateway_password' => 'Hasło do bramki',
|
||||
'sms_from' => 'Numer nadawcy',
|
||||
'discord_status' => 'Zezwól na wysyłanie powiadomień Discord',
|
||||
'discord_description' => 'Discord jest serwisem, który umożliwia wysyłania powiadomień w czasie
|
||||
rzeczywistym. Odwiedź <a href="https://discord.com/" target="_blank">stronę
|
||||
serwisu</a> żeby otrzymać więcej informacji.',
|
||||
'webhook_status' => 'Zezwól na wysyłanie powiadomień webhooks.',
|
||||
'webhook_description' => 'Zezwól na wysyłanie powiadomień webhooks do serwisów takich jak Slack. Endpoint
|
||||
dla payload wiadomości jest zdefiniowany w ustawieniach profilu użytkownika.',
|
||||
'webhook_url' => 'Webhook URL',
|
||||
'webhook_url_description' => 'URL dla webhook endpoint',
|
||||
'webhook_json' => 'Webhook Json',
|
||||
'webhook_json_description' => 'Niestandardowsy Json, użyj #message jak zmienną z treścią wiadomości.',
|
||||
'pushover_status' => 'Zezwól na wysyłanie powiadomień Pushover',
|
||||
'pushover_description' => 'Pushover jest usługą ułatwiającą otrzymywanie powiadomień w czasie
|
||||
rzeczywistym. Sprawdź <a href="https://pushover.net/" target="_blank">ich
|
||||
stronę</a> aby uzyskać więcej informacji.',
|
||||
'pushover_clone_app' => 'Kliknij tutaj aby stworzyć aplikację korzystającą z Pushover',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Zanim zaczniesz używać Pushover, musisz <a href="%1$s" target="_blank"
|
||||
rel="noopener"> zarejestrować aplikację</a> na ich stronie internetowej
|
||||
i wpisać tutaj App API Token.',
|
||||
'telegram_status' => 'Zezwól na wysyłanie powiadomień Telegram',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> jest komunikatorem
|
||||
internetowym, który umożliwa notyfikacje w czasie rzeczywistym. Odwiedź stronę
|
||||
z <a href="http://docs.phpservermonitor.org/" target="_blank">documentacja</a> aby
|
||||
uzyskać więcej informacji.',
|
||||
'telegram_api_token' => 'Telegram API Token',
|
||||
'telegram_api_token_description' => 'Zanim zaczniesz używać Telegram, potrzebujesz uzyskać API Token.
|
||||
Odwiedź strone z <a href="http://docs.phpservermonitor.org/"
|
||||
target="_blank">dokumentacją</a> żeby uzyskać pomocy.',
|
||||
'jabber_status' => 'Zezwól na wysyłanie powiadomień Jabber (XMPP)',
|
||||
'jabber_description' => 'Odwiedź stronę <a href="http://docs.phpservermonitor.org/">dokumentacją</a> aby
|
||||
uzyskać więcej informaji oraz przewodnik po instalacji.',
|
||||
'jabber_host' => 'Host',
|
||||
'jabber_host_description' => 'Adres host dostawcy Twojego konta Jabber. Dla konta Google użyj
|
||||
talk.google.com.',
|
||||
'jabber_port' => 'Port',
|
||||
'jabber_port_description' => 'Port Twojego dostawcy Jabber. Domyślnie 5222. Dla konta Google użyj 5223.',
|
||||
'jabber_username' => 'Nazwa użytkownika',
|
||||
'jabber_username_description' => 'Dla konta Google użyj razem z domeną np. example@google.com.',
|
||||
'jabber_domain' => 'Domena',
|
||||
'jabber_domain_description' => 'Domena Twojego dostawy Jabber. Zostaw puste dla konta Google.',
|
||||
'jabber_password' => 'Hasło',
|
||||
'jabber_password_description' => 'Wypełnij tylko żeby ustawić lub zmienić.',
|
||||
'jabber_check' => 'Sprawdź swoje konto Jabber czy powiadomienie zostało odebrane.',
|
||||
'alert_type' => 'Wybierz kiedy chcesz być powiadomiony.',
|
||||
'alert_type_description' => '<b>Zmiana statusu:</b> Otrzymasz powiadomienie gdy serwer zmieni status. Z online
|
||||
-> offline lub offline -> online.<br><br /><b>Offline:</b> Otrzymasz
|
||||
powiadomienie gdy serwer zmieni status na offline po raz pierwszy. Na przykład,
|
||||
Twój cronjob uruchamia się co 15 minut, a Twój serwer przestaje odpowiadać o
|
||||
13 i nie działa do 18. Otrzymasz *TYLKO* jedno powiadomienie o
|
||||
13.<br><br><b>Zawsze:</b> Otrzymasz powiadomienie za każdym razem gdy skrypt
|
||||
zostanie uruchomiony a strona będzie niedostępna.',
|
||||
'alert_type_status' => 'Zmiana statusu',
|
||||
'alert_type_offline' => 'Offline',
|
||||
'alert_type_always' => 'Zawsze',
|
||||
'combine_notifications' => 'Scalanie powiadomień',
|
||||
'combine_notifications_description' => 'Ogranicza ilość wysyłanych powiadomień poprzez scalanie wszystkich
|
||||
powiadomień w jedną wiadomość (nie dotyczy powiadomień SMS).',
|
||||
'alert_proxy' => 'Jeżeli włączone to proxy nigdy nie bedzie użyte dla serwisów',
|
||||
'alert_proxy_url' => 'Fomat: host:port',
|
||||
'log_status' => 'Status logowania',
|
||||
'log_status_description' => 'Jeśli status logowania ustawiony jest na TRUE, monitor będzie logował
|
||||
wydarzenia.',
|
||||
'log_email' => 'Emaile wysłane przez skrypt',
|
||||
'log_sms' => 'SMS wysłane przez skrypt',
|
||||
'log_discord' => 'Notyfikacje Discord wysłane przez skrypt',
|
||||
'log_pushover' => 'Notyfikacje Pushover wysłane przez skrypt',
|
||||
'log_webhook' => 'Notyfikacje Webhook wysłane przez skrypt',
|
||||
'log_telegram' => 'Notyfikacje Telegram wysłane przez skrypt',
|
||||
'log_jabber' => 'Notyfikacje Jabber wysłane przez skrypt',
|
||||
'updated' => 'Konfiguracja została zaktualizowana.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_discord' => 'Discord',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'tab_webhook' => 'Webhook',
|
||||
'tab_telegram' => 'Telegram',
|
||||
'tab_jabber' => 'Jabber',
|
||||
'settings_email' => 'Ustawienia Email',
|
||||
'settings_sms' => 'Ustawienia SMS',
|
||||
'settings_discord' => 'Ustawienie Discord',
|
||||
'settings_pushover' => 'Ustawienia Pushover',
|
||||
'settings_webhook' => 'Ustawienia Webhook',
|
||||
'settings_telegram' => 'Ustawienia Telegram',
|
||||
'settings_jabber' => 'Ustawienia Jabber',
|
||||
'settings_notification' => 'Ustawienia powiadomień',
|
||||
'settings_log' => 'Ustawienia Logowania',
|
||||
'settings_proxy' => 'Ustawienia serwera Proxy',
|
||||
'auto_refresh' => 'Auto-odświeżanie',
|
||||
'auto_refresh_description' => 'Auto-odświeżanie strony serwera.<br><span class="small">Czas w sekundach, dla
|
||||
czasu 0 strona nie będzie odświeżana.</span>',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'Email zostanie wysłany na adres podany w Twoim profilu.',
|
||||
'test_sms' => 'SMS zostanie wysłany na numer podany w Twoim profilu.',
|
||||
'test_discord' => 'Powiadomienie Discord zostanie wysłane do webhook, który został podany w Twoim profilu
|
||||
użytkownika.',
|
||||
'test_pushover' => 'Powiadomienie Pushover zostanie wysłane na klucz użytkownika/urządzenie podane w Twoim
|
||||
profilu użytkownika.',
|
||||
'test_webhook' => 'Powiadomienia Webhook zostanie wysłane do endpoint o podanym URL.',
|
||||
'test_telegram' => 'Powiadomienie Telegram zostanie wysłane na chat id podane w Twoim profilu użytkownika.',
|
||||
'test_jabber' => 'Powiadomienie Telegram zostanie wysłane na konto Jabber podane w Twoim profilu
|
||||
użytkownika.',
|
||||
'send' => 'Wyślij',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Testowa wiadomość',
|
||||
'email_sent' => 'Email wysłany',
|
||||
'email_error' => 'Błąd podczas wysyłania emaila',
|
||||
'sms_sent' => 'Sms wysłany',
|
||||
'sms_error' => 'Błąd podczas wysyłania sms. %s',
|
||||
'sms_error_nomobile' => 'Nie udało się wysłać testowego SMS: brak poprawnego telefonu w Twoim profilu.',
|
||||
'discord_sent' => 'Powiadomienie Discord wysłane',
|
||||
'discord_error' => 'Błąd podczas wysyłania powiadomienia Pushover: %s',
|
||||
'discord_error_nowebhook' => 'Błąd podczas wysyłania powiadomienia Discord: brak prawidłowego Discord
|
||||
webhook w profilu użytkownika.',
|
||||
'webhook_sent' => 'Powiadomienie Webhook wysłane',
|
||||
'webhook_error' => 'Błąd podczas wysyłania powiadomienia Webhook: %s',
|
||||
'webhook_error_nourl' => 'Błąd podczas wysyłania testowego powiadomienia: brak Webhook URL w profilu
|
||||
użytkownika.',
|
||||
'webhook_error_nojson' => 'Błąd podczas wysyłania testowego powiadomienia: brak json w profilu
|
||||
użytkownika.',
|
||||
'pushover_sent' => 'Powiadomienie Pushover wysłane.',
|
||||
'pushover_error' => 'Błąd podczas wysyłania powiadomienia Pushover: %s',
|
||||
'pushover_error_noapp' => 'Błąd podczas wysyłania testowego powiadomienia: brak Pushover App API token w
|
||||
konfiguracji globalnej.',
|
||||
'pushover_error_nokey' => 'Błąd podczas wysyłania testowego powiadomienia: brak Pushover key na Twoim
|
||||
profilu.',
|
||||
'telegram_sent' => 'Powiadomienie Telegram zostało wysłane',
|
||||
'telegram_error' => 'Wystąpił błąd podczas wysyłania powiadomienia Telegram: %s',
|
||||
'telegram_error_notoken' => 'Nie można wysłać testowego powiadomienia: brak Telegram API token w głównych
|
||||
ustawieniach systemu.',
|
||||
'telegram_error_noid' => 'Nie można wysłać testowego powiadomienia: brak chat id w ustawieniach profilu
|
||||
Twojego użytkownika.',
|
||||
'jabber_sent' => 'Powiadomienie Jabber zostało wysłane',
|
||||
'jabber_error' => 'Wystąpił błąd podczas wysyłania powiadomienia Jabber: %s',
|
||||
'jabber_error_noconfig' => 'Nie można wysłać testowego powiadomienia: brak konfiguracji konta Jabber w
|
||||
głównych ustawieniach systemu.',
|
||||
'jabber_error_noaccount' => 'Nie można wysłać testowego powiadomienia: brak konfiguracji konta Jabber w
|
||||
ustawieniach profilu Twojego użytkownika.',
|
||||
'log_retention_period' => 'Czas rotacji logów',
|
||||
'log_retention_period_description' => 'Liczba dni przez którą należy przetrzymywać logi powiadomień i
|
||||
archiwizować uptime serwera. Wpisz 0 aby wyłączyć czyszczenie
|
||||
logów.',
|
||||
'log_retention_days' => 'dni',
|
||||
'user_agent' => 'User Agent',
|
||||
'user_agent_key_note' => 'Niestandardowy user agent używany przez monitor do komunikacji z zewnętrznymi
|
||||
serwisami.',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Serwer \'%LABEL%\' przestał odpowiadać: ip=%IP%, port=%PORT%. Błąd=%ERROR%',
|
||||
'off_email_subject' => 'Uwaga: Serwer \'%LABEL%\' nie odpowiada',
|
||||
'off_email_body' => 'Błąd połączenia do serwera:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Błąd: %ERROR%<br>Data: %DATE%',
|
||||
'off_discord_message' => 'Błąd połączenia do serwera:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Błąd: %ERROR%<br>Data: %DATE%',
|
||||
'off_webhook_title' => 'Serwer \'%LABEL%\' nie odpowiada',
|
||||
'off_webhook_message' => 'Błąd połączenia do serwera:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Błąd: %ERROR%<br>Data: %DATE%',
|
||||
'off_pushover_title' => 'Serwer \'%LABEL%\' nie odpowiada',
|
||||
'off_pushover_message' => 'Błąd połączenia do serwera:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Błąd: %ERROR%<br>Data: %DATE%',
|
||||
'off_telegram_message' => 'Błąd połączenia do serwera:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Błąd: %ERROR%<br>Data: %DATE%',
|
||||
'off_jabber_message' => 'Błąd połączenia do serwera:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Błąd: %ERROR%<br>Data: %DATE%',
|
||||
'on_sms' => 'Serwer \'%LABEL%\' działa poprawnie: ip=%IP%, port=%PORT%, it was down for
|
||||
%LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'Uwaga: Serwer \'%LABEL%\' działa poprawnie',
|
||||
'on_email_body' => 'Serwer \'%LABEL%\' znów odpowiada, był offline przez
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Data:
|
||||
%DATE%',
|
||||
'on_discord_message' => 'Serwer \'%LABEL%\' znów odpowiada, był offline przez
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Data:
|
||||
%DATE%',
|
||||
'on_webhook_title' => 'Serwer \'%LABEL%\' działa poprawnie',
|
||||
'on_webhook_message' => 'Serwer \'%LABEL%\' znów odpowiada, był offline przez
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Data:
|
||||
%DATE%',
|
||||
'on_pushover_title' => 'Serwer \'%LABEL%\' działa poprawnie',
|
||||
'on_pushover_message' => 'Serwer \'%LABEL%\' znów działa poprawnie, był offline przez
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Data:
|
||||
%DATE%',
|
||||
'on_telegram_message' => 'Serwer \'%LABEL%\' znów działa poprawnie, był offline przez
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Data:
|
||||
%DATE%',
|
||||
'on_jabber_message' => 'Serwer \'%LABEL%\' znów działa poprawnie, był offline przez
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Data:
|
||||
%DATE%',
|
||||
'combi_off_email_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Error:
|
||||
%ERROR%</li><li>Date: %DATE%</li></ul>',
|
||||
'combi_off_discord_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>- Error: %ERROR%<br>-
|
||||
Date: %DATE%<br><br>',
|
||||
'combi_off_webhook_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Error:
|
||||
%ERROR%</li><li>Date: %DATE%</li></ul>',
|
||||
'combi_off_pushover_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Error:
|
||||
%ERROR%</li><li>Date: %DATE%</li></ul>',
|
||||
'combi_off_telegram_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>- Error: %ERROR%<br>-
|
||||
Date: %DATE%<br><br>',
|
||||
'combi_off_jabber_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>- Error: %ERROR%<br>-
|
||||
Date: %DATE%<br><br>',
|
||||
'combi_on_email_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Downtime:
|
||||
%LAST_OFFLINE_DURATION%</li><li>Date: %DATE%</li></ul>',
|
||||
'combi_on_webhook_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Downtime:
|
||||
%LAST_OFFLINE_DURATION%</li><li>Date: %DATE%</li></ul>',
|
||||
'combi_on_discord_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>- Downtime:
|
||||
%LAST_OFFLINE_DURATION%<br>- Date: %DATE%<br><br>',
|
||||
'combi_on_pushover_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port:
|
||||
%PORT%</li><li>Downtime: %LAST_OFFLINE_DURATION%</li><li>Date:
|
||||
%DATE%</li></ul>',
|
||||
'combi_on_telegram_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>- Downtime:
|
||||
%LAST_OFFLINE_DURATION%<br>- Date: %DATE%<br><br>',
|
||||
'combi_on_jabber_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>- Downtime:
|
||||
%LAST_OFFLINE_DURATION%<br>- Date: %DATE%<br><br>',
|
||||
'combi_email_subject' => 'WAŻNE: \'%UP%\' serverów znowu ONLINE, \'%DOWN%\' serverów jest OFFLINE',
|
||||
'combi_webhook_subject' => '\'%UP%\' serverów jest znowu ONLINE UP, \'%DOWN%\' serverów jest OFFLINE',
|
||||
'combi_pushover_subject' => '\'%UP%\' serverów jest znowu ONLINE UP, \'%DOWN%\' serverów jest OFFLINE',
|
||||
'combi_email_message' => '<b>Następujące serwery są offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
|
||||
serwery są znowu online:</b><br>%UP_SERVERS%',
|
||||
'combi_discord_message' => '<b>Następujące serwery są offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
|
||||
serwery są znowu online:</b><br>%UP_SERVERS%',
|
||||
'combi_webhook_message' => '<b>Następujące serwery są offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
|
||||
serwery są znowu online:</b><br>%UP_SERVERS%',
|
||||
'combi_pushover_message' => '<b>Następujące serwery są offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
|
||||
serwery są znowu online:</b><br>%UP_SERVERS%',
|
||||
'combi_telegram_message' => '<b>Następujące serwery są offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
|
||||
serwery są znowu online:</b><br>%UP_SERVERS%',
|
||||
'combi_jabber_message' => '<b>Następujące serwery są offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
|
||||
serwery są znowu online:</b><br>%UP_SERVERS%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Witaj, %user_name%',
|
||||
'title_sign_in' => 'Zaloguj się',
|
||||
'title_forgot' => 'Zapomniałeś hasła?',
|
||||
'title_reset' => 'Zresetuj hasło',
|
||||
'submit' => 'Zapisz',
|
||||
'remember_me' => 'Zapamiętaj mnie',
|
||||
'login' => 'Zaloguj',
|
||||
'logout' => 'Wyloguj',
|
||||
'username' => 'Login',
|
||||
'password' => 'Hasło',
|
||||
'password_repeat' => 'Powtórz hasło',
|
||||
'password_forgot' => 'Zapomniałeś hasła?',
|
||||
'password_reset' => 'Zresetuj hasło',
|
||||
'password_reset_email_subject' => 'Zresetuj hasło do monitoringu',
|
||||
'password_reset_email_body' => 'Aby zresetować hasło użyj tego linku. Ważność linku to jedna
|
||||
godzina.<br><br>%link%',
|
||||
'error_user_incorrect' => 'Brak użytkownika o takim loginie.',
|
||||
'error_login_incorrect' => 'Login lub hasło jest błędne.',
|
||||
'error_login_passwords_nomatch' => 'Podane hasła nie pasują do siebie.',
|
||||
'error_reset_invalid_link' => 'Podany link do zmiany hasła jest nieprawidłowy.',
|
||||
'success_password_forgot' => 'Email został wysłany do Ciebie z informacjami dotyczącymi zresetowania
|
||||
hasła.',
|
||||
'success_password_reset' => 'Twoje hasło zostało pomyślnie zmienione. Zaloguj się.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Brak autoryzacji',
|
||||
'401_unauthorized_description' => 'Nie masz odpowiednich praw dostępu by przeglądać tę stronę.',
|
||||
),
|
||||
);
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -19,18 +20,24 @@
|
|||
*
|
||||
* @package phpservermon
|
||||
* @author Luiz Alberto S. Ribeiro <madeinnordeste@gmail.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Português - Brazilian Portuguese',
|
||||
'locale' => array('pt_BR.UTF-8', 'pt_BR', 'portuguese-brazilian'),
|
||||
'name' => 'Português - Brazilian Portuguese',
|
||||
'locale' => array(
|
||||
'0' => 'pt_BR.UTF-8',
|
||||
'1' => 'pt_BR',
|
||||
'2' => 'portuguese-brazilian',
|
||||
),
|
||||
'locale_tag' => 'BR',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Instalar',
|
||||
'install' => 'Instalar',
|
||||
'action' => 'Ação',
|
||||
'save' => 'Salvar',
|
||||
'edit' => 'Editar',
|
||||
|
@ -41,67 +48,74 @@ $sm_lang = array(
|
|||
'no' => 'Não',
|
||||
'insert' => 'Inserir',
|
||||
'add_new' => 'Adicionar novo',
|
||||
'update_available' => 'Uma atualização ({version}) disponível em <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||
'update_available' => 'Uma atualização ({version}) disponível em <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Voltar ao topo',
|
||||
'go_back' => 'Voltar',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Cancel',
|
||||
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||
'short_day_format' => '%e %m',
|
||||
'long_day_format' => '%e/%m/%Y',
|
||||
'yesterday_format' => 'Ontem as %k:%M',
|
||||
'other_day_format' => '%A at %k:%M',
|
||||
'never' => 'Nunca',
|
||||
'hours_ago' => '%d horas atrás',
|
||||
'an_hour_ago' => 'cerca de uma hora atrás',
|
||||
'minutes_ago' => '%d minutos atrás',
|
||||
'a_minute_ago' => 'cerca de um minuto atrás',
|
||||
'seconds_ago' => '%d segundos atrás',
|
||||
'a_second_ago' => 'um segundo atrás',
|
||||
'go_back' => 'Voltar',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Cancel',
|
||||
'short_day_format' => '%e %m',
|
||||
'long_day_format' => '%e/%m/%Y',
|
||||
'yesterday_format' => 'Ontem as %k:%M',
|
||||
'other_day_format' => '%A at %k:%M',
|
||||
'never' => 'Nunca',
|
||||
'hours_ago' => '%d horas atrás',
|
||||
'an_hour_ago' => 'cerca de uma hora atrás',
|
||||
'minutes_ago' => '%d minutos atrás',
|
||||
'a_minute_ago' => 'cerca de um minuto atrás',
|
||||
'seconds_ago' => '%d segundos atrás',
|
||||
'a_second_ago' => 'um segundo atrás',
|
||||
'seconds' => 'segundos',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Configuração',
|
||||
'server' => 'Servidores',
|
||||
'server_log' => 'Log',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => 'Atualização',
|
||||
'user' => 'Usuários',
|
||||
'help' => 'Ajuda',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Configuração',
|
||||
'server' => 'Servidores',
|
||||
'server_log' => 'Log',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => 'Atualização',
|
||||
'user' => 'Usuários',
|
||||
'help' => 'Ajuda',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Usuário',
|
||||
'name' => 'Nome',
|
||||
'user_name' => 'Username',
|
||||
'password' => 'Senha',
|
||||
'password_repeat' => 'Repetir senha',
|
||||
'password_leave_blank' => 'Deixe em branco para não modificar',
|
||||
'level' => 'Nível',
|
||||
'level_10' => 'Administrador',
|
||||
'level_20' => 'Usuário',
|
||||
'level_description' => '<b>Administradores</b> Tem total acesso: podem gerenciar servidores, usuários e configurações globais.<br/><b>Usuários</b> só podem executar atualizações para servidores que lhe foram atribuídos.',
|
||||
'user_name' => 'Username',
|
||||
'password' => 'Senha',
|
||||
'password_repeat' => 'Repetir senha',
|
||||
'password_leave_blank' => 'Deixe em branco para não modificar',
|
||||
'level' => 'Nível',
|
||||
'level_10' => 'Administrador',
|
||||
'level_20' => 'Usuário',
|
||||
'level_description' => '<b>Administradores</b> Tem total acesso: podem gerenciar servidores, usuários e
|
||||
configurações globais.<br><b>Usuários</b> só podem executar atualizações para
|
||||
servidores que lhe foram atribuídos.',
|
||||
'mobile' => 'Celular',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||
'delete_title' => 'Delete User',
|
||||
'delete_message' => 'Are you sure you want to delete user \'%1\'?',
|
||||
'deleted' => 'User deleted.',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover para enviar notificações em real-tome. Veja <a
|
||||
href="https://pushover.net/" target="_blank">o website</a> para mais informações.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => 'Nome do Device para enviar a mensagem. Deixe em branco para enviar a todos
|
||||
os Devices.',
|
||||
'delete_title' => 'Excluir Usuário',
|
||||
'delete_message' => 'Tem certeza que deseja excluir o usuário \'%1\'?',
|
||||
'deleted' => 'Usuário excluído.',
|
||||
'updated' => 'Usuário atualizado.',
|
||||
'inserted' => 'Usuário adicionado.',
|
||||
'profile' => 'Perfil',
|
||||
'profile_updated' => 'Seu perfil foi atualizado.',
|
||||
'error_user_name_bad_length' => 'Usernames deve conter entre 2 e 64 caracteres.',
|
||||
'error_user_name_invalid' => 'Só pode conter caracteres alfabéticos (a-z, A-Z), dígitos (0-9) e underscores (_).',
|
||||
'error_user_name_exists' => 'O nome de usuário(username) já existe no banco de dados',
|
||||
'error_user_email_bad_length' => 'Email deve conter entre 5 e 255 caracteres.',
|
||||
'error_user_email_invalid' => 'O endereço de email é inválido.',
|
||||
'error_user_level_invalid' => 'O Nível de usuário é inválido.',
|
||||
'error_user_no_match' => 'O usuário não pode ser encontrado no banco de dados.',
|
||||
'error_user_password_invalid' => 'A senha informada é inválida.',
|
||||
'error_user_password_no_match' => 'A senha informada não combina.',
|
||||
'profile' => 'Perfil',
|
||||
'profile_updated' => 'Seu perfil foi atualizado.',
|
||||
'error_user_name_bad_length' => 'Usernames deve conter entre 2 e 64 caracteres.',
|
||||
'error_user_name_invalid' => 'Só pode conter caracteres alfabéticos (a-z, A-Z), dígitos (0-9), pontos (.) e
|
||||
underscores (_).',
|
||||
'error_user_name_exists' => 'O nome de usuário(username) já existe no banco de dados',
|
||||
'error_user_email_bad_length' => 'Email deve conter entre 5 e 255 caracteres.',
|
||||
'error_user_email_invalid' => 'O endereço de email é inválido.',
|
||||
'error_user_level_invalid' => 'O Nível de usuário é inválido.',
|
||||
'error_user_no_match' => 'O usuário não pode ser encontrado no banco de dados.',
|
||||
'error_user_password_invalid' => 'A senha informada é inválida.',
|
||||
'error_user_password_no_match' => 'A senha informada não combina.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Entradas do Log',
|
||||
|
@ -109,66 +123,70 @@ $sm_lang = array(
|
|||
'status' => 'Status',
|
||||
'email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'No logs',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'Sem logs',
|
||||
'clear' => 'Log clara',
|
||||
'delete_title' => 'Log clara',
|
||||
'delete_message' => 'Tem certeza de que deseja excluir <b>todos</b> os logs?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Servidor',
|
||||
'status' => 'Status',
|
||||
'status' => 'Status',
|
||||
'label' => 'Etiqueta',
|
||||
'domain' => 'Domínio/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Segundos para aguardar a resposta do servidor.',
|
||||
'port' => 'Porta',
|
||||
'type' => 'Tipo',
|
||||
'type_website' => 'Website',
|
||||
'type_service' => 'Service',
|
||||
'pattern' => 'Pesquisa palavra/padrão',
|
||||
'pattern_description' => 'Se esse padrão não for encontrado no site, o servidor será marcado offline. As expressões regulares são permitidas.',
|
||||
'type_website' => 'Website',
|
||||
'type_service' => 'Service',
|
||||
'pattern' => 'Pesquisa palavra/padrão',
|
||||
'pattern_description' => 'Se esse padrão não for encontrado no site, o servidor será marcado offline. As
|
||||
expressões regulares são permitidas.',
|
||||
'last_check' => 'Última verificação',
|
||||
'last_online' => 'Última vez online',
|
||||
'last_offline' => 'Última vez offline',
|
||||
'monitoring' => 'Monitoramento',
|
||||
'no_monitoring' => 'No monitoring',
|
||||
'no_monitoring' => 'Sem monitoring',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Enviar Email',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Enviar SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Users',
|
||||
'delete_title' => 'Delete Server',
|
||||
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
|
||||
'deleted' => 'Server deleted.',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Usuários',
|
||||
'delete_title' => 'Exluir Servidor',
|
||||
'delete_message' => 'Tem certeza que deseja excluir o servidor \'%1\'?',
|
||||
'deleted' => 'Servidor excluído.',
|
||||
'updated' => 'Servidor atualizado.',
|
||||
'inserted' => 'Servidor adicionar.',
|
||||
'latency' => 'Tempo de resposta',
|
||||
'latency_max' => 'Latência (máxima)',
|
||||
'latency_min' => 'Latência (minima)',
|
||||
'latency_avg' => 'Latência (média)',
|
||||
'uptime' => 'Uptime',
|
||||
'year' => 'Ano',
|
||||
'month' => 'Mês',
|
||||
'week' => 'Semana',
|
||||
'day' => 'Dia',
|
||||
'hour' => 'HOra',
|
||||
'warning_threshold' => 'Limite de Aviso',
|
||||
'warning_threshold_description' => 'Número de verificações que falharam antes de ser marcado offline.',
|
||||
'chart_last_week' => 'Última semana',
|
||||
'chart_history' => 'Histórico',
|
||||
// Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html
|
||||
'chart_day_format' => '%d/%m/%Y',
|
||||
'chart_long_date_format' => '%d/%m/%Y %H:%M:%S',
|
||||
'chart_short_date_format' => '%d/%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||
'error_server_no_match' => 'Server not found.',
|
||||
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_service' => 'The IP address is not valid.',
|
||||
'error_server_ip_bad_website' => 'The website URL is not valid.',
|
||||
'error_server_type_invalid' => 'The selected server type is invalid.',
|
||||
'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
|
||||
'latency_max' => 'Latência (máxima)',
|
||||
'latency_min' => 'Latência (minima)',
|
||||
'latency_avg' => 'Latência (média)',
|
||||
'uptime' => 'Uptime',
|
||||
'year' => 'Ano',
|
||||
'month' => 'Mês',
|
||||
'week' => 'Semana',
|
||||
'day' => 'Dia',
|
||||
'hour' => 'Hora',
|
||||
'warning_threshold' => 'Limite de Aviso',
|
||||
'warning_threshold_description' => 'Número de verificações que falharam antes de ser marcado offline.',
|
||||
'chart_last_week' => 'Última semana',
|
||||
'chart_history' => 'Histórico',
|
||||
'chart_day_format' => '%d/%m/%Y',
|
||||
'chart_long_date_format' => '%d/%m/%Y %H:%M:%S',
|
||||
'chart_short_date_format' => '%d/%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'Notificações SMS estão desabilitadas.',
|
||||
'warning_notifications_disabled_email' => 'Notificações por email estão desabilitadas.',
|
||||
'warning_notifications_disabled_pushover' => 'Notificações por Pushover estão desabilitadas.',
|
||||
'error_server_no_match' => 'Servidor não encontrado.',
|
||||
'error_server_label_bad_length' => 'A etiqueta deve ter entre 1 e 255 caracteres.',
|
||||
'error_server_ip_bad_length' => 'O domínio / IP deve ter entre 1 e 255 caracteres.',
|
||||
'error_server_ip_bad_service' => 'O IP não é válido.',
|
||||
'error_server_ip_bad_website' => 'A URL não é válida.',
|
||||
'error_server_type_invalid' => 'O tipo de servidor selecionado não é valido.',
|
||||
'error_server_warning_threshold_invalid' => 'O limite de aviso deve ser um número inteiro maior que 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Geral',
|
||||
|
@ -177,121 +195,127 @@ $sm_lang = array(
|
|||
'email_status' => 'Habilitar envio de email?',
|
||||
'email_from_email' => 'Endereço do envio de email',
|
||||
'email_from_name' => 'Nome do envio de email',
|
||||
'email_smtp' => 'Enable SMTP',
|
||||
'email_smtp_host' => 'SMTP host',
|
||||
'email_smtp_port' => 'SMTP port',
|
||||
'email_smtp_username' => 'SMTP username',
|
||||
'email_smtp_password' => 'SMTP password',
|
||||
'email_smtp_noauth' => 'Deixe em branco para nenhuma autenticação',
|
||||
'email_smtp' => 'Enable SMTP',
|
||||
'email_smtp_host' => 'SMTP host',
|
||||
'email_smtp_port' => 'SMTP port',
|
||||
'email_smtp_security' => 'SMTP security',
|
||||
'email_smtp_security_none' => 'None',
|
||||
'email_smtp_username' => 'SMTP username',
|
||||
'email_smtp_password' => 'SMTP password',
|
||||
'email_smtp_noauth' => 'Deixe em branco para nenhuma autenticação',
|
||||
'sms_status' => 'Habilitar o envio de mensagem de texto?',
|
||||
'sms_gateway' => 'Gateway para o uso de envio de mensagens',
|
||||
'sms_gateway_mosms' => 'Mosms',
|
||||
'sms_gateway_mollie' => 'Mollie',
|
||||
'sms_gateway_spryng' => 'Spryng',
|
||||
'sms_gateway_inetworx' => 'Inetworx',
|
||||
'sms_gateway_clickatell' => 'Clickatell',
|
||||
'sms_gateway_textmarketer' => 'Textmarketer',
|
||||
'sms_gateway_smsglobal' => 'SMSGlobal',
|
||||
'sms_gateway_smsit' => 'Smsit',
|
||||
'sms_gateway_username' => 'Usuário do Gateway',
|
||||
'sms_gateway_password' => 'Senha do Gateway',
|
||||
'sms_from' => 'Número de telefone de envio',
|
||||
'pushover_status' => 'Allow sending Pushover messages',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Before you can use Pushover, you need to <a href="%1$s" target="_blank">register an App</a> at their website and enter the App API Token here.',
|
||||
'pushover_status' => 'Habilitar envio de mensagens Pushover',
|
||||
'pushover_description' => 'Pushover é um serviço de notificações em tempo real. Veja <a
|
||||
href="https://pushover.net/" target="_blank">o website</a> para mais informações.',
|
||||
'pushover_clone_app' => 'Clique aqui para criar sua app Pushover',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Before you can use Pushover, you need to <a href="%1$s" target="_blank"
|
||||
rel="noopener">register an App</a> at their website and enter the App API
|
||||
Token here.',
|
||||
'alert_type' => 'Selecione como você gostaria de ser notificado.',
|
||||
'alert_type_description' => '<b>Mudança de Status:</b> '.
|
||||
'Você receberá uma notificação quando o seridor tive uma mudança de status. De online -> offline ou offline -> online.<br/>'.
|
||||
'<br /><b>Offline:</b> '.
|
||||
'Você receberá uma notificação quando o servidor fica OFFLINE (Pela primeira vez). Por exemplo, '.
|
||||
'A cronjob é a cada 15 minutos e seu servidor caiu em 1:00 e permanece offline até 6 am. '.
|
||||
'Você receberá uma notificação a 1:00 apenas<br/>'.
|
||||
'<br><b>Sempre:</b> '.
|
||||
'Você receberá uma notificação toda vez que o script é executado e um site esta offline, mesmo se o site tenha ficado offline por horas.',
|
||||
'alert_type_description' => '<b>Mudança de Status:</b> Você receberá uma notificação quando o seridor
|
||||
tive uma mudança de status. De online -> offline ou offline -> online.<br><br
|
||||
/><b>Offline:</b> Você receberá uma notificação quando o servidor fica
|
||||
OFFLINE (Pela primeira vez). Por exemplo, A cronjob é a cada 15 minutos e seu
|
||||
servidor caiu em 1:00 e permanece offline até 6 am. Você receberá uma
|
||||
notificação a 1:00 apenas<br><br><b>Sempre:</b> Você receberá uma
|
||||
notificação toda vez que o script é executado e um site esta offline, mesmo se
|
||||
o site tenha ficado offline por horas.',
|
||||
'alert_type_status' => 'Mudança de Status',
|
||||
'alert_type_offline' => 'Offline',
|
||||
'alert_type_always' => 'Sempre',
|
||||
'log_status' => 'Log status',
|
||||
'log_status_description' => 'Se o status de registro é definido como TRUE, o monitor irá registrar o evento sempre que as configurações de notificação forem passadas.',
|
||||
'log_status_description' => 'Se o status de registro é definido como TRUE, o monitor irá registrar o evento
|
||||
sempre que as configurações de notificação forem passadas.',
|
||||
'log_email' => 'Registrar no Log os envios de email feitos pelo script?',
|
||||
'log_sms' => 'Registrar no Log os envios de mensagens de texto feitos pelo script?',
|
||||
'log_pushover' => 'Log pushover messages sent by the script',
|
||||
'log_pushover' => 'Log pushover messages sent by the script',
|
||||
'updated' => 'A configuração foi atualizada.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'Texto',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Configuração de email',
|
||||
'settings_sms' => 'Configuração de mensagens de texto',
|
||||
'settings_pushover' => 'Pushover settings',
|
||||
'settings_pushover' => 'Pushover settings',
|
||||
'settings_notification' => 'Configuração de notificações',
|
||||
'settings_log' => 'Configuração de Logs',
|
||||
'auto_refresh' => 'Atualizar automaticamente',
|
||||
'auto_refresh_servers' =>
|
||||
'Atualizar automaticamente a página de servidores.<br/>'.
|
||||
'<span class="small">'.
|
||||
'Tempo em segundos, Se 0 a página não será atualizada.'.
|
||||
'</span>',
|
||||
'seconds' => 'segundos',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'An email will be sent to the address specified in your user profile.',
|
||||
'test_sms' => 'An SMS will be sent to the phone number specified in your user profile.',
|
||||
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||
'send' => 'Send',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Test message',
|
||||
'email_sent' => 'Email sent',
|
||||
'email_error' => 'Error in email sending',
|
||||
'sms_sent' => 'Sms sent',
|
||||
'sms_error' => 'Error in sms sending',
|
||||
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||
'pushover_sent' => 'Pushover notification sent',
|
||||
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||
'log_retention_period' => 'Log retention period',
|
||||
'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
|
||||
'log_retention_days' => 'days',
|
||||
'auto_refresh_description' => 'Atualizar automaticamente a página de servidores.<br><span class="small">Tempo
|
||||
em segundos, Se 0 a página não será atualizada.</span>',
|
||||
'test' => 'Teste',
|
||||
'test_email' => 'Um e-mail será enviado para o endereço especificado em seu perfil de usuário.',
|
||||
'test_sms' => 'Um SMS será enviado para o número de telefone especificado em seu perfil de usuário.',
|
||||
'test_pushover' => 'A notificação Pushover será enviado para a chave de usuário / dispositivo especificado
|
||||
em seu perfil de usuário.',
|
||||
'send' => 'Enviar',
|
||||
'test_subject' => 'Teste',
|
||||
'test_message' => 'Mensagem de Teste',
|
||||
'email_sent' => 'Email enviado',
|
||||
'email_error' => 'Erro no envio do email',
|
||||
'sms_sent' => 'Sms enviado',
|
||||
'sms_error' => 'Error no envio do SMS. %s',
|
||||
'sms_error_nomobile' => 'Não foi possível enviar SMS de teste: nenhum número de telefone válido encontrado
|
||||
em seu perfil.',
|
||||
'pushover_sent' => 'Notificação Pushover enviada',
|
||||
'pushover_error' => 'Um erro foi encontrado ao enviar a notificação Pushover: %s',
|
||||
'pushover_error_noapp' => 'Não foi possível enviar a notificação de teste: não foi encontrada a APP API
|
||||
token do Pushover na configuração global.',
|
||||
'pushover_error_nokey' => 'Não foi possível enviar a notificação de teste: não foi encontrada a Pushover
|
||||
Key no seu perfil.',
|
||||
'log_retention_period' => 'Período de retenção do Log',
|
||||
'log_retention_period_description' => 'Número de dias para manter os registros de notificações e arquivos
|
||||
de tempo de atividade do servidor. Digite 0 para desativar a limpeza de
|
||||
registro.',
|
||||
'log_retention_days' => 'dias',
|
||||
),
|
||||
// for newlines in the email messages use <br/>
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Servidor \'%LABEL%\' está OFFLINE: ip=%IP%, porta=%PORT%. Erro=%ERROR%',
|
||||
'off_email_subject' => 'IMPORTANTE: Servidor \'%LABEL%\' está OFFLINE',
|
||||
'off_email_body' => "Falha ao conectar ao servidor:<br/><br/>Servidor: %LABEL%<br/>IP: %IP%<br/>Porta: %PORT%<br/>Erro: %ERROR%<br/>Data: %DATE%",
|
||||
'off_email_body' => 'Falha ao conectar ao servidor:<br><br>Servidor: %LABEL%<br>IP: %IP%<br>Porta:
|
||||
%PORT%<br>Erro: %ERROR%<br>Data: %DATE%',
|
||||
'off_pushover_title' => 'Servidor \'%LABEL%\' está OFFLINE',
|
||||
'off_pushover_message' => "Falha ao conectar ao servidor:<br/><br/>Servidor: %LABEL%<br/>IP: %IP%<br/>Porta: %PORT%<br/>Erro: %ERROR%<br/>Data: %DATE%",
|
||||
'on_sms' => 'Servidor \'%LABEL%\' esta ONLINE: ip=%IP%, porta=%PORT%',
|
||||
'off_pushover_message' => 'Falha ao conectar ao servidor:<br><br>Servidor: %LABEL%<br>IP: %IP%<br>Porta:
|
||||
%PORT%<br>Erro: %ERROR%<br>Data: %DATE%',
|
||||
'on_sms' => 'Servidor \'%LABEL%\' esta ONLINE: ip=%IP%, porta=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'IMPORTANTE: Servidor \'%LABEL%\' esta ONLINE',
|
||||
'on_email_body' => "Servidor '%LABEL%' esta ONLINE novamente:<br/><br/>Servidor: %LABEL%<br/>IP: %IP%<br/>Porta: %PORT%<br/>Data: %DATE%",
|
||||
'on_email_body' => 'Servidor \'%LABEL%\' esta ONLINE novamente, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Servidor: %LABEL%<br>IP: %IP%<br>Porta: %PORT%<br>Data:
|
||||
%DATE%',
|
||||
'on_pushover_title' => 'Servidor \'%LABEL%\' esta ONLINE',
|
||||
'on_pushover_message' => "Servidor '%LABEL%' esta ONLINE novamente:<br/><br/>Servidor: %LABEL%<br/>IP: %IP%<br/>Porta: %PORT%<br/>Data: %DATE%",
|
||||
'on_pushover_message' => 'Servidor \'%LABEL%\' esta ONLINE novamente, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Servidor: %LABEL%<br>IP: %IP%<br>Porta:
|
||||
%PORT%<br>Data: %DATE%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Bem vindo, %user_name%',
|
||||
'title_sign_in' => 'Por favor efetue login',
|
||||
'title_forgot' => 'Perdeu sua senha?',
|
||||
'title_reset' => 'Redefinir senha',
|
||||
'submit' => 'Enviar',
|
||||
'remember_me' => 'Lembrar',
|
||||
'login' => 'Login',
|
||||
'logout' => 'Logout',
|
||||
'username' => 'Username',
|
||||
'password' => 'Senha',
|
||||
'password_repeat' => 'Repetir Senha',
|
||||
'password_forgot' => 'Perdeu a senha?',
|
||||
'password_reset' => 'Redefinir senha',
|
||||
'password_reset_email_subject' => 'Redefinir sua senha para PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Por favor use o link para redefinir sua senha. Este link irá expirar em 1
|
||||
hora.<br><br>%link%',
|
||||
'error_user_incorrect' => 'O username não pode ser encontrado.',
|
||||
'error_login_incorrect' => 'As informações são incorretas.',
|
||||
'error_login_passwords_nomatch' => 'A senha informada não é válida.',
|
||||
'error_reset_invalid_link' => 'O link para redefinição de senha é inválido.',
|
||||
'success_password_forgot' => 'Um email foi enviado para você com as instruções de redefinição de senha.',
|
||||
'success_password_reset' => 'Sua senha foi redefinida com sucesso. Por favor faça login.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Não autorizado',
|
||||
'401_unauthorized_description' => 'Você não tem autorização para ver esta página.',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Bem vindo, %user_name%',
|
||||
'title_sign_in' => 'Por favor efetue login',
|
||||
'title_forgot' => 'Perdeu sua senha?',
|
||||
'title_reset' => 'Redefinir senha',
|
||||
'submit' => 'Enviar',
|
||||
'remember_me' => 'Lembrar',
|
||||
'login' => 'Login',
|
||||
'logout' => 'Logout',
|
||||
'username' => 'Username',
|
||||
'password' => 'Senha',
|
||||
'password_repeat' => 'Repetir Senha',
|
||||
'password_forgot' => 'Perdeu a senha?',
|
||||
'password_reset' => 'Redefinir senha',
|
||||
'password_reset_email_subject' => 'Redefinir sua senha para PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Por favor use o link para redefinir sua senha. Este link irá expirar em 1 hora.<br/><br/>%link%',
|
||||
'error_user_incorrect' => 'O username não pode ser encontrado.',
|
||||
'error_login_incorrect' => 'As informações são incorretas.',
|
||||
'error_login_passwords_nomatch' => 'A senha informada não é válida.',
|
||||
'error_reset_invalid_link' => 'O link para redefinição de senha é inválido.',
|
||||
'success_password_forgot' => 'Um email foi enviado para você com as instruções de redefinição de senha.',
|
||||
'success_password_reset' => 'Sua senha foi redefinida com sucesso. Por favor faça login.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Unauthorized',
|
||||
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||
),
|
||||
);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -19,279 +20,454 @@
|
|||
*
|
||||
* @package phpservermon
|
||||
* @author Roman Beylin <roman.beylin@yandex.ru>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @author Alexell <alexell@alexell.ru>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Russian - Русский',
|
||||
'locale' => array('ru_RU.UTF-8', 'ru_RU', 'russian', 'russian'),
|
||||
'system' => array(
|
||||
'title' => 'Сервер Мониторинг',
|
||||
'install' => 'Установка',
|
||||
'action' => 'Действие',
|
||||
'save' => 'Сохранить',
|
||||
'edit' => 'Редактировать',
|
||||
'delete' => 'Удалить',
|
||||
'date' => 'Дата',
|
||||
'message' => 'Сообщение',
|
||||
'yes' => 'Да',
|
||||
'no' => 'Нет',
|
||||
'insert' => 'Добавить',
|
||||
'add_new' => 'Добавить новый',
|
||||
'update_available' => 'Новая версия ({version}) доступна по адресу <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Наверх',
|
||||
'go_back' => 'Вернуться',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Отмена',
|
||||
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||
'short_day_format' => '%e %B',
|
||||
'long_day_format' => '%e %B %Y',
|
||||
'yesterday_format' => 'Вчера в %k:%M',
|
||||
'other_day_format' => '%A в %k:%M',
|
||||
'never' => 'Никогда',
|
||||
'hours_ago' => '%d часов назад',
|
||||
'an_hour_ago' => 'час назад',
|
||||
'minutes_ago' => '%d минут назад',
|
||||
'a_minute_ago' => 'минуту назад',
|
||||
'seconds_ago' => '%d секунд назад',
|
||||
'a_second_ago' => 'секунду назад',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Параметры',
|
||||
'server' => 'Серверы',
|
||||
'server_log' => 'Лог',
|
||||
'server_status' => 'Статус',
|
||||
'server_update' => 'Обновить',
|
||||
'user' => 'Пользователи',
|
||||
'help' => 'Помощь',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Пользователь',
|
||||
'name' => 'Имя пользователя',
|
||||
'user_name' => 'Логин',
|
||||
'password' => 'Пароль',
|
||||
'password_repeat' => 'Повтор пароля',
|
||||
'password_leave_blank' => 'Оставить пустым, если не меняется',
|
||||
'level' => 'Уровень',
|
||||
'level_10' => 'Администратор',
|
||||
'level_20' => 'Пользователь',
|
||||
'level_description' => '<b>Администраторы</b> имеют полный доступ: они могут управлять серверами, пользователями и изменять общую конфигурацию.<br/><b>Пользователи</b> могут только просматривать и запускать проверку для серверов, которые были к ним прикреплены.',
|
||||
'mobile' => 'Телефон',
|
||||
'email' => 'E-mail',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover - это сервис, который позволяет легко получать уведомления в режиме реального времени. Больше информации на <a href="https://pushover.net/">их веб-сайте</a>.',
|
||||
'pushover_key' => 'Pushover ключ',
|
||||
'pushover_device' => 'Pushover устройство',
|
||||
'pushover_device_description' => 'Имя устройства, на которое будут отправляться уведомления. Оставьте пустым, что бы отправлять уведомления на все устройства.',
|
||||
'delete_title' => 'Удалить пользователя',
|
||||
'delete_message' => 'Вы уверены что хотите удалить пользователя \'%1\'?',
|
||||
'deleted' => 'Пользователь удален.',
|
||||
'updated' => 'Пользователь обновлен.',
|
||||
'inserted' => 'Пользователь добавлен.',
|
||||
'profile' => 'Профиль',
|
||||
'profile_updated' => 'Ваш профиль был обновлен.',
|
||||
'error_user_name_bad_length' => 'Логин должен содержать от 2 до 64 знаков.',
|
||||
'error_user_name_invalid' => 'Имя пользователя может содержать только латинские символы (a-z, A-Z), цифры (0-9) и подчеркивание (_).',
|
||||
'error_user_name_exists' => 'Данный логин уже существует.',
|
||||
'error_user_email_bad_length' => 'E-mail может содержать от 5 до 255 знаков.',
|
||||
'error_user_email_invalid' => 'E-mail указан неверно.',
|
||||
'error_user_level_invalid' => 'Данный уровень пользователя недействителен.',
|
||||
'error_user_no_match' => 'Данного пользователя нет в базе данных.',
|
||||
'error_user_password_invalid' => 'Пароль указан неверно.',
|
||||
'error_user_password_no_match' => 'Введенные пароли не совпадают.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Запись',
|
||||
'type' => 'Тип',
|
||||
'status' => 'Статус',
|
||||
'email' => 'E-mail',
|
||||
'sms' => 'СМС',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'Записей нет',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Сервер',
|
||||
'status' => 'Состояние',
|
||||
'label' => 'Название',
|
||||
'domain' => 'Домен/IP',
|
||||
'timeout' => 'Тайм-аут',
|
||||
'timeout_description' => 'Количество секунд ожидания ответа сервера.',
|
||||
'port' => 'Порт',
|
||||
'type' => 'Тип',
|
||||
'type_website' => 'Веб-сайт',
|
||||
'type_service' => 'Сервис',
|
||||
'pattern' => 'Искать текст/шаблон',
|
||||
'pattern_description' => 'Если текст по шаблону не найден на сайте, сервер будет помечен как Оффлайн. Регулярные выражения допустимы.',
|
||||
'last_check' => 'Последняя проверка',
|
||||
'last_online' => 'Был онлайн',
|
||||
'monitoring' => 'Мониторинг',
|
||||
'no_monitoring' => 'Нет мониторинга',
|
||||
'email' => 'E-mail',
|
||||
'send_email' => 'Отправить E-mail',
|
||||
'sms' => 'CMC',
|
||||
'send_sms' => 'Отправить CMC',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Пользователи',
|
||||
'delete_title' => 'Удалить сервер',
|
||||
'delete_message' => 'Вы уверены что хотите удалить сервер \'%1\'?',
|
||||
'deleted' => 'Сервер удален.',
|
||||
'updated' => 'Сервер обновлен.',
|
||||
'inserted' => 'Север добавлен.',
|
||||
'latency' => 'Задержка',
|
||||
'latency_max' => 'Задержка (максимальная)',
|
||||
'latency_min' => 'Задержка (минимальная)',
|
||||
'latency_avg' => 'Задержка (средняя)',
|
||||
'uptime' => 'Аптайм',
|
||||
'year' => 'Год',
|
||||
'month' => 'Месяц',
|
||||
'week' => 'Неделя',
|
||||
'day' => 'День',
|
||||
'hour' => 'Час',
|
||||
'warning_threshold' => 'Порог предупреждения',
|
||||
'warning_threshold_description' => 'Количество неудачных проверок, требуемых перед тем как сервер будет помечен как Оффлайн.',
|
||||
'chart_last_week' => 'Прошлая неделя',
|
||||
'chart_history' => 'История',
|
||||
// Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html
|
||||
'chart_day_format' => '%d-%m-%Y',
|
||||
'chart_long_date_format' => '%d-%m-%Y %H:%M:%S',
|
||||
'chart_short_date_format' => '%d/%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'СМС уведомления отключены.',
|
||||
'warning_notifications_disabled_email' => 'E-mail уведомления отключены.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover уведомления отключены.',
|
||||
'error_server_no_match' => 'Сервер не найден.',
|
||||
'error_server_label_bad_length' => 'Название должно содержать от 1 до 255 знаков.',
|
||||
'error_server_ip_bad_length' => 'Домен/IP должен содержать от 1 до 255 знаков',
|
||||
'error_server_ip_bad_service' => 'IP-адрес недействителен.',
|
||||
'error_server_ip_bad_website' => 'Ссылка веб-страницы недействительна.',
|
||||
'error_server_type_invalid' => 'Выбраный тип сервера недействителен.',
|
||||
'error_server_warning_threshold_invalid' => 'Порог предупреждения должен иметь значение больше 0',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Основные',
|
||||
'language' => 'Язык',
|
||||
'show_update' => 'Обновления',
|
||||
'email_status' => 'Разрешить отправку E-mail',
|
||||
'email_from_email' => 'Отправлять от адреса',
|
||||
'email_from_name' => 'Отправлять от имени',
|
||||
'email_smtp' => 'Включить SMTP',
|
||||
'email_smtp_host' => 'SMTP сервер',
|
||||
'email_smtp_port' => 'SMTP порт',
|
||||
'email_smtp_username' => 'SMTP пользователь',
|
||||
'email_smtp_password' => 'SMTP пароль',
|
||||
'email_smtp_noauth' => 'Оставить пустым, если без аутентификации',
|
||||
'sms_status' => 'Разрешить отправку СМС',
|
||||
'sms_gateway' => 'Шлюз для отправки СМС',
|
||||
'sms_gateway_mosms' => 'Mosms',
|
||||
'sms_gateway_mollie' => 'Mollie',
|
||||
'sms_gateway_spryng' => 'Spryng',
|
||||
'sms_gateway_inetworx' => 'Inetworx',
|
||||
'sms_gateway_clickatell' => 'Clickatell',
|
||||
'sms_gateway_textmarketer' => 'Textmarketer',
|
||||
'sms_gateway_smsglobal' => 'SMSGlobal',
|
||||
'sms_gateway_smsit' => 'Smsit',
|
||||
'sms_gateway_username' => 'Пользователь',
|
||||
'sms_gateway_password' => 'Пароль',
|
||||
'sms_from' => 'Номер отправителя',
|
||||
'pushover_status' => 'Разрешить отправку Pushover сообщений',
|
||||
'pushover_description' => 'Pushover - это сервис, который позволяет легко получать уведомления в режиме реального времени. Больше информации на <a href="https://pushover.net/">их веб-сайте</a>.',
|
||||
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Прежде чем вы сможете начать пользоваться Pushover, вам необходимо зарегестрировать <a href="%1$s" target="_blank">"App"</a> на их веб-сайте и ввести "App API Token" сюда.',
|
||||
'alert_type' => 'Выбeрите, какие вы хотите получать уведомления',
|
||||
'alert_type_description' => '<b>Изменение статуса :</b> '.
|
||||
'Вы получите уведомление об изменение статуса. Для онлайн -> оффлайн или офлайн -> онлайн.<br/>'.
|
||||
'<br /><b>Оффлайн:</b> '.
|
||||
'Вы получите уведомление только когда сервер перейдет в статус оффлайн. Например, '.
|
||||
'Задание Cron выставлено на каждые 15 минут. Сервер перейдет в статус оффлайн в 1:00 и не измениться до 6:00. '.
|
||||
'Вы получите 1 уведомление только в 1:00<br/>'.
|
||||
'<br><b>Всегда:</b> '.
|
||||
'Вы будете получать уведомление при каждом запуске скрипта проверки, как только сервер перейдет в статус оффлайн, даже если сервер находится в этом статусе несколько часов',
|
||||
'alert_type_status' => 'Изменение статуса',
|
||||
'alert_type_offline' => 'Оффлайн',
|
||||
'alert_type_always' => 'Всегда',
|
||||
'log_status' => 'Лог статусов',
|
||||
'log_status_description' => 'Если лог установлен в TRUE, монитор будет логировать все события режим которых выбран в типе уведомлений.',
|
||||
'log_email' => 'Логировать уведомления отправленые по E-mail',
|
||||
'log_sms' => 'Логировать уведомления отправленые по СМС',
|
||||
'log_pushover' => 'Логировать Pushover уведомления',
|
||||
'updated' => 'Параметры были успешно применены.',
|
||||
'tab_email' => 'E-mail',
|
||||
'tab_sms' => 'СМС',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Настройка E-mail',
|
||||
'settings_sms' => 'Настройка SMS',
|
||||
'settings_pushover' => 'Настройка Pushover',
|
||||
'settings_notification' => 'Настройка уведомлений',
|
||||
'settings_log' => 'Настройка логирования',
|
||||
'auto_refresh' => 'Авто-обновление',
|
||||
'auto_refresh_servers' =>
|
||||
'Авто-обновление страницы статуса серверов.<br/>'.
|
||||
'<span class="small">'.
|
||||
'Вермя в секундах, если 0 страница не будет обновляться.'.
|
||||
'</span>',
|
||||
'seconds' => 'секунд',
|
||||
'test' => 'Проверка',
|
||||
'test_email' => 'Сообщение будет отправлено на адрес указаный в профиле пользователя.',
|
||||
'test_sms' => 'Сообщение будет отправлено на номер телефона указаный в профиле пользователя.',
|
||||
'test_pushover' => 'Pushover уведомление будет отправленно на устройство указанное в профиле пользователя.',
|
||||
'send' => 'Отправить',
|
||||
'test_subject' => 'Проверка',
|
||||
'test_message' => 'Тестовое сообщение',
|
||||
'email_sent' => 'Сообщение отправлено',
|
||||
'email_error' => 'Ошибка при отправке сообщения',
|
||||
'sms_sent' => 'СМС отправлено',
|
||||
'sms_error' => 'Ошибка при отправке СМС',
|
||||
'sms_error_nomobile' => 'Не удалось отправить пробный СМС: действительный телефонный номер не был найден в вашем профиле.',
|
||||
'pushover_sent' => 'Pushover уведомление отправлено',
|
||||
'pushover_error' => 'Произошла ошибка во время отправки Pushover уведомления: %s',
|
||||
'pushover_error_noapp' => 'Не удалось отправить пробное уведомление: Pushover "App API token" не был найден в основных настройках.',
|
||||
'pushover_error_nokey' => 'Не удалось отправить пробное уведомление: Pushover ключ не был найден в вашем профиле.',
|
||||
'log_retention_period' => 'Log retention period',
|
||||
'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
|
||||
'log_retention_days' => 'days',
|
||||
),
|
||||
// for newlines in the email messages use <br/>
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Сервер \'%LABEL%\' сейчас НЕДОСТУПЕН: ip=%IP%, port=%PORT%. Ошибка=%ERROR%',
|
||||
'off_email_subject' => 'ВАЖНО: сервер \'%LABEL%\' сейчас НЕДОСТУПЕН',
|
||||
'off_email_body' => "Невозможно подключиться к следующему серверу:<br/><br/>Сервер: %LABEL%<br/>IP: %IP%<br/>Порт: %PORT%<br/>Ошибка: %ERROR%<br/>Дата: %DATE%",
|
||||
'off_pushover_title' => 'Cервер \'%LABEL%\' сейчас НЕДОСТУПЕН',
|
||||
'off_pushover_message' => "Невозможно подключиться к следующему серверу:<br/><br/>Сервер: %LABEL%<br/>IP: %IP%<br/>Порт: %PORT%<br/>Ошибка: %ERROR%<br/>Дата: %DATE%",
|
||||
'on_sms' => 'Сервер \'%LABEL%\' сейчас ДОСТУПЕН: ip=%IP%, port=%PORT%',
|
||||
'on_email_subject' => 'ВАЖНО: Сервер \'%LABEL%\' сейчас ДОСТУПЕН',
|
||||
'on_email_body' => "Сервер '%LABEL%' снова доступен:<br/><br/>Сервер: %LABEL%<br/>IP: %IP%<br/>Порт: %PORT%<br/>Дата: %DATE%",
|
||||
'on_pushover_title' => 'Сервер \'%LABEL%\' сейчас ДОСТУПЕН',
|
||||
'on_pushover_message' => "Сервер '%LABEL%' снова доступен:<br/><br/>Сервер: %LABEL%<br/>IP: %IP%<br/>Порт: %PORT%<br/>Дата: %DATE%",
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Здравствуйте, %user_name%',
|
||||
'title_sign_in' => 'Пожалуйста, авторизуйтесь',
|
||||
'title_forgot' => 'Забыли пароль?',
|
||||
'title_reset' => 'Сбросить пароль',
|
||||
'submit' => 'Подтвердить',
|
||||
'remember_me' => 'Запомнить меня',
|
||||
'login' => 'Войти',
|
||||
'logout' => 'Выйти',
|
||||
'username' => 'Логин',
|
||||
'password' => 'Пароль',
|
||||
'password_repeat' => 'Повторить пароль',
|
||||
'password_forgot' => 'Забыли пароль?',
|
||||
'password_reset' => 'Сбросить пароль',
|
||||
'password_reset_email_subject' => 'Сбросить пароль для PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Пожалуйста, используйте следующую ссылку для сброса пароля. Ссылка действительна 1 час.<br/><br/>%link%',
|
||||
'error_user_incorrect' => 'Пользователь с указаными данными не найден.',
|
||||
'error_login_incorrect' => 'Информация указана неверно.',
|
||||
'error_login_passwords_nomatch' => 'Пароль указан неверно.',
|
||||
'error_reset_invalid_link' => 'Ссылка для сброса пароля недействительна.',
|
||||
'success_password_forgot' => 'Вам был отправлен email, с описанием сброса пароля.',
|
||||
'success_password_reset' => 'Ваш пароль был сброшен. Пожалуйста авторизуйтесь.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Доступ закрыт',
|
||||
'401_unauthorized_description' => 'У вас нет прав доступа к этой странице.',
|
||||
),
|
||||
'name' => 'Русский - Russian',
|
||||
'locale' => array(
|
||||
'0' => 'ru_RU.UTF-8',
|
||||
'1' => 'ru_RU',
|
||||
'2' => 'russian',
|
||||
),
|
||||
'locale_tag' => 'ru',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Сервер Мониторинг',
|
||||
'install' => 'Установка',
|
||||
'action' => 'Действие',
|
||||
'save' => 'Сохранить',
|
||||
'edit' => 'Редактировать',
|
||||
'delete' => 'Удалить',
|
||||
'date' => 'Дата',
|
||||
'message' => 'Сообщение',
|
||||
'yes' => 'Да',
|
||||
'no' => 'Нет',
|
||||
'insert' => 'Добавить',
|
||||
'add_new' => 'Добавить новый',
|
||||
'update_available' => 'Новая версия ({version}) доступна по адресу <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Наверх',
|
||||
'go_back' => 'Вернуться',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Отмена',
|
||||
'activate' => 'Активировать',
|
||||
'short_day_format' => '%e %B',
|
||||
'long_day_format' => '%e %B %Y',
|
||||
'yesterday_format' => 'Вчера в %k:%M',
|
||||
'other_day_format' => '%A в %k:%M',
|
||||
'never' => 'Никогда',
|
||||
'hours_ago' => '%d часов назад',
|
||||
'an_hour_ago' => 'час назад',
|
||||
'minutes_ago' => '%d минут назад',
|
||||
'a_minute_ago' => 'минуту назад',
|
||||
'seconds_ago' => '%d секунд назад',
|
||||
'a_second_ago' => 'секунду назад',
|
||||
'year' => 'год',
|
||||
'years' => 'лет',
|
||||
'month' => 'месяц',
|
||||
'months' => 'месяцев',
|
||||
'day' => 'день',
|
||||
'days' => 'дней',
|
||||
'hour' => 'час',
|
||||
'hours' => 'часов',
|
||||
'minute' => 'минута',
|
||||
'minutes' => 'минут',
|
||||
'second' => 'секунда',
|
||||
'seconds' => 'секунд',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Параметры',
|
||||
'server' => 'Серверы',
|
||||
'server_log' => 'Лог',
|
||||
'server_status' => 'Статус',
|
||||
'server_update' => 'Обновить',
|
||||
'user' => 'Пользователи',
|
||||
'help' => 'Помощь',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Пользователь',
|
||||
'name' => 'Имя пользователя',
|
||||
'user_name' => 'Логин',
|
||||
'password' => 'Пароль',
|
||||
'password_repeat' => 'Повтор пароля',
|
||||
'password_leave_blank' => 'Оставить пустым, если не меняется',
|
||||
'level' => 'Уровень',
|
||||
'level_10' => 'Администратор',
|
||||
'level_20' => 'Пользователь',
|
||||
'level_description' => '<b>Администраторы</b> имеют полный доступ: они
|
||||
могут управлять серверами, пользователями и
|
||||
изменять общую
|
||||
конфигурацию.<br><b>Пользователи</b> могут только
|
||||
просматривать и запускать проверку для
|
||||
серверов, которые были к ним прикреплены.',
|
||||
'mobile' => 'Телефон',
|
||||
'email' => 'E-mail',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover - это сервис, который позволяет легко
|
||||
получать уведомления в режиме реального
|
||||
времени. Больше информации на <a
|
||||
href="https://pushover.net/" target="_blank">их веб-сайте</a>.',
|
||||
'pushover_key' => 'Pushover ключ',
|
||||
'pushover_device' => 'Pushover устройство',
|
||||
'pushover_device_description' => 'Имя устройства, на которое будут
|
||||
отправляться уведомления. Оставьте
|
||||
пустым, что бы отправлять уведомления на
|
||||
все устройства.',
|
||||
'telegram' => 'Telegram',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> удобный
|
||||
мессенджер для получения уведомлений в
|
||||
реальном времени. Посетите <a
|
||||
href="http://docs.phpservermonitor.org/" target="_blank">раздел
|
||||
документации</a> для получения доп. информации
|
||||
и инструкций по установке.',
|
||||
'telegram_chat_id' => 'Telegram chat id',
|
||||
'telegram_chat_id_description' => 'Сообщения будут отправляться на
|
||||
указанный идентификатор чата.',
|
||||
'telegram_get_chat_id' => 'Нажмите здесь чтобы получить ваш chat id',
|
||||
'activate_telegram' => 'Активировать уведомления в Telegram',
|
||||
'activate_telegram_description' => 'Разрешить отправку уведомлений на
|
||||
указанный идентификатор чата. Без этого
|
||||
разрешения Telegram не позволит нам
|
||||
отправлять вам уведомления.',
|
||||
'telegram_bot_username_found' => 'Бот обнаружен!<br><a href="%s" target="_blank"
|
||||
rel="noopener"><button class="btn btn-primary">Следующий
|
||||
шаг</button></a> <br>Откроется чат с ботом. Здесь
|
||||
вам нужно нажать кнопку Start или отправить
|
||||
команду /start.',
|
||||
'telegram_bot_username_error_token' => '401 - Unauthorized. Пожалуйста укажите
|
||||
действительный API токен..',
|
||||
'telegram_bot_error' => 'Произошла ошибка при активации уведомления
|
||||
Telegram: %s',
|
||||
'delete_title' => 'Удалить пользователя',
|
||||
'delete_message' => 'Вы уверены что хотите удалить пользователя \'%1\'?',
|
||||
'deleted' => 'Пользователь удален.',
|
||||
'updated' => 'Пользователь обновлен.',
|
||||
'inserted' => 'Пользователь добавлен.',
|
||||
'profile' => 'Профиль',
|
||||
'profile_updated' => 'Ваш профиль был обновлен.',
|
||||
'error_user_name_bad_length' => 'Логин должен содержать от 2 до 64 знаков.',
|
||||
'error_user_name_invalid' => 'Имя пользователя может содержать только
|
||||
латинские символы (a-z, A-Z), цифры (0-9), точки (.)
|
||||
и подчеркивание (_).',
|
||||
'error_user_name_exists' => 'Данный логин уже существует.',
|
||||
'error_user_email_bad_length' => 'E-mail может содержать от 5 до 255 знаков.',
|
||||
'error_user_email_invalid' => 'E-mail указан неверно.',
|
||||
'error_user_level_invalid' => 'Данный уровень пользователя
|
||||
недействителен.',
|
||||
'error_user_no_match' => 'Данного пользователя нет в базе данных.',
|
||||
'error_user_password_invalid' => 'Пароль указан неверно.',
|
||||
'error_user_password_no_match' => 'Введенные пароли не совпадают.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Запись',
|
||||
'type' => 'Тип',
|
||||
'status' => 'Статус',
|
||||
'email' => 'E-mail',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'telegram' => 'Telegram',
|
||||
'no_logs' => 'Записей нет',
|
||||
'clear' => 'Очистить логи',
|
||||
'delete_title' => 'Удаление логов',
|
||||
'delete_message' => 'Вы уверены что хотите удалить <b>все</b> логи?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Сервер',
|
||||
'status' => 'Состояние',
|
||||
'label' => 'Название',
|
||||
'domain' => 'Домен/IP',
|
||||
'timeout' => 'Тайм-аут',
|
||||
'timeout_description' => 'Количество секунд ожидания ответа сервера.',
|
||||
'authentication_settings' => 'Настройки аутентификации',
|
||||
'optional' => 'необязательно',
|
||||
'website_username' => 'Имя пользователя',
|
||||
'website_username_description' => 'Имя пользователя для доступа к сайту.
|
||||
(Поддерживается только Apache authentication.)',
|
||||
'website_password' => 'Пароль',
|
||||
'website_password_description' => 'пароль для доступа к сайту. Пароль будет
|
||||
храниться в зашифрованном виде.',
|
||||
'fieldset_monitoring' => 'Мониторинг',
|
||||
'fieldset_permissions' => 'Права доступа',
|
||||
'port' => 'Порт',
|
||||
'custom_port' => 'Указать порт',
|
||||
'popular_ports' => 'Популярные порты',
|
||||
'please_select' => 'Выберите',
|
||||
'type' => 'Тип',
|
||||
'type_website' => 'Веб-сайт',
|
||||
'type_service' => 'Сервис',
|
||||
'type_ping' => 'Пинг',
|
||||
'pattern' => 'Искать текст/шаблон',
|
||||
'pattern_description' => 'Если текст по шаблону не найден на сайте,
|
||||
сервер будет помечен как Оффлайн. Регулярные
|
||||
выражения допустимы.',
|
||||
'pattern_online' => 'Шаблон указывает что вебсайт:',
|
||||
'pattern_online_description' => 'Online: Если этот шаблон найден на веб-сайте,
|
||||
сервер будет отмечен Онлайн. Offline: Если
|
||||
этот шаблон не найден на веб-сайте, сервер
|
||||
будет отмечен как Оффлайн.',
|
||||
'header_name' => 'Название заголовка',
|
||||
'header_value' => 'Значение заголовка',
|
||||
'header_name_description' => 'с учетом регистра.',
|
||||
'header_value_description' => 'Разрешены регулярные выражения.',
|
||||
'last_check' => 'Последняя проверка',
|
||||
'last_online' => 'Был онлайн',
|
||||
'last_offline' => 'Был оффлайн',
|
||||
'monitoring' => 'Мониторинг',
|
||||
'no_monitoring' => 'Нет мониторинга',
|
||||
'email' => 'E-mail',
|
||||
'send_email' => 'Отправить E-mail',
|
||||
'sms' => 'CMC',
|
||||
'send_sms' => 'Отправить CMC',
|
||||
'pushover' => 'Pushover',
|
||||
'send_pushover' => 'Отправлять уведомления в Pushover',
|
||||
'telegram' => 'Telegram',
|
||||
'send_telegram' => 'Отправлять уведомления в Telegram',
|
||||
'users' => 'Пользователи',
|
||||
'delete_title' => 'Удалить сервер',
|
||||
'delete_message' => 'Вы уверены что хотите удалить сервер \'%1\'?',
|
||||
'deleted' => 'Сервер удален.',
|
||||
'updated' => 'Сервер обновлен.',
|
||||
'inserted' => 'Сервер добавлен.',
|
||||
'latency' => 'Задержка',
|
||||
'latency_max' => 'Задержка (максимальная)',
|
||||
'latency_min' => 'Задержка (минимальная)',
|
||||
'latency_avg' => 'Задержка (средняя)',
|
||||
'online' => 'онлайн',
|
||||
'offline' => 'оффлайн',
|
||||
'uptime' => 'Аптайм',
|
||||
'year' => 'Год',
|
||||
'month' => 'Месяц',
|
||||
'week' => 'Неделя',
|
||||
'day' => 'День',
|
||||
'hour' => 'Час',
|
||||
'warning_threshold' => 'Порог предупреждения',
|
||||
'warning_threshold_description' => 'Количество неудачных проверок,
|
||||
требуемых чтобы сервер был помечен как
|
||||
Оффлайн.',
|
||||
'chart_last_week' => 'Прошлая неделя',
|
||||
'chart_history' => 'История',
|
||||
'chart_day_format' => '%d.%m.%Y',
|
||||
'chart_long_date_format' => '%d.%m.%Y %H:%M:%S',
|
||||
'chart_short_date_format' => '%d.%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS уведомления отключены.',
|
||||
'warning_notifications_disabled_email' => 'E-mail уведомления отключены.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover уведомления отключены.',
|
||||
'warning_notifications_disabled_telegram' => 'Уведомления в Telegram отключены.',
|
||||
'error_server_no_match' => 'Сервер не найден.',
|
||||
'error_server_label_bad_length' => 'Название должно содержать от 1 до 255
|
||||
знаков.',
|
||||
'error_server_ip_bad_length' => 'Домен/IP должен содержать от 1 до 255 знаков',
|
||||
'error_server_ip_bad_service' => 'IP-адрес недействителен.',
|
||||
'error_server_ip_bad_website' => 'Ссылка веб-страницы недействительна.',
|
||||
'error_server_type_invalid' => 'Выбраный тип сервера недействителен.',
|
||||
'error_server_warning_threshold_invalid' => 'Порог предупреждения должен иметь
|
||||
значение больше 0',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Основные',
|
||||
'language' => 'Язык',
|
||||
'show_update' => 'Проверять обновления?',
|
||||
'password_encrypt_key' => 'Ключ шифрования пароля',
|
||||
'password_encrypt_key_note' => 'Этот ключ используется для шифрования
|
||||
паролей, которые указаны на серверах (для
|
||||
доступа к веб-сайтам). Если ключ изменится,
|
||||
сохраненный пароль будет недействителен!',
|
||||
'proxy' => 'Использовать прокси',
|
||||
'proxy_url' => 'Адрес прокси',
|
||||
'proxy_user' => 'Имя пользователя прокси',
|
||||
'proxy_password' => 'Пароль прокси',
|
||||
'email_status' => 'Разрешить отправку email',
|
||||
'email_from_email' => 'Отправлять от адреса',
|
||||
'email_from_name' => 'Отправлять от имени',
|
||||
'email_smtp' => 'Использовать SMTP',
|
||||
'email_smtp_host' => 'SMTP адрес',
|
||||
'email_smtp_port' => 'SMTP порт',
|
||||
'email_smtp_security' => 'SMTP защита',
|
||||
'email_smtp_security_none' => 'нет',
|
||||
'email_smtp_username' => 'SMTP пользователь',
|
||||
'email_smtp_password' => 'SMTP пароль',
|
||||
'email_smtp_noauth' => 'Оставить пустым, если без аутентификации',
|
||||
'sms_status' => 'Разрешить отправку SMS',
|
||||
'sms_gateway' => 'Шлюз для отправки SMS',
|
||||
'sms_gateway_username' => 'Пользователь',
|
||||
'sms_gateway_password' => 'Пароль',
|
||||
'sms_from' => 'Номер отправителя',
|
||||
'pushover_status' => 'Разрешить отправку Pushover сообщений',
|
||||
'pushover_description' => 'Pushover - это сервис, который позволяет легко
|
||||
получать уведомления в режиме реального
|
||||
времени. Больше информации на <a
|
||||
href="https://pushover.net/" target="_blank">их веб-сайте</a>.',
|
||||
'pushover_clone_app' => 'Нажмите здесь чтобы создать ваш Pushover app',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Прежде чем вы сможете начать
|
||||
пользоваться Pushover, вам необходимо
|
||||
зарегистрировать <a href="%1$s" target="_blank"
|
||||
rel="noopener">"App"</a> на их веб-сайте и ввести "App
|
||||
API Token" сюда.',
|
||||
'telegram_status' => 'Разрешить отправку уведомлений в Telegram',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> удобный
|
||||
мессенджер для получения уведомлений в
|
||||
реальном времени. Посетите <a
|
||||
href="http://docs.phpservermonitor.org/" target="_blank">раздел
|
||||
документации</a> для получения доп. информации
|
||||
и инструкций по установке.',
|
||||
'telegram_api_token' => 'Telegram API Token',
|
||||
'telegram_api_token_description' => 'Прежде чем вы сможете начать
|
||||
пользоваться Telegram, вам необходимо
|
||||
получить API Token. Посетите <a
|
||||
href="http://docs.phpservermonitor.org/" target="_blank">раздел
|
||||
документации</a> для получения помощи.',
|
||||
'alert_type' => 'Тип уведомлений',
|
||||
'alert_type_description' => '<b>Изменение статуса:</b> Вы получите
|
||||
уведомление об изменение статуса. Для
|
||||
онлайн -> оффлайн или офлайн -> онлайн.<br><br
|
||||
/><b>Оффлайн:</b> Вы получите уведомление
|
||||
только когда сервер перейдет в статус
|
||||
оффлайн. Например, задание Cron выставлено на
|
||||
каждые 15 минут. Сервер перейдет в статус
|
||||
оффлайн в 1:00 и не измениться до 6:00. Вы
|
||||
получите 1 уведомление только в
|
||||
1:00<br><br><b>Всегда:</b> Вы будете получать
|
||||
уведомление при каждом запуске скрипта
|
||||
проверки, как только сервер перейдет в
|
||||
статус оффлайн, даже если сервер находится в
|
||||
этом статусе несколько часов.',
|
||||
'alert_type_status' => 'Изменение статуса',
|
||||
'alert_type_offline' => 'Оффлайн',
|
||||
'alert_type_always' => 'Всегда',
|
||||
'alert_proxy' => 'Даже если включено, прокси никогда не
|
||||
используется для сервисов',
|
||||
'alert_proxy_url' => 'Формат: адрес:порт',
|
||||
'log_status' => 'Лог статусов',
|
||||
'log_status_description' => 'Если лог статусов включен, монитор будет
|
||||
логировать все события выбранные в типе
|
||||
уведомлений.',
|
||||
'log_email' => 'Логировать уведомления отправленые по E-mail',
|
||||
'log_sms' => 'Логировать уведомления отправленые по SMS',
|
||||
'log_pushover' => 'Логировать Pushover уведомления',
|
||||
'log_telegram' => 'Логировать Telegram уведомления',
|
||||
'updated' => 'Настройки успешно сохранены.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'tab_telegram' => 'Telegram',
|
||||
'settings_email' => 'Настройка E-mail',
|
||||
'settings_sms' => 'Настройка SMS',
|
||||
'settings_pushover' => 'Настройка Pushover',
|
||||
'settings_telegram' => 'Настройка Telegram',
|
||||
'settings_notification' => 'Настройка уведомлений',
|
||||
'settings_log' => 'Настройка логирования',
|
||||
'settings_proxy' => 'Настройка прокси',
|
||||
'auto_refresh' => 'Авто-обновление',
|
||||
'auto_refresh_description' => 'Авто-обновление страницы статуса
|
||||
серверов.<br><span class="small">Время в секундах.
|
||||
Если указано 0, то страница не будет
|
||||
обновляться.</span>',
|
||||
'test' => 'Проверка',
|
||||
'test_email' => 'Сообщение будет отправлено на адрес указаный в
|
||||
профиле пользователя.',
|
||||
'test_sms' => 'SMS будет отправлено на номер телефона указаный в
|
||||
профиле пользователя.',
|
||||
'test_pushover' => 'Pushover уведомление будет отправленно на
|
||||
устройство указанное в профиле пользователя.',
|
||||
'test_telegram' => 'Уведомление Telegram будет отправлено на
|
||||
идентификатор чата, указанный в профиле
|
||||
пользователя.',
|
||||
'send' => 'Отправить',
|
||||
'test_subject' => 'Проверка',
|
||||
'test_message' => 'Тестовое сообщение',
|
||||
'email_sent' => 'Email отправлен',
|
||||
'email_error' => 'Ошибка отправки email',
|
||||
'sms_sent' => 'SMS отправлено',
|
||||
'sms_error' => 'При отправке SMS произошла ошибка: %s',
|
||||
'sms_error_nomobile' => 'Не удалось отправить тестовое SMS:
|
||||
действительный номер телефона не найден в
|
||||
вашем профиле.',
|
||||
'pushover_sent' => 'Pushover уведомление отправлено',
|
||||
'pushover_error' => 'Произошла ошибка во время отправки Pushover
|
||||
уведомления: %s',
|
||||
'pushover_error_noapp' => 'Не удалось отправить тестовое уведомление:
|
||||
Pushover "App API token" не найден в основных
|
||||
настройках.',
|
||||
'pushover_error_nokey' => 'Не удалось отправить тестовое уведомление:
|
||||
Pushover ключ не найден в вашем профиле.',
|
||||
'telegram_sent' => 'Уведомление в Telegram отправлено',
|
||||
'telegram_error' => 'Произошла ошибка при отправке уведомления в
|
||||
Telegram: %s',
|
||||
'telegram_error_notoken' => 'Не удалось отправить тестовое уведомление:
|
||||
Telegram API token не найден в основных настройках.',
|
||||
'telegram_error_noid' => 'Не удалось отправить тестовое уведомление:
|
||||
идентификатор чата не найден в вашем профиле.',
|
||||
'log_retention_period' => 'Период хранения логов',
|
||||
'log_retention_period_description' => 'Количество дней хранения логов
|
||||
уведомлений и архива аптайма серверов.
|
||||
Введите 0 для выключения очистки логов.',
|
||||
'log_retention_days' => 'дней',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Сервер \'%LABEL%\' сейчас НЕДОСТУПЕН: IP=%IP%, Порт=%PORT%.
|
||||
Ошибка=%ERROR%',
|
||||
'off_email_subject' => 'ВАЖНО: сервер \'%LABEL%\' сейчас НЕДОСТУПЕН',
|
||||
'off_email_body' => 'Невозможно подключиться к следующему
|
||||
серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт:
|
||||
%PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
|
||||
'off_pushover_title' => 'Cервер \'%LABEL%\' сейчас НЕДОСТУПЕН',
|
||||
'off_pushover_message' => 'Невозможно подключиться к следующему
|
||||
серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт:
|
||||
%PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
|
||||
'off_telegram_message' => 'Невозможно подключиться к следующему
|
||||
серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт:
|
||||
%PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
|
||||
'on_sms' => 'Сервер \'%LABEL%\' снова ДОСТУПЕН: IP=%IP%, Порт=%PORT%. Был
|
||||
недоступен: %LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'ВАЖНО: Сервер \'%LABEL%\' сейчас ДОСТУПЕН',
|
||||
'on_email_body' => 'Сервер \'%LABEL%\' снова доступен.<br>Был недоступен:
|
||||
%LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт:
|
||||
%PORT%<br>Дата: %DATE%',
|
||||
'on_pushover_title' => 'Сервер \'%LABEL%\' сейчас ДОСТУПЕН',
|
||||
'on_pushover_message' => 'Сервер \'%LABEL%\' снова доступен.<br>Был
|
||||
недоступен: %LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP:
|
||||
%IP%<br>Порт: %PORT%<br>Дата: %DATE%',
|
||||
'on_telegram_message' => 'Сервер \'%LABEL%\' снова доступен.<br>Был
|
||||
недоступен: %LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP:
|
||||
%IP%<br>Порт: %PORT%<br>Дата: %DATE%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Здравствуйте, %user_name%',
|
||||
'title_sign_in' => 'Пожалуйста, авторизуйтесь',
|
||||
'title_forgot' => 'Забыли пароль?',
|
||||
'title_reset' => 'Сбросить пароль',
|
||||
'submit' => 'Подтвердить',
|
||||
'remember_me' => 'Запомнить меня',
|
||||
'login' => 'Войти',
|
||||
'logout' => 'Выйти',
|
||||
'username' => 'Логин',
|
||||
'password' => 'Пароль',
|
||||
'password_repeat' => 'Повторить пароль',
|
||||
'password_forgot' => 'Забыли пароль?',
|
||||
'password_reset' => 'Сбросить пароль',
|
||||
'password_reset_email_subject' => 'Сброс пароля для PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Пожалуйста, используйте следующую ссылку
|
||||
для сброса пароля. Ссылка действительна 1
|
||||
час.<br><br>%link%',
|
||||
'error_user_incorrect' => 'Пользователь с указаными данными не найден.',
|
||||
'error_login_incorrect' => 'Информация указана неверно.',
|
||||
'error_login_passwords_nomatch' => 'Пароль указан неверно.',
|
||||
'error_reset_invalid_link' => 'Ссылка для сброса пароля недействительна.',
|
||||
'success_password_forgot' => 'Вам был отправлен email, с инструкциями по
|
||||
сбросу пароля.',
|
||||
'success_password_reset' => 'Ваш пароль был сброшен. Пожалуйста
|
||||
авторизуйтесь.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Доступ закрыт',
|
||||
'401_unauthorized_description' => 'У вас нет прав доступа к этой странице.',
|
||||
),
|
||||
);
|
||||
|
|
|
@ -0,0 +1,334 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Peter Misura <bzurko@gmail.com>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Slovensky - Slovak',
|
||||
'locale' => array(
|
||||
'0' => 'sk_SK.UTF-8',
|
||||
'1' => 'sk_SK',
|
||||
'2' => 'slovak',
|
||||
'3' => 'slovak',
|
||||
),
|
||||
'locale_tag' => 'sk',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Inštalácia',
|
||||
'action' => 'Akcia',
|
||||
'save' => 'Uložiť',
|
||||
'edit' => 'Upraviť',
|
||||
'delete' => 'Zmazať',
|
||||
'date' => 'Dátum',
|
||||
'message' => 'Správa',
|
||||
'yes' => 'Áno',
|
||||
'no' => 'Nie',
|
||||
'insert' => 'Vložiť',
|
||||
'add_new' => 'Pridať',
|
||||
'update_available' => 'Nová verzia - ({version}) je dostupná na <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Späť na začiatok',
|
||||
'go_back' => 'Späť',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Zrušiť',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Včera v %k:%M',
|
||||
'other_day_format' => '%A v %k:%M',
|
||||
'never' => 'Nikdy',
|
||||
'hours_ago' => 'pred %d hodinami',
|
||||
'an_hour_ago' => 'cca pred hodinou',
|
||||
'minutes_ago' => 'pred %d minútami',
|
||||
'a_minute_ago' => 'cca pred minútou',
|
||||
'seconds_ago' => 'pred %d sekundami',
|
||||
'a_second_ago' => 'pred chvíľou',
|
||||
'seconds' => 'sekúnd',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Konfigurácia',
|
||||
'server' => 'Servery',
|
||||
'server_log' => 'Log',
|
||||
'server_status' => 'Stav',
|
||||
'server_update' => 'Aktualizácia',
|
||||
'user' => 'Užívateľ',
|
||||
'help' => 'Nápoveda',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Užívateľ',
|
||||
'name' => 'Meno',
|
||||
'user_name' => 'Užívateľské meno',
|
||||
'password' => 'Heslo',
|
||||
'password_repeat' => 'Rovnaké heslo (pre kontrolu)',
|
||||
'password_leave_blank' => 'Nevyplňujte ak nechcete zmeniť.',
|
||||
'level' => 'Oprávnenie',
|
||||
'level_10' => 'Administrátor',
|
||||
'level_20' => 'Užívateľ',
|
||||
'level_description' => '<b>Administrátor</b> má plný prístup: môže spravovať servery, užívateľov a
|
||||
upraviť globálnu konfiguráciu.<br><b>Uživatel</b> má práva len na čítanie a
|
||||
spustiť aktualizáciu serverov, ktoré má priradené.',
|
||||
'mobile' => 'Mobil',
|
||||
'email' => 'E-mail',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover je služba umožňujúca jednoducho zasielať real-time upozornenia. Viac
|
||||
na <a href="https://pushover.net/">webe Pushover</a>',
|
||||
'pushover_key' => 'Pushover Token',
|
||||
'pushover_device' => 'Pushover Zariadenie',
|
||||
'pushover_device_description' => 'Název zariadenia, na ktoré má byť správa odoslaná. Ponechajte prázdne
|
||||
pre odoslanie na všetky zariadenia.',
|
||||
'delete_title' => 'Zmazať užívateľa',
|
||||
'delete_message' => 'Naozaj zmazať užívateľa \'%1\'?',
|
||||
'deleted' => 'Užívateľ zmazaný.',
|
||||
'updated' => 'Užívateľ aktualizovaný.',
|
||||
'inserted' => 'Užívateľ pridaný.',
|
||||
'profile' => 'Profil',
|
||||
'profile_updated' => 'Váš užívateľský profil bol upravený.',
|
||||
'error_user_name_bad_length' => 'Užívateľské meno musí obsahovať 2 až 64 znakov.',
|
||||
'error_user_name_invalid' => 'Užívateľské meno môže obsahovať iba písmena (a-z, A-Z), čísla (0-9),
|
||||
bodky (.) a podtržítka (_).',
|
||||
'error_user_name_exists' => 'Zadané uživatelské jméno již existuje v databázi.',
|
||||
'error_user_email_bad_length' => 'E-mailová adresa musí obsahovat 5 až 255 znaků .',
|
||||
'error_user_email_invalid' => 'E-mailová adresa je neplatná',
|
||||
'error_user_level_invalid' => 'Zadané oprávnenie je neplatné.',
|
||||
'error_user_no_match' => 'Užívateľ nebol najdený.',
|
||||
'error_user_password_invalid' => 'Zadané heslo je neplatné.',
|
||||
'error_user_password_no_match' => 'Zadaná heslá sa nezhodujú.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Záznamy logu',
|
||||
'type' => 'Typ',
|
||||
'status' => 'Stav',
|
||||
'email' => 'E-mail',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'Žiadne záznamy',
|
||||
'clear' => 'Jasný protokol',
|
||||
'delete_title' => 'Jasný protokol',
|
||||
'delete_message' => 'Naozaj chcete odstrániť <b>všetky</b> záznamy?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Server',
|
||||
'status' => 'Stav',
|
||||
'label' => 'Popis',
|
||||
'domain' => 'Doména/IP',
|
||||
'timeout' => 'Časový limit',
|
||||
'timeout_description' => 'Počet sekúnd čakania na odpoveď serveru.',
|
||||
'authentication_settings' => 'Nastavenie autentizacie',
|
||||
'optional' => 'voliteľný',
|
||||
'website_username' => 'Užívateľské meno',
|
||||
'website_username_description' => 'Užívateľské meno pre prístup na stránku. (Len Apache autorizácia je
|
||||
podporovaná.)',
|
||||
'website_password' => 'Heslo',
|
||||
'website_password_description' => 'Heslo pre prístup na stránku. Heslo je v databázi šifrované.',
|
||||
'fieldset_monitoring' => 'Monitoring',
|
||||
'fieldset_permissions' => 'Oprávnenie',
|
||||
'port' => 'Port',
|
||||
'custom_port' => 'Užívateľský Port',
|
||||
'popular_ports' => 'Populárne Porty',
|
||||
'please_select' => 'Prosím vyberte',
|
||||
'type' => 'Typ',
|
||||
'type_website' => 'Web',
|
||||
'type_service' => 'Služba',
|
||||
'pattern' => 'Vyhledat reťazec/vzor',
|
||||
'pattern_description' => 'Pokiaľ reťazec nebude na webe nájdený, bude server označený ako offline.
|
||||
Regulárne výrazy sú povolené.',
|
||||
'last_check' => 'Posledná kontrola',
|
||||
'last_online' => 'Naposledy online',
|
||||
'monitoring' => 'Monitoring',
|
||||
'no_monitoring' => 'Žiadne monitorované služby',
|
||||
'email' => 'E-mail',
|
||||
'send_email' => 'Odoslať e-mail',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Odoslať SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Užívatelia',
|
||||
'delete_title' => 'Zmazať server',
|
||||
'delete_message' => 'Naozaj si prajete zmazať \'%1\'?',
|
||||
'deleted' => 'Server zmazaný.',
|
||||
'updated' => 'Server aktualizovaný.',
|
||||
'inserted' => 'Server pridaný.',
|
||||
'latency' => 'Latencia',
|
||||
'latency_max' => 'Latencia (maximum)',
|
||||
'latency_min' => 'Latencia (minimum)',
|
||||
'latency_avg' => 'Latencia (priemer)',
|
||||
'uptime' => 'Uptime',
|
||||
'year' => 'Rok',
|
||||
'month' => 'Mesiac',
|
||||
'week' => 'Týždeň',
|
||||
'day' => 'Deň',
|
||||
'hour' => 'Hodina',
|
||||
'warning_threshold' => 'Stropná hranica varovania',
|
||||
'warning_threshold_description' => 'Počet neúspešných pokusov pred označením serveru ako offline.',
|
||||
'chart_last_week' => 'Minulý týždeň',
|
||||
'chart_history' => 'História',
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS upozornenia sú vypnuté.',
|
||||
'warning_notifications_disabled_email' => 'E-mailové upozornenia sú vypnuté.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover upozornenia sú vypnuté.',
|
||||
'error_server_no_match' => 'Server nenájdený.',
|
||||
'error_server_label_bad_length' => 'Popisok musí obsahovať 1 až 255 znakov.',
|
||||
'error_server_ip_bad_length' => 'Doména/IP adresa musí obsahovať 1 až 255 znakov.',
|
||||
'error_server_ip_bad_service' => 'IP adresa nie je platná.',
|
||||
'error_server_ip_bad_website' => 'URL webu nie je platná.',
|
||||
'error_server_type_invalid' => 'Zvolený typ serveru nie je platný',
|
||||
'error_server_warning_threshold_invalid' => 'Hranica varovania musí byť číslo väčšie ako 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Všeobecné',
|
||||
'language' => 'Jazyk',
|
||||
'show_update' => 'Kontrolovať aktualizácie?',
|
||||
'password_encrypt_key' => 'Šifrovací kľúč pre heslá',
|
||||
'password_encrypt_key_note' => 'Týmto klúčom sa šifrujú heslá, ktoré sa ukladajú na serveroch pre
|
||||
prístup na webové stránky. Ak kľúč zmeníte, budú uložené heslá
|
||||
neplatné!',
|
||||
'email_status' => 'Povoliť odosielanie e-mailu',
|
||||
'email_from_email' => 'E-mailová adresa odosielateľa',
|
||||
'email_from_name' => 'Jméno odosielateľa',
|
||||
'email_smtp' => 'Zapnúť SMTP',
|
||||
'email_smtp_host' => 'SMTP adresa',
|
||||
'email_smtp_port' => 'SMTP port',
|
||||
'email_smtp_security' => 'SMTP zabezpečenie',
|
||||
'email_smtp_security_none' => 'žiadne',
|
||||
'email_smtp_username' => 'SMTP užívateľské meno',
|
||||
'email_smtp_password' => 'SMTP heslo',
|
||||
'email_smtp_noauth' => 'Nechajte prázdne pre použitie SMTP bez hesla',
|
||||
'sms_status' => 'Povoliť odosielanie textových správ',
|
||||
'sms_gateway' => 'Brána použitá pro odosielanie správ',
|
||||
'sms_gateway_username' => 'Užívateľské meno brány',
|
||||
'sms_gateway_password' => 'Heslo brány',
|
||||
'sms_from' => 'Telefónne číslo odosielateľa',
|
||||
'pushover_status' => 'Povoliť zasielanie Pushover správ',
|
||||
'pushover_description' => 'Pushover je služba umožňujúca jednoducho zasielať real-time upozornenia. Viac
|
||||
na <a href="https://pushover.net/">webe Pushover</a>',
|
||||
'pushover_clone_app' => 'Kliknite pre vytvorenie Pushover aplikácie',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Pred použitím Pushoveru sa musíte <a href="%1$s" target="_blank"
|
||||
rel="noopener">registrovať</a> a získať API Token.',
|
||||
'alert_type' => 'Zvoľte kedy si prajete byť upozornení.',
|
||||
'alert_type_description' => '<b>Zmena stavu:</b> Obdržíte upozornenie pri zmene stavu, teda: online ->
|
||||
offline alebo offline -> online.<br><br /><b>Offline:</b> Obdržíte upozornenie,
|
||||
keď server prejde *PO PRVÝ KRÁT* do offline stavu. Napríklad, pokiaľ je cron
|
||||
nastavený na 15 minút a sledovaný server bude offline mezi 01:00 a 06:00, tak
|
||||
obdržíte upozornenie iba o 01:00.<br><br><b>Vždy:</b> Obdržíte upozornenie
|
||||
pri každom spustení kontroly, teda aj pokiaľ bude server offline niekoľko
|
||||
hodín.',
|
||||
'alert_type_status' => 'Zmena stavu',
|
||||
'alert_type_offline' => 'Offline',
|
||||
'alert_type_always' => 'Vždy',
|
||||
'log_status' => 'Log',
|
||||
'log_status_description' => 'Pokiaľ je Log nastavený na hodnotu TRUE, systém do neho zapíše všetky
|
||||
upozornenia.',
|
||||
'log_email' => 'Logovať odoslané e-maily',
|
||||
'log_sms' => 'Logovať odoslané textové správy',
|
||||
'log_pushover' => 'Logovať odoslané Pushover správy',
|
||||
'updated' => 'Nastavenie bolo aktualizované.',
|
||||
'tab_email' => 'E-mail',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Nastavenie e-mailov',
|
||||
'settings_sms' => 'Nastavenie textových správ',
|
||||
'settings_pushover' => 'Nastavenie Pushover',
|
||||
'settings_notification' => 'Nastavenie upozornení',
|
||||
'settings_log' => 'Nastavenie logu',
|
||||
'auto_refresh' => 'Automaticky obnoviť',
|
||||
'auto_refresh_description' => 'Automaticky obnoviť stránku Servery.<br><span class="small">Čas v
|
||||
sekundách, 0 pre vypnutie automatického obnovenia.</span>',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'E-mail bude odoslaný na adresu uvedenú v užívateľskom profile.',
|
||||
'test_sms' => 'SMS bude odoslaná na telefónne číslo uvedené v užívateľskom profile.',
|
||||
'test_pushover' => 'Pushover upozornenie bude odoslané užívateľovi/zariadeniu podľa nastavení v
|
||||
užívateľskom profile.',
|
||||
'send' => 'Odoslať',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Testovacia správa',
|
||||
'email_sent' => 'E-mail odoslaný',
|
||||
'email_error' => 'Chyba pri odosielaní e-mailu',
|
||||
'sms_sent' => 'SMS odoslaná',
|
||||
'sms_error' => 'Chyba pri odosielaní SMS. %s',
|
||||
'sms_error_nomobile' => 'Nebolo možné odoslať SMS: v užívateľskom profile nebylo nájdené platné
|
||||
telefónne číslo.',
|
||||
'pushover_sent' => 'Pushover upozornenie odoslané.',
|
||||
'pushover_error' => 'Nastala chyba pri odosielaní Pushover upozornenia: %s',
|
||||
'pushover_error_noapp' => 'Nebolo možné odoslať testovacie upozornenie: v globálnom nastavení nebol
|
||||
nájdený žiaden API token.',
|
||||
'pushover_error_nokey' => 'Nebylo možné odoslať testovacie upozornenie: ve vašom profile nie je
|
||||
definovaný Pushover key.',
|
||||
'log_retention_period' => 'Rotácia logu',
|
||||
'log_retention_period_description' => 'Počet dní po které budú uchované logy upozornení. Vložte 0 pre
|
||||
vypnutie autorotáce.',
|
||||
'log_retention_days' => 'dní',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Server \'%LABEL%\' je offline: ip=%IP%, port=%PORT%. Chyba=%ERROR%',
|
||||
'off_email_subject' => 'DÔLEŽITÉ: Server \'%LABEL%\' je offline',
|
||||
'off_email_body' => 'Nebolo možné spojiť sa so serverom:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Chyba: %ERROR%<br>Dátum: %DATE%',
|
||||
'off_pushover_title' => 'Server \'%LABEL%\' je offline',
|
||||
'off_pushover_message' => 'Nebolo možné spojiť sa so serverom:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Chyba: %ERROR%<br>Dátum: %DATE%',
|
||||
'on_sms' => 'Server \'%LABEL%\' je online: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'DÔLEŽITÉ: Server \'%LABEL%\' je online',
|
||||
'on_email_body' => 'Server \'%LABEL%\' je opäť online, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Dátum:
|
||||
%DATE%',
|
||||
'on_pushover_title' => 'Server \'%LABEL%\' je online',
|
||||
'on_pushover_message' => 'Server \'%LABEL%\' je znovu online, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Dátum: %DATE%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Vitajte, %user_name%',
|
||||
'title_sign_in' => 'Prosím prihláste sa',
|
||||
'title_forgot' => 'Zabudnuté heslo?',
|
||||
'title_reset' => 'Obnova hesla',
|
||||
'submit' => 'Odoslať',
|
||||
'remember_me' => 'Zapamätať údaje',
|
||||
'login' => 'Prihlásiť',
|
||||
'logout' => 'Odhlásiť',
|
||||
'username' => 'Užívateľské meno',
|
||||
'password' => 'Heslo',
|
||||
'password_repeat' => 'Opakujte heslo',
|
||||
'password_forgot' => 'Zabudnuté heslo?',
|
||||
'password_reset' => 'Obnoviť heslo',
|
||||
'password_reset_email_subject' => 'Obnoviť heslo pre PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Použite následujúci odkaz pre obnovenie hesla. Odkaz je platný jednu
|
||||
hodinu.<br><br>%link%',
|
||||
'error_user_incorrect' => 'Zadané užívateľské meno nebolo nájdené.',
|
||||
'error_login_incorrect' => 'Prihlásenie nebolo úspešné.',
|
||||
'error_login_passwords_nomatch' => 'Zadané heslá sa nezhodujú.',
|
||||
'error_reset_invalid_link' => 'Odkaz je neplatný.',
|
||||
'success_password_forgot' => 'Na vašu e-mailovú adresu bol zaslaný e-mail s informáciami pre obnovu hesla.',
|
||||
'success_password_reset' => 'Vaše heslo bolo úspešne obnovené. Prosím prihláste sa.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Nedostatočné oprávnenia',
|
||||
'401_unauthorized_description' => 'Nemáte oprávnenie zobraziť túto stránku.',
|
||||
),
|
||||
);
|
|
@ -0,0 +1,322 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Matej Kovacic <https://github.com/MatejKovacic>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Slovenščina - Slovenian',
|
||||
'locale' => array(
|
||||
'0' => 'sl_SI.UTF-8',
|
||||
'1' => 'sl_SI',
|
||||
'2' => 'slovenščina',
|
||||
'3' => 'slovenščina',
|
||||
),
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Install',
|
||||
'action' => 'Action',
|
||||
'save' => 'Shrani',
|
||||
'edit' => 'Uredi',
|
||||
'delete' => 'Izbriši',
|
||||
'date' => 'Datum',
|
||||
'message' => 'Sporočilo',
|
||||
'yes' => 'da',
|
||||
'no' => 'ne',
|
||||
'insert' => 'Vstavi',
|
||||
'add_new' => 'Dodaj novega',
|
||||
'update_available' => 'Na voljo je nova različica ({version}); prenesti jo je mogoče iz <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Nazaj na vrh',
|
||||
'go_back' => 'Nazaj',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Prekini',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'včeraj ob %k:%M',
|
||||
'other_day_format' => '%A at %k:%M',
|
||||
'never' => 'nikoli',
|
||||
'hours_ago' => 'pred %d urami',
|
||||
'an_hour_ago' => 'pred približno uro',
|
||||
'minutes_ago' => 'pred %d minutami',
|
||||
'a_minute_ago' => 'pred približno minuto',
|
||||
'seconds_ago' => 'pred %d sekundami',
|
||||
'a_second_ago' => 'pred sekundo',
|
||||
'seconds' => 'sekund',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Nastavitve',
|
||||
'server' => 'Strežniki',
|
||||
'server_log' => 'Dnevnik',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => 'Posodobitev statusa',
|
||||
'user' => 'Uporabniki',
|
||||
'help' => 'Pomoč',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Uporabnik',
|
||||
'name' => 'Ime',
|
||||
'user_name' => 'Uporabniško ime',
|
||||
'password' => 'Geslo',
|
||||
'password_repeat' => 'Geslo (ponovno)',
|
||||
'password_leave_blank' => 'Če ne želite spremeniti pustite prazno',
|
||||
'level' => 'Nivo dostopa',
|
||||
'level_10' => 'Administrator',
|
||||
'level_20' => 'Uporabnik',
|
||||
'level_description' => '<b>Administratorji</b> imajo poln dostop: lahko upravljajo strežnike, uporabnike in
|
||||
urejajo globalne nastavitve.<br><b>Uporabniki</b> lahko samo vidijo status in
|
||||
poganjajo posodobitev statusa za strežnike, ki so jim bili dodeljeni.',
|
||||
'mobile' => 'Mobilni telefon',
|
||||
'email' => 'E-pošta',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover je storitev, ki omogoča enostavno prejemanje obvestil v realnem času.
|
||||
Več informacij je na voljo <a href="https://pushover.net/" target="_blank">na
|
||||
njihovi spletni strani</a>.',
|
||||
'pushover_key' => 'Pushover ključ',
|
||||
'pushover_device' => 'Pushover naprava',
|
||||
'pushover_device_description' => 'Ime naprave na katero naj se pošlje obvestilo. Če želite obvestilo
|
||||
poslati na vse naprave, pustite prazno.',
|
||||
'delete_title' => 'Izbriši uporabnika',
|
||||
'delete_message' => 'Ste prepričani, da želite izbrisati uporabnika \'%1\'?',
|
||||
'deleted' => 'Uporabnik izbrisan.',
|
||||
'updated' => 'Podatki uporabnika posodobljeni.',
|
||||
'inserted' => 'Uporabnik dodan.',
|
||||
'profile' => 'Profil',
|
||||
'profile_updated' => 'Vaš profil je bil posodobljen.',
|
||||
'error_user_name_bad_length' => 'Uporabniško ime mora biti dolgo med 2 in 64 znakov.',
|
||||
'error_user_name_invalid' => 'Uporabniško ime lahko vsebuje samo črke (a-z, A-Z), številke (0-9), pike (.)
|
||||
in podčrtaje (_).',
|
||||
'error_user_name_exists' => 'Uporabniško ime v bazi podatkov že obstaja.',
|
||||
'error_user_email_bad_length' => 'E-naslov mora biti med 5 in 255 znaki.',
|
||||
'error_user_email_invalid' => 'E-naslov ni veljaven.',
|
||||
'error_user_level_invalid' => 'Izbrani nivo dostopa za uporabnika ni veljaven.',
|
||||
'error_user_no_match' => 'Uporabnika ne najdem v bazi podatkov.',
|
||||
'error_user_password_invalid' => 'Vneseno geslo ni veljavno.',
|
||||
'error_user_password_no_match' => 'Gesli se ne ujemata.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Dnevniški zapisi',
|
||||
'type' => 'Tip',
|
||||
'status' => 'Status',
|
||||
'email' => 'E-pošta',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'ni dnevniških zapisov',
|
||||
'clear' => 'Počisti dnevnik',
|
||||
'delete_title' => 'Brisanje dnevnika',
|
||||
'delete_message' => 'Ali ste prepričani, da želite izbrisati <b>vse</b> dnevnike?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Strežnik',
|
||||
'status' => 'Status',
|
||||
'label' => 'Ime',
|
||||
'domain' => 'Domena / IP naslov',
|
||||
'timeout' => 'Časovna omejitev',
|
||||
'timeout_description' => 'Koliko sekund naj čakam na odgovor strežnika.',
|
||||
'port' => 'Vrata',
|
||||
'type' => 'Tip',
|
||||
'type_website' => 'Spletna stran (website)',
|
||||
'type_service' => 'Storitev (service)',
|
||||
'pattern' => 'Iskani niz oz. vzorec',
|
||||
'pattern_description' => 'Če ta vzorec ne bo najden na spletni strani, bo strežnik označen kot nedelujoč.
|
||||
Dovoljeni so regularni izrazi.',
|
||||
'last_check' => 'Zadnje preverjanje',
|
||||
'last_online' => 'Nazadnje dostopen',
|
||||
'monitoring' => 'Spremljanje',
|
||||
'no_monitoring' => 'Se ne spremlja',
|
||||
'email' => 'E-pošta',
|
||||
'send_email' => 'Pošlji e-pošto',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Pošlji SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Uporabniki',
|
||||
'delete_title' => 'Izbriši strežnik',
|
||||
'delete_message' => 'Ste prepričani, da želite izbrisati strežnik \'%1\'?',
|
||||
'deleted' => 'Strežnik izbrisan.',
|
||||
'updated' => 'Podatki o strežniku posodobljeni.',
|
||||
'inserted' => 'Strežnik dodan.',
|
||||
'latency' => 'Zakasnitev',
|
||||
'latency_max' => 'Zakasnitev (največja)',
|
||||
'latency_min' => 'Zakasnitev (najmanjša)',
|
||||
'latency_avg' => 'Zakasnitev (povprečna)',
|
||||
'uptime' => 'Neprekinjeno delovanje',
|
||||
'year' => 'leto',
|
||||
'month' => 'mesec',
|
||||
'week' => 'teden',
|
||||
'day' => 'dan',
|
||||
'hour' => 'ura',
|
||||
'warning_threshold' => 'Prag za opozorilo',
|
||||
'warning_threshold_description' => 'Število neuspešnih preverjanj preden je strežnik označen kot
|
||||
nedelujoč.',
|
||||
'chart_last_week' => 'prejšnji teden',
|
||||
'chart_history' => 'Zgodovina',
|
||||
'chart_day_format' => '%m. %d. %Y',
|
||||
'chart_long_date_format' => '%m. %d. %Y %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS obvestila so onemogočena.',
|
||||
'warning_notifications_disabled_email' => 'Obvestila po e-pošti so onemogočena.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover obvestila so onemogočena.',
|
||||
'error_server_no_match' => 'Strežnik ni najden.',
|
||||
'error_server_label_bad_length' => 'Ime mora biti med 1 in 255 znaki.',
|
||||
'error_server_ip_bad_length' => 'Domena / IP naslov mora biti med 1 in 255 znaki.',
|
||||
'error_server_ip_bad_service' => 'IP naslov ni veljaven.',
|
||||
'error_server_ip_bad_website' => 'URL naslov spletne strani ni veljaven.',
|
||||
'error_server_type_invalid' => 'Izbrani tip strežnika ni veljaven.',
|
||||
'error_server_warning_threshold_invalid' => 'Prag za opozorilo mora biti število večje od 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Splošno',
|
||||
'language' => 'Jezik',
|
||||
'show_update' => 'Preverim za posodobitve?',
|
||||
'email_status' => 'Dovolim pošiljanje e-pošte',
|
||||
'email_from_email' => 'E-poštni naslov pošiljatelja',
|
||||
'email_from_name' => 'Ime pošiljatelja',
|
||||
'email_smtp' => 'Enable SMTP',
|
||||
'email_smtp_host' => 'SMTP strežnik',
|
||||
'email_smtp_port' => 'SMTP vrata',
|
||||
'email_smtp_security' => 'SMTP varnost',
|
||||
'email_smtp_security_none' => 'brez',
|
||||
'email_smtp_username' => 'SMTP uporabniško ime',
|
||||
'email_smtp_password' => 'SMTP geslo',
|
||||
'email_smtp_noauth' => 'Če ni potrebna overovitev, pustite prazno',
|
||||
'sms_status' => 'Dovolim pošiljanje SMS sporočil?',
|
||||
'sms_gateway' => 'Prehod za pošiljanje SMS sporočil',
|
||||
'sms_gateway_username' => 'Uporabniško ime SMS prehoda',
|
||||
'sms_gateway_password' => 'Geslo SMS prehoda',
|
||||
'sms_from' => 'Telefonska številka pošiljatelja',
|
||||
'pushover_status' => 'Dovolim pošiljanje Pushover sporočil',
|
||||
'pushover_description' => 'Pushover je storitev, ki omogoča enostavno prejemanje obvestil v realnem času.
|
||||
Več informacij je na voljo <a href="https://pushover.net/" target="_blank">na
|
||||
njihovi spletni strani</a>.',
|
||||
'pushover_clone_app' => 'Kliknite za ustvarjanje vaše Pushover aplikacije',
|
||||
'pushover_api_token' => 'Pushover API žeton',
|
||||
'pushover_api_token_description' => 'Pred uporabo storitve Pushover, morate na njihovi spletni strani <a
|
||||
href="%1$s" target="_blank" rel="noopener">registrirati aplikacijo</a>,
|
||||
tukaj pa vnesti API žeton.',
|
||||
'alert_type' => 'Izberite kdaj naj se vam pošljejo obvestila.',
|
||||
'alert_type_description' => '<b>Sprememba statusa:</b> Obvestilo boste dobili ob vsaki spremembi statusa,
|
||||
torej iz delujoč -> nedelujoč ter nedelujoč -> delujoč.<br><br
|
||||
/><b>Nedelujoč:</b> Obvestilo boste dobili samo, ko se bo strežnik PRVIKRAT
|
||||
prenehal odzivati. Na primer:nastavljeno imate preverjanje strežnikov vsakih 15
|
||||
minut. Strežnik preneha delovati ob 13h in ostane nedelujoč do 18h. Dobili
|
||||
boste obvestilo samo ob 13h.<br><br><b>Vedno:</b> Obvestilo boste dobili vedno,
|
||||
ko se izvede skripta za preverjanje in strežnik ne deluje, pa čeprav bo
|
||||
strežnik nedelujoč več ur.',
|
||||
'alert_type_status' => 'Sprememba statusa',
|
||||
'alert_type_offline' => 'Nedelujoč',
|
||||
'alert_type_always' => 'Vedno',
|
||||
'log_status' => 'Beleženje statusa',
|
||||
'log_status_description' => 'Če je beleženje statusa vključeno, se bodo beležili vsi dogodki povezani s
|
||||
pošiljanjem obvestil.',
|
||||
'log_email' => 'Beleži e-pošto, ki jo pošilja aplikacija',
|
||||
'log_sms' => 'Beleži SMS sporočila, ki jih pošilja aplikacija',
|
||||
'log_pushover' => 'Beleži Pushover sporočila, ki jih pošilja aplikacija',
|
||||
'updated' => 'Nastavitve so bile posodobljene.',
|
||||
'tab_email' => 'E-pošta',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Nastavitve e-pošte',
|
||||
'settings_sms' => 'Nastavitve SMS sporočil',
|
||||
'settings_pushover' => 'Nastavitve Pushover sporočil',
|
||||
'settings_notification' => 'Nastavitve obvestil',
|
||||
'settings_log' => 'Hramba dnevniških zapisov',
|
||||
'auto_refresh' => 'Samodejno posodabljanje',
|
||||
'auto_refresh_description' => 'Samodejno posodabljanje pregleda statusa strežnikov.<br><span
|
||||
class="small">Čas v sekundah. Če je vrednost 0 se stran ne bo samodejno
|
||||
posodabljala.</span>',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'Na naslov, ki ste ga določili v vašem profilu, bo poslano e-sporočilo.',
|
||||
'test_sms' => 'Na telefonsko številko, ki ste jo določili v vašem profilu, bo poslan SMS.',
|
||||
'test_pushover' => 'Na uporabniški ključ/napravo, ki ste ju določili v vašem profilu, bo poslano Pushover
|
||||
sporočilo.',
|
||||
'send' => 'Pošlji',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Testno sporočilo',
|
||||
'email_sent' => 'E-pošta poslana',
|
||||
'email_error' => 'Napaka pri pošiljanju e-pošte',
|
||||
'sms_sent' => 'SMS sporočilo poslano',
|
||||
'sms_error' => 'Napaka pri pošiljanju SMS sporočila. %s',
|
||||
'sms_error_nomobile' => 'Ni mogoče poslati testnega SMS sporočila: v vašem profilu ni vpisana veljavna
|
||||
telefonska številka.',
|
||||
'pushover_sent' => 'Pushover obvestilo poslano',
|
||||
'pushover_error' => 'Napaka pri pošiljanju Pushover sporočila: %s',
|
||||
'pushover_error_noapp' => 'Ni mogoče poslati testnega sporočila: med globalnimi nastavitvami ne najdem
|
||||
Pushover API žetona.',
|
||||
'pushover_error_nokey' => 'Ni mogoče poslati testnega sporočila: med vašimi nastavitvami ne najdem Pushover
|
||||
ključa.',
|
||||
'log_retention_period' => 'Čas hrambe podatov',
|
||||
'log_retention_period_description' => 'Število dni, ko naj se hranijo podatki o obvestilih in statusu
|
||||
strežnikov. Če želite podatke hraniti trajno, vnesite 0.',
|
||||
'log_retention_days' => 'dni',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Streznik \'%LABEL%\' NE deluje: IP=%IP%, vrata=%PORT%. Napaka=%ERROR%',
|
||||
'off_email_subject' => 'POMEMBNO: Strežnik \'%LABEL%\' NE deluje',
|
||||
'off_email_body' => 'Pri povezovanju na streznik je prislo do napake:<br><br>Streznik: %LABEL%<br>IP:
|
||||
%IP%<br>vrata: %PORT%<br>Napaka: %ERROR%<br>Datum: %DATE%',
|
||||
'off_pushover_title' => 'Streznik \'%LABEL%\' NE deluje',
|
||||
'off_pushover_message' => 'Ni se mogoče povezati na naslednji streznik:<br><br>Streznik: %LABEL%<br>IP:
|
||||
%IP%<br>Vrata: %PORT%<br>Error: %ERROR%<br>Datum: %DATE%',
|
||||
'on_sms' => 'Streznik \'%LABEL%\' deluje: IP=%IP%, vrata=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'OBVESTILO: Streznik \'%LABEL%\' ponovno deluje',
|
||||
'on_email_body' => 'Streznik \'%LABEL%\' ponovno deluje, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Strežnik: %LABEL%<br>IP: %IP%<br>Vrata: %PORT%<br>Datum:
|
||||
%DATE%',
|
||||
'on_pushover_title' => 'Streznik \'%LABEL%\' deluje',
|
||||
'on_pushover_message' => 'Streznik \'%LABEL%\' ponovno deluje, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Vrata:
|
||||
%PORT%<br>Datum: %DATE%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Pozdravljeni, %user_name%',
|
||||
'title_sign_in' => 'Prosimo, prijavite se',
|
||||
'title_forgot' => 'Ali ste pozabili geslo?',
|
||||
'title_reset' => 'Ponastavitev gesla',
|
||||
'submit' => 'Pošlji',
|
||||
'remember_me' => 'Zapomni si me',
|
||||
'login' => 'Prijava',
|
||||
'logout' => 'Odjava',
|
||||
'username' => 'Uporabniško ime',
|
||||
'password' => 'Geslo',
|
||||
'password_repeat' => 'Geslo (ponovno)',
|
||||
'password_forgot' => 'Pozabljeno geslo?',
|
||||
'password_reset' => 'Ponastavitev gesla',
|
||||
'password_reset_email_subject' => 'Ponastavite svoje geslo za PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Za ponastavitev gesla uporabite spodnjo povezavo. Pomembno: povezava poteče v
|
||||
1 uri.<br><br>%link%',
|
||||
'error_user_incorrect' => 'Vpisanega uporabniškega imena ne najdem.',
|
||||
'error_login_incorrect' => 'Podatki so napačni.',
|
||||
'error_login_passwords_nomatch' => 'Vneseno geslo ni pravilno.',
|
||||
'error_reset_invalid_link' => 'Povezava za ponastavitev gesla, ki ste jo vnesli, ni pravilna.',
|
||||
'success_password_forgot' => 'Poslano vam je bilo sporočilo z navodili za ponastavitev vašega gesla.',
|
||||
'success_password_reset' => 'Vaše geslo je bilo uspešno ponastavljeno. Prijavite se prosim.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Nepooblaščen dostop',
|
||||
'401_unauthorized_description' => 'Nimate dovoljenja za ogled te strani.',
|
||||
),
|
||||
);
|
|
@ -0,0 +1,318 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author andlil
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Svenska - Swedish',
|
||||
'locale' => array(
|
||||
'0' => 'sv_SE.UTF-8',
|
||||
'1' => 'sv_SE',
|
||||
'2' => 'svenska',
|
||||
'3' => 'svenska-SE',
|
||||
),
|
||||
'locale_tag' => 'sv',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Installera',
|
||||
'action' => 'Åtgärd',
|
||||
'save' => 'Spara',
|
||||
'edit' => 'Redigera',
|
||||
'delete' => 'Radera',
|
||||
'date' => 'Datum',
|
||||
'message' => 'Meddelande',
|
||||
'yes' => 'Ja',
|
||||
'no' => 'Nej',
|
||||
'insert' => 'Infoga',
|
||||
'add_new' => 'Lägg till',
|
||||
'update_available' => 'En ny version ({version}) finns tillgänglig från <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Gå upp',
|
||||
'go_back' => 'Gå tillbaka',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Avbryt',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Igår kl %k:%M',
|
||||
'other_day_format' => '%A kl %k:%M',
|
||||
'never' => 'Aldrig',
|
||||
'hours_ago' => '%d timmar sedan',
|
||||
'an_hour_ago' => 'ungefär en timme sedan',
|
||||
'minutes_ago' => '%d minuter sedan',
|
||||
'a_minute_ago' => 'ungefär en minut sen',
|
||||
'seconds_ago' => '%d sekunder sedan',
|
||||
'a_second_ago' => 'en sekund sedan',
|
||||
'seconds' => 'sekunder',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Inställningar',
|
||||
'server' => 'Servrar',
|
||||
'server_log' => 'Logg',
|
||||
'server_status' => 'Status',
|
||||
'server_update' => 'Uppdatera',
|
||||
'user' => 'Användare',
|
||||
'help' => 'Hjälp',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Användare',
|
||||
'name' => 'Namn',
|
||||
'user_name' => 'Användarnamn',
|
||||
'password' => 'Lösenord',
|
||||
'password_repeat' => 'Upprepa lösenord',
|
||||
'password_leave_blank' => 'Lämna blankt för att inte ändra ',
|
||||
'level' => 'Nivå',
|
||||
'level_10' => 'Administratör',
|
||||
'level_20' => 'Användare',
|
||||
'level_description' => '<b>Administratörer</b> har fulla rättigheter: de kan hantera servrar, användare och
|
||||
redigera gemensamma inställningar.<br><b>Användare</b> kan bara se och köra
|
||||
uppdateraren för de servrar som de blivit tilldelade.',
|
||||
'mobile' => 'Mobilnummer',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover är en tjänst som skickar meddelande i realtid. Se <a
|
||||
href="https://pushover.net/" target="_blank">deras webbsida</a> för mer
|
||||
information.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => 'Enhetsnman att skicka meddelande till. Lämna tomt för att skicka till alla
|
||||
enheter.',
|
||||
'delete_title' => 'Radera användare',
|
||||
'delete_message' => 'Är du säker att du vill radera användare \'%1\'?',
|
||||
'deleted' => 'Användare raderad.',
|
||||
'updated' => 'Användare uppdaterad.',
|
||||
'inserted' => 'Användare tillagd.',
|
||||
'profile' => 'Profil',
|
||||
'profile_updated' => 'Din profil har uppdaterats.',
|
||||
'error_user_name_bad_length' => 'Användarnamn måste vara mellan 2 och 64 tecken.',
|
||||
'error_user_name_invalid' => 'Användarnamnet får bara innehålla bokstäver (a-z, A-Z), siffror (0-9),
|
||||
prickar (.) and understreck (_).',
|
||||
'error_user_name_exists' => 'Användarnamnet används redan.',
|
||||
'error_user_email_bad_length' => 'Email-adressen måste vara mellan 5 och 255 tecken.',
|
||||
'error_user_email_invalid' => 'Email-adressen är ogiltig.',
|
||||
'error_user_level_invalid' => 'Behörighetsnivån är ogiltig.',
|
||||
'error_user_no_match' => 'Användaren kunde inte hittas i databasen.',
|
||||
'error_user_password_invalid' => 'Lösenordet är ogiltigt.',
|
||||
'error_user_password_no_match' => 'Lösenorden stämmer inte överens.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Logg-poster',
|
||||
'type' => 'Typ',
|
||||
'status' => 'Status',
|
||||
'email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'Inga loggar',
|
||||
'clear' => 'Tydlig logg',
|
||||
'delete_title' => 'Tydlig logg',
|
||||
'delete_message' => 'Är du säker på att du vill radera <b>alla</b> loggar?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Server',
|
||||
'status' => 'Status',
|
||||
'label' => 'Namn',
|
||||
'domain' => 'Domän/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Antal sekunder att vänta på svar.',
|
||||
'port' => 'Port',
|
||||
'type' => 'Typ',
|
||||
'type_website' => 'Website',
|
||||
'type_service' => 'Service',
|
||||
'pattern' => 'Hitta sträng/mönster',
|
||||
'pattern_description' => 'Om detta mönster inte hittas i svaret kommer servern att markeras offline. "Regular
|
||||
expressions" är tillåtna.',
|
||||
'last_check' => 'Senaste kontroll',
|
||||
'last_online' => 'Senast online',
|
||||
'last_offline' => 'Senast offline',
|
||||
'monitoring' => 'Övervakas',
|
||||
'no_monitoring' => 'Övervakas inte',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Skicka Email',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Skicka SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Användare',
|
||||
'delete_title' => 'Radera server',
|
||||
'delete_message' => 'Är du säker att du vill radera server \'%1\'?',
|
||||
'deleted' => 'Server raderad.',
|
||||
'updated' => 'Server uppdaterad.',
|
||||
'inserted' => 'Server tillagd.',
|
||||
'latency' => 'Fördröjning',
|
||||
'latency_max' => 'Fördröjning (maximum)',
|
||||
'latency_min' => 'Fördröjning (minimum)',
|
||||
'latency_avg' => 'Fördröjning (medel)',
|
||||
'uptime' => 'Uptime',
|
||||
'year' => 'År',
|
||||
'month' => 'Månad',
|
||||
'week' => 'Vecka',
|
||||
'day' => 'Dag',
|
||||
'hour' => 'Timme',
|
||||
'warning_threshold' => 'Varningströskel',
|
||||
'warning_threshold_description' => 'Antalet misslyckade kontroller innan server markeras som offline.',
|
||||
'chart_last_week' => 'Senaste veckan',
|
||||
'chart_history' => 'Historik',
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS-meddelande är avstängda.',
|
||||
'warning_notifications_disabled_email' => 'Email-meddelande är avstängda.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover-meddelande är avstängda.',
|
||||
'error_server_no_match' => 'Server kan inte hittas.',
|
||||
'error_server_label_bad_length' => 'Namn måste vara mellan 1 och 255 tecken.',
|
||||
'error_server_ip_bad_length' => 'Domän / IP måste vara mellan 1 och 255 tecken.',
|
||||
'error_server_ip_bad_service' => 'IP-adressen är ogiltig.',
|
||||
'error_server_ip_bad_website' => 'URL:en är ogiltig.',
|
||||
'error_server_type_invalid' => 'Vald servertyp är ogiltig.',
|
||||
'error_server_warning_threshold_invalid' => 'Varningströskel skall vara ett heltal större än 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Allmänt',
|
||||
'language' => 'Språk',
|
||||
'show_update' => 'Sök efter uppdateringar?',
|
||||
'email_status' => 'Tillåt email',
|
||||
'email_from_email' => 'Email avsändaradress',
|
||||
'email_from_name' => 'Email från namn',
|
||||
'email_smtp' => 'Aktivera SMTP',
|
||||
'email_smtp_host' => 'SMTP värd',
|
||||
'email_smtp_port' => 'SMTP port',
|
||||
'email_smtp_security' => 'SMTP säkerhet',
|
||||
'email_smtp_security_none' => 'Ingen',
|
||||
'email_smtp_username' => 'SMTP användarnamn',
|
||||
'email_smtp_password' => 'SMTP lösenord',
|
||||
'email_smtp_noauth' => 'Lämna blank för att inte autentisera',
|
||||
'sms_status' => 'Tillåt SMS',
|
||||
'sms_gateway' => 'Gateway för SMS',
|
||||
'sms_gateway_username' => 'Gateway användarnamn',
|
||||
'sms_gateway_password' => 'Gateway lösenord',
|
||||
'sms_from' => 'Avsändarens telefonnummer',
|
||||
'pushover_status' => 'Tillåt Pushover-meddelande',
|
||||
'pushover_description' => 'Pushover är en tjänst som skickar meddelande i realtid. Se <a
|
||||
href="https://pushover.net/" target="_blank">deras webbsida</a> för mer info.',
|
||||
'pushover_clone_app' => 'Klicka här för att skapa din Pushover app',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Innan du kan använda Pushover behöver du <a href="%1$s" target="_blank"
|
||||
rel="noopener">registrera en App</a> på deras webbsida och skriva in App
|
||||
API Token här.',
|
||||
'alert_type' => 'Välj när du vill bli meddelad.',
|
||||
'alert_type_description' => '<b>Statusförändring:</b> Du får ett meddelande när status ändras. Så från
|
||||
online -> offline eller offline -> online.<br><br /><b>Offline:</b> Du får ett
|
||||
meddelande när en server går offline *FÖR FÖRSTA GÅNGEN* Exempelvis, ditt
|
||||
cronjob körs var 15 minut och din server går ned kl 1 och är nere till kl 6.
|
||||
Du kommer få 1 meddelande kl 1 och inga mer.<br><br><b>Alltid:</b> Du kommer få
|
||||
ett meddelande varje gång kontrollen görs, även om servern har varit offline
|
||||
under en längre tid.',
|
||||
'alert_type_status' => 'Statusförändring',
|
||||
'alert_type_offline' => 'Offline',
|
||||
'alert_type_always' => 'Alltid',
|
||||
'log_status' => 'Statusloggning',
|
||||
'log_status_description' => 'Om statusloggning är TRUE, kommer alla händelser som triggar ett meddelande att
|
||||
loggas.',
|
||||
'log_email' => 'Logga email',
|
||||
'log_sms' => 'Logga SMS',
|
||||
'log_pushover' => 'Logga Pushover-meddelande',
|
||||
'updated' => 'Inställningarna har uppdaterats.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Email-inställningar',
|
||||
'settings_sms' => 'SMS-inställningar',
|
||||
'settings_pushover' => 'Pushover-inställningar',
|
||||
'settings_notification' => 'Meddelande-inställningar',
|
||||
'settings_log' => 'Logg-inställningar',
|
||||
'auto_refresh' => 'Auto-uppdatera',
|
||||
'auto_refresh_description' => 'Auto-uppdatera status-sidan.<br><span class="small">Tid i sekunder, om "0" så
|
||||
uppdateras sidan inte automatiskt.</span>',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'Ett emial kommer skickas till adressen i din profil.',
|
||||
'test_sms' => 'Ett SMS kommer skickas till mobilnumret i din profil.',
|
||||
'test_pushover' => 'Ett Pushover-meddelande kommer skickas till "user key/device" i din profil.',
|
||||
'send' => 'Skicka',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Testmeddelande',
|
||||
'email_sent' => 'Email skickat',
|
||||
'email_error' => 'Sändning av email misslyckades',
|
||||
'sms_sent' => 'Sms skickat',
|
||||
'sms_error' => 'Sändning av SMS misslyckades. %s',
|
||||
'sms_error_nomobile' => 'Kan inte skicka test-SMS: det finns inget giltigt mobilnummer i din profil.',
|
||||
'pushover_sent' => 'Pushover-meddelande skickat',
|
||||
'pushover_error' => 'Ett fel uppstod vid sändning av Pushover-meddelande: %s',
|
||||
'pushover_error_noapp' => 'Kan inte skicka test-meddelande: Ingen Pushover App API token hittades i gemensamma
|
||||
inställningar.',
|
||||
'pushover_error_nokey' => 'Kan inte skicka test-meddelande: Ingen Pushover key finns i din profil.',
|
||||
'log_retention_period' => 'Loggar sparas',
|
||||
'log_retention_period_description' => 'Antal dagar loggar över meddelande och uptime sparas. 0 innebär att
|
||||
loggrensning är avstängd.',
|
||||
'log_retention_days' => 'dagar',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Server \'%LABEL%\' är NERE: ip=%IP%, port=%PORT%. Fel=%ERROR%',
|
||||
'off_email_subject' => 'VIKTIGT: Server \'%LABEL%\' är NERE',
|
||||
'off_email_body' => 'Kunde inte ansluta till följande server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Fel: %ERROR%<br>Tid: %DATE%',
|
||||
'off_pushover_title' => 'Server \'%LABEL%\' är NERE',
|
||||
'off_pushover_message' => 'Kunde inte ansluta till följande server:<br><br>Server: %LABEL%<br>IP:
|
||||
%IP%<br>Port: %PORT%<br>Fel: %ERROR%<br>Tid: %DATE%',
|
||||
'on_sms' => 'Server \'%LABEL%\' är UPPE: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'VIKTIGT: Server \'%LABEL%\' är UPPE',
|
||||
'on_email_body' => 'Server \'%LABEL%\' är uppe igen, it was down for %LAST_OFFLINE_DURATION%:<br><br>Server:
|
||||
%LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Tid: %DATE%',
|
||||
'on_pushover_title' => 'Server \'%LABEL%\' är UPPE',
|
||||
'on_pushover_message' => 'Server \'%LABEL%\' är uppe igen, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Tid:
|
||||
%DATE%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Välkommen, %user_name%',
|
||||
'title_sign_in' => 'Logga in',
|
||||
'title_forgot' => 'Glömt ditt lösenord?',
|
||||
'title_reset' => 'Återställ ditt lösenord',
|
||||
'submit' => 'Skicka',
|
||||
'remember_me' => 'Kom ihåg mig',
|
||||
'login' => 'Logga in',
|
||||
'logout' => 'Logga ut',
|
||||
'username' => 'Användarnamn',
|
||||
'password' => 'Lösenord',
|
||||
'password_repeat' => 'Upprepa lösenord',
|
||||
'password_forgot' => 'Glömt lösenord?',
|
||||
'password_reset' => 'Återställ lösenord',
|
||||
'password_reset_email_subject' => 'Password reset for PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Använd följande länk för att återställa ditt
|
||||
lösenord. Tänk på att länken bara är giltig 1
|
||||
timme.<br><br>%link%',
|
||||
'error_user_incorrect' => 'Användaren kunde inte hittas.',
|
||||
'error_login_incorrect' => 'Informationen är felaktig.',
|
||||
'error_login_passwords_nomatch' => 'Lösenorden stämmer inte överens.',
|
||||
'error_reset_invalid_link' => 'Reset-länken är ogiltig.',
|
||||
'success_password_forgot' => 'Ett email med information om hur du nollställer ditt lösenord har skickats.',
|
||||
'success_password_reset' => 'Ditt lösenord har nollställts. Var god logga in.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Unauthorized',
|
||||
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||
),
|
||||
);
|
|
@ -0,0 +1,321 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Haydar Kulekci <haydarkulekci@gmail.com>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Türkçe - Turkish',
|
||||
'locale' => array(
|
||||
'0' => 'tr_TR.UTF-8',
|
||||
'1' => 'tr_TR',
|
||||
'2' => 'turkish',
|
||||
'3' => 'turkish-tr',
|
||||
),
|
||||
'locale_tag' => 'tr',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Yükle',
|
||||
'action' => 'Aksiyon',
|
||||
'save' => 'Kaydet',
|
||||
'edit' => 'Düzenle',
|
||||
'delete' => 'Sil',
|
||||
'date' => 'Tarih',
|
||||
'message' => 'Mesaj',
|
||||
'yes' => 'Evet',
|
||||
'no' => 'Hayır',
|
||||
'insert' => 'Ekle',
|
||||
'add_new' => 'Yeni ekle',
|
||||
'update_available' => '({version}) sürümü şu anda <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a> adresindedir.',
|
||||
'back_to_top' => 'Başa Dön',
|
||||
'go_back' => 'Geri Git',
|
||||
'ok' => 'Tamam',
|
||||
'cancel' => 'İptal',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Yesterday at %k:%M',
|
||||
'other_day_format' => '%A at %k:%M',
|
||||
'never' => 'Hiç',
|
||||
'hours_ago' => '%d saat önce',
|
||||
'an_hour_ago' => 'yaklaşık bir saat önce',
|
||||
'minutes_ago' => '%d dakika önce',
|
||||
'a_minute_ago' => 'yaklaşık bir dakika önce',
|
||||
'seconds_ago' => '%d saniye önce',
|
||||
'a_second_ago' => 'bir saniye önce',
|
||||
'seconds' => 'saniye',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Ayarlar',
|
||||
'server' => 'Sunucular',
|
||||
'server_log' => 'Log',
|
||||
'server_status' => 'Durum',
|
||||
'server_update' => 'Güncelle',
|
||||
'user' => 'Kullanıcılar',
|
||||
'help' => 'Yardım',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Kullanıcı',
|
||||
'name' => 'İsim',
|
||||
'user_name' => 'Kullanıcı adı',
|
||||
'password' => 'Şifre',
|
||||
'password_repeat' => 'Şifre tekrarı',
|
||||
'password_leave_blank' => 'Değiştirmemek için boş bırakın',
|
||||
'level' => 'Seviye',
|
||||
'level_10' => 'Yönetici',
|
||||
'level_20' => 'Kullanıcı',
|
||||
'level_description' => '<b>Yöneticiler</b> tüm yetkilere sahiptir: Onlar sunucuları, kullanıcıları
|
||||
yönetebilir genel ayarlamaları düzenleyebilirler.<br> <b>Kullanıcılar</b> sadece
|
||||
görüntüleyebilir ve onlara atanmış sunucu güncelleyicileri
|
||||
çalıştırabilirler.',
|
||||
'mobile' => 'Mobil',
|
||||
'email' => 'E-posta',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover gerçek zamanlı bildirim alabilmek için bir servistir. Daha fazla bilgi
|
||||
için <a href="https://pushover.net/" target="_blank">sitesine</a> bakabilirsiniz.',
|
||||
'pushover_key' => 'Pushover Anahtarı',
|
||||
'pushover_device' => 'Pushover Aracı',
|
||||
'pushover_device_description' => 'Mesajın gönderileceği cihazın adı. Tüm cihazlara göndermek için boş
|
||||
bırakın.',
|
||||
'delete_title' => 'Kullanıcıyı Sil',
|
||||
'delete_message' => '\'%1\' kullanıcısını silmek istediğinize emin misiniz?',
|
||||
'deleted' => 'Kullanıcı silindi.',
|
||||
'updated' => 'Kullanıcı güncellendi.',
|
||||
'inserted' => 'Kullanıcı eklendi.',
|
||||
'profile' => 'Profil',
|
||||
'profile_updated' => 'Profiliniz güncellendi.',
|
||||
'error_user_name_bad_length' => 'Kullanıcı adları en az 2 ve en fazla 64 karakter uzunluğunda olmalıdır.',
|
||||
'error_user_name_invalid' => 'Kullanıcı adları sadece harf (a-z, A-Z), sayı (0-9), noktalar (.) and alttan
|
||||
çizgi (_) karakterlerini içerebilir.',
|
||||
'error_user_name_exists' => 'Bu kullanıcı adı daha önce alınmış.',
|
||||
'error_user_email_bad_length' => 'E-posta adresi en az 5 ve en fazla 255 karakter uzunluğunda olmalıdır.',
|
||||
'error_user_email_invalid' => 'Geçersiz e-posta adresi.',
|
||||
'error_user_level_invalid' => 'Verilen kullanıcı seviyesi geçersiz.',
|
||||
'error_user_no_match' => 'Kullanıcı veritabanında bulunamadı.',
|
||||
'error_user_password_invalid' => 'Geçersiz bir şifre girdiniz.',
|
||||
'error_user_password_no_match' => 'Şifreler birbiri ile eşleşmedi.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Log Girdileri',
|
||||
'type' => 'Tip',
|
||||
'status' => 'Durum',
|
||||
'email' => 'E-posta',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'Kayıt yok.',
|
||||
'clear' => 'Günlüğü temizle',
|
||||
'delete_title' => 'Günlüğü temizle',
|
||||
'delete_message' => 'Tüm günlükleri silmek istediğinizden emin misiniz?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Sunucu',
|
||||
'status' => 'Durum',
|
||||
'label' => 'Etiket',
|
||||
'domain' => 'Domain/IP',
|
||||
'timeout' => 'Zaman Aşımı',
|
||||
'timeout_description' => 'Sunucunun cevap vermesini beklenecek saniye.',
|
||||
'port' => 'Port',
|
||||
'type' => 'Tip',
|
||||
'type_website' => 'Website',
|
||||
'type_service' => 'Servis',
|
||||
'pattern' => 'String/Pattern ara',
|
||||
'pattern_description' => 'Bu pattern web sitenizde bulunamaz ise, sunucu offline olarak işaretlenecek.
|
||||
Regular expression\'a izin verilmiştir.',
|
||||
'last_check' => 'Son kontrol',
|
||||
'last_online' => 'Son çevrimiçi zamanı',
|
||||
'last_offline' => 'Last offline',
|
||||
'monitoring' => 'Monitoring',
|
||||
'no_monitoring' => 'No monitoring',
|
||||
'email' => 'E-posta',
|
||||
'send_email' => 'E-posta Gönder',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'SMS Gönder',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Kullanıcılar',
|
||||
'delete_title' => 'Sunucu Sil',
|
||||
'delete_message' => '\'%1\' sunucusunu silmek istediğinize emin misiniz?',
|
||||
'deleted' => 'Sunucu silindi.',
|
||||
'updated' => 'Sunucu güncellendi.',
|
||||
'inserted' => 'Sunucu eklendi.',
|
||||
'latency' => 'Gecikme',
|
||||
'latency_max' => 'Gecikme (Azami)',
|
||||
'latency_min' => 'Gecikme (Asgari)',
|
||||
'latency_avg' => 'Gecikme (Ortalama)',
|
||||
'uptime' => 'Uptime',
|
||||
'year' => 'Yıl',
|
||||
'month' => 'Ay',
|
||||
'week' => 'Hafta',
|
||||
'day' => 'Gün',
|
||||
'hour' => 'Saat',
|
||||
'warning_threshold' => 'Uyarı Eşiği',
|
||||
'warning_threshold_description' => 'Number of failed checks required before it is marked offline.',
|
||||
'chart_last_week' => 'Geçen Hafta',
|
||||
'chart_history' => 'Geçmiş',
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS bildirimi devre dışı.',
|
||||
'warning_notifications_disabled_email' => 'E-posta bildirimi devre dışı.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover bildirimi devre dışı.',
|
||||
'error_server_no_match' => 'Sunucu bulunamadı.',
|
||||
'error_server_label_bad_length' => 'Etiken en az 1 ve en çok 255 karakter olmalıdır.',
|
||||
'error_server_ip_bad_length' => 'Alan adı / IP en az 1 ve en fazla 255 karakter olmalıdır.',
|
||||
'error_server_ip_bad_service' => 'IP adresi geçerli değil.',
|
||||
'error_server_ip_bad_website' => 'Site adresi geçerli değil.',
|
||||
'error_server_type_invalid' => 'Seçilen sunucu tipi geçerli değil.',
|
||||
'error_server_warning_threshold_invalid' => 'Hata eşiği 0\'dan büyük bir tam sayı olmalıdır.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Genel',
|
||||
'language' => 'Dil',
|
||||
'show_update' => 'Güncellemeleri kontrol et?',
|
||||
'email_status' => 'E-posta gönderimine izin ver',
|
||||
'email_from_email' => 'Gönderilen e-posta adresi',
|
||||
'email_from_name' => 'E-posta adresinde görünecek isim',
|
||||
'email_smtp' => 'SMTP\'yi aktif et',
|
||||
'email_smtp_host' => 'SMTP sunucusu',
|
||||
'email_smtp_port' => 'SMTP port',
|
||||
'email_smtp_security' => 'SMTP security',
|
||||
'email_smtp_security_none' => 'None',
|
||||
'email_smtp_username' => 'SMTP kullanıcı adı',
|
||||
'email_smtp_password' => 'SMTP şifre',
|
||||
'email_smtp_noauth' => 'Doğrulama yapmamak için boş bırakın',
|
||||
'sms_status' => 'SMS mesaj göndermeye izin ver',
|
||||
'sms_gateway' => 'Mesaj göndermek için servisi seçin',
|
||||
'sms_gateway_username' => 'Servis kullanıcı adı',
|
||||
'sms_gateway_password' => 'Servis şifresi',
|
||||
'sms_from' => 'Gönderen numarası',
|
||||
'pushover_status' => 'Pushover mesaj gönderimine izin ver',
|
||||
'pushover_description' => 'Pushover gerçek zamanlı bildirim alabilmek için bir servistir. Daha fazla bilgi
|
||||
için <a href="https://pushover.net/" target="_blank">sitesine</a> bakabilirsiniz.',
|
||||
'pushover_clone_app' => 'Pushover uygulaması oluşturmak için buraya tıklayınız.',
|
||||
'pushover_api_token' => 'Pushover Uygulaması API Token Bilgisi',
|
||||
'pushover_api_token_description' => 'Pushover kullanmadan önce, <a href="%1$s" target="_blank"
|
||||
rel="noopener">Pushover sitesi üzerinden</a> bir uygulama
|
||||
oluşturmalısınız ve API Token bilgilerini buraya yazmalısınız.',
|
||||
'alert_type' => 'Ne zaman uyarılmak istediğinizi seçin.',
|
||||
'alert_type_description' => '<b>Durum değişikliği:</b> Sunucu durumu değişiklik durumunda bildirim
|
||||
alacaksınız. Sunucu çevrimiçi durumundan çevrimdışı durumuna veya
|
||||
çevrimdışı durumundan çevrim için durumuna geçtiğinde.<br><br
|
||||
/><b>Çevrimdışı:</b> Sunucu çevrim dışı duruma geçtiğinde bildirim
|
||||
alırsınız. *SADECE İLK GEÇTİĞİNDE*. Örneğin, Cronjob her 15 dakikada
|
||||
bir çalışıyorsa ve sunucu 1\'de gidip 6\'ya kadar kapalı kalırsa. Sadece
|
||||
size saat 1\'de bildirim gönderilecektir.<br><br><b>Daima:</b> Site
|
||||
çevrimdışı olduğu her zaman size bildirim gönderilecektir, site saatler
|
||||
boyunca kapalı kalse bile.',
|
||||
'alert_type_status' => 'Durum değişikliği',
|
||||
'alert_type_offline' => 'Çevrimdışı',
|
||||
'alert_type_always' => 'Daima',
|
||||
'log_status' => 'Log durumu',
|
||||
'log_status_description' => 'Eğer log durumu TRUE olarak işaretlenirse, bildirim ayarlarından geçen her
|
||||
olay log olarak tutulacaktır.',
|
||||
'log_email' => 'Log e-posta mesajı otomatik gönderilmiştir.',
|
||||
'log_sms' => 'Log sms mesajı otomatik gönderilmiştir.',
|
||||
'log_pushover' => 'Log pushover mesajı otomatik gönderilmiştir.',
|
||||
'updated' => 'Ayarlar güncellendi.',
|
||||
'tab_email' => 'E-posta',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'E-posta ayarları',
|
||||
'settings_sms' => 'Sms mesaj ayarları',
|
||||
'settings_pushover' => 'Pushover ayarları',
|
||||
'settings_notification' => 'Bildirim ayarları',
|
||||
'settings_log' => 'Log ayarları',
|
||||
'auto_refresh' => 'Otomatik Yenileme',
|
||||
'auto_refresh_description' => 'Otomatik yenileme sunucu sayfası<br><span class="small">Eğer sayfa yenilenmez
|
||||
ise.</span>',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'Profilinizde tanımladığınız e-posta adresinize bir e-posta gönderilecek.',
|
||||
'test_sms' => 'Profilinizde tanımladığınız numaranıza bir SMS mesajı gönderilecek.',
|
||||
'test_pushover' => 'Profilinizde tanımladığını bilgiler üzerinden bir pushover bildirimi gönderilecek.',
|
||||
'send' => 'Gönder',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Test mesaj',
|
||||
'email_sent' => 'E-posta gönderildi',
|
||||
'email_error' => 'E-posta gönderiminde hata.',
|
||||
'sms_sent' => 'Sms gönderildi',
|
||||
'sms_error' => 'SMS gönderiminde hata. %s',
|
||||
'sms_error_nomobile' => 'SMS gönderilemiyor: profilinizde geçerli bir telefon numarası yok.',
|
||||
'pushover_sent' => 'Pushover bildirimi gönderildi',
|
||||
'pushover_error' => 'Pushover bildirimi gönderilirken bir hata meydana geldi: %s',
|
||||
'pushover_error_noapp' => 'Test için bildirim gönderilemiyor: Pushover Uygulaması API token bilgisi
|
||||
bulunamadı.',
|
||||
'pushover_error_nokey' => 'Test için bildirim gönderilemiyor: Pushover key bilgisi profilinizde bulunamadı.',
|
||||
'log_retention_period' => 'Log tutma süresi',
|
||||
'log_retention_period_description' => 'Bildirim loglarının ve sunucunun çalışma zamanlarının arşivinin
|
||||
saklanması için gün sayısı. Logların temizlenmesini kapatmak
|
||||
için 0 giriniz.',
|
||||
'log_retention_days' => 'gün',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => '\'%LABEL%\' isimli sunucu KAPANDI: ip=%IP%, port=%PORT%. Error=%ERROR%',
|
||||
'off_email_subject' => 'ÖNEMLİ: \'%LABEL%\' isimli sunucu KAPANDI.',
|
||||
'off_email_body' => 'Aşağıdaki sunuculara erişim sağlanamıyor:<br><br>Sunucu: %LABEL%<br>IP:
|
||||
%IP%<br>Port: %PORT%<br>Hata: %ERROR%<br>Tarih: %DATE%',
|
||||
'off_pushover_title' => '\'%LABEL%\' isimli sunucu KAPANDI.',
|
||||
'off_pushover_message' => 'Aşağıdaki nuculara erişim sağlanamıyor:<br><br>Sunucu: %LABEL%<br>IP:
|
||||
%IP%<br>Port: %PORT%<br>Hata: %ERROR%<br>Tarih: %DATE%',
|
||||
'on_sms' => '\'%LABEL%\' isimli sunucu YAYINDA: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'ÖNEMLİ:\'%LABEL%\' isimli sunucu YAYINDA.',
|
||||
'on_email_body' => '\'%LABEL%\' isimli sunucu tekrar yayında, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Sunucu: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Tarih:
|
||||
%DATE%',
|
||||
'on_pushover_title' => '\'%LABEL%\' isimli sunucu YAYINDA',
|
||||
'on_pushover_message' => '\'%LABEL%\' isimli sunucu tekrar yayında, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Sunucu: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>Tarih: %DATE%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Hoşgeldin, %user_name%',
|
||||
'title_sign_in' => 'Lütfen giriş yapın',
|
||||
'title_forgot' => 'Şifreni mi unuttun?',
|
||||
'title_reset' => 'Şifreni yenile',
|
||||
'submit' => 'Gönder',
|
||||
'remember_me' => 'Beni hatırla',
|
||||
'login' => 'Giriş yap',
|
||||
'logout' => 'Çıkış yap',
|
||||
'username' => 'Kullanıcı adı',
|
||||
'password' => 'Şifre',
|
||||
'password_repeat' => 'Şifre tekrarı',
|
||||
'password_forgot' => 'Şifreni mi unuttun?',
|
||||
'password_reset' => 'Şifreni yenile',
|
||||
'password_reset_email_subject' => 'PHP Server Monitor için şifreni yenile',
|
||||
'password_reset_email_body' => 'Aşağıdaki bağlantıyı kullanarak şifrenizi güncelleyiniz. Bağlantı 1
|
||||
saat sonra geçerliliğini kaybedecektir.<br><br>%link%',
|
||||
'error_user_incorrect' => 'Kullanıcı adı bulunamadı.',
|
||||
'error_login_incorrect' => 'Bilgi yanlış.',
|
||||
'error_login_passwords_nomatch' => 'Şifreleriniz uyuşmuyor.',
|
||||
'error_reset_invalid_link' => 'Sağladığını sıfırlama bağlantısı geçersiz.',
|
||||
'success_password_forgot' => 'Şifrenizi yenilemeniz için gerekli bilgileri içeren bir e-posta gönderildi.',
|
||||
'success_password_reset' => 'Şifreniz başarıyla yenilendi. Şimdi giriş yapın.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Yetkisiz',
|
||||
'401_unauthorized_description' => 'Bu sayfayı görüntülemek için yetkin yok.',
|
||||
),
|
||||
);
|
|
@ -0,0 +1,538 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Oleksa Vyshnivsky <dying.escape@gmail.com>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Українська — Ukrainian',
|
||||
'locale' => array(
|
||||
'0' => 'uk_UA.UTF-8',
|
||||
'1' => 'uk_UA',
|
||||
'2' => 'ukrainian',
|
||||
),
|
||||
'locale_tag' => 'uk',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Встановити',
|
||||
'action' => 'Дія',
|
||||
'save' => 'Зберегти',
|
||||
'edit' => 'Редагувати',
|
||||
'delete' => 'Видалити',
|
||||
'view' => 'Перегляд',
|
||||
'date' => 'Дата',
|
||||
'message' => 'Повідомлення',
|
||||
'yes' => 'Так',
|
||||
'no' => 'Ні',
|
||||
'insert' => 'Вставити',
|
||||
'add_new' => 'Додати',
|
||||
'update_available' => 'Доступна нова версія ({version}). Перейдіть <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">сюди</a> для завантаження оновлення.',
|
||||
'back_to_top' => 'Нагору',
|
||||
'go_back' => 'Назад',
|
||||
'ok' => 'OK',
|
||||
'bad' => 'погано',
|
||||
'cancel' => 'Скасувати',
|
||||
'none' => 'Жоден',
|
||||
'activate' => 'Активувати',
|
||||
'short_day_format' => '%e %b',
|
||||
'long_day_format' => '%e %b %Y',
|
||||
'yesterday_format' => 'Учора о %k:%M',
|
||||
'other_day_format' => '%A о %k:%M',
|
||||
'never' => 'Ніколи',
|
||||
'hours_ago' => '%d годин тому',
|
||||
'an_hour_ago' => 'близько години тому',
|
||||
'minutes_ago' => '%d хвилин тому',
|
||||
'a_minute_ago' => 'близько хвилини тому',
|
||||
'seconds_ago' => '%d секунд тому',
|
||||
'a_second_ago' => 'секунду тому',
|
||||
'year' => 'рік',
|
||||
'years' => 'років',
|
||||
'month' => 'місяць',
|
||||
'months' => 'місяців',
|
||||
'day' => 'дні',
|
||||
'days' => 'днів',
|
||||
'hour' => 'година',
|
||||
'hours' => 'годин',
|
||||
'minute' => 'хвилина',
|
||||
'minutes' => 'хвилин',
|
||||
'second' => 'секунда',
|
||||
'seconds' => 'секунд',
|
||||
'current' => 'поточний',
|
||||
'settings' => 'Налаштування',
|
||||
'search' => 'Пошук',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Конфіг',
|
||||
'server' => 'Сервери',
|
||||
'server_log' => 'Лог',
|
||||
'server_status' => 'Статус',
|
||||
'server_update' => 'Оновити',
|
||||
'user' => 'Користувачі',
|
||||
'help' => 'Довідка',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Користувач',
|
||||
'name' => 'Ім’я',
|
||||
'user_name' => 'Ім’я користувача',
|
||||
'password' => 'Пароль',
|
||||
'password_repeat' => 'Повторити пароль',
|
||||
'password_leave_blank' => 'Залиште пустим, щоб не змінювати',
|
||||
'level' => 'Рівень',
|
||||
'level_10' => 'Адміністратор',
|
||||
'level_20' => 'Користувач',
|
||||
'level_description' => '<b>Адміністратори</b> мають повний доступ: вони
|
||||
можуть керувати серверами, користувачами, а
|
||||
також редагувати глобальні
|
||||
налаштування.<br><b>Користувачі</b> можуть тільки
|
||||
переглядати й запускати перевірку серверів, до
|
||||
яких їм надали доступ.',
|
||||
'mobile' => 'Мобільний',
|
||||
'email' => 'Електронна пошта',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover — сервіс, що дозволяє легко отримувати
|
||||
сповіщення у реальному часі. За деталями
|
||||
перейдіть на <a href="https://pushover.net/" target="_blank">їхній
|
||||
вебсайт</a>.',
|
||||
'pushover_key' => 'Ключ Pushover',
|
||||
'pushover_device' => 'Пристрій Pushover',
|
||||
'pushover_device_description' => 'Ім’я пристрою, на який надсилати
|
||||
повідомлення. Залиште пустим, щоб
|
||||
надсилати на всі пристрої.',
|
||||
'telegram' => 'Telegram',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> —
|
||||
чат-застосунок, що дозволяє легко отримувати
|
||||
сповіщення у реальному часі. За деталями й
|
||||
інструкцією зі встановлення зверніться до <a
|
||||
href="http://docs.phpservermonitor.org/"
|
||||
target="_blank">документації</a>.',
|
||||
'telegram_chat_id' => 'Ідентифікатор чату Telegram',
|
||||
'telegram_chat_id_description' => 'Повідомлення буде надіслане у
|
||||
відповідний чат.',
|
||||
'telegram_get_chat_id' => 'Натисніть тут для отримання свого
|
||||
ідентифікатора чату',
|
||||
'activate_telegram' => 'Активувати сповіщення у Telegram',
|
||||
'activate_telegram_description' => 'Дозволити надсилання Telegram-сповіщень на
|
||||
визначений ідентифікатор чату. Без
|
||||
цього дозволу Telegram не дозволить нам
|
||||
надсилати вам сповіщення.',
|
||||
'telegram_bot_username_found' => 'Бот знайдений!<br><a href="%s" target="_blank"
|
||||
rel="noopener"><button class="btn btn-primary">Наступний
|
||||
крок</button></a> <br>На ньому відкриється чат з
|
||||
ботом. Там буде потрібно натиснути start або
|
||||
набрати /start.',
|
||||
'telegram_bot_username_error_token' => '401 - Несанкціоновано. Будь ласка,
|
||||
перевірте, чи API-токен правильний.',
|
||||
'telegram_bot_error' => 'Сталася помилка при активації Telegram-сповіщень:
|
||||
%s',
|
||||
'delete_title' => 'Видалити користувача',
|
||||
'delete_message' => 'Ви дійсно хочете видалити користувача \'%1\'?',
|
||||
'deleted' => 'Користувача видалено.',
|
||||
'updated' => 'Користувача оновлено.',
|
||||
'inserted' => 'Користувача додано.',
|
||||
'profile' => 'Профіль',
|
||||
'profile_updated' => 'Ваш профіль оновлено.',
|
||||
'error_user_name_bad_length' => 'Імена користувачів мають бути довжиною
|
||||
від 2 до 64 символів.',
|
||||
'error_user_name_invalid' => 'Ім’я користувача може містити лише літери
|
||||
(a-z, A-Z), цифри (0-9), крапки (.) і підкреслення (_).',
|
||||
'error_user_name_exists' => 'Таке ім’я користувача уже існує у базі
|
||||
даних.',
|
||||
'error_user_email_bad_length' => 'Електронні адреси мають бути довжиною
|
||||
від 5 до 255 символів.',
|
||||
'error_user_email_invalid' => 'Неправильна електронна адреса.',
|
||||
'error_user_level_invalid' => 'Неправильний рівень користувача.',
|
||||
'error_user_no_match' => 'Користувача у базі даних не знайдено.',
|
||||
'error_user_password_invalid' => 'Введено неправильний пароль.',
|
||||
'error_user_password_no_match' => 'Введені паролі не збігаються.',
|
||||
'error_user_admin_cant_be_deleted' => 'Останнього адміністратора видалити не
|
||||
можна.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Записи у журналі',
|
||||
'type' => 'Тип',
|
||||
'status' => 'Статус',
|
||||
'email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'telegram' => 'Telegram',
|
||||
'no_logs' => 'Немає журналів',
|
||||
'clear' => 'Очистити журнали',
|
||||
'delete_title' => 'Видалити журнал',
|
||||
'delete_message' => 'Ви дійсно хочете видалити <b>усі</b> журнали?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Сервер',
|
||||
'status' => 'Статус',
|
||||
'label' => 'Назва',
|
||||
'domain' => 'Домен/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Кількість секунд очікування на відповідь
|
||||
сервера.',
|
||||
'authentication_settings' => 'Налаштування автентифікації',
|
||||
'optional' => 'Необов’язково',
|
||||
'website_username' => 'Ім’я користувача',
|
||||
'website_username_description' => 'Ім’я користувача для доступу до сайту.
|
||||
(Підтримується лише Apache-автентифікація.)',
|
||||
'website_password' => 'Пароль',
|
||||
'website_password_description' => 'Пароль для доступу до сайту. У базі даних
|
||||
пароль зберігається зашифрованим.',
|
||||
'fieldset_monitoring' => 'Моніторинг',
|
||||
'fieldset_permissions' => 'Дозволи',
|
||||
'permissions' => 'Сервер можуть переглядати такі користувачі',
|
||||
'port' => 'Порт',
|
||||
'custom_port' => 'Власний порт',
|
||||
'popular_ports' => 'Популярні порти',
|
||||
'request_method' => 'Метод запиту',
|
||||
'custom_request_method' => 'Власний метод запиту',
|
||||
'popular_request_methods' => 'Популярні методи запиту',
|
||||
'post_field' => 'Post-поле',
|
||||
'post_field_description' => 'Дані будуть надіслані з використанням
|
||||
вибраного вище методу.',
|
||||
'please_select' => 'Будь ласка, виберіть',
|
||||
'type' => 'Тип',
|
||||
'type_website' => 'Вебсайт',
|
||||
'type_service' => 'Сервіс',
|
||||
'type_ping' => 'Пінг',
|
||||
'pattern' => 'Шукати рядок/зразок',
|
||||
'pattern_description' => 'Якщо цей зразок не знайдено на сайті, сервер
|
||||
буде позначений як онлайн/офлайн. Регулярні
|
||||
вирази дозволені.',
|
||||
'pattern_online' => 'Зразок свідчить, що сайт — ',
|
||||
'pattern_online_description' => 'Онлайн: Якщо цей зразок не знайдено на
|
||||
сайті, сервер буде позначений як онлайн.
|
||||
Офлайн: Якщо цей зразок не знайдено на
|
||||
сайті, сервер буде позначений як офлайн.',
|
||||
'redirect_check' => 'Переспрямування на інший домен —',
|
||||
'redirect_check_description' => 'Переспрямування на інший домен зазвичай є
|
||||
поганим знаком.',
|
||||
'allow_http_status' => 'Дозволити код статусу HTTP',
|
||||
'allow_http_status_description' => 'Позначити вебсайт як онлайн. Коди
|
||||
статусів HTTP нижче ніж 400 позначаються як
|
||||
онлайн за замовчуванням. Розділяти коди
|
||||
символом |.',
|
||||
'header_name' => 'Ім’я у заголовку',
|
||||
'header_value' => 'Значення у заголовку',
|
||||
'header_name_description' => 'З урахуванням регістру.',
|
||||
'header_value_description' => 'Регулярні вирази дозволені.',
|
||||
'last_check' => 'Остання перевірка',
|
||||
'last_online' => 'Востаннє онлайн',
|
||||
'last_offline' => 'Востаннє офлайн',
|
||||
'last_output' => 'Остання позитивна відповідь',
|
||||
'last_error' => 'Остання помилка',
|
||||
'last_error_output' => 'Остання негативна відповідь',
|
||||
'output' => 'Вивід',
|
||||
'monitoring' => 'Моніторинг',
|
||||
'no_monitoring' => 'Немає моніторингу',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Надсилати електронні листи',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Надсилати SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'send_pushover' => 'Надсилати Pushover-сповіщення',
|
||||
'telegram' => 'Telegram',
|
||||
'send_telegram' => 'Надсилати Telegram-сповіщення',
|
||||
'users' => 'Користувачі',
|
||||
'delete_title' => 'Видалити сервер',
|
||||
'delete_message' => 'Ви дійсно хочете видалити сервер \'%1\'?',
|
||||
'deleted' => 'Сервер видалено.',
|
||||
'updated' => 'Сервер оновлено.',
|
||||
'inserted' => 'Сервер додано.',
|
||||
'latency' => 'Затримка',
|
||||
'latency_max' => 'Затримка (максимум)',
|
||||
'latency_min' => 'Затримка (мінімум)',
|
||||
'latency_avg' => 'Затримка (середня)',
|
||||
'online' => 'онлайн',
|
||||
'offline' => 'офлайн',
|
||||
'uptime' => 'Час роботи',
|
||||
'year' => 'Років',
|
||||
'month' => 'Місяць',
|
||||
'week' => 'Тиждень',
|
||||
'day' => 'День',
|
||||
'hour' => 'Година',
|
||||
'warning_threshold' => 'Поріг попередження',
|
||||
'warning_threshold_description' => 'Кількість невдалих перевірок перед
|
||||
виставленням статусу офлайн.',
|
||||
'chart_last_week' => 'Останній тиждень',
|
||||
'chart_history' => 'Історія',
|
||||
'chart_day_format' => '%d/%m/%Y',
|
||||
'chart_long_date_format' => '%d/%m/%Y %H:%M:%S',
|
||||
'chart_short_date_format' => '%d/%m %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS-сповіщення вимкнено.',
|
||||
'warning_notifications_disabled_email' => 'Email-сповіщення вимкнено.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover-сповіщення вимкнено.',
|
||||
'warning_notifications_disabled_telegram' => 'Telegram-сповіщення вимкнено.',
|
||||
'error_server_no_match' => 'Сервер не знайдено.',
|
||||
'error_server_label_bad_length' => 'Заголовок повинен бути довжиною від 1 до
|
||||
255 символів.',
|
||||
'error_server_ip_bad_length' => 'Домен/IP повинен бути довжиною від 1 до 255
|
||||
символів.',
|
||||
'error_server_ip_bad_service' => 'IP-адреса недійсна.',
|
||||
'error_server_ip_bad_website' => 'URL вебсайту недійсний.',
|
||||
'error_server_type_invalid' => 'Вибраний тип сервера недійсний.',
|
||||
'error_server_warning_threshold_invalid' => 'Поріг попередження має бути цілим
|
||||
числом більше 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Загальне',
|
||||
'language' => 'Мова',
|
||||
'show_update' => 'Перевіряти наявність оновлень?',
|
||||
'password_encrypt_key' => 'Пароль ключа шифрування',
|
||||
'password_encrypt_key_note' => 'Цей ключ використовується для шифрування
|
||||
паролів доступу до вебсайтів, що
|
||||
зберігаються на сервері. Якщо ключ буде
|
||||
змінений, збережені паролі будуть
|
||||
недійсними!',
|
||||
'proxy' => 'Увімкнути проксі-сервер',
|
||||
'proxy_url' => 'URL-адреса проксі-сервера',
|
||||
'proxy_user' => 'Ім’я користувача проксі-сервера',
|
||||
'proxy_password' => 'Пароль користувача проксі-сервера',
|
||||
'email_status' => 'Дозволити надсилання електронної пошти',
|
||||
'email_from_email' => 'Листи з адреси',
|
||||
'email_from_name' => 'Листи від імені',
|
||||
'email_smtp' => 'Увімкнути SMTP',
|
||||
'email_smtp_host' => 'SMTP-хост',
|
||||
'email_smtp_port' => 'SMTP-порт',
|
||||
'email_smtp_security' => 'SMTP-безпека',
|
||||
'email_smtp_security_none' => 'Немає',
|
||||
'email_smtp_username' => 'Ім’я користувача SMTP',
|
||||
'email_smtp_password' => 'Пароль користувача SMTP',
|
||||
'email_smtp_noauth' => 'Залиште пустим, щоб не автентифікуватися',
|
||||
'sms_status' => 'Дозволити надсилання текстових повідомлень',
|
||||
'sms_gateway' => 'Шлюз для надсилання повідомлень',
|
||||
'sms_gateway_username' => 'Ім’я користувача шлюзу',
|
||||
'sms_gateway_password' => 'Пароль користувача шлюзу',
|
||||
'sms_from' => 'Номер телефону відправника',
|
||||
'pushover_status' => 'Дозволити надсилання Pushover-повідомлень',
|
||||
'pushover_description' => 'Pushover — сервіс, що дозволяє легко отримувати
|
||||
сповіщення у реальному часі. За детальнішою
|
||||
інформацію перейдіть на <a href="https://pushover.net/"
|
||||
target="_blank">їхній вебсайт</a>.',
|
||||
'pushover_clone_app' => 'Натисніть тут, щоб створити ваш Pushover-додаток',
|
||||
'pushover_api_token' => 'Токен API Pushover-додатку',
|
||||
'pushover_api_token_description' => 'Перед використанням Pushover ви маєте <a
|
||||
href="%1$s" target="_blank" rel="noopener">зареєструвати
|
||||
Додаток</a> на їхньому вебсайті та ввести
|
||||
токен API Додатку тут.',
|
||||
'telegram_status' => 'Дозволити надсилання Telegram-повідомлень',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> —
|
||||
чат-застосунок, що дозволяє легко отримувати
|
||||
сповіщення у реальному часі. Детальніша
|
||||
інформація та інструкція зі встановлення
|
||||
доступні у <a href="http://docs.phpservermonitor.org/"
|
||||
target="_blank">документації</a>.',
|
||||
'telegram_api_token' => 'Токен Telegram API',
|
||||
'telegram_api_token_description' => 'Перед використанням Telegram ви маєте
|
||||
отримати токен API. За довідкою
|
||||
зверніться до <a href="http://docs.phpservermonitor.org/"
|
||||
target="_blank">документації</a>.',
|
||||
'alert_type' => 'Виберіть, коли б вам хотілося отримувати
|
||||
сповіщення.',
|
||||
'alert_type_description' => '<b>Зміна статусу:</b> Ви отримуватимете
|
||||
сповіщення, коли змінюється статус сервера.
|
||||
Тобто при переходах онлайн -> офлайн і офлайн
|
||||
-> онлайн.<br><br><b>Офлайн:</b> Ви отримаєте
|
||||
сповіщення, коли сервер переходить у офлайн
|
||||
*ТІЛЬКИ ПЕРШИЙ РАЗ*. Наприклад, ваше
|
||||
крон-завдання виконується кожні 15 хвилин і
|
||||
ваш сервер лягає о 1-й годині ночі й лежить до
|
||||
6-ї години ранку. Ви отримаєте тільки одне
|
||||
сповіщення — о 1-й годині
|
||||
ночі.<br><br><b>Завжди:</b> Ви отримуватимете
|
||||
сповіщення при кожному запуску сценарію,
|
||||
коли сайт лежить, навіть якщо він лежить
|
||||
годинами.',
|
||||
'alert_type_status' => 'Зміна статусу',
|
||||
'alert_type_offline' => 'Офлайн',
|
||||
'alert_type_always' => 'Завжди',
|
||||
'combine_notifications' => 'Об’єднувати сповіщення',
|
||||
'combine_notifications_description' => 'Зменшує кількість сповіщень,
|
||||
об’єднуючи їх в 1 єдине сповіщення. (Це
|
||||
не стосується SMS-сповіщень.)',
|
||||
'alert_proxy' => 'Навіть якщо увімкнений, проксі-сервер ніколи не
|
||||
використовується для сервісів',
|
||||
'alert_proxy_url' => 'Формат: хост:порт',
|
||||
'log_status' => 'Статус журналу',
|
||||
'log_status_description' => 'Якщо статус журналу — TRUE, то монітор
|
||||
записуватиме у журнал подію щоразу, коли
|
||||
виконуватимуться умови надсилання
|
||||
сповіщення.',
|
||||
'log_email' => 'Записувати у журнал електронні листи, надіслані
|
||||
сценарієм',
|
||||
'log_sms' => 'Записувати у журнал текстові повідомлення,
|
||||
надіслані сценарієм',
|
||||
'log_pushover' => 'Записувати у журнал Pushover-повідомлення, надіслані
|
||||
сценарієм',
|
||||
'log_telegram' => 'Записувати у журнал Telegram-повідомлення, надіслані
|
||||
сценарієм',
|
||||
'updated' => 'Налаштування оновлено.',
|
||||
'tab_email' => 'Електронна пошта',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'tab_telegram' => 'Telegram',
|
||||
'settings_email' => 'Налаштування електронної пошти',
|
||||
'settings_sms' => 'Налаштування текстових повідомлень',
|
||||
'settings_pushover' => 'Налаштування Pushover',
|
||||
'settings_telegram' => 'Налаштування Telegram',
|
||||
'settings_notification' => 'Налаштування сповіщень',
|
||||
'settings_log' => 'Налаштування логів',
|
||||
'settings_proxy' => 'Налаштування проксі',
|
||||
'auto_refresh' => 'Автооновлення',
|
||||
'auto_refresh_description' => 'Сторінка автооновлення серверів.<br><span
|
||||
class="small">Час у секундах; якщо 0, сторінка не
|
||||
оновлюватиметься.</span>',
|
||||
'test' => 'Тест',
|
||||
'test_email' => 'Електронний лист буде надісланий на адресу,
|
||||
вказану у вашому профілі користувача.',
|
||||
'test_sms' => 'SMS буде надіслане на номер телефону, вказаний у
|
||||
вашому профілі користувача.',
|
||||
'test_pushover' => 'Pushover-сповіщення буде надіслане на ключ/пристрій
|
||||
користувача, заданий у вашому профілі
|
||||
користувача.',
|
||||
'test_telegram' => 'Telegram-сповіщення буде надіслане у чат,
|
||||
ідентифікатор якого заданий у вашому профілі
|
||||
користувача.',
|
||||
'send' => 'Надіслати',
|
||||
'test_subject' => 'Тест',
|
||||
'test_message' => 'Тестове повідомлення',
|
||||
'email_sent' => 'Електронний лист надіслано',
|
||||
'email_error' => 'Помилка надсилання електронного листа',
|
||||
'sms_sent' => 'SMS надіслане',
|
||||
'sms_error' => 'При надсиланні SMS сталася помилка: %s',
|
||||
'sms_error_nomobile' => 'Не можу надіслати тестове SMS: у вашому профілі
|
||||
не знайдено дійсного номера телефону.',
|
||||
'pushover_sent' => 'Pushover-сповіщення надіслане',
|
||||
'pushover_error' => 'При надсиланні Pushover-сповіщення сталася помилка:
|
||||
%s',
|
||||
'pushover_error_noapp' => 'Не можу надіслати тестове сповіщення: у
|
||||
глобальних налаштуваннях не знайдено токен
|
||||
API Pushover-додатку.',
|
||||
'pushover_error_nokey' => 'Не можу надіслати тестове сповіщення: у
|
||||
вашому профілі не знайдено ключа Pushover.',
|
||||
'telegram_sent' => 'Telegram-сповіщення надіслане',
|
||||
'telegram_error' => 'При надсиланні Telegram-сповіщення сталася помилка:
|
||||
%s',
|
||||
'telegram_error_notoken' => 'Не можу надіслати тестове сповіщення: у
|
||||
глобальних налаштуваннях не знайдено токен
|
||||
Telegram API.',
|
||||
'telegram_error_noid' => 'Не можу надіслати тестове сповіщення: у
|
||||
вашому профілі не знайдено ідентифікатор
|
||||
чату.',
|
||||
'log_retention_period' => 'Період зберігання логів',
|
||||
'log_retention_period_description' => 'Кількість днів зберігання журналів
|
||||
сповіщень і архівів часу роботи
|
||||
серверів. Введіть 0, щоб вимкнути
|
||||
очищення журналів.',
|
||||
'log_retention_days' => 'днів',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Сервер \'%LABEL%\' ЛЕЖИТЬ: ip=%IP%, порт=%PORT%. Помилка=%ERROR%',
|
||||
'off_email_subject' => 'ВАЖЛИВО: Сервер \'%LABEL%\' ЛЕЖИТЬ',
|
||||
'off_email_body' => 'Не вдалося під’єднатися до такого
|
||||
сервера:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт:
|
||||
%PORT%<br>Помилка: %ERROR%<br>Дата: %DATE%',
|
||||
'off_pushover_title' => 'Сервер \'%LABEL%\' ЛЕЖИТЬ',
|
||||
'off_pushover_message' => 'Не вдалося під’єднатися до такого
|
||||
сервера:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт:
|
||||
%PORT%<br>Помилка: %ERROR%<br>Дата: %DATE%',
|
||||
'off_telegram_message' => 'Не вдалося під’єднатися до такого
|
||||
сервера:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт:
|
||||
%PORT%<br>Помилка: %ERROR%<br>Дата: %DATE%',
|
||||
'on_sms' => 'Сервер \'%LABEL%\' ПРАЦЮЄ: ip=%IP%, порт=%PORT%, він лежав
|
||||
протягом %LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'ВАЖЛИВО: Сервер \'%LABEL%\' ПРАЦЮЄ',
|
||||
'on_email_body' => 'Сервер \'%LABEL%\' знову працює, він лежав протягом
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт:
|
||||
%PORT%<br>Дата: %DATE%',
|
||||
'on_pushover_title' => 'Сервер \'%LABEL%\' ПРАЦЮЄ',
|
||||
'on_pushover_message' => 'Сервер \'%LABEL%\' знову працює, він лежав протягом
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт:
|
||||
%PORT%<br>Дата: %DATE%',
|
||||
'on_telegram_message' => 'Сервер \'%LABEL%\' знову працює, він лежав
|
||||
протягом: %LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP:
|
||||
%IP%<br>Порт: %PORT%<br>Дата: %DATE%',
|
||||
'combi_off_email_message' => '<ul><li>Сервер: %LABEL%</li><li>IP: %IP%</li><li>Порт:
|
||||
%PORT%</li><li>Помилка: %ERROR%</li><li>Дата: %DATE%</li></ul>',
|
||||
'combi_off_pushover_message' => '<ul><li>Сервер: %LABEL%</li><li>IP: %IP%</li><li>Порт:
|
||||
%PORT%</li><li>Помилка: %ERROR%</li><li>Дата: %DATE%</li></ul>',
|
||||
'combi_off_telegram_message' => '- Сервер: %LABEL%<br>- IP: %IP%<br>- Порт: %PORT%<br>-
|
||||
Помилка: %ERROR%<br>- Дата: %DATE%<br><br>',
|
||||
'combi_on_email_message' => '<ul><li>Сервер: %LABEL%</li><li>IP: %IP%</li><li>Порт:
|
||||
%PORT%</li><li>Час простою: %LAST_OFFLINE_DURATION%</li><li>Дата:
|
||||
%DATE%</li></ul>',
|
||||
'combi_on_pushover_message' => '<ul><li>Сервер: %LABEL%</li><li>IP: %IP%</li><li>Порт:
|
||||
%PORT%</li><li>Час простою:
|
||||
%LAST_OFFLINE_DURATION%</li><li>Дата: %DATE%</li></ul>',
|
||||
'combi_on_telegram_message' => '- Сервер: %LABEL%<br>- IP: %IP%<br>- Порт: %PORT%<br>- Час
|
||||
простою: %LAST_OFFLINE_DURATION%<br>- Дата: %DATE%<br><br>',
|
||||
'combi_email_subject' => 'ВАЖЛИВО: \'%UP%\' серверів знову ПРАЦЮЮТЬ, \'%DOWN%\'
|
||||
серверів ЛЕЖАТЬ',
|
||||
'combi_pushover_subject' => '\'%UP%\' серверів знову ПРАЦЮЮТЬ, \'%DOWN%\'
|
||||
серверів ЛЕЖАТЬ',
|
||||
'combi_email_message' => '<b>Такі сервери лягли:</b><br>%DOWN_SERVERS%<br><b>Такі
|
||||
сервери знову працюють:</b><br>%UP_SERVERS%',
|
||||
'combi_pushover_message' => '<b>Такі сервери лягли:</b><br>%DOWN_SERVERS%<br><b>Такі
|
||||
сервери знову працюють:</b><br>%UP_SERVERS%',
|
||||
'combi_telegram_message' => '<b>Такі сервери лягли:</b><br>%DOWN_SERVERS%<br><b>Такі
|
||||
сервери знову працюють:</b><br>%UP_SERVERS%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Ласкаво просимо, %user_name%',
|
||||
'title_sign_in' => 'Будь ласка, увійдіть',
|
||||
'title_forgot' => 'Забули свій пароль?',
|
||||
'title_reset' => 'Скинути пароль',
|
||||
'submit' => 'Надіслати',
|
||||
'remember_me' => 'Запам’ятати мене',
|
||||
'login' => 'Вхід',
|
||||
'logout' => 'Вихід',
|
||||
'username' => 'Ім’я користувача',
|
||||
'password' => 'Пароль',
|
||||
'password_repeat' => 'Повторити пароль',
|
||||
'password_forgot' => 'Забули пароль?',
|
||||
'password_reset' => 'Скинути пароль',
|
||||
'password_reset_email_subject' => 'Скинути свій пароль до PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Будь ласка, скористайтеся наступним
|
||||
посиланням для скидання свого пароля. Будь
|
||||
ласка, пам’ятайте, що воно діє протягом 1
|
||||
години.<br><br>%link%',
|
||||
'error_user_incorrect' => 'Не вдалося знайти вказане ім’я користувача.',
|
||||
'error_login_incorrect' => 'Інформація неправильна.',
|
||||
'error_login_passwords_nomatch' => 'Надані паролі не збігаються.',
|
||||
'error_reset_invalid_link' => 'Надане посилання для скидання пароля
|
||||
недійсне.',
|
||||
'success_password_forgot' => 'Вам надіслано електронний лист із
|
||||
інформацією про відновлення пароля.',
|
||||
'success_password_reset' => 'Ваш пароль успішно скинутий. Будь ласка,
|
||||
увійдіть.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Несанкціоновано',
|
||||
'401_unauthorized_description' => 'Ви не маєте дозволу переглядати цю
|
||||
сторінку.',
|
||||
),
|
||||
);
|
|
@ -0,0 +1,325 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Loi Le <lploi91@gmail.com>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => 'Tiếng Việt - Vietnamese',
|
||||
'locale' => array(
|
||||
'0' => 'vi_VN.UTF-8',
|
||||
'1' => 'vi_VN',
|
||||
'2' => 'Việt Nam',
|
||||
),
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => 'Cài đặt',
|
||||
'action' => 'Hành động',
|
||||
'save' => 'Lưu',
|
||||
'edit' => 'Sửa',
|
||||
'delete' => 'Xóa',
|
||||
'date' => 'Ngày',
|
||||
'message' => 'Message',
|
||||
'yes' => 'Yes',
|
||||
'no' => 'No',
|
||||
'insert' => 'Thêm mới',
|
||||
'add_new' => 'Thêm mới',
|
||||
'update_available' => 'Phiên bản mới ({version}) có săn trên <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => 'Lên đầu trang',
|
||||
'go_back' => 'Quay lại',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Cancel',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => 'Yesterday at %k:%M',
|
||||
'other_day_format' => '%A at %k:%M',
|
||||
'never' => 'Never',
|
||||
'hours_ago' => '%d giờ trước',
|
||||
'an_hour_ago' => 'khoảng một giờ trước',
|
||||
'minutes_ago' => '%d phút trước',
|
||||
'a_minute_ago' => 'khoảng một phút trước',
|
||||
'seconds_ago' => '%d giây trước',
|
||||
'a_second_ago' => 'một giây trước',
|
||||
'seconds' => 'giây',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => 'Cấu hình',
|
||||
'server' => 'Servers',
|
||||
'server_log' => 'Log',
|
||||
'server_status' => 'Trạng thái',
|
||||
'server_update' => 'Cập nhật',
|
||||
'user' => 'Người dùng',
|
||||
'help' => 'Giúp đỡ',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => 'Người dùng',
|
||||
'name' => 'Tên',
|
||||
'user_name' => 'Tên đăng nhập',
|
||||
'password' => 'Mật khẩu',
|
||||
'password_repeat' => 'Nhập lại mật khẩu',
|
||||
'password_leave_blank' => 'Leave blank to keep unchanged',
|
||||
'level' => 'Cấp độ',
|
||||
'level_10' => 'Administrator',
|
||||
'level_20' => 'User',
|
||||
'level_description' => '<b>Administrators</b> có toàn quyền: họ có thể quản lý server, người
|
||||
dùng và chỉnh sửa cấu hình.<br><b>Users</b> chỉ xem và chạy cập nhật
|
||||
cho servers được giao cho họ.',
|
||||
'mobile' => 'Di động',
|
||||
'email' => 'Email',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover là một dịch vụ dễ dàng nhận các thông báo theo thời gian
|
||||
thực. Xem <a href="https://pushover.net/" target="_blank">website của họ</a>
|
||||
để biết thêm thông tin.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => 'Tên thiết bị để gửi tin nhắn đến. Để trống để gửi
|
||||
cho tất cả các thiết bị.',
|
||||
'delete_title' => 'Xóa Người dùng',
|
||||
'delete_message' => 'Bạn có chắc chắn xóa người dùng \'%1\'?',
|
||||
'deleted' => 'Đã xóa người dùng.',
|
||||
'updated' => 'Đã cập nhật người dùng.',
|
||||
'inserted' => 'Đã thêm người dùng.',
|
||||
'profile' => 'Hồ sơ',
|
||||
'profile_updated' => 'Hồ sơ của bạn đã được cập nhật.',
|
||||
'error_user_name_bad_length' => 'Tên người dùng phải có từ 2 và 64 ký tự.',
|
||||
'error_user_name_invalid' => 'Tên người dùng chỉ có thể chứa các chữ cái(a-z, A-Z), số
|
||||
(0-9), dấu chấm (.) và dấu gạch dưới (_).',
|
||||
'error_user_name_exists' => 'Tên người dùng đã tồn tại trong cơ sở dữ liệu.',
|
||||
'error_user_email_bad_length' => 'Địa chỉ email phải từ 5 đến 255 ký tự.',
|
||||
'error_user_email_invalid' => 'Địa chỉ email không hợp lệ.',
|
||||
'error_user_level_invalid' => 'Cấp độ người dùng không hợp lệ.',
|
||||
'error_user_no_match' => 'Người dùng không tìm thấy trong cơ sở dữ liệu.',
|
||||
'error_user_password_invalid' => 'Đặt mật khẩu không hợp lệ.',
|
||||
'error_user_password_no_match' => 'Các mật khẩu không khớp.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => 'Log entries',
|
||||
'type' => 'Loại',
|
||||
'status' => 'Trạng thái',
|
||||
'email' => 'Email',
|
||||
'sms' => 'SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'No logs',
|
||||
'clear' => 'Xoá nhật ký',
|
||||
'delete_title' => 'Xoá nhật ký',
|
||||
'delete_message' => 'Bạn có chắc chắn muốn xóa <b>tất</b> cả các bản ghi?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => 'Server',
|
||||
'status' => 'Trạng thái',
|
||||
'label' => 'Nhãn',
|
||||
'domain' => 'Domain/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Số giây để đợi máy chủ phản hồi.',
|
||||
'port' => 'Cổng',
|
||||
'type' => 'Loại',
|
||||
'type_website' => 'Website',
|
||||
'type_service' => 'Dịch vụ',
|
||||
'pattern' => 'Tìm kiếm chuỗi/mẫu',
|
||||
'pattern_description' => 'Nếu mẫu không tìm thấy trên website, server sẽ được đánh dấu là
|
||||
offline. Biểu thức chính quy (Regular expressions) được cho phép.',
|
||||
'last_check' => 'Kiểm tra lần cuối',
|
||||
'last_online' => 'Trực tuyến lần cuối',
|
||||
'monitoring' => 'Giám sát',
|
||||
'no_monitoring' => 'Không giám sát',
|
||||
'email' => 'Email',
|
||||
'send_email' => 'Gửi Email',
|
||||
'sms' => 'SMS',
|
||||
'send_sms' => 'Gửi SMS',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Người dùng',
|
||||
'delete_title' => 'Xóa server',
|
||||
'delete_message' => 'Bạn có chắt chắn xóa server \'%1\'?',
|
||||
'deleted' => 'Đã xóa server.',
|
||||
'updated' => 'Đã cập nhật server.',
|
||||
'inserted' => 'Đã thêm server.',
|
||||
'latency' => 'Độ trễ',
|
||||
'latency_max' => 'Độ trễ (cao nhất)',
|
||||
'latency_min' => 'Độ trễ (thấp nhất)',
|
||||
'latency_avg' => 'Độ trễ (trung bình)',
|
||||
'uptime' => 'Thời gian hoạt động',
|
||||
'year' => 'Năm',
|
||||
'month' => 'Tháng',
|
||||
'week' => 'Tuần',
|
||||
'day' => 'Ngày',
|
||||
'hour' => 'Giờ',
|
||||
'warning_threshold' => 'Ngưỡng cảnh báo',
|
||||
'warning_threshold_description' => 'Số lần kiểm tra thất bại trước khi đánh đấu là offline.',
|
||||
'chart_last_week' => 'Tuần trước',
|
||||
'chart_history' => 'Lịch sử',
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS thông báo bị vô hiệu hóa.',
|
||||
'warning_notifications_disabled_email' => 'Email thông báo bị vô hiệu hóa.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover thông báo bị vô hiệu hóa.',
|
||||
'error_server_no_match' => 'Không tìm thấy server.',
|
||||
'error_server_label_bad_length' => 'Nhãn phải có từ 1 đến 255 ký tự.',
|
||||
'error_server_ip_bad_length' => 'The domain / IP Nhãn phải có từ 1 đến 255 ký tự.',
|
||||
'error_server_ip_bad_service' => 'Địa chỉ IP không hợp lệ.',
|
||||
'error_server_ip_bad_website' => 'URL website không hợp lệ.',
|
||||
'error_server_type_invalid' => 'Chọn loại server không hợp lệ.',
|
||||
'error_server_warning_threshold_invalid' => 'Ngưỡng cảnh báo phải là một số nguyên có giá
|
||||
trị lớn hơn 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => 'Tổng quát',
|
||||
'language' => 'Ngôn ngữ',
|
||||
'show_update' => 'Kiểm tra cập nhật?',
|
||||
'email_status' => 'Cho phép gửi email',
|
||||
'email_from_email' => 'Gửi email từ địa chỉ',
|
||||
'email_from_name' => 'Tên địa chỉ mail',
|
||||
'email_smtp' => 'Enable SMTP',
|
||||
'email_smtp_host' => 'SMTP host',
|
||||
'email_smtp_port' => 'SMTP port',
|
||||
'email_smtp_security' => 'SMTP security',
|
||||
'email_smtp_security_none' => 'None',
|
||||
'email_smtp_username' => 'SMTP username',
|
||||
'email_smtp_password' => 'SMTP password',
|
||||
'email_smtp_noauth' => 'Để trống nếu không có chứng thực',
|
||||
'sms_status' => 'Cho phép gửi tin nhắn văn bản',
|
||||
'sms_gateway' => 'Gateway sử dụng để gửi tin nhắn',
|
||||
'sms_gateway_username' => 'Gateway username',
|
||||
'sms_gateway_password' => 'Gateway password',
|
||||
'sms_from' => 'Số điện thoại của người gửi',
|
||||
'pushover_status' => 'Cho phép gửi tin nhắn bằng Pushover',
|
||||
'pushover_description' => 'Pushover là một dịch vụ dễ dàng nhận các thông báo theo thời gian
|
||||
thực. Xem <a href="https://pushover.net/" target="_blank">website của họ</a>
|
||||
để biết thêm thông tin.',
|
||||
'pushover_clone_app' => 'Nhấn vào đây để tạo ứng dụng Pushover của bạn',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Trước khi bạn có thể sử dụng Pushover, bạn cần phải <a
|
||||
href="%1$s" target="_blank" rel="noopener">đăng ký một ứng
|
||||
dụng</a> tại trang web của họ và nhập Token App API ở đây.',
|
||||
'alert_type' => 'Chọn khi bạn muốn được thông báo.',
|
||||
'alert_type_description' => '<b>Thay đổi trạng thái:</b> Bạn sẽ nhận được thông báo khi
|
||||
một máy chủ có một sự thay đổi trạng thái. Từ online -> offline
|
||||
hoặc offline -> online.<br><br /><b>Offline:</b> Bạn sẽ nhận được
|
||||
thông báo khi một máy chủ offline *MỘT LẦN DUY NHẤT*. Ví dụ,
|
||||
cronjob của bạn hoạt động mỗi 15 phút và server của bạn down
|
||||
tại 01h00 cho đến 6h00. Bạn sẽ nhận được 1 thông báo lúc 01h00
|
||||
và đó là nó.<br><br><b>Always:</b> Bạn sẽ nhận được thông báo
|
||||
mỗi khi chạy đoạn script và một trang web tắt, ngay cả khi trang
|
||||
web đã được offline trong nhiều giờ.',
|
||||
'alert_type_status' => 'Thay đổi trạng thái',
|
||||
'alert_type_offline' => 'Offline',
|
||||
'alert_type_always' => 'Always',
|
||||
'log_status' => 'Log status',
|
||||
'log_status_description' => 'Nếu log status được đặt là TRUE, màn hình sẽ đăng sự kiện
|
||||
này bất cứ khi nào các thiết lập thông báo được truyền.',
|
||||
'log_email' => 'Log emails gửi bởi script',
|
||||
'log_sms' => 'Log Tin nhăn văn bản gửi bởi script',
|
||||
'log_pushover' => 'Log tin nhắn pushover gửi bởi script',
|
||||
'updated' => 'Cấu hình đã được cập nhật.',
|
||||
'tab_email' => 'Email',
|
||||
'tab_sms' => 'SMS',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => 'Thiết lặp email',
|
||||
'settings_sms' => 'Thiết lập tin nhăn văn bản',
|
||||
'settings_pushover' => 'Thiết lặp Pushover',
|
||||
'settings_notification' => 'Thiết lặp thông báo',
|
||||
'settings_log' => 'Thiết lặp Log',
|
||||
'auto_refresh' => 'Tự động làm mới',
|
||||
'auto_refresh_description' => 'Tự động làm mới servers page.<br><span class="small">Trong vài giây,
|
||||
nếu 0 trang sẽ không làm mới.</span>',
|
||||
'test' => 'Thử',
|
||||
'test_email' => 'Một email sẽ được gửi đến địa chỉ được xác định trong hồ sơ
|
||||
người dùng của bạn.',
|
||||
'test_sms' => 'Một SMS sẽ được gửi đến địa chỉ được xác định trong hồ sơ người
|
||||
dùng của bạn.',
|
||||
'test_pushover' => 'Một thông báo Pushover sẽ được gửi đến địa chỉ được xác định
|
||||
trong hồ sơ người dùng của bạn.',
|
||||
'send' => 'Gửi',
|
||||
'test_subject' => 'Thử nghiệm',
|
||||
'test_message' => 'tin nhắn thử nghiệm',
|
||||
'email_sent' => 'Gửi email',
|
||||
'email_error' => 'Lỗi trong khi gửi mail',
|
||||
'sms_sent' => 'Gửi SMS',
|
||||
'sms_error' => 'Lỗi trong khi gửi sms. %s',
|
||||
'sms_error_nomobile' => 'Không thể gửi thử SMS: không có số điện thoại hợp lệ được
|
||||
tìm thấy trong hồ sơ của bạn.',
|
||||
'pushover_sent' => 'Gửi thông báo Pushover',
|
||||
'pushover_error' => 'Một lỗi đã xảy ra trong khi gửi thông báo Pushover: %s',
|
||||
'pushover_error_noapp' => 'Không thể gửi thử thông báo: không tìm thấy Pushover App API token
|
||||
trong cấu hình.',
|
||||
'pushover_error_nokey' => 'Không thể gửi thử thông báo: không tìm thấy Pushover key trong hồ
|
||||
sơ của bạn.',
|
||||
'log_retention_period' => 'Thời gian lưu giữ log',
|
||||
'log_retention_period_description' => 'Số ngày để giữ các bản ghi của các thông báo và tài
|
||||
liệu lưu trữ của thời gian hoạt động máy chủ. Nhập 0
|
||||
để vô hiệu hóa dọn dẹp log.',
|
||||
'log_retention_days' => 'ngày',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => 'Server \'%LABEL%\' is DOWN: ip=%IP%, cổng=%PORT%. Lỗi=%ERROR%',
|
||||
'off_email_subject' => 'IMPORTANT: Server \'%LABEL%\' is DOWN',
|
||||
'off_email_body' => 'Không thể kết nối đến máy chủ sau:<br><br>Server: %LABEL%<br>IP:
|
||||
%IP%<br>Cổng: %PORT%<br>Lỗi: %ERROR%<br>Thời gian: %DATE%',
|
||||
'off_pushover_title' => 'Server \'%LABEL%\' is DOWN',
|
||||
'off_pushover_message' => 'Không thể kết nối đến máy chủ:<br><br>Server: %LABEL%<br>IP:
|
||||
%IP%<br>Cổng: %PORT%<br>Lỗi: %ERROR%<br>Thời gian: %DATE%',
|
||||
'on_sms' => 'Server \'%LABEL%\' is RUNNING: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'IMPORTANT: Server \'%LABEL%\' hoạt động',
|
||||
'on_email_body' => 'Server \'%LABEL%\' hoạt động lại, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Cổng: %PORT%<br>Thời
|
||||
gian: %DATE%',
|
||||
'on_pushover_title' => 'Server \'%LABEL%\' hoạt động',
|
||||
'on_pushover_message' => 'Server \'%LABEL%\' hoạt động lại, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Cổng:
|
||||
%PORT%<br>Thời gian: %DATE%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => 'Chào mừng, %user_name%',
|
||||
'title_sign_in' => 'Vui lòng đăng nhập',
|
||||
'title_forgot' => 'Quên mật khẩu?',
|
||||
'title_reset' => 'Khôi phục mật khẩu',
|
||||
'submit' => 'Gửi',
|
||||
'remember_me' => 'Ghi nhớ tôi',
|
||||
'login' => 'Đăng nhập',
|
||||
'logout' => 'Đăng xuất',
|
||||
'username' => 'Tên đăng nhập',
|
||||
'password' => 'Mật khẩu',
|
||||
'password_repeat' => 'Nhập lại mật khẩu',
|
||||
'password_forgot' => 'Quên mật khẩu?',
|
||||
'password_reset' => 'Khôi phục mật khẩu',
|
||||
'password_reset_email_subject' => 'Khôi phục lại mật khẩu của bạn cho PHP Server Monitor',
|
||||
'password_reset_email_body' => 'Vui lòng sử dụng liên kết sau đây để thiết lập lại mật
|
||||
khẩu của bạn. Xin lưu ý nó hết hạn trong 1 giờ.<br><br>%link%',
|
||||
'error_user_incorrect' => 'Tên người dùng cung cấp không thể tìm thấy.',
|
||||
'error_login_incorrect' => 'Thông tin không đúng.',
|
||||
'error_login_passwords_nomatch' => 'Mật khẩu được cung cấp không phù hợp.',
|
||||
'error_reset_invalid_link' => 'Liên kết đặt lại mà bạn cung cấp không hợp lệ.',
|
||||
'success_password_forgot' => 'Một email đã được gửi đến bạn với thông tin làm thế nào
|
||||
để khôi phục lại mật khẩu của bạn.',
|
||||
'success_password_reset' => 'Mật khẩu bạn được khôi phục thành công. Vui lòng đăng nhập.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Không được phép',
|
||||
'401_unauthorized_description' => 'Bạn không có quyền xem trang này.',
|
||||
),
|
||||
);
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -19,279 +20,310 @@
|
|||
*
|
||||
* @package phpservermon
|
||||
* @author manhere <https://github.com/manhere>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => '中文 - Chinese',
|
||||
'locale' => array('zh_CN.UTF-8', 'zh_CN', 'chinese', 'chinese-cn'),
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => '安装',
|
||||
'action' => '操作',
|
||||
'save' => '保存',
|
||||
'edit' => '编辑',
|
||||
'delete' => '删除',
|
||||
'date' => '日期',
|
||||
'message' => '消息',
|
||||
'yes' => '是',
|
||||
'no' => '否o',
|
||||
'insert' => '插入',
|
||||
'add_new' => '添加',
|
||||
'update_available' => '发现新版本({version}) <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => '返回顶部',
|
||||
'go_back' => '后退',
|
||||
'ok' => 'OK',
|
||||
'cancel' => 'Cancel',
|
||||
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => '昨日 %k:%M',
|
||||
'other_day_format' => '%A %k:%M',
|
||||
'never' => '从未',
|
||||
'hours_ago' => '%d 小时前',
|
||||
'an_hour_ago' => '1小时前',
|
||||
'minutes_ago' => '%d 分钟前',
|
||||
'a_minute_ago' => '1分钟前',
|
||||
'seconds_ago' => '%d 秒前',
|
||||
'a_second_ago' => '刚刚',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => '设置',
|
||||
'server' => '服务器',
|
||||
'server_log' => '日志',
|
||||
'server_status' => '状态',
|
||||
'server_update' => '更新',
|
||||
'user' => '用户',
|
||||
'help' => '帮助',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => '用户',
|
||||
'name' => '名称',
|
||||
'user_name' => '用户名',
|
||||
'password' => '密码',
|
||||
'password_repeat' => '重复密码',
|
||||
'password_leave_blank' => '留空为不修改',
|
||||
'level' => '等级',
|
||||
'level_10' => '超级管理员',
|
||||
'level_20' => '普通用户',
|
||||
'level_description' => '<b>超级管理员</b> 拥有所有权限: 管理服务器, 用户 以及修改设置.<br/><b>普通用户</b> 只能查看及更新自己名下所属的服务器.',
|
||||
'mobile' => '手机',
|
||||
'email' => '邮件',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||
'delete_title' => 'Delete User',
|
||||
'delete_message' => 'Are you sure you want to delete user \'%1\'?',
|
||||
'deleted' => 'User deleted.',
|
||||
'updated' => '用户已更新.',
|
||||
'inserted' => '用户已添加.',
|
||||
'profile' => '个人资料',
|
||||
'profile_updated' => '个人资料已更新.',
|
||||
'error_user_name_bad_length' => '用户名长度必须为2-64个字符.',
|
||||
'error_user_name_invalid' => '用户名只允许使用字母 (a-z, A-Z), 数字 (0-9) 及下划线 (_).',
|
||||
'error_user_name_exists' => '该用户名已存在.',
|
||||
'error_user_email_bad_length' => '电子邮箱长度必须为5-255个字符.',
|
||||
'error_user_email_invalid' => '无效的邮箱地址.',
|
||||
'error_user_level_invalid' => '该用户等级无效.',
|
||||
'error_user_no_match' => '该用户名不存在.',
|
||||
'error_user_password_invalid' => '密码无效.',
|
||||
'error_user_password_no_match' => '密码不符.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => '日志概览',
|
||||
'type' => '类型',
|
||||
'status' => '状态',
|
||||
'email' => '邮件',
|
||||
'sms' => '短信',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => 'No logs',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => '服务器',
|
||||
'status' => '状态',
|
||||
'label' => '标签',
|
||||
'domain' => '域名/IP',
|
||||
'timeout' => 'Timeout',
|
||||
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||
'port' => '端口',
|
||||
'type' => '类型',
|
||||
'type_website' => '网站',
|
||||
'type_service' => '服务',
|
||||
'pattern' => '字符串/正则匹配',
|
||||
'pattern_description' => '如果在网站上未找到对应匹配内容, 则标记该网站为离线. 支持正则表达式.',
|
||||
'last_check' => '最后检查',
|
||||
'last_online' => '最后在线',
|
||||
'monitoring' => '监控中',
|
||||
'no_monitoring' => 'No monitoring',
|
||||
'email' => '邮件',
|
||||
'send_email' => '发送邮件',
|
||||
'sms' => '短信',
|
||||
'send_sms' => '发送短信',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => 'Users',
|
||||
'delete_title' => 'Delete Server',
|
||||
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
|
||||
'deleted' => 'Server deleted.',
|
||||
'updated' => '服务器已更新.',
|
||||
'inserted' => '服务器已添加.',
|
||||
'latency' => '延迟',
|
||||
'latency_max' => '延迟(最大)',
|
||||
'latency_min' => '延迟(最小)',
|
||||
'latency_avg' => '延迟(平均)',
|
||||
'uptime' => 'Uptime',
|
||||
'year' => '年',
|
||||
'month' => '月',
|
||||
'week' => '周',
|
||||
'day' => '日',
|
||||
'hour' => '小时',
|
||||
'warning_threshold' => '报警阈值',
|
||||
'warning_threshold_description' => '失败达到多少次数则标记为离线.',
|
||||
'chart_last_week' => '上周',
|
||||
'chart_history' => '更早',
|
||||
// Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||
'error_server_no_match' => 'Server not found.',
|
||||
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.',
|
||||
'error_server_ip_bad_service' => 'The IP address is not valid.',
|
||||
'error_server_ip_bad_website' => 'The website URL is not valid.',
|
||||
'error_server_type_invalid' => 'The selected server type is invalid.',
|
||||
'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => '通用',
|
||||
'language' => '语言',
|
||||
'show_update' => '每周检查更新?',
|
||||
'email_status' => '允许发送邮件?',
|
||||
'email_from_email' => '发件人地址',
|
||||
'email_from_name' => '发件人名称',
|
||||
'email_smtp' => '使用SMTP发送',
|
||||
'email_smtp_host' => 'SMTP主机',
|
||||
'email_smtp_port' => 'SMTP端口',
|
||||
'email_smtp_username' => 'SMTP用户名',
|
||||
'email_smtp_password' => 'SMTP密码',
|
||||
'email_smtp_noauth' => '留空为无验证',
|
||||
'sms_status' => '允许发送短信SMS?',
|
||||
'sms_gateway' => '短信SMS发送网关',
|
||||
'sms_gateway_mosms' => 'Mosms',
|
||||
'sms_gateway_mollie' => 'Mollie',
|
||||
'sms_gateway_spryng' => 'Spryng',
|
||||
'sms_gateway_inetworx' => 'Inetworx',
|
||||
'sms_gateway_clickatell' => 'Clickatell',
|
||||
'sms_gateway_textmarketer' => 'Textmarketer',
|
||||
'sms_gateway_smsglobal' => 'SMSGlobal',
|
||||
'sms_gateway_smsit' => 'Smsit',
|
||||
'sms_gateway_username' => 'SMS网关用户名',
|
||||
'sms_gateway_password' => 'SMS网关密码',
|
||||
'sms_from' => '发信人电话号',
|
||||
'pushover_status' => 'Allow sending Pushover messages',
|
||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/">their website</a> for more info.',
|
||||
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||
'pushover_api_token' => 'Pushover App API Token',
|
||||
'pushover_api_token_description' => 'Before you can use Pushover, you need to <a href="%1$s" target="_blank">register an App</a> at their website and enter the App API Token here.',
|
||||
'alert_type' => '如果想要收到提醒请选中此项.',
|
||||
'alert_type_description' => '<b>状态变化:</b> '.
|
||||
'服务器 online -> offline 或 offline -> online 的状态变化将会收到提醒.<br/>'.
|
||||
'<br /><b>离线状态:</b> '.
|
||||
'服务器首次发生离线状态将会收到提醒 ,如:'.
|
||||
'cronjob 设定为15分钟执行一次, 服务器从1:00-6:00一直处于当状态'.
|
||||
'那么你将于1:00首次发现脱机时收到一条提醒,之后不会重复提醒.<br/>'.
|
||||
'<br><b>总是提醒:</b> '.
|
||||
'每次脚本执行或站点离线(即使站点离线很久已提醒过)均发送提醒.',
|
||||
'alert_type_status' => '状态变化',
|
||||
'alert_type_offline' => '离线状态',
|
||||
'alert_type_always' => '总是提醒',
|
||||
'log_status' => '状态记录',
|
||||
'log_status_description' => '如果状态记录设置为开, 提醒发送时均会保存记录.',
|
||||
'log_email' => '记录脚本所发邮件?',
|
||||
'log_sms' => '记录脚本所发短信SMS?',
|
||||
'log_pushover' => 'Log pushover messages sent by the script',
|
||||
'updated' => '设置已更新.',
|
||||
'tab_email' => '邮件发送设置',
|
||||
'tab_sms' => '短信发送设置',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => '邮件发送设置',
|
||||
'settings_sms' => '短信发送设置',
|
||||
'settings_pushover' => 'Pushover settings',
|
||||
'settings_notification' => '提醒设置',
|
||||
'settings_log' => '日志设置',
|
||||
'auto_refresh' => 'Auto-refresh',
|
||||
'auto_refresh_servers' =>
|
||||
'自动刷新服务器页.<br/>'.
|
||||
'<span class="small">'.
|
||||
'单位为秒, 设置为0则不自动刷新.'.
|
||||
'</span>',
|
||||
'seconds' => 'seconds',
|
||||
'test' => 'Test',
|
||||
'test_email' => 'An email will be sent to the address specified in your user profile.',
|
||||
'test_sms' => 'An SMS will be sent to the phone number specified in your user profile.',
|
||||
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||
'send' => 'Send',
|
||||
'test_subject' => 'Test',
|
||||
'test_message' => 'Test message',
|
||||
'email_sent' => 'Email sent',
|
||||
'email_error' => 'Error in email sending',
|
||||
'sms_sent' => 'Sms sent',
|
||||
'sms_error' => 'Error in sms sending',
|
||||
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||
'pushover_sent' => 'Pushover notification sent',
|
||||
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||
'log_retention_period' => 'Log retention period',
|
||||
'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
|
||||
'log_retention_days' => 'days',
|
||||
),
|
||||
// for newlines in the email messages use <br/>
|
||||
'notifications' => array(
|
||||
'off_sms' => '服务器 \'%LABEL%\' 宕机: ip=%IP%, port=%PORT%. Error=%ERROR%',
|
||||
'off_email_subject' => 'IMPORTANT: 服务器 \'%LABEL%\' 宕机',
|
||||
'off_email_body' => "无法连接到以下服务器:<br/><br/>服务器: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>错误: %ERROR%<br/>日期: %DATE%",
|
||||
'off_pushover_title' => '服务器 \'%LABEL%\' 宕机',
|
||||
'off_pushover_message' => "无法连接到以下服务器:<br/><br/>服务器: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>错误: %ERROR%<br/>日期: %DATE%",
|
||||
'on_sms' => '服务器 \'%LABEL%\' 运行中: ip=%IP%, port=%PORT%',
|
||||
'on_email_subject' => 'IMPORTANT: 服务器 \'%LABEL%\' 运行中',
|
||||
'on_email_body' => "服务器 '%LABEL%' 恢复运行:<br/><br/>服务器: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>日期: %DATE%",
|
||||
'on_pushover_title' => '服务器 \'%LABEL%\' 运行中',
|
||||
'on_pushover_message' => "服务器 '%LABEL%' 恢复运行:<br/><br/>服务器: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>日期: %DATE%",
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => '欢迎, %user_name%',
|
||||
'title_sign_in' => '请登录',
|
||||
'title_forgot' => '忘记密码?',
|
||||
'title_reset' => '重设密码',
|
||||
'submit' => '提交',
|
||||
'remember_me' => '记住我',
|
||||
'login' => '登录',
|
||||
'logout' => '注销',
|
||||
'username' => '用户名',
|
||||
'password' => '密码',
|
||||
'password_repeat' => '重复密码',
|
||||
'password_forgot' => '忘记密码?',
|
||||
'password_reset' => '重设密码',
|
||||
'password_reset_email_subject' => '重设你的密码',
|
||||
'password_reset_email_body' => '点击以下链接重设密码. 链接1小时内有效.<br/><br/>%link%',
|
||||
'error_user_incorrect' => '该用户不存在.',
|
||||
'error_login_incorrect' => '登录信息不正确.',
|
||||
'error_login_passwords_nomatch' => '密码不符.',
|
||||
'error_reset_invalid_link' => '重设密码链接无效.',
|
||||
'success_password_forgot' => '密码重设邮件已发送.',
|
||||
'success_password_reset' => '密码重设成功.请登录.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => 'Unauthorized',
|
||||
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||
),
|
||||
'name' => '中文 - Chinese',
|
||||
'locale' => array(
|
||||
'0' => 'zh_CN.UTF-8',
|
||||
'1' => 'zh_CN',
|
||||
'2' => 'chinese',
|
||||
'3' => 'chinese-cn',
|
||||
),
|
||||
'locale_tag' => 'zh',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => '安装',
|
||||
'action' => '操作',
|
||||
'save' => '保存',
|
||||
'edit' => '编辑',
|
||||
'delete' => '删除',
|
||||
'date' => '日期',
|
||||
'message' => '消息',
|
||||
'yes' => '是',
|
||||
'no' => '否',
|
||||
'insert' => '新增',
|
||||
'add_new' => '添加',
|
||||
'update_available' => '发现新版本({version}) <a
|
||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
||||
'back_to_top' => '返回顶部',
|
||||
'go_back' => '后退',
|
||||
'ok' => '确认',
|
||||
'cancel' => '取消',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => '昨日 %k:%M',
|
||||
'other_day_format' => '%A %k:%M',
|
||||
'never' => '从未',
|
||||
'hours_ago' => '%d 小时前',
|
||||
'an_hour_ago' => '1小时前',
|
||||
'minutes_ago' => '%d 分钟前',
|
||||
'a_minute_ago' => '1分钟前',
|
||||
'seconds_ago' => '%d 秒前',
|
||||
'a_second_ago' => '刚刚',
|
||||
'seconds' => '秒',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => '设置',
|
||||
'server' => '监控',
|
||||
'server_log' => '日志',
|
||||
'server_status' => '状态',
|
||||
'server_update' => '刷新',
|
||||
'user' => '用户',
|
||||
'help' => '帮助',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => '用户',
|
||||
'name' => '名称',
|
||||
'user_name' => '用户名',
|
||||
'password' => '密码',
|
||||
'password_repeat' => '重复密码',
|
||||
'password_leave_blank' => '留空为不修改',
|
||||
'level' => '等级',
|
||||
'level_10' => '超级管理员',
|
||||
'level_20' => '普通用户',
|
||||
'level_description' => '<b>超级管理员</b> 拥有所有权限: 管理服务器, 用户
|
||||
以及修改设置.<br><b>普通用户</b>
|
||||
只能查看及更新自己名下所属的服务器.',
|
||||
'mobile' => '手机',
|
||||
'email' => '邮件',
|
||||
'pushover' => 'Pushover',
|
||||
'pushover_description' => 'Pushover 是第三方用于实时通知的服务(收费). 详情见 <a
|
||||
href="https://pushover.net/" target="_blank" rel="noopener">Pushover 官网</a>.',
|
||||
'pushover_key' => 'Pushover Key',
|
||||
'pushover_device' => 'Pushover Device',
|
||||
'pushover_device_description' => '要发送信息的设备名. 留空则发送到所有设备.',
|
||||
'delete_title' => '删除用户',
|
||||
'delete_message' => '确认删除用户 \'%1\'?',
|
||||
'deleted' => '用户已删除.',
|
||||
'updated' => '用户已更新.',
|
||||
'inserted' => '用户已添加.',
|
||||
'profile' => '个人资料',
|
||||
'profile_updated' => '个人资料已更新.',
|
||||
'error_user_name_bad_length' => '用户名长度必须为2-64个字符.',
|
||||
'error_user_name_invalid' => '用户名只允许使用字母 (a-z, A-Z), 数字 (0-9), 點(。)
|
||||
及下划线 (_).',
|
||||
'error_user_name_exists' => '该用户名已存在.',
|
||||
'error_user_email_bad_length' => '电子邮箱长度必须为5-255个字符.',
|
||||
'error_user_email_invalid' => '无效的邮箱地址.',
|
||||
'error_user_level_invalid' => '该用户等级无效.',
|
||||
'error_user_no_match' => '该用户名不存在.',
|
||||
'error_user_password_invalid' => '密码无效.',
|
||||
'error_user_password_no_match' => '密码不符.',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => '日志概览',
|
||||
'type' => '类型',
|
||||
'status' => '状态',
|
||||
'email' => '邮件',
|
||||
'sms' => '短信',
|
||||
'pushover' => 'Pushover',
|
||||
'no_logs' => '没有日志',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => '业务',
|
||||
'status' => '状态',
|
||||
'label' => '标签',
|
||||
'domain' => 'URL/IP',
|
||||
'timeout' => '超时时间',
|
||||
'timeout_description' => '等待服务器响应的时间.',
|
||||
'authentication_settings' => '访问权限设置',
|
||||
'optional' => '可选',
|
||||
'website_username' => '用户名',
|
||||
'website_username_description' => '网站分配的用户名.',
|
||||
'website_password' => '密码',
|
||||
'website_password_description' => '网站分配的密码,密码将会加密存放',
|
||||
'fieldset_monitoring' => '通知',
|
||||
'fieldset_permissions' => '权限',
|
||||
'port' => '端口',
|
||||
'custom_port' => '指定端口',
|
||||
'popular_ports' => '默认端口',
|
||||
'please_select' => '请选择',
|
||||
'type' => '类型',
|
||||
'type_website' => '网站',
|
||||
'type_service' => '服务',
|
||||
'pattern' => '字符串/正则匹配',
|
||||
'pattern_description' => '如果在网站上未找到对应匹配内容, 则标记该网站为离线.
|
||||
支持正则表达式.',
|
||||
'last_check' => '最后检查',
|
||||
'last_online' => '最后在线',
|
||||
'last_offline' => 'Last offline',
|
||||
'monitoring' => '监控',
|
||||
'no_monitoring' => '未监控',
|
||||
'email' => '邮件',
|
||||
'send_email' => '发送邮件',
|
||||
'sms' => '短信',
|
||||
'send_sms' => '发送短信',
|
||||
'pushover' => 'Pushover',
|
||||
'users' => '用户',
|
||||
'delete_title' => '删除服务器',
|
||||
'delete_message' => '确认删除服务器 \'%1\'?',
|
||||
'deleted' => '服务器已删除.',
|
||||
'updated' => '服务器已更新.',
|
||||
'inserted' => '服务器已添加.',
|
||||
'latency' => '延迟',
|
||||
'latency_max' => '最大延迟',
|
||||
'latency_min' => '最小延迟',
|
||||
'latency_avg' => '平均延迟',
|
||||
'uptime' => '在线时长',
|
||||
'year' => '年',
|
||||
'month' => '月',
|
||||
'week' => '周',
|
||||
'day' => '日',
|
||||
'hour' => '小时',
|
||||
'warning_threshold' => '报警阈值',
|
||||
'warning_threshold_description' => '失败达到多少次数则标记为离线.',
|
||||
'chart_last_week' => '上周',
|
||||
'chart_history' => '更早',
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => '短信通知不可用.',
|
||||
'warning_notifications_disabled_email' => 'Email 通知不可用.',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover 通知不可用.',
|
||||
'error_server_no_match' => '服务器不存在.',
|
||||
'error_server_label_bad_length' => '标签 长度要求 1 ~ 255 字符.',
|
||||
'error_server_ip_bad_length' => 'URL / IP 长度要求 1 ~ 255 字符.',
|
||||
'error_server_ip_bad_service' => '非法 IP.',
|
||||
'error_server_ip_bad_website' => '非法 URL.',
|
||||
'error_server_type_invalid' => '非法选项.',
|
||||
'error_server_warning_threshold_invalid' => '报警阈值为大于 0 的数字.',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => '通用',
|
||||
'language' => '语言',
|
||||
'show_update' => '每周检查更新?',
|
||||
'password_encrypt_key' => '加密密钥',
|
||||
'password_encrypt_key_note' => '该密钥用于加密访问 URL 时的用户名和密码.
|
||||
如果需要修改密钥,请同步修改以前的监控业务,确认密钥匹配!',
|
||||
'proxy' => '使用代理',
|
||||
'proxy_url' => '代理IP',
|
||||
'proxy_user' => '用户名',
|
||||
'proxy_password' => '密码',
|
||||
'email_status' => '允许发送邮件?',
|
||||
'email_from_email' => '发件人地址',
|
||||
'email_from_name' => '发件人名称',
|
||||
'email_smtp' => '使用SMTP发送',
|
||||
'email_smtp_host' => 'SMTP主机',
|
||||
'email_smtp_port' => 'SMTP端口',
|
||||
'email_smtp_security' => 'SMTP 设置',
|
||||
'email_smtp_security_none' => '空',
|
||||
'email_smtp_username' => 'SMTP用户名',
|
||||
'email_smtp_password' => 'SMTP密码',
|
||||
'email_smtp_noauth' => '留空为无验证',
|
||||
'sms_status' => '允许发送短信SMS?',
|
||||
'sms_gateway' => '短信SMS发送网关',
|
||||
'sms_gateway_username' => 'SMS网关用户名',
|
||||
'sms_gateway_password' => 'SMS网关密码',
|
||||
'sms_from' => '发信人电话号',
|
||||
'pushover_status' => '允许 Pushover 通知',
|
||||
'pushover_description' => 'Pushover 是第三方用于实时通知的服务(收费). 详情见 <a
|
||||
href="https://pushover.net/" target="_blank" rel="noopener">Pushover 官网</a>.',
|
||||
'pushover_clone_app' => '点此创建 Pushover App',
|
||||
'pushover_api_token' => 'Pushover API Token',
|
||||
'pushover_api_token_description' => '请先 <a href="%1$s" target="_blank" rel="noopener">注册Pushover</a>
|
||||
并获取 Api Token.',
|
||||
'alert_type' => '如果想要收到提醒请选中此项.',
|
||||
'alert_type_description' => '<b>状态变化:</b> 业务 online -> offline 或 offline -> online
|
||||
的状态变化将会收到提醒.<br><br /><b>离线状态:</b>
|
||||
服务器首次发生离线状态将会收到提醒 ,如:cronjob
|
||||
设定为15分钟执行一次,
|
||||
服务器从1:00-6:00一直处于当状态那么你将于1:00首次发现脱机时收到一条提醒,之后不会重复提醒.<br><br><b>总是提醒:</b>
|
||||
每次脚本执行或站点离线(即使站点离线很久已提醒过)均发送提醒.',
|
||||
'alert_type_status' => '状态变化',
|
||||
'alert_type_offline' => '离线状态',
|
||||
'alert_type_always' => '总是提醒',
|
||||
'alert_proxy' => '代理只用于 URL 监控,如没有用户名密码,请留空',
|
||||
'alert_proxy_url' => '格式: Host:Port',
|
||||
'log_status' => '状态记录',
|
||||
'log_status_description' => '如果状态记录设置为开, 提醒发送时均会保存记录.',
|
||||
'log_email' => '记录脚本所发邮件?',
|
||||
'log_sms' => '记录脚本所发短信?',
|
||||
'log_pushover' => '记录脚本所发pushover消息?',
|
||||
'updated' => '设置已更新.',
|
||||
'tab_email' => '邮件发送设置',
|
||||
'tab_sms' => '短信发送设置',
|
||||
'tab_pushover' => 'Pushover',
|
||||
'settings_email' => '邮件发送设置',
|
||||
'settings_sms' => '短信发送设置',
|
||||
'settings_pushover' => 'Pushover 设置',
|
||||
'settings_notification' => '提醒设置',
|
||||
'settings_log' => '日志设置',
|
||||
'settings_proxy' => '代理设置',
|
||||
'auto_refresh' => '自动刷新',
|
||||
'auto_refresh_description' => '自动刷新服务器页.<br><span class="small">单位为秒, 设置为 0
|
||||
则不自动刷新.</span>',
|
||||
'test' => '测试',
|
||||
'test_email' => '将发送一封邮件到您账户设置的邮件地址.',
|
||||
'test_sms' => '将发送一封短信到您账户设置的手机号码.',
|
||||
'test_pushover' => '将发送一条 Pushover 通知到您账户设置的 key/device 设备上.',
|
||||
'send' => '发送',
|
||||
'test_subject' => '测试',
|
||||
'test_message' => '测试信息',
|
||||
'email_sent' => '发送邮件',
|
||||
'email_error' => '发送出错',
|
||||
'sms_sent' => '发送短信',
|
||||
'sms_error' => '短信发送出错 %s',
|
||||
'sms_error_nomobile' => '无法发送短信: 您的账号未设置有效手机号码.',
|
||||
'pushover_sent' => '发送Pushover通知',
|
||||
'pushover_error' => 'Pushover通知发送出错: %s',
|
||||
'pushover_error_noapp' => 'Pushover通知发送出错: no Pushover App API token found in the global
|
||||
configuration.',
|
||||
'pushover_error_nokey' => 'Pushover通知无法发送: no Pushover key found in your profile.',
|
||||
'log_retention_period' => '日志保留时长',
|
||||
'log_retention_period_description' => '日志存档保留时间,0为禁用日志清理',
|
||||
'log_retention_days' => '天',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => '监控项 \'%LABEL%:%PORT%\' 异常. %ERROR% %IP%',
|
||||
'off_email_subject' => 'IMPORTANT: 服务器 \'%LABEL%\' 宕机',
|
||||
'off_email_body' => '无法连接到以下服务器:<br><br>服务器: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>错误: %ERROR%<br>日期: %DATE%',
|
||||
'off_pushover_title' => '服务器 \'%LABEL%\' 宕机',
|
||||
'off_pushover_message' => '无法连接到以下服务器:<br><br>服务器: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>错误: %ERROR%<br>日期: %DATE%',
|
||||
'on_sms' => '服务器 \'%LABEL%\' 运行中: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
||||
'on_email_subject' => 'IMPORTANT: 服务器 \'%LABEL%\' 运行中',
|
||||
'on_email_body' => '服务器 \'%LABEL%\' 恢复运行, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>服务器: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>日期:
|
||||
%DATE%',
|
||||
'on_pushover_title' => '服务器 \'%LABEL%\' 运行中',
|
||||
'on_pushover_message' => '服务器 \'%LABEL%\' 恢复运行, it was down for
|
||||
%LAST_OFFLINE_DURATION%:<br><br>服务器: %LABEL%<br>IP: %IP%<br>Port:
|
||||
%PORT%<br>日期: %DATE%',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => '欢迎, %user_name%',
|
||||
'title_sign_in' => '请登录',
|
||||
'title_forgot' => '忘记密码?',
|
||||
'title_reset' => '重设密码',
|
||||
'submit' => '提交',
|
||||
'remember_me' => '记住我',
|
||||
'login' => '登录',
|
||||
'logout' => '注销',
|
||||
'username' => '用户名',
|
||||
'password' => '密码',
|
||||
'password_repeat' => '重复密码',
|
||||
'password_forgot' => '忘记密码?',
|
||||
'password_reset' => '重设密码',
|
||||
'password_reset_email_subject' => '重设你的密码',
|
||||
'password_reset_email_body' => '点击以下链接重设密码. 链接1小时内有效.<br><br>%link%',
|
||||
'error_user_incorrect' => '该用户不存在.',
|
||||
'error_login_incorrect' => '登录信息不正确.',
|
||||
'error_login_passwords_nomatch' => '密码不符.',
|
||||
'error_reset_invalid_link' => '重设密码链接无效.',
|
||||
'success_password_forgot' => '密码重设邮件已发送.',
|
||||
'success_password_reset' => '密码重设成功.请登录.',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => '未授权的请求',
|
||||
'401_unauthorized_description' => '未授权的请求.',
|
||||
),
|
||||
);
|
||||
|
|
|
@ -0,0 +1,368 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Jason Cheng <https://github.com/jasoncheng7115>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: v3.1.1
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
$sm_lang = array(
|
||||
'name' => '繁體中文 - Traditional Chinese',
|
||||
'locale' => array(
|
||||
'0' => 'zh_TW.UTF-8',
|
||||
'1' => 'zh_TW',
|
||||
'2' => 'chinese',
|
||||
'3' => 'chinese-tw',
|
||||
),
|
||||
'locale_tag' => 'zh_TW',
|
||||
'locale_dir' => 'ltr',
|
||||
'system' => array(
|
||||
'title' => 'Server Monitor',
|
||||
'install' => '安裝',
|
||||
'action' => '動作',
|
||||
'save' => '儲存',
|
||||
'edit' => '編輯',
|
||||
'delete' => '刪除',
|
||||
'date' => '日期',
|
||||
'message' => '訊息',
|
||||
'yes' => '是',
|
||||
'no' => '否',
|
||||
'insert' => '插入',
|
||||
'add_new' => '增加',
|
||||
'back_to_top' => '回到最上層',
|
||||
'go_back' => '返回',
|
||||
'ok' => '確定',
|
||||
'cancel' => '取消',
|
||||
'activate' => '啟用',
|
||||
'short_day_format' => '%B %e',
|
||||
'long_day_format' => '%B %e, %Y',
|
||||
'yesterday_format' => '昨日 %k:%M',
|
||||
'other_day_format' => '%A %k:%M',
|
||||
'never' => '從未',
|
||||
'hours_ago' => '%d小時前',
|
||||
'an_hour_ago' => '1小時前',
|
||||
'minutes_ago' => '%d分鐘前',
|
||||
'a_minute_ago' => '1分鐘前',
|
||||
'seconds_ago' => '%d秒前',
|
||||
'a_second_ago' => '剛剛',
|
||||
'year' => '年',
|
||||
'years' => '年',
|
||||
'month' => '月',
|
||||
'months' => '月',
|
||||
'day' => '日',
|
||||
'days' => '日',
|
||||
'hour' => '時',
|
||||
'hours' => '時',
|
||||
'minute' => '分',
|
||||
'minutes' => '分',
|
||||
'second' => '秒',
|
||||
'seconds' => '秒',
|
||||
),
|
||||
'menu' => array(
|
||||
'config' => '設定',
|
||||
'server' => '伺服器',
|
||||
'server_log' => '記錄',
|
||||
'server_status' => '狀態',
|
||||
'server_update' => '更新',
|
||||
'user' => '使用者',
|
||||
'help' => '說明',
|
||||
),
|
||||
'users' => array(
|
||||
'user' => '使用者',
|
||||
'name' => '顯示名稱',
|
||||
'user_name' => '使用者名稱',
|
||||
'password' => '密碼',
|
||||
'password_repeat' => '再次輸入密碼',
|
||||
'password_leave_blank' => '若密碼欄位保持空白,表示不做修改',
|
||||
'level' => '等級',
|
||||
'level_10' => '超級管理員',
|
||||
'level_20' => '一般使用者',
|
||||
'level_description' => '<b>超級管理員</b>
|
||||
具備所有伺服器的管理權限,可管理使用者以及修改系統設定。<br/><b>一般使用者</b>
|
||||
僅能查看以及更新自己所負責的伺服器。',
|
||||
'mobile' => '行動電話',
|
||||
'email' => '電子郵件',
|
||||
'pushover' => 'Pushover 通知',
|
||||
'pushover_description' => 'Pushover
|
||||
是一種雲端服務,讓你可以很方便的收到即時訊息通知,您可以到<a
|
||||
href="https://pushover.net/">網站</a>了解更多的內容。',
|
||||
'pushover_key' => 'Pushover 金鑰',
|
||||
'pushover_device' => 'Pushover 裝置',
|
||||
'pushover_device_description' => '發送訊息的裝置名稱,若保留空白,將會發送到所有的裝置。',
|
||||
'telegram' => 'Telegram 通知',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a>
|
||||
是一種聊天應用程式,它提供很容易使用的的即時通知能力。您可以到
|
||||
<a href="http://docs.phpservermonitor.org/" target="_blank">documentation</a>
|
||||
了解更多的內容。',
|
||||
'telegram_chat_id' => 'Telegram Chat ID',
|
||||
'telegram_chat_id_description' => '將訊息發送到指定的聊天室',
|
||||
'telegram_get_chat_id' => '點選這裡可以取得您的 Chat ID',
|
||||
'activate_telegram' => '啟用 Telegram 通知',
|
||||
'activate_telegram_description' => '允許 Telegram 將訊息發送到指定的 Chat
|
||||
ID。若沒有啟用此項目,Telegram
|
||||
將不允許我們發送通知給您。',
|
||||
'telegram_bot_username_error_token' => '401 - 未授權,請確認您的 API Token 是有效的。',
|
||||
'telegram_bot_error' => '啟用 Telegram 通知時發生錯誤:%s',
|
||||
'delete_title' => '刪除使用者',
|
||||
'delete_message' => '您確定要刪除使用者 \'%1\'?',
|
||||
'deleted' => '已刪除使用者。',
|
||||
'updated' => '已更新使用者。',
|
||||
'inserted' => '已增加使用者。',
|
||||
'profile' => '個人資料',
|
||||
'profile_updated' => '個人資料已經更新。',
|
||||
'error_user_name_bad_length' => '使用者名稱長度必須為2-64個字元。',
|
||||
'error_user_name_invalid' => '使用者名稱只允許英文字母(a-z、A-Z)、數字(0-9)以及底線(_)。',
|
||||
'error_user_name_exists' => '這個使用者名稱已存在。',
|
||||
'error_user_email_bad_length' => '電子郵件長度為5-255個字元。',
|
||||
'error_user_email_invalid' => '無效的電子郵件。',
|
||||
'error_user_level_invalid' => '無效的使用者等級。',
|
||||
'error_user_no_match' => '這個使用者名稱不存在。',
|
||||
'error_user_password_invalid' => '無效的密碼。',
|
||||
'error_user_password_no_match' => '密碼不符。',
|
||||
),
|
||||
'log' => array(
|
||||
'title' => '記錄概覽',
|
||||
'type' => '類型',
|
||||
'status' => '狀態',
|
||||
'email' => '電子郵件通知',
|
||||
'sms' => '簡訊通知',
|
||||
'pushover' => 'Pushover 通知',
|
||||
'telegram' => 'Telegram 通知',
|
||||
'no_logs' => '沒有記錄',
|
||||
'clear' => '清除記錄',
|
||||
'delete_title' => '刪除記錄',
|
||||
'delete_message' => '您確定要刪除 <b>所有</b> 記錄?',
|
||||
),
|
||||
'servers' => array(
|
||||
'server' => '伺服器',
|
||||
'status' => '狀態',
|
||||
'label' => '標籤',
|
||||
'domain' => '網域/IP',
|
||||
'timeout' => '逾時',
|
||||
'timeout_description' => '等待伺服器回應的秒數。',
|
||||
'authentication_settings' => '驗證設定 (非必要)',
|
||||
'website_username' => '使用者',
|
||||
'website_username_description' => '存取這個網站的使用者。(只支援 Apache 驗證)',
|
||||
'website_password' => '密碼',
|
||||
'website_password_description' => '存取這個網站的使用者。(密碼將會以加密形式存放在資料庫)',
|
||||
'fieldset_monitoring' => '監視',
|
||||
'fieldset_permissions' => '權限',
|
||||
'port' => '連接埠',
|
||||
'custom_port' => '自訂連接埠',
|
||||
'popular_ports' => '常用連接埠',
|
||||
'please_select' => '請選擇',
|
||||
'type' => '類型',
|
||||
'type_website' => '網站',
|
||||
'type_service' => '服務',
|
||||
'type_ping' => 'Ping',
|
||||
'pattern' => '字串',
|
||||
'pattern_description' => '如果在網站上沒有找到符合的字串,則將網站標示為離線。',
|
||||
'pattern_online' => '指明網站上的字串',
|
||||
'pattern_online_description' => '線上:如果在網站上沒有找到符合的字串,則將網站標示為線上。',
|
||||
'header_name_description' => '標頭名稱 (區分大小寫)',
|
||||
'header_value_description' => '標頭的值,可以使用正則表示式。',
|
||||
'last_check' => '最後一次檢查',
|
||||
'last_online' => '最後一次上線',
|
||||
'last_offline' => '最後一次離線',
|
||||
'monitoring' => '監控中',
|
||||
'no_monitoring' => '未監控',
|
||||
'email' => '電子郵件通知',
|
||||
'send_email' => '發送電子郵件',
|
||||
'sms' => '簡訊通知',
|
||||
'send_sms' => '發送簡訊',
|
||||
'pushover' => 'Pushover 通知',
|
||||
'send_pushover' => '發送 Pushover 通知',
|
||||
'telegram' => 'Telegram 通知',
|
||||
'send_telegram' => '發送 Telegram 通知',
|
||||
'users' => '使用者',
|
||||
'delete_title' => '刪除伺服器',
|
||||
'delete_message' => '您確定要刪除這個伺服器 \'%1\'?',
|
||||
'deleted' => '伺服器已刪除。',
|
||||
'updated' => '伺服器已更新。',
|
||||
'inserted' => '伺服器已增加。',
|
||||
'latency' => '延遲',
|
||||
'latency_max' => '延遲 (最大)',
|
||||
'latency_min' => '延遲 (最小)',
|
||||
'latency_avg' => '延遲 (平均)',
|
||||
'uptime' => '上線時間',
|
||||
'year' => '年',
|
||||
'month' => '月',
|
||||
'week' => '週',
|
||||
'day' => '日',
|
||||
'hour' => '小時',
|
||||
'warning_threshold' => '警報臨界值',
|
||||
'warning_threshold_description' => '失敗達到多少次數則標示為離線。',
|
||||
'chart_last_week' => '上週',
|
||||
'chart_history' => '更早',
|
||||
'chart_day_format' => '%Y-%m-%d',
|
||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||
'chart_short_date_format' => '%m/%d %H:%M',
|
||||
'chart_short_time_format' => '%H:%M',
|
||||
'warning_notifications_disabled_sms' => '簡訊通知已關閉。',
|
||||
'warning_notifications_disabled_email' => '電子郵件通知已關閉。',
|
||||
'warning_notifications_disabled_pushover' => 'Pushover 通知已關閉。',
|
||||
'warning_notifications_disabled_telegram' => 'Telegram 通知已關閉。',
|
||||
'error_server_no_match' => '找不到伺服器。',
|
||||
'error_server_label_bad_length' => '標籤必須在1到255間的字元。',
|
||||
'error_server_ip_bad_length' => '網域/IP必須在1到255間的字元。',
|
||||
'error_server_ip_bad_service' => '無效的 IP 位址。',
|
||||
'error_server_ip_bad_website' => '無效的網址。',
|
||||
'error_server_type_invalid' => '無效的的伺服器型態',
|
||||
'error_server_warning_threshold_invalid' => '警報臨界值必須是大於 0 的有效整數。',
|
||||
),
|
||||
'config' => array(
|
||||
'general' => '一般',
|
||||
'language' => '語言',
|
||||
'show_update' => '檢查更新',
|
||||
'password_encrypt_key' => '加密金鑰',
|
||||
'password_encrypt_key_note' => '這個加密金鑰將用於保護您登入這個網站的密碼,如果修改了此金鑰,原本已經存在的密碼將無法使用!',
|
||||
'proxy' => '啟用 Proxy',
|
||||
'proxy_url' => 'Proxy URL',
|
||||
'proxy_user' => 'Proxy 使用者名稱',
|
||||
'proxy_password' => 'Proxy 密碼',
|
||||
'email_status' => '啟用電子郵件通知',
|
||||
'email_from_email' => '寄件者信箱',
|
||||
'email_from_name' => '寄件者名稱',
|
||||
'email_smtp' => '使用SMTP發信',
|
||||
'email_smtp_host' => 'SMTP主機',
|
||||
'email_smtp_port' => 'SMTP連接埠口',
|
||||
'email_smtp_security' => 'SMTP安全性',
|
||||
'email_smtp_security_none' => '無',
|
||||
'email_smtp_username' => 'SMTP使用者名稱',
|
||||
'email_smtp_password' => 'SMTP使用者密碼',
|
||||
'email_smtp_noauth' => '留空白表示不做帳號驗證',
|
||||
'sms_status' => '啟用簡訊通知',
|
||||
'sms_gateway' => '簡訊服務提供者',
|
||||
'sms_gateway_username' => '簡訊閘道使用者名稱',
|
||||
'sms_gateway_password' => '簡訊閘道使用者密碼',
|
||||
'sms_from' => '發送人電話號碼',
|
||||
'pushover_status' => '啟用Pushover通知',
|
||||
'pushover_description' => 'Pushover是線上服務,讓您可以方便的收到即時通知,請參考 <a
|
||||
href="https://pushover.net/" target="_blank"> 網站</a>
|
||||
可以得到更詳細的資訊。</a> ',
|
||||
'pushover_clone_app' => '點選這裡可快速建立Pushover App',
|
||||
'pushover_api_token_description' => '在您使用 Pushover 通知之前,需要先到這裡-><a href="%1$s"
|
||||
target="_blank" rel="noopener">註冊Pushover App帳號</a>
|
||||
接著在這個網頁輸入你的的Pushover App API Token號碼。',
|
||||
'telegram_status' => '允許發送 Telegram 訊息',
|
||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a>
|
||||
是一種聊天應用程式,它提供很容易使用的即時通知服務。請參考
|
||||
<a href="http://docs.phpservermonitor.org/" target="_blank">文件庫</a>
|
||||
可以取得更多資訊與安裝說明。',
|
||||
'telegram_api_token_description' => '使用 Telegram 通知之前,您必需先取得 API Token。請到 <a
|
||||
href="http://docs.phpservermonitor.org/" target="_blank">文件庫</a>
|
||||
取得說明。',
|
||||
'alert_type' => '需要提醒的類別',
|
||||
'alert_type_description' => '<b>狀態改變:</b> 伺服器 連線 -> 離線或連線 ->
|
||||
連線的狀態變化將會收到提醒通知。<br/><br /><b>離線:</b>
|
||||
伺服器首次發生離線狀態將會收到提醒,如:設定為15分鐘執行一次,伺服器從1:00-6:00一直處於離線狀態那麼你將會在1:00首次收到一則提醒通知,之後便不會在收到重覆的提醒通知。<br/><br><b>全部:</b>
|
||||
每次執行當伺服器離線(即使伺服器離線很久已提醒過了)均發送提醒通知。',
|
||||
'alert_type_status' => '狀態改變',
|
||||
'alert_type_offline' => '離線',
|
||||
'alert_type_always' => '全部',
|
||||
'alert_proxy_url' => '<b>格式:</b> Host:Port',
|
||||
'log_status' => '狀態記錄',
|
||||
'log_status_description' => '如果啟用狀態記錄,則每一筆提醒通知都會保留記錄。',
|
||||
'log_email' => '保留電子郵件通知發送記錄',
|
||||
'log_sms' => '保留簡訊通知發送記錄',
|
||||
'log_pushover' => '保留 pushover 通知發送記錄',
|
||||
'log_telegram' => '保留 telegram 通知發送記錄',
|
||||
'updated' => '已更新設定。',
|
||||
'tab_email' => '電子郵件發送設定',
|
||||
'tab_sms' => '簡訊發送設定',
|
||||
'tab_pushover' => 'Pushover 通知',
|
||||
'tab_telegram' => 'Telegram 通知',
|
||||
'settings_email' => '電子郵件發送設定',
|
||||
'settings_sms' => '簡訊發送設定',
|
||||
'settings_pushover' => 'Pushover 發送設定',
|
||||
'settings_telegram' => 'Telegram 發送設定',
|
||||
'settings_notification' => '提醒設定',
|
||||
'settings_log' => '記錄設定',
|
||||
'settings_proxy' => 'Proxy 設定',
|
||||
'auto_refresh' => '自動更新',
|
||||
'test' => '測試',
|
||||
'test_email' => '電子郵件將發送到您在使用者設定內指定的電子郵件信箱。',
|
||||
'test_sms' => '簡訊將發送到您在使用者設定內指定的行動電話號碼。',
|
||||
'test_pushover' => 'Pushover 通知將發送到您在使用者設定的裝置。',
|
||||
'test_telegram' => 'Telegram 通知將發送到您在使用者設定的 Chat ID。',
|
||||
'send' => '傳送',
|
||||
'test_subject' => '標題',
|
||||
'test_message' => '訊息',
|
||||
'email_sent' => '傳送',
|
||||
'email_error' => '電子郵件傳送發生錯誤',
|
||||
'sms_sent' => '簡訊發送',
|
||||
'sms_error' => '簡訊發送發生錯誤',
|
||||
'sms_error_nomobile' => '無法傳送 SMS 簡訊測試:您設定的電話號碼無效或無法找到。',
|
||||
'pushover_sent' => '傳送 Pushover 通知',
|
||||
'pushover_error' => '傳送 Pushover 通知發生錯誤: %s',
|
||||
'pushover_error_noapp' => '無法傳送 Pushover 通知: 在系統設定找不到 Pushover App API token。',
|
||||
'pushover_error_nokey' => '無法傳送 Pushover 通知: 在系統設定找不到 Pushover key found 。',
|
||||
'telegram_sent' => '傳送 Telegram 通知',
|
||||
'telegram_error' => '傳送 Telegram 通知發生錯誤: %s',
|
||||
'telegram_error_notoken' => '無法傳送 Telegram 通知: 在系統設定找不到 Telegram API token。',
|
||||
'telegram_error_noid' => '無法傳送 Telegram 通知: 在您的個人資料找不到 Chat ID。',
|
||||
'log_retention_period' => '記錄保留期限',
|
||||
'log_retention_period_description' => '保留伺服器運作時間和記錄歸檔的天數,輸入0可以防止記錄被清除',
|
||||
'log_retention_days' => '日',
|
||||
),
|
||||
'notifications' => array(
|
||||
'off_sms' => '伺服器 \'%LABEL%\' 關機: ip=%IP%, port=%PORT%. Error=%ERROR%',
|
||||
'off_email_subject' => 'IMPORTANT: 服務器 \'%LABEL%\' 關機',
|
||||
'off_email_body' => '無法連線到以下伺服器:<br/><br/>伺服器: %LABEL%<br/>IP: %IP%<br/>Port:
|
||||
%PORT%<br/>錯誤: %ERROR%<br/>日期: %DATE%',
|
||||
'off_pushover_title' => '伺服器 \'%LABEL%\' 關機',
|
||||
'off_pushover_message' => '無法連線到以下伺服器:<br/><br/>伺服器: %LABEL%<br/>IP: %IP%<br/>Port:
|
||||
%PORT%<br/>錯誤: %ERROR%<br/>日期: %DATE%',
|
||||
'off_telegram_message' => '無法連線到以下伺服器:<br/><br/>伺服器: %LABEL%<br/>IP: %IP%<br/>Port:
|
||||
%PORT%<br/>錯誤: %ERROR%<br/>日期: %DATE%',
|
||||
'on_email_subject' => 'IMPORTANT: 伺服器 \'%LABEL%\' 運行中',
|
||||
'on_pushover_title' => '伺服器 \'%LABEL%\' 運作中',
|
||||
),
|
||||
'login' => array(
|
||||
'welcome_usermenu' => '歡迎,%user_name%',
|
||||
'title_sign_in' => '請登入',
|
||||
'title_forgot' => '忘記密碼',
|
||||
'title_reset' => '密碼重置',
|
||||
'submit' => '送出',
|
||||
'remember_me' => '記住我',
|
||||
'login' => '登入',
|
||||
'logout' => '登出',
|
||||
'username' => '使用者名稱',
|
||||
'password' => '密碼',
|
||||
'password_repeat' => '再次輸入密碼',
|
||||
'password_forgot' => '忘記密碼',
|
||||
'password_reset' => '重設密碼',
|
||||
'password_reset_email_subject' => '重設您的密碼',
|
||||
'password_reset_email_body' => '點選以下連結來重設密碼,這個連結於1小時後失效。<br/><br/>%link%',
|
||||
'error_user_incorrect' => '使用者不存在。',
|
||||
'error_login_incorrect' => '登入資料不正確。',
|
||||
'error_login_passwords_nomatch' => '密碼不符合。',
|
||||
'error_reset_invalid_link' => '重設密碼連結無效。',
|
||||
'success_password_forgot' => '重設密碼電子郵件已發送。',
|
||||
'success_password_reset' => '密碼重設成功,請登入。',
|
||||
),
|
||||
'error' => array(
|
||||
'401_unauthorized' => '驗證失敗',
|
||||
'401_unauthorized_description' => '您没有權限進入這個頁面。',
|
||||
),
|
||||
);
|
|
@ -1,474 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
namespace psm\Module;
|
||||
use psm\Service\Database;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
abstract class AbstractController implements ControllerInterface {
|
||||
|
||||
/**
|
||||
* Current action
|
||||
* @var string $action
|
||||
*/
|
||||
protected $action;
|
||||
|
||||
/**
|
||||
* Default action
|
||||
* @var string $action_default
|
||||
* @see setActions()
|
||||
*/
|
||||
protected $action_default;
|
||||
|
||||
/**
|
||||
* Actions available for this module
|
||||
* @var array $actions
|
||||
* @see setActions()
|
||||
* @see getAction()
|
||||
*/
|
||||
protected $actions = array();
|
||||
|
||||
/**
|
||||
* Add footer to page?
|
||||
* @var boolean $add_footer
|
||||
* @see addFooter()
|
||||
*/
|
||||
protected $add_footer = true;
|
||||
|
||||
/**
|
||||
* Add menu to page?
|
||||
* @var boolean $add_menu
|
||||
* @see addMenu()
|
||||
*/
|
||||
protected $add_menu = true;
|
||||
|
||||
/**
|
||||
* Messages to show the user
|
||||
* @var array $messages
|
||||
* @see addMessage()
|
||||
*/
|
||||
protected $messages = array();
|
||||
|
||||
/**
|
||||
* Sidebar to add
|
||||
* @var \psm\Util\Module\Sidebar $sidebar
|
||||
*/
|
||||
protected $sidebar;
|
||||
|
||||
/**
|
||||
* array of Modal to add
|
||||
* @var \psm\Util\Module\ModalInterface[] $modal
|
||||
*/
|
||||
protected $modal = array();
|
||||
|
||||
/**
|
||||
* html code of header accessories
|
||||
* @var string $header_accessories
|
||||
*/
|
||||
protected $header_accessories;
|
||||
|
||||
/**
|
||||
* Database object
|
||||
* @var \psm\Service\Database $db
|
||||
*/
|
||||
protected $db;
|
||||
|
||||
/**
|
||||
* Twig object
|
||||
* @var \Twig_Environment $twig
|
||||
*/
|
||||
protected $twig;
|
||||
|
||||
/**
|
||||
* User service
|
||||
* @var \psm\Service\User $user
|
||||
*/
|
||||
protected $user;
|
||||
|
||||
/**
|
||||
* Required user level for this module
|
||||
* @var int $user_level_required
|
||||
* @see setMinUserLevelRequired()
|
||||
*/
|
||||
protected $user_level_required = PSM_USER_USER;
|
||||
|
||||
/**
|
||||
* Required user level for certain actions
|
||||
* @var int $user_level_required_actions
|
||||
* @see setMinUserLevelRequiredForAction()
|
||||
*/
|
||||
protected $user_level_required_actions = array();
|
||||
|
||||
/*
|
||||
* Required using black background layout
|
||||
* @var boolean $black_background
|
||||
*/
|
||||
protected $black_background = false;
|
||||
|
||||
/**
|
||||
* XHR mode?
|
||||
* @var boolean $xhr
|
||||
* @see isXHR()
|
||||
*/
|
||||
protected $xhr = false;
|
||||
|
||||
function __construct(Database $db, \Twig_Environment $twig) {
|
||||
$this->db = $db;
|
||||
$this->twig = $twig;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize the controller.
|
||||
*
|
||||
* @param string $action if NULL, the action will be retrieved from user input (GET/POST)
|
||||
* @return \Symfony\Component\HttpFoundation\Response
|
||||
*/
|
||||
public function initialize($action = null) {
|
||||
if($action === null) {
|
||||
$action = psm_GET('action', psm_POST('action', $this->action_default));
|
||||
}
|
||||
$this->xhr = (bool) psm_GET('xhr', psm_POST('xhr', false));
|
||||
|
||||
if(!in_array($action, $this->actions) || !($result = $this->initializeAction($action))) {
|
||||
$result = $this->initializeAction($this->action_default);
|
||||
}
|
||||
|
||||
if($result instanceof Response) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
// no response returned from execute, create regular HTML
|
||||
return $this->createHTML($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Run a specified action
|
||||
*
|
||||
* For it to run, the "execute$action" method must exist.
|
||||
* @param string $action
|
||||
* @return mixed FALSE when action couldnt be initialized, response otherwise
|
||||
*/
|
||||
protected function initializeAction($action) {
|
||||
if(isset($this->user_level_required_actions[$action])) {
|
||||
$ulvl = ($this->user) ? $this->user->getUserLevel() : PSM_USER_ANONYMOUS;
|
||||
|
||||
if($ulvl > $this->user_level_required_actions[$action]) {
|
||||
// user is not allowed to access this action..
|
||||
return false;
|
||||
}
|
||||
}
|
||||
$method = 'execute' . ucfirst($action);
|
||||
if(method_exists($this, $method)) {
|
||||
$this->action = $action;
|
||||
$result = $this->$method();
|
||||
// if result from execute is null, no return value given so return true to indicate a successful execute
|
||||
return ($result === null) ? true : $result;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the HTML code for the module.
|
||||
*
|
||||
* If XHR is on, no main template will be added.
|
||||
*
|
||||
* @param string $html HTML code to add to the main body
|
||||
* @return \Symfony\Component\HttpFoundation\Response
|
||||
*/
|
||||
protected function createHTML($html = null) {
|
||||
if(!$this->xhr) {
|
||||
// in XHR mode, we will not add the main template
|
||||
$tpl_data = array(
|
||||
'title' => strtoupper(psm_get_lang('system', 'title')),
|
||||
'label_back_to_top' => psm_get_lang('system', 'back_to_top'),
|
||||
'add_footer' => $this->add_footer,
|
||||
'version' => 'v' . PSM_VERSION,
|
||||
'messages' => $this->getMessages(),
|
||||
'html_content' => $html,
|
||||
);
|
||||
|
||||
// add menu to page?
|
||||
if($this->add_menu) {
|
||||
$tpl_data['html_menu'] = $this->createHTMLMenu();
|
||||
}
|
||||
// add header accessories to page ?
|
||||
if($this->header_accessories) {
|
||||
$tpl_data['header_accessories'] = $this->header_accessories;
|
||||
}
|
||||
// add modal dialog to page ?
|
||||
if(sizeof($this->modal)) {
|
||||
$html_modal = '';
|
||||
foreach($this->modal as $modal) {
|
||||
$html_modal .= $modal->createHTML();
|
||||
}
|
||||
$tpl_data['html_modal'] = $html_modal;
|
||||
}
|
||||
// add sidebar to page?
|
||||
if($this->sidebar !== null) {
|
||||
$tpl_data['html_sidebar'] = $this->sidebar->createHTML();
|
||||
}
|
||||
|
||||
if(psm_update_available()) {
|
||||
$tpl_data['update_available'] = str_replace('{version}', 'v'.psm_get_conf('version_update_check'), psm_get_lang('system', 'update_available'));
|
||||
}
|
||||
|
||||
if($this->black_background) {
|
||||
$tpl_data['body_class'] = 'black_background';
|
||||
}
|
||||
$html = $this->twig->render('main/body.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
$response = new Response($html);
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create HTML code for the menu
|
||||
* @return string
|
||||
*/
|
||||
protected function createHTMLMenu() {
|
||||
$ulvl = ($this->user) ? $this->user->getUserLevel() : PSM_USER_ANONYMOUS;
|
||||
|
||||
$tpl_data = array(
|
||||
'label_help' => psm_get_lang('menu', 'help'),
|
||||
'label_profile' => psm_get_lang('users', 'profile'),
|
||||
'label_logout' => psm_get_lang('login', 'logout'),
|
||||
'url_profile' => psm_build_url(array('mod' => 'user_profile')),
|
||||
'url_logout' => psm_build_url(array('logout' => 1)),
|
||||
);
|
||||
|
||||
switch($ulvl) {
|
||||
case PSM_USER_ADMIN:
|
||||
$items = array('server_status', 'server', 'server_log', 'user', 'config', 'server_update');
|
||||
break;
|
||||
case PSM_USER_USER:
|
||||
$items = array('server_status', 'server', 'server_log', 'server_update');
|
||||
break;
|
||||
default:
|
||||
$items = array();
|
||||
break;
|
||||
}
|
||||
$tpl_data['menu'] = array();
|
||||
foreach($items as $key) {
|
||||
$tpl_data['menu'][] = array(
|
||||
'active' => ($key == psm_GET('mod')) ? 'active' : '',
|
||||
'url' => psm_build_url(array('mod' => $key)),
|
||||
'label' => psm_get_lang('menu', $key),
|
||||
);
|
||||
}
|
||||
|
||||
if($ulvl != PSM_USER_ANONYMOUS) {
|
||||
$user = $this->user->getUser();
|
||||
$tpl_data['label_usermenu'] = str_replace(
|
||||
'%user_name%',
|
||||
$user->name,
|
||||
psm_get_lang('login', 'welcome_usermenu')
|
||||
);
|
||||
}
|
||||
return $this->twig->render('main/menu.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide or show the footer of the page
|
||||
* @param boolean $value
|
||||
*/
|
||||
protected function addFooter($value) {
|
||||
$this->add_footer = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide or show the menu of the page
|
||||
* @param boolean $value
|
||||
*/
|
||||
protected function addMenu($value) {
|
||||
$this->add_menu = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set actions available
|
||||
* @param string|array $actions
|
||||
* @param string $default default action
|
||||
* @param boolean $append if TRUE, the actions will be added to the current actions
|
||||
* @return psm\Module\AbstractModule
|
||||
* @see getAction()
|
||||
*/
|
||||
protected function setActions($actions, $default = null, $append = true) {
|
||||
if(!is_array($actions)) {
|
||||
$actions = array($actions);
|
||||
}
|
||||
if($append) {
|
||||
$this->actions = array_merge($actions);
|
||||
} else {
|
||||
$this->actions = $actions;
|
||||
}
|
||||
if($default !== null) {
|
||||
$this->action_default = $default;
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current action
|
||||
* @return string
|
||||
* @see setActions()
|
||||
*/
|
||||
public function getAction() {
|
||||
return $this->action;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add one or multiple message to the stack to be displayed to the user
|
||||
* @param string|array $msg
|
||||
* @param string $shortcode info/success/warning/error
|
||||
* @return \psm\Module\ControllerInterface
|
||||
* @see getMessages()
|
||||
*/
|
||||
public function addMessage($msg, $shortcode = 'info') {
|
||||
if(!is_array($msg)) {
|
||||
$msg = array($msg);
|
||||
}
|
||||
switch($shortcode) {
|
||||
case 'error':
|
||||
$icon = 'exclamation-sign';
|
||||
break;
|
||||
case 'success':
|
||||
$icon = 'ok-sign';
|
||||
break;
|
||||
case 'warning':
|
||||
$icon = 'question-sign';
|
||||
break;
|
||||
default:
|
||||
$icon = 'info-sign';
|
||||
break;
|
||||
}
|
||||
|
||||
foreach($msg as $m) {
|
||||
$this->messages[] = array(
|
||||
'message' => $m,
|
||||
'shortcode' => $shortcode,
|
||||
'icon' => $icon,
|
||||
);
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all messages (and optionally clear them)
|
||||
* @param boolean $clear
|
||||
* @return array
|
||||
* @see addMessage()
|
||||
*/
|
||||
public function getMessages($clear = true) {
|
||||
$msgs = $this->messages;
|
||||
if($clear) {
|
||||
$this->messages = array();
|
||||
}
|
||||
return $msgs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set user service
|
||||
* @param \psm\Service\User $user
|
||||
*/
|
||||
public function setUser(\psm\Service\User $user) {
|
||||
$this->user = $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the minimum required user level for this controller
|
||||
* @param int $level
|
||||
* @return \psm\Module\AbstractController
|
||||
*/
|
||||
public function setMinUserLevelRequired($level) {
|
||||
$this->user_level_required = intval($level);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the minimum required user level for this controller
|
||||
* @return int
|
||||
*/
|
||||
public function getMinUserLevelRequired() {
|
||||
return $this->user_level_required;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the minimum required user level for a certain action.
|
||||
*
|
||||
* Use this only if one of the access is more restricted than the entire controller
|
||||
* @param int $level
|
||||
* @param string|array $actions one or more actions to set this level for
|
||||
* @return \psm\Module\AbstractController
|
||||
* @see setMinUserLevelRequired()
|
||||
*/
|
||||
public function setMinUserLevelRequiredForAction($level, $actions) {
|
||||
if(!is_array($actions)) {
|
||||
$actions = array($actions);
|
||||
}
|
||||
foreach($actions as $action) {
|
||||
$this->user_level_required_actions[$action] = intval($level);
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a sidebar to the page
|
||||
* @param \psm\Util\Module\SidebarInterface $sidebar
|
||||
* @return \psm\Module\ControllerInterface
|
||||
*/
|
||||
public function setSidebar(\psm\Util\Module\SidebarInterface $sidebar) {
|
||||
$this->sidebar = $sidebar;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a modal dialog to the page
|
||||
* @param \psm\Util\Module\ModalInterface $modal
|
||||
* @return \psm\Module\ControllerInterface
|
||||
*/
|
||||
public function addModal(\psm\Util\Module\ModalInterface $modal) {
|
||||
$this->modal[$modal->getModalID()] = $modal;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the html code of the header accessories
|
||||
* @param string $html
|
||||
*/
|
||||
public function setHeaderAccessories($html) {
|
||||
$this->header_accessories = $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if XHR is on
|
||||
* @return boolean
|
||||
*/
|
||||
public function isXHR() {
|
||||
return $this->xhr;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,535 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
namespace psm\Module;
|
||||
|
||||
use psm\Service\Database;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\DependencyInjection\ContainerAwareTrait;
|
||||
|
||||
abstract class AbstractController implements ControllerInterface
|
||||
{
|
||||
use ContainerAwareTrait;
|
||||
|
||||
/**
|
||||
* Current action
|
||||
* @var string $action
|
||||
*/
|
||||
protected $action;
|
||||
|
||||
/**
|
||||
* Default action
|
||||
* @var string $action_default
|
||||
* @see setActions()
|
||||
*/
|
||||
protected $action_default;
|
||||
|
||||
/**
|
||||
* Actions available for this module
|
||||
* @var array $actions
|
||||
* @see setActions()
|
||||
* @see getAction()
|
||||
*/
|
||||
protected $actions = array();
|
||||
|
||||
/**
|
||||
* Add footer to page?
|
||||
* @var boolean $add_footer
|
||||
* @see addFooter()
|
||||
*/
|
||||
protected $add_footer = true;
|
||||
|
||||
/**
|
||||
* Add menu to page?
|
||||
* @var boolean $add_menu
|
||||
* @see addMenu()
|
||||
*/
|
||||
protected $add_menu = true;
|
||||
|
||||
/**
|
||||
* @var string $csrf_key
|
||||
*/
|
||||
protected $csrf_key;
|
||||
|
||||
/**
|
||||
* Messages to show the user
|
||||
* @var array $messages
|
||||
* @see addMessage()
|
||||
*/
|
||||
protected $messages = array();
|
||||
|
||||
/**
|
||||
* Sidebar to add
|
||||
* @var \psm\Util\Module\Sidebar $sidebar
|
||||
*/
|
||||
protected $sidebar;
|
||||
|
||||
/**
|
||||
* array of Modal to add
|
||||
* @var \psm\Util\Module\ModalInterface[] $modal
|
||||
*/
|
||||
protected $modal = array();
|
||||
|
||||
/**
|
||||
* html code of header accessories
|
||||
* @var string $header_accessories
|
||||
*/
|
||||
protected $header_accessories;
|
||||
|
||||
/**
|
||||
* Database object
|
||||
* @var \psm\Service\Database $db
|
||||
*/
|
||||
protected $db;
|
||||
|
||||
/**
|
||||
* Twig object
|
||||
* @var \Twig_Environment $twig
|
||||
*/
|
||||
protected $twig;
|
||||
|
||||
/**
|
||||
* User service
|
||||
* @var \psm\Service\User $user
|
||||
*/
|
||||
protected $user;
|
||||
|
||||
/**
|
||||
* Required user level for this module
|
||||
* @var int $user_level_required
|
||||
* @see setMinUserLevelRequired()
|
||||
*/
|
||||
protected $user_level_required = (PSM_PUBLIC && PSM_PUBLIC_PAGE) ? PSM_USER_ANONYMOUS : PSM_USER_USER;
|
||||
|
||||
/**
|
||||
* Required user level for certain actions
|
||||
* @var int $user_level_required_actions
|
||||
* @see setMinUserLevelRequiredForAction()
|
||||
*/
|
||||
protected $user_level_required_actions = array();
|
||||
|
||||
/*
|
||||
* Required using black background layout
|
||||
* @var boolean $black_background
|
||||
*/
|
||||
protected $black_background = false;
|
||||
|
||||
/**
|
||||
* XHR mode?
|
||||
* @var boolean $xhr
|
||||
* @see isXHR()
|
||||
*/
|
||||
protected $xhr = false;
|
||||
|
||||
public function __construct(Database $db, \Twig_Environment $twig)
|
||||
{
|
||||
$this->db = $db;
|
||||
$this->twig = $twig;
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the controller.
|
||||
*
|
||||
* @param string $action if NULL, the action will be retrieved from user input (GET/POST)
|
||||
* @return \Symfony\Component\HttpFoundation\Response
|
||||
*/
|
||||
public function run($action = null)
|
||||
{
|
||||
if ($action === null) {
|
||||
$action = psm_GET('action', psm_POST('action', $this->action_default));
|
||||
}
|
||||
$this->xhr = (bool) psm_GET('xhr', psm_POST('xhr', false));
|
||||
|
||||
$result = $this->runAction($action);
|
||||
|
||||
if (!in_array($action, $this->actions) || !$result) {
|
||||
$result = $this->runAction($this->action_default);
|
||||
}
|
||||
|
||||
if ($result instanceof Response) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
// no response returned from execute, create regular HTML
|
||||
return $this->createHTML($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Run a specified action
|
||||
*
|
||||
* For it to run, the "execute$action" method must exist.
|
||||
* @param string $action
|
||||
* @return mixed FALSE when action couldnt be initialized, response otherwise
|
||||
*/
|
||||
protected function runAction($action)
|
||||
{
|
||||
if (isset($this->user_level_required_actions[$action])) {
|
||||
if ($this->getUser()->getUserLevel() > $this->user_level_required_actions[$action]) {
|
||||
// user is not allowed to access this action..
|
||||
return false;
|
||||
}
|
||||
}
|
||||
$method = 'execute' . ucfirst($action);
|
||||
if (method_exists($this, $method)) {
|
||||
$this->action = $action;
|
||||
$result = $this->$method();
|
||||
// if result from execute is null, no return value given so return true to indicate a successful execute
|
||||
return ($result === null) ? true : $result;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the HTML code for the module.
|
||||
*
|
||||
* If XHR is on, no main template will be added.
|
||||
*
|
||||
* @param string $html HTML code to add to the main body
|
||||
* @return \Symfony\Component\HttpFoundation\Response
|
||||
*/
|
||||
protected function createHTML($html = null)
|
||||
{
|
||||
if (!$this->xhr) {
|
||||
// in XHR mode, we will not add the main template
|
||||
$tpl_data = array(
|
||||
'title' => psm_get_conf('site_title', strtoupper(psm_get_lang('system', 'title'))),
|
||||
'label_back_to_top' => psm_get_lang('system', 'back_to_top'),
|
||||
'add_footer' => $this->add_footer,
|
||||
'version' => 'v' . PSM_VERSION,
|
||||
'messages' => $this->getMessages(),
|
||||
'html_content' => $html,
|
||||
);
|
||||
|
||||
// add menu to page?
|
||||
if ($this->add_menu) {
|
||||
$tpl_data['html_menu'] = $this->createHTMLMenu();
|
||||
}
|
||||
// add header accessories to page ?
|
||||
if ($this->header_accessories) {
|
||||
$tpl_data['header_accessories'] = $this->header_accessories;
|
||||
}
|
||||
// add modal dialog to page ?
|
||||
if (sizeof($this->modal)) {
|
||||
$html_modal = '';
|
||||
foreach ($this->modal as $modal) {
|
||||
$html_modal .= $modal->createHTML();
|
||||
}
|
||||
$tpl_data['html_modal'] = $html_modal;
|
||||
}
|
||||
// add sidebar to page?
|
||||
if ($this->sidebar !== null) {
|
||||
$tpl_data['html_sidebar'] = $this->sidebar->createHTML();
|
||||
}
|
||||
|
||||
if (psm_update_available()) {
|
||||
$tpl_data['update_available'] = str_replace(
|
||||
'{version}',
|
||||
'v' .
|
||||
psm_get_conf('version_update_check'),
|
||||
psm_get_lang('system', 'update_available')
|
||||
);
|
||||
}
|
||||
|
||||
if ($this->black_background) {
|
||||
$tpl_data['body_class'] = 'black_background';
|
||||
}
|
||||
$html = $this->twig->render('main/body.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
$response = new Response($html);
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create HTML code for the menu
|
||||
* @return string
|
||||
*/
|
||||
protected function createHTMLMenu()
|
||||
{
|
||||
$ulvl = $this->getUser()->getUserLevel();
|
||||
|
||||
$tpl_data = array(
|
||||
'label_help' => psm_get_lang('menu', 'help'),
|
||||
'label_profile' => psm_get_lang('users', 'profile'),
|
||||
'label_logout' => psm_get_lang('login', 'logout'),
|
||||
'url_profile' => psm_build_url(array('mod' => 'user_profile')),
|
||||
'url_logout' => psm_build_url(array('logout' => 1)),
|
||||
'label_current' => psm_get_lang('system', 'current'),
|
||||
);
|
||||
|
||||
switch ($ulvl) {
|
||||
case PSM_USER_ADMIN:
|
||||
$items = array('server_status', 'server', 'server_log', 'user', 'config', 'server_update');
|
||||
break;
|
||||
case PSM_USER_USER:
|
||||
$items = array('server_status', 'server', 'server_log', 'server_update');
|
||||
break;
|
||||
default:
|
||||
$items = array();
|
||||
break;
|
||||
}
|
||||
$tpl_data['menu'] = array();
|
||||
foreach ($items as $key) {
|
||||
$tpl_data['menu'][] = array(
|
||||
'active' => ($key == psm_GET('mod')) ? 'active' : '',
|
||||
'url' => psm_build_url(array('mod' => $key)),
|
||||
'label' => psm_get_lang('menu', $key),
|
||||
);
|
||||
}
|
||||
|
||||
if ($ulvl != PSM_USER_ANONYMOUS) {
|
||||
$user = $this->getUser()->getUser();
|
||||
$tpl_data['label_usermenu'] = str_replace(
|
||||
'%user_name%',
|
||||
$user->name,
|
||||
psm_get_lang('login', 'welcome_usermenu')
|
||||
);
|
||||
}
|
||||
return $this->twig->render('main/menu.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide or show the footer of the page
|
||||
* @param boolean $value
|
||||
*/
|
||||
protected function addFooter($value)
|
||||
{
|
||||
$this->add_footer = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide or show the menu of the page
|
||||
* @param boolean $value
|
||||
*/
|
||||
protected function addMenu($value)
|
||||
{
|
||||
$this->add_menu = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set actions available
|
||||
* @param string|array $actions
|
||||
* @param string $default default action
|
||||
* @param boolean $append if TRUE, the actions will be added to the current actions
|
||||
* @return psm\Module\AbstractModule
|
||||
* @see getAction()
|
||||
*/
|
||||
protected function setActions($actions, $default = null, $append = true)
|
||||
{
|
||||
if (!is_array($actions)) {
|
||||
$actions = array($actions);
|
||||
}
|
||||
if ($append) {
|
||||
$this->actions = array_merge($actions);
|
||||
} else {
|
||||
$this->actions = $actions;
|
||||
}
|
||||
if ($default !== null) {
|
||||
$this->action_default = $default;
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current action
|
||||
* @return string
|
||||
* @see setActions()
|
||||
*/
|
||||
public function getAction()
|
||||
{
|
||||
return $this->action;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add one or multiple message to the stack to be displayed to the user
|
||||
* @param string|array $msg
|
||||
* @param string $shortcode primary/success/warning/danger
|
||||
* @return \psm\Module\ControllerInterface
|
||||
* @see getMessages()
|
||||
*/
|
||||
public function addMessage($msg, $shortcode = 'primary')
|
||||
{
|
||||
if (!is_array($msg)) {
|
||||
$msg = array($msg);
|
||||
}
|
||||
$class = $shortcode;
|
||||
switch ($shortcode) {
|
||||
case 'error':
|
||||
$icon = 'exclamation-circle';
|
||||
$class = 'danger';
|
||||
break;
|
||||
case 'success':
|
||||
$icon = 'check-circle';
|
||||
break;
|
||||
case 'warning':
|
||||
$icon = 'exclamation-triangle';
|
||||
break;
|
||||
case 'primary':
|
||||
default:
|
||||
$icon = 'info-circle';
|
||||
$shortcode = 'info';
|
||||
break;
|
||||
}
|
||||
|
||||
foreach ($msg as $m) {
|
||||
$this->messages[] = array(
|
||||
'message' => $m,
|
||||
'shortcode' => $shortcode,
|
||||
'class' => $class,
|
||||
'icon' => $icon,
|
||||
);
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all messages (and optionally clear them)
|
||||
* @param boolean $clear
|
||||
* @return array
|
||||
* @see addMessage()
|
||||
*/
|
||||
public function getMessages($clear = true)
|
||||
{
|
||||
$msgs = $this->messages;
|
||||
if ($clear) {
|
||||
$this->messages = array();
|
||||
}
|
||||
return $msgs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the minimum required user level for this controller
|
||||
* @param int $level
|
||||
* @return \psm\Module\AbstractController
|
||||
*/
|
||||
public function setMinUserLevelRequired($level)
|
||||
{
|
||||
$this->user_level_required = intval($level);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the minimum required user level for this controller
|
||||
* @return int
|
||||
*/
|
||||
public function getMinUserLevelRequired()
|
||||
{
|
||||
return $this->user_level_required;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the minimum required user level for a certain action.
|
||||
*
|
||||
* Use this only if one of the access is more restricted than the entire controller
|
||||
* @param int $level
|
||||
* @param string|array $actions one or more actions to set this level for
|
||||
* @return \psm\Module\AbstractController
|
||||
* @see setMinUserLevelRequired()
|
||||
*/
|
||||
public function setMinUserLevelRequiredForAction($level, $actions)
|
||||
{
|
||||
if (!is_array($actions)) {
|
||||
$actions = array($actions);
|
||||
}
|
||||
foreach ($actions as $action) {
|
||||
$this->user_level_required_actions[$action] = intval($level);
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a sidebar to the page
|
||||
* @param \psm\Util\Module\SidebarInterface $sidebar
|
||||
* @return \psm\Module\ControllerInterface
|
||||
*/
|
||||
public function setSidebar(\psm\Util\Module\SidebarInterface $sidebar)
|
||||
{
|
||||
$this->sidebar = $sidebar;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a modal dialog to the page
|
||||
* @param \psm\Util\Module\ModalInterface $modal
|
||||
* @return \psm\Module\ControllerInterface
|
||||
*/
|
||||
public function addModal(\psm\Util\Module\ModalInterface $modal)
|
||||
{
|
||||
$this->modal[$modal->getModalID()] = $modal;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the html code of the header accessories
|
||||
* @param string $html
|
||||
*/
|
||||
public function setHeaderAccessories($html)
|
||||
{
|
||||
$this->header_accessories = $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if XHR is on
|
||||
* @return boolean
|
||||
*/
|
||||
public function isXHR()
|
||||
{
|
||||
return $this->xhr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user service
|
||||
* @return \psm\Service\User
|
||||
*/
|
||||
public function getUser()
|
||||
{
|
||||
return $this->container->get('user');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get custom key for CSRF validation
|
||||
* @return string
|
||||
*/
|
||||
public function getCSRFKey()
|
||||
{
|
||||
return $this->csrf_key;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set CSRF key for validation
|
||||
* @param string $key
|
||||
* @return \psm\Module\ControllerInterface
|
||||
*/
|
||||
protected function setCSRFKey($key)
|
||||
{
|
||||
$this->csrf_key = $key;
|
||||
$this->twig->addGlobal('csrf_key', $key);
|
||||
return $this;
|
||||
}
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -18,22 +19,30 @@
|
|||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 3.0
|
||||
* @since phpservermon 3.0
|
||||
**/
|
||||
|
||||
namespace psm\Module\Config;
|
||||
|
||||
use psm\Module\ModuleInterface;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
|
||||
class ConfigModule implements ModuleInterface {
|
||||
public function getControllers() {
|
||||
return array(
|
||||
'config' => __NAMESPACE__ . '\Controller\ConfigController',
|
||||
);
|
||||
class ConfigModule implements ModuleInterface
|
||||
{
|
||||
|
||||
}
|
||||
public function load(ContainerBuilder $container)
|
||||
{
|
||||
}
|
||||
|
||||
public function getControllers()
|
||||
{
|
||||
return array(
|
||||
'config' => __NAMESPACE__ . '\Controller\ConfigController',
|
||||
);
|
||||
}
|
||||
}
|
|
@ -1,340 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
namespace psm\Module\Config\Controller;
|
||||
use psm\Module\AbstractController;
|
||||
use psm\Service\Database;
|
||||
|
||||
class ConfigController extends AbstractController {
|
||||
|
||||
/**
|
||||
* Checkboxes
|
||||
* @var array $checkboxes
|
||||
*/
|
||||
protected $checkboxes = array(
|
||||
'email_status',
|
||||
'email_smtp',
|
||||
'sms_status',
|
||||
'pushover_status',
|
||||
'log_status',
|
||||
'log_email',
|
||||
'log_sms',
|
||||
'log_pushover',
|
||||
'show_update',
|
||||
);
|
||||
|
||||
/**
|
||||
* Fields for saving
|
||||
* @var array $fields
|
||||
*/
|
||||
protected $fields = array(
|
||||
'email_from_name',
|
||||
'email_from_email',
|
||||
'email_smtp_host',
|
||||
'email_smtp_port',
|
||||
'email_smtp_username',
|
||||
'email_smtp_password',
|
||||
'sms_gateway_username',
|
||||
'sms_gateway_password',
|
||||
'sms_from',
|
||||
'pushover_api_token',
|
||||
);
|
||||
|
||||
private $default_tab = 'general';
|
||||
|
||||
function __construct(Database $db, \Twig_Environment $twig) {
|
||||
parent::__construct($db, $twig);
|
||||
|
||||
$this->setMinUserLevelRequired(PSM_USER_ADMIN);
|
||||
|
||||
$this->setActions(array(
|
||||
'index', 'save',
|
||||
), 'index');
|
||||
}
|
||||
|
||||
/**
|
||||
* Populate all the config fields with values from the database
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function executeIndex() {
|
||||
$this->twig->addGlobal('subtitle', psm_get_lang('menu', 'config'));
|
||||
$tpl_data = $this->getLabels();
|
||||
|
||||
$config_db = $this->db->select(
|
||||
PSM_DB_PREFIX . 'config',
|
||||
null,
|
||||
array('key', 'value')
|
||||
);
|
||||
|
||||
$config = array();
|
||||
foreach($config_db as $entry) {
|
||||
$config[$entry['key']] = $entry['value'];
|
||||
}
|
||||
|
||||
// generate language array
|
||||
$lang_keys = psm_get_langs();
|
||||
$tpl_data['language_current'] = (isset($config['language']))
|
||||
? $config['language']
|
||||
: 'en_US';
|
||||
$tpl_data['languages'] = array();
|
||||
foreach($lang_keys as $key => $label) {
|
||||
$tpl_data['languages'][] = array(
|
||||
'value' => $key,
|
||||
'label' => $label,
|
||||
);
|
||||
}
|
||||
|
||||
$tpl_data['sms_selected_' . $config['sms_gateway']] = 'selected="selected"';
|
||||
$tpl_data['alert_type_selected_' . $config['alert_type']] = 'selected="selected"';
|
||||
$tpl_data['auto_refresh_servers'] = (isset($config['auto_refresh_servers'])) ? $config['auto_refresh_servers'] : '0';
|
||||
$tpl_data['log_retention_period'] = (isset($config['log_retention_period'])) ? $config['log_retention_period'] : '365';
|
||||
|
||||
foreach($this->checkboxes as $input_key) {
|
||||
$tpl_data[$input_key . '_checked'] =
|
||||
(isset($config[$input_key]) && (int) $config[$input_key] == 1)
|
||||
? 'checked="checked"'
|
||||
: '';
|
||||
}
|
||||
foreach($this->fields as $input_key) {
|
||||
$tpl_data[$input_key] = (isset($config[$input_key])) ? $config[$input_key] : '';
|
||||
}
|
||||
|
||||
$tpl_data[$this->default_tab . '_active'] = 'active';
|
||||
|
||||
$testmodals = array('email', 'sms', 'pushover');
|
||||
foreach($testmodals as $modal_id) {
|
||||
$modal = new \psm\Util\Module\Modal($this->twig, 'test' . ucfirst($modal_id), \psm\Util\Module\Modal::MODAL_TYPE_OKCANCEL);
|
||||
$this->addModal($modal);
|
||||
$modal->setTitle(psm_get_lang('servers', 'send_' . $modal_id));
|
||||
$modal->setMessage(psm_get_lang('config', 'test_' . $modal_id));
|
||||
$modal->setOKButtonLabel(psm_get_lang('config', 'send'));
|
||||
}
|
||||
|
||||
return $this->twig->render('module/config/config.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* If a post has been done, gather all the posted data
|
||||
* and save it to the database
|
||||
*/
|
||||
protected function executeSave() {
|
||||
if(!empty($_POST)) {
|
||||
// save new config
|
||||
$clean = array(
|
||||
'language' => $_POST['language'],
|
||||
'sms_gateway' => $_POST['sms_gateway'],
|
||||
'alert_type' => $_POST['alert_type'],
|
||||
'auto_refresh_servers' => intval(psm_POST('auto_refresh_servers', 0)),
|
||||
'log_retention_period' => intval(psm_POST('log_retention_period', 365)),
|
||||
);
|
||||
foreach($this->checkboxes as $input_key) {
|
||||
$clean[$input_key] = (isset($_POST[$input_key])) ? '1': '0';
|
||||
}
|
||||
foreach($this->fields as $input_key) {
|
||||
if(isset($_POST[$input_key])) {
|
||||
$clean[$input_key] = $_POST[$input_key];
|
||||
}
|
||||
}
|
||||
$language_refresh = ($clean['language'] != psm_get_conf('language'));
|
||||
foreach($clean as $key => $value) {
|
||||
psm_update_conf($key, $value);
|
||||
}
|
||||
$this->addMessage(psm_get_lang('config', 'updated'), 'success');
|
||||
|
||||
if(!empty($_POST['test_email'])) {
|
||||
$this->testEmail();
|
||||
} elseif(!empty($_POST['test_sms'])) {
|
||||
$this->testSMS();
|
||||
} elseif(!empty($_POST['test_pushover'])) {
|
||||
$this->testPushover();
|
||||
}
|
||||
|
||||
if($language_refresh) {
|
||||
header('Location: ' . psm_build_url(array('mod' => 'config'), true, false));
|
||||
die();
|
||||
}
|
||||
|
||||
if(isset($_POST['general_submit'])) {
|
||||
$this->default_tab = 'general';
|
||||
} elseif(isset($_POST['email_submit']) || !empty($_POST['test_email'])) {
|
||||
$this->default_tab = 'email';
|
||||
} elseif(isset($_POST['sms_submit']) || !empty($_POST['test_sms'])) {
|
||||
$this->default_tab = 'sms';
|
||||
} elseif(isset($_POST['pushover_submit']) || !empty($_POST['test_pushover'])) {
|
||||
$this->default_tab = 'pushover';
|
||||
}
|
||||
}
|
||||
return $this->initializeAction('index');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute email test
|
||||
*
|
||||
* @todo move test to separate class
|
||||
*/
|
||||
protected function testEmail() {
|
||||
$mail = psm_build_mail();
|
||||
$message = psm_get_lang('config', 'test_message');
|
||||
$mail->Subject = psm_get_lang('config', 'test_subject');
|
||||
$mail->Priority = 1;
|
||||
$mail->Body = $message;
|
||||
$mail->AltBody = str_replace('<br/>', "\n", $message);
|
||||
$user = $this->user->getUser();
|
||||
$mail->AddAddress($user->email, $user->name);
|
||||
if($mail->Send()) {
|
||||
$this->addMessage(psm_get_lang('config', 'email_sent'), 'success');
|
||||
} else {
|
||||
$this->addMessage(psm_get_lang('config', 'email_error') . ': ' . $mail->ErrorInfo, 'error');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute SMS test
|
||||
*
|
||||
* @todo move test to separate class
|
||||
*/
|
||||
protected function testSMS() {
|
||||
$sms = psm_build_sms();
|
||||
if($sms) {
|
||||
$user = $this->user->getUser();
|
||||
if(empty($user->mobile)) {
|
||||
$this->addMessage(psm_get_lang('config', 'sms_error_nomobile'), 'error');
|
||||
} else {
|
||||
$sms->addRecipients($user->mobile);
|
||||
if($sms->sendSMS(psm_get_lang('config', 'test_message'))) {
|
||||
$this->addMessage(psm_get_lang('config', 'sms_sent'), 'success');
|
||||
} else {
|
||||
$this->addMessage(psm_get_lang('config', 'sms_error'), 'error');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute pushover test
|
||||
*
|
||||
* @todo move test to separate class
|
||||
*/
|
||||
protected function testPushover() {
|
||||
$pushover = psm_build_pushover();
|
||||
$pushover->setDebug(true);
|
||||
$user = $this->user->getUser();
|
||||
$api_token = psm_get_conf('pushover_api_token');
|
||||
|
||||
if(empty($api_token)) {
|
||||
$this->addMessage(psm_get_lang('config', 'pushover_error_noapp'), 'error');
|
||||
} elseif(empty($user->pushover_key)) {
|
||||
$this->addMessage(psm_get_lang('config', 'pushover_error_nokey'), 'error');
|
||||
} else {
|
||||
$pushover->setPriority(0);
|
||||
$pushover->setTitle(psm_get_lang('config', 'test_subject'));
|
||||
$pushover->setMessage(psm_get_lang('config', 'test_message'));
|
||||
$pushover->setUser($user->pushover_key);
|
||||
if($user->pushover_device != '') {
|
||||
$pushover->setDevice($user->pushover_device);
|
||||
}
|
||||
$result = $pushover->send();
|
||||
|
||||
if(isset($result['output']->status) && $result['output']->status == 1) {
|
||||
$this->addMessage(psm_get_lang('config', 'pushover_sent'), 'success');
|
||||
} else {
|
||||
if(isset($result['output']->errors->error)) {
|
||||
$error = $result['output']->errors->error;
|
||||
} else {
|
||||
$error = 'Unknown';
|
||||
}
|
||||
$this->addMessage(sprintf(psm_get_lang('config', 'pushover_error'), $error), 'error');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function getLabels() {
|
||||
return array(
|
||||
'label_tab_email' => psm_get_lang('config', 'tab_email'),
|
||||
'label_tab_sms' => psm_get_lang('config', 'tab_sms'),
|
||||
'label_tab_pushover' => psm_get_lang('config', 'tab_pushover'),
|
||||
'label_settings_email' => psm_get_lang('config', 'settings_email'),
|
||||
'label_settings_sms' => psm_get_lang('config', 'settings_sms'),
|
||||
'label_settings_pushover' => psm_get_lang('config', 'settings_pushover'),
|
||||
'label_settings_notification' => psm_get_lang('config', 'settings_notification'),
|
||||
'label_settings_log' => psm_get_lang('config', 'settings_log'),
|
||||
'label_general' => psm_get_lang('config', 'general'),
|
||||
'label_language' => psm_get_lang('config', 'language'),
|
||||
'label_show_update' => psm_get_lang('config', 'show_update'),
|
||||
'label_email_status' => psm_get_lang('config', 'email_status'),
|
||||
'label_email_from_email' => psm_get_lang('config', 'email_from_email'),
|
||||
'label_email_from_name' => psm_get_lang('config', 'email_from_name'),
|
||||
'label_email_smtp' => psm_get_lang('config', 'email_smtp'),
|
||||
'label_email_smtp_host' => psm_get_lang('config', 'email_smtp_host'),
|
||||
'label_email_smtp_port' => psm_get_lang('config', 'email_smtp_port'),
|
||||
'label_email_smtp_username' => psm_get_lang('config', 'email_smtp_username'),
|
||||
'label_email_smtp_password' => psm_get_lang('config', 'email_smtp_password'),
|
||||
'label_email_smtp_noauth' => psm_get_lang('config', 'email_smtp_noauth'),
|
||||
'label_sms_status' => psm_get_lang('config', 'sms_status'),
|
||||
'label_sms_gateway' => psm_get_lang('config', 'sms_gateway'),
|
||||
'label_sms_gateway_mosms' => psm_get_lang('config', 'sms_gateway_mosms'),
|
||||
'label_sms_gateway_mollie' => psm_get_lang('config', 'sms_gateway_mollie'),
|
||||
'label_sms_gateway_spryng' => psm_get_lang('config', 'sms_gateway_spryng'),
|
||||
'label_sms_gateway_inetworx' => psm_get_lang('config', 'sms_gateway_inetworx'),
|
||||
'label_sms_gateway_clickatell' => psm_get_lang('config', 'sms_gateway_clickatell'),
|
||||
'label_sms_gateway_textmarketer' => psm_get_lang('config', 'sms_gateway_textmarketer'),
|
||||
'label_sms_gateway_smsit' => psm_get_lang('config', 'sms_gateway_smsit'),
|
||||
'label_sms_gateway_smsglobal' => psm_get_lang('config', 'sms_gateway_smsglobal'),
|
||||
'label_sms_gateway_username' => psm_get_lang('config', 'sms_gateway_username'),
|
||||
'label_sms_gateway_password' => psm_get_lang('config', 'sms_gateway_password'),
|
||||
'label_sms_from' => psm_get_lang('config', 'sms_from'),
|
||||
'label_pushover_description' => psm_get_lang('config', 'pushover_description'),
|
||||
'label_pushover_status' => psm_get_lang('config', 'pushover_status'),
|
||||
'label_pushover_clone_app' => psm_get_lang('config', 'pushover_clone_app'),
|
||||
'pushover_clone_url' => PSM_PUSHOVER_CLONE_URL,
|
||||
'label_pushover_api_token' => psm_get_lang('config', 'pushover_api_token'),
|
||||
'label_pushover_api_token_description' => sprintf(
|
||||
psm_get_lang('config', 'pushover_api_token_description'),
|
||||
PSM_PUSHOVER_CLONE_URL
|
||||
),
|
||||
'label_alert_type' => psm_get_lang('config', 'alert_type'),
|
||||
'label_alert_type_description' => psm_get_lang('config', 'alert_type_description'),
|
||||
'label_alert_type_status' => psm_get_lang('config', 'alert_type_status'),
|
||||
'label_alert_type_offline' => psm_get_lang('config', 'alert_type_offline'),
|
||||
'label_alert_type_always' => psm_get_lang('config', 'alert_type_always'),
|
||||
'label_log_status' => psm_get_lang('config', 'log_status'),
|
||||
'label_log_status_description' => psm_get_lang('config', 'log_status_description'),
|
||||
'label_log_email' => psm_get_lang('config', 'log_email'),
|
||||
'label_log_sms' => psm_get_lang('config', 'log_sms'),
|
||||
'label_log_pushover' => psm_get_lang('config', 'log_pushover'),
|
||||
'label_auto_refresh' => psm_get_lang('config', 'auto_refresh'),
|
||||
'label_auto_refresh_servers' => psm_get_lang('config', 'auto_refresh_servers'),
|
||||
'label_seconds' => psm_get_lang('config', 'seconds'),
|
||||
'label_save' => psm_get_lang('system', 'save'),
|
||||
'label_test' => psm_get_lang('config', 'test'),
|
||||
'label_log_retention_period' => psm_get_lang('config', 'log_retention_period'),
|
||||
'label_log_retention_period_description' => psm_get_lang('config', 'log_retention_period_description'),
|
||||
'label_log_retention_days' => psm_get_lang('config', 'log_retention_days'),
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,717 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
namespace psm\Module\Config\Controller;
|
||||
|
||||
use psm\Module\AbstractController;
|
||||
use psm\Service\Database;
|
||||
|
||||
class ConfigController extends AbstractController
|
||||
{
|
||||
|
||||
/**
|
||||
* Checkboxes
|
||||
* @var array $checkboxes
|
||||
*/
|
||||
protected $checkboxes = array(
|
||||
'proxy',
|
||||
'email_status',
|
||||
'email_add_url',
|
||||
'email_smtp',
|
||||
'sms_status',
|
||||
'discord_status',
|
||||
'pushover_status',
|
||||
'webhook_status',
|
||||
'telegram_status',
|
||||
'telegram_add_url',
|
||||
'jabber_status',
|
||||
'log_status',
|
||||
'log_email',
|
||||
'log_sms',
|
||||
'log_discord',
|
||||
'log_pushover',
|
||||
'log_webhook',
|
||||
'log_telegram',
|
||||
'log_jabber',
|
||||
'show_update',
|
||||
'combine_notifications',
|
||||
'dirauth_status',
|
||||
'authdir_ldapfollowref',
|
||||
);
|
||||
|
||||
/**
|
||||
* Fields for saving
|
||||
* @var array $fields
|
||||
*/
|
||||
protected $fields = array(
|
||||
'proxy_url',
|
||||
'proxy_user',
|
||||
'proxy_password',
|
||||
'email_from_name',
|
||||
'email_from_email',
|
||||
'email_smtp_host',
|
||||
'email_smtp_port',
|
||||
'email_smtp_username',
|
||||
'sms_gateway_username',
|
||||
'sms_gateway_password',
|
||||
'sms_from',
|
||||
'webhook_url',
|
||||
'webhook_json',
|
||||
'pushover_api_token',
|
||||
'telegram_api_token',
|
||||
'jabber_host',
|
||||
'jabber_port',
|
||||
'jabber_username',
|
||||
'jabber_domain',
|
||||
'user_agent',
|
||||
'site_title',
|
||||
'authdir_host_locn',
|
||||
'authdir_host_port',
|
||||
'authdir_userdomain',
|
||||
'authdir_ldapver',
|
||||
'authdir_basedn',
|
||||
'authdir_usernameattrib',
|
||||
'authdir_groupnameattrib',
|
||||
'authdir_groupmemattrib',
|
||||
'authdir_usercontainerrdn',
|
||||
'authdir_groupcontainerrdn',
|
||||
'authdir_groupname',
|
||||
);
|
||||
|
||||
/**
|
||||
* Fields for saving encrypted.
|
||||
* @var array
|
||||
*/
|
||||
protected $encryptedFields = [
|
||||
'email_smtp_password',
|
||||
'jabber_password'
|
||||
];
|
||||
|
||||
private $default_tab = 'general';
|
||||
|
||||
public function __construct(Database $db, \Twig_Environment $twig)
|
||||
{
|
||||
parent::__construct($db, $twig);
|
||||
|
||||
$this->setMinUserLevelRequired(PSM_USER_ADMIN);
|
||||
$this->setCSRFKey('config');
|
||||
|
||||
$this->setActions(array(
|
||||
'index', 'save',
|
||||
), 'index');
|
||||
}
|
||||
|
||||
/**
|
||||
* Populate all the config fields with values from the database
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function executeIndex()
|
||||
{
|
||||
$this->twig->addGlobal('subtitle', psm_get_lang('menu', 'config'));
|
||||
$tpl_data = $this->getLabels();
|
||||
|
||||
$config_db = $this->db->select(
|
||||
PSM_DB_PREFIX . 'config',
|
||||
null,
|
||||
array('key', 'value')
|
||||
);
|
||||
|
||||
$config = array();
|
||||
foreach ($config_db as $entry) {
|
||||
$config[$entry['key']] = $entry['value'];
|
||||
}
|
||||
|
||||
// generate language array
|
||||
$lang_keys = psm_get_langs();
|
||||
$tpl_data['language_current'] = (isset($config['language']))
|
||||
? $config['language']
|
||||
: 'en_US';
|
||||
$tpl_data['languages'] = array();
|
||||
foreach ($lang_keys as $key => $label) {
|
||||
$tpl_data['languages'][] = array(
|
||||
'value' => $key,
|
||||
'label' => $label,
|
||||
);
|
||||
}
|
||||
|
||||
// generate sms_gateway array
|
||||
$sms_gateways = psm_get_sms_gateways();
|
||||
$tpl_data['sms_gateway'] = array();
|
||||
foreach ($sms_gateways as $sms_gateway => $label) {
|
||||
$tpl_data['sms_gateway'][] = array(
|
||||
'value' => $sms_gateway,
|
||||
'label' => $label,
|
||||
);
|
||||
}
|
||||
|
||||
foreach (array("status", "offline", "always") as $alert_type) {
|
||||
$tpl_data['alert_type'][] = array(
|
||||
'value' => $alert_type,
|
||||
'label' => psm_get_lang('config', 'alert_type_' . $alert_type),
|
||||
);
|
||||
}
|
||||
|
||||
foreach (array("20", "10") as $authdir_defaultrole) {
|
||||
$tpl_data['authdir_defaultroles'][] = array(
|
||||
'value' => $authdir_defaultrole,
|
||||
'label' => psm_get_lang('users', 'level_' . $authdir_defaultrole),
|
||||
);
|
||||
}
|
||||
|
||||
foreach (array("openldap", "adds", "adlds") as $authdir_type) {
|
||||
$tpl_data['authdir_type'][] = array(
|
||||
'value' => $authdir_type,
|
||||
'label' => psm_get_lang('config', 'authdir_type_' . $authdir_type),
|
||||
);
|
||||
}
|
||||
|
||||
$tpl_data['email_smtp_security'] = array(
|
||||
array(
|
||||
'value' => '',
|
||||
'label' => psm_get_lang('config', 'email_smtp_security_none')
|
||||
),
|
||||
array(
|
||||
'value' => 'ssl',
|
||||
'label' => 'SSL'
|
||||
),
|
||||
array(
|
||||
'value' => 'tls',
|
||||
'label' => 'TLS'
|
||||
)
|
||||
);
|
||||
|
||||
$tpl_data['sms_gateway_selected'] = isset($config['sms_gateway']) ?
|
||||
$config['sms_gateway'] : current($sms_gateways);
|
||||
$tpl_data['alert_type_selected'] = isset($config['alert_type']) ?
|
||||
$config['alert_type'] : '';
|
||||
$tpl_data['authdir_type_selected'] = isset($config['authdir_type']) ?
|
||||
$config['authdir_type'] : '';
|
||||
$tpl_data['authdir_defaultrole_selected'] = isset($config['authdir_defaultrole']) ?
|
||||
$config['authdir_defaultrole'] : '20';
|
||||
$tpl_data['email_smtp_security_selected'] = isset($config['email_smtp_security']) ?
|
||||
$config['email_smtp_security'] : '';
|
||||
$tpl_data['auto_refresh_servers'] = isset($config['auto_refresh_servers']) ?
|
||||
$config['auto_refresh_servers'] : '0';
|
||||
$tpl_data['log_retention_period'] = isset($config['log_retention_period']) ?
|
||||
$config['log_retention_period'] : '365';
|
||||
$tpl_data['password_encrypt_key'] = isset($config['password_encrypt_key']) ?
|
||||
$config['password_encrypt_key'] : sha1(microtime());
|
||||
|
||||
foreach ($this->checkboxes as $input_key) {
|
||||
$tpl_data[$input_key . '_checked'] =
|
||||
(isset($config[$input_key]) && (int) $config[$input_key] == 1)
|
||||
? 'checked="checked"'
|
||||
: '';
|
||||
}
|
||||
foreach ($this->fields as $input_key) {
|
||||
$tpl_data[$input_key] = (isset($config[$input_key])) ? $config[$input_key] : '';
|
||||
}
|
||||
|
||||
$tpl_data['user_agent'] = empty($tpl_data['user_agent']) ?
|
||||
'Mozilla/5.0 (compatible; phpservermon/' .
|
||||
PSM_VERSION . '; +https://github.com/phpservermon/phpservermon)' : $tpl_data['user_agent'];
|
||||
|
||||
$tpl_data['site_title'] = empty($tpl_data['site_title']) ?
|
||||
strtoupper(psm_get_lang('system', 'title')) : $tpl_data['site_title'];
|
||||
|
||||
// encrypted fields
|
||||
foreach ($this->encryptedFields as $encryptedField) {
|
||||
$tpl_data[$encryptedField] = '';
|
||||
}
|
||||
|
||||
$tpl_data[$this->default_tab . '_active'] = 'active';
|
||||
|
||||
$testmodals = array('email', 'sms', 'discord', 'webhook', 'pushover', 'telegram', 'jabber');
|
||||
|
||||
foreach ($testmodals as $modal_id) {
|
||||
$modal = new \psm\Util\Module\Modal(
|
||||
$this->twig,
|
||||
'test' . ucfirst($modal_id),
|
||||
\psm\Util\Module\Modal::MODAL_TYPE_OKCANCEL
|
||||
);
|
||||
$this->addModal($modal);
|
||||
$modal->setTitle(psm_get_lang('servers', 'send_' . $modal_id));
|
||||
$modal->setMessage(psm_get_lang('config', 'test_' . $modal_id));
|
||||
$modal->setOKButtonLabel(psm_get_lang('config', 'send'));
|
||||
}
|
||||
|
||||
return $this->twig->render('module/config/config.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* If a post has been done, gather all the posted data
|
||||
* and save it to the database
|
||||
*/
|
||||
protected function executeSave()
|
||||
{
|
||||
if (!empty($_POST)) {
|
||||
// save new config
|
||||
$clean = array(
|
||||
'language' => $_POST['language'],
|
||||
'site_title' => $_POST['site_title'],
|
||||
'sms_gateway' => $_POST['sms_gateway'],
|
||||
'alert_type' => $_POST['alert_type'],
|
||||
'authdir_defaultrole' => $_POST['authdir_defaultrole'],
|
||||
'authdir_type' => $_POST['authdir_type'],
|
||||
'email_smtp_security' =>
|
||||
in_array($_POST['email_smtp_security'], array('', 'ssl', 'tls'))
|
||||
? $_POST['email_smtp_security']
|
||||
: '',
|
||||
'auto_refresh_servers' => intval(psm_POST('auto_refresh_servers', 0)),
|
||||
'log_retention_period' => intval(psm_POST('log_retention_period', 365)),
|
||||
'password_encrypt_key' => psm_POST('password_encrypt_key', sha1(microtime()))
|
||||
);
|
||||
foreach ($this->checkboxes as $input_key) {
|
||||
$clean[$input_key] = (isset($_POST[$input_key])) ? '1' : '0';
|
||||
}
|
||||
foreach ($this->fields as $input_key) {
|
||||
if (isset($_POST[$input_key])) {
|
||||
$clean[$input_key] = $_POST[$input_key];
|
||||
}
|
||||
}
|
||||
foreach ($this->encryptedFields as $encryptedField) {
|
||||
$value = filter_input(INPUT_POST, $encryptedField);
|
||||
if ($value !== null && $value !== '') {
|
||||
$clean[$encryptedField] = psm_password_encrypt(psm_get_conf('password_encrypt_key'), $value);
|
||||
}
|
||||
// else { leave as is }
|
||||
}
|
||||
$language_refresh = ($clean['language'] != psm_get_conf('language'));
|
||||
foreach ($clean as $key => $value) {
|
||||
psm_update_conf($key, $value);
|
||||
}
|
||||
$this->addMessage(psm_get_lang('config', 'updated'), 'success');
|
||||
|
||||
if (!empty($_POST['test_email'])) {
|
||||
$this->testEmail();
|
||||
} elseif (!empty($_POST['test_sms'])) {
|
||||
$this->testSMS();
|
||||
} elseif (!empty($_POST['test_discord'])) {
|
||||
$this->testDiscord();
|
||||
} elseif (!empty($_POST['test_pushover'])) {
|
||||
$this->testPushover();
|
||||
}elseif (!empty($_POST['test_webhook'])) {
|
||||
$this->testWebhook();
|
||||
} elseif (!empty($_POST['test_telegram'])) {
|
||||
$this->testTelegram();
|
||||
} elseif (!empty($_POST['test_jabber'])) {
|
||||
$this->testJabber();
|
||||
}
|
||||
|
||||
if ($language_refresh) {
|
||||
header('Location: ' . psm_build_url(array('mod' => 'config'), true, false));
|
||||
die();
|
||||
}
|
||||
|
||||
if (isset($_POST['general_submit'])) {
|
||||
$this->default_tab = 'general';
|
||||
} elseif (isset($_POST['auth_submit'])) {
|
||||
$this->default_tab = 'auth';
|
||||
} elseif (isset($_POST['email_submit']) || !empty($_POST['test_email'])) {
|
||||
$this->default_tab = 'email';
|
||||
} elseif (isset($_POST['sms_submit']) || !empty($_POST['test_sms'])) {
|
||||
$this->default_tab = 'sms';
|
||||
} elseif (isset($_POST['discord_submit']) || !empty($_POST['test_discord'])) {
|
||||
$this->default_tab = 'discord';
|
||||
} elseif (isset($_POST['pushover_submit']) || !empty($_POST['test_pushover'])) {
|
||||
$this->default_tab = 'pushover';
|
||||
} elseif (isset($_POST['webhook_submit']) || !empty($_POST['test_webhook'])) {
|
||||
$this->default_tab = 'webhook';
|
||||
} elseif (isset($_POST['telegram_submit']) || !empty($_POST['test_telegram'])) {
|
||||
$this->default_tab = 'telegram';
|
||||
} elseif (isset($_POST['jabber_submit']) || !empty($_POST['test_jabber'])) {
|
||||
$this->default_tab = 'jabber';
|
||||
}
|
||||
}
|
||||
return $this->runAction('index');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute email test
|
||||
*
|
||||
* @todo move test to separate class
|
||||
*/
|
||||
protected function testEmail()
|
||||
{
|
||||
$mail = psm_build_mail();
|
||||
$message = psm_get_lang('config', 'test_message');
|
||||
$mail->Subject = psm_get_lang('config', 'test_subject');
|
||||
$mail->Priority = 1;
|
||||
$mail->Body = $message;
|
||||
$mail->AltBody = str_replace('<br/>', "\n", $message);
|
||||
$user = $this->getUser()->getUser();
|
||||
$mail->AddAddress($user->email, $user->name);
|
||||
if ($mail->Send()) {
|
||||
$this->addMessage(psm_get_lang('config', 'email_sent'), 'success');
|
||||
} else {
|
||||
$this->addMessage(psm_get_lang('config', 'email_error') . ': ' . $mail->ErrorInfo, 'error');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute SMS test
|
||||
*
|
||||
* @todo move test to separate class
|
||||
*/
|
||||
protected function testSMS()
|
||||
{
|
||||
$sms = psm_build_sms();
|
||||
if ($sms) {
|
||||
$user = $this->getUser()->getUser();
|
||||
if (empty($user->mobile)) {
|
||||
$this->addMessage(psm_get_lang('config', 'sms_error_nomobile'), 'error');
|
||||
} else {
|
||||
$sms->addRecipients($user->mobile);
|
||||
$result = $sms->sendSMS(psm_get_lang('config', 'test_message'));
|
||||
if ($result === 1) {
|
||||
$this->addMessage(psm_get_lang('config', 'sms_sent'), 'success');
|
||||
} else {
|
||||
$this->addMessage(sprintf(psm_get_lang('config', 'sms_error'), $result), 'error');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute Discord test
|
||||
*
|
||||
* @todo move test to separate class
|
||||
*/
|
||||
protected function testDiscord()
|
||||
{
|
||||
$user = $this->getUser()->getUser();
|
||||
if (empty($user->discord)) {
|
||||
$this->addMessage(psm_get_lang('config', 'discord_error_nowebhook'), 'error');
|
||||
} else {
|
||||
$success = 0;
|
||||
$result = 'An unknown error has occurred.';
|
||||
try {
|
||||
$curl = curl_init($user->discord);
|
||||
$json = json_decode(
|
||||
'{"content":""}',
|
||||
true
|
||||
);
|
||||
$json['content'] = psm_get_lang('config', 'test_message');
|
||||
$msg = "payload_json=" . urlencode(json_encode($json));
|
||||
if(isset($curl)) {
|
||||
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
|
||||
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
|
||||
curl_setopt($curl, CURLOPT_POSTFIELDS, $msg);
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
||||
$result = curl_exec($curl);
|
||||
$httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||
$err = curl_errno($curl);
|
||||
|
||||
if ($err != 0 || $httpcode != 204) {
|
||||
$success = 0;
|
||||
// $result = ($result == '') ? 'Wrong input, please check if all values are correct!' : $result;
|
||||
$error = "HTTP_code: " . $httpcode . ".\ncURL error (" . $err . "): " .
|
||||
curl_strerror($err) . ". \nResult: " . $result;
|
||||
$result = $error;
|
||||
} else {
|
||||
$success = 1;
|
||||
}
|
||||
curl_close($curl);
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
$success = 0;
|
||||
$result = $e->getMessage();
|
||||
}
|
||||
|
||||
if ($success === 1) {
|
||||
$this->addMessage(psm_get_lang('config', 'discord_sent'), 'success');
|
||||
} else {
|
||||
$this->addMessage(sprintf(psm_get_lang('config', 'discord_error'), $result), 'error');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Execute webhook test
|
||||
*
|
||||
* @todo move test to separate class
|
||||
*/
|
||||
protected function testWebhook()
|
||||
{
|
||||
|
||||
$user = $this->getUser()->getUser();
|
||||
|
||||
|
||||
if (empty($user->webhook_url)) {
|
||||
$this->addMessage(psm_get_lang('config', 'webhook_error_nourl'), 'error');
|
||||
} elseif (empty($user->webhook_json)) {
|
||||
$this->addMessage(psm_get_lang('config', 'webhook_error_nojson'), 'error');
|
||||
} else {
|
||||
$webhook = psm_build_webhook();
|
||||
$webhook->setUrl($user->webhook_url);
|
||||
$webhook->setJson($user->webhook_json);
|
||||
$message = (psm_get_lang('config', 'test_message'));
|
||||
$result = $webhook->sendWebhook($message);
|
||||
if ($result==1) {
|
||||
$this->addMessage(psm_get_lang('config', 'webhook_sent'), 'success');
|
||||
} else {
|
||||
$this->addMessage(sprintf(psm_get_lang('config', 'webhook_error'), $result), 'error');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute pushover test
|
||||
*
|
||||
* @todo move test to separate class
|
||||
*/
|
||||
protected function testPushover()
|
||||
{
|
||||
$pushover = psm_build_pushover();
|
||||
$pushover->setDebug(true);
|
||||
$user = $this->getUser()->getUser();
|
||||
$apiToken = psm_get_conf('pushover_api_token');
|
||||
|
||||
if (empty($apiToken)) {
|
||||
$this->addMessage(psm_get_lang('config', 'pushover_error_noapp'), 'error');
|
||||
} elseif (empty($user->pushover_key)) {
|
||||
$this->addMessage(psm_get_lang('config', 'pushover_error_nokey'), 'error');
|
||||
} else {
|
||||
$pushover->setPriority(0);
|
||||
$pushover->setTitle(psm_get_lang('config', 'test_subject'));
|
||||
$pushover->setMessage(psm_get_lang('config', 'test_message'));
|
||||
$pushover->setUser($user->pushover_key);
|
||||
if ($user->pushover_device != '') {
|
||||
$pushover->setDevice($user->pushover_device);
|
||||
}
|
||||
$result = $pushover->send();
|
||||
|
||||
if (isset($result['output']->status) && $result['output']->status == 1) {
|
||||
$this->addMessage(psm_get_lang('config', 'pushover_sent'), 'success');
|
||||
} else {
|
||||
if (isset($result['output']->errors->error)) {
|
||||
$error = $result['output']->errors->error;
|
||||
} else {
|
||||
$error = 'Unknown';
|
||||
}
|
||||
$this->addMessage(sprintf(psm_get_lang('config', 'pushover_error'), $error), 'error');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute telegram test
|
||||
*
|
||||
* @todo move test to separate class
|
||||
*/
|
||||
protected function testTelegram()
|
||||
{
|
||||
$telegram = psm_build_telegram();
|
||||
$user = $this->getUser()->getUser();
|
||||
$apiToken = psm_get_conf('telegram_api_token');
|
||||
|
||||
if (empty($apiToken)) {
|
||||
$this->addMessage(psm_get_lang('config', 'telegram_error_notoken'), 'error');
|
||||
} elseif (empty($user->telegram_id)) {
|
||||
$this->addMessage(psm_get_lang('config', 'telegram_error_noid'), 'error');
|
||||
} else {
|
||||
$telegram->setMessage(psm_get_lang('config', 'test_message'));
|
||||
$telegram->setUser($user->telegram_id);
|
||||
|
||||
$result = $telegram->send();
|
||||
|
||||
if (isset($result['ok']) && $result['ok'] != false) {
|
||||
$this->addMessage(psm_get_lang('config', 'telegram_sent'), 'success');
|
||||
} else {
|
||||
if (isset($result['description'])) {
|
||||
$error = $result['description'];
|
||||
} else {
|
||||
$error = 'Unknown';
|
||||
}
|
||||
$this->addMessage(sprintf(psm_get_lang('config', 'telegram_error'), $error), 'error');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test Jabber.
|
||||
*/
|
||||
protected function testJabber()
|
||||
{
|
||||
$user = $this->getUser()->getUser();
|
||||
psm_jabber_send_message(
|
||||
psm_get_conf('jabber_host'),
|
||||
psm_get_conf('jabber_username'),
|
||||
psm_password_decrypt(psm_get_conf('password_encrypt_key'), psm_get_conf('jabber_password')),
|
||||
[$user->jabber],
|
||||
psm_get_lang('config', 'test_message'),
|
||||
(trim(psm_get_conf('jabber_port')) !== '' ? (int)psm_get_conf('jabber_port') : null),
|
||||
(trim(psm_get_conf('jabber_domain')) !== '' ? psm_get_conf('jabber_domain') : null)
|
||||
);
|
||||
// no message - async ... so just info
|
||||
$this->addMessage(psm_get_lang('config', 'jabber_check'), 'info');
|
||||
// @todo possible to set message via ajax with callback ...
|
||||
}
|
||||
|
||||
protected function getLabels()
|
||||
{
|
||||
return array(
|
||||
'label_tab_email' => psm_get_lang('config', 'tab_email'),
|
||||
'label_tab_sms' => psm_get_lang('config', 'tab_sms'),
|
||||
'label_tab_discord' => psm_get_lang('config', 'tab_discord'),
|
||||
'label_tab_pushover' => psm_get_lang('config', 'tab_pushover'),
|
||||
'label_tab_webhook' => psm_get_lang('config', 'tab_webhook'),
|
||||
'label_tab_telegram' => psm_get_lang('config', 'tab_telegram'),
|
||||
'label_tab_jabber' => psm_get_lang('config', 'tab_jabber'),
|
||||
'label_tab_auth' => psm_get_lang('config', 'tab_auth'),
|
||||
'label_settings_email' => psm_get_lang('config', 'settings_email'),
|
||||
'label_settings_sms' => psm_get_lang('config', 'settings_sms'),
|
||||
'label_settings_discord' => psm_get_lang('config', 'settings_discord'),
|
||||
'label_settings_webhook' => psm_get_lang('config', 'settings_webhook'),
|
||||
'label_settings_pushover' => psm_get_lang('config', 'settings_pushover'),
|
||||
'label_settings_telegram' => psm_get_lang('config', 'settings_telegram'),
|
||||
'label_settings_jabber' => psm_get_lang('config', 'settings_jabber'),
|
||||
'label_settings_dirauth' => psm_get_lang('config', 'settings_dirauth'),
|
||||
'label_settings_notification' => psm_get_lang('config', 'settings_notification'),
|
||||
'label_settings_log' => psm_get_lang('config', 'settings_log'),
|
||||
'label_settings_proxy' => psm_get_lang('config', 'settings_proxy'),
|
||||
'label_general' => psm_get_lang('config', 'general'),
|
||||
'label_language' => psm_get_lang('config', 'language'),
|
||||
'label_show_update' => psm_get_lang('config', 'show_update'),
|
||||
'label_password_encrypt_key' => psm_get_lang('config', 'password_encrypt_key'),
|
||||
'label_password_encrypt_key_note' => psm_get_lang('config', 'password_encrypt_key_note'),
|
||||
'label_proxy' => psm_get_lang('config', 'proxy'),
|
||||
'label_proxy_url' => psm_get_lang('config', 'proxy_url'),
|
||||
'label_proxy_user' => psm_get_lang('config', 'proxy_user'),
|
||||
'label_proxy_password' => psm_get_lang('config', 'proxy_password'),
|
||||
'label_email_add_url' => psm_get_lang('config', 'email_add_url'),
|
||||
'label_email_status' => psm_get_lang('config', 'email_status'),
|
||||
'label_email_from_email' => psm_get_lang('config', 'email_from_email'),
|
||||
'label_email_from_name' => psm_get_lang('config', 'email_from_name'),
|
||||
'label_email_smtp' => psm_get_lang('config', 'email_smtp'),
|
||||
'label_email_smtp_host' => psm_get_lang('config', 'email_smtp_host'),
|
||||
'label_email_smtp_port' => psm_get_lang('config', 'email_smtp_port'),
|
||||
'label_email_smtp_security' => psm_get_lang('config', 'email_smtp_security'),
|
||||
'label_email_smtp_username' => psm_get_lang('config', 'email_smtp_username'),
|
||||
'label_email_smtp_password' => psm_get_lang('config', 'email_smtp_password'),
|
||||
'label_email_smtp_noauth' => psm_get_lang('config', 'email_smtp_noauth'),
|
||||
'label_sms_status' => psm_get_lang('config', 'sms_status'),
|
||||
'label_sms_gateway' => psm_get_lang('config', 'sms_gateway'),
|
||||
'label_sms_gateway_username' => psm_get_lang('config', 'sms_gateway_username'),
|
||||
'label_sms_gateway_password' => psm_get_lang('config', 'sms_gateway_password'),
|
||||
'label_sms_from' => psm_get_lang('config', 'sms_from'),
|
||||
'label_discord_status' => psm_get_lang('config', 'discord_status'),
|
||||
'label_discord_description' => psm_get_lang('config', 'discord_description'),
|
||||
'label_webhook_description' => psm_get_lang('config', 'webhook_description'),
|
||||
'label_webhook_status' => psm_get_lang('config', 'webhook_status'),
|
||||
'label_webhook_url' => psm_get_lang('config', 'webhook_url'),
|
||||
'label_webhook_url_description' => psm_get_lang('config', 'webhook_url_description'),
|
||||
'label_webhook_json' => psm_get_lang('config', 'webhook_json'),
|
||||
'label_webhook_json_description' => psm_get_lang('config', 'webhook_json_description'),
|
||||
'label_pushover_description' => psm_get_lang('config', 'pushover_description'),
|
||||
'label_pushover_status' => psm_get_lang('config', 'pushover_status'),
|
||||
'label_pushover_clone_app' => psm_get_lang('config', 'pushover_clone_app'),
|
||||
'pushover_clone_url' => PSM_PUSHOVER_CLONE_URL,
|
||||
'label_pushover_api_token' => psm_get_lang('config', 'pushover_api_token'),
|
||||
'label_pushover_api_token_description' => sprintf(
|
||||
psm_get_lang('config', 'pushover_api_token_description'),
|
||||
PSM_PUSHOVER_CLONE_URL
|
||||
),
|
||||
'label_telegram_description' => psm_get_lang('config', 'telegram_description'),
|
||||
'label_telegram_status' => psm_get_lang('config', 'telegram_status'),
|
||||
'label_telegram_add_url' => psm_get_lang('config', 'telegram_add_url'),
|
||||
'label_telegram_api_token' => psm_get_lang('config', 'telegram_api_token'),
|
||||
'label_telegram_api_token_description' => psm_get_lang('config', 'telegram_api_token_description'),
|
||||
'label_jabber_status' => psm_get_lang('config', 'jabber_status'),
|
||||
'label_jabber_description' => psm_get_lang('config', 'jabber_description'),
|
||||
'label_jabber_host' => psm_get_lang('config', 'jabber_host'),
|
||||
'label_jabber_host_description' => psm_get_lang('config', 'jabber_host_description'),
|
||||
'label_jabber_port' => psm_get_lang('config', 'jabber_port'),
|
||||
'label_jabber_port_description' => psm_get_lang('config', 'jabber_port_description'),
|
||||
'label_jabber_username' => psm_get_lang('config', 'jabber_username'),
|
||||
'label_jabber_username_description' => psm_get_lang('config', 'jabber_username_description'),
|
||||
'label_jabber_domain' => psm_get_lang('config', 'jabber_domain'),
|
||||
'label_jabber_domain_description' => psm_get_lang('config', 'jabber_domain_description'),
|
||||
'label_jabber_password' => psm_get_lang('config', 'jabber_password'),
|
||||
'label_jabber_password_description' => psm_get_lang('config', 'jabber_password_description'),
|
||||
'label_dirauth_status' => psm_get_lang('config', 'dirauth_status'),
|
||||
'label_authdir_host_locn' => psm_get_lang('config', 'authdir_host_locn'),
|
||||
'label_authdir_host_port' => psm_get_lang('config', 'authdir_host_port'),
|
||||
'label_authdir_type' => psm_get_lang('config', 'authdir_type'),
|
||||
'label_authdir_type_description' => psm_get_lang('config', 'authdir_type_description'),
|
||||
'label_authdir_userdomain' => psm_get_lang('config', 'authdir_userdomain'),
|
||||
'label_authdir_userdomain_description' => psm_get_lang('config', 'authdir_userdomain_description'),
|
||||
'label_authdir_ldapver' => psm_get_lang('config', 'authdir_ldapver'),
|
||||
'label_authdir_ldapver_description' => psm_get_lang('config', 'authdir_ldapver_description'),
|
||||
'label_authdir_ldapfollowref' => psm_get_lang('config', 'authdir_ldapfollowref'),
|
||||
'label_authdir_ldapfollowref_description' => psm_get_lang('config', 'authdir_ldapfollowref_description'),
|
||||
'label_authdir_basedn' => psm_get_lang('config', 'authdir_basedn'),
|
||||
'label_authdir_basedn_description' => psm_get_lang('config', 'authdir_basedn_description'),
|
||||
'label_authdir_usernameattrib' => psm_get_lang('config', 'authdir_usernameattrib'),
|
||||
'label_authdir_usernameattrib_description' => psm_get_lang('config', 'authdir_usernameattrib_description'),
|
||||
'label_authdir_groupnameattrib' => psm_get_lang('config', 'authdir_groupnameattrib'),
|
||||
'label_authdir_groupnameattrib_description' =>
|
||||
psm_get_lang('config', 'authdir_groupnameattrib_description'),
|
||||
'label_authdir_groupmemattrib' => psm_get_lang('config', 'authdir_groupmemattrib'),
|
||||
'label_authdir_groupmemattrib_description' => psm_get_lang('config', 'authdir_groupmemattrib_description'),
|
||||
'label_authdir_usercontainerrdn' => psm_get_lang('config', 'authdir_usercontainerrdn'),
|
||||
'label_authdir_usercontainerrdn_description' =>
|
||||
psm_get_lang('config', 'authdir_usercontainerrdn_description'),
|
||||
'label_authdir_groupcontainerrdn' => psm_get_lang('config', 'authdir_groupcontainerrdn'),
|
||||
'label_authdir_groupcontainerrdn_description' =>
|
||||
psm_get_lang('config', 'authdir_groupcontainerrdn_description'),
|
||||
'label_authdir_groupname' => psm_get_lang('config', 'authdir_groupname'),
|
||||
'label_authdir_groupname_description' => psm_get_lang('config', 'authdir_groupname_description'),
|
||||
'label_authdir_defaultrole' => psm_get_lang('config', 'authdir_defaultrole'),
|
||||
'label_authdir_defaultrole_description' => psm_get_lang('config', 'authdir_defaultrole_description'),
|
||||
'label_alert_type' => psm_get_lang('config', 'alert_type'),
|
||||
'label_alert_type_description' => psm_get_lang('config', 'alert_type_description'),
|
||||
'label_combine_notifications' => psm_get_lang('config', 'combine_notifications'),
|
||||
'label_combine_notifications_description' => psm_get_lang('config', 'combine_notifications_description'),
|
||||
'label_log_status' => psm_get_lang('config', 'log_status'),
|
||||
'label_log_status_description' => psm_get_lang('config', 'log_status_description'),
|
||||
'label_log_email' => psm_get_lang('config', 'log_email'),
|
||||
'label_log_sms' => psm_get_lang('config', 'log_sms'),
|
||||
'label_log_discord' => psm_get_lang('config', 'log_discord'),
|
||||
'label_log_pushover' => psm_get_lang('config', 'log_pushover'),
|
||||
'label_log_webhook' => psm_get_lang('config', 'log_webhook'),
|
||||
'label_log_telegram' => psm_get_lang('config', 'log_telegram'),
|
||||
'label_log_jabber' => psm_get_lang('config', 'log_jabber'),
|
||||
'label_alert_proxy' => psm_get_lang('config', 'alert_proxy'),
|
||||
'label_alert_proxy_url' => psm_get_lang('config', 'alert_proxy_url'),
|
||||
'label_auto_refresh' => psm_get_lang('config', 'auto_refresh'),
|
||||
'label_auto_refresh_description' => psm_get_lang('config', 'auto_refresh_description'),
|
||||
'label_seconds' => psm_get_lang('system', 'seconds'),
|
||||
'label_save' => psm_get_lang('system', 'save'),
|
||||
'label_test' => psm_get_lang('config', 'test'),
|
||||
'label_log_retention_period' => psm_get_lang('config', 'log_retention_period'),
|
||||
'label_log_retention_period_description' => psm_get_lang('config', 'log_retention_period_description'),
|
||||
'label_log_retention_days' => psm_get_lang('config', 'log_retention_days'),
|
||||
'label_days' => psm_get_lang('config', 'log_retention_days'),
|
||||
'label_leave_blank' => psm_get_lang('users', 'password_leave_blank'),
|
||||
'label_user_agent' => psm_get_lang('config', 'user_agent'),
|
||||
'label_user_agent_key_note' => psm_get_lang('config', 'user_agent_key_note'),
|
||||
'label_site_title' => psm_get_lang('config', 'site_title'),
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 2.1
|
||||
**/
|
||||
|
||||
namespace psm\Module;
|
||||
|
||||
use psm\Service\Database;
|
||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
||||
|
||||
interface ControllerInterface extends ContainerAwareInterface
|
||||
{
|
||||
|
||||
public function __construct(Database $db, \Twig_Environment $twig);
|
||||
|
||||
/**
|
||||
* Run the controller
|
||||
*/
|
||||
public function run();
|
||||
|
||||
/**
|
||||
* Get the minimum required user level for this controller
|
||||
* @return int
|
||||
*/
|
||||
public function getMinUserLevelRequired();
|
||||
|
||||
/**
|
||||
* Get custom key for CSRF validation
|
||||
* @return string
|
||||
*/
|
||||
public function getCSRFKey();
|
||||
}
|
|
@ -1,56 +1,61 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 3.1
|
||||
**/
|
||||
|
||||
namespace psm\Module\Error\Controller;
|
||||
use psm\Module\AbstractController;
|
||||
use psm\Service\Database;
|
||||
|
||||
class ErrorController extends AbstractController {
|
||||
|
||||
function __construct(Database $db, \Twig_Environment $twig) {
|
||||
parent::__construct($db, $twig);
|
||||
|
||||
$this->setMinUserLevelRequired(PSM_USER_ANONYMOUS);
|
||||
|
||||
$this->setActions(array(
|
||||
'401',
|
||||
), '401');
|
||||
}
|
||||
|
||||
/**
|
||||
* 401 error page
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function execute401() {
|
||||
return $this->twig->render('module/error/401.tpl.html', array(
|
||||
'label_title' => psm_get_lang('error', '401_unauthorized'),
|
||||
'label_description' => psm_get_lang('error', '401_unauthorized_description'),
|
||||
));
|
||||
}
|
||||
}
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 3.1
|
||||
**/
|
||||
|
||||
namespace psm\Module\Error\Controller;
|
||||
|
||||
use psm\Module\AbstractController;
|
||||
use psm\Service\Database;
|
||||
|
||||
class ErrorController extends AbstractController
|
||||
{
|
||||
|
||||
public function __construct(Database $db, \Twig_Environment $twig)
|
||||
{
|
||||
parent::__construct($db, $twig);
|
||||
|
||||
$this->setMinUserLevelRequired(PSM_USER_ANONYMOUS);
|
||||
|
||||
$this->setActions(array(
|
||||
'401',
|
||||
), '401');
|
||||
}
|
||||
|
||||
/**
|
||||
* 401 error page
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function execute401()
|
||||
{
|
||||
return $this->twig->render('module/error/401.tpl.html', array(
|
||||
'label_title' => psm_get_lang('error', '401_unauthorized'),
|
||||
'label_description' => psm_get_lang('error', '401_unauthorized_description'),
|
||||
));
|
||||
}
|
||||
}
|
|
@ -1,39 +1,48 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 3.1
|
||||
**/
|
||||
|
||||
namespace psm\Module\Error;
|
||||
use psm\Module\ModuleInterface;
|
||||
|
||||
class ErrorModule implements ModuleInterface {
|
||||
public function getControllers() {
|
||||
return array(
|
||||
'error' => __NAMESPACE__ . '\Controller\ErrorController',
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 3.1
|
||||
**/
|
||||
|
||||
namespace psm\Module\Error;
|
||||
|
||||
use psm\Module\ModuleInterface;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
|
||||
class ErrorModule implements ModuleInterface
|
||||
{
|
||||
|
||||
public function load(ContainerBuilder $container)
|
||||
{
|
||||
}
|
||||
|
||||
public function getControllers()
|
||||
{
|
||||
return array(
|
||||
'error' => __NAMESPACE__ . '\Controller\ErrorController',
|
||||
);
|
||||
}
|
||||
}
|
|
@ -1,351 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 2.1.0
|
||||
**/
|
||||
|
||||
namespace psm\Module\Install\Controller;
|
||||
use psm\Module\AbstractController;
|
||||
use psm\Service\Database;
|
||||
|
||||
class InstallController extends AbstractController {
|
||||
|
||||
/**
|
||||
* Full path to config file
|
||||
* @var string $path_config
|
||||
*/
|
||||
protected $path_config;
|
||||
|
||||
/**
|
||||
* Full path to old config file (2.0)
|
||||
* @var string $path_config_old
|
||||
*/
|
||||
protected $path_config_old;
|
||||
|
||||
function __construct(Database $db, \Twig_Environment $twig) {
|
||||
parent::__construct($db, $twig);
|
||||
|
||||
$this->setMinUserLevelRequired(PSM_USER_ANONYMOUS);
|
||||
$this->addMenu(false);
|
||||
|
||||
$this->path_config = PSM_PATH_SRC . '../config.php';
|
||||
$this->path_config_old = PSM_PATH_SRC . '../config.inc.php';
|
||||
|
||||
$this->setActions(array(
|
||||
'index', 'config', 'install'
|
||||
), 'index');
|
||||
|
||||
$this->twig->addGlobal('subtitle', psm_get_lang('system,', 'install'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Say hi to our new user
|
||||
*/
|
||||
protected function executeIndex() {
|
||||
// build prerequisites
|
||||
$errors = 0;
|
||||
|
||||
$phpv = phpversion();
|
||||
if(version_compare($phpv, '5.3.7', '<')) {
|
||||
$errors++;
|
||||
$this->addMessage('PHP 5.3.7+ is required to run PHP Server Monitor.', 'error');
|
||||
} else {
|
||||
$this->addMessage('PHP version: ' . $phpv, 'success');
|
||||
}
|
||||
if(!function_exists('curl_init')) {
|
||||
$this->addMessage('PHP is installed without the cURL module. Please install cURL.', 'warning');
|
||||
} else {
|
||||
$this->addMessage('PHP cURL module found', 'success');
|
||||
}
|
||||
if(!in_array('mysql', \PDO::getAvailableDrivers())) {
|
||||
$errors++;
|
||||
$this->addMessage('The PDO MySQL driver needs to be installed.', 'error');
|
||||
}
|
||||
if(!ini_get('date.timezone')) {
|
||||
$this->addMessage('You should set a timezone in your php.ini file (e.g. \'date.timezone = UTC\'). See <a href="http://www.php.net/manual/en/timezones.php" target="_blank">this page</a> for more info.', 'warning');
|
||||
}
|
||||
|
||||
if($errors > 0) {
|
||||
$this->addMessage($errors . ' error(s) have been encountered. Please fix them and refresh this page.', 'error');
|
||||
}
|
||||
|
||||
return $this->twig->render('module/install/index.tpl.html', array(
|
||||
'messages' => $this->getMessages()
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Help the user create a new config file
|
||||
*/
|
||||
protected function executeConfig() {
|
||||
$tpl_name = 'module/install/config_new.tpl.html';
|
||||
$tpl_data = array();
|
||||
|
||||
if(!defined('PSM_DB_PREFIX')) {
|
||||
// first detect "old" config file (2.0)
|
||||
if(file_exists($this->path_config_old)) {
|
||||
// oldtimer huh
|
||||
$this->addMessage('Configuration file for v2.0 found.', 'success');
|
||||
$this->addMessage(
|
||||
'The location of the config file has been changed since v2.0.<br/>' .
|
||||
'We will attempt to create a new config file for you.'
|
||||
, 'warning');
|
||||
$values = $this->parseConfig20();
|
||||
} else {
|
||||
// fresh install
|
||||
$values = $_POST;
|
||||
}
|
||||
|
||||
$config = array(
|
||||
'host' => 'localhost',
|
||||
'name' => '',
|
||||
'user' => '',
|
||||
'pass' => '',
|
||||
'prefix' => 'psm_',
|
||||
);
|
||||
|
||||
$changed = false;
|
||||
foreach($config as $ckey => &$cvalue) {
|
||||
if(isset($values[$ckey])) {
|
||||
$changed = true;
|
||||
$cvalue = $values[$ckey];
|
||||
}
|
||||
}
|
||||
// add config to template data for prefilling the form
|
||||
$tpl_data = $config;
|
||||
|
||||
if($changed) {
|
||||
// test db connection
|
||||
$this->db = new \psm\Service\Database(
|
||||
$config['host'],
|
||||
$config['user'],
|
||||
$config['pass'],
|
||||
$config['name']
|
||||
);
|
||||
|
||||
if($this->db->status()) {
|
||||
$this->addMessage('Connection to MySQL successful.', 'success');
|
||||
$config_php = $this->writeConfigFile($config);
|
||||
if($config_php === true) {
|
||||
$this->addMessage('Configuration file written successfully.', 'success');
|
||||
} else {
|
||||
$this->addMessage('Config file is not writable, we cannot save it for you.', 'error');
|
||||
$tpl_data['include_config_new_copy'] = true;
|
||||
$tpl_data['php_config'] = $config_php;
|
||||
}
|
||||
} else {
|
||||
$this->addMessage('Unable to connect to MySQL. Please check your information.', 'error');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(defined('PSM_DB_PREFIX')) {
|
||||
if($this->db->status()) {
|
||||
if($this->isUpgrade()) {
|
||||
// upgrade
|
||||
if(version_compare($this->getPreviousVersion(), '3.0.0', '<')) {
|
||||
// upgrade from before 3.0, does not have passwords yet.. create new user first
|
||||
$this->addMessage('Your current version does not have an authentication system, but since v3.0 access to the monitor is restricted by user accounts. Please set up a new account to be able to login after the upgrade, and which you can use to change the passwords for your other accounts.', 'info');
|
||||
$tpl_name = 'module/install/config_new_user.tpl.html';
|
||||
} else {
|
||||
$tpl_name = 'module/install/config_upgrade.tpl.html';
|
||||
$tpl_data['version'] = PSM_VERSION;
|
||||
}
|
||||
} else {
|
||||
// fresh install ahead
|
||||
$tpl_name = 'module/install/config_new_user.tpl.html';
|
||||
|
||||
$tpl_data['username'] = (isset($_POST['username'])) ? $_POST['username'] : '';
|
||||
$tpl_data['email'] = (isset($_POST['email'])) ? $_POST['email'] : '';
|
||||
}
|
||||
} else {
|
||||
$this->addMessage('Configuration file found, but unable to connect to MySQL. Please check your information.', 'error');
|
||||
}
|
||||
}
|
||||
$tpl_data['messages'] = $this->getMessages();
|
||||
return $this->twig->render($tpl_name, $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the install and upgrade process to a newer version
|
||||
*/
|
||||
protected function executeInstall() {
|
||||
if(!defined('PSM_DB_PREFIX') || !$this->db->status()) {
|
||||
return $this->executeConfig();
|
||||
}
|
||||
$add_user = false;
|
||||
|
||||
// check if user submitted username + password in previous step
|
||||
// this would only be the case for new installs, and install from
|
||||
// before 3.0
|
||||
$new_user = array(
|
||||
'user_name' => psm_POST('username'),
|
||||
'name' => psm_POST('username'),
|
||||
'password' => psm_POST('password'),
|
||||
'password_repeat' => psm_POST('password_repeat'),
|
||||
'email' => psm_POST('email', ''),
|
||||
'mobile' => '',
|
||||
'level' => PSM_USER_ADMIN,
|
||||
'pushover_key' => '',
|
||||
'pushover_device' => '',
|
||||
);
|
||||
|
||||
$validator = new \psm\Util\User\UserValidator($this->user);
|
||||
|
||||
$logger = array($this, 'addMessage');
|
||||
$installer = new \psm\Util\Install\Installer($this->db, $logger);
|
||||
|
||||
if($this->isUpgrade()) {
|
||||
$this->addMessage('Upgrade process started.', 'info');
|
||||
|
||||
$version_from = $this->getPreviousVersion();
|
||||
if($version_from === false) {
|
||||
$this->addMessage('Unable to locate your previous version. Please run a fresh install.', 'error');
|
||||
} else {
|
||||
if(version_compare($version_from, PSM_VERSION, '=')) {
|
||||
$this->addMessage('Your installation is already at the latest version.', 'success');
|
||||
} elseif(version_compare($version_from, PSM_VERSION, '>')) {
|
||||
$this->addMessage('This installer does not support downgrading, sorry.', 'error');
|
||||
} else {
|
||||
$this->addMessage('Upgrading from ' . $version_from . ' to ' . PSM_VERSION, 'info');
|
||||
$installer->upgrade($version_from, PSM_VERSION);
|
||||
|
||||
}
|
||||
if(version_compare($version_from, '3.0.0', '<')) {
|
||||
$add_user = true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// validate the lot
|
||||
try {
|
||||
$validator->email($new_user['email']);
|
||||
$validator->password($new_user['password'], $new_user['password_repeat']);
|
||||
} catch(\InvalidArgumentException $e) {
|
||||
$this->addMessage(psm_get_lang('users', 'error_' . $e->getMessage()), 'error');
|
||||
return $this->executeConfig();
|
||||
}
|
||||
|
||||
$this->addMessage('Installation process started.', 'success');
|
||||
$installer->install();
|
||||
// add user
|
||||
$add_user = true;
|
||||
}
|
||||
|
||||
if($add_user) {
|
||||
unset($new_user['password_repeat']);
|
||||
$user_id = $this->db->save(PSM_DB_PREFIX.'users', $new_user);
|
||||
if(intval($user_id) > 0) {
|
||||
$this->user->changePassword($user_id, $new_user['password']);
|
||||
$this->addMessage('User account has been created successfully.', 'success');
|
||||
} else {
|
||||
$this->addMessage('There was an error adding your user account.', 'error');
|
||||
}
|
||||
}
|
||||
|
||||
return $this->twig->render('module/install/success.tpl.html', array(
|
||||
'messages' => $this->getMessages()
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Write config file with db variables
|
||||
* @param array $db_vars prefix,user,pass,name,host
|
||||
* @return boolean|string TRUE on success, string with config otherwise
|
||||
*/
|
||||
protected function writeConfigFile($db_vars) {
|
||||
$config = "<?php".PHP_EOL;
|
||||
|
||||
foreach($db_vars as $key => $value) {
|
||||
$line = "define('PSM_DB_{key}', '{value}');".PHP_EOL;
|
||||
$line = str_replace(
|
||||
array('{key}', '{value}'),
|
||||
array(strtoupper($key), $value),
|
||||
$line
|
||||
);
|
||||
$config .= $line;
|
||||
}
|
||||
if(is_writeable($this->path_config)) {
|
||||
file_put_contents($this->path_config, $config);
|
||||
return true;
|
||||
} else {
|
||||
return $config;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse the 2.0 config file for prefilling
|
||||
* @return array
|
||||
*/
|
||||
protected function parseConfig20() {
|
||||
$config_old = file_get_contents($this->path_config_old);
|
||||
$vars = array(
|
||||
'prefix' => '',
|
||||
'user' => '',
|
||||
'pass' => '',
|
||||
'name' => '',
|
||||
'host' => '',
|
||||
);
|
||||
$pattern = "/define\('SM_DB_{key}', '(.*?)'/u";
|
||||
|
||||
foreach($vars as $key => $value) {
|
||||
$pattern_key = str_replace('{key}', strtoupper($key), $pattern);
|
||||
preg_match($pattern_key, $config_old, $value_matches);
|
||||
$vars[$key] = (isset($value_matches[1])) ? $value_matches[1] : '';
|
||||
}
|
||||
|
||||
return $vars;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is it an upgrade or install?
|
||||
*/
|
||||
protected function isUpgrade() {
|
||||
if(!$this->db->status()) {
|
||||
return false;
|
||||
}
|
||||
return $this->db->ifTableExists(PSM_DB_PREFIX.'config');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the previous version from the config table
|
||||
* @return boolean|string FALSE on failure, string otherwise
|
||||
*/
|
||||
protected function getPreviousVersion() {
|
||||
if(!$this->isUpgrade()) {
|
||||
return false;
|
||||
}
|
||||
$version_conf = $this->db->selectRow(PSM_DB_PREFIX . 'config', array('key' => 'version'), array('value'));
|
||||
if(empty($version_conf)) {
|
||||
return false;
|
||||
} else {
|
||||
$version_from = $version_conf['value'];
|
||||
if(strpos($version_from, '.') === false) {
|
||||
// yeah, my bad.. previous version did not follow proper naming scheme
|
||||
$version_from = rtrim(chunk_split($version_from, 1, '.'), '.');
|
||||
}
|
||||
return $version_from;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,465 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 2.1.0
|
||||
**/
|
||||
|
||||
namespace psm\Module\Install\Controller;
|
||||
|
||||
use psm\Module\AbstractController;
|
||||
use psm\Service\Database;
|
||||
|
||||
class InstallController extends AbstractController
|
||||
{
|
||||
|
||||
/**
|
||||
* Full path to config file
|
||||
* @var string $path_config
|
||||
*/
|
||||
protected $path_config;
|
||||
|
||||
/**
|
||||
* Full path to old config file (2.0)
|
||||
* @var string $path_config_old
|
||||
*/
|
||||
protected $path_config_old;
|
||||
|
||||
public function __construct(Database $db, \Twig_Environment $twig)
|
||||
{
|
||||
parent::__construct($db, $twig);
|
||||
|
||||
$this->setMinUserLevelRequired(PSM_USER_ANONYMOUS);
|
||||
$this->setCSRFKey('install');
|
||||
$this->addMenu(false);
|
||||
|
||||
$this->path_config = PSM_PATH_SRC . '../config.php';
|
||||
$this->path_config_old = PSM_PATH_SRC . '../config.inc.php';
|
||||
|
||||
$this->setActions(array(
|
||||
'index', 'config', 'install'
|
||||
), 'index');
|
||||
|
||||
$this->twig->addGlobal('subtitle', psm_get_lang('system', 'install'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Say hi to our new user
|
||||
*/
|
||||
protected function executeIndex()
|
||||
{
|
||||
// build prerequisites
|
||||
$errors = 0;
|
||||
|
||||
$phpv = phpversion();
|
||||
if (
|
||||
version_compare($phpv, '5.5.9', '<') ||
|
||||
(version_compare($phpv, '7.0.8', '<') && version_compare($phpv, '7.0.0', '>='))
|
||||
) {
|
||||
$errors++;
|
||||
$this->addMessage('PHP 5.5.9+ or 7.0.8+ is required to run PHP Server Monitor. You\'re using ' .
|
||||
$phpv . '.', 'error');
|
||||
} else {
|
||||
$this->addMessage('PHP version: ' . $phpv, 'success');
|
||||
}
|
||||
if (version_compare(PHP_RELEASE_VERSION, '7', '<')) {
|
||||
$this->addMessage(
|
||||
'PHP 5 reaches the end of life (January 1, 2019), please update to PHP 7.
|
||||
PHP supported versions can be found
|
||||
<a href="https://secure.php.net/supported-versions.php" target="_blank"
|
||||
rel="noopener">here</a>.',
|
||||
'warning'
|
||||
);
|
||||
}
|
||||
if (!function_exists('curl_init')) {
|
||||
$this->addMessage('PHP is installed without the cURL module. Please install cURL.', 'warning');
|
||||
} else {
|
||||
$this->addMessage('PHP cURL module found', 'success');
|
||||
}
|
||||
if (!in_array('mysql', \PDO::getAvailableDrivers())) {
|
||||
$errors++;
|
||||
$this->addMessage('The PDO MySQL driver needs to be installed.', 'error');
|
||||
} else {
|
||||
$this->addMessage('PHP PDO MySQL driver found', 'success');
|
||||
}
|
||||
if (!extension_loaded('filter')) {
|
||||
$this->addMessage('PHP is installed without the filter module. Please install filter.', 'warning');
|
||||
} else {
|
||||
$this->addMessage('PHP filter module found', 'success');
|
||||
}
|
||||
if (!extension_loaded('ctype')) {
|
||||
$this->addMessage('PHP is installed without the ctype module. Please install ctype.', 'warning');
|
||||
} else {
|
||||
$this->addMessage('PHP ctype module found', 'success');
|
||||
}
|
||||
if (!extension_loaded('hash')) {
|
||||
$this->addMessage('PHP is installed without the hash module. Please install hash.', 'warning');
|
||||
} else {
|
||||
$this->addMessage('PHP hash module found', 'success');
|
||||
}
|
||||
if (!extension_loaded('json')) {
|
||||
$this->addMessage('PHP is installed without the json module. Please install json.', 'warning');
|
||||
} else {
|
||||
$this->addMessage('PHP json module found', 'success');
|
||||
}
|
||||
if (!extension_loaded('libxml')) {
|
||||
$this->addMessage('PHP is installed without the libxml module. Please install libxml.', 'warning');
|
||||
} else {
|
||||
$this->addMessage('PHP libxml module found', 'success');
|
||||
}
|
||||
if (!extension_loaded('openssl')) {
|
||||
$this->addMessage('PHP is installed without the openssl module. Please install openssl.', 'warning');
|
||||
} else {
|
||||
$this->addMessage('PHP openssl module found', 'success');
|
||||
}
|
||||
if (!extension_loaded('pcre')) {
|
||||
$this->addMessage('PHP is installed without the pcre module. Please install pcre.', 'warning');
|
||||
} else {
|
||||
$this->addMessage('PHP pcre module found', 'success');
|
||||
}
|
||||
if (!extension_loaded('sockets')) {
|
||||
$this->addMessage('PHP is installed without the sockets module. Please install sockets.', 'warning');
|
||||
} else {
|
||||
$this->addMessage('PHP sockets module found', 'success');
|
||||
}
|
||||
if (!extension_loaded('xml')) {
|
||||
$this->addMessage('PHP is installed without the xml module. Please install xml.', 'warning');
|
||||
} else {
|
||||
$this->addMessage('PHP xml module found', 'success');
|
||||
}
|
||||
if (!ini_get('date.timezone')) {
|
||||
$this->addMessage(
|
||||
'You should set a timezone in your php.ini file (e.g. \'date.timezone = UTC\').
|
||||
See <a href="http://www.php.net/manual/en/timezones.php" target="_blank" rel="noopener">this page</a>
|
||||
for more info.',
|
||||
'warning'
|
||||
);
|
||||
}
|
||||
|
||||
if ($errors > 0) {
|
||||
$this->addMessage(
|
||||
$errors . ' error(s) have been encountered. Please fix them and refresh this page.',
|
||||
'error'
|
||||
);
|
||||
}
|
||||
|
||||
return $this->twig->render('module/install/index.tpl.html', array(
|
||||
'messages' => $this->getMessages()
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Help the user create a new config file
|
||||
*/
|
||||
protected function executeConfig()
|
||||
{
|
||||
$tpl_name = 'module/install/config_new.tpl.html';
|
||||
$tpl_data = array();
|
||||
|
||||
if (!defined('PSM_DB_PREFIX')) {
|
||||
// first detect "old" config file (2.0)
|
||||
if (file_exists($this->path_config_old)) {
|
||||
// oldtimer huh
|
||||
$this->addMessage('Configuration file for v2.0 found.', 'success');
|
||||
$this->addMessage(
|
||||
'The location of the config file has been changed since v2.0.<br/>' .
|
||||
'We will attempt to create a new config file for you.',
|
||||
'warning'
|
||||
);
|
||||
$values = $this->parseConfig20();
|
||||
} else {
|
||||
// fresh install
|
||||
$values = $_POST;
|
||||
}
|
||||
|
||||
$config = array(
|
||||
'db_host' => 'localhost',
|
||||
'db_port' => '',
|
||||
'db_name' => '',
|
||||
'db_user' => '',
|
||||
'db_pass' => '',
|
||||
'db_prefix' => 'psm_',
|
||||
'base_url' => $this->getBaseUrl(),
|
||||
);
|
||||
|
||||
$changed = false;
|
||||
foreach ($config as $ckey => &$cvalue) {
|
||||
if (isset($values[$ckey])) {
|
||||
$changed = true;
|
||||
$cvalue = $values[$ckey];
|
||||
}
|
||||
}
|
||||
// add config to template data for prefilling the form
|
||||
$tpl_data = $config;
|
||||
|
||||
if ($changed) {
|
||||
// test db connection
|
||||
$this->db = new \psm\Service\Database(
|
||||
$config['db_host'],
|
||||
$config['db_user'],
|
||||
$config['db_pass'],
|
||||
$config['db_name'],
|
||||
$config['db_port']
|
||||
);
|
||||
|
||||
if ($this->db->status()) {
|
||||
$this->addMessage('Connection to MySQL successful.', 'success');
|
||||
$config_php = $this->writeConfigFile($config);
|
||||
if ($config_php === true) {
|
||||
$this->addMessage('Configuration file written successfully.', 'success');
|
||||
} else {
|
||||
$this->addMessage('Config file is not writable, we cannot save it for you.', 'error');
|
||||
$tpl_data['include_config_new_copy'] = true;
|
||||
$tpl_data['php_config'] = $config_php;
|
||||
}
|
||||
} else {
|
||||
$this->addMessage('Unable to connect to MySQL. Please check your information.', 'error');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (defined('PSM_DB_PREFIX')) {
|
||||
if ($this->db->status()) {
|
||||
if ($this->isUpgrade()) {
|
||||
// upgrade
|
||||
$version_from = $this->getPreviousVersion();
|
||||
if (version_compare($version_from, '3.0.0', '<')) {
|
||||
// upgrade from before 3.0, does not have passwords yet.. create new user first
|
||||
$this->addMessage(
|
||||
'Your current version does not have an authentication system,
|
||||
but since v3.0 access to the monitor is restricted by user accounts.
|
||||
Please set up a new account to be able to login after the upgrade,
|
||||
and which you can use to change the passwords for your other accounts.'
|
||||
);
|
||||
$tpl_name = 'module/install/config_new_user.tpl.html';
|
||||
} elseif (version_compare($version_from, PSM_VERSION, '=')) {
|
||||
$this->addMessage('Your installation is already at the latest version.', 'success');
|
||||
$tpl_name = 'module/install/success.tpl.html';
|
||||
} else {
|
||||
$this->addMessage('We have discovered a previous version.');
|
||||
$tpl_name = 'module/install/config_upgrade.tpl.html';
|
||||
$tpl_data['version'] = PSM_VERSION;
|
||||
}
|
||||
} else {
|
||||
// fresh install ahead
|
||||
$tpl_name = 'module/install/config_new_user.tpl.html';
|
||||
|
||||
$tpl_data['username'] = (isset($_POST['username'])) ? $_POST['username'] : '';
|
||||
$tpl_data['email'] = (isset($_POST['email'])) ? $_POST['email'] : '';
|
||||
}
|
||||
} else {
|
||||
$this->addMessage(
|
||||
'Configuration file found, but unable to connect to MySQL. Please check your information.',
|
||||
'error'
|
||||
);
|
||||
}
|
||||
}
|
||||
$tpl_data['messages'] = $this->getMessages();
|
||||
return $this->twig->render($tpl_name, $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the install and upgrade process to a newer version
|
||||
*/
|
||||
protected function executeInstall()
|
||||
{
|
||||
if (!defined('PSM_DB_PREFIX') || !$this->db->status()) {
|
||||
return $this->executeConfig();
|
||||
}
|
||||
$add_user = false;
|
||||
|
||||
// check if user submitted username + password in previous step
|
||||
// this would only be the case for new installs, and install from
|
||||
// before 3.0
|
||||
$new_user = array(
|
||||
'user_name' => psm_POST('username'),
|
||||
'name' => psm_POST('username'),
|
||||
'password' => psm_POST('password'),
|
||||
'password_repeat' => psm_POST('password_repeat'),
|
||||
'email' => psm_POST('email', ''),
|
||||
'mobile' => '',
|
||||
'level' => PSM_USER_ADMIN,
|
||||
'pushover_key' => '',
|
||||
'pushover_device' => '',
|
||||
'webhook_url' => '',
|
||||
'webhook_json' => '',
|
||||
'telegram_id' => '',
|
||||
'discord' => '',
|
||||
'jabber' => ''
|
||||
);
|
||||
|
||||
$validator = $this->container->get('util.user.validator');
|
||||
|
||||
$logger = array($this, 'addMessage');
|
||||
$installer = new \psm\Util\Install\Installer($this->db, $logger);
|
||||
|
||||
if ($this->isUpgrade()) {
|
||||
$this->addMessage('Upgrade process started.');
|
||||
|
||||
$version_from = $this->getPreviousVersion();
|
||||
if ($version_from === false) {
|
||||
$this->addMessage('Unable to locate your previous version. Please run a fresh install.', 'error');
|
||||
} else {
|
||||
if (version_compare($version_from, PSM_VERSION, '=')) {
|
||||
$this->addMessage('Your installation is already at the latest version.', 'success');
|
||||
} elseif (version_compare($version_from, PSM_VERSION, '>')) {
|
||||
$this->addMessage('This installer does not support downgrading, sorry.', 'error');
|
||||
} else {
|
||||
$this->addMessage('Upgrading from ' . $version_from . ' to ' . PSM_VERSION);
|
||||
$installer->upgrade($version_from, PSM_VERSION);
|
||||
}
|
||||
if (version_compare($version_from, '3.0.0', '<')) {
|
||||
$add_user = true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// validate the lot
|
||||
try {
|
||||
$validator->usernameNew($new_user['user_name']);
|
||||
$validator->email($new_user['email']);
|
||||
$validator->password($new_user['password'], $new_user['password_repeat']);
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->addMessage(psm_get_lang('users', 'error_' . $e->getMessage()), 'error');
|
||||
return $this->executeConfig();
|
||||
}
|
||||
|
||||
$this->addMessage('Installation process started.', 'success');
|
||||
$installer->install();
|
||||
// add user
|
||||
$add_user = true;
|
||||
}
|
||||
|
||||
if ($add_user) {
|
||||
unset($new_user['password_repeat']);
|
||||
$user_id = $this->db->save(PSM_DB_PREFIX . 'users', $new_user);
|
||||
if (intval($user_id) > 0) {
|
||||
$this->getUser()->changePassword($user_id, $new_user['password']);
|
||||
$this->addMessage('User account has been created successfully.', 'success');
|
||||
} else {
|
||||
$this->addMessage('There was an error adding your user account.', 'error');
|
||||
}
|
||||
}
|
||||
|
||||
return $this->twig->render('module/install/success.tpl.html', array(
|
||||
'messages' => $this->getMessages()
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Write config file with db variables
|
||||
* @param array $array_config prefix,user,pass,name,host
|
||||
* @return boolean|string TRUE on success, string with config otherwise
|
||||
*/
|
||||
protected function writeConfigFile($array_config)
|
||||
{
|
||||
$config = "<?php" . PHP_EOL;
|
||||
|
||||
foreach ($array_config as $key => $value) {
|
||||
$line = "define('PSM_{key}', '{value}');" . PHP_EOL;
|
||||
$line = str_replace(
|
||||
array('{key}', '{value}'),
|
||||
array(strtoupper($key), $value),
|
||||
$line
|
||||
);
|
||||
$config .= $line;
|
||||
}
|
||||
if (is_writeable($this->path_config)) {
|
||||
file_put_contents($this->path_config, $config);
|
||||
return true;
|
||||
} else {
|
||||
return $config;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse the 2.0 config file for prefilling
|
||||
* @return array
|
||||
*/
|
||||
protected function parseConfig20()
|
||||
{
|
||||
$config_old = file_get_contents($this->path_config_old);
|
||||
$vars = array(
|
||||
'prefix' => '',
|
||||
'user' => '',
|
||||
'pass' => '',
|
||||
'name' => '',
|
||||
'host' => '',
|
||||
'port' => ''
|
||||
);
|
||||
$pattern = "/define\('SM_{key}', '(.*?)'/u";
|
||||
|
||||
foreach ($vars as $key => $value) {
|
||||
$pattern_key = str_replace('{key}', strtoupper($key), $pattern);
|
||||
preg_match($pattern_key, $config_old, $value_matches);
|
||||
$vars[$key] = (isset($value_matches[1])) ? $value_matches[1] : '';
|
||||
}
|
||||
|
||||
return $vars;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is it an upgrade or install?
|
||||
*/
|
||||
protected function isUpgrade()
|
||||
{
|
||||
if (!$this->db->status()) {
|
||||
return false;
|
||||
}
|
||||
return $this->db->ifTableExists(PSM_DB_PREFIX . 'config');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the previous version from the config table
|
||||
* @return boolean|string FALSE on failure, string otherwise
|
||||
*/
|
||||
protected function getPreviousVersion()
|
||||
{
|
||||
if (!$this->isUpgrade()) {
|
||||
return false;
|
||||
}
|
||||
$version_conf = $this->db->selectRow(PSM_DB_PREFIX . 'config', array('key' => 'version'), array('value'));
|
||||
if (empty($version_conf)) {
|
||||
return false;
|
||||
} else {
|
||||
$version_from = $version_conf['value'];
|
||||
if (strpos($version_from, '.') === false) {
|
||||
// yeah, my bad.. previous version did not follow proper naming scheme
|
||||
$version_from = rtrim(chunk_split($version_from, 1, '.'), '.');
|
||||
}
|
||||
return $version_from;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get base url of the current application
|
||||
* @return string
|
||||
*/
|
||||
protected function getBaseUrl()
|
||||
{
|
||||
$sym_request = \Symfony\Component\HttpFoundation\Request::createFromGlobals();
|
||||
|
||||
return $sym_request->getSchemeAndHttpHost() . $sym_request->getBasePath();
|
||||
}
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -18,24 +19,30 @@
|
|||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 3.0
|
||||
* @since phpservermon 3.0
|
||||
**/
|
||||
|
||||
namespace psm\Module\User;
|
||||
namespace psm\Module\Install;
|
||||
|
||||
use psm\Module\ModuleInterface;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
|
||||
class UserModule implements ModuleInterface {
|
||||
public function getControllers() {
|
||||
return array(
|
||||
'user' => __NAMESPACE__ . '\Controller\UserController',
|
||||
'login' => __NAMESPACE__ . '\Controller\LoginController',
|
||||
'profile' => __NAMESPACE__ . '\Controller\ProfileController',
|
||||
);
|
||||
class InstallModule implements ModuleInterface
|
||||
{
|
||||
|
||||
}
|
||||
public function load(ContainerBuilder $container)
|
||||
{
|
||||
}
|
||||
|
||||
public function getControllers()
|
||||
{
|
||||
return array(
|
||||
'install' => __NAMESPACE__ . '\Controller\InstallController',
|
||||
);
|
||||
}
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -18,17 +19,22 @@
|
|||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 3.0
|
||||
* @since phpservermon 3.0
|
||||
**/
|
||||
|
||||
namespace psm\Module;
|
||||
|
||||
interface ModuleInterface {
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
|
||||
public function getControllers();
|
||||
interface ModuleInterface
|
||||
{
|
||||
|
||||
public function load(ContainerBuilder $container);
|
||||
|
||||
public function getControllers();
|
||||
}
|
|
@ -1,125 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 3.0.0
|
||||
**/
|
||||
|
||||
namespace psm\Module\Server\Controller;
|
||||
use psm\Module\AbstractController;
|
||||
use psm\Service\Database;
|
||||
|
||||
abstract class AbstractServerController extends AbstractController {
|
||||
|
||||
function __construct(Database $db, \Twig_Environment $twig) {
|
||||
parent::__construct($db, $twig);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all servers for the current user
|
||||
* @param int $server_id if true only that server will be retrieved.
|
||||
* @return array
|
||||
*/
|
||||
public function getServers($server_id = null) {
|
||||
$sql_join = '';
|
||||
$sql_where = '';
|
||||
|
||||
if($this->user != null && $this->user->getUserLevel() > PSM_USER_ADMIN) {
|
||||
// restrict by user_id
|
||||
$sql_join = "JOIN `".PSM_DB_PREFIX."users_servers` AS `us` ON (
|
||||
`us`.`user_id`={$this->user->getUserId()}
|
||||
AND `us`.`server_id`=`s`.`server_id`
|
||||
)";
|
||||
}
|
||||
if($server_id !== null) {
|
||||
$server_id = intval($server_id);
|
||||
$sql_where ="WHERE `s`.`server_id`={$server_id} ";
|
||||
}
|
||||
|
||||
$sql = "SELECT
|
||||
`s`.`server_id`,
|
||||
`s`.`ip`,
|
||||
`s`.`port`,
|
||||
`s`.`type`,
|
||||
`s`.`label`,
|
||||
`s`.`pattern`,
|
||||
`s`.`status`,
|
||||
`s`.`error`,
|
||||
`s`.`rtime`,
|
||||
`s`.`last_check`,
|
||||
`s`.`last_online`,
|
||||
`s`.`active`,
|
||||
`s`.`email`,
|
||||
`s`.`sms`,
|
||||
`s`.`pushover`,
|
||||
`s`.`warning_threshold`,
|
||||
`s`.`warning_threshold_counter`,
|
||||
`s`.`timeout`
|
||||
FROM `".PSM_DB_PREFIX."servers` AS `s`
|
||||
{$sql_join}
|
||||
{$sql_where}
|
||||
ORDER BY `active` ASC, `status` DESC, `label` ASC";
|
||||
$servers = $this->db->query($sql);
|
||||
|
||||
if($server_id !== null && count($servers) == 1) {
|
||||
$servers = $servers[0];
|
||||
}
|
||||
|
||||
return $servers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format server data for display
|
||||
* @param array $server
|
||||
* @return array
|
||||
*/
|
||||
protected function formatServer($server) {
|
||||
$server['rtime'] = round((float) $server['rtime'], 4);
|
||||
$server['last_online'] = psm_timespan($server['last_online']);
|
||||
$server['last_check'] = psm_timespan($server['last_check']);
|
||||
$server['active'] = psm_get_lang('system', $server['active']);
|
||||
$server['email'] = psm_get_lang('system', $server['email']);
|
||||
$server['sms'] = psm_get_lang('system', $server['sms']);
|
||||
$server['pushover'] = psm_get_lang('system', $server['pushover']);
|
||||
|
||||
if($server['status'] == 'on' && $server['warning_threshold_counter'] > 0) {
|
||||
$server['status'] = 'warning';
|
||||
}
|
||||
|
||||
$server['error'] = htmlentities($server['error']);
|
||||
$server['type'] = psm_get_lang('servers', 'type_' . $server['type']);
|
||||
$server['timeout'] = ($server['timeout'] > 0) ? $server['timeout'] : PSM_CURL_TIMEOUT;
|
||||
|
||||
$url_actions = array('delete', 'edit', 'view');
|
||||
foreach($url_actions as $action) {
|
||||
$server['url_' . $action] = psm_build_url(array(
|
||||
'mod' => 'server',
|
||||
'action' => $action,
|
||||
'id' => $server['server_id'],
|
||||
));
|
||||
}
|
||||
|
||||
return $server;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,160 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 3.0.0
|
||||
**/
|
||||
|
||||
namespace psm\Module\Server\Controller;
|
||||
|
||||
use psm\Module\AbstractController;
|
||||
use psm\Service\Database;
|
||||
|
||||
abstract class AbstractServerController extends AbstractController
|
||||
{
|
||||
|
||||
/**
|
||||
* Get all servers for the current user
|
||||
* @param Countable|array|\PDOStatement $server_id (int) if true only that server will be retrieved.
|
||||
* @return array
|
||||
*/
|
||||
public function getServers($server_id = null)
|
||||
{
|
||||
$sql_join = '';
|
||||
$sql_where = '';
|
||||
|
||||
if ($this->getUser()->getUserLevel() > PSM_USER_ADMIN) {
|
||||
// restrict by user_id
|
||||
$sql_join = "JOIN `" . PSM_DB_PREFIX . "users_servers` AS `us` ON (
|
||||
`us`.`user_id`={$this->getUser()->getUserId()}
|
||||
AND `us`.`server_id`=`s`.`server_id`
|
||||
)";
|
||||
}
|
||||
if ($server_id !== null) {
|
||||
$server_id = intval($server_id);
|
||||
$sql_where = "WHERE `s`.`server_id`={$server_id} ";
|
||||
}
|
||||
|
||||
$sql = "SELECT
|
||||
`s`.`server_id`,
|
||||
`s`.`ip`,
|
||||
`s`.`port`,
|
||||
`s`.`request_method`,
|
||||
`s`.`post_field`,
|
||||
`s`.`type`,
|
||||
`s`.`label`,
|
||||
`s`.`pattern`,
|
||||
`s`.`pattern_online`,
|
||||
`s`.`redirect_check`,
|
||||
`s`.`allow_http_status`,
|
||||
`s`.`header_name`,
|
||||
`s`.`header_value`,
|
||||
`s`.`status`,
|
||||
`s`.`error`,
|
||||
`s`.`rtime`,
|
||||
`s`.`last_check`,
|
||||
`s`.`last_online`,
|
||||
`s`.`last_offline`,
|
||||
`s`.`last_offline_duration`,
|
||||
`s`.`active`,
|
||||
`s`.`email`,
|
||||
`s`.`sms`,
|
||||
`s`.`discord`,
|
||||
`s`.`webhook`,
|
||||
`s`.`pushover`,
|
||||
`s`.`telegram`,
|
||||
`s`.`jabber`,
|
||||
`s`.`warning_threshold`,
|
||||
`s`.`warning_threshold_counter`,
|
||||
`s`.`ssl_cert_expiry_days`,
|
||||
`s`.`ssl_cert_expired_time`,
|
||||
`s`.`timeout`,
|
||||
`s`.`website_username`,
|
||||
`s`.`website_password`,
|
||||
`s`.`last_error`,
|
||||
`s`.`last_error_output`,
|
||||
`s`.`last_output`
|
||||
FROM `" . PSM_DB_PREFIX . "servers` AS `s`
|
||||
{$sql_join}
|
||||
{$sql_where}
|
||||
ORDER BY `active` ASC, `status` DESC, `label` ASC";
|
||||
$servers = $this->db->query($sql);
|
||||
|
||||
if ($server_id !== null && count($servers) == 1) {
|
||||
$servers = $servers[0];
|
||||
}
|
||||
|
||||
return $servers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format server data for display
|
||||
* @param array $server
|
||||
* @return array
|
||||
*/
|
||||
protected function formatServer($server)
|
||||
{
|
||||
$server['rtime'] = $server['rtime'];
|
||||
$server['last_online'] = psm_timespan($server['last_online']);
|
||||
$server['last_offline'] = psm_timespan($server['last_offline']);
|
||||
if ($server['last_offline'] != psm_get_lang('system', 'never')) {
|
||||
$server['last_offline_duration'] = is_null($server['last_offline_duration']) ?
|
||||
null : "(" . $server['last_offline_duration'] . ")";
|
||||
}
|
||||
$server['last_check'] = psm_timespan($server['last_check']);
|
||||
|
||||
if (
|
||||
(
|
||||
$server['status'] == 'on' &&
|
||||
$server['warning_threshold_counter'] > 0
|
||||
) || (
|
||||
$server['status'] == 'on' &&
|
||||
$server['ssl_cert_expired_time'] !== null &&
|
||||
$server['ssl_cert_expiry_days'] > 0
|
||||
)
|
||||
) {
|
||||
$server['status'] = 'warning';
|
||||
}
|
||||
|
||||
$server['error'] = htmlentities($server['error']);
|
||||
$server['type'] = psm_get_lang('servers', 'type_' . $server['type']);
|
||||
$server['timeout'] = ($server['timeout'] > 0) ? $server['timeout'] : PSM_CURL_TIMEOUT;
|
||||
|
||||
$server['last_error'] = htmlentities($server['last_error']);
|
||||
$server['last_error_output'] = htmlentities($server['last_error_output']);
|
||||
$server['last_output'] = htmlentities($server['last_output']);
|
||||
|
||||
$url_actions = array('delete', 'edit', 'view');
|
||||
foreach ($url_actions as $action) {
|
||||
$server['url_' . $action] = psm_build_url(array(
|
||||
'mod' => 'server',
|
||||
'action' => $action,
|
||||
'id' => $server['server_id'],
|
||||
));
|
||||
}
|
||||
|
||||
return $server;
|
||||
}
|
||||
}
|
|
@ -1,151 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
namespace psm\Module\Server\Controller;
|
||||
use psm\Service\Database;
|
||||
|
||||
/**
|
||||
* Log module. Create the page to view previous log messages
|
||||
*/
|
||||
class LogController extends AbstractServerController {
|
||||
|
||||
function __construct(Database $db, \Twig_Environment $twig) {
|
||||
parent::__construct($db, $twig);
|
||||
|
||||
$this->setActions('index', 'index');
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the template with a list of all log entries
|
||||
*/
|
||||
protected function executeIndex() {
|
||||
$this->twig->addGlobal('subtitle', psm_get_lang('menu', 'server_log'));
|
||||
$tpl_data = array(
|
||||
'label_status' => psm_get_lang('log', 'status'),
|
||||
'label_email' => psm_get_lang('log', 'email'),
|
||||
'label_sms' => psm_get_lang('log', 'sms'),
|
||||
'label_pushover' => psm_get_lang('log', 'pushover'),
|
||||
'label_title' => psm_get_lang('log', 'title'),
|
||||
'label_server' => psm_get_lang('servers', 'server'),
|
||||
'label_type' => psm_get_lang('log', 'type'),
|
||||
'label_message' => psm_get_lang('system', 'message'),
|
||||
'label_date' => psm_get_lang('system', 'date'),
|
||||
'label_users' => ucfirst(psm_get_lang('menu', 'user')),
|
||||
'label_no_logs' => psm_get_lang('log', 'no_logs'),
|
||||
'tabs' => array(),
|
||||
);
|
||||
$log_types = array('status', 'email', 'sms', 'pushover');
|
||||
|
||||
// get users
|
||||
$users = $this->db->select(PSM_DB_PREFIX.'users', null, array('user_id','name'));
|
||||
|
||||
$users_labels = array();
|
||||
foreach ($users as $user) {
|
||||
$users_labels[$user['user_id']] = $user['name'];
|
||||
}
|
||||
|
||||
foreach($log_types as $key) {
|
||||
$records = $this->getEntries($key);
|
||||
$log_count = count($records);
|
||||
|
||||
$tab_data = array(
|
||||
'id' => $key,
|
||||
'has_users' => ($key == 'status') ? false : true,
|
||||
'no_logs' => ($log_count == 0) ? true : false,
|
||||
'tab_active' => ($key == 'status') ? 'active' : '',
|
||||
);
|
||||
|
||||
for ($x = 0; $x < $log_count; $x++) {
|
||||
$record = &$records[$x];
|
||||
$record['class'] = ($x & 1) ? 'odd' : 'even';
|
||||
$record['users'] = '';
|
||||
$record['server'] = $record['label'];
|
||||
$record['type_icon'] = ($record['server_type'] == 'website') ? 'icon-globe' : 'icon-cog';
|
||||
$record['type_title'] = psm_get_lang('servers', 'type_' . $record['server_type']);
|
||||
$ip = '(' . $record['ip'];
|
||||
if(!empty($record['port']) && (($record['server_type'] != 'website') || ($record['port'] != 80))) {
|
||||
$ip .= ':' . $record['port'];
|
||||
}
|
||||
$ip .= ')';
|
||||
$record['ip'] = $ip;
|
||||
$record['datetime_format'] = psm_date($record['datetime']);
|
||||
|
||||
// fix up user list
|
||||
if(!empty($record['user_id'])) {
|
||||
$names = array();
|
||||
$users = explode(',', $record['user_id']);
|
||||
foreach($users as $user_id) {
|
||||
if(isset($users_labels[$user_id])) {
|
||||
$names[] = $users_labels[$user_id];
|
||||
}
|
||||
}
|
||||
sort($names);
|
||||
$record['users'] = implode('<br/>', $names);
|
||||
$record['user_list'] = implode(' • ', $names);
|
||||
}
|
||||
}
|
||||
$tab_data['entries'] = $records;
|
||||
$tpl_data['tabs'][] = $tab_data;
|
||||
}
|
||||
return $this->twig->render('module/server/log.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all the log entries for a specific $type
|
||||
*
|
||||
* @param string $type status/email/sms
|
||||
* @return array
|
||||
*/
|
||||
public function getEntries($type) {
|
||||
$sql_join = '';
|
||||
if($this->user != null && $this->user->getUserLevel() > PSM_USER_ADMIN) {
|
||||
// restrict by user_id
|
||||
$sql_join = "JOIN `".PSM_DB_PREFIX."users_servers` AS `us` ON (
|
||||
`us`.`user_id`={$this->user->getUserId()}
|
||||
AND `us`.`server_id`=`servers`.`server_id`
|
||||
)";
|
||||
}
|
||||
$entries = $this->db->query(
|
||||
'SELECT '.
|
||||
'`servers`.`label`, '.
|
||||
'`servers`.`ip`, '.
|
||||
'`servers`.`port`, '.
|
||||
'`servers`.`type` AS server_type, '.
|
||||
'`log`.`type`, '.
|
||||
'`log`.`message`, '.
|
||||
'`log`.`datetime`, '.
|
||||
'`log`.`user_id` '.
|
||||
'FROM `'.PSM_DB_PREFIX.'log` AS `log` '.
|
||||
'JOIN `'.PSM_DB_PREFIX.'servers` AS `servers` ON (`servers`.`server_id`=`log`.`server_id`) '.
|
||||
$sql_join .
|
||||
'WHERE `log`.`type`=\''.$type.'\' '.
|
||||
'ORDER BY `datetime` DESC '.
|
||||
'LIMIT 0,20'
|
||||
);
|
||||
return $entries;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,208 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
namespace psm\Module\Server\Controller;
|
||||
|
||||
use psm\Service\Database;
|
||||
|
||||
/**
|
||||
* Log module. Create the page to view previous log messages
|
||||
*/
|
||||
class LogController extends AbstractServerController
|
||||
{
|
||||
|
||||
public function __construct(Database $db, \Twig_Environment $twig)
|
||||
{
|
||||
parent::__construct($db, $twig);
|
||||
|
||||
$this->setActions(array(
|
||||
'index', 'delete',
|
||||
), 'index');
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the template with a list of all log entries
|
||||
*/
|
||||
protected function executeIndex()
|
||||
{
|
||||
$this->twig->addGlobal('subtitle', psm_get_lang('menu', 'server_log'));
|
||||
$tpl_data = array(
|
||||
'label_status' => psm_get_lang('log', 'status'),
|
||||
'label_email' => psm_get_lang('log', 'email'),
|
||||
'label_sms' => psm_get_lang('log', 'sms'),
|
||||
'label_discord' => psm_get_lang('log', 'discord'),
|
||||
'label_pushover' => psm_get_lang('log', 'pushover'),
|
||||
'label_webhook' => psm_get_lang('log', 'webhook'),
|
||||
'label_telegram' => psm_get_lang('log', 'telegram'),
|
||||
'label_jabber' => psm_get_lang('log', 'jabber'),
|
||||
'label_title' => psm_get_lang('log', 'title'),
|
||||
'label_server' => psm_get_lang('servers', 'server'),
|
||||
'label_type' => psm_get_lang('log', 'type'),
|
||||
'label_message' => psm_get_lang('system', 'message'),
|
||||
'label_date' => psm_get_lang('system', 'date'),
|
||||
'label_users' => ucfirst(psm_get_lang('menu', 'user')),
|
||||
'label_no_logs' => psm_get_lang('log', 'no_logs'),
|
||||
'tabs' => array(),
|
||||
);
|
||||
|
||||
$sidebar = new \psm\Util\Module\Sidebar($this->twig);
|
||||
$this->setSidebar($sidebar);
|
||||
|
||||
if ($this->getUser()->getUserLevel() == PSM_USER_ADMIN) {
|
||||
$modal = new \psm\Util\Module\Modal($this->twig, 'delete', \psm\Util\Module\Modal::MODAL_TYPE_DANGER);
|
||||
$this->addModal($modal);
|
||||
$modal->setTitle(psm_get_lang('log', 'delete_title'));
|
||||
$modal->setMessage(psm_get_lang('log', 'delete_message'));
|
||||
$modal->setOKButtonLabel(psm_get_lang('system', 'delete'));
|
||||
|
||||
$sidebar->addButton(
|
||||
'clear_logn',
|
||||
psm_get_lang('log', 'clear'),
|
||||
psm_build_url(array('mod' => 'server_log', 'action' => 'delete')),
|
||||
'trash',
|
||||
'danger show-modal',
|
||||
psm_get_lang('log', 'delete_title'),
|
||||
'delete'
|
||||
);
|
||||
}
|
||||
|
||||
$log_types = array('status', 'email', 'sms', 'pushover', 'telegram', 'jabber', 'discord', 'webhook');
|
||||
|
||||
foreach ($log_types as $key) {
|
||||
$records = $this->getEntries($key);
|
||||
$log_count = count($records);
|
||||
|
||||
$tab_data = array(
|
||||
'id' => $key,
|
||||
'label' => psm_get_lang('log', $key),
|
||||
'has_users' => ($key == 'status') ? false : true,
|
||||
'no_logs' => ($log_count == 0) ? true : false,
|
||||
'tab_active' => ($key == 'status') ? 'active' : '',
|
||||
);
|
||||
|
||||
for ($x = 0; $x < $log_count; $x++) {
|
||||
$record = &$records[$x];
|
||||
$record['users'] = '';
|
||||
if ($key == 'status') {
|
||||
$record['server'] = $record['label'];
|
||||
$record['type_icon'] = ($record['server_type'] == 'website') ? 'globe-americas' : 'cogs';
|
||||
$record['type_title'] = psm_get_lang('servers', 'type_' . $record['server_type']);
|
||||
$ip = '(' . $record['ip'];
|
||||
if (!empty($record['port']) && (($record['server_type'] != 'website') || ($record['port'] != 80))) {
|
||||
$ip .= ':' . $record['port'];
|
||||
}
|
||||
$ip .= ')';
|
||||
$record['ip'] = $ip;
|
||||
}
|
||||
$record['datetime_format'] = psm_date($record['datetime']);
|
||||
|
||||
// fix up user list
|
||||
$users = $this->getLogUsers($record['log_id']);
|
||||
if (!empty($users)) {
|
||||
$names = array();
|
||||
foreach ($users as $user) {
|
||||
$names[] = $user['name'];
|
||||
}
|
||||
$record['users'] = implode('<br/>', $names);
|
||||
$record['user_list'] = implode(' • ', $names);
|
||||
}
|
||||
}
|
||||
$tab_data['entries'] = $records;
|
||||
$tpl_data['tabs'][] = $tab_data;
|
||||
}
|
||||
return $this->twig->render('module/server/log.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
protected function executeDelete()
|
||||
{
|
||||
/**
|
||||
* Empty table log and log_users.
|
||||
* Only when user is admin.
|
||||
*/
|
||||
if ($this->getUser()->getUserLevel() == PSM_USER_ADMIN) {
|
||||
$archiver = new \psm\Util\Server\Archiver\LogsArchiver($this->db);
|
||||
$archiver->cleanupall();
|
||||
}
|
||||
return $this->runAction('index');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all the log entries for a specific $type
|
||||
*
|
||||
* @param string $type status/email/sms
|
||||
* @return \PDOStatement array
|
||||
*/
|
||||
public function getEntries($type)
|
||||
{
|
||||
$sql_join = '';
|
||||
if ($this->getUser()->getUserLevel() > PSM_USER_ADMIN) {
|
||||
// restrict by user_id
|
||||
$sql_join = "JOIN `" . PSM_DB_PREFIX . "users_servers` AS `us` ON (
|
||||
`us`.`user_id`={$this->getUser()->getUserId()}
|
||||
AND `us`.`server_id`=`servers`.`server_id`
|
||||
)";
|
||||
}
|
||||
$entries = $this->db->query(
|
||||
'SELECT ' .
|
||||
'`servers`.`label`, ' .
|
||||
'`servers`.`ip`, ' .
|
||||
'`servers`.`port`, ' .
|
||||
'`servers`.`type` AS server_type, ' .
|
||||
'`log`.`log_id`, ' .
|
||||
'`log`.`type`, ' .
|
||||
'`log`.`message`, ' .
|
||||
'`log`.`datetime` ' .
|
||||
'FROM `' . PSM_DB_PREFIX . 'log` AS `log` ' .
|
||||
'JOIN `' . PSM_DB_PREFIX . 'servers` AS `servers` ON (`servers`.`server_id`=`log`.`server_id`) ' .
|
||||
$sql_join .
|
||||
'WHERE `log`.`type`=\'' . $type . '\' ' .
|
||||
'ORDER BY `datetime` DESC ' .
|
||||
'LIMIT 0,20'
|
||||
);
|
||||
return $entries;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all the user entries for a specific $log_id
|
||||
*
|
||||
* @param $log_id
|
||||
* @return \PDOStatement array
|
||||
*/
|
||||
protected function getLogUsers($log_id)
|
||||
{
|
||||
return $this->db->query(
|
||||
"SELECT
|
||||
u.`user_id`,
|
||||
u.`name`
|
||||
FROM `" . PSM_DB_PREFIX . "log_users` AS lu
|
||||
LEFT JOIN `" . PSM_DB_PREFIX . "users` AS u ON lu.`user_id` = u.`user_id`
|
||||
WHERE lu.`log_id` = " . (int) $log_id . "
|
||||
ORDER BY u.`name` ASC"
|
||||
);
|
||||
}
|
||||
}
|
|
@ -1,439 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
namespace psm\Module\Server\Controller;
|
||||
use psm\Service\Database;
|
||||
|
||||
/**
|
||||
* Server module. Add/edit/delete servers, show a list of all servers etc.
|
||||
*/
|
||||
class ServerController extends AbstractServerController {
|
||||
|
||||
/**
|
||||
* Current server id
|
||||
* @var int $server_id
|
||||
*/
|
||||
protected $server_id;
|
||||
|
||||
function __construct(Database $db, \Twig_Environment $twig) {
|
||||
parent::__construct($db, $twig);
|
||||
|
||||
$this->server_id = isset($_GET['id']) ? intval($_GET['id']) : 0;
|
||||
|
||||
$this->setActions(array(
|
||||
'index', 'edit', 'save', 'delete', 'view',
|
||||
), 'index');
|
||||
|
||||
// make sure only admins are allowed to edit/delete servers:
|
||||
$this->setMinUserLevelRequiredForAction(PSM_USER_ADMIN, array(
|
||||
'delete', 'edit', 'save'
|
||||
));
|
||||
$this->twig->addGlobal('subtitle', psm_get_lang('menu', 'server'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the template to show a list of all servers
|
||||
*/
|
||||
protected function executeIndex() {
|
||||
$tpl_data = $this->getLabels();
|
||||
$tpl_data['user_level'] = $this->user->getUserLevel();
|
||||
$sidebar = new \psm\Util\Module\Sidebar($this->twig);
|
||||
$this->setSidebar($sidebar);
|
||||
|
||||
// check if user is admin, in that case we add the buttons
|
||||
if($this->user->getUserLevel() == PSM_USER_ADMIN) {
|
||||
$modal = new \psm\Util\Module\Modal($this->twig, 'delete', \psm\Util\Module\Modal::MODAL_TYPE_DANGER);
|
||||
$this->addModal($modal);
|
||||
$modal->setTitle(psm_get_lang('servers', 'delete_title'));
|
||||
$modal->setMessage(psm_get_lang('servers', 'delete_message'));
|
||||
$modal->setOKButtonLabel(psm_get_lang('system', 'delete'));
|
||||
|
||||
$sidebar->addButton(
|
||||
'add_new',
|
||||
psm_get_lang('system', 'add_new'),
|
||||
psm_build_url(array('mod' => 'server', 'action' => 'edit')),
|
||||
'plus icon-white', 'success'
|
||||
);
|
||||
}
|
||||
|
||||
$sidebar->addButton(
|
||||
'update',
|
||||
psm_get_lang('menu', 'server_update'),
|
||||
psm_build_url(array('mod' => 'server_update')),
|
||||
'refresh'
|
||||
);
|
||||
|
||||
$icons = array(
|
||||
'email' => 'icon-envelope',
|
||||
'sms' => 'icon-mobile',
|
||||
'pushover' => 'icon-pushover',
|
||||
);
|
||||
|
||||
$servers = $this->getServers();
|
||||
$server_count = count($servers);
|
||||
|
||||
for ($x = 0; $x < $server_count; $x++) {
|
||||
$servers[$x]['class'] = ($x & 1) ? 'odd' : 'even';
|
||||
|
||||
if($servers[$x]['type'] == 'website') {
|
||||
$servers[$x]['type_icon'] = 'icon-globe';
|
||||
// add link to label
|
||||
$ip = $servers[$x]['ip'];
|
||||
if(!empty($servers[$x]['port']) && ($servers[$x]['port'] != 80)) {
|
||||
$ip .= ' : ' . $servers[$x]['port'];
|
||||
}
|
||||
$servers[$x]['ip'] = '<a href="'.$servers[$x]['ip'].'" target="_blank">'.$ip.'</a>';
|
||||
$servers[$x]['ip_short'] = $ip;
|
||||
} else {
|
||||
$servers[$x]['type_icon'] = 'icon-cog';
|
||||
$servers[$x]['ip_short'] = $servers[$x]['ip'] . ' : ' . $servers[$x]['port'];
|
||||
}
|
||||
if(($servers[$x]['active'] == 'yes')) {
|
||||
$servers[$x]['active_icon'] = 'icon-eye-open';
|
||||
$servers[$x]['active_title'] = psm_get_lang('servers', 'monitoring');
|
||||
|
||||
foreach($icons as $i_id => $i_icon) {
|
||||
if(psm_get_conf($i_id . '_status') && $servers[$x][$i_id] == 'yes') {
|
||||
$servers[$x][$i_id . '_icon'] = $i_icon;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$servers[$x]['active_icon'] = 'icon-eye-close';
|
||||
$servers[$x]['active_title'] = psm_get_lang('servers', 'no_monitoring');
|
||||
}
|
||||
|
||||
$servers[$x] = $this->formatServer($servers[$x]);
|
||||
}
|
||||
$tpl_data['servers'] = $servers;
|
||||
return $this->twig->render('module/server/server/list.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the template to show the update screen for a single server
|
||||
*/
|
||||
protected function executeEdit() {
|
||||
$back_to = isset($_GET['back_to']) ? $_GET['back_to'] : '';
|
||||
|
||||
$tpl_data = $this->getLabels();
|
||||
$tpl_data['edit_server_id'] = $this->server_id;
|
||||
$tpl_data['url_save'] = psm_build_url(array(
|
||||
'mod' => 'server',
|
||||
'action' => 'save',
|
||||
'id' => $this->server_id,
|
||||
'back_to' => $back_to,
|
||||
));
|
||||
|
||||
// depending on where the user came from, add the go back url:
|
||||
if($back_to == 'view' && $this->server_id > 0) {
|
||||
$tpl_data['url_go_back'] = psm_build_url(array('mod' => 'server', 'action' => 'view', 'id' => $this->server_id));
|
||||
} else {
|
||||
$tpl_data['url_go_back'] = psm_build_url(array('mod' => 'server'));
|
||||
}
|
||||
|
||||
$tpl_data['users'] = $this->db->select(PSM_DB_PREFIX.'users', null, array('user_id', 'name'), '', 'name');
|
||||
|
||||
switch($this->server_id) {
|
||||
case 0:
|
||||
// insert mode
|
||||
$tpl_data['titlemode'] = psm_get_lang('system', 'insert');
|
||||
$tpl_data['edit_value_warning_threshold'] = '1';
|
||||
|
||||
$edit_server = $_POST;
|
||||
break;
|
||||
default:
|
||||
// edit mode
|
||||
// get server entry
|
||||
$edit_server = $this->getServers($this->server_id);
|
||||
if(empty($edit_server)) {
|
||||
$this->addMessage(psm_get_lang('servers', 'error_server_no_match'), 'error');
|
||||
return $this->initializeAction('index');
|
||||
}
|
||||
$tpl_data['titlemode'] = psm_get_lang('system', 'edit') . ' ' . $edit_server['label'];
|
||||
|
||||
$user_idc_selected = $this->getServerUsers($this->server_id);
|
||||
foreach($tpl_data['users'] as &$user) {
|
||||
if(in_array($user['user_id'], $user_idc_selected)) {
|
||||
$user['edit_selected'] = 'selected="selected"';
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if(!empty($edit_server)) {
|
||||
// attempt to prefill previously posted fields
|
||||
foreach($edit_server as $key => $value) {
|
||||
$edit_server[$key] = psm_POST($key, $value);
|
||||
}
|
||||
|
||||
$tpl_data = array_merge($tpl_data, array(
|
||||
'edit_value_label' => $edit_server['label'],
|
||||
'edit_value_ip' => $edit_server['ip'],
|
||||
'edit_value_port' => $edit_server['port'],
|
||||
'edit_value_timeout' => $edit_server['timeout'],
|
||||
'default_value_timeout' => PSM_CURL_TIMEOUT,
|
||||
'edit_value_pattern' => $edit_server['pattern'],
|
||||
'edit_value_warning_threshold' => $edit_server['warning_threshold'],
|
||||
'edit_type_selected_' . $edit_server['type'] => 'selected="selected"',
|
||||
'edit_active_selected_' . $edit_server['active'] => 'selected="selected"',
|
||||
'edit_email_selected_' . $edit_server['email'] => 'selected="selected"',
|
||||
'edit_sms_selected_' . $edit_server['sms'] => 'selected="selected"',
|
||||
'edit_pushover_selected_' . $edit_server['pushover'] => 'selected="selected"',
|
||||
));
|
||||
}
|
||||
|
||||
$notifications = array('email', 'sms', 'pushover');
|
||||
foreach($notifications as $notification) {
|
||||
if(psm_get_conf($notification . '_status') == 0) {
|
||||
$tpl_data['warning_' . $notification] = true;
|
||||
$tpl_data['control_class_' . $notification] = 'warning';
|
||||
$tpl_data['label_warning_' . $notification] = psm_get_lang(
|
||||
'servers', 'warning_notifications_disabled_' . $notification
|
||||
);
|
||||
} else {
|
||||
$tpl_data['warning_' . $notification] = false;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->twig->render('module/server/server/update.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes the saving of one of the servers
|
||||
*/
|
||||
protected function executeSave() {
|
||||
if(empty($_POST)) {
|
||||
// dont process anything if no data has been posted
|
||||
return $this->executeIndex();
|
||||
}
|
||||
$clean = array(
|
||||
'label' => trim(strip_tags(psm_POST('label', ''))),
|
||||
'ip' => trim(strip_tags(psm_POST('ip', ''))),
|
||||
'timeout' => (isset($_POST['timeout']) && intval($_POST['timeout']) > 0) ? intval($_POST['timeout']) : null,
|
||||
'port' => intval(psm_POST('port', 0)),
|
||||
'type' => psm_POST('type', ''),
|
||||
'pattern' => psm_POST('pattern', ''),
|
||||
'warning_threshold' => intval(psm_POST('warning_threshold', 0)),
|
||||
'active' => in_array($_POST['active'], array('yes', 'no')) ? $_POST['active'] : 'no',
|
||||
'email' => in_array($_POST['email'], array('yes', 'no')) ? $_POST['email'] : 'no',
|
||||
'sms' => in_array($_POST['sms'], array('yes', 'no')) ? $_POST['sms'] : 'no',
|
||||
'pushover' => in_array($_POST['pushover'], array('yes', 'no')) ? $_POST['pushover'] : 'no',
|
||||
);
|
||||
// make sure websites start with http://
|
||||
if($clean['type'] == 'website' && substr($clean['ip'], 0, 4) != 'http') {
|
||||
$clean['ip'] = 'http://' . $clean['ip'];
|
||||
}
|
||||
|
||||
// validate the lot
|
||||
$server_validator = new \psm\Util\Server\ServerValidator($this->db);
|
||||
|
||||
try {
|
||||
if($this->server_id > 0) {
|
||||
$server_validator->serverId($this->server_id);
|
||||
}
|
||||
$server_validator->label($clean['label']);
|
||||
$server_validator->type($clean['type']);
|
||||
$server_validator->ip($clean['ip'], $clean['type']);
|
||||
$server_validator->warningThreshold($clean['warning_threshold']);
|
||||
} catch(\InvalidArgumentException $ex) {
|
||||
$this->addMessage(psm_get_lang('servers', 'error_' . $ex->getMessage()), 'error');
|
||||
return $this->executeEdit();
|
||||
}
|
||||
|
||||
// check for edit or add
|
||||
if($this->server_id > 0) {
|
||||
// edit
|
||||
$this->db->save(
|
||||
PSM_DB_PREFIX.'servers',
|
||||
$clean,
|
||||
array('server_id' => $this->server_id)
|
||||
);
|
||||
$this->addMessage(psm_get_lang('servers', 'updated'), 'success');
|
||||
} else {
|
||||
// add
|
||||
$clean['status'] = 'on';
|
||||
$this->server_id = $this->db->save(PSM_DB_PREFIX.'servers', $clean);
|
||||
$this->addMessage(psm_get_lang('servers', 'inserted'), 'success');
|
||||
}
|
||||
|
||||
// update users
|
||||
$user_idc = psm_POST('user_id', array());
|
||||
$user_idc_save = array();
|
||||
|
||||
foreach($user_idc as $user_id) {
|
||||
$user_idc_save[] = array(
|
||||
'user_id' => intval($user_id),
|
||||
'server_id' => intval($this->server_id),
|
||||
);
|
||||
}
|
||||
$this->db->delete(PSM_DB_PREFIX.'users_servers', array('server_id' => $this->server_id));
|
||||
if(!empty($user_idc_save)) {
|
||||
// add all new users
|
||||
$this->db->insertMultiple(PSM_DB_PREFIX.'users_servers', $user_idc_save);
|
||||
}
|
||||
|
||||
$back_to = isset($_GET['back_to']) ? $_GET['back_to'] : 'index';
|
||||
if($back_to == 'view') {
|
||||
return $this->initializeAction('view');
|
||||
} else {
|
||||
return $this->initializeAction('index');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes the deletion of one of the servers
|
||||
*/
|
||||
protected function executeDelete() {
|
||||
if(isset($_GET['id'])) {
|
||||
$id = intval($_GET['id']);
|
||||
// do delete
|
||||
$res = $this->db->delete(PSM_DB_PREFIX . 'servers', array('server_id' => $id));
|
||||
|
||||
if($res === 1) {
|
||||
$this->db->delete(PSM_DB_PREFIX.'log', array('server_id' => $id));
|
||||
$this->db->delete(PSM_DB_PREFIX.'users_servers', array('server_id' => $id));
|
||||
$this->db->delete(PSM_DB_PREFIX.'servers_uptime', array('server_id' => $id));
|
||||
$this->db->delete(PSM_DB_PREFIX.'servers_history', array('server_id' => $id));
|
||||
}
|
||||
$this->addMessage(psm_get_lang('servers', 'deleted'), 'success');
|
||||
}
|
||||
return $this->initializeAction('index');
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the view template
|
||||
*/
|
||||
protected function executeView() {
|
||||
if($this->server_id == 0) {
|
||||
return $this->initializeAction('index');
|
||||
}
|
||||
$server = $this->getServers($this->server_id);
|
||||
|
||||
if(empty($server)) {
|
||||
return $this->initializeAction('index');
|
||||
}
|
||||
|
||||
$tpl_data = $this->getLabels();
|
||||
$tpl_data = array_merge($tpl_data, $this->formatServer($server));
|
||||
|
||||
// create history HTML
|
||||
$history = new \psm\Util\Server\HistoryGraph($this->db, $this->twig);
|
||||
$tpl_data['html_history'] = $history->createHTML($this->server_id);
|
||||
|
||||
// add edit/delete buttons for admins
|
||||
if($this->user->getUserLevel() == PSM_USER_ADMIN) {
|
||||
$tpl_data['has_admin_actions'] = true;
|
||||
$tpl_data['url_edit'] = psm_build_url(array('mod' => 'server', 'action' => 'edit', 'id' => $this->server_id, 'back_to' => 'view'));
|
||||
|
||||
$modal = new \psm\Util\Module\Modal($this->twig, 'delete', \psm\Util\Module\Modal::MODAL_TYPE_DANGER);
|
||||
$this->addModal($modal);
|
||||
$modal->setTitle(psm_get_lang('servers', 'delete_title'));
|
||||
$modal->setMessage(psm_get_lang('servers', 'delete_message'));
|
||||
$modal->setOKButtonLabel(psm_get_lang('system', 'delete'));
|
||||
}
|
||||
|
||||
// add all available servers to the menu
|
||||
$servers = $this->getServers();
|
||||
$tpl_data['options'] = array();
|
||||
foreach($servers as $i => $server_available) {
|
||||
$tpl_data['options'][] = array(
|
||||
'class_active' => ($server_available['server_id'] == $this->server_id) ? 'active' : '',
|
||||
'url' => psm_build_url(array('mod' => 'server', 'action' => 'view', 'id' => $server_available['server_id'])),
|
||||
'label' => $server_available['label'],
|
||||
);
|
||||
}
|
||||
|
||||
$sidebar = new \psm\Util\Module\Sidebar($this->twig);
|
||||
$this->setSidebar($sidebar);
|
||||
|
||||
// check which module the user came from, and add a link accordingly
|
||||
$back_to = isset($_GET['back_to']) && $_GET['back_to'] == 'server_status' ? $_GET['back_to'] : 'server';
|
||||
$sidebar->addButton(
|
||||
'go_back',
|
||||
psm_get_lang('system', 'go_back'),
|
||||
psm_build_url(array('mod' => $back_to)),
|
||||
'th-list'
|
||||
);
|
||||
|
||||
return $this->twig->render('module/server/server/view.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
protected function getLabels() {
|
||||
return array(
|
||||
'label_label' => psm_get_lang('servers', 'label'),
|
||||
'label_status' => psm_get_lang('servers', 'status'),
|
||||
'label_domain' => psm_get_lang('servers', 'domain'),
|
||||
'label_timeout' => psm_get_lang('servers', 'timeout'),
|
||||
'label_timeout_description' => psm_get_lang('servers', 'timeout_description'),
|
||||
'label_port' => psm_get_lang('servers', 'port'),
|
||||
'label_type' => psm_get_lang('servers', 'type'),
|
||||
'label_website' => psm_get_lang('servers', 'type_website'),
|
||||
'label_service' => psm_get_lang('servers', 'type_service'),
|
||||
'label_type' => psm_get_lang('servers', 'type'),
|
||||
'label_pattern' => psm_get_lang('servers', 'pattern'),
|
||||
'label_pattern_description' => psm_get_lang('servers', 'pattern_description'),
|
||||
'label_last_check' => psm_get_lang('servers', 'last_check'),
|
||||
'label_rtime' => psm_get_lang('servers', 'latency'),
|
||||
'label_last_online' => psm_get_lang('servers', 'last_online'),
|
||||
'label_monitoring' => psm_get_lang('servers', 'monitoring'),
|
||||
'label_email' => psm_get_lang('servers', 'email'),
|
||||
'label_send_email' => psm_get_lang('servers', 'send_email'),
|
||||
'label_sms' => psm_get_lang('servers', 'sms'),
|
||||
'label_send_sms' => psm_get_lang('servers', 'send_sms'),
|
||||
'label_pushover' => psm_get_lang('servers', 'pushover'),
|
||||
'label_users' => psm_get_lang('servers', 'users'),
|
||||
'label_warning_threshold' => psm_get_lang('servers', 'warning_threshold'),
|
||||
'label_warning_threshold_description' => psm_get_lang('servers', 'warning_threshold_description'),
|
||||
'label_action' => psm_get_lang('system', 'action'),
|
||||
'label_save' => psm_get_lang('system', 'save'),
|
||||
'label_go_back' => psm_get_lang('system', 'go_back'),
|
||||
'label_edit' => psm_get_lang('system', 'edit'),
|
||||
'label_delete' => psm_get_lang('system', 'delete'),
|
||||
'label_yes' => psm_get_lang('system', 'yes'),
|
||||
'label_no' => psm_get_lang('system', 'no'),
|
||||
'label_add_new' => psm_get_lang('system', 'add_new'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all user ids for a server
|
||||
* @param int $server_id
|
||||
* @return array with ids only
|
||||
*/
|
||||
protected function getServerUsers($server_id) {
|
||||
$users = $this->db->select(
|
||||
PSM_DB_PREFIX.'users_servers',
|
||||
array('server_id' => $server_id),
|
||||
array('user_id')
|
||||
);
|
||||
$result = array();
|
||||
foreach($users as $user) {
|
||||
$result[] = $user['user_id'];
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,698 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
namespace psm\Module\Server\Controller;
|
||||
|
||||
use psm\Service\Database;
|
||||
|
||||
/**
|
||||
* Server module. Add/edit/delete servers, show a list of all servers etc.
|
||||
*/
|
||||
class ServerController extends AbstractServerController
|
||||
{
|
||||
|
||||
/**
|
||||
* Current server id
|
||||
* @var int|\PDOStatement $server_id
|
||||
*/
|
||||
protected $server_id;
|
||||
|
||||
public function __construct(Database $db, \Twig_Environment $twig)
|
||||
{
|
||||
parent::__construct($db, $twig);
|
||||
|
||||
$this->server_id = isset($_GET['id']) ? intval($_GET['id']) : 0;
|
||||
|
||||
$this->setCSRFKey('server');
|
||||
$this->setActions(array(
|
||||
'index', 'edit', 'save', 'delete', 'view',
|
||||
), 'index');
|
||||
|
||||
// make sure only admins are allowed to edit/delete servers:
|
||||
$this->setMinUserLevelRequiredForAction(PSM_USER_ADMIN, array(
|
||||
'delete', 'edit', 'save'
|
||||
));
|
||||
$this->twig->addGlobal('subtitle', psm_get_lang('menu', 'server'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the template to show a list of all servers
|
||||
*/
|
||||
protected function executeIndex()
|
||||
{
|
||||
$tpl_data = $this->getLabels();
|
||||
$tpl_data['user_level'] = $this->getUser()->getUserLevel();
|
||||
$sidebar = new \psm\Util\Module\Sidebar($this->twig);
|
||||
$this->setSidebar($sidebar);
|
||||
|
||||
// check if user is admin, in that case we add the buttons
|
||||
if ($this->getUser()->getUserLevel() == PSM_USER_ADMIN) {
|
||||
$modal = new \psm\Util\Module\Modal($this->twig, 'delete', \psm\Util\Module\Modal::MODAL_TYPE_DANGER);
|
||||
$this->addModal($modal);
|
||||
$modal->setTitle(psm_get_lang('servers', 'delete_title'));
|
||||
$modal->setMessage(psm_get_lang('servers', 'delete_message'));
|
||||
$modal->setOKButtonLabel(psm_get_lang('system', 'delete'));
|
||||
|
||||
$sidebar->addButton(
|
||||
'add_new',
|
||||
psm_get_lang('system', 'add_new'),
|
||||
psm_build_url(array('mod' => 'server', 'action' => 'edit')),
|
||||
'plus',
|
||||
'success',
|
||||
psm_get_lang('system', 'add_new')
|
||||
);
|
||||
}
|
||||
|
||||
$sidebar->addButton(
|
||||
'update',
|
||||
psm_get_lang('menu', 'server_update'),
|
||||
psm_build_url(array('mod' => 'server_update')),
|
||||
'sync-alt',
|
||||
'primary',
|
||||
psm_get_lang('menu', 'server_update')
|
||||
);
|
||||
|
||||
$icons = array(
|
||||
'email' => 'icon-envelope',
|
||||
'sms' => 'icon-mobile',
|
||||
'discord' => 'icon-discord',
|
||||
'pushover' => 'icon-pushover',
|
||||
'webhook' => 'icon-webhook',
|
||||
'telegram' => 'icon-telegram',
|
||||
'jabber' => 'icon-jabber'
|
||||
);
|
||||
|
||||
$servers = $this->getServers();
|
||||
$server_count = count($servers);
|
||||
|
||||
for ($x = 0; $x < $server_count; $x++) {
|
||||
if ($servers[$x]['type'] == 'website') {
|
||||
// add link to label
|
||||
$ip = $servers[$x]['ip'];
|
||||
$servers[$x]['ip'] = '<a href="' . $servers[$x]['ip'] .
|
||||
'" target="_blank" rel="noopener">' . $ip . '</a>';
|
||||
}
|
||||
if ($servers[$x]['type'] == 'ping') {
|
||||
$servers[$x]['port'] = '';
|
||||
}
|
||||
if (($servers[$x]['active'] == 'yes')) {
|
||||
$servers[$x]['active_title'] = psm_get_lang('servers', 'monitoring');
|
||||
} else {
|
||||
$servers[$x]['active_title'] = psm_get_lang('servers', 'no_monitoring');
|
||||
}
|
||||
|
||||
$servers[$x] = $this->formatServer($servers[$x]);
|
||||
}
|
||||
$tpl_data['servers'] = $servers;
|
||||
|
||||
$tpl_data['config']['email'] = psm_get_conf('email_status');
|
||||
$tpl_data['config']['sms'] = psm_get_conf('sms_status');
|
||||
$tpl_data['config']['discord'] = psm_get_conf('discord_status');
|
||||
$tpl_data['config']['webhook'] = psm_get_conf('webhook_status');
|
||||
$tpl_data['config']['pushover'] = psm_get_conf('pushover_status');
|
||||
$tpl_data['config']['telegram'] = psm_get_conf('telegram_status');
|
||||
|
||||
return $this->twig->render('module/server/server/list.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the template to show the update screen for a single server
|
||||
*/
|
||||
protected function executeEdit()
|
||||
{
|
||||
$back_to = isset($_GET['back_to']) ? $_GET['back_to'] : '';
|
||||
|
||||
$modal = new \psm\Util\Module\Modal($this->twig, 'delete', \psm\Util\Module\Modal::MODAL_TYPE_DANGER);
|
||||
$this->addModal($modal);
|
||||
$modal->setTitle(psm_get_lang('servers', 'delete_title'));
|
||||
$modal->setMessage(psm_get_lang('servers', 'delete_message'));
|
||||
$modal->setOKButtonLabel(psm_get_lang('system', 'delete'));
|
||||
|
||||
$tpl_data = $this->getLabels();
|
||||
$tpl_data['edit_server_id'] = $this->server_id;
|
||||
$tpl_data['url_save'] = psm_build_url(array(
|
||||
'mod' => 'server',
|
||||
'action' => 'save',
|
||||
'id' => $this->server_id,
|
||||
'back_to' => $back_to,
|
||||
));
|
||||
$tpl_data['url_delete'] = psm_build_url(array(
|
||||
'mod' => 'server',
|
||||
'action' => 'delete',
|
||||
'id' => $this->server_id,
|
||||
));
|
||||
|
||||
// depending on where the user came from, add the go back url:
|
||||
if ($back_to == 'view' && $this->server_id > 0) {
|
||||
$tpl_data['url_go_back'] = psm_build_url(
|
||||
array('mod' => 'server', 'action' => 'view', 'id' => $this->server_id)
|
||||
);
|
||||
} else {
|
||||
$tpl_data['url_go_back'] = psm_build_url(array('mod' => 'server'));
|
||||
}
|
||||
|
||||
$tpl_data['users'] = $this->db->select(PSM_DB_PREFIX . 'users', null, array('user_id', 'name'), '', 'name');
|
||||
|
||||
foreach ($tpl_data['users'] as &$user) {
|
||||
$user['id'] = $user['user_id'];
|
||||
unset($user['user_id']);
|
||||
$user['label'] = $user['name'];
|
||||
unset($user['name']);
|
||||
}
|
||||
|
||||
switch ($this->server_id) {
|
||||
case 0:
|
||||
// insert mode
|
||||
$tpl_data['titlemode'] = psm_get_lang('system', 'insert');
|
||||
$tpl_data['edit_value_warning_threshold'] = '1';
|
||||
|
||||
$edit_server = $_POST;
|
||||
break;
|
||||
default:
|
||||
// edit mode
|
||||
// get server entry
|
||||
$edit_server = $this->getServers($this->server_id);
|
||||
if (empty($edit_server)) {
|
||||
$this->addMessage(psm_get_lang('servers', 'error_server_no_match'), 'error');
|
||||
return $this->runAction('index');
|
||||
}
|
||||
$tpl_data['titlemode'] = psm_get_lang('system', 'edit') . ' ' . $edit_server['label'];
|
||||
|
||||
$user_idc_selected = $this->getServerUsers($this->server_id);
|
||||
foreach ($tpl_data['users'] as &$user) {
|
||||
if (in_array($user['id'], $user_idc_selected)) {
|
||||
$user['edit_selected'] = 'selected="selected"';
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (!empty($edit_server)) {
|
||||
// attempt to prefill previously posted fields
|
||||
foreach ($edit_server as $key => $value) {
|
||||
$edit_server[$key] = psm_POST($key, $value);
|
||||
}
|
||||
|
||||
$tpl_data = array_merge($tpl_data, array(
|
||||
'edit_value_label' => $edit_server['label'],
|
||||
'edit_value_ip' => $edit_server['ip'],
|
||||
'edit_value_port' => $edit_server['port'],
|
||||
'edit_value_request_method' => $edit_server['request_method'],
|
||||
'edit_value_post_field' => $edit_server['post_field'],
|
||||
'edit_value_timeout' => $edit_server['timeout'],
|
||||
'edit_value_pattern' => $edit_server['pattern'],
|
||||
'edit_pattern_selected_' . $edit_server['pattern_online'] => 'selected="selected"',
|
||||
'edit_redirect_check_selected_' . $edit_server['redirect_check'] => 'selected="selected"',
|
||||
'edit_value_allow_http_status' => $edit_server['allow_http_status'],
|
||||
'edit_value_header_name' => $edit_server['header_name'],
|
||||
'edit_value_header_value' => $edit_server['header_value'],
|
||||
'edit_value_warning_threshold' => $edit_server['warning_threshold'],
|
||||
'edit_value_website_username' => $edit_server['website_username'],
|
||||
'edit_value_website_password' => empty($edit_server['website_password']) ? '' :
|
||||
sha1($edit_server['website_password']),
|
||||
'edit_value_ssl_cert_expiry_days' => $edit_server['ssl_cert_expiry_days'],
|
||||
'edit_type_selected_' . $edit_server['type'] => 'selected="selected"',
|
||||
'edit_active_selected' => $edit_server['active'],
|
||||
'edit_email_selected' => $edit_server['email'],
|
||||
'edit_sms_selected' => $edit_server['sms'],
|
||||
'edit_discord_selected' => $edit_server['discord'],
|
||||
'edit_webhook_selected' => $edit_server['webhook'],
|
||||
'edit_pushover_selected' => $edit_server['pushover'],
|
||||
'edit_telegram_selected' => $edit_server['telegram'],
|
||||
'edit_jabber_selected' => $edit_server['jabber'],
|
||||
));
|
||||
}
|
||||
|
||||
$notifications = array('email', 'sms', 'pushover', 'discord', 'webhook', 'telegram', 'jabber');
|
||||
foreach ($notifications as $notification) {
|
||||
if (psm_get_conf($notification . '_status') == 0) {
|
||||
$tpl_data['warning_' . $notification] = true;
|
||||
$tpl_data['label_warning_' . $notification] = psm_get_lang(
|
||||
'servers',
|
||||
'warning_notifications_disabled_' . $notification
|
||||
);
|
||||
} else {
|
||||
$tpl_data['warning_' . $notification] = false;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->twig->render('module/server/server/update.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes the saving of one of the servers
|
||||
*/
|
||||
protected function executeSave()
|
||||
{
|
||||
if (empty($_POST)) {
|
||||
// dont process anything if no data has been posted
|
||||
return $this->executeIndex();
|
||||
}
|
||||
|
||||
// We need the server id to encrypt the password. Encryption will be done after the server is added
|
||||
$encrypted_password = '';
|
||||
|
||||
if (!empty($_POST['website_password'])) {
|
||||
$new_password = psm_POST('website_password');
|
||||
|
||||
if ($this->server_id > 0) {
|
||||
$edit_server = $this->getServers($this->server_id);
|
||||
$hash = sha1($edit_server['website_password']);
|
||||
|
||||
if ($new_password == $hash) {
|
||||
$encrypted_password = $edit_server['website_password'];
|
||||
} else {
|
||||
$encrypted_password = psm_password_encrypt(strval($this->server_id) .
|
||||
psm_get_conf('password_encrypt_key'), $new_password);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$clean = array(
|
||||
'label' => trim(strip_tags(psm_POST('label', ''))),
|
||||
'ip' => trim(strip_tags(psm_POST('ip', ''))),
|
||||
'timeout' => (isset($_POST['timeout']) && intval($_POST['timeout']) > 0) ? intval($_POST['timeout']) : 10,
|
||||
'website_username' => psm_POST('website_username'),
|
||||
'website_password' => $encrypted_password,
|
||||
'port' => intval(psm_POST('port', 0)),
|
||||
'request_method' => empty(psm_POST('request_method')) ? null : psm_POST('request_method'),
|
||||
'post_field' => empty(psm_POST('post_field')) ? null : psm_POST('post_field'),
|
||||
'type' => psm_POST('type', ''),
|
||||
'pattern' => psm_POST('pattern', ''),
|
||||
'pattern_online' => in_array($_POST['pattern_online'], array('yes', 'no')) ?
|
||||
$_POST['pattern_online'] : 'yes',
|
||||
'redirect_check' => in_array($_POST['redirect_check'], array('ok', 'bad')) ?
|
||||
$_POST['redirect_check'] : 'bad',
|
||||
'allow_http_status' => psm_POST('allow_http_status', ''),
|
||||
'header_name' => psm_POST('header_name', ''),
|
||||
'header_value' => psm_POST('header_value', ''),
|
||||
'warning_threshold' => intval(psm_POST('warning_threshold', 0)),
|
||||
'ssl_cert_expiry_days' => intval(psm_POST('ssl_cert_expiry_days', 1)),
|
||||
'active' => in_array($_POST['active'], array('yes', 'no')) ? $_POST['active'] : 'no',
|
||||
'email' => in_array($_POST['email'], array('yes', 'no')) ? $_POST['email'] : 'no',
|
||||
'sms' => in_array($_POST['sms'], array('yes', 'no')) ? $_POST['sms'] : 'no',
|
||||
'discord' => in_array($_POST['discord'], array('yes', 'no')) ? $_POST['discord'] : 'no',
|
||||
'pushover' => in_array($_POST['pushover'], array('yes', 'no')) ? $_POST['pushover'] : 'no',
|
||||
'webhook' => in_array($_POST['webhook'], array('yes', 'no')) ? $_POST['webhook'] : 'no',
|
||||
'telegram' => in_array($_POST['telegram'], array('yes', 'no')) ? $_POST['telegram'] : 'no',
|
||||
'jabber' => in_array($_POST['jabber'], array('yes', 'no')) ? $_POST['jabber'] : 'no',
|
||||
);
|
||||
// make sure websites start with http://
|
||||
if (
|
||||
$clean['type'] == 'website' &&
|
||||
substr($clean['ip'], 0, 4) != 'http' &&
|
||||
substr($clean['ip'], 0, 3) != 'rdp'
|
||||
) {
|
||||
$clean['ip'] = 'http://' . $clean['ip'];
|
||||
}
|
||||
|
||||
if ($clean['request_method'] == null) {
|
||||
$clean['post_field'] = null;
|
||||
}
|
||||
|
||||
// validate the lot
|
||||
$server_validator = new \psm\Util\Server\ServerValidator($this->db);
|
||||
|
||||
// format port from http, https or rdp url
|
||||
if ($clean['type'] == 'website') {
|
||||
$tmp = parse_url($clean["ip"]);
|
||||
if (isset($tmp["port"])) {
|
||||
$clean["port"] = $tmp["port"];
|
||||
} elseif ($tmp["scheme"] === "https") {
|
||||
$clean["port"] = 443;
|
||||
} elseif ($tmp["scheme"] === "http") {
|
||||
$clean["port"] = 80;
|
||||
} elseif ($tmp["scheme"] === "rdp") {
|
||||
$clean["port"] = 3389;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
if ($this->server_id > 0) {
|
||||
$server_validator->serverId($this->server_id);
|
||||
}
|
||||
$server_validator->label($clean['label']);
|
||||
$server_validator->type($clean['type']);
|
||||
$server_validator->ip($clean['ip'], $clean['type']);
|
||||
$server_validator->warningThreshold($clean['warning_threshold']);
|
||||
$server_validator->sslCertExpiryDays($clean['ssl_cert_expiry_days']);
|
||||
} catch (\InvalidArgumentException $ex) {
|
||||
$this->addMessage(psm_get_lang('servers', 'error_' . $ex->getMessage()), 'error');
|
||||
return $this->executeEdit();
|
||||
}
|
||||
|
||||
// check for edit or add
|
||||
if ($this->server_id > 0) {
|
||||
// edit
|
||||
$this->db->save(
|
||||
PSM_DB_PREFIX . 'servers',
|
||||
$clean,
|
||||
array('server_id' => $this->server_id)
|
||||
);
|
||||
$this->addMessage(psm_get_lang('servers', 'updated'), 'success');
|
||||
} else {
|
||||
// add
|
||||
$clean['status'] = 'on';
|
||||
$this->server_id = $this->db->save(PSM_DB_PREFIX . 'servers', $clean);
|
||||
|
||||
// server has been added, re-encrypt
|
||||
if (!empty($_POST['website_password'])) {
|
||||
$cleanWebsitePassword = array(
|
||||
'website_password' => psm_password_encrypt(
|
||||
strval($this->server_id) . psm_get_conf('password_encrypt_key'),
|
||||
psm_POST('website_password')
|
||||
),
|
||||
);
|
||||
|
||||
$this->db->save(
|
||||
PSM_DB_PREFIX . 'servers',
|
||||
$cleanWebsitePassword,
|
||||
array('server_id' => $this->server_id)
|
||||
);
|
||||
}
|
||||
|
||||
$this->addMessage(psm_get_lang('servers', 'inserted'), 'success');
|
||||
}
|
||||
|
||||
// update users
|
||||
$user_idc = psm_POST('user_id', array());
|
||||
$user_idc_save = array();
|
||||
|
||||
foreach ($user_idc as $user_id) {
|
||||
$user_idc_save[] = array(
|
||||
'user_id' => intval($user_id),
|
||||
'server_id' => intval($this->server_id),
|
||||
);
|
||||
}
|
||||
$this->db->delete(PSM_DB_PREFIX . 'users_servers', array('server_id' => $this->server_id));
|
||||
if (!empty($user_idc_save)) {
|
||||
// add all new users
|
||||
$this->db->insertMultiple(PSM_DB_PREFIX . 'users_servers', $user_idc_save);
|
||||
}
|
||||
|
||||
$back_to = isset($_GET['back_to']) ? $_GET['back_to'] : 'index';
|
||||
if ($back_to == 'view') {
|
||||
return $this->runAction('view');
|
||||
} else {
|
||||
return $this->runAction('index');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Executes the deletion of one of the servers
|
||||
*/
|
||||
protected function executeDelete()
|
||||
{
|
||||
if (isset($_GET['id'])) {
|
||||
$id = intval($_GET['id']);
|
||||
// do delete
|
||||
$res = $this->db->delete(PSM_DB_PREFIX . 'servers', array('server_id' => $id));
|
||||
|
||||
if ($res === 1) {
|
||||
$this->db->delete(PSM_DB_PREFIX . 'log', array('server_id' => $id));
|
||||
$this->db->delete(PSM_DB_PREFIX . 'users_servers', array('server_id' => $id));
|
||||
$this->db->delete(PSM_DB_PREFIX . 'servers_uptime', array('server_id' => $id));
|
||||
$this->db->delete(PSM_DB_PREFIX . 'servers_history', array('server_id' => $id));
|
||||
}
|
||||
$this->addMessage(psm_get_lang('servers', 'deleted'), 'success');
|
||||
}
|
||||
return $this->runAction('index');
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the view template
|
||||
*/
|
||||
protected function executeView()
|
||||
{
|
||||
if ($this->server_id == 0) {
|
||||
return $this->runAction('index');
|
||||
}
|
||||
$server = $this->getServers($this->server_id);
|
||||
|
||||
if (empty($server)) {
|
||||
return $this->runAction('index');
|
||||
}
|
||||
|
||||
$tpl_data = $this->getLabels();
|
||||
$tpl_data = array_merge($tpl_data, $this->formatServer($server));
|
||||
|
||||
// create history HTML
|
||||
$history = new \psm\Util\Server\HistoryGraph($this->db, $this->twig);
|
||||
$tpl_data['html_history'] = $history->createHTML($this->server_id);
|
||||
|
||||
$sidebar = new \psm\Util\Module\Sidebar($this->twig);
|
||||
$this->setSidebar($sidebar);
|
||||
|
||||
// check which module the user came from, and add a link accordingly
|
||||
$back_to = isset($_GET['back_to']) && ($_GET['back_to'] == 'server_status' || $_GET['back_to'] == 'user') ?
|
||||
$_GET['back_to'] : 'server';
|
||||
$sidebar->addButton(
|
||||
'go_back',
|
||||
psm_get_lang('system', 'go_back'),
|
||||
psm_build_url(array('mod' => $back_to)),
|
||||
'angle-left',
|
||||
'link',
|
||||
psm_get_lang('system', 'go_back')
|
||||
);
|
||||
|
||||
// add edit/delete buttons for admins
|
||||
if ($this->getUser()->getUserLevel() == PSM_USER_ADMIN) {
|
||||
$tpl_data['has_admin_actions'] = true;
|
||||
$tpl_data['url_edit'] = psm_build_url(
|
||||
array('mod' => 'server', 'action' => 'edit', 'id' => $this->server_id, 'back_to' => 'view')
|
||||
);
|
||||
|
||||
$modal = new \psm\Util\Module\Modal($this->twig, 'delete', \psm\Util\Module\Modal::MODAL_TYPE_DANGER);
|
||||
$this->addModal($modal);
|
||||
$modal->setTitle(psm_get_lang('servers', 'delete_title'));
|
||||
$modal->setMessage(psm_get_lang('servers', 'delete_message'));
|
||||
$modal->setOKButtonLabel(psm_get_lang('system', 'delete'));
|
||||
|
||||
$sidebar->addButton(
|
||||
'edit',
|
||||
psm_get_lang('system', 'edit'),
|
||||
psm_build_url(
|
||||
array('mod' => 'server', 'action' => 'edit', 'id' => $this->server_id, 'back_to' => 'view')
|
||||
),
|
||||
'edit',
|
||||
'primary',
|
||||
psm_get_lang('system', 'edit')
|
||||
);
|
||||
}
|
||||
|
||||
// add all available servers to the menu
|
||||
$servers = $this->getServers();
|
||||
$tpl_data['options'] = array();
|
||||
foreach ($servers as $i => $server_available) {
|
||||
$tpl_data['options'][] = array(
|
||||
'class_active' => ($server_available['server_id'] == $this->server_id) ? 'active' : '',
|
||||
'url' => psm_build_url(
|
||||
array('mod' => 'server', 'action' => 'view', 'id' => $server_available['server_id'])
|
||||
),
|
||||
'label' => $server_available['label'],
|
||||
);
|
||||
}
|
||||
|
||||
$tpl_data['last_output_truncated'] = $tpl_data['last_output'];
|
||||
$tpl_data['last_error_output_truncated'] = $tpl_data['last_error_output'];
|
||||
|
||||
if (strlen($tpl_data['last_output']) > 255) {
|
||||
$tpl_data['last_output_truncated'] = substr($tpl_data['last_output'], 0, 255) . '...';
|
||||
}
|
||||
|
||||
if (strlen($tpl_data['last_error_output']) > 255) {
|
||||
$tpl_data['last_error_output_truncated'] = substr($tpl_data['last_error_output'], 0, 255) . '...';
|
||||
}
|
||||
|
||||
// fetch server status logs
|
||||
$log_entries = $this->getServerLogs($this->server_id);
|
||||
for ($x = 0; $x < count($log_entries); $x++) {
|
||||
$record = &$log_entries[$x];
|
||||
$record['datetime_format'] = psm_date($record['datetime']);
|
||||
}
|
||||
|
||||
$tpl_data['log_entries'] = $log_entries;
|
||||
|
||||
return $this->twig->render('module/server/server/view.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
protected function getLabels()
|
||||
{
|
||||
return array(
|
||||
'label_label' => psm_get_lang('servers', 'label'),
|
||||
'label_status' => psm_get_lang('servers', 'status'),
|
||||
'label_domain' => psm_get_lang('servers', 'domain'),
|
||||
'label_timeout' => psm_get_lang('servers', 'timeout'),
|
||||
'label_timeout_description' => psm_get_lang('servers', 'timeout_description'),
|
||||
'label_authentication_settings' => psm_get_lang('servers', 'authentication_settings'),
|
||||
'label_optional' => psm_get_lang('servers', 'optional'),
|
||||
'label_website_username' => psm_get_lang('servers', 'website_username'),
|
||||
'label_website_username_description' => psm_get_lang('servers', 'website_username_description'),
|
||||
'label_website_password' => psm_get_lang('servers', 'website_password'),
|
||||
'label_website_password_description' => psm_get_lang('servers', 'website_password_description'),
|
||||
'label_fieldset_monitoring' => psm_get_lang('servers', 'fieldset_monitoring'),
|
||||
'label_fieldset_permissions' => psm_get_lang('servers', 'fieldset_permissions'),
|
||||
'label_permissions' => psm_get_lang('servers', 'permissions'),
|
||||
'label_port' => psm_get_lang('servers', 'port'),
|
||||
'label_custom_port' => psm_get_lang('servers', 'custom_port'),
|
||||
'label_popular_ports' => psm_get_lang('servers', 'popular_ports'),
|
||||
'label_request_method' => psm_get_lang('servers', 'request_method'),
|
||||
'label_custom_request_method' => psm_get_lang('servers', 'custom_request_method'),
|
||||
'label_popular_request_methods' => psm_get_lang('servers', 'popular_request_methods'),
|
||||
'label_post_field' => psm_get_lang('servers', 'post_field'),
|
||||
'label_post_field_description' => psm_get_lang('servers', 'post_field_description'),
|
||||
'label_none' => psm_get_lang('system', 'none'),
|
||||
'label_please_select' => psm_get_lang('servers', 'please_select'),
|
||||
'label_type' => psm_get_lang('servers', 'type'),
|
||||
'label_website' => psm_get_lang('servers', 'type_website'),
|
||||
'label_service' => psm_get_lang('servers', 'type_service'),
|
||||
'label_ping' => psm_get_lang('servers', 'type_ping'),
|
||||
'label_pattern' => psm_get_lang('servers', 'pattern'),
|
||||
'label_pattern_description' => psm_get_lang('servers', 'pattern_description'),
|
||||
'label_pattern_online' => psm_get_lang('servers', 'pattern_online'),
|
||||
'label_pattern_online_description' => psm_get_lang('servers', 'pattern_online_description'),
|
||||
'label_redirect_check' => psm_get_lang('servers', 'redirect_check'),
|
||||
'label_redirect_check_description' => psm_get_lang('servers', 'redirect_check_description'),
|
||||
'label_allow_http_status' => psm_get_lang('servers', 'allow_http_status'),
|
||||
'label_allow_http_status_description' => psm_get_lang('servers', 'allow_http_status_description'),
|
||||
'label_header_name' => psm_get_lang('servers', 'header_name'),
|
||||
'label_header_value' => psm_get_lang('servers', 'header_value'),
|
||||
'label_header_name_description' => psm_get_lang('servers', 'header_name_description'),
|
||||
'label_header_value_description' => psm_get_lang('servers', 'header_value_description'),
|
||||
'label_last_check' => psm_get_lang('servers', 'last_check'),
|
||||
'label_rtime' => psm_get_lang('servers', 'latency'),
|
||||
'label_last_online' => psm_get_lang('servers', 'last_online'),
|
||||
'label_last_offline' => psm_get_lang('servers', 'last_offline'),
|
||||
'label_last_output' => psm_get_lang('servers', 'last_output'),
|
||||
'label_last_error' => psm_get_lang('servers', 'last_error'),
|
||||
'label_last_error_output' => psm_get_lang('servers', 'last_error_output'),
|
||||
'label_monitoring' => psm_get_lang('servers', 'monitoring'),
|
||||
'label_email' => psm_get_lang('servers', 'email'),
|
||||
'label_send_email' => psm_get_lang('servers', 'send_email'),
|
||||
'label_sms' => psm_get_lang('servers', 'sms'),
|
||||
'label_send_sms' => psm_get_lang('servers', 'send_sms'),
|
||||
'label_discord' => psm_get_lang('servers', 'discord'),
|
||||
'label_send_discord' => psm_get_lang('servers', 'send_discord'),
|
||||
'label_pushover' => psm_get_lang('servers', 'pushover'),
|
||||
'label_send_pushover' => psm_get_lang('servers', 'send_pushover'),
|
||||
'label_send_webhook' => psm_get_lang('servers', 'send_webhook'),
|
||||
'label_telegram' => psm_get_lang('servers', 'telegram'),
|
||||
'label_jabber' => psm_get_lang('servers', 'jabber'),
|
||||
'label_send_jabber' => psm_get_lang('servers', 'send_jabber'),
|
||||
'label_webhook' => psm_get_lang('servers', 'webhook'),
|
||||
'label_pushover' => psm_get_lang('servers', 'pushover'),
|
||||
'label_send_telegram' => psm_get_lang('servers', 'send_telegram'),
|
||||
'label_users' => psm_get_lang('servers', 'users'),
|
||||
'label_warning_threshold' => psm_get_lang('servers', 'warning_threshold'),
|
||||
'label_warning_threshold_description' => psm_get_lang('servers', 'warning_threshold_description'),
|
||||
'label_ssl_cert_expiry_days' => psm_get_lang('servers', 'ssl_cert_expiry_days'),
|
||||
'label_ssl_cert_expiry_days_description' => psm_get_lang('servers', 'ssl_cert_expiry_days_description'),
|
||||
'label_action' => psm_get_lang('system', 'action'),
|
||||
'label_save' => psm_get_lang('system', 'save'),
|
||||
'label_go_back' => psm_get_lang('system', 'go_back'),
|
||||
'label_edit' => psm_get_lang('system', 'edit'),
|
||||
'label_delete' => psm_get_lang('system', 'delete'),
|
||||
'label_view' => psm_get_lang('system', 'view'),
|
||||
'label_yes' => psm_get_lang('system', 'yes'),
|
||||
'label_no' => psm_get_lang('system', 'no'),
|
||||
'label_add_new' => psm_get_lang('system', 'add_new'),
|
||||
'label_seconds' => psm_get_lang('system', 'seconds'),
|
||||
'label_milliseconds' => psm_get_lang('system', 'milliseconds'),
|
||||
'label_online' => psm_get_lang('servers', 'online'),
|
||||
'label_offline' => psm_get_lang('servers', 'offline'),
|
||||
'label_ok' => psm_get_lang('system', 'ok'),
|
||||
'label_bad' => psm_get_lang('system', 'bad'),
|
||||
'default_value_timeout' => PSM_CURL_TIMEOUT,
|
||||
'label_settings' => psm_get_lang('system', 'settings'),
|
||||
'label_output' => psm_get_lang('servers', 'output'),
|
||||
'label_search' => psm_get_lang('system', 'search'),
|
||||
'label_log_title' => psm_get_lang('log', 'title'),
|
||||
'label_log_no_logs' => psm_get_lang('log', 'no_logs'),
|
||||
'label_date' => psm_get_lang('system', 'date'),
|
||||
'label_message' => psm_get_lang('system', 'message'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all user ids for a server
|
||||
* @param int $server_id
|
||||
* @return array with ids only
|
||||
*/
|
||||
protected function getServerUsers($server_id)
|
||||
{
|
||||
$users = $this->db->select(
|
||||
PSM_DB_PREFIX . 'users_servers',
|
||||
array('server_id' => $server_id),
|
||||
array('user_id')
|
||||
);
|
||||
$result = array();
|
||||
foreach ($users as $user) {
|
||||
$result[] = $user['user_id'];
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get logs for a server
|
||||
* @param int $server_id
|
||||
* @param string $type status/email/sms
|
||||
* @return \PDOStatement array
|
||||
*/
|
||||
protected function getServerLogs($server_id, $type = 'status')
|
||||
{
|
||||
$sql_join = '';
|
||||
if ($this->getUser()->getUserLevel() > PSM_USER_ADMIN) {
|
||||
// restrict by user_id
|
||||
$sql_join = "JOIN `" . PSM_DB_PREFIX . "users_servers` AS `us` ON (
|
||||
`us`.`user_id`={$this->getUser()->getUserId()}
|
||||
AND `us`.`server_id`=`servers`.`server_id`
|
||||
)";
|
||||
}
|
||||
$entries = $this->db->query(
|
||||
'SELECT ' .
|
||||
'`servers`.`label`, ' .
|
||||
'`servers`.`ip`, ' .
|
||||
'`servers`.`port`, ' .
|
||||
'`servers`.`type` AS server_type, ' .
|
||||
'`log`.`log_id`, ' .
|
||||
'`log`.`type`, ' .
|
||||
'`log`.`message`, ' .
|
||||
'`log`.`datetime` ' .
|
||||
'FROM `' . PSM_DB_PREFIX . 'log` AS `log` ' .
|
||||
'JOIN `' . PSM_DB_PREFIX . 'servers` AS `servers` ON (`servers`.`server_id`=`log`.`server_id`) ' .
|
||||
$sql_join .
|
||||
'WHERE `log`.`type`=\'' . $type . '\' ' .
|
||||
'AND `log`.`server_id`=' . $server_id . ' ' .
|
||||
'ORDER BY `datetime` DESC ' .
|
||||
'LIMIT 0,20'
|
||||
);
|
||||
|
||||
return $entries;
|
||||
}
|
||||
}
|
|
@ -1,109 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Michael Greenhill
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
namespace psm\Module\Server\Controller;
|
||||
use psm\Service\Database;
|
||||
|
||||
/**
|
||||
* Status module
|
||||
*/
|
||||
class StatusController extends AbstractServerController {
|
||||
|
||||
function __construct(Database $db, \Twig_Environment $twig) {
|
||||
parent::__construct($db, $twig);
|
||||
|
||||
$this->setActions(array('index', 'saveLayout'), 'index');
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the template to show a list of all servers
|
||||
* @todo move the background colurs to the config
|
||||
*/
|
||||
protected function executeIndex() {
|
||||
// set background color to black
|
||||
$this->black_background = true;
|
||||
$this->twig->addGlobal('subtitle', psm_get_lang('menu', 'server_status'));
|
||||
|
||||
// add header accessories
|
||||
$layout = $this->user->getUserPref('status_layout', 0);
|
||||
$layout_data = array(
|
||||
'label_last_check' => psm_get_lang('servers', 'last_check'),
|
||||
'label_last_online' => psm_get_lang('servers', 'last_online'),
|
||||
'label_rtime' => psm_get_lang('servers', 'latency'),
|
||||
'block_layout_active' => ($layout == 0) ? 'active' : '',
|
||||
'list_layout_active' => ($layout != 0) ? 'active' : '',
|
||||
);
|
||||
$this->setHeaderAccessories($this->twig->render('module/server/status/header.tpl.html', $layout_data));
|
||||
|
||||
$this->addFooter(false);
|
||||
|
||||
// get the active servers from database
|
||||
$servers = $this->getServers();
|
||||
|
||||
$layout_data['servers_offline'] = array();
|
||||
$layout_data['servers_online'] = array();
|
||||
|
||||
foreach ($servers as $server) {
|
||||
if($server['active'] == 'no') {
|
||||
continue;
|
||||
}
|
||||
$server['last_checked_nice'] = psm_timespan($server['last_check']);
|
||||
$server['last_online_nice'] = psm_timespan($server['last_online']);
|
||||
$server['url_view'] = psm_build_url(array('mod' => 'server', 'action' => 'view', 'id' => $server['server_id'], 'back_to' => 'server_status'));
|
||||
|
||||
if ($server['status'] == "off") {
|
||||
$layout_data['servers_offline'][] = $server;
|
||||
} elseif($server['warning_threshold_counter'] > 0) {
|
||||
$server['class_warning'] = 'warning';
|
||||
$layout_data['servers_offline'][] = $server;
|
||||
} else {
|
||||
$layout_data['servers_online'][] = $server;
|
||||
}
|
||||
}
|
||||
|
||||
$auto_refresh_seconds = psm_get_conf('auto_refresh_servers');
|
||||
if(intval($auto_refresh_seconds) > 0) {
|
||||
$this->twig->addGlobal('auto_refresh', true);
|
||||
$this->twig->addGlobal('auto_refresh_seconds', $auto_refresh_seconds);
|
||||
}
|
||||
return $this->twig->render('module/server/status/index.tpl.html', $layout_data);
|
||||
}
|
||||
|
||||
protected function executeSaveLayout() {
|
||||
if($this->isXHR()) {
|
||||
$layout = psm_POST('layout', 0);
|
||||
$this->user->setUserPref('status_layout', $layout);
|
||||
|
||||
$response = new \Symfony\Component\HttpFoundation\JsonResponse();
|
||||
$response->setData(array(
|
||||
'layout' => $layout,
|
||||
));
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,138 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Michael Greenhill
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
**/
|
||||
|
||||
namespace psm\Module\Server\Controller;
|
||||
|
||||
use psm\Service\Database;
|
||||
|
||||
/**
|
||||
* Status module
|
||||
*/
|
||||
class StatusController extends AbstractServerController
|
||||
{
|
||||
|
||||
public function __construct(Database $db, \Twig_Environment $twig)
|
||||
{
|
||||
parent::__construct($db, $twig);
|
||||
|
||||
$this->setCSRFKey('status');
|
||||
$this->setActions(array('index', 'saveLayout'), 'index');
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the template to show a list of all servers
|
||||
*/
|
||||
protected function executeIndex()
|
||||
{
|
||||
// set background color to black
|
||||
$this->black_background = true;
|
||||
$this->twig->addGlobal('subtitle', psm_get_lang('menu', 'server_status'));
|
||||
|
||||
// add header accessories
|
||||
$layout = $this->getUser()->getUserPref('status_layout', 0);
|
||||
$layout_data = array(
|
||||
'label_none' => psm_get_lang('system', 'none'),
|
||||
'label_last_check' => psm_get_lang('servers', 'last_check'),
|
||||
'label_last_online' => psm_get_lang('servers', 'last_online'),
|
||||
'label_last_offline' => psm_get_lang('servers', 'last_offline'),
|
||||
'label_online' => psm_get_lang('servers', 'online'),
|
||||
'label_offline' => psm_get_lang('servers', 'offline'),
|
||||
'label_rtime' => psm_get_lang('servers', 'latency'),
|
||||
'block_layout_active' => ($layout == 0) ? 'active' : '',
|
||||
'list_layout_active' => ($layout != 0) ? 'active' : '',
|
||||
'label_add_server' => psm_get_lang('system', 'add_new'),
|
||||
'layout' => $layout,
|
||||
'url_save' => psm_build_url(array('mod' => 'server', 'action' => 'edit')),
|
||||
);
|
||||
$this->setHeaderAccessories($this->twig->render('module/server/status/header.tpl.html', $layout_data));
|
||||
|
||||
$this->addFooter(false);
|
||||
|
||||
// get the active servers from database
|
||||
$servers = $this->getServers();
|
||||
|
||||
$layout_data['servers_offline'] = array();
|
||||
$layout_data['servers_warning'] = array();
|
||||
$layout_data['servers_online'] = array();
|
||||
|
||||
foreach ($servers as $server) {
|
||||
if ($server['active'] == 'no') {
|
||||
continue;
|
||||
}
|
||||
$server['last_checked_nice'] = psm_timespan($server['last_check']);
|
||||
$server['last_online_nice'] = psm_timespan($server['last_online']);
|
||||
$server['last_offline_nice'] = psm_timespan($server['last_offline']);
|
||||
$server['last_offline_duration_nice'] = "";
|
||||
if ($server['last_offline_nice'] != psm_get_lang('system', 'never')) {
|
||||
$server['last_offline_duration_nice'] = "(" . $server['last_offline_duration'] . ")";
|
||||
}
|
||||
$server['url_view'] = psm_build_url(
|
||||
array('mod' => 'server', 'action' => 'view', 'id' => $server['server_id'], 'back_to' => 'server_status')
|
||||
);
|
||||
|
||||
if ($server['status'] == "off") {
|
||||
$layout_data['servers_offline'][] = $server;
|
||||
} elseif ($server['warning_threshold_counter'] > 0) {
|
||||
$layout_data['servers_warning'][] = $server;
|
||||
} elseif ($server['ssl_cert_expired_time'] !== null && $server['ssl_cert_expiry_days'] > 0) {
|
||||
$layout_data['servers_warning'][] = $server;
|
||||
} else {
|
||||
$layout_data['servers_online'][] = $server;
|
||||
}
|
||||
}
|
||||
|
||||
$auto_refresh_seconds = psm_get_conf('auto_refresh_servers');
|
||||
if (intval($auto_refresh_seconds) > 0) {
|
||||
$this->twig->addGlobal('auto_refresh', true);
|
||||
$this->twig->addGlobal('auto_refresh_seconds', $auto_refresh_seconds);
|
||||
}
|
||||
|
||||
if ($this->isXHR() || isset($_SERVER["HTTP_X_REQUESTED_WITH"])) {
|
||||
$this->xhr = true;
|
||||
//disable auto refresh in ajax return html
|
||||
$layout_data["auto_refresh"] = 0;
|
||||
}
|
||||
|
||||
return $this->twig->render('module/server/status/index.tpl.html', $layout_data);
|
||||
}
|
||||
|
||||
protected function executeSaveLayout()
|
||||
{
|
||||
if ($this->isXHR()) {
|
||||
$layout = psm_POST('layout', 0);
|
||||
$this->getUser()->setUserPref('status_layout', $layout);
|
||||
|
||||
$response = new \Symfony\Component\HttpFoundation\JsonResponse();
|
||||
$response->setData(array(
|
||||
'layout' => $layout,
|
||||
));
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -19,35 +20,37 @@
|
|||
*
|
||||
* @package phpservermon
|
||||
* @author Michael Greenhill
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 3.0.0
|
||||
* @since phpservermon 3.0.0
|
||||
**/
|
||||
|
||||
namespace psm\Module\Server\Controller;
|
||||
|
||||
use psm\Module\AbstractController;
|
||||
use psm\Service\Database;
|
||||
|
||||
class UpdateController extends AbstractController {
|
||||
class UpdateController extends AbstractController
|
||||
{
|
||||
|
||||
function __construct(Database $db, \Twig_Environment $twig) {
|
||||
parent::__construct($db, $twig);
|
||||
public function __construct(Database $db, \Twig_Environment $twig)
|
||||
{
|
||||
parent::__construct($db, $twig);
|
||||
|
||||
$this->setActions('index', 'index');
|
||||
}
|
||||
$this->setActions('index', 'index');
|
||||
}
|
||||
|
||||
protected function executeIndex() {
|
||||
$autorun = new \psm\Util\Server\UpdateManager($this->db);
|
||||
$autorun->setUser($this->user);
|
||||
$autorun->run();
|
||||
|
||||
header('Location: ' . psm_build_url(array(
|
||||
'mod' => 'server_status'
|
||||
), true, false));
|
||||
die();
|
||||
}
|
||||
protected function executeIndex()
|
||||
{
|
||||
$autorun = $this->container->get('util.server.updatemanager');
|
||||
$autorun->run();
|
||||
|
||||
header('Location: ' . psm_build_url(array(
|
||||
'mod' => 'server_status'
|
||||
), true, false));
|
||||
die();
|
||||
}
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
|
@ -18,25 +19,33 @@
|
|||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 3.0
|
||||
* @since phpservermon 3.0
|
||||
**/
|
||||
|
||||
namespace psm\Module\Server;
|
||||
|
||||
use psm\Module\ModuleInterface;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
|
||||
class ServerModule implements ModuleInterface {
|
||||
public function getControllers() {
|
||||
return array(
|
||||
'server' => __NAMESPACE__ . '\Controller\ServerController',
|
||||
'log' => __NAMESPACE__ . '\Controller\LogController',
|
||||
'status' => __NAMESPACE__ . '\Controller\StatusController',
|
||||
'update' => __NAMESPACE__ . '\Controller\UpdateController',
|
||||
);
|
||||
class ServerModule implements ModuleInterface
|
||||
{
|
||||
|
||||
}
|
||||
public function load(ContainerBuilder $container)
|
||||
{
|
||||
}
|
||||
|
||||
public function getControllers()
|
||||
{
|
||||
return array(
|
||||
'server' => __NAMESPACE__ . '\Controller\ServerController',
|
||||
'log' => __NAMESPACE__ . '\Controller\LogController',
|
||||
'status' => __NAMESPACE__ . '\Controller\StatusController',
|
||||
'update' => __NAMESPACE__ . '\Controller\UpdateController',
|
||||
);
|
||||
}
|
||||
}
|
|
@ -1,176 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 3.0.0
|
||||
**/
|
||||
|
||||
namespace psm\Module\User\Controller;
|
||||
use psm\Module\AbstractController;
|
||||
use psm\Service\Database;
|
||||
|
||||
class LoginController extends AbstractController {
|
||||
|
||||
function __construct(Database $db, \Twig_Environment $twig) {
|
||||
parent::__construct($db, $twig);
|
||||
|
||||
$this->setMinUserLevelRequired(PSM_USER_ANONYMOUS);
|
||||
|
||||
$this->setActions(array(
|
||||
'login', 'forgot', 'reset',
|
||||
), 'login');
|
||||
|
||||
$this->addMenu(false);
|
||||
}
|
||||
|
||||
protected function executeLogin() {
|
||||
if(isset($_POST['user_name']) && isset($_POST['user_password'])) {
|
||||
$rememberme = (isset($_POST['user_rememberme'])) ? true : false;
|
||||
$result = $this->user->loginWithPostData(
|
||||
$_POST['user_name'],
|
||||
$_POST['user_password'],
|
||||
$rememberme
|
||||
);
|
||||
|
||||
if($result) {
|
||||
// success login, redirect
|
||||
header('Location: ' . psm_build_url($_SERVER['QUERY_STRING']));
|
||||
die();
|
||||
} else {
|
||||
$this->addMessage(psm_get_lang('login', 'error_login_incorrect'), 'error');
|
||||
}
|
||||
}
|
||||
|
||||
$tpl_data = array(
|
||||
'title_sign_in' => psm_get_lang('login', 'title_sign_in'),
|
||||
'label_username' => psm_get_lang('login', 'username'),
|
||||
'label_password' => psm_get_lang('login', 'password'),
|
||||
'label_remember_me' => psm_get_lang('login', 'remember_me'),
|
||||
'label_login' => psm_get_lang('login', 'login'),
|
||||
'label_password_forgot' => psm_get_lang('login', 'password_forgot'),
|
||||
'value_user_name' => (isset($_POST['user_name'])) ? $_POST['user_name'] : '',
|
||||
'value_rememberme' => (isset($rememberme) && $rememberme) ? 'checked="checked"' : '',
|
||||
);
|
||||
|
||||
return $this->twig->render('module/user/login/login.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show/process the password forgot form (before the mail)
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function executeForgot() {
|
||||
if(isset($_POST['user_name'])) {
|
||||
$user = $this->user->getUserByUsername($_POST['user_name']);
|
||||
|
||||
if(!empty($user)) {
|
||||
$token = $this->user->generatePasswordResetToken($user->user_id);
|
||||
// we have a token, send it along
|
||||
$this->sendPasswordForgotMail(
|
||||
$user->user_id,
|
||||
$user->email,
|
||||
$token
|
||||
);
|
||||
|
||||
$this->addMessage(psm_get_lang('login', 'success_password_forgot'), 'success');
|
||||
return $this->executeLogin();
|
||||
} else {
|
||||
$this->addMessage(psm_get_lang('login', 'error_user_incorrect'), 'error');
|
||||
}
|
||||
}
|
||||
|
||||
$tpl_data = array(
|
||||
'title_forgot' => psm_get_lang('login', 'title_forgot'),
|
||||
'label_username' => psm_get_lang('login', 'username'),
|
||||
'label_submit' => psm_get_lang('login', 'submit'),
|
||||
'label_go_back' => psm_get_lang('system', 'go_back'),
|
||||
);
|
||||
return $this->twig->render('module/user/login/forgot.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show/process the password reset form (after the mail)
|
||||
*/
|
||||
protected function executeReset() {
|
||||
$user_id = (isset($_GET['user_id'])) ? intval($_GET['user_id']) : 0;
|
||||
$token = (isset($_GET['token'])) ? $_GET['token'] : '';
|
||||
|
||||
if(!$this->user->verifyPasswordResetToken($user_id, $token)) {
|
||||
$this->addMessage(psm_get_lang('login', 'error_reset_invalid_link'), 'error');
|
||||
return $this->executeLogin();
|
||||
}
|
||||
|
||||
if(!empty($_POST['user_password_new']) && !empty($_POST['user_password_repeat'])) {
|
||||
if($_POST['user_password_new'] !== $_POST['user_password_repeat']) {
|
||||
$this->addMessage(psm_get_lang('login', 'error_login_passwords_nomatch'), 'error');
|
||||
} else {
|
||||
$result = $this->user->changePassword($user_id, $_POST['user_password_new']);
|
||||
|
||||
if($result) {
|
||||
$this->addMessage(psm_get_lang('login', 'success_password_reset'), 'success');
|
||||
return $this->executeLogin();
|
||||
} else {
|
||||
$this->addMessage(psm_get_lang('login', 'error_login_incorrect'), 'error');
|
||||
}
|
||||
}
|
||||
}
|
||||
$user = $this->user->getUser($user_id);
|
||||
|
||||
$tpl_data = array(
|
||||
'title_reset' => psm_get_lang('login', 'title_reset'),
|
||||
'label_username' => psm_get_lang('login', 'username'),
|
||||
'label_password' => psm_get_lang('login', 'password'),
|
||||
'label_password_repeat' => psm_get_lang('login', 'password_repeat'),
|
||||
'label_reset' => psm_get_lang('login', 'password_reset'),
|
||||
'label_go_back' => psm_get_lang('system', 'go_back'),
|
||||
'value_user_name' => $user->user_name,
|
||||
);
|
||||
return $this->twig->render('module/user/login/reset.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends the password-reset-email.
|
||||
* @param int $user_id
|
||||
* @param string $user_email
|
||||
* @param string $user_password_reset_hash
|
||||
*/
|
||||
protected function sendPasswordForgotMail($user_id, $user_email, $user_password_reset_hash) {
|
||||
$mail = psm_build_mail();
|
||||
$mail->Subject = psm_get_lang('login' ,'password_reset_email_subject');
|
||||
|
||||
$url = psm_build_url(array(
|
||||
'action' => 'reset',
|
||||
'user_id' => $user_id,
|
||||
'token' => $user_password_reset_hash,
|
||||
), true, false);
|
||||
$body = psm_get_lang('login', 'password_reset_email_body');
|
||||
$body = str_replace('%link%', $url, $body);
|
||||
$mail->Body = $body;
|
||||
$mail->AltBody = str_replace('<br/>', "\n", $body);
|
||||
|
||||
$mail->AddAddress($user_email);
|
||||
$mail->Send();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,188 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @link http://www.phpservermonitor.org/
|
||||
* @since phpservermon 3.0.0
|
||||
**/
|
||||
|
||||
namespace psm\Module\User\Controller;
|
||||
|
||||
use psm\Module\AbstractController;
|
||||
use psm\Service\Database;
|
||||
|
||||
class LoginController extends AbstractController
|
||||
{
|
||||
|
||||
public function __construct(Database $db, \Twig_Environment $twig)
|
||||
{
|
||||
parent::__construct($db, $twig);
|
||||
|
||||
$this->setMinUserLevelRequired(PSM_USER_ANONYMOUS);
|
||||
|
||||
$this->setActions(array(
|
||||
'login', 'forgot', 'reset',
|
||||
), 'login');
|
||||
|
||||
$this->addMenu(false);
|
||||
}
|
||||
|
||||
protected function executeLogin()
|
||||
{
|
||||
if (isset($_POST['user_name']) && isset($_POST['user_password'])) {
|
||||
$rememberme = (isset($_POST['user_rememberme'])) ? true : false;
|
||||
$result = $this->getUser()->loginWithPostData(
|
||||
$_POST['user_name'],
|
||||
$_POST['user_password'],
|
||||
$rememberme
|
||||
);
|
||||
|
||||
if ($result) {
|
||||
// success login, redirect
|
||||
header('Location: ' .
|
||||
psm_build_url(
|
||||
empty($_SERVER["QUERY_STRING"]) ? null : $_SERVER["QUERY_STRING"]
|
||||
));
|
||||
die();
|
||||
} else {
|
||||
$this->addMessage(psm_get_lang('login', 'error_login_incorrect'), 'error');
|
||||
}
|
||||
}
|
||||
|
||||
$tpl_data = array(
|
||||
'title_sign_in' => psm_get_lang('login', 'title_sign_in'),
|
||||
'label_username' => psm_get_lang('login', 'username'),
|
||||
'label_password' => psm_get_lang('login', 'password'),
|
||||
'label_remember_me' => psm_get_lang('login', 'remember_me'),
|
||||
'label_login' => psm_get_lang('login', 'login'),
|
||||
'label_password_forgot' => psm_get_lang('login', 'password_forgot'),
|
||||
'value_user_name' => (isset($_POST['user_name'])) ? $_POST['user_name'] : '',
|
||||
'value_rememberme' => (isset($rememberme) && $rememberme) ? 'checked="checked"' : '',
|
||||
);
|
||||
|
||||
return $this->twig->render('module/user/login/login.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show/process the password forgot form (before the mail)
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function executeForgot()
|
||||
{
|
||||
if (isset($_POST['user_name'])) {
|
||||
$user = $this->getUser()->getUserByUsername($_POST['user_name']);
|
||||
|
||||
if (!empty($user)) {
|
||||
$token = $this->getUser()->generatePasswordResetToken($user->user_id);
|
||||
// we have a token, send it along
|
||||
$this->sendPasswordForgotMail(
|
||||
$user->user_id,
|
||||
$user->email,
|
||||
$token
|
||||
);
|
||||
|
||||
$this->addMessage(psm_get_lang('login', 'success_password_forgot'), 'success');
|
||||
return $this->executeLogin();
|
||||
} else {
|
||||
$this->addMessage(psm_get_lang('login', 'error_user_incorrect'), 'error');
|
||||
}
|
||||
}
|
||||
|
||||
$tpl_data = array(
|
||||
'title_forgot' => psm_get_lang('login', 'title_forgot'),
|
||||
'label_username' => psm_get_lang('login', 'username'),
|
||||
'label_submit' => psm_get_lang('login', 'submit'),
|
||||
'label_go_back' => psm_get_lang('system', 'go_back'),
|
||||
);
|
||||
return $this->twig->render('module/user/login/forgot.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show/process the password reset form (after the mail)
|
||||
*/
|
||||
protected function executeReset()
|
||||
{
|
||||
$service_user = $this->getUser();
|
||||
$user_id = (isset($_GET['user_id'])) ? intval($_GET['user_id']) : 0;
|
||||
$token = (isset($_GET['token'])) ? $_GET['token'] : '';
|
||||
|
||||
if (!$service_user->verifyPasswordResetToken($user_id, $token)) {
|
||||
$this->addMessage(psm_get_lang('login', 'error_reset_invalid_link'), 'error');
|
||||
return $this->executeLogin();
|
||||
}
|
||||
|
||||
if (!empty($_POST['user_password_new']) && !empty($_POST['user_password_repeat'])) {
|
||||
if ($_POST['user_password_new'] !== $_POST['user_password_repeat']) {
|
||||
$this->addMessage(psm_get_lang('login', 'error_login_passwords_nomatch'), 'error');
|
||||
} else {
|
||||
$result = $service_user->changePassword($user_id, $_POST['user_password_new']);
|
||||
|
||||
if ($result) {
|
||||
$this->addMessage(psm_get_lang('login', 'success_password_reset'), 'success');
|
||||
return $this->executeLogin();
|
||||
} else {
|
||||
$this->addMessage(psm_get_lang('login', 'error_login_incorrect'), 'error');
|
||||
}
|
||||
}
|
||||
}
|
||||
$user = $service_user->getUser($user_id);
|
||||
|
||||
$tpl_data = array(
|
||||
'title_reset' => psm_get_lang('login', 'title_reset'),
|
||||
'label_username' => psm_get_lang('login', 'username'),
|
||||
'label_password' => psm_get_lang('login', 'password'),
|
||||
'label_password_repeat' => psm_get_lang('login', 'password_repeat'),
|
||||
'label_reset' => psm_get_lang('login', 'password_reset'),
|
||||
'label_go_back' => psm_get_lang('system', 'go_back'),
|
||||
'value_user_name' => $user->user_name,
|
||||
);
|
||||
return $this->twig->render('module/user/login/reset.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends the password-reset-email.
|
||||
* @param int $user_id
|
||||
* @param string $user_email
|
||||
* @param string $user_password_reset_hash
|
||||
*/
|
||||
protected function sendPasswordForgotMail($user_id, $user_email, $user_password_reset_hash)
|
||||
{
|
||||
$mail = psm_build_mail();
|
||||
$mail->Subject = psm_get_lang('login', 'password_reset_email_subject');
|
||||
|
||||
$url = psm_build_url(array(
|
||||
'action' => 'reset',
|
||||
'user_id' => $user_id,
|
||||
'token' => $user_password_reset_hash,
|
||||
), true, false);
|
||||
$body = psm_get_lang('login', 'password_reset_email_body');
|
||||
$body = str_replace('%link%', $url, $body);
|
||||
$mail->Body = $body;
|
||||
$mail->AltBody = str_replace('<br/>', "\n", $body);
|
||||
|
||||
$mail->AddAddress($user_email);
|
||||
$mail->Send();
|
||||
}
|
||||
}
|
|
@ -1,134 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @since phpservermon 3.0.0
|
||||
**/
|
||||
|
||||
namespace psm\Module\User\Controller;
|
||||
use psm\Module\AbstractController;
|
||||
use psm\Service\Database;
|
||||
|
||||
class ProfileController extends AbstractController {
|
||||
|
||||
/**
|
||||
* Editable fields for the profile
|
||||
* @var array $profile_fields
|
||||
*/
|
||||
protected $profile_fields = array('name', 'user_name', 'mobile', 'pushover_key', 'pushover_device', 'email');
|
||||
|
||||
function __construct(Database $db, \Twig_Environment $twig) {
|
||||
parent::__construct($db, $twig);
|
||||
|
||||
$this->setActions(array(
|
||||
'index', 'save',
|
||||
), 'index');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the profile page
|
||||
* @return string
|
||||
*/
|
||||
protected function executeIndex() {
|
||||
$this->twig->addGlobal('subtitle', psm_get_lang('users', 'profile'));
|
||||
$user = $this->user->getUser(null, true);
|
||||
|
||||
$tpl_data = array(
|
||||
'label_name' => psm_get_lang('users', 'name'),
|
||||
'label_user_name' => psm_get_lang('users', 'user_name'),
|
||||
'label_password' => psm_get_lang('users', 'password'),
|
||||
'label_password_repeat' => psm_get_lang('users', 'password_repeat'),
|
||||
'label_level' => psm_get_lang('users', 'level'),
|
||||
'label_mobile' => psm_get_lang('users', 'mobile'),
|
||||
'label_pushover' => psm_get_lang('users', 'pushover'),
|
||||
'label_pushover_description' => psm_get_lang('users', 'pushover_description'),
|
||||
'label_pushover_key' => psm_get_lang('users', 'pushover_key'),
|
||||
'label_pushover_device' => psm_get_lang('users', 'pushover_device'),
|
||||
'label_pushover_device_description' => psm_get_lang('users', 'pushover_device_description'),
|
||||
'label_email' => psm_get_lang('users', 'email'),
|
||||
'label_save' => psm_get_lang('system', 'save'),
|
||||
'form_action' => psm_build_url(array(
|
||||
'mod' => 'user_profile',
|
||||
'action' => 'save',
|
||||
)),
|
||||
'level' => psm_get_lang('users', 'level_' . $user->level),
|
||||
'placeholder_password' => psm_get_lang('users', 'password_leave_blank'),
|
||||
);
|
||||
foreach($this->profile_fields as $field) {
|
||||
$tpl_data[$field] = (isset($user->$field)) ? $user->$field : '';
|
||||
}
|
||||
return $this->twig->render('module/user/profile.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the profile
|
||||
*/
|
||||
protected function executeSave() {
|
||||
if(empty($_POST)) {
|
||||
// dont process anything if no data has been posted
|
||||
return $this->executeIndex();
|
||||
}
|
||||
$validator = new \psm\Util\User\UserValidator($this->user);
|
||||
$user = $this->user->getUser();
|
||||
$fields = $this->profile_fields;
|
||||
$fields[] = 'password';
|
||||
$fields[] = 'password_repeat';
|
||||
|
||||
$clean = array();
|
||||
foreach($fields as $field) {
|
||||
if(isset($_POST[$field])) {
|
||||
$clean[$field] = trim(strip_tags($_POST[$field]));
|
||||
} else {
|
||||
$clean[$field] = '';
|
||||
}
|
||||
}
|
||||
|
||||
// validate the lot
|
||||
try {
|
||||
$validator->username($clean['user_name'], $this->user->getUserId());
|
||||
$validator->email($clean['email']);
|
||||
|
||||
// always validate password for new users,
|
||||
// but only validate it for existing users when they change it.
|
||||
if($clean['password'] != '') {
|
||||
$validator->password($clean['password'], $clean['password_repeat']);
|
||||
}
|
||||
} catch(\InvalidArgumentException $e) {
|
||||
$this->addMessage(psm_get_lang('users', 'error_' . $e->getMessage()), 'error');
|
||||
return $this->executeIndex();
|
||||
}
|
||||
if(!empty($clean['password'])) {
|
||||
$password = $clean['password'];
|
||||
}
|
||||
unset($clean['password']);
|
||||
unset($clean['password_repeat']);
|
||||
|
||||
$this->db->save(PSM_DB_PREFIX.'users', $clean, array('user_id' => $this->user->getUserId()));
|
||||
if(isset($password)) {
|
||||
$this->user->changePassword($this->user->getUserId(), $password);
|
||||
}
|
||||
$this->addMessage(psm_get_lang('users', 'profile_updated'), 'success');
|
||||
|
||||
return $this->executeIndex();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,209 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* PHP Server Monitor
|
||||
* Monitor your servers and websites.
|
||||
*
|
||||
* This file is part of PHP Server Monitor.
|
||||
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @package phpservermon
|
||||
* @author Pepijn Over <pep@mailbox.org>
|
||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||
* @version Release: @package_version@
|
||||
* @since phpservermon 3.0.0
|
||||
**/
|
||||
|
||||
namespace psm\Module\User\Controller;
|
||||
|
||||
use psm\Module\AbstractController;
|
||||
use psm\Service\Database;
|
||||
|
||||
class ProfileController extends AbstractController
|
||||
{
|
||||
|
||||
/**
|
||||
* Editable fields for the profile
|
||||
* @var array $profile_fields
|
||||
*/
|
||||
protected $profile_fields =
|
||||
array('name', 'user_name', 'email', 'mobile', 'pushover_key', 'pushover_device', 'discord', 'webhook_url', 'webhook_json', 'telegram_id', 'jabber');
|
||||
|
||||
public function __construct(Database $db, \Twig_Environment $twig)
|
||||
{
|
||||
parent::__construct($db, $twig);
|
||||
|
||||
$this->setActions(array(
|
||||
'index', 'save',
|
||||
), 'index');
|
||||
$this->setCSRFKey('profile');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the profile page
|
||||
* @return string
|
||||
*/
|
||||
protected function executeIndex()
|
||||
{
|
||||
$this->twig->addGlobal('subtitle', psm_get_lang('users', 'profile'));
|
||||
$user = $this->getUser()->getUser(null, true);
|
||||
|
||||
$modal = new \psm\Util\Module\Modal(
|
||||
$this->twig,
|
||||
'activate' . ucfirst('telegram'),
|
||||
\psm\Util\Module\Modal::MODAL_TYPE_OKCANCEL
|
||||
);
|
||||
$this->addModal($modal);
|
||||
$modal->setTitle(psm_get_lang('users', 'activate_telegram'));
|
||||
$modal->setMessage(psm_get_lang('users', 'activate_telegram_description'));
|
||||
$modal->setOKButtonLabel(psm_get_lang('system', 'activate'));
|
||||
|
||||
$tpl_data = array(
|
||||
'label_general' => psm_get_lang('config', 'general'),
|
||||
'label_name' => psm_get_lang('users', 'name'),
|
||||
'label_user_name' => psm_get_lang('users', 'user_name'),
|
||||
'label_password' => psm_get_lang('users', 'password'),
|
||||
'label_password_repeat' => psm_get_lang('users', 'password_repeat'),
|
||||
'label_level' => psm_get_lang('users', 'level'),
|
||||
'label_mobile' => psm_get_lang('users', 'mobile'),
|
||||
'label_webhook' => psm_get_lang('users', 'webhook'),
|
||||
'label_webhook_description' => psm_get_lang('users', 'webhook_description'),
|
||||
'label_webhook_url' => psm_get_lang('users', 'webhook_url'),
|
||||
'label_webhook_url_description' => psm_get_lang('users', 'webhook_url_description'),
|
||||
'label_webhook_json' => psm_get_lang('users', 'webhook_json'),
|
||||
'label_webhook_json_description' => psm_get_lang('users', 'webhook_json_description'),
|
||||
'label_pushover' => psm_get_lang('users', 'pushover'),
|
||||
'label_pushover_description' => psm_get_lang('users', 'pushover_description'),
|
||||
'label_pushover_key' => psm_get_lang('users', 'pushover_key'),
|
||||
'label_pushover_device' => psm_get_lang('users', 'pushover_device'),
|
||||
'label_pushover_device_description' => psm_get_lang('users', 'pushover_device_description'),
|
||||
|
||||
'label_discord' => psm_get_lang('users', 'discord'),
|
||||
'label_discord_description' => psm_get_lang('users', 'discord_description'),
|
||||
|
||||
'label_telegram' => psm_get_lang('users', 'telegram'),
|
||||
'label_telegram_description' => psm_get_lang('users', 'telegram_description'),
|
||||
'label_telegram_chat_id' => psm_get_lang('users', 'telegram_chat_id'),
|
||||
'label_telegram_chat_id_description' => psm_get_lang('users', 'telegram_chat_id_description'),
|
||||
'label_activate_telegram' => psm_get_lang('users', 'activate_telegram'),
|
||||
'label_telegram_get_chat_id' => psm_get_lang('users', 'telegram_get_chat_id'),
|
||||
'telegram_get_chat_id_url' => PSM_TELEGRAM_GET_ID_URL,
|
||||
'label_jabber' => psm_get_lang('users', 'jabber'),
|
||||
'label_jabber_description' => psm_get_lang('users', 'jabber_description'),
|
||||
'label_email' => psm_get_lang('users', 'email'),
|
||||
'label_save' => psm_get_lang('system', 'save'),
|
||||
'form_action' => psm_build_url(array(
|
||||
'mod' => 'user_profile',
|
||||
'action' => 'save',
|
||||
)),
|
||||
'level' => psm_get_lang('users', 'level_' . $user->level),
|
||||
'placeholder_password' => psm_get_lang('users', 'password_leave_blank'),
|
||||
);
|
||||
foreach ($this->profile_fields as $field) {
|
||||
$tpl_data[$field] = (isset($user->$field)) ? $user->$field : '';
|
||||
}
|
||||
return $this->twig->render('module/user/profile.tpl.html', $tpl_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the profile
|
||||
*/
|
||||
protected function executeSave()
|
||||
{
|
||||
if (empty($_POST)) {
|
||||
// dont process anything if no data has been posted
|
||||
return $this->executeIndex();
|
||||
}
|
||||
$validator = $this->container->get('util.user.validator');
|
||||
$fields = $this->profile_fields;
|
||||
$fields[] = 'password';
|
||||
$fields[] = 'password_repeat';
|
||||
|
||||
$clean = array();
|
||||
foreach ($fields as $field) {
|
||||
if (isset($_POST[$field])) {
|
||||
$clean[$field] = trim(strip_tags($_POST[$field]));
|
||||
} else {
|
||||
$clean[$field] = '';
|
||||
}
|
||||
}
|
||||
|
||||
// validate the lot
|
||||
try {
|
||||
$validator->username($clean['user_name'], $this->getUser()->getUserId());
|
||||
$validator->email($clean['email']);
|
||||
|
||||
// always validate password for new users,
|
||||
// but only validate it for existing users when they change it.
|
||||
if ($clean['password'] != '') {
|
||||
$validator->password($clean['password'], $clean['password_repeat']);
|
||||
}
|
||||
} catch (\InvalidArgumentException $e) {
|
||||
$this->addMessage(psm_get_lang('users', 'error_' . $e->getMessage()), 'error');
|
||||
return $this->executeIndex();
|
||||
}
|
||||
if (!empty($clean['password'])) {
|
||||
$password = $clean['password'];
|
||||
}
|
||||
unset($clean['password']);
|
||||
unset($clean['password_repeat']);
|
||||
|
||||
$this->db->save(PSM_DB_PREFIX . 'users', $clean, array('user_id' => $this->getUser()->getUserId()));
|
||||
$this->container->get('event')->dispatch(
|
||||
\psm\Module\User\UserEvents::USER_EDIT,
|
||||
new \psm\Module\User\Event\UserEvent($this->getUser()->getUserId())
|
||||
);
|
||||
if (isset($password)) {
|
||||
$this->getUser()->changePassword($this->getUser()->getUserId(), $password);
|
||||
}
|
||||
$this->addMessage(psm_get_lang('users', 'profile_updated'), 'success');
|
||||
if (!empty($_POST['activate_telegram'])) {
|
||||
$this->activateTelegram();
|
||||
}
|
||||
return $this->executeIndex();
|
||||
}
|
||||
|
||||
/**
|
||||
* Allow the bot to send notifications to chat_id
|
||||
*
|
||||
*/
|
||||
protected function activateTelegram()
|
||||
{
|
||||
$telegram = psm_build_telegram();
|
||||
$apiToken = psm_get_conf('telegram_api_token');
|
||||
|
||||
if (empty($apiToken)) {
|
||||
$this->addMessage(psm_get_lang('config', 'telegram_error_notoken'), 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
$result = $telegram->getBotUsername();
|
||||
|
||||
if (isset($result['ok']) && $result['ok'] != false) {
|
||||
$url = "https://t.me/" . $result["result"]["username"];
|
||||
$this->addMessage(sprintf(psm_get_lang('users', 'telegram_bot_username_found'), $url), 'success');
|
||||
return;
|
||||
}
|
||||
|
||||
if (isset($result['error_code']) && $result['error_code'] == 401) {
|
||||
$error = psm_get_lang('users', 'telegram_bot_username_error_token');
|
||||
} elseif (isset($result['description'])) {
|
||||
$error = $result['description'];
|
||||
} else {
|
||||
$error = 'Unknown';
|
||||
}
|
||||
$this->addMessage(sprintf(psm_get_lang('users', 'telegram_bot_error'), $error), 'error');
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue