Compare commits

...

661 Commits

Author SHA1 Message Date
Tim Zandbergen fccc264107
Merge pull request #1183 from viharm/fix/DBUserDetailRetention-LDAP
Retain user data in DB for existing users
2023-08-14 21:31:43 +02:00
Viharm 61afb81554
Cleanup 2023-08-14 05:43:24 +00:00
Viharm 537b17ac01
Merge branch 'phpservermon:develop' into fix/DBUserDetailRetention-LDAP 2023-08-14 06:34:37 +01:00
Tim Zandbergen 5f65f92678
Merge pull request #1255 from RaphaelBergmann/develop
Updated SMSGlobal API URL
2023-08-13 21:59:07 +02:00
Marc Farré 850f0eac8d
Update Octopush.php (#1259)
Update Octopush.php. Now accepting 200 as a valid response code.
2023-08-13 21:55:17 +02:00
Viharm 59966c6cd2
Signed commit 2023-08-13 18:52:19 +00:00
Viharm c81a4a426c
Merge branch 'phpservermon:develop' into fix/DBUserDetailRetention-LDAP 2023-08-10 15:01:35 +01:00
Raphael.Bergmann 7245f65873
Updated SMSGlobal API URL 2023-05-31 15:45:17 +02:00
Samuel Denis-D'Ortun 04a4d959fd
Merge pull request #1119 from RedKage/patch-1
Support for mysql unix socket
2022-04-14 08:27:05 -04:00
Samuel Denis-D'Ortun 015cc9553b
Merge pull request #1184 from phpservermon/dependabot/composer/viharm/psm-ldap-auth-1.1.4
Bump viharm/psm-ldap-auth from 1.1.3 to 1.1.4
2022-04-14 08:18:36 -04:00
Samuel Denis-D'Ortun 462f091c69
Merge pull request #1188 from Germs2004/patch-2
Clarify description of permission setting
2022-04-14 08:16:30 -04:00
Germs2004 7f5b5878da
Clarify description of permission setting
This setting only says it controls which users this server is visible to.  But it also affects which users get notifications when this server's status changes.  This pull request clarifies the setting's description so users will understand that it affects both visibility and notifications.
2022-03-27 16:36:17 -04:00
dependabot[bot] 4693ff3910
Bump viharm/psm-ldap-auth from 1.1.3 to 1.1.4
Bumps [viharm/psm-ldap-auth](https://gitlab.com/viharm/PsmLDAPauth) from 1.1.3 to 1.1.4.
- [Release notes](https://gitlab.com/viharm/PsmLDAPauth/tags)
- [Commits](https://gitlab.com/viharm/PsmLDAPauth/compare/v1.1.3...v1.1.4)

---
updated-dependencies:
- dependency-name: viharm/psm-ldap-auth
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-14 19:00:44 +00:00
viharm 9643ef3f6f
Added additional parameter passed to LDAP auth module for checking existing user data in DB 2022-03-14 17:11:51 +00:00
Tim Zandbergen b18c4d2855
Changed IP from 192.168.50.100 to 192.168.56.100 2021-12-27 23:56:35 +01:00
Tim Zandbergen 460db614f8
Removed double locale 2021-12-12 23:40:33 +01:00
Marc Farré 8dcf5c2666
Update Octopush.php (#1147)
* Update Octopush.php

Now works with the new API V1 : https://octopush.com/en/sms-gateway-api-documentation/

* Update Octopush.php

* Updated send check

Co-authored-by: Tim Zandbergen <TimZ99@users.noreply.github.com>
2021-12-11 01:36:08 +01:00
Tim Zandbergen 74dfeea08b
Add note to db-password containing % causes error
Closes #1154.
2021-12-10 23:10:27 +01:00
Tim Zandbergen d725bd9234
Increased max lenght for post field value
Fixes #1148.
2021-12-10 22:40:14 +01:00
Tim Zandbergen 87dfcd183b
Ignore /.vscode 2021-12-10 22:38:52 +01:00
Tim Zandbergen cc6cece19c
Renamed configfile to prevent confusion 2021-12-10 22:09:50 +01:00
ivnilv 162bba0046
Update and Fix Vagrant development setup (#1111)
CHANGES

- Updated to Ubuntu 20.04 bento vagrant box
- Updated PHP to PHP-FPM 7.4
- Updated MySQL to Percona Server 5.7
- Now runs with NGINX as web server (default vhost kept as before http://192.168.50.100/)
- DEPRECATED: No longer relying on puphpet code (it's outdated and no longer maintained)
- Updated Vagrantfile to use ansible
- NEW: Automation in vagrant is now handled by ansible (see provision.yaml for details)
- A couple of shell scripts to handle "re-running" of the vagrant up command for faster executions ( setup-php.sh, setup-mysql.sh )
2021-12-10 20:57:20 +01:00
Tim Zandbergen b81f173a05
Update FUNDING.yml 2021-09-03 21:02:40 +02:00
Akshay Jain 76d0c276c0
Update User.php (#1135)
https://www.huntr.dev/bounties/3-phpservermon/phpservermon/
2021-07-28 20:04:12 +02:00
Tim Zandbergen 689afca21f
phpmailer/phpmailer update to non-vulnerable version
Does not affect PSM, just a precocious.
2021-06-24 19:48:43 +02:00
scheibling e28192278c
Update FreeMobileSMS.php - Fix encoding bug (#1132)
Fix the URL encoding by changing urlencode to rawurlencode, since the former uses + instead of %20 to encode an URL and is meant for form submissions. Rawurlencode is meant for creating URLs, and should fix bug #1120
2021-06-23 22:47:27 +02:00
Tim Zandbergen 3daa804d5f
SECURITY: Replaced mt_rand with random_bytes
https://huntr.dev/bounties/2-phpservermon/phpservermon/
CWE-1241: Use of Predictable Algorithm in Random Number Generator
2021-06-23 22:06:34 +02:00
Tim Zandbergen bb10a5f3c6
SECURITY: Replaced mt_rand with random_bytes
https://huntr.dev/bounties/1-phpservermon/phpservermon/
CWE-1241: Use of Predictable Algorithm in Random Number Generator
2021-06-23 22:05:58 +02:00
scheibling 32fcb8b0e8
Added Tele2 API (#1130)
* Added Tele2 API

* Fixed mistake, added to readme, added number formatting

Co-authored-by: larsec <larsec@novea.nu>
Co-authored-by: Lars Scheibling <lars.scheibling@hoglandet.se>
Co-authored-by: Tim Zandbergen <TimZ99@users.noreply.github.com>
2021-06-21 22:49:40 +02:00
Tim 6d74c45e0b
Added huntr badge 2021-06-21 22:23:36 +02:00
wilhelch ecc1c6649a
Fixed SMTPAutoTLS Default (#1129)
PHPMailer will always try to connect to an SMTP server via TLS by default regardless of the SMTPSecure Setting. Added a check to set SMTPAutoTLS to false when email_smtp_security is empty.
2021-06-14 23:35:02 +02:00
Unknown 2eb190e07e
Adding LabsMobile SMS Gateway (#961)
* Adding LabsMobile SMS Gateway

* Adding LabsMobile SMS Gateway Reference

* Update LabsMobile.php

Co-authored-by: Tim <TimZ99@users.noreply.github.com>
2021-05-31 04:12:18 +02:00
Denis Stepanov 434159e461
Update uk_UA.lang.php (#911)
* Update uk_UA.lang.php
2021-05-31 04:08:23 +02:00
imsoftware cfe3a6f61c
Make updater.sh more robust #898 (#979)
Integrate updater.sh changes from #898 for more robust updates e.g. for Synology, see: https://github.com/phpservermon/phpservermon/issues/898

Closes #898
2021-05-31 04:06:52 +02:00
Michael 88708240c7
Add error message for missing/invalid header (#1017)
* add error message for missing/invalid header

* Code cleanup

- simplify the check
  - do not invert the result of `preg_match()`
  - do not set the `$result` in loop, it is already set after the loop
- fix the order of code, first set `$this->error` then `$result`
2021-05-31 04:02:20 +02:00
Luke√ 9c8ed81203
Update translation (fix typo issue) (#1125) 2021-05-31 03:57:02 +02:00
TimZ99 c0401fd143
Updated translation
Fixes #1121.
Fixes #1123.
2021-05-09 16:39:30 +02:00
TimZ99 056b429230
Updated minimal version of phpmailer
CVE-2020-36326. PHPMailer 6.4.1 has been patched.
2021-05-09 15:50:42 +02:00
TacticalFreak 617adeea6f
Support for mysql unix socket
This will add support for connecting with a unix socket path to the mysql database.
Users will need to set their `PSM_DB_HOST` the unix socket path starting with an ":" symbol, like so
`:/home/xxxxxx/var/run/mysql.sock`

I stole this way idea of using the database host to store the unix socket path from Nextcloud. They do the same.

Related: https://github.com/phpservermon/phpservermon/issues/1118
2021-05-02 14:08:23 +02:00
TimZ99 de7c62cbce
Fixed typo in array - related to jabber
Fixes #1049.
2021-04-15 02:52:27 +02:00
Michael 600f63097e
Add more variables for webhook json (#1016)
* Add more variables for webhook json

To allow status specific icons and a special Text defined in the json, not only provide #message as variable, but also #server_ip, #server_label, #server_last_offline_duration and #status.

* Add #server_error as additional variable for webhooks
2021-04-15 02:00:06 +02:00
wienfuchs e5b76ca49e
add feature "add url" to email and telegram (#1085)
Resolved #967.

* add feature "add url" to email and telegram

* Added missing brackets

* Changed $body to correct var $message

And changed PHP_EOL to <br>.

* Changed text a little

* Add dutch translation

Co-authored-by: TimZ99 <TimZ99@users.noreply.github.com>
2021-04-15 01:50:44 +02:00
TimZ99 dbd0217053
Updated composer.lock 2021-04-15 01:07:02 +02:00
TimZ99 13b893e1d0
changed whitespace 2021-04-15 01:06:53 +02:00
Oleg Petrov 6281ae07bf
Update updater.sh (#1086)
Allow curl to download file with url redirection
2021-04-15 00:21:24 +02:00
Seti c3a3c3ab2c
Fix: 'Cookies must be enabled in your browser!' message on some pages (#1032) 2021-04-02 00:58:08 +02:00
dependabot[bot] 803519479a
Bump phpmailer/phpmailer from 6.1.7 to 6.4.0 (#1105) 2021-04-01 22:53:27 +00:00
dependabot[bot] 0a54b1444d
Bump paragonie/random_compat from 2.0.18 to 2.0.19 (#1073) 2021-04-01 22:53:16 +00:00
Viharm 17cb13364b
Feature ldapauth (#507)
* Composer dependency added

* Updated code for language and config controller

* Added LDAP auth code

* Added blank discord value for new user during install
2020-12-16 00:21:45 +01:00
hjcday 79ccd15a76
Fix Plivo SMS encoding (#981)
Co-authored-by: hjcday <hugh.day@lsv.com.au>
2020-12-16 00:16:05 +01:00
dependabot[bot] a94f8ca677
Bump symfony/filesystem from 3.4.44 to 3.4.47 (#1062) 2020-12-15 23:14:56 +00:00
Philip 28caad2c85
Update de_DE.lang.php (#1025)
* Update de_DE.lang.php


Co-authored-by: Tim <TimZ99@users.noreply.github.com>
2020-12-16 00:14:05 +01:00
Tim 15edba0f1a
Added PromoSMS
See #1064.
2020-12-16 00:04:35 +01:00
Joseph Helela 54a5e2801c
Adding Infobip SMS Gateway (#1012) 2020-12-16 00:01:10 +01:00
jamgames2 59f4f44107
Update profile.tpl.html (#1050)
- ADD '   type="button"    ' for prevent ' Enter Button ' from keyboard that open telegram activation page.
2020-12-15 23:54:21 +01:00
Lukas 10f111c830
PromoSMS Gateway (#1064) 2020-12-15 23:52:16 +01:00
dependabot[bot] 3a58a562dd
Bump symfony/config from 3.4.44 to 3.4.47 (#1061) 2020-12-15 22:50:59 +00:00
dependabot[bot] d406f69231
Bump symfony/http-foundation from 3.4.44 to 3.4.47 (#1060) 2020-12-15 22:50:33 +00:00
dependabot[bot] 0a7844536f
Bump symfony/dependency-injection from 3.4.44 to 3.4.47 (#1059) 2020-12-15 22:48:52 +00:00
dependabot[bot] 0d44af0ee0
Bump symfony/event-dispatcher from 3.4.44 to 3.4.47 (#1058) 2020-12-15 22:48:38 +00:00
Mario Rothauer 31e987a1d5
Improved german translation (#1071) 2020-12-15 23:48:01 +01:00
Samuel Denis-D'Ortun b59f62c139
Merge pull request #986 from phpservermon/feature/public_page
Public page
2020-11-01 11:09:16 -05:00
Samuel Denis-D'Ortun 3cf9a6e444
Set public to false by default. 2020-11-01 11:08:53 -05:00
Edgar Ostrowski aad1a1eda7
Update of Polish translation (#985) 2020-09-09 11:46:32 +02:00
dependabot[bot] 51949657c8
Bump symfony/dependency-injection from 3.4.43 to 3.4.44 (#1000) 2020-09-09 09:43:59 +00:00
dependabot[bot] 7d31bf7e6b
Bump symfony/http-foundation from 3.4.43 to 3.4.44 (#999) 2020-09-09 09:43:16 +00:00
dependabot[bot] 5dfb66615a
Bump symfony/event-dispatcher from 3.4.43 to 3.4.44 (#998) 2020-09-09 09:41:39 +00:00
dependabot[bot] 30fe2c6dcf
Bump symfony/filesystem from 3.4.43 to 3.4.44 (#997) 2020-09-09 09:41:26 +00:00
dependabot[bot] bc6bd379ac
Bump symfony/config from 3.4.43 to 3.4.44 (#996) 2020-09-09 09:41:09 +00:00
dependabot[bot] ba8c7c1c84
Bump symfony/filesystem from 3.4.36 to 3.4.43 (#993) 2020-08-27 11:26:46 +00:00
dependabot[bot] 799f512a92
Bump symfony/dependency-injection from 3.4.36 to 3.4.43 (#992) 2020-08-27 11:25:51 +00:00
dependabot[bot] 9fa924d0cc
Bump symfony/event-dispatcher from 3.4.36 to 3.4.43 (#991)
Bumps [symfony/event-dispatcher](https://github.com/symfony/event-dispatcher) from 3.4.36 to 3.4.43.
- [Release notes](https://github.com/symfony/event-dispatcher/releases)
- [Changelog](https://github.com/symfony/event-dispatcher/blob/master/CHANGELOG.md)
- [Commits](https://github.com/symfony/event-dispatcher/compare/v3.4.36...v3.4.43)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-26 17:11:41 +02:00
dependabot[bot] af1ddd6911
Bump phpmailer/phpmailer from 6.1.6 to 6.1.7 (#990)
Bumps [phpmailer/phpmailer](https://github.com/PHPMailer/PHPMailer) from 6.1.6 to 6.1.7.
- [Release notes](https://github.com/PHPMailer/PHPMailer/releases)
- [Changelog](https://github.com/PHPMailer/PHPMailer/blob/master/changelog.md)
- [Commits](https://github.com/PHPMailer/PHPMailer/compare/v6.1.6...v6.1.7)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-26 17:10:42 +02:00
dependabot[bot] 2ea03a8650
Bump twig/twig from 1.42.4 to 1.42.5 (#989)
Bumps [twig/twig](https://github.com/twigphp/Twig) from 1.42.4 to 1.42.5.
- [Release notes](https://github.com/twigphp/Twig/releases)
- [Changelog](https://github.com/twigphp/Twig/blob/3.x/CHANGELOG)
- [Commits](https://github.com/twigphp/Twig/compare/v1.42.4...v1.42.5)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-26 17:09:51 +02:00
dependabot[bot] 118d1e624e
Bump symfony/http-foundation from 3.4.36 to 3.4.43 (#988)
Bumps [symfony/http-foundation](https://github.com/symfony/http-foundation) from 3.4.36 to 3.4.43.
- [Release notes](https://github.com/symfony/http-foundation/releases)
- [Changelog](https://github.com/symfony/http-foundation/blob/master/CHANGELOG.md)
- [Commits](https://github.com/symfony/http-foundation/compare/v3.4.36...v3.4.43)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-26 17:09:35 +02:00
dependabot[bot] 474b90c123
Bump symfony/config from 3.4.36 to 3.4.43 (#987)
Bumps [symfony/config](https://github.com/symfony/config) from 3.4.36 to 3.4.43.
- [Release notes](https://github.com/symfony/config/releases)
- [Changelog](https://github.com/symfony/config/blob/master/CHANGELOG.md)
- [Commits](https://github.com/symfony/config/compare/v3.4.36...v3.4.43)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-26 17:08:59 +02:00
Tim fd820dea06
Create dependabot.yml 2020-08-26 17:05:52 +02:00
TimZ99 66983a0a66
Indentation and changed readonly to required 2020-08-26 16:00:27 +02:00
TimZ99 f1df99c5ae
Moved update script to 3.6.0 2020-08-26 15:59:46 +02:00
TimZ99 99bcc90c03
Auto gen password for __PUBLIC__ and hide fields 2020-08-26 15:58:58 +02:00
Tim 36e33b3215
Removed old check
Removal of last admin has been fixed with 3568a570.
2020-08-26 15:17:23 +02:00
TimZ99 e599c18f0b
Merge remote-tracking branch 'origin/develop' into feature/public_page
# Conflicts:
#	README.rst
#	config.php.sample
#	src/includes/psmconfig.inc.php
#	src/lang/en_US.lang.php
#	src/psm/Module/User/Controller/UserController.php
#	src/psm/Util/Install/Installer.php
2020-08-24 22:27:51 +02:00
TimZ99 57e53d77c4
Added PSM_PUBLIC 2020-08-24 22:11:32 +02:00
TimZ99 56b122471b
Added documentation 2020-08-24 22:11:09 +02:00
TimZ99 8cbf2dd7bf
Bumped version 2020-08-18 17:53:26 +02:00
TimZ99 27d9bd6a70
Only __public__ can be anonymous 2020-08-18 17:53:18 +02:00
TimZ99 b94d66bfc0
Added user on upgrade 2020-08-18 17:50:22 +02:00
TimZ99 7d11f7bd1f
Prevent unautorized warning 2020-08-18 17:50:06 +02:00
TimZ99 7745c752d1
Updated docs 2020-08-18 17:49:44 +02:00
Marc Farré ba0fa251e9
Update Octopush.php (#975)
With the low cost default value, SMS are sometimes received many hours after. For a monitoring software, this has no sense, we need to be sure to receive the alert by SMS instantly to repair the problem as quick as possible. Otherwise, SMS is useless, email is free and good enough. Moreover, the price difference between low cost and premium is small.
2020-08-14 17:56:13 +02:00
Daniel Krusky d0f5d18fc4
Added support for Discord using Webhooks (#971)
* Added support for Discord using Webhooks

* Bumped version

* Fixed broken upgrade

* Moved discord below Jabber

* Fixed broken comment

* Added missing translation

* Updated version

* Typo

* Moved Discord under Jabber

* Fixed icons

* Moved Webhook and discord after Jabber

Co-authored-by: Tim <TimZ99@users.noreply.github.com>
2020-08-12 21:33:44 +02:00
imsoftware fe9cdab437
add info about updater.sh (#899) 2020-08-12 21:27:12 +02:00
Dylan Ysmal 74b97db66f
Add Ysmal.fr SMS gateway (#906) 2020-08-12 21:26:28 +02:00
milux 9fe598d774
Increased graph data processing speed (#944) 2020-08-12 21:23:47 +02:00
wienfuchs c090a398d1
change rtime to numerical to avoid DB update conflicts (#963) 2020-08-12 21:11:50 +02:00
Malte Grosse 14f6e491cf
webhook support (#951)
* added webhook support

* Added missing upgrade lines

* Removed todo

* Removed linebreak

* Moved webhook below Jabber

* Fixed description not showing

* Moved webhook below jabber

* Indentation and table name fix

* Bumped version

* Fixed “header already sent” error

Co-authored-by: TimZ99 <TimZ99@users.noreply.github.com>
2020-08-12 19:27:13 +02:00
Alexandre ZANELLI 60955f799e
Adding OVH SMS Gateway. (#953)
Co-authored-by: Alexandre ZANELLI <azanelli@uuds.com>
2020-08-12 15:33:48 +02:00
Marc Farré 97d61a972c
Update Octopush.php (#968)
Replace `urlencode` by `rawurlencode` and `XXXX` by `XXXXX` otherwise you get error 121 (see https://www.octopush-dm.com/en/errors)
2020-08-12 15:31:09 +02:00
TimZ99 f29da63fb8
Merge branch 'production' into develop 2020-08-12 13:12:32 +02:00
TimZ99 5c5d980bd3
Merge branch 'hotfix/fix-3.5.1' into production 2020-08-12 13:12:32 +02:00
TimZ99 be83403834
Added correct version number 2020-08-12 13:11:52 +02:00
TimZ99 e69ae1f375 Security update. jQuery vulnerability CVE-2020-11022 and CVE-2020-11023.
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEoQY/Hc/mmBVC5OarTYJo3GjoM50FAl8zwgcACgkQTYJo3Gjo
 M53YOxAA4hTTVmxr721bXZilKFDblNjGg7GJ8n1eSaa6KsYDfaaFar0M5KLPqwbV
 zupGTZK4GNPAd7lywOQsFJDyQQ1OtlRxJ1sYmSuiSBcsfRj2VfKoH463P01PxuEv
 wmSCCDCe6tdpnS2Fy3rpUL2gQmsZtF1OQatV5m9VgV8BBe9tNPhnAdTA6ZO75ofB
 jtDB2gBl1Tdp6vwNa1oa5I2xl4vgPG5zVT571z7ubIbPG8fNgBjYwu587kwZFDqy
 nvN8atkNA6+CJCrFH67kXw4Ao7r8z0gbhy/85a9gWPSLnn53HYZX65PmPqGsSZQL
 MHE8acu3vERFwDiweJwPYILJNv5+Z2xkrMwOeWXS1LawjlX+VMNkHAX+tHKIBK6M
 g7IhDuW2CNfwB6eiHGXosLPxsGzIIN4I1SLo5zLvGQvDbFKlxO/+YT5ZHCbQPw7P
 tT6umF27ULIxTSAlM/Ray8nbUJkFxi5++tvT1GX2RCexPeeSwmU2xZJDPrqqW8e6
 5VhZdOOjI+yTJVpxcySrVH2d2wDx9IHuYb1ImGq3tUM+PJzwJ4hToln32zB/rKWK
 0kPEU5kiM//09dMyDxOKRGqnIOy1klHw4Rbdf6ZEIEN0okUi5jNq6LkGXut7Eh7U
 //L8A5G8Lu1RAsZ66J5Nt5e47XTR2YA8cDRgz3Fvedw4oZJj020=
 =NTB1
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEoQY/Hc/mmBVC5OarTYJo3GjoM50FAl8zwgcACgkQTYJo3Gjo
 M50kNhAAuOehEe9EwCgSIAVBmoONpEskpX+dgLMCKQa7SX4bRrnXgtqAxEdxxhvE
 alHEJKhx+SEI/m/X0ExUHix8Vrzc3sInWIsxjG51MmHucNMfCwxOmz/sLz/jYER0
 ZHvhUxOafIjpWn0eByOls858aovVd6eNrWJS0c9K8VzNxmTBAjc1sDtkl9deRYjB
 BZ4cT/623OBqI1GEBrrxZIL+FZ573wnruZCWq2fezr72gfI9J4+LZxgVjG80c5n+
 3MsCLkI2KN/1ETd9iOybuoGRhhNKABNaboNssgM7alpAsF4O88F03dNfMD+I1jAd
 fqwGA4R5wJDtahcVwiDfoIqLk0hJIDQ7EwWpCsOPVHmNJmQ8/Iradesq77v4b3qk
 gQCt0lL5zSD6SVjT026EdJ0w5d0fmUTNzEvRgH0PlS3L7GzLxvG7cGDCTJNQK2HH
 mdjJGSHuc+SaM5XzGLOa3FRor+/V9Ljt6rC1ALL6H59u86Ef1d2yeXuz/2Oa6Q8Z
 2rbksZz5+5a8aUCi/1Vh2Lqk3YafvxbMzOU4ZGqEeyqc8vPtBRrt1YCig3J3i+zi
 cllYMWvwZlOYwd0mqA3MzYX8vL0J7WohbvZEtYq2srY3alCdi4RlW0G+HcEYrKjy
 73ti6yN10/bLEBf1P/IWADT6oi0O2SHCbC+3OGgCxbghnSpI5M0=
 =CBnn
 -----END PGP SIGNATURE-----

Merge tag 'jQuery-security-update' into develop

Security update. jQuery vulnerability CVE-2020-11022 and CVE-2020-11023.

# gpg: Signature made Wed Aug 12 12:18:47 2020 CEST
# gpg:                using RSA key A1063F1DCFE6981542E4E6AB4D8268DC68E8339D
# gpg: Good signature from "Tim Zandbergen <TimZ99@users.noreply.github.com>" [ultimate]
2020-08-12 12:18:47 +02:00
TimZ99 69f227216e
Merge branch 'hotfix/jQuery-security-update' into production 2020-08-12 12:18:47 +02:00
TimZ99 dd915ae97b
Updated jQuery to 3.5.1
Fixes #972.
jQuery below 3.5.0 is vulnerable to code injection even when inputs are sanitised. Please see:

[CVE-2020-11022](https://nvd.nist.gov/vuln/detail/CVE-2020-11022)
[CVE-2020-11023](https://nvd.nist.gov/vuln/detail/CVE-2020-11023)
2020-08-12 12:16:50 +02:00
dependabot[bot] 5ecdc75dcf
Bump phpmailer/phpmailer from 6.1.3 to 6.1.6 (#941) 2020-05-27 16:47:48 +00:00
dhanrajbsheth f5db23b1e5
Installer checks for needed PHP functions (#939)
Closes #903.
2020-05-25 21:36:57 +02:00
Mateusz Małek 2a15b31ecd
Ability to pan & zoom on charts (#926)
* Add ability to pan & zoom on charts

* Added map

* Added rangeMax and zoom speed

Co-authored-by: TimZ99 <TimZ99@users.noreply.github.com>
2020-05-25 18:12:43 +02:00
wienfuchs 7deac0815a
changing Windows ping routine back to socket usage, leaving Linux changes made (#938)
* use openssl_x509_parse to parse certinfo (avoid literal case conflict)

* use OS specific ping (CLI/socket)

* Moved Windows and non-Windows check to a private class


Co-authored-by: TimZ99 <TimZ99@users.noreply.github.com>
2020-05-25 18:10:10 +02:00
Tim f02d55635e
Changed ping6 to ping -6 for windows (#936)
Resolving #935.
2020-05-25 14:39:30 +02:00
wienfuchs 07abc7d294
use OS specific ping count parameter (#932)
* use OS specific ping count parameter

* Reorganized and complied with PSR-12

Co-authored-by: TimZ99 <TimZ99@users.noreply.github.com>
2020-05-24 23:40:19 +02:00
wienfuchs 96d0c3fa57
use openssl_x509_parse to parse certinfo (avoid literal case conflict) (#931) 2020-05-24 23:31:19 +02:00
Tim ea33ba07ca
Updated ping check (#919)
Check if transmitted and received packets is equal.
2020-05-18 22:05:19 +02:00
Tim 7856de4bbb
Better fit for bigger screens (#875)
Fixes #857.
2020-05-18 20:43:13 +02:00
Tim a19127721c
Display time in ms instead of seconds (#918) 2020-05-18 19:58:33 +02:00
Mateusz Małek 7f1ea8452a
Fixed issue with choosing user permissions while adding server (#923) 2020-05-18 19:57:37 +02:00
Mateusz Małek de653fce9b
Set custom user agent (#924) 2020-05-18 19:55:05 +02:00
Mateusz Małek 2fd9702485
Add ability to set custom site title (#922) 2020-05-18 19:45:44 +02:00
Mateusz Małek 4894653891
Show recent status logs on server details page (#921) 2020-05-18 19:42:24 +02:00
Tim 6a869aff18
SMSAPI gateway (#920) 2020-05-18 19:41:27 +02:00
TimZ99 875b0208b5
Indentation 2020-05-18 19:41:08 +02:00
Mateusz Małek 72de1479fa
Add SMSAPI to list of supported SMS gateways 2020-05-18 09:10:16 +02:00
Mateusz Małek 586c01136e
SMSAPI gateway 2020-05-18 00:39:50 +02:00
TimZ99 c0e0b260d5
Indent to space 2020-05-17 21:03:42 +02:00
Michael 7daab77f8d
Adjust required php extensions (#904)
af5334a0 introduced the following requirements:
- ext-hash
- ext-json
- ext-libxml
- ext-openssl
- ext-pcre
- ext-sockets

Maybe also the functionality that needs the extension could be
mentioned, so someone that does not need jabber, could install with
`--ignore-platform-reqs` when not having these extensions available.
2020-05-15 17:22:54 +02:00
wienfuchs 7bee25cc1e
Re-adding support PHP 5.5.9/7.0.x (#915)
Resolves #908.
2020-05-15 16:55:57 +02:00
imsoftware 424fca1eb7
change http to https (#900) 2020-05-06 18:24:20 +02:00
TimZ99 9d0f8982b5 3.5.0
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEoQY/Hc/mmBVC5OarTYJo3GjoM50FAl6rbxoACgkQTYJo3Gjo
 M52HGA//cNnwdejAT1S1EHvAyt1oz5tihifeq5PEVTrYD9wzRuoKBMvlE/8dhfzP
 5qwjgBAdmUgLxKhLt5Zi1DjCjBmyZIH2of0cs9TUinBsRerBLuPNQj9VtdoD5aiY
 bj1doiCQRQQ4LGL2LdRDUWmTKmPJprsajlg+RKiTvHEQKJQ8cXDcn3PzosCQqR82
 /Hpf1mApirqPhVkh5LQuKLpEc6l0c2vYIvPaqUVdxZJXFTGDHU4TIBPljfdXk363
 tCyJzLq1cDum7kPRlyEOPewVQt4fAaifSfUaqDB1pdBrL9Pu/Ee8XCnJKRXl53FT
 ogTVBBQURvY4Cee5cigUYeBYSH17dnLlZ4piOupCd2dtzbjC6cfNuvYUOezGBE13
 lMwib1r/qEpU9CLUqsltaH9VQNdyKuLSOv4YBAfT9OFw0gi2Nsbd7PsS8/ymXfz0
 pqL4S0g8l4zSJX+w136Yoc67gvZuobsSwwKEdD6C8At7Li6Pp1yzUxq6+pFlpNPA
 i9ltpHl8UGZlgjTnK3OPowabVadKiFmagUidP5Eeg9hPJqF7may0020r/lehH0/G
 VMPQxoWxbR+xiSspQez/TZ0J7AkZgfAvt/+MLKIwtIvu3J1XlGQiw9yDkSe/vIAM
 OMOaKusmLHjvvSYLFUc336QA6LaBv22PVfG2S/g1JfHbB5MBMeY=
 =Cj+n
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEoQY/Hc/mmBVC5OarTYJo3GjoM50FAl6rb00ACgkQTYJo3Gjo
 M518GRAA3b6JIbqpGEPTTlQhBzOwxqlvzfeOtOU75Z4cdq7en0QNX/NZ0De7yi0u
 8UOQXs9i5zfbWnAnaf0wHCZTN5YvzP7ZRKel96S7v15oOOz362JC9UVfbfiI7n6f
 oavWqXVfGweJk4o7Rs9odB5QJttEPGHk15MYrqWOyKqnRS7zyqzZrDPIPT+uG9o+
 b6PJ4egE+lQVTrRABmrsNlY7ydyEe9+NHIl3Sn/cUXbncDAIqzo89OxK5g43Mdzr
 XDAOgTitCimzXI+7DLCgXoBzpaMCinhmYCMihTLSYWs+I46eiqbLD+Ce/W9wIeSE
 Sm/XKH8a9yUXWlWrbzwl3YvwDIPDhoRSgh++9y4DnZohBmePcnMC7zKlFVEh36sy
 8/swcglEUcSJ3fe1+D2VetseeQDWTFARxDtAUL0iuHrwx5HwL7zTrB8tboth/t5X
 xSb367zWPsWRmgBkQF8yYHJWSQ3lJ38YbrE3qCRTiW+HfRsNMuy/QMRqT3tyBo9D
 0PJvjEwtZUI83e4nEPwCilJ3hgLmCsZgbHDQ6BRYyFQv/j/NWMa77zhdd1rWCXEX
 1bkCR4B9K+FBjBmoLk3Jke934L5mARfWK/i9P/TXYsssRmIhrUGrG3yRGzX0qxgX
 7ZvGx69Qy17+V3udgtH4ulXd9MguYaxtUJtJ5ciNIP3Uem8nsbA=
 =4ytI
 -----END PGP SIGNATURE-----

Merge tag 'v3.5.0' into develop

# gpg: Signature made Fri May  1 02:36:42 2020 CEST
# gpg:                using RSA key A1063F1DCFE6981542E4E6AB4D8268DC68E8339D
# gpg: Good signature from "Tim Zandbergen <TimZ99@users.noreply.github.com>" [ultimate]
2020-05-01 02:37:33 +02:00
TimZ99 5e4413bb2e
Merge branch 'release/v3.5.0' into production 2020-05-01 02:36:41 +02:00
TimZ99 76687d8c45
Bumped version to 3.5.0 2020-05-01 02:36:18 +02:00
imsoftware 02c746ae41
Set php5 support to 5.6+ (#891)
See bug report for php 5.5.9: https://github.com/phpservermon/phpservermon/issues/889
Fixes #889.

Co-authored-by: Tim <TimZ99@users.noreply.github.com>
2020-05-01 01:17:48 +02:00
imsoftware 6c5665d0cd
Added link to server at single view template (#890) 2020-04-22 16:05:46 +02:00
TimZ99 58d73bda37
Bumped version 2020-04-22 15:57:56 +02:00
TimZ99 7968e876c4
Fixed doc 2020-04-22 15:53:42 +02:00
Petr Suchy af5334a073
Jabber (XMPP) notifications (#852)
Added Jabber/XMPP notifications.
Closes #829.
2020-04-19 15:31:40 +02:00
Flávio Gomes da Silva Lisboa 63673b7641
Fixed fail in service monitoring for IPv6 #881 (#882)
Fixes #881.
2020-04-19 14:43:08 +02:00
Flávio Gomes da Silva Lisboa b346cd9c4d
Fixed fail to ping IPv6 #879 (#880)
Fixes #879.
2020-04-19 14:41:29 +02:00
Michael 1358929958
Prevent loading main page if installed in subdirectory (fix #869) (#870)
When installed in a subdirectory the service-worker should not load (and cache) /.
2020-04-19 14:30:13 +02:00
mklemme1 bd6510b188
cron update over the web via secret key (#888)
As an alternative to allowing cron by IP.

Co-authored-by: Michael Klemme <mklemme@mklemme.de>
2020-04-19 14:19:33 +02:00
Tim 40dc6fe64a
Added Paypal and bunq
bunq is a dutch bank.
2020-04-19 12:59:02 +02:00
Tim a129d88167
Disable web page preview for Telegram (#886)
Resolves #883.
2020-04-08 13:43:36 +02:00
Rich B ec21df1555
Corrected grammar in Telegram activation message (#885) 2020-04-08 13:20:15 +02:00
TimZ99 ee16078884
Delete button on server edit
Fixes #860.
2020-03-15 21:34:27 +01:00
TimZ99 86bff4dbae
Removed English translations 2020-03-15 21:12:27 +01:00
TimZ99 11b1850754
Updated style sheets 2020-03-15 17:49:32 +01:00
TimZ99 951586d77d
Misplaced user dropdown
Fixes #867.
2020-03-15 17:45:40 +01:00
TimZ99 be928f8241
Fixed delete server dialog
Fixes #873.
2020-03-15 17:34:26 +01:00
TimZ99 02f8484b3b
Set sender's phone number to max 15 characters
E.164 standard.
Fixes #866.
2020-02-11 20:11:07 +01:00
Tim 098a552774 Update issue templates 2020-02-09 20:29:38 +01:00
TimZ99 39be47d573
Hide icon if it's globally disabled
Closes #858.
2020-02-09 20:19:08 +01:00
TimZ99 7ca93c40a6
Hide port for ping
Closes #859.
2020-02-09 19:57:31 +01:00
TimZ99 c6e53b9a6f
Added missing pushover and telegram description 2020-02-09 19:48:07 +01:00
TimZ99 7efffff40e
Added target _blank to external urls
Resolves #862.
2020-02-09 19:47:28 +01:00
TimZ99 019d4050ac
File mode changed from 775 to 644
Fixes #863.
2020-02-09 18:04:26 +01:00
Petr Suchy 3193665ef8
Encrypt email_smtp_password (#854)
Fixes #853.
Email_smtp_password is saved encrypted and not as plain text.


Co-authored-by: Tim <TimZ99@users.noreply.github.com>
2020-02-09 17:45:08 +01:00
Michael 1d779760ce
Improve accessibility of cards and tableview (#851)
To enable keyboard users to show server details the links are added as
HTML `a` Tags not only for <noscript> variant.
This also improves accessibility as screen reader users usually are not
able to perform click events on div elements. The do not even know there
is a click event handler. Click event handlers only work on buttons by
default as browsers forward the keyboard activity on buttons to the
onclick handler.
2020-02-09 15:40:45 +01:00
TimZ99 ed6ef89df5
Hotfix - sslCheck warning days
Minimum amount of days the ssl cert needs to be valid before expiration wasn't used.
2020-02-09 15:16:23 +01:00
Tim 19fb244592
Hotfix - check ssl (#850)
Fixes #849.
Check ssl just when other error is not already in
CheckSsl should check PHP_VERSION and not PHP_RELEASE_VERSION
2020-02-09 15:12:07 +01:00
TimZ99 7ffc75598a
Refactor 2020-02-09 15:10:07 +01:00
Tim 11d2d4bba8
Fixed version update check (#848)
Fixes #847.
2020-02-08 21:11:34 +01:00
TimZ99 51dbbf9510
Refactor 2020-02-08 20:57:53 +01:00
Ing. Petr Suchy 5934e9a25c
*fix - checkSsl should check PHP_VERSION and not PHP_RELEASE_VERSION 2020-02-07 08:03:12 +01:00
Ing. Petr Suchy 8fa1bf6c0d
*edit - check ssl just when other error is not already in 2020-02-07 07:59:50 +01:00
Ing. Petr Suchy e32977ffff
*fix - check and update latest version 2020-02-07 07:43:16 +01:00
Tim 45d1c03e5a
Feature/ssl cert expiration check (#831)
Added ssl expiration to warning state.
2020-02-04 16:44:48 +01:00
Petr Suchy 442f9d115e
Added Separate check when server is down (#844)
Future request - separate checks when down.
Closes #755.
2020-02-04 16:41:34 +01:00
Nayef Alebrahim 3568a5700b
Fixed removing and demoting last admin (#841)
Fixes #824.


Co-authored-by: Tim <TimZ99@users.noreply.github.com>
2020-02-04 16:16:30 +01:00
Petr Suchy 71c4114747
Fixed psm_password_decrypt
BUG: HTTP2 Authentification
Fixes #706.
2020-02-04 15:44:11 +01:00
TimZ99 676e80d42f
Improved servers table layout
Fixes #779.

Co-Authored-By: James <jigr1969@users.noreply.github.com>
2020-01-15 23:15:30 +01:00
TimZ99 0550ff7dcf
Added ping error 2020-01-15 10:33:47 +01:00
TimZ99 6ba4b59239
Changed ping from socket to exec function
As there are a lot of problems with permissions and ping, the function now uses exec(). Resolved #405, #576, #614, #748.

Co-Authored-By: Sean Perryman <se@nperryman.com>
Co-Authored-By: Luke C <crawford.luke@outlook.com>
2020-01-14 20:12:40 +01:00
Tim d7536d209e
Add Traditional Chinese Language File. (#618)
Translate all contents according to v3.3.1 version
2019-12-19 20:29:14 +01:00
Tim 50b5a6937b
Update zh_TW.lang.php 2019-12-19 20:26:26 +01:00
Tim 620ab023f9
Update zh_TW.lang.php 2019-12-19 20:19:41 +01:00
TimZ99 ae6367b2a0
Changed page to status page 2019-12-13 14:13:15 +01:00
TimZ99 a9f0f64c78
Public server page 2019-12-13 14:13:04 +01:00
TimZ99 95d30f9619
Fixing indentation 2019-12-12 21:34:55 +01:00
Tim ed4b3e2fc7
Fix Server Downtime is displayed incorrectly (#825)
Server Downtime is displayed in correctly when receiving e-mails about it.
Closing #810.
2019-12-12 19:58:17 +01:00
Tim 07243f4cb5
Merge branch 'develop' into patch-1 2019-12-12 18:32:29 +01:00
TimZ99 97f8a6d637
Refactor
Removed unreachable code

Removed useless method overriding
2019-12-12 17:52:36 +01:00
Jeremy GHYS b7426291f8
Fix Server Downtime is displayed incorrectly
Server Downtime is displayed in correctly when receiveing e-mails about it.
2019-12-12 17:26:42 +01:00
TimZ99 7fbab86064
Set target shell 2019-12-12 17:07:21 +01:00
TimZ99 084dd59b84
Removed not translated parts 2019-12-12 16:52:23 +01:00
Tim 8d5935fe86
Delete custom.md 2019-12-11 23:01:12 +01:00
Tim 480efb9e48 Update issue templates 2019-12-11 23:00:33 +01:00
Tim cb806361ed
Ukrainian translation (#821) 2019-12-11 21:51:55 +01:00
Tim dd6d9973fe
Implementing the PSR12 standard
Just updated it to the latest commit.
2019-12-11 21:48:29 +01:00
TimZ99 0a5a8c02f5
Implementing the PSR12 standard
Using PHPCS and PHPSBF.

For language files also used PSMLE.
2019-12-11 21:27:14 +01:00
TimZ99 2c51ad12f7
Implementing the PSR12 standard
Using PHPCS and PHPSBF.
2019-12-11 21:27:04 +01:00
Oleksa e415d0fa41
Translated admin_cant_be_deleted 2019-12-11 12:59:44 +02:00
Tim 01423d58fd
Update credits.rst 2019-12-10 20:35:27 +01:00
Tim 235f848d16
A few cosmetic updates and added new translation 2019-12-10 20:27:48 +01:00
TimZ99 0c91d27a70
Fixed Error QUERY_STRING on sign in
Added default value for QUERY_STRING.
2019-12-10 19:51:20 +01:00
TimZ99 7f5e698752
Fixed #811 DB wrong field type on fresh install.
Added the first part with #770. Forgot to  add it to the fresh install function.

Also removed the default value for TEXT as TEXT can't have a default value.

Co-Authored-By: Matěj Kmínek <matej.kminek@attendees.eu>
2019-12-10 19:43:42 +01:00
TimZ99 d7ea421d5c
Fixed #822 website auth setting not showing
Wrong variable was used.
2019-12-10 18:59:40 +01:00
TimZ99 420211f61f
Fixed #816 url validation 2019-12-10 18:09:56 +01:00
Oleksa 32ab865ae0
Ukrainian translation 2019-12-09 12:57:22 +02:00
TimZ99 24ee6d02c4
Fixed false trigger_error() after redirect.
Resolves #814.
2019-12-03 00:34:01 +01:00
TimZ99 a53fc2a53e
Updated composer.lock and .json
Added minimal version for symfony/http-foundation.
Updated the lock file.
2019-12-02 23:38:06 +01:00
dependabot[bot] df1185b10c Bump symfony/http-foundation from 3.4.27 to 3.4.35 (#815)
Bumps [symfony/http-foundation](https://github.com/symfony/http-foundation) from 3.4.27 to 3.4.35.
- [Release notes](https://github.com/symfony/http-foundation/releases)
- [Changelog](https://github.com/symfony/http-foundation/blob/master/CHANGELOG.md)
- [Commits](https://github.com/symfony/http-foundation/compare/v3.4.27...v3.4.35)

Signed-off-by: dependabot[bot] <support@github.com>
2019-12-02 22:53:52 +01:00
Tim 1c9f017f61
Create FUNDING.yml 2019-11-30 00:28:55 +01:00
ICTman1076 93ceb42a10 Hopefully fix #704 (#791)
* Fix #704 - use regex instead of PHP's own function

* Updated .ltd length to 12

For domains like .company .services .business.
2019-11-29 23:44:26 +01:00
sumarsono aad4e2913d Make telegram instruction more clear (#806) 2019-11-29 23:41:06 +01:00
Travis Botello 7e3cbc94a9 Replaced mcrypt with openssl (#678) (#805)
* Replaced mcrypt with openssl (#678)

* Removed TODO
2019-11-29 23:32:09 +01:00
TimZ99 627a93cc7c
Added cachebuster
Resolves #802.
2019-10-22 20:39:33 +02:00
sx404 0969f4043e Increased password length (#796)
Fixes #786.
Increased password length drastically.
2019-10-10 14:35:53 +02:00
TimZ99 d40df0c024
Fixed typo
Fixes #797.
2019-10-10 14:33:05 +02:00
TimZ99 030b2b3c2f
Prevented removal of last admin
Fixes #687.
2019-10-10 00:03:56 +02:00
TimZ99 e47e0fca80
Added .DS_Store 2019-10-09 22:26:32 +02:00
TimZ99 0198d76a75
Added default timeout
Fixes #794.
2019-10-09 22:03:53 +02:00
TimZ99 cf2566d1d3
Fixed undefined index issue
Fixes #792.
2019-10-09 20:59:32 +02:00
TimZ99 25e8cece3c
Bringing back the warning state.
Fixes #790.
2019-10-09 20:39:15 +02:00
TimZ99 43c60867b3
Improving accessibility
Comming closer to WCAG 2.0 AAA.
2019-10-09 20:33:59 +02:00
TimZ99 a0cdcffabc Fixes #787.
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEoQY/Hc/mmBVC5OarTYJo3GjoM50FAl2SJp0ACgkQTYJo3Gjo
 M53eBQ//SxXlQCJ2/DSFeGqhb4GxJ/9pJsqHSm4BD7c2qBqPK8EcN5i9mGwGs0vd
 RvJemxlGXcIL6NGb3Az21ZbADb065OtSzrH+23yyEATyBl5t9N0HPUdK0uibKaT3
 fwXs7ekQ9Y7eSHEVIqgSnjc7/W9rEG2ljH7HQ/nOaX4tKT6GgY60YZfyeUTlYw43
 zvb1XStYc9RCE+/RY7Ei8HurOPXWui1iNoin2b9C1+46CA8GDQifITA/9CBdBvKU
 1hacA+jsRenX6f8yxfR6LPmD5sbMhyuO+d1GuccCZtqe4yGoR2DOsyr+HeyhFnTL
 Dh2sf5iMXg+ja1N8XNHIceruJEJw+ndmmIwkltHPx6IqkHZsI4KgLIrZg34jt7vm
 JmkmTqYp70TMq32BNliNJzaU4iFCDw5Vr1r1vIuCE/8es/5UuxchNrBS34elJ75L
 l6Hns2wwH1RKYGyZIyIrm7lHBy0f45JnPdeQG7V+nb40Bne+fj8R40rV0HWwHMZv
 nU6FqalAwtxn7+GXDVbtWLgFnHzRCfi9oE281OmzcbRqNeUusPnTJ1D/cC4o8wLA
 JupDJoxqa/3ClA/I3iin/d/5wmQejmsdOKhN0+Fc/BIOE5priRdRuIdjPxzvW8Kn
 v8xktvfPhhEAZiHlcVUhDhHoIc0IlFWy5ZwV8Sh2UCt60m6sOPM=
 =pFGT
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEoQY/Hc/mmBVC5OarTYJo3GjoM50FAl2SKWMACgkQTYJo3Gjo
 M52I+RAAoC2Rd2ZjW/JZo4sCcrvuQOdE+Q4JNVveA6XguEOeRIIR/UkCJpQdjlTC
 3V5xfJ9apjSd95cqU+HiJ0+7xrBUSE2F1SvS2hDV1SRbL2b5Xoy7k5Eodvlrx+EH
 xd71Y1Vhhu0yTtmTB5Wz4dHE5qi4NGHM5KdqKxmbpSv7rlZFRKv8QdRS91oK91Hw
 t2Gx/uoZ2ldIb3N/VA+iMUUBh9QaiXUH2DcUJ6WM0ErqaMclPrLD7fIq4UMS5pTZ
 DwKIWfC8euVQfjUf/srbTqy2x+b2wnVoLa7Hi39uUOTvpiPUyjXoJ1Xtx0HHcOH4
 kfElv2W8mXBltvkbinix+NUYUC9iLFcyJ9e7Cpwhl+b/zjlpRPYS0TS9/gyLbkoS
 pUS7T8/F8b3GdscXHa1FK99NR5fhEVzZ6FkqodGBa618GQJbJLRsHEhDTVtv6Dp+
 abdNOeUO1XfWkg2CIN9ebEbKG0zrv8b9zbxKWKYNiJvRtZuIeNEdVekIJBjStrZi
 Q4w+/sjsO/mIx0Uq2P7lZ+6gbMpeJ88vlQhu2PgDTkxrbjy7f3S26NQ5ORiQJwsC
 E2e3SMuqrawkPlsKWpEa+sixmej6OXObt748gFs2DHhMf9Pd7ajBo+uHknDcEE+/
 ShDI73LNejOjDSthZXiq4UOL+zv72795Czgsrx9HAatfYZ1Cqjg=
 =f2Sw
 -----END PGP SIGNATURE-----

Merge tag ‘v3.4.5’ into develop

Fixes #787.

# gpg: Signature made Mon Sep 30 18:00:29 2019 CEST
# gpg:                using RSA key A1063F1DCFE6981542E4E6AB4D8268DC68E8339D
# gpg: Good signature from "Tim Zandbergen <TimZ99@users.noreply.github.com>" [ultimate]
2019-09-30 18:12:19 +02:00
TimZ99 ee5076a2ac Fixes #787.
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEoQY/Hc/mmBVC5OarTYJo3GjoM50FAl2SJp0ACgkQTYJo3Gjo
 M53eBQ//SxXlQCJ2/DSFeGqhb4GxJ/9pJsqHSm4BD7c2qBqPK8EcN5i9mGwGs0vd
 RvJemxlGXcIL6NGb3Az21ZbADb065OtSzrH+23yyEATyBl5t9N0HPUdK0uibKaT3
 fwXs7ekQ9Y7eSHEVIqgSnjc7/W9rEG2ljH7HQ/nOaX4tKT6GgY60YZfyeUTlYw43
 zvb1XStYc9RCE+/RY7Ei8HurOPXWui1iNoin2b9C1+46CA8GDQifITA/9CBdBvKU
 1hacA+jsRenX6f8yxfR6LPmD5sbMhyuO+d1GuccCZtqe4yGoR2DOsyr+HeyhFnTL
 Dh2sf5iMXg+ja1N8XNHIceruJEJw+ndmmIwkltHPx6IqkHZsI4KgLIrZg34jt7vm
 JmkmTqYp70TMq32BNliNJzaU4iFCDw5Vr1r1vIuCE/8es/5UuxchNrBS34elJ75L
 l6Hns2wwH1RKYGyZIyIrm7lHBy0f45JnPdeQG7V+nb40Bne+fj8R40rV0HWwHMZv
 nU6FqalAwtxn7+GXDVbtWLgFnHzRCfi9oE281OmzcbRqNeUusPnTJ1D/cC4o8wLA
 JupDJoxqa/3ClA/I3iin/d/5wmQejmsdOKhN0+Fc/BIOE5priRdRuIdjPxzvW8Kn
 v8xktvfPhhEAZiHlcVUhDhHoIc0IlFWy5ZwV8Sh2UCt60m6sOPM=
 =pFGT
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEoQY/Hc/mmBVC5OarTYJo3GjoM50FAl2SJp0ACgkQTYJo3Gjo
 M50NChAAw6AmU65F2iX13012HNyatNP6U2Pf+zu6944j5WZpmbuagD9jdmdBXWM4
 SA8BIz1AnZUAcXp2gay4B0Flg/9yK7idBSyhpZ+vgBp13oxAk3r+gdH3ytGnyKGJ
 USnrFINyKmQi82Qx4rBtmbAly7XqeyNiJWaE3auysBKixLxfhssydBvhXRIQvlpD
 ytLgaDETUg6w1huWfSusgPlccYT3vBJhQg5AA9M5pXfGZSEohPlpTyyF/l9Td7zg
 jIRhsbIcHqACG7PD4WwfWbkma7kTRjfV8J2HANNdISrcE1N8uc1WqTbMgrW9xouv
 PbcwuO+VAfynBWbtA45JNuzOU8/2gb9o3QNC5TdLN/tAubergz7K2k//du1idA5u
 MQTBXAqiVD5CXSkzaN/3Kp0VPHz2y1CnDYUlRtPlWRPiGiCpl1AtWcA4wm/NfGGa
 jbyDO4Zvt2XHgq010c+f92JTsqyTttWr6tRk/nhcs4/fjONPpz7LHduKqr/HsZuE
 ubX0HRRpEQFYCYeic9Bn17I1OhGJqhcOipmRwrY8uq4rpzLJ8nq0KoYw6te4DSa9
 rHxAuG5PRx1mx19lT1+OZEmxC45E61CRSwFpjFwZGrsj8Ik2tS3ycX704D5tn1kG
 H5s2D9JAk4VlILq6Fu59F0coZnP5NRRnyTu9W+ScSCQise87vsY=
 =Y51m
 -----END PGP SIGNATURE-----

Merge tag 'vundefined-index-787' into develop

Fixes #787.

# gpg: Signature made Mon Sep 30 18:00:29 2019 CEST
# gpg:                using RSA key A1063F1DCFE6981542E4E6AB4D8268DC68E8339D
# gpg: Good signature from "Tim Zandbergen <TimZ99@users.noreply.github.com>" [ultimate]
2019-09-30 18:00:29 +02:00
TimZ99 065d7c00f4
Merge branch 'hotfix/undefined-index-787' into production 2019-09-30 18:00:28 +02:00
TimZ99 56587826a3
Bumped version to 3.4.5 2019-09-30 17:59:24 +02:00
TimZ99 a8eaedc817
Fixed undefined index
Fixes #787.
2019-09-30 17:50:20 +02:00
TimZ99 86b75c3068
Removed unsused css 2019-09-26 19:49:26 +02:00
TimZ99 7316355658
Changed to ‘local - English’ 2019-09-26 18:48:29 +02:00
TimZ99 dc45eee0d3
Fixed update message 2019-09-26 18:36:17 +02:00
Rémy Lebrun 6fd71e1d55 Correction FR translation (#668) 2019-09-26 18:21:23 +02:00
Emmanuel RABOTTEAU 884a563e6a Update fr_FR.lang.php (#776)
- Added and translated missing string in 'system' array
- Updated translation of 'level' in 'users' array
- Added and translated missing string in 'users' array about Telegram
- Added and translated missing string in 'log' array about Telegram
- Added and translated missing string in 'servers' array
- Added and translated missing string in 'config' array
- Added and translated missing string in 'notifications' array
2019-09-26 18:00:59 +02:00
TimZ99 f84061ee14
Get latest version from Github.
The latest version number will now come from Github instead of phpservermonitor.org.
2019-09-26 14:07:16 +02:00
TimZ99 0fd889ebee
Merge branch 'release/3.4.4' into production 2019-09-26 13:16:16 +02:00
TimZ99 5c1d6d1f93 -----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEoQY/Hc/mmBVC5OarTYJo3GjoM50FAl2MngAACgkQTYJo3Gjo
 M51T8xAAm85oyesm5ifzNPP2vUQPXFxMmkeErT4jeGknX3GiuyXqwib1R49Uy3BZ
 UiJy5zQBKU/RJ/0s3i5S9+7OnNr3bXEYR1mMb/e/MH08UQY/xXf42AOjDtlNmn45
 898pjYWVuCI/ETK3ujPm75pd5V7q9ma4+BXSLRtnpSpNWcDjkSPBz/gE6MvodBGB
 tLayJHPs/xexNh0AnYWwbx+qG2jtDeDQwrg39SITlAd19yq/kEoJXNMez0IllI75
 HQqX/778y2NglEsHL3zhC4QoyrzOd1fskQ77uo5rNJWuJ/Ckf+PM1bNFjBFNyOVP
 rjUzwyBM5SbGcF0dh1LjJEpvisQ3ELLQTOY+tIFG9aMPOvgIUfom7ADNaaY2Yugq
 fxzOqHciAC2Dn+My9RnyhEiDaGABPOlt7cpZWMQtl1IdYGOju0bE+GJ3skkTwNgj
 dV2TsNQ7Diy62JMyO2kpS4fRy49KKmw68O79wsNnAsmDK7TFj5yCMCZkx6XqR5N+
 kYXtfD7DMRzpElr1jge0tU3ju8Iaz5HDWiQAMgm5QPjtGeWpkrFjDE65uizyb0lD
 eSU5qikWywxoBXGKIUoWl+O2YNT8mCJx6iMJuHV5dlaawQg8yQbjC4zewmbmx6Li
 2+IwycAe4emVgbylFHHd1REB93jpp4d6dsgGfQHg2k63wOGGt50=
 =E6Jq
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEoQY/Hc/mmBVC5OarTYJo3GjoM50FAl2MngAACgkQTYJo3Gjo
 M533mw//W3Jq+D5l4JU4Ljcn9XdN0g4+a6GkJXA5YgAMxqt67ToIRBUtoFobatG8
 gd3fefebBlfUnYe7joq61XF0j8HeUkWoxW5liXaequZRzUI/16jKUfCK4IVM/5iG
 2+cFphdtVx6MIf6581hPuTYb4pgdKlFU0QOzD80lKXx7eeQzHtUY2R6QtzkGMfqO
 /DhkTH2/NbgRvzL8suKrc2Uuc/Il20GzdxjCxfV8L2ac/tkEKYA+UYrKmJC2xeIS
 Da8ISef9S8CwRm6vl5cEqMZco9FIRdlSAVidPa06akOpczLMMqk1g2gzWCvAaoJc
 NnhkU09Ztwa+bm23aB5RLm4naDLLxYtFm0yh8FsFVra9KUTcWTUi/n4YNHTQ1ttv
 R0K5tPecezfMHdrkgaD+vv4m601MySF24k950DGjuSyvx7D9iXYQspQoFEsZrr9h
 6pDPGxJNH3qLSXRrX1raKf5ZAaWM909ZeTawD06cWGo+jDEkYMJCooZOlkNW+p0h
 T0JMFmw0jOie6eyNfCG4rpRX2ID4VgtANYvbUM1HrObkreWtc7qflGWDQ2eSygV/
 A74LOVPQJlVM+zxiVVBRHvU3iTTpO34r7cWqyNO2svDjCUE66vF4J82js79RrMbR
 /UF0iFppB1TNhjOhlSZiiKOgxl9tokm7yeOsAiSsZhMUkyjK3rQ=
 =ef1N
 -----END PGP SIGNATURE-----

Merge tag 'v3.4.4' into develop

# gpg: Signature made Thu Sep 26 13:16:16 2019 CEST
# gpg:                using RSA key A1063F1DCFE6981542E4E6AB4D8268DC68E8339D
# gpg: Good signature from "Tim Zandbergen <TimZ99@users.noreply.github.com>" [ultimate]
2019-09-26 13:16:16 +02:00
TimZ99 b0df0e77bf
Bumped version to 3.4.4 2019-09-26 13:15:34 +02:00
TimZ99 932c695f4d
Fixed selected view in graph
Fixes #782.
2019-09-26 13:02:01 +02:00
TimZ99 6aca2e1077
Fixed auto refresh with wrong layout
Fixes #783.
CSRF used old inputfield.
Update pagelayout after update.
2019-09-26 12:52:14 +02:00
TimZ99 9f3e140b29
Changed file path to new path
Moved to src/templates/default/static. Should have been in b0ea45a.
2019-09-26 12:47:55 +02:00
TimZ99 29adce2608
Removed old static directory.
Moved to src/templates/default/static.
2019-09-26 12:40:33 +02:00
TimZ99 9b6bf5a783
Merge branch 'release/3.4.3' into production 2019-09-26 00:53:00 +02:00
TimZ99 fb31859a90 -----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEoQY/Hc/mmBVC5OarTYJo3GjoM50FAl2L78wACgkQTYJo3Gjo
 M521Lw//TmOikoBCq+CKSKKEITsGIik0lgG1irZS8BkFMxv77DF/O3UXHNJv4K51
 +LyJTgvqCB5vna2x54oOdE9FkUhTd8GKkxSSgDDJ/VH04f0vBsj90/Fn5ugsfSkG
 UsztkyV80pSSumA8gE3YI+MPm5ckH9Kh33U6lubQbC6NcPnPauNlJfPvX7GHjMLE
 hH6VnmiMpkvrPxcRN0TVvdbaQTXy40IlJEjhlR0I0Pp3lD4zvyj6Bg2hiO0coQe7
 /P1wkaMqZCvHrqtuGdAjCOOxHBd3/LEKVOdF/01QESzqb0bU4x/wI3f4F9+aIjue
 SfW6DNb3fEHD6Zc/f5fihkxyLyQbJ3qsquq5w/BOA+/Bu90ZKl/+n23m/dWSxMKE
 gEPT3BEqCz/lTVw+BdWvJq+TaKg87XktyJ9VitdCVH/R6mpJ1DJxXOo7D8fvZwOG
 KrPINDsrDcTpCp8u+daTj1DTpKxleZHIgiYqMPNEW/EjOu4LybXVAIje2Mj4AESV
 t6QrjDReNHfRbqZF1Q7d3Sagp3KO6IeLEXNL0SKPnguwnD/OEsXTeG4crMExRZgp
 B4nzMvnGogSGziLZlKZ3GQ3dXXFyf2dWsg1blSaBeTiUNEt0MjXf0TkUSm378Zyg
 RT7uo1lJji2rJXc0wXfVwvlbVda/wcmL9dNeTlFqiQQ+dUP1ujI=
 =g+da
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEoQY/Hc/mmBVC5OarTYJo3GjoM50FAl2L78wACgkQTYJo3Gjo
 M532QQ/+OTLMf995YzFaN8HDrEVITSWjw+2XYWQOfVGOatVmXrWJvQ4c9Hb4dBcS
 97a6MTteCdBBn7bMdw1elZ6GzQ01WvT2YUHVibCBNL+f6U4BXHeaaIeoNEuttf8t
 ex8bLQa1qrxDs1xz13j5KQWNWmAC2x4GEEgvWEGFXuHgZk+XgP5KYEzsdhxygCMO
 Nf5hNbLkKP49aZQi2xM7eIHasCDa7ePsWd8QuPIE1qc0IO4JjwDQujmxtHmb+mvq
 OB7Uuni8ir3EZmUnnEFS6dt5JKxwjKhRQmV5qDbM4gu/1D0TnePQ8mNicnt+3Q6c
 M2DDyWjLdE2pnFpLtvTRN3NLz+kDMbr+G71ahBOIvqv+7sDR+AlQC4FYqn+LNt+e
 BkAq/2vmgC+xOZAn3T7+3xM2iWHXQ9H1eV0eOnqi4I1HZU1Yfxel7CQujA6IHhyk
 8a+RZWqbw0vhr5IfptrcLUptcRMZjusbBU3YZxJiG+2MJHvgKGKCXtUKytxqSIrI
 gTSPTVNcdXMCxvziS45k6IRaMGSIQe5+15IoSUZ/mz3zsfkww9d1AWjgWXrtqFhq
 y+1TjpDjJ33gOQdAtTi+WXBi7CZHFgtVSrTLAE4MTjn0zNSplEOzfvWXUlJjnUbc
 0kbNNzJs+4O9C6YJybGGFJXJ+l1AIvKiXGc/lX4tn8f7RpoJHdE=
 =fIzC
 -----END PGP SIGNATURE-----

Merge tag 'v3.4.3' into develop

# gpg: Signature made Thu Sep 26 00:53:00 2019 CEST
# gpg:                using RSA key A1063F1DCFE6981542E4E6AB4D8268DC68E8339D
# gpg: Good signature from "Tim Zandbergen <TimZ99@users.noreply.github.com>" [ultimate]
2019-09-26 00:53:00 +02:00
TimZ99 8035608fe3
Bumped version to 3.4.3 2019-09-26 00:52:42 +02:00
TimZ99 b399327c4b
Fixed week/month/year graph
Fixes #774.
2019-09-25 23:40:06 +02:00
TimZ99 4ebe934b2e
Added timeout to services
Fixes #775.
2019-09-25 23:35:37 +02:00
TimZ99 8342a979aa
Changed help message to uniform name
From auto_refresh_servers and auto_refresh_help to auto_refresh_description.
2019-09-25 23:09:42 +02:00
TimZ99 5d668b7882
Fixed auto-refresh
Fixes #772.
2019-09-25 23:08:05 +02:00
Jonne Haß d62df0b34e Fix pushover_status checkbox population from current config (#777) 2019-09-25 21:35:52 +02:00
TimZ99 fa536c312c
Added commit. 2019-09-24 18:24:24 +02:00
TimZ99 1b0d86b361
Corrected query
Fixes #781.
2019-09-24 18:23:57 +02:00
damian b0ea45ae76
Added ability to easily use a custom theme. (#624)
Resolves #338.

Co-Authored-By: Tim <timz99@users.noreply.github.com>
2019-09-19 17:04:19 +02:00
Tim 918f8cdf69
Corrected PR number 2019-09-19 14:45:45 +02:00
Tim 450d5e9dcc
Create SECURITY.md 2019-09-19 14:39:38 +02:00
TimZ99 3b616c89a5
Updated changelog for v3.4.1 2019-09-17 19:23:35 +02:00
TimZ99 a8d36b08bb
Updated version 2019-09-17 19:20:42 +02:00
caos30 98959d3a77
Added catalan ca_ES language translation file (#733)
Closes #731

* Added catalan ca_ES language translation file

* Updated the catalan translation ca_ES.lang.php 

Updated the catalan translation ca_ES.lang.php taking as reference difference with last version of english translation file.

* Quit sms_gateway labels not used on catalan

Removed about 10 translation labels with prefix sms_gateway_ on catalan translation file (ca_ES.lang.php) not used any more. I think that it really is the definitive good version ;-)

* Changed url

* Update ca_ES.lang.php

* Added Catalan to translations
2019-09-17 19:20:41 +02:00
TimZ99 6c1763e811
Updated table style
Fixes #742  and closes #743.
2019-09-17 19:20:41 +02:00
Arkhee dd3bc35009
"Last online" stuck on "never" when checking some websites (#770)
Fixes #765

* // PATCH Arkhee : fix/last-online-stuck-on-never-if-webpage-too-large
  // The update un "servers" table does not work
  // Symptom : "Last online" stays stuck on "never"
  // Reason: last_output contains the full webpage, too long for the query
  // _This may depend on mysql configuration on the server_, explaining why some have the problem or not
  // Field is 255 Chars, and request does not work anyway is loaded web page is too large in last_output
  // So force truncate to 250 or less before query

* Spelling

* Update varchar to text

* Update tot 3.4.1

* Update tot 3.4.1

* Update README.rst

* Updated to 5000 characters
2019-09-17 19:20:41 +02:00
TimZ99 34a2303f21
Updated changelog for v3.4.0 2019-09-17 19:20:41 +02:00
Federico Vera 9db07f2c09
Issue #734, Truncate server outputs (#741)
* Truncate outputs

* Add modals to show the complete output

* Add 'See complete...' buttons

* Improve "See Complete..." button

* Use nl2br filter

* Use button instead of <a> looks much better

* Removed font-family: Mono

and changed 'see complete' to 'show more'.
2019-09-17 19:20:40 +02:00
TimZ99 accd55630a
Fixed typo 2019-09-17 19:20:40 +02:00
spmfox 9c55413f57
Update requirements.rst (#747)
On stock Debian 9.9, "apt-get install php-xml" is needed to get anything to load. Here is the error you get without it: (Extension DOM is required. in /var/www/html/vendor/symfony/config/Util/XmlUtils.php:50)
2019-09-17 19:20:40 +02:00
Federico Vera 394f4a8b44
Spanish translations v3.4 (#740) 2019-09-17 19:20:37 +02:00
Emmanuel RABOTTEAU fe9ff4b30d Update fr_FR.lang.php (#752)
Translated some missing string.
2019-07-17 18:36:14 +02:00
TimZ99 66996f0c73
Removed forgotten debug code 2019-05-22 00:32:54 +02:00
TimZ99 5d81d560e6
Improved table readability
Fixes #736.
2019-05-21 21:02:19 +02:00
TimZ99 86c0a5864b
Added server_id as id - Fixes #738 2019-05-21 17:13:59 +02:00
TimZ99 be9e3f7c88
Updated composer 2019-05-19 23:25:00 +02:00
Christian Lorenz fr32k 8cc8a0dbb7
Updated wget to curl
Closes #690.
2019-05-19 21:18:51 +02:00
Acrylic Style 6728fd14f4 Updated Japanese Translations (#662) 2019-05-19 20:11:33 +02:00
Shammi Shailaj 8f43fd99e6 Adding verbosity for cURL (#697)
Added code to increase cURL verbosity in cases where PSM_DEBUG is defined and set to a value of boolean TRUE only if the request is coming via CLI.
2019-05-19 20:02:53 +02:00
Michael 6761776a8f
Allow HTTP/2 status responses (#695)
Fixed #672 and resolved #669.
2019-05-19 03:14:26 +02:00
IT. Orlando Hernandez (Masterk3y) e2d904688a Update es_ES.lang.php (#703) 2019-05-19 02:19:17 +02:00
TimZ99 1cb2357460
Update README.rst 2019-05-19 02:02:19 +02:00
TimZ99 32c17f372b
Added uptime and avg latency 2019-05-19 02:01:27 +02:00
TimZ99 b3de673c6a
Removed old todo's 2019-05-19 02:01:27 +02:00
TimZ99 5b0fba63aa
Add button when there are no servers 2019-05-19 02:01:27 +02:00
TimZ99 5511cd5579
Added faq for #719 2019-05-19 02:00:57 +02:00
TimZ99 2599fb97af
Fixed overflowing tables 2019-05-19 01:57:54 +02:00
TimZ99 fcd12d9924
Updated bootstrap to 4.3.1 2019-05-19 01:57:53 +02:00
TimZ99 c343f1f2d1
Added csrf 2019-05-19 01:57:53 +02:00
TimZ99 df573e5bdc
Changed csrf input to standard 2019-05-19 01:57:53 +02:00
TimZ99 6ca361519c
Added missing field to email config 2019-05-19 01:57:53 +02:00
TimZ99 3e1b912e96
Updated Bootstrap-select to v1.13.10 2019-05-19 01:57:52 +02:00
TimZ99 cba09ed5f1
Fixed path to files 2019-05-19 01:57:52 +02:00
TimZ99 f87e4e48cc
Made tables nices 2019-05-19 01:57:52 +02:00
TimZ99 64a9bc1ac7
Added dismissible alerts 2019-05-19 01:57:51 +02:00
TimZ99 f70dacb023
Added sw.js and manifest 2019-05-19 01:57:51 +02:00
TimZ99 59be9f2b6d
Added beter support for use without Javascript 2019-05-19 01:57:51 +02:00
TimZ99 9915a112e5
Improved accessibility 2019-05-19 01:57:51 +02:00
TimZ99 0025af2067
Updated Bootstrap-select to v1.13.9 2019-05-19 01:57:05 +02:00
TimZ99 fea3289417
Added missing offline duration 2019-05-19 01:57:04 +02:00
TimZ99 9eac461700
Beautified 2019-05-19 01:57:04 +02:00
TimZ99 560dc8a9a5
Added OS input
Adding an input to choose macOS as the current OS.
2019-05-19 01:57:04 +02:00
TimZ99 5e5281dcc4
Added curl_exec
Fixes #665.
2019-05-19 01:56:12 +02:00
TimZ99 9cdafc9554
Updated useragent to Github URL 2019-02-08 16:29:47 +01:00
TimZ99 326eddd97d
Update version in docs 2019-02-08 16:29:16 +01:00
TimZ99 cf2f6b0788
Changed database column to TEXT
- Changed message column in the log table to TEXT. Combined notification can be greater then 255 characters.
2019-02-08 16:28:47 +01:00
TimZ99 c44760c0f7
Removed server column from notification log. 2019-02-08 16:16:57 +01:00
TimZ99 6c14709d7c
Updated default template
Fixes #685.
- Updated to Bootstrap V4.
- Changed jqPlot to Chart.js.
- Updated jQuery to the V3.
- Changed Bootstrap Multiselect to Bootstrap-select.
2019-02-08 15:51:56 +01:00
TimZ99 5424976400
Set PHPMailer minimal required version
Fixes #680
2019-02-03 20:45:00 +01:00
TimZ99 2c6ef08b39
Added noopener and updated download link to Github releases
- Added noopener to all links in the translation files with a target set to _blank.
- Updated the download link to Github releases.
- Removed some double spaces.
2019-02-03 20:30:17 +01:00
Tim 1249e98a0f
Downgraded symfony/filesystem to ~3.4 (#656)
Fixes #655.
Downgraded symfony/filesystem to v3.4 (PHP 5.5.9 compatible).
Added 7.0.8 as minimal PHP version for PHP7.
2018-09-17 17:32:51 +02:00
Petr K 63a2a6bbd3 Added updater.sh shell script (#620)
Saves config.php. Updates the rest of the files to the latest Github release.
2018-09-17 16:31:01 +02:00
Tim 6a8982ccce
Changed query from not null to null (#653)
Fixes #647
2018-09-12 12:36:32 +02:00
Tim c645444db9
Added post field as addition to #631 (#642) 2018-09-08 14:03:39 +02:00
Tim b59afd9d33
Removed url encoding from Nexmo message (#644) 2018-09-08 13:54:09 +02:00
TimZ99 617ffb5739
Added advanced switch (removed during merge #627) 2018-09-08 13:51:37 +02:00
TimZ99 1d0f6a6986
Fixed regex in hostname validator 2018-09-07 00:38:52 +02:00
TimZ99 ed61b3854f
Fixed regex to prevent false negatives
Would fail if:
- location wat written without capital letter.
- the server redirected to www.
- there was no / at the end of the url.
2018-09-05 23:44:20 +02:00
Tim cf6f30adfc
Added combined notifications (#639)
If multiple servers go up or down together, you don't get spammed with notifications if you have this option enabled. It will send one combined notification.
2018-09-05 23:08:17 +02:00
Tim d33c891be2
Added redirect check (#626) 2018-09-05 22:58:50 +02:00
Tim b26f85d975
Added option to view latest (failing) server response and error (#627)
Shows:
- latest error.
- latest positive response.
- latest failure response.
2018-09-05 22:52:23 +02:00
Tim 72b262c706
Added the option to specify the request method (#631) 2018-09-05 22:42:08 +02:00
Tim 7aa7ec363b
Mark specific HTTP status codes as online (#628)
Add option to specify which HTTP status codes are considered as "online".
Closing #175.
2018-09-05 22:34:19 +02:00
Tim 132a730d71
Removed last offline duration parentheses if empty (#641) 2018-09-05 21:50:05 +02:00
Tim de29906f27
Added php extensions to required list (#637)
* Added PHP extensions to the required list
* Fixed some spelling issues in the changelog
* Updated composer
2018-09-04 20:47:58 +02:00
Tim 170cecf8fe
Changed server order (#635) 2018-09-04 01:19:25 +02:00
Tim 6e528aaf15
Changed ' to " in sql query (#634) 2018-09-03 15:47:53 +02:00
Tim 878b256698
Forgot to add a list 2018-08-30 16:03:06 +02:00
Tim fa97fb6653
Fixed rdp:// bug and fixed port not updating #418 (#629)
- Although the port isn't used while testing a website, changing it prevents confusion.
- Fix bug that made it impossible to check rdp:// as it would add http:// in front of it.
2018-08-30 00:08:22 +02:00
TimZ99 2c1ef315c7
Added latest changes 2018-08-29 23:46:51 +02:00
TimZ99 b49659f49a
Added notification faq -> not recieving notifications
Closes #306.
2018-08-29 00:08:46 +02:00
Tim ef28908c5f
Indentation 2018-08-28 21:22:20 +02:00
Jason Cheng 86ecc09c3b
put translator name 2018-08-14 09:18:53 +08:00
Jason Cheng c401a255d6
Translate all contents according to v3.3.1 version 2018-08-13 23:56:38 +08:00
Daniel Billing 0e64ff54d1 Added Norwegian language (#605)
* Added the Norwegian language
* Updated SMS spelling in the English language
2018-08-13 12:39:25 +02:00
Jason Cheng b235bf7639
Add Traditional Chinese Language File. 2018-08-13 15:20:47 +08:00
TimZ99 f6173d4439
Added license 2018-08-10 16:02:41 +02:00
TimZ99 267002ba20
Bump version 3.3.1 2018-08-10 02:09:42 +02:00
TimZ99 140447e975
Update changelog for v3.3.0 and v3.3.1 2018-08-10 01:48:04 +02:00
Tom Hatzer 1f2dde3963 Removed default mysql port settings from files and left empty values (#403) 2018-08-09 19:16:20 +02:00
TimZ99 5e61d89b7f
Defined $encrypted_password 2018-08-03 01:35:26 +02:00
TimZ99 ce8182e32f
Updated composer.lock 2018-08-03 01:10:48 +02:00
TimZ99 51ef755e43
Removed last_offline_duration = "" 2018-08-03 00:47:26 +02:00
TimZ99 6534749fbd
Added %LAST_OFFLINE_DURATION% 2018-08-03 00:46:52 +02:00
TimZ99 e4bade32f9
Updated PHPMailer namespace
- Updated PHPMailer namespace
- Changed $phpmailer->SMTPDebug to an integer value.
- Added cast type to $phpmailer->Port.
2018-08-03 00:46:24 +02:00
TimZ99 d2dda8ac70
Removed duplicate 2018-07-25 16:20:35 +02:00
Alexell d41c7b2c3f Updated Russian translation for current develop branch (#613) 2018-07-25 01:00:16 +02:00
TimZ99 f21f3db19e
Typo fix, removed unused code & updated documentation 2018-07-12 17:31:00 +02:00
TimZ99 476c59eb47
Updated required PHP version to 5.5.9
Added update message for PHP versions lower then PHP 7.
2018-07-12 17:31:00 +02:00
TimZ99 1c984b30ff
Updated documentation, added some small changes 2018-07-12 17:31:00 +02:00
TimZ99 eac8ebc261
Fixed sms error check 2018-07-12 17:31:00 +02:00
TimZ99 e2c424e167
Spacing, indentation and braces
Co-Authored-By: Scrutinizer Auto-Fixer <auto-fixes@scrutinizer-ci.com>
2018-07-12 17:31:00 +02:00
TimZ99 a05d36d5f6
Corrected typos & removed unused code
Removed unused data from query.
Fixed a few typos.
2018-07-12 17:31:00 +02:00
TimZ99 3023c83226
Changed die() to trigger_error()
E_USER_ERROR will always be displayed.
Changed die() to trigger_error(error, E_USER_ERROR).
2018-07-12 17:31:00 +02:00
TimZ99 a96e1e5a2e
Removed eval(), redone get & load language functions 2018-07-12 17:31:00 +02:00
TimZ99 b0ea7eb272
Added forgotten translation 2018-06-30 17:29:12 +02:00
TimZ99 92e8312ff1
Removed unused code
Code not reachable.
2018-06-30 13:14:42 +02:00
TimZ99 fc84c06813
Undefined var & 404 -> 403
PSM_CRON_ALLOW was undefined. Added defined check.
Changed 404 to 403 message.
Added support for php5.
2018-06-29 19:46:58 +02:00
TimZ99 93b324f178
Security update symfony/http-foundation
https://symfony.com/blog/cve-2018-11386-denial-of-service-when-using-pdosessionhandler
2018-06-29 14:57:59 +02:00
TimZ99 dd56e2971f
Update composer.phar to new version 2018-06-29 14:55:36 +02:00
Tim b98a4af412
Typo fix
Changed : to ;.
2018-06-29 14:20:47 +02:00
TimZ99 62254a534b
SMS: ClickSend and SMSgw updated, fixed small things in the others
Update to #593

Co-Authored-By: Ward Pieters <wardpieters@users.noreply.github.com>
2018-05-30 23:01:13 +02:00
Ward Pieters 57f4c369e9 SMS: 4 gateways added and others rewritten (#593)
* Closes #588

* Not relevant anymore: closes #223

* Create Plivo.php

* Create SolutionsInfini.php, closes #460 

* Create Callr.php, closes #586

* Create GatewayAPI.php

* Update README.rst

* Update credits.rst

* Update functions.inc.php

* Update Octopush.php

* Update Smsit.php

* Update Mosms.php

* Update Smsglobal.php

* Update Smsit.php

* Update FreeVoipDeal.php

* Update FreeMobileSMS.php

* Update Inetworx.php
2018-05-29 14:13:48 +02:00
Tim c3751e7e57
Changed username to password 2018-05-28 14:42:47 +02:00
Danial 47ad693339 Rollback Twig version update (#590)
Rollback Twig version.
Reason: 500 errors.
2018-05-25 13:33:47 +02:00
Danial 2b73d207db Enlarge select pattern_online width (#589) 2018-05-25 13:23:35 +02:00
TimZ99 3c55a353be
Allow ping by hostname
Closing #477 and #480.

Co-Authored-By: Matthew <djmixman@users.noreply.github.com>
Co-Authored-By: Mircea Chirea <chirea.mircea@gmail.com>
2018-05-24 14:49:18 +02:00
Tim 41263a39b0
Update README.rst 2018-05-24 14:02:17 +02:00
Danial 82d01b07f7 Add support for "site online when pattern not found" (#579)
Choose to mark a website offline of online is the pattern is (not) found.
2018-05-24 12:49:26 +02:00
Marcel Riedlinger c4e6a61361 Update .gitignore (#587)
added __MACOSX to .gitignore

Current Release 3.2.2 does have many .files under __MACOSX

  inflating: __MACOSX/phpservermon-3.2.2/src/._templates
  inflating: __MACOSX/phpservermon-3.2.2/._src
  inflating: __MACOSX/._phpservermon-3.2.2
2018-05-24 06:54:59 +02:00
TimZ99 a496874d9c
Rewritten part of the gateway code
This is a first commit in order to close #588.

- Removed the names from the translation files.
- The dropdown menu will now filled with the names of the gateways in
the Txtmsg folder.
- Changed Mollie to the proper company name: Messagebird.
- Everybody that was using Mollie will on upgrade automatically change
to Messagebird (replace old name in DB with new name).
- Updated: Clickatell, Twilio, Spryng, Textmarketer and Messagebird
(Mollie).
2018-05-24 06:49:58 +02:00
Tim 8ca259d524
Updated list of available SMS gateways 2018-04-30 17:48:57 +02:00
Axel Wehner d64f27f705
Add CM Telecom bulk SMS gateway (Closing #545) 2018-04-30 15:25:47 +02:00
Matthew Pattman 0580e75642
Added last offline and the duration of the last outage
Co-authored-by: TimZ99 <TimZ99@users.noreply.github.com>
2018-04-27 21:14:46 +02:00
Tim 3a005f2201
Fixing #580 removed results block
There are no additional messages at this point.
2018-04-27 18:10:14 +02:00
Tim 46311d569e
Update CHANGELOG.rst 2018-04-25 16:51:05 +02:00
Timz99 79742fe6bd
Fixed wrong ping error
- Fixed error: Failed to parse address &quot;8.8.8.8&quot;
- Added correct error message.

NOTE:
This will not fix other problems with ping, non-root user are having
(on unix)!
2018-04-25 14:15:44 +02:00
Tim fc4ffd6b2f
Added Twilio and Telegram
Added Twilio and Telegram to the notification list.
Changed download url to the release page.
Changed all http links to https.
2018-04-09 19:52:28 +02:00
Matthias Wirtz 1bd14995fb
Update several dependencies (frontend & backend) (#571)
Closes #568.
Updates Composer packages No longer supporting outdated PHP Versions, Update Dome Frontend assets, fix php notices and warnings popping Up when run in debug Mode...
2018-04-09 19:34:06 +02:00
Tim 9d30b9854c
Added support for Twilio (#569)
Closing #112
2018-04-02 02:38:49 +02:00
Tim a80452d916
Added Telegram and Pushover to documentation 2018-04-01 14:08:57 +02:00
TimZ99 526c2523cb
Added noopener to external link
Security update. More info can be found on https://developers.google.com/web/tools/lighthouse/audits/noopener.
2018-03-27 23:36:13 +02:00
TimZ99 64b4d60ffc
Added activation process for Telegram notifications 2018-03-27 23:36:13 +02:00
TimZ99 67632ab966
Added Telegram notifications 2018-03-27 23:36:13 +02:00
TimZ99 7059ac6607
Defined latency for new added servers 2018-03-27 23:36:12 +02:00
Tim 4348b7c91a
Corrected indentation 2018-03-27 23:36:12 +02:00
AUBERT Mathieu ad1ca57b44
Fix #550 - Bug when sending FreeMobileSMS 2018-03-27 23:36:11 +02:00
Matthias Wirtz 08eb9a55f7
Fix method declaration error in PHP7.2 (#541) 2018-03-27 23:36:11 +02:00
avahldiek 11a021e7d9
run archive and cleanup per server (#515) 2018-03-27 23:36:11 +02:00
eezec 7302e669fd
Fixes #500 - updatePing (#516)
Moved rtime out of the if/else block, this fixes #500.
2018-03-27 23:36:10 +02:00
Tim 24717675da
Defined latency for pre-installed servers
Got deleted by accident in #502. 
Defined the latency for pre-installed servers on installation.
2018-03-27 23:36:10 +02:00
Tim c66848e21c
Updated version to 3.2.2
Version update needed to support Telegram.
2018-03-27 23:36:09 +02:00
Tim 6eda990ed0
Added support for Telegram (#554)
Added support for Telegram. Notifications can be received in private chat or in groupchat.

This will close #389 and is a preview of what's coming next (#459) 😉.
2018-03-27 23:36:09 +02:00
Tim b0fee68f6e
Clear log button - closes #383 (#505)
* Added button to clear the logs

Only admins can clear the logs. The content from the log and log_users table will
be deleted.
2018-03-27 23:36:08 +02:00
Tim a97539998d
Combined if-statements
Combined two of the same if-statements into one.
2018-03-27 23:36:08 +02:00
Tim e910367faa
Corrected Pushover comment
Changed sms to pushover.
2018-03-27 23:36:08 +02:00
Tim d121ad75e3
Added latest changes 2018-03-27 23:36:07 +02:00
Andy Gaskell 71e1203f57
Rename Nexmo.class.php to Nexmo.php
Fix for nexmo sms, sending sms didn't work till I renamed the file.

I'm not sure why Nexmo.class.php and Octopush.class.php have the .class bit in the filename.

This is a follow up to Issue #170 Implement Nexmo SMS
2018-03-27 23:36:07 +02:00
Tim b9a3b203b4
Fixed #350 Email encoding
Removed utf8_decode().

Co-authored-by: shuhai <admin@4wei.cn>
2018-03-27 23:36:06 +02:00
Tim 79a654e383
Added Japanese and updated project developers 2018-03-27 23:36:06 +02:00
rht0910 723a2ab313
Fixed spell missing and Translated new line (#535) 2018-03-27 23:36:06 +02:00
Tim a9f4a5716e
Fix for database populating bug (#502)
Fixed the population of the server table during installation.
2018-03-27 23:36:05 +02:00
Tim 57340aae80
Username validation fix (#512)
* Validation and (.) support

Added validation for the username during installation.
Added dot (.) to the list of allowed symbols for username.
Added ‘dots (.)’ to the error_user_name_invalid error message.
2018-03-27 23:36:05 +02:00
shuhai 8bb5d1ffab
#465 Japanese language added 2018-03-27 23:36:04 +02:00
rabauss 462e489762
Update HistoryGraph.php
with several php-settings there might be problems with timestamp output - so it would be better to use number_format for output. otherwise the graph wont show...
2018-03-27 23:36:04 +02:00
Guillaume Moigneu ca57189e56
Fix typo on Installer.php 2018-03-27 23:36:03 +02:00
Nls 8d720496d4
Refactor header checking to be sure that we can't crash this ! 2018-03-27 23:36:02 +02:00
Nls b835de1cf6
Add optionnal header check on StatusUpdater 2018-03-27 23:36:02 +02:00
Nls 6be807cf9a
Add header_name & header_value to the server object 2018-03-27 23:36:01 +02:00
Rob Fuller dddeb1bbb5
Use existing mirror
apt.sw.be no loger exists
2018-03-27 23:36:01 +02:00
Rob Fuller e9589070b8
Use existing mirror
apt.sw.be no longer exists
2018-03-27 23:36:01 +02:00
Andy Gaskell 27b3bce8a0
Adding nexmo sms to the select
Just adding nexmo as an option to the select drop down.

This is a follow up to work done on Issue #170
2018-03-27 23:36:00 +02:00
decryptus fc63a445fc
Update update.tpl.html
Fixed for attributes pushover_key and pushover_device.
2018-03-27 23:36:00 +02:00
Timz99 95dbfdfe9a
Fixed upgrade check 2018-03-27 23:35:44 +02:00
Pepijn Over 32e018b6bb
preparing for 3.2.0 release 2018-03-27 23:24:25 +02:00
Andy Gaskell cdccb960c5 Rename Octopush.class.php to Octopush.php
I noticed this and the nexmo one were renamed as part of 1123603f64 for [refactoring] PSR-4 support through composer, mass-renaming all *.class.php to *.php to adhere to PSR-4

I was looking at the nexmo one as a follow up to Issue #170 Implement Nexmo SMS

See also...
https://github.com/phpservermon/phpservermon/pull/436
2017-03-30 11:20:51 +01:00
Samuel Denis-D'Ortun abd4d35d80 Merge pull request #428 from laangen/develop
Parameter order fixed to match constructor signature #427
2017-03-23 16:00:32 -04:00
Patrick HUSS 439a63fa4f Parameter order fixed to match constructor signature #427 2017-03-23 15:08:02 +01:00
Samuel Denis-D'Ortun 3ebd0a271b Merge pull request #421 from nutsteam/develop
Improve chinese translation
2017-03-11 23:40:16 -05:00
shuhai fff4da8f45 Improve chinese translation 2017-03-12 09:54:30 +08:00
shuhai 2c5fe21cbb Merge branch 'develop' of https://github.com/phpservermon/phpservermon into develop 2017-03-10 16:30:23 +08:00
shuhai 9d12311ab2 Merge branch 'master' of https://github.com/phpservermon/phpservermon into develop 2017-03-10 16:28:58 +08:00
Samuel Denis-D'Ortun 5e87972387 Merge pull request #417 from jonasdkhansen/develop
Changed mysql pdo port empty check, to fix problem with mysql cant co…
2017-02-08 11:20:57 -05:00
Jonas Hansen fed9cec88b Changed mysql pdo port empty check, to fix problem with mysql cant connect, when using custom port 2017-02-08 15:59:23 +01:00
Samuel Denis-D'Ortun fb1772dd66 Merge pull request #407 from elreverente/patch-1
Update fr_FR.lang.php
2017-01-20 06:58:36 -05:00
Guillaume b7c24742bf Update fr_FR.lang.php
Typo in login / remember_me
2017-01-20 11:32:38 +01:00
Samuel Denis-D'Ortun f66c3453b1 Fix #406 2017-01-19 16:32:07 -05:00
Samuel Denis-D'Ortun ca30284726 Merge pull request #404 from sandybeachit/patch-1
removed additional w from "dowwn"
2017-01-18 16:50:35 -05:00
sandybeachit fc2a18fa22 removed additional w from "dowwn"
removed additional w from "dowwn"
2017-01-18 21:19:30 +00:00
Samuel Denis-D'Ortun fd0e698253 Merge pull request #376 from invartam/develop
Base URL configuration
2017-01-13 03:08:21 -05:00
Samuel Denis-D'Ortun c49e37be49 Merge pull request #358 from pieter-groeneweg/patch-1
update status.cron.php with added allowed IP check. Issue #215
2017-01-13 03:04:55 -05:00
Samuel Denis-D'Ortun 5b4525102a Update composer.json 2017-01-13 03:01:15 -05:00
Samuel Denis-D'Ortun e8857f809b Merge pull request #348 from Aestu/use_proxy-develop-2
Add global proxy support
2017-01-13 02:57:56 -05:00
invartam 5a7e0e0bc4 Merge branch 'develop' into develop 2017-01-07 03:14:33 +01:00
Samuel Denis-D'Ortun b3e920250e Merge pull request #394 from criwe/develop
Basic pagespeedsettings + meta noindex + removed meta autor
2016-12-25 23:28:30 -05:00
criwe b0add8c210 Added some basic pagespeed settings
Added some basic pagespeed settings to the htaccess
2016-12-25 23:00:49 +01:00
criwe 479f2119f6 add <meta name="robots" content="noindex" />
A monitoring website should not be indexed by google. <meta name="robots" content="noindex" /> will prevent that.
Removed autor-tag, because not relevant anymore (especially for a page like that)
2016-12-25 22:44:44 +01:00
Samuel Denis-D'Ortun 34c07f7d46 Merge pull request #393 from tomhatzer/develop
Add custom mysql port support
2016-12-23 09:49:24 -05:00
Tom Hatzer 6805903089 Remove trailing comma 2016-12-23 15:42:15 +01:00
Tom Hatzer b1df28d4d9 Add port to installer 2016-12-23 15:41:03 +01:00
Tom Hatzer b780a6237e Add port input fields to template 2016-12-23 15:38:50 +01:00
Tom Hatzer cd977e2e51 Initialize protected variable db_port with value 3306 2016-12-23 15:30:39 +01:00
Tom Hatzer b2043b1b65 Add protected variable $db_port 2016-12-23 15:28:25 +01:00
Tom Hatzer a9f11fb691 Add port constant to install readme 2016-12-23 15:24:25 +01:00
Tom Hatzer a3853241f8 Add port param and argument 2016-12-23 15:23:31 +01:00
Tom Hatzer 4a69f606d3 Add port constant to psminstall 2016-12-23 15:22:24 +01:00
Tom Hatzer 80a092fa0c Add port static to config file 2016-12-23 15:20:46 +01:00
Tom Hatzer ff1013ed7c Add custom port to config options in db class 2016-12-23 15:20:02 +01:00
Samuel Denis-D'Ortun e120e8c636 Merge pull request #392 from tomhatzer/develop
Add ping to enum for type column in servers database table
2016-12-23 08:34:03 -05:00
Tom Hatzer 6bee28c78e Add ping to enum for type column in servers database table 2016-12-23 14:29:57 +01:00
Samuel Denis-D'Ortun 3118fdbdbc Merge pull request #391 from tomhatzer/develop
Add type ping to lang file
2016-12-23 08:19:57 -05:00
Tom Hatzer 3c961c8b91 Add type ping to lang file 2016-12-23 14:13:11 +01:00
Samuel Denis-D'Ortun 5836e27659 Merge pull request #390 from tomhatzer/develop
Add RDP (port 3389) support
2016-12-23 08:09:26 -05:00
Tom Hatzer 8ee269ceaa Add type_ping to lang file 2016-12-23 11:45:27 +01:00
Tom Hatzer b6060e7936 Add ping label to getLabels() 2016-12-23 11:44:15 +01:00
Tom Hatzer 5c0e889dd2 Add ping validation checks to ServerValidator 2016-12-23 11:38:47 +01:00
Tom Hatzer 3cd90b29ae Add server type ping to dropdown 2016-12-23 11:33:55 +01:00
Tom Hatzer 363f67b335 Add copyright notice to updatePing method 2016-12-23 11:30:27 +01:00
Tom Hatzer 4c7d2bd4f3 Add updatePing method to check if ip is pingable 2016-12-23 11:29:28 +01:00
Tom Hatzer 2325a6c25f Add RDP to port list 2016-12-23 11:14:30 +01:00
Tom Hatzer 92069a29a3 Add RDP port to save method 2016-12-23 11:12:07 +01:00
Samuel Denis-D'Ortun eadc9b145e Update README.rst 2016-11-15 13:08:21 -05:00
Benjy f19dc454ee Add base URL configuration field in installer and in sample configuration file 2016-11-05 19:10:28 +01:00
Samuel Denis-D'Ortun 74efd243c5 Merge pull request #375 from daif/develop
Support for SMSgw provider http://smsgw.net
2016-11-01 18:13:45 -04:00
Daif Alotaibi d712bb7100 Support for SMSgw provider http://smsgw.net 2016-11-02 00:40:05 +03:00
Samuel Denis-D'Ortun c981fe5daf Merge pull request #351 from Quentinvarquet/develop
Update README.rst
2016-10-24 20:48:30 -04:00
Samuel Denis-D'Ortun fd64fe1ef2 Update README.rst 2016-10-24 20:48:18 -04:00
Samuel Denis-D'Ortun 8ae313ebda Merge pull request #369 from nutsteam/ajax_auto_refresh
#367 fixed a csrf bug since 2014
2016-10-24 20:45:29 -04:00
Samuel Denis-D'Ortun a6d012f66a Merge pull request #371 from micschk/patch-2
Update Mollie.php with new URL
2016-10-21 10:42:06 -04:00
Michael van Schaik 43645bf36f Update Mollie.php with new URL (Fixes #370)
Mollie has changed their SMS api to api.messagebird.com
They have been redirecting calls to www.mollie.com but will stop doing so from oct 24 2016
The API hasn't changed, this configuration is tested & working
2016-10-21 05:47:33 +02:00
尘缘 fe99c1cbec #367 fixed a csrf bug since 2014 2016-10-19 11:05:26 +08:00
Samuel Denis-D'Ortun c4551ab59e Merge pull request #365 from nutsteam/ajax_auto_refresh
use ajax to auto refresh server status page
2016-10-10 23:01:50 -04:00
Samuel Denis-D'Ortun 3f255f7461 Merge pull request #364 from nutsteam/urlport
format port from http/s url
2016-10-10 12:02:41 -04:00
尘缘 80df5b7735 use ajax to auto refresh server status page 2016-10-10 20:11:59 +08:00
尘缘 0be9f3a09c use ajax to auto refresh server status page 2016-10-10 19:58:23 +08:00
尘缘 a586425c65 format port from http/s url 2016-10-10 17:22:28 +08:00
Samuel Denis-D'Ortun d91c544128 Merge pull request #361 from nutsteam/develop
finish chinese language package translation
2016-10-09 10:51:14 -04:00
Samuel Denis-D'Ortun 9a271e06a1 Merge pull request #362 from egogo-nl/develop
Bugfix: Message needs to be encoded before sending to receive correct…
2016-10-09 10:50:45 -04:00
Egogo Websolutions 5e0b2ac00b Bugfix: Message needs to be encoded before sending to receive correct SMS message 2016-10-09 14:49:09 +02:00
尘缘 1ac303af8c finish chinese language package translation 2016-10-09 17:38:48 +08:00
尘缘 0b68d4fb89 finish chinese language package translation 2016-10-09 16:06:25 +08:00
尘缘 fac784641a 优化中文语言包 2016-10-09 13:39:42 +08:00
Samuel Denis-D'Ortun 42c6c1c15c Merge pull request #360 from bzuro/develop
Added Slovak translation
2016-09-30 11:30:53 -04:00
Peter Misura 66ddbdcf1b Small fixes in Czech translation 2016-09-30 17:23:50 +02:00
Peter Misura ea22e36007 Add Slovak translation 2016-09-30 17:23:19 +02:00
pieter-groeneweg 0be8e40c50 update status.cron.php with added allowed IP check.
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:

define('PSM_CRON_ALLOW', array("xxx.xxx.xxx.xxx", "yyy.yyy.yyy.yyy"))

Where the xxx's and yyy's represent the IP addresses of course
2016-09-20 13:37:58 +02:00
Samuel Denis-D'Ortun 68c087025d Merge pull request #353 from MyTheValentinus/patch-1
Add free mobile in README
2016-09-11 14:38:47 -04:00
Valentin Deville 1d39f18e0d Add free mobile in README 2016-09-11 20:30:21 +02:00
Quentin Varquet 56ac7e969f Update README.rst 2016-09-08 14:58:37 +02:00
Alfredo Esteban 7b3f792f76 Add global proxy support 2016-09-01 17:40:18 +02:00
Samuel Denis-D'Ortun 91336605db Merge pull request #346 from ChristianLJ/patch-2
Update da_DK.lang.php
2016-08-31 13:17:06 -04:00
Christian Leicht Jørgensen ff0f6f4cda Update da_DK.lang.php
Translated the last missing strings and corrected a bunch of errors.
2016-08-31 18:44:09 +02:00
Samuel Denis-D'Ortun 58cb3a6adf Merge pull request #345 from ChristianLJ/patch-1
Update da_DK.lang.php
2016-08-31 10:40:52 -04:00
Christian Leicht Jørgensen a07fb41728 Update da_DK.lang.php 2016-08-31 15:36:19 +02:00
Samuel Denis-D'Ortun cf41316998 Merge pull request #339 from Aestu/composer-bug-dev
Replacing composer.phar, wrong signature
2016-08-21 10:17:36 -04:00
Samuel Denis-D'Ortun 77fac34c54 Merge pull request #340 from Aestu/composer-bug-master
Replacing composer.phar, wrong signature
2016-08-21 10:17:26 -04:00
Alfredo Esteban ad50e135e1 Replacing composer.phar, wrong signature 2016-08-17 01:17:02 +02:00
Alfredo Esteban 003d4ca47a Replacing composer.phar, wrong signature 2016-08-17 01:14:31 +02:00
Samuel Denis-D'Ortun 4e86794aff Merge pull request #332 from victormacko/develop
Minor addition to HTTPS check (where it doesn't use the standard port)
2016-07-06 12:36:53 -04:00
Victor Macko f229d18f2f Minor addition to HTTPS check (where it doesn't use the standard port) 2016-07-07 01:26:35 +10:00
Samuel Denis-D'Ortun 3dda7d6ad8 Merge pull request #331 from victormacko/develop
Added ClickSend as another SMS gateway
2016-07-06 10:32:01 -04:00
Victor Macko 62acb604c6 Removed duplicate file 2016-07-07 00:21:26 +10:00
Victor Macko 3a1e8522a3 Added ClickSend SMS provider 2016-07-07 00:09:57 +10:00
Victor Macko dc132831d4 Merge branch 'develop' of github.com:phpservermon/phpservermon
Conflicts:
	src/includes/functions.inc.php
	src/lang/en_US.lang.php
	src/psm/Module/Config/Controller/ConfigController.class.php
	src/psm/Util/Server/Updater/StatusUpdater.php
	src/templates/config/config.tpl.html
2016-07-06 22:43:10 +10:00
Victor Macko 8e2698f4ce Merge remote-tracking branch 'origin/master'
# Conflicts:
#	src/lang/en_US.lang.php
#	src/psm/Txtmsg/Smsglobal.class.php
#	src/psm/Util/Updater/StatusNotifier.class.php
2016-07-06 22:37:50 +10:00
Samuel Denis-D'Ortun e6bc31681d Merge pull request #330 from MyTheValentinus/develop
Add FreeMobile SMS
2016-07-04 19:01:56 -04:00
Valentin Deville d9557b4115
Add FreeMobile SMS 2016-07-04 14:31:42 +02:00
Samuel Denis-D'Ortun ff37adcc60 Merge pull request #321 from Laupe/upstream
Fix Issue #318
2016-06-16 18:58:40 -04:00
Pavel Dvořák dc5b7a0cfc Fix Issue #318 - delete class types, typeWebsite in warning_threshold 2016-06-17 00:52:10 +02:00
Samuel Denis-D'Ortun f7f8f0d000 Merge pull request #311 from shaundma/develop
Initial Commit
2016-05-29 11:14:39 -04:00
shaundma f4037d2aaa Initial Commit 2016-05-27 19:09:42 +02:00
Samuel Denis-D'Ortun 54dd7124ab Merge pull request #310 from phpservermon/sadortun-patch-1
Update install.rst
2016-05-27 00:06:21 -04:00
Samuel Denis-D'Ortun a615303db1 Update install.rst 2016-05-27 00:05:18 -04:00
Samuel Denis-D'Ortun 945226eb16 Update install.rst 2016-05-27 00:01:45 -04:00
Samuel Denis-D'Ortun 67c2b273f6 Merge pull request #309 from TimZ99/patch-2
Add explanation how to make the cronjob on cPanel
2016-05-26 23:59:28 -04:00
Samuel Denis-D'Ortun 90a961613f Merge pull request #308 from TimZ99/patch-1
Changed some wrong or not translated things
2016-05-26 23:52:57 -04:00
Tim 02e24c53ef Add explanation how to make the cronjob on cPanel 2016-05-26 19:50:37 +02:00
Tim 5a85eeff36 Changed some wrong translations 2016-05-26 19:01:33 +02:00
Samuel Denis-D'Ortun 10d2f3aeed Merge pull request #307 from lploi91/patch-1
Create vi_VN.lang.php
2016-05-26 01:09:15 -04:00
lploi91 aee4eb0306 Create vi_VN.lang.php 2016-05-22 15:33:01 +07:00
Samuel Denis-D'Ortun 1d02955a39 Merge pull request #300 from phpservermon/master
Merge pull request #299 from phpservermon/develop
2016-05-21 20:48:05 -04:00
Samuel Denis-D'Ortun a654a8d44e Merge branch 'develop' of https://github.com/phpservermon/phpservermon into develop 2016-05-21 20:35:09 -04:00
Samuel Denis-D'Ortun dcd552517b Merge branch 'davyrolink-201410_log-users' into develop 2016-05-21 20:34:16 -04:00
Samuel Denis-D'Ortun 953a7ddf57 Mute error when fsockopen fail to connect to host 2016-05-21 20:34:03 -04:00
Samuel Denis-D'Ortun c811876c89 Merge branch '201410_log-users' of https://github.com/davyrolink/phpservermon into davyrolink-201410_log-users
# Conflicts:
#	src/includes/psmconfig.inc.php
#	src/psm/Util/Install/Installer.php
2016-05-21 20:33:31 -04:00
Samuel Denis-D'Ortun 0780fdef3a Merge pull request #299 from phpservermon/develop
Authentication for website checks
2016-05-21 20:13:46 -04:00
Samuel Denis-D'Ortun eb235e60ca Update CHANGELOG.rst 2016-05-21 20:12:29 -04:00
Pavel Dvořák 24d7fee63e Use salt to encrypt the website check password #297 2016-05-21 19:55:35 -04:00
Samuel Denis-D'Ortun 4d480fe2c3 Update server title font size Closes #272 2016-05-21 17:43:07 -04:00
Samuel Denis-D'Ortun 678537cee5 Merge branch 'develop' of https://github.com/phpservermon/phpservermon into develop 2016-05-21 16:56:22 -04:00
Samuel Denis-D'Ortun 9ded89b6a5 Improve password security by obfuscating it in the form #96 2016-05-21 16:55:12 -04:00
Samuel Denis-D'Ortun 736b713a70 Merge branch 'upstream' of https://github.com/Laupe/phpservermon into Laupe-upstream 2016-05-21 12:16:27 -04:00
Pavel Dvořák 36b5229fcd Issue #96 Authentication fields for website/services
- Installer.php - Fixed install method
2016-05-21 18:11:57 +02:00
Samuel Denis-D'Ortun fffdc7f022 Merge branch 'upstream' of https://github.com/Laupe/phpservermon into Laupe-upstream 2016-05-21 11:58:33 -04:00
Pavel Dvořák 340660da4b Issue #96 Authentication fields for website/services
- File functions.inc.php - modified and added features psm_curl_get parameters for website_username and website_password
- File functions.inc.php - new features and psm_password_encrypt psm_password_decrypt to encrypt and decrypt passwords
- Adjusted basic language EN and supplemented by new language CZ phrase
- ConfigController.php - adjusted executeIndex method of password encryption key for each installation separately + executeSave method of saving the settings + added labels to methods getLabels
- AbstractServerController.php - adjusted method getServers a login password of the name
- ServerController.php - adjusted executeEdit method for storing information about name and password + executeSave method of storage in a database + method getLabels on labels
- Installer.php - adjusted method install a new configuration values ​​for the encryption key passwords + method installTables a new table structure servers + method upgrade320 the new structure
- StatusUpdater.php - adjusted method update the transmission website_username and website_password + method updateWebsite adjusted parameters passed to the function psm_curl_get
- Modified template: config/config.tpl.html, server/update.tpl.html, view.tpl.html
- Adapted javascript scripts.js
2016-05-21 17:08:01 +02:00
Samuel Denis-D'Ortun 8cbc93fc9e Merge pull request #291 from elbakai/develop
Disable directory Listing
2016-05-19 16:32:30 -04:00
Samuel Denis-D'Ortun 3af2b23518 Update .gitattributes 2016-05-19 01:22:07 -04:00
Samuel Denis-D'Ortun bbb9284689 Update README.rst 2016-05-18 23:38:42 -04:00
Samuel Denis-D'Ortun fb131b843a Bump version 3.2.0 2016-05-18 23:31:40 -04:00
Samuel Denis-D'Ortun aac195e893 Merge branch 'master' into develop 2016-05-18 23:14:56 -04:00
Pavel Dvořák 5fc59454d0 Issue #286 Popular Ports
- scripts.js - selection and filling port based on a selection from the popular port
- update.tpl.html - Added section with a selection of popular ports
- ServerController.php - Methods to getLabels added new label
- en_US.lang.php + cs_CZ.lang.php - modified the language of the new texts
2016-05-18 23:04:50 -04:00
Pavel Dvořák 2d460abbf8 Issue #287 - Added to the default English language
- Modified file functions.inc.php - because if you add new language variable so it is necessary to immediately translate all languages or all files added to the English translation of which is very inconvenient and time consuming.

- Function psm_load_lang - loading the default language that I chose English and stored in the $ GLOBALS [ 'sm_lang_default'] for further use.

- Function psm_get_lang - edited selection of translation. If there is no translation in the language you chose the user returns to the default language.
2016-05-18 23:04:50 -04:00
Samuel Denis-D'Ortun cbfd60871e Allow empty db password 2016-05-18 22:48:09 -04:00
Samuel Denis-D'Ortun 9aadc6b8a8 Merge branch 'develop' of https://github.com/phpservermon/phpservermon into develop 2016-05-15 05:16:54 -04:00
Samuel Denis-D'Ortun bceb6ea3db Merge branch 'develop' of https://github.com/TechReanimate/phpservermon into TechReanimate-develop
# Conflicts:
#	README.rst
#	docs/credits.rst
#	docs/intro.rst
#	src/includes/functions.inc.php
#	src/lang/de_DE.lang.php
#	src/lang/en_US.lang.php
#	src/lang/es_ES.lang.php
#	src/lang/fr_FR.lang.php
#	src/lang/it_IT.lang.php
#	src/lang/nl_NL.lang.php
#	src/lang/pl_PL.lang.php
#	src/lang/pt_BR.lang.php
#	src/lang/ru_RU.lang.php
#	src/lang/sv_SE.lang.php
#	src/lang/tr_TR.lang.php
#	src/lang/zh_CN.lang.php
2016-05-15 05:15:32 -04:00
Samuel Denis-D'Ortun 2b8fae9416 Fix #268 2016-05-15 05:00:49 -04:00
Samuel Denis-D'Ortun 6af6e4b459 Merge branch 'Laupe-develop' into develop 2016-05-15 04:36:01 -04:00
Samuel Denis-D'Ortun 421a67abaa Do not force EOL for non-text files 2016-05-15 04:35:27 -04:00
Pavel Dvořák f01c39695d update language Czech (cs_CZ) 2016-05-14 08:43:10 +02:00
Pavel Dvořák 22112777d1 Issue #269 update language Slovenian (sl_SI) 2016-05-14 08:42:33 +02:00
Pavel Dvořák d7140c9b2a Issue #269 new language Slovenian (sl_SI) 2016-05-13 23:34:08 +02:00
Pavel Dvořák e5db728634 Editing and updating of the Czech language 2016-05-13 23:22:30 +02:00
Samuel Denis-D'Ortun 4e954e594d Merge pull request #280 from Abawell/develop
Fix regression
2016-04-30 19:15:05 -04:00
Samuel Denis-D'Ortun 73f77218fd Merge pull request #258 from prathers/develop
Update da_DK.lang.php
2016-04-30 18:18:38 -04:00
Samuel Denis-D'Ortun 4f4676476d Merge pull request #263 from Xendorf/develop
Update it_IT.lang.php
2016-04-30 18:18:17 -04:00
Samuel Denis-D'Ortun 36b19de7a5 Merge pull request #267 from axi/master
add support for Octopush sms provider
2016-04-30 18:02:36 -04:00
Jerome 14b9e63e27 Fix regression 2016-04-30 21:42:04 +02:00
Samuel Denis-D'Ortun 9111e502c0 Merge commit '62ba2d7ae8325937bea0e62ad638120b8ea64af9' into develop 2016-04-29 12:55:46 -04:00
Samuel Denis-D'Ortun 72132efac6 Merge pull request #279 from SDDProductions/master
Update README.rst
2016-04-29 12:47:28 -04:00
Samuel Denis-D'Ortun 62ba2d7ae8 Update README.rst 2016-04-29 12:46:25 -04:00
Victor Macko 7cf13e5b8a Case insensitive check 2016-03-30 12:25:40 +11:00
Victor Macko b77ffc95c3 Also use string comparison 2016-03-24 07:35:06 +11:00
Alexis U (portable) 87a576642c ajout mode premium 2016-03-15 15:11:52 +01:00
Alexis U (portable) 57a01d27c5 add support for Octopush sms provider 2016-03-15 13:00:07 +01:00
Xendorf 9bda115e47 Update it_IT.lang.php 2016-03-01 11:25:40 +01:00
Preben Rather Sørensen 1c763e82ef Update da_DK.lang.php
Done a few typos and translated new labels
2016-02-15 20:24:30 +01:00
Pepijn Over a30dcf5610 adding estonian translation to changelog/credits 2016-01-31 18:08:45 +01:00
Pep 62ee04707f Merge pull request #185 from ItsRichardRaz/patch-1
et_ET.lang.php
2016-01-31 18:02:04 +01:00
Pepijn Over f46fae667b fixes issue #202 and #203: adding right-to-left stylesheet and html class 2016-01-31 17:58:12 +01:00
Pepijn Over 3093b421ea Merge branch 'evazzadeh-patch-1' into develop 2016-01-31 17:50:00 +01:00
Pepijn Over 52803e2d70 adding language subtags to template and support for right-to-left locales 2016-01-31 17:48:59 +01:00
Pepijn Over daf843df07 Merge branch 'patch-1' of git://github.com/evazzadeh/phpservermon into evazzadeh-patch-1 2016-01-31 17:09:53 +01:00
Pepijn Over 4be64dfa3a removing csrf key from login module to prevent 401 errors on login 2016-01-31 17:07:56 +01:00
Pepijn Over b2d77ca27e adding issue #195 to changelog/credits 2016-01-31 00:30:24 +01:00
Pep 653fe4f7b8 Merge pull request #195 from Esselans/develop
Improved translation & UTF email output
2016-01-31 00:28:04 +01:00
Pepijn Over 98faef1b06 fixes #237: adding CSRF token to all forms and requires now on POST 2016-01-31 00:24:37 +01:00
Pepijn Over b2ed873b1b on login, make sure to clear existing session vars and start from fresh (moving from migrate() to invalidate()) 2016-01-31 00:17:28 +01:00
Pepijn Over 5947f7382f updating composer symfony packages, and excluding composer.phar from CRLF fun 2016-01-30 22:08:16 +01:00
Pepijn Over 9c4191949b updating changelog/credits with finnish translation 2016-01-30 21:33:06 +01:00
Pepijn Over 2ed52f8a8d fixing invalid composer.phar package 2016-01-30 21:31:33 +01:00
Pep 6300e8103f Merge pull request #210 from celeroncool/develop
Added finnish translation and chrome mobile statusbar color
2016-01-30 21:27:05 +01:00
Pep b1647d2c3f Merge pull request #207 from loran750/patch-1
If pattern is set up, you cannot catch server problems
2016-01-30 21:13:47 +01:00
Pep c0b4264959 Merge pull request #218 from rigonijunior/develop
changed the character of capitalized to tiny is the correct the ediom…
2016-01-30 21:11:51 +01:00
Pep 051788ffda Merge pull request #235 from Southparkfan/patch-1
Translation fixes for NL language
2016-01-30 21:10:51 +01:00
Southparkfan 1cecc80845 Translation fixes for NL language 2015-10-19 14:28:29 +02:00
José Rigoni Jr 7035410c1e changed the character of capitalized to tiny is the correct the edioma pt_BR
changed the character of capitalized to tiny is the correct the edioma pt_BR 

line 152
2015-07-23 10:35:53 -03:00
Pep 57b9830c67 Merge pull request #213 from joglomedia/develop
Fix for issue #187 (Unable to connect to MySQL)
2015-06-17 12:21:08 -04:00
Edi Septriyanto a482ae5e27 Fix for issue #187 (Unable to connect to MySQL) 2015-06-17 23:15:10 +07:00
Pep 27769143a9 Merge pull request #205 from evazzadeh/patch-5
add charset for sending email
2015-06-16 11:48:19 -04:00
Sami Nieminen dbb24dd38e Fixed the statusbar color code place 2015-06-16 07:15:40 +00:00
Sami Nieminen 2fcb65036b Fixed the statusbar color code place 2015-06-16 07:14:06 +00:00
Sami Nieminen c0bed02151 Added Chrome mobile statusbar color per material design guidelines 2015-06-16 07:05:06 +00:00
Sami Nieminen 03617ff58d Added finnish translation, email messages are in english, as some email clients show finnish letters wrong. 2015-06-09 06:14:08 +00:00
Sami Nieminen 4bce8e24dd Finnish translation done and tested. Feedback appreciated! 2015-06-08 12:28:00 +00:00
Sami Nieminen 53ee67773e Translation done, testing begins... 2015-06-08 12:13:44 +00:00
Sami Nieminen bcfeaba773 Updated more strings, work in progress 2015-06-08 11:29:04 +00:00
Sami Nieminen 315e963cdb Added Finnish translation, work in progress 2015-06-04 10:52:11 +00:00
Laurent a02ea03399 If pattern is set up, you cannot catch server problems
The need : to have 3 differents error codes :

- Timeout
- Http status code
- pattern not found.

The error of status code or timebout where overwritten by pattern, if set up
2015-06-01 00:22:10 +02:00
Javad Evazzadeh Kakroudi 1c9823f165 add charset for sending email 2015-05-29 23:19:25 +04:30
Javad Evazzadeh Kakroudi c176cbc49f add persian language support
add persian language translation file
2015-05-29 22:38:11 +04:30
Mauro Vietri 0d3934108c Improved Spanish translation & add utf8 decoding before sending email notifications to correctly display special characters on subject and body 2015-04-21 08:07:30 -03:00
Luis Rodriguez 6a2a4c1898 Implement Nexmo SMS Issue #170 2015-02-28 21:05:18 -05:00
ItsRichardRaz 7cd962abf8 et_ET.lang.php
Estonian translation (:
2015-02-28 20:50:07 +02:00
Pepijn Over ffd9cfc6c8 [refactoring] renaming initialize() and initializeAction() methods to run() to correspond with router naming 2015-02-27 17:11:37 +01:00
Pepijn Over 8505a34292 [event] adding experimental support for user events 2015-02-27 17:06:22 +01:00
Pepijn Over 1123603f64 [refactoring] PSR-4 support through composer, mass-renaming all *.class.php to *.php to adhere to PSR-4 2015-02-27 15:18:37 +01:00
Pepijn Over dc54bf14ea [refactoring] moving UpdateManger to service container as util.server.updatemanager 2015-02-27 15:05:46 +01:00
Pepijn Over f63a39d92c [refatoring] adding symfony service container and upgrading symfony packages to 2.6 2015-02-27 14:34:28 +01:00
Pepijn Over 38a50cf7bb updating composer.phar to latest version 2015-02-27 13:44:16 +01:00
Pepijn Over 9370397555 issue #173: typo in display_errors 2015-02-27 12:17:12 +01:00
Pepijn Over 6172b35a81 issue #181: adding blank index files to prevent directory listing 2015-02-27 11:54:16 +01:00
Pepijn Over 51ff0f2044 updating copyright year in headers and email 2015-02-27 11:43:09 +01:00
Pepijn Over 390a8e6156 [txtmsg/freevoipdeal] issue #164: adding freevoipdeal to config dropdown 2015-02-27 11:43:04 +01:00
Pepijn Over d4843a2990 Merge branch 'develop' of git://github.com/mvdw/phpservermon into mvdw-develop 2015-02-27 11:18:47 +01:00
Pepijn Over 6548a16972 [module/server] issue #169: adding new server ip limit of 500 chars to upgrade script and changelog 2015-02-27 11:15:29 +01:00
Pepijn Over dc7036c39a Merge branch 'develop' of git://github.com/sudarshann/phpservermon into sudarshann-develop 2015-02-27 11:11:05 +01:00
Pepijn Over e3dc55220c fixing line endings 2015-02-27 11:07:11 +01:00
Pep b9a6bb4f41 Merge pull request #171 from krismas/lang-fr
Fix some typos in french translation
2015-02-27 10:55:28 +01:00
mustapha elbakai 845665ca4e Disable directory Listing
Prevent a Directory Listing by using htaccess file
2015-02-20 05:40:42 +00:00
Gildas NOEL f0b8abe390 Fix some typos in french translation 2015-01-13 11:23:14 +01:00
Sudarshan Anbazhagan 62c9822ee9 increased maximum limit to for server ip to 500 2015-01-08 01:53:47 +05:30
Sudarshan Anbazhagan 37aa55a472 updated maximum length of the server hostname
most of the urls I have are very long and it needs to have a larger value. 100 is simply not enough
2015-01-08 01:52:22 +05:30
Michiel van der Wulp 97d4118c94 add issue number 164 2014-12-12 07:48:45 +01:00
Michiel van der Wulp 365131df40 correct text message 2014-12-11 22:13:35 +01:00
Michiel van der Wulp 419ba4a0cf added freevoipdeal support 2014-12-11 13:16:06 +01:00
Pepijn Over 93ddf5139b Adding Vagrantfile w/ puphpet configuration for easy development 2014-12-05 15:05:52 +01:00
Pepijn Over a726c99b7b adding issue #161 to changelog/credits 2014-12-05 10:40:49 +01:00
Pepijn Over d5059074a3 adding short note about archiving/log retention (re issue #162) 2014-12-05 10:36:33 +01:00
Pep 69a2e4e668 Merge pull request #161 from andlil/patch-2
Create sv_SE.lang.php
2014-12-05 10:20:59 +01:00
Pep 7bf53b1368 Merge pull request #160 from andlil/patch-1
Add icon for Apple iPhone/iPad/iPod shortcut
2014-12-05 10:18:23 +01:00
andlil 8839c4d27b Update sv_SE.lang.php 2014-11-30 00:25:05 +01:00
andlil fd357c814e Create sv_SE.lang.php 2014-11-29 23:43:10 +01:00
andlil 4728ca9b5f Add icon for Apple iPhone/iPad/iPod shortcut 2014-11-29 22:25:19 +01:00
Pepijn Over c629063af0 Merge branch 'hotfix-3.1.1' into develop 2014-11-06 14:41:27 +01:00
Pepijn Over ad81851375 Merge branch 'hotfix-3.1.1' 2014-11-06 14:40:52 +01:00
Pepijn Over 4b2c83588a bumping version to 3.1.1 2014-11-06 14:40:39 +01:00
Pepijn Over 391701721b issue #128: adding SSL/TLS support forr SMTP 2014-11-06 14:30:39 +01:00
Pepijn Over 54f5dbf8f3 issue #135: uptimes displayed above 100% because of unsorted uptime records 2014-11-06 14:00:09 +01:00
Pepijn Over 11adfd9ead adding issue #151 to changelog 2014-11-06 12:39:04 +01:00
Pep fe4e2d0778 Merge pull request #152 from Lauraly-com/develop
French translation: Correction of spelling mistakes
2014-11-06 12:04:43 +01:00
jerome f903eb037d French translation: Correction of spelling mistakes 2014-11-06 11:44:42 +01:00
Pepijn Over a2753c6348 issue #131: adding timeout setting to cronjob as well 2014-11-06 10:53:43 +01:00
Pepijn Over a646928a70 updating changelog/credits for language changes 2014-11-06 10:53:43 +01:00
Pep 863ad3e30a Merge pull request #151 from klemm89/develop
Updated the results template to allow links, with autoescape.
2014-11-06 10:23:57 +01:00
Klemm89 18f987a5d5 Updated the results template to allow links, with autoescape. 2014-11-05 15:38:50 -05:00
Pep 7b6500982c Merge pull request #138 from aklenczar/develop
Added Polish translation
2014-11-05 11:55:10 +01:00
Pep 706886f8b8 Merge pull request #144 from madeinnordeste/develop
update brzilian lang file
2014-11-05 11:54:35 +01:00
Pep 26baa6d96f Merge pull request #147 from TechReanimate/develop
Spanish translation update
2014-11-05 11:54:15 +01:00
Pep 880b322d98 Merge pull request #146 from roman-beylin/develop
Updated russian translation
2014-11-05 11:53:27 +01:00
Pep ed86b34c26 Merge pull request #148 from hkulekci/develop
turkish translation file
2014-11-05 11:51:10 +01:00
Haydar Kulekci 51ec51b9d5 turkish translation file 2014-10-24 11:24:54 +03:00
Luis Rodriguez 490387820c Updated spanish translation 2014-10-18 18:30:48 -04:00
Luis Rodriguez c19aa70781 Compressed images 2014-10-18 17:22:10 -04:00
Luis Rodriguez c10c4601c0 ignore my project file 2014-10-18 17:17:48 -04:00
Roman Beylin be7279dd05 Updated russian translation 2014-10-14 23:44:55 +02:00
Luiz Alberto 40b9d3386d update brzilian lang file 2014-10-04 12:04:00 -03:00
Davy Rolink 3cc48dff2d bugfix, missing $log_id 2014-10-02 22:00:08 +02:00
Davy Rolink 58b104c1fb log users displaying for the new log-users data structure 2014-10-02 21:33:51 +02:00
Davy Rolink aaa073d9fd 3.1.1 upgrade 2014-10-02 20:55:22 +02:00
Davy Rolink 6aabe1eca7 save log_users in a separate table, so that we can add additional data to each log_user in the near future 2014-10-02 09:32:21 +02:00
Arkadiusz Klenczar 7a0f148c33 Added Polish translation
Polish translation added.
2014-09-27 01:41:34 +02:00
Pepijn Over e13ca5e1b6 updating changelog/credits for #132 / #134 2014-09-26 22:06:33 +02:00
Pep 9a88b830b6 Merge pull request #131 from davyrolink/201409_cli-url
allow urls to be generated from cli, with the help of argument --uri=
2014-09-26 21:58:05 +02:00
Pep cb5f2b5952 Merge pull request #132 from JPKCom/develop
Full German translation
2014-09-26 21:28:28 +02:00
Pep fe57fca39a Merge pull request #134 from Lauraly-com/develop
French translation
2014-09-26 21:27:39 +02:00
jerome 5eb0e69c32 French translation 2014-09-19 16:05:19 +02:00
Jean Pierre Kolb ca9f52939c Full German translation 2014-09-18 16:19:53 +02:00
Davy Rolink 7585eb23e0 allow urls to be generated from cli, with the help of argument --uri= 2014-09-12 09:05:52 +02:00
Pepijn Over ec9c07a3d7 adding issue #124 to changelog 2014-09-08 09:56:19 +02:00
Pepijn Over c54a48d668 adding issue #130 czech translation to changelog 2014-09-08 09:55:30 +02:00
Pep 1204c9a4b0 Merge pull request #124 from PVasileff/patch-9
bg_BG.lang.php - develop update
2014-09-08 09:52:45 +02:00
Pep d5273db51d Merge pull request #130 from berkas1/develop
add Czech translation
2014-09-08 09:48:34 +02:00
berkas1 8834dd6cfe add Czech translation 2014-09-05 19:29:30 +02:00
Plamen Vasilev ef49e67366 bg_BG.lang.php - develop update
bg_BG.lang.php - develop update
2014-08-23 23:42:15 +03:00
Pepijn Over 16906708ad Merge branch 'release-3.1.0' into develop 2014-08-07 15:04:43 +02:00
Victor Macko 5ddbfdd167 Added SMSGlobal support 2014-07-08 00:45:50 +10:00
Victor Macko c91d3e75cf Added SMSGlobal as sms gateway 2014-07-05 17:42:57 +10:00
Victor Macko cbcb394e4b Merge remote-tracking branch 'remotes/origin/master' into develop 2014-07-05 17:32:42 +10:00
Victor Macko ae4cf0e288 Added SMSGlobal as sms gateway 2014-07-05 17:28:02 +10:00
2058 changed files with 106233 additions and 32030 deletions

12
.gitattributes vendored
View File

@ -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
Vagrantfile export-ignore
puphpet export-ignore

12
.github/FUNDING.yml vendored Normal file
View File

@ -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"]

31
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -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.

View File

@ -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.

19
.github/ISSUE_TEMPLATE/question.md vendored Normal file
View File

@ -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.

6
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "daily"

9
.gitignore vendored
View File

@ -4,3 +4,12 @@
/build
/docs/_build
/vendor/
.project
/.vagrant/
/puphpet/files/dot/ssh/
*.bak
__MACOSX/
.DS_Store
.buildpath
.settings/
/.vscode

20
.htaccess Normal file
View File

@ -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>

View File

@ -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 &quot;8.8.8.8&quot;.
* 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)
--------------------------------

12
Makefile Executable file → Normal file
View File

@ -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'

77
README.rst Executable file → Normal file
View File

@ -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

16
SECURITY.md Normal file
View File

@ -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.

21
Vagrantfile vendored Normal file
View File

@ -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

37
composer.json Executable file → Normal file
View File

@ -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/"
}
}
}

1172
composer.lock generated

File diff suppressed because it is too large Load Diff

BIN
composer.phar Normal file → Executable file

Binary file not shown.

5
config.php.sample Executable file → Normal file
View File

@ -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);

7
cron/index.html Normal file
View File

@ -0,0 +1,7 @@
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body></body>
</html>

View File

@ -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);
}

84
dev/phpservermon-default Executable file
View File

@ -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;
}
}

10
dev/vagrant-config.php Normal file
View File

@ -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);

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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
+++++++++++++
@ -78,3 +105,80 @@ The second part is the actual message. There are a few variables you can use in
* %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
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 ...).

View File

@ -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);

View File

@ -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.

View File

@ -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 XML package

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -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);
}

View File

@ -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');
}

2
logs/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*
!.gitignore

21
manifest.json Normal file
View File

@ -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"
}

BIN
phpservermon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

70
provision.yaml Normal file
View File

@ -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

40
public.php Normal file
View File

@ -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();
}

73
service-worker.js Normal file
View File

@ -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);
})
);
}
});*/

8
setup-mysql.sh Executable file
View File

@ -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;"

10
setup-php.sh Executable file
View File

@ -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

View File

@ -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);

68
src/config/services.xml Normal file
View File

@ -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

View File

@ -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;

View File

@ -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');
/**
* 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);
}

7
src/index.html Normal file
View File

@ -0,0 +1,7 @@
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body></body>
</html>

View File

@ -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' => 'Нямате нужното ниво на достъп за да
прегледате тази страница.',
),
);

457
src/lang/ca_ES.lang.php Normal file
View File

@ -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&amp;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 , 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.',
),
);

335
src/lang/cs_CZ.lang.php Normal file
View File

@ -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> plný přístup: může spravovat servery, uživatele a
upravit globální konfiguraci.<br><b>Uživatel</b> práva pouze na čtení a
spustit aktualizaci serverů, které 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é 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.',
),
);

View File

@ -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 <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 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 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 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> 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.',
),
);

View File

@ -1,4 +1,5 @@
<?php
/**
* PHP Server Monitor
* Monitor your servers and websites.
@ -18,280 +19,318 @@
* 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>
* @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('de_DE.UTF-8', 'de_DE', 'german'),
'system' => array(
'title' => 'Server Monitor',
'install' => 'Install',
'action' => 'Aktion',
'save' => 'Speichern',
'edit' => 'Bearbeiten',
'delete' => 'L&ouml;schen',
'date' => 'Datum',
'message' => 'Meldung',
'yes' => 'Ja',
'no' => 'Nein',
'insert' => 'Einf&uuml;gen',
'add_new' => 'Neuen Eintrag erstellen',
'update_available' => 'Ein neues Update ({version}) ist verf&uuml;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&auml;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&ouml;chentlich pr&uuml;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&ouml;chten Sie benachrichtig werden?',
'alert_type_description' => '<b>Status ge&auml;ndert:</b> '.
'... wenn sich der Status &auml;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&uuml;hrt wird benachrichtigt auch wenn der Dienst mehreres Stunden offline ist',
'alert_type_status' => 'Status ge&auml;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&auml;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&auml;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.',
),
'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.',
),
);

View File

@ -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.',
),
);

View File

@ -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.',
),
);

316
src/lang/et_ET.lang.php Normal file
View File

@ -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.',
),
);

348
src/lang/fa_IR.lang.php Normal file
View File

@ -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' => 'شما اجازه مشاهده این صفحه را ندارید.',
),
);

298
src/lang/fi_FI.lang.php Normal file
View File

@ -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.',
),
);

View File

@ -1,4 +1,5 @@
<?php
/**
* PHP Server Monitor
* Monitor your servers and websites.
@ -20,279 +21,453 @@
* @package phpservermon
* @author David Ribeiro
* @author Jérôme Cabanis <jerome@lauraly.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' => '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.',
),
'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é&nbsp;!<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&nbsp;: %s',
'delete_title' => 'Supprimer un utilisateur',
'delete_message' => 'Êtes-vous sûr de vouloir supprimer l\'utilisateur \'%1\'&nbsp;?',
'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&nbsp;?',
),
'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&nbsp;: Si ce texte est trouvé sur le site internet, le serveur sera
considéré en ligne. Hors-ligne&nbsp;: 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\'&nbsp;?',
'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&nbsp;!',
'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&nbsp;: </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&nbsp;: </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&nbsp;: </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&nbsp;: 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&nbsp;: %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&nbsp;: %s',
'telegram_error_notoken' => 'Impossible d\'envoyer la notification de test&nbsp;: aucun token APII token
trouvé dans la configuration.',
'telegram_error_noid' => 'Impossible d\'envoyer la notification de test&nbsp;: 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&nbsp;: %LABEL%<br>IP&nbsp;:
%IP%<br>Port&nbsp;: %PORT%<br>Erreur&nbsp;: %ERROR%<br>Date: %DATE%',
'off_pushover_title' => 'Le Serveur \'%LABEL%\' est HORS SERVICE',
'off_pushover_message' => 'Impossible de se connecter au serveur suivant&nbsp;:<br><br>Serveur&nbsp;:
%LABEL%<br>IP&nbsp;: %IP%<br>Port&nbsp;: %PORT%<br>Erreur&nbsp;:
%ERROR%<br>Date&nbsp;: %DATE%',
'off_telegram_message' => 'Impossible de se connecter au serveur suivant&nbsp;:<br><br>Serveur&nbsp;:
%LABEL%<br>IP&nbsp;: %IP%<br>Port&nbsp;: %PORT%<br>Erreur&nbsp;:
%ERROR%<br>Date&nbsp;: %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&nbsp;: %LABEL%</li><li>IP&nbsp;: %IP%</li><li>Port&nbsp;:
%PORT%</li><li>Erreur&nbsp;: %ERROR%</li><li>Date&nbsp;: %DATE%</li></ul>',
'combi_off_pushover_message' => '<ul><li>Serveur&nbsp;: %LABEL%</li><li>IP&nbsp;: %IP%</li><li>Port&nbsp;:
%PORT%</li><li>Erreur&nbsp;: %ERROR%</li><li>Date&nbsp;: %DATE%</li></ul>',
'combi_off_telegram_message' => '- Serveur&nbsp;: %LABEL%<br>- IP&nbsp;: %IP%<br>- Port&nbsp;: %PORT%<br>-
Erreur&nbsp;: %ERROR%<br>- Date&nbsp;: %DATE%<br><br>',
'combi_on_email_message' => '<ul><li>Serveur&nbsp;: %LABEL%</li><li>IP&nbsp;: %IP%</li><li>Port&nbsp;:
%PORT%</li><li>Durée&nbsp;: %LAST_OFFLINE_DURATION%</li><li>Date&nbsp;:
%DATE%</li></ul>',
'combi_on_pushover_message' => '<ul><li>Serveur&nbsp;: %LABEL%</li><li>IP&nbsp;: %IP%</li><li>Port&nbsp;:
%PORT%</li><li>Durée&nbsp;: %LAST_OFFLINE_DURATION%</li><li>Date&nbsp;:
%DATE%</li></ul>',
'combi_on_telegram_message' => '- Serveur&nbsp;: %LABEL%<br>- IP: %IP%<br>- Port&nbsp;: %PORT%<br>-
Durée&nbsp;: %LAST_OFFLINE_DURATION%<br>- Date&nbsp;: %DATE%<br><br>',
'combi_email_subject' => 'IMPORTANT&nbsp;: \'%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&nbsp;:</b><br>%DOWN_SERVERS%<br><b>Le(s)
serveur(s) suivant(s) en ligne&nbsp;:</b><br>%UP_SERVERS%',
'combi_pushover_message' => '<b>Le(s) serveur(s) suivant(s) hors-ligne&nbsp;:</b><br>%DOWN_SERVERS%<br><b>Le(s)
serveur(s) suivant(s) en ligne&nbsp;:</b><br>%UP_SERVERS%',
'combi_telegram_message' => '<b>Le(s) serveur(s) suivant(s) hors-ligne&nbsp;:</b><br>%DOWN_SERVERS%<br><b>Le(s)
serveur(s) suivant(s) en ligne&nbsp;:</b><br>%UP_SERVERS%',
),
'login' => array(
'welcome_usermenu' => 'Bonjour %user_name%',
'title_sign_in' => 'Connectez vous SVP',
'title_forgot' => 'Mot de passe oublié&nbsp;?',
'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é&nbsp;?',
'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.',
),
);

View File

@ -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.',
),
);

458
src/lang/ja_JP.lang.php Normal file
View File

@ -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' => 'ユーザーネームは264文字以内で入力してください。',
'error_user_name_invalid' => 'ユーザー名は、アルファベット、数字とアンダーバーのみを含むことができます
ドット(.)。',
'error_user_name_exists' => '登録しようとしたユーザー名は既にデータベースに登録されています。',
'error_user_email_bad_length' => 'メールアドレスは5255文字以内で入力してください。',
'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&amp;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' => 'ラベルは1255文字以内で入力してください。',
'error_server_ip_bad_length' => 'ドメイン/IPは1255文字以内で入力してください。',
'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' => 'このページを表示する権限がありません。',
),
);

View File

@ -1,4 +1,5 @@
<?php
/**
* PHP Server Monitor
* Monitor your servers and websites.
@ -19,279 +20,123 @@
*
* @package phpservermon
* @author Ik-Jun
* @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' => '한국 - 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.',
),
'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%',
),
);

View File

@ -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.',
),
);

409
src/lang/no_NB.lang.php Normal file
View File

@ -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 <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 å 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 å meldinger i sanntid. 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 du trykke 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 å tilgang til nettstedet. (Kun Apache-godkjenning
støttes.)',
'website_password' => 'Password',
'website_password_description' => 'Passord for å 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 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 nettstedet, er serverens merke
online. Frakoblet: Hvis dette mønsteret ikke blir funnet 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 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 å 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, du <a href="%1$s" target="_blank"
rel="noopener"> registrere en app </a> 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 å meldinger i sanntid. 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, du en API-token. til <a
href="http://docs.phpservermonitor.org/"
target="_blank">dokumentasjonen</a> for å 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.
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 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 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.',
),
);

598
src/lang/pl_PL.lang.php Normal file
View File

@ -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
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 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 offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
serwery znowu online:</b><br>%UP_SERVERS%',
'combi_discord_message' => '<b>Następujące serwery offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
serwery znowu online:</b><br>%UP_SERVERS%',
'combi_webhook_message' => '<b>Następujące serwery offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
serwery znowu online:</b><br>%UP_SERVERS%',
'combi_pushover_message' => '<b>Następujące serwery offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
serwery znowu online:</b><br>%UP_SERVERS%',
'combi_telegram_message' => '<b>Następujące serwery offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
serwery znowu online:</b><br>%UP_SERVERS%',
'combi_jabber_message' => '<b>Następujące serwery offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
serwery 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ę.',
),
);

View File

@ -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> 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' => ' 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.',
),
);

View File

@ -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' => 'У вас нет прав доступа к этой странице.',
),
);

334
src/lang/sk_SK.lang.php Normal file
View File

@ -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> plný prístup: môže spravovať servery, užívateľov a
upraviť globálnu konfiguráciu.<br><b>Uživatel</b> práva len na čítanie a
spustiť aktualizáciu serverov, ktoré 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é 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 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.',
),
);

322
src/lang/sl_SI.lang.php Normal file
View File

@ -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.',
),
);

318
src/lang/sv_SE.lang.php Normal file
View File

@ -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> 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. 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 1 meddelande kl 1 och inga mer.<br><br><b>Alltid:</b> Du kommer
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"
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&auml;nd f&ouml;ljande l&auml;nk f&ouml;r att &aring;terst&auml;lla ditt
l&ouml;senord. T&auml;nk p&aring; att l&auml;nken bara &auml;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.',
),
);

321
src/lang/tr_TR.lang.php Normal file
View File

@ -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.',
),
);

538
src/lang/uk_UA.lang.php Normal file
View File

@ -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' => 'Ви не маєте дозволу переглядати цю
сторінку.',
),
);

325
src/lang/vi_VN.lang.php Normal file
View File

@ -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}) 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> toàn quyền: họ thể quản server, người
dùng chỉnh sửa cấu hình.<br><b>Users</b> chỉ xem chạy cập nhật
cho servers được giao cho họ.',
'mobile' => 'Di động',
'email' => 'Email',
'pushover' => 'Pushover',
'pushover_description' => 'Pushover 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ỉ thể chứa các chữ cái(a-z, A-Z), số
(0-9), dấu chấm (.) 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
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 một số nguyên 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 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 thể sử dụng Pushover, bạn cần phải <a
href="%1$s" target="_blank" rel="noopener">đăng một ứng
dụng</a> tại trang web của họ 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ủ 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*. dụ,
cronjob của bạn hoạt động mỗi 15 phút 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
đó .<br><br><b>Always:</b> Bạn sẽ nhận được thông báo
mỗi khi chạy đoạn script 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 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ồ
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ồ 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ồ 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 số điện thoại hợp lệ được
tìm thấy trong hồ 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ồ
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 tài
liệu lưu trữ của thời gian hoạt động máy chủ. Nhập 0
để 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 ý 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.',
),
);

View File

@ -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' => '未授权的请求.',
),
);

368
src/lang/zh_TW.lang.php Normal file
View File

@ -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' => '您没有權限進入這個頁面。',
),
);

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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',
);
}
}

View File

@ -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'),
);
}
}

View File

@ -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'),
);
}
}

View File

@ -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();
}

View File

@ -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/
@ -27,30 +28,34 @@
**/
namespace psm\Module\Error\Controller;
use psm\Module\AbstractController;
use psm\Service\Database;
class ErrorController extends AbstractController {
class ErrorController 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->setMinUserLevelRequired(PSM_USER_ANONYMOUS);
$this->setMinUserLevelRequired(PSM_USER_ANONYMOUS);
$this->setActions(array(
'401',
), '401');
}
$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'),
));
}
/**
* 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'),
));
}
}

View File

@ -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/
@ -27,13 +28,21 @@
**/
namespace psm\Module\Error;
use psm\Module\ModuleInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class ErrorModule implements ModuleInterface {
public function getControllers() {
return array(
'error' => __NAMESPACE__ . '\Controller\ErrorController',
);
class ErrorModule implements ModuleInterface
{
}
public function load(ContainerBuilder $container)
{
}
public function getControllers()
{
return array(
'error' => __NAMESPACE__ . '\Controller\ErrorController',
);
}
}

View File

@ -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;
}
}
}

View File

@ -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();
}
}

View File

@ -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',
);
}
}

View File

@ -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();
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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('&nbsp;&bull; ', $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;
}
}

View File

@ -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('&nbsp;&bull; ', $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"
);
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}
}

View File

@ -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;
}
}
}

View File

@ -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();
}
}

View File

@ -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',
);
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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');
}
}

View File

@ -1,356 +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\User\Controller;
use psm\Module\AbstractController;
use psm\Service\Database;
/**
* User module. Add, edit and delete users, or assign
* servers to users.
*/
class UserController extends AbstractController {
public $servers;
/**
* User data validator
* @var \psm\Util\User\UserValidator $user_validator
*/
protected $user_validator;
function __construct(Database $db, \Twig_Environment $twig) {
parent::__construct($db, $twig);
$this->setMinUserLevelRequired(PSM_USER_ADMIN);
$this->setActions(array(
'index', 'edit', 'delete', 'save',
), 'index');
$this->twig->addGlobal('subtitle', psm_get_lang('menu', 'user'));
}
public function initialize() {
$this->user_validator = new \psm\Util\User\UserValidator($this->user);
$servers = $this->db->select(PSM_DB_PREFIX.'servers', null, array('server_id', 'label'), '', "ORDER BY `active` ASC, `status` DESC, `label` ASC");
// change the indexes to reflect their server ids
foreach($servers as $server) {
$this->servers[$server['server_id']] = $server;
}
return parent::initialize();
}
/**
* Create HTML to show a list of all users
*
* @return string
*/
protected function executeIndex() {
$sidebar = new \psm\Util\Module\Sidebar($this->twig);
$this->setSidebar($sidebar);
$sidebar->addButton(
'add_new',
psm_get_lang('system', 'add_new'),
psm_build_url(array('mod' => 'user', 'action' => 'edit')),
'plus icon-white', 'success'
);
$modal = new \psm\Util\Module\Modal($this->twig, 'delete', \psm\Util\Module\Modal::MODAL_TYPE_DANGER);
$this->addModal($modal);
$modal->setTitle(psm_get_lang('users', 'delete_title'));
$modal->setMessage(psm_get_lang('users', 'delete_message'));
$modal->setOKButtonLabel(psm_get_lang('system', 'delete'));
// build label array for the next loop
$servers_labels = array();
foreach ($this->servers as $server) {
$servers_labels[$server['server_id']] = $server['label'];
}
$users = $this->db->select(
PSM_DB_PREFIX.'users',
null,
array('user_id', 'user_name', 'level', 'name', 'mobile', 'pushover_key', 'pushover_device', 'email'),
null,
array('name')
);
foreach($users as $x => &$user) {
$user_servers = $this->getUserServers($user['user_id']);
$user['class'] = ($x & 1) ? 'odd' : 'even';
$user['level_text'] = psm_get_lang('users', 'level_' . $user['level']);
$user['emp_servers'] = array();
// fix server list
foreach($user_servers as $server_id) {
if (!isset($servers_labels[$server_id])) continue;
$user['emp_servers'][] = array(
'label' => $servers_labels[$server_id]
);
}
$user['url_delete'] = psm_build_url(array(
'mod' => 'user',
'action' => 'delete',
'id' => $user['user_id'],
));
$user['url_edit'] = psm_build_url(array(
'mod' => 'user',
'action' => 'edit',
'id' => $user['user_id'],
));
}
$tpl_data = $this->getLabels();
$tpl_data['users'] = $users;
return $this->twig->render('module/user/user/list.tpl.html', $tpl_data);
}
/**
* Crate HTML for the update screen for a user
*
* @return string
*/
protected function executeEdit() {
$user_id = isset($_GET['id']) ? intval($_GET['id']) : 0;
$fields_prefill = array('name', 'user_name', 'mobile', 'pushover_key', 'pushover_device', 'email');
if($user_id == 0) {
// insert mode
$title = psm_get_lang('system', 'insert');
$placeholder_password = '';
$lvl_selected = PSM_USER_USER; // default level is regular user
// attempt to prefill previously posted fields
$edit_user = new \stdClass();
foreach($fields_prefill as $field) {
$edit_user->$field = (isset($_POST[$field])) ? $_POST[$field] : '';
}
// add inactive class to all servers
foreach($this->servers as &$server) {
$server['class'] = 'inactive';
}
} else {
// edit mode
try {
$this->user_validator->userId($user_id);
} catch(\InvalidArgumentException $e) {
$this->addMessage(psm_get_lang('users', 'error_' . $e->getMessage()), 'error');
return $this->executeIndex();
}
$edit_user = $this->user->getUser($user_id);
$title = psm_get_lang('system', 'edit') . ' ' . $edit_user->name;
$placeholder_password = psm_get_lang('users', 'password_leave_blank');
$lvl_selected = $edit_user->level;
// select servers for this user
$user_servers = $this->getUserServers($user_id);
foreach($this->servers as &$server) {
if(in_array($server['server_id'], $user_servers)) {
$server['edit_selected'] = 'selected="selected"';
$server['class'] = 'active';
}
}
}
$tpl_data = array(
'titlemode' => $title,
'placeholder_password' => $placeholder_password,
'edit_user_id' => $user_id,
'url_save' => psm_build_url(array(
'mod' => 'user',
'action' => 'save',
'id' => $user_id,
)),
'servers' => $this->servers,
'user_level' => $lvl_selected,
);
foreach($fields_prefill as $field) {
if(isset($edit_user->$field)) {
$tpl_data['edit_value_' . $field] = $edit_user->$field;
}
}
$tpl_data['levels'] = array();
foreach($this->user_validator->getUserLevels() as $lvl) {
$tpl_data['levels'][] = array(
'value' => $lvl,
'label' => psm_get_lang('users', 'level_' . $lvl),
);
}
$tpl_data = array_merge($this->getLabels(), $tpl_data);
return $this->twig->render('module/user/user/update.tpl.html', $tpl_data);
}
/**
* Executes the saving of a user
*/
protected function executeSave() {
if(empty($_POST)) {
// dont process anything if no data has been posted
return $this->executeIndex();
}
$user_id = (isset($_GET['id'])) ? intval($_GET['id']) : 0;
$fields = array('name', 'user_name', 'password', 'password_repeat', 'level', 'mobile', 'pushover_key', 'pushover_device', 'email');
$clean = array();
foreach($fields as $field) {
if(isset($_POST[$field])) {
$clean[$field] = trim(strip_tags($_POST[$field]));
} else {
$clean[$field] = '';
}
}
// validate the lot
try {
$this->user_validator->username($clean['user_name'], $user_id);
$this->user_validator->email($clean['email']);
$this->user_validator->level($clean['level']);
// always validate password for new users,
// but only validate it for existing users when they change it.
if($user_id == 0 || ($user_id > 0 && $clean['password'] != '')) {
$this->user_validator->password($clean['password'], $clean['password_repeat']);
}
if($user_id > 0) {
$this->user_validator->userId($user_id);
}
} catch(\InvalidArgumentException $e) {
$this->addMessage(psm_get_lang('users', 'error_' . $e->getMessage()), 'error');
return $this->executeEdit();
}
if(!empty($clean['password'])) {
$password = $clean['password'];
}
unset($clean['password_repeat']);
if($user_id > 0) {
// edit user
unset($clean['password']); // password update is executed separately
$this->db->save(PSM_DB_PREFIX.'users', $clean, array('user_id' => $user_id));
$this->addMessage(psm_get_lang('users', 'updated'), 'success');
} else {
// add user
$clean['password'] = ''; // password update is executed separately
$user_id = $this->db->save(PSM_DB_PREFIX.'users', $clean);
$this->addMessage(psm_get_lang('users', 'inserted'), 'success');
}
if(isset($password)) {
$this->user->changePassword($user_id, $password);
}
// update servers
$server_idc = psm_POST('server_id', array());
$server_idc_save = array();
foreach($server_idc as $server_id) {
$server_idc_save[] = array(
'user_id' => $user_id,
'server_id' => intval($server_id),
);
}
// delete all existing records
$this->db->delete(PSM_DB_PREFIX.'users_servers', array('user_id' => $user_id));
if(!empty($server_idc_save)) {
// add all new servers
$this->db->insertMultiple(PSM_DB_PREFIX.'users_servers', $server_idc_save);
}
return $this->executeIndex();
}
/**
* Executes the deletion of a user
*/
protected function executeDelete() {
$id = (isset($_GET['id'])) ? intval($_GET['id']) : 0;
try {
$this->user_validator->userId($id);
$this->db->delete(PSM_DB_PREFIX . 'users', array('user_id' => $id,));
$this->db->delete(PSM_DB_PREFIX.'users_servers', array('user_id' => $id));
$this->addMessage(psm_get_lang('users', 'deleted'), 'success');
} catch(\InvalidArgumentException $e) {
$this->addMessage(psm_get_lang('users', 'error_' . $e->getMessage()), 'error');
}
return $this->executeIndex();
}
protected function getLabels() {
return array(
'label_users' => psm_get_lang('menu', 'users'),
'label_user' => psm_get_lang('users', 'user'),
'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_level_description' => psm_get_lang('users', 'level_description'),
'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_servers' => psm_get_lang('menu', 'server'),
'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_add_new' => psm_get_lang('system', 'add_new'),
);
}
/**
* Get all server ids for a user
* @param int $user_id
* @return array with ids only
* @todo we should probably find a central place for this kind of stuff
*/
protected function getUserServers($user_id) {
$servers = $this->db->select(
PSM_DB_PREFIX.'users_servers',
array('user_id' => $user_id),
array('server_id')
);
$result = array();
foreach($servers as $server) {
$result[] = $server['server_id'];
}
return $result;
}
}

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