Compare commits
No commits in common. "develop" and "v3.1.0" have entirely different histories.
|
@ -1,14 +1,2 @@
|
||||||
# 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
|
.gitignore export-ignore
|
||||||
.gitattributes export-ignore
|
.gitattributes export-ignore
|
||||||
Vagrantfile export-ignore
|
|
||||||
puphpet export-ignore
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
# 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"]
|
|
|
@ -1,31 +0,0 @@
|
||||||
---
|
|
||||||
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.
|
|
|
@ -1,20 +0,0 @@
|
||||||
---
|
|
||||||
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.
|
|
|
@ -1,19 +0,0 @@
|
||||||
---
|
|
||||||
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.
|
|
|
@ -1,6 +0,0 @@
|
||||||
version: 2
|
|
||||||
updates:
|
|
||||||
- package-ecosystem: "composer"
|
|
||||||
directory: "/"
|
|
||||||
schedule:
|
|
||||||
interval: "daily"
|
|
|
@ -4,12 +4,3 @@
|
||||||
/build
|
/build
|
||||||
/docs/_build
|
/docs/_build
|
||||||
/vendor/
|
/vendor/
|
||||||
.project
|
|
||||||
/.vagrant/
|
|
||||||
/puphpet/files/dot/ssh/
|
|
||||||
*.bak
|
|
||||||
__MACOSX/
|
|
||||||
.DS_Store
|
|
||||||
.buildpath
|
|
||||||
.settings/
|
|
||||||
/.vscode
|
|
||||||
|
|
20
.htaccess
20
.htaccess
|
@ -1,20 +0,0 @@
|
||||||
Options -Indexes
|
|
||||||
|
|
||||||
<IfModule mod_expires.c>
|
|
||||||
<FilesMatch "\.(js|jpg|jpeg|gif|png|css)$">
|
|
||||||
ExpiresActive on
|
|
||||||
ExpiresDefault "access plus 1 month"
|
|
||||||
</FilesMatch>
|
|
||||||
</IfModule>
|
|
||||||
|
|
||||||
<IfModule mod_deflate.c>
|
|
||||||
AddOutputFilterByType DEFLATE text/plain
|
|
||||||
AddOutputFilterByType DEFLATE text/html
|
|
||||||
AddOutputFilterByType DEFLATE text/xml
|
|
||||||
AddOutputFilterByType DEFLATE text/css
|
|
||||||
AddOutputFilterByType DEFLATE application/xml
|
|
||||||
AddOutputFilterByType DEFLATE application/xhtml+xml
|
|
||||||
AddOutputFilterByType DEFLATE application/rss+xml
|
|
||||||
AddOutputFilterByType DEFLATE application/javascript
|
|
||||||
AddOutputFilterByType DEFLATE application/x-javascript
|
|
||||||
</IfModule>
|
|
227
CHANGELOG.rst
227
CHANGELOG.rst
|
@ -1,233 +1,6 @@
|
||||||
Changelog
|
Changelog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
|
||||||
Not yet released
|
|
||||||
----------------
|
|
||||||
\-
|
|
||||||
|
|
||||||
v3.5.2 (released August 12, 2020)
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
* Fixed missing version numbers.
|
|
||||||
* See https://github.com/phpservermon/phpservermon/compare/v3.5.1...v3.5.2
|
|
||||||
|
|
||||||
v3.5.1 (released August 12, 2020)
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
* Security update regaring jQuery, see #972.
|
|
||||||
* See https://github.com/phpservermon/phpservermon/compare/v3.5.0...v3.5.1
|
|
||||||
|
|
||||||
v3.5.0 (released May 1, 2020)
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
* See https://github.com/phpservermon/phpservermon/compare/v3.4.5...v3.5.0
|
|
||||||
|
|
||||||
v3.4.5 (released September 30, 2019)
|
|
||||||
------------------------------------
|
|
||||||
|
|
||||||
* a8eaedc8: Fixed undefined index last_output.
|
|
||||||
|
|
||||||
v3.4.4 (released September 26, 2019)
|
|
||||||
------------------------------------
|
|
||||||
|
|
||||||
* 932c695f: Fixed selected view in graph.
|
|
||||||
* 6aca2e10: Fixed auto refresh with wrong layout.
|
|
||||||
* 9f3e140b: Changed static file path to new path.
|
|
||||||
* 29adce26: Removed old static directory.
|
|
||||||
|
|
||||||
v3.4.3 (released September 26, 2019)
|
|
||||||
------------------------------------
|
|
||||||
|
|
||||||
* b399327c: Fixed week/month/year graph.
|
|
||||||
* 4ebe934b: Added timeout to services.
|
|
||||||
* 8342a979: Changed auto-refresh_help to uniform name.
|
|
||||||
* 5d668b78: Fixed auto-refresh.
|
|
||||||
* #777: Fix pushover_status checkbox population from config.
|
|
||||||
|
|
||||||
v3.4.2 (released September 24, 2019)
|
|
||||||
------------------------------------
|
|
||||||
|
|
||||||
* 1b0d86b: Fixed wrong upgrade query and added forgotten version_compare.
|
|
||||||
|
|
||||||
v3.4.1 (released September 17, 2019)
|
|
||||||
------------------------------------
|
|
||||||
|
|
||||||
* #733: Added catalan ca_ES.lang.php.
|
|
||||||
* 6c1763e: Updated table style.
|
|
||||||
* #770: Changed last_output column to TEXT and restricted to 5000 characters.
|
|
||||||
|
|
||||||
v3.4.0 (released September 17, 2019)
|
|
||||||
------------------------------------
|
|
||||||
|
|
||||||
* #741: Truncate server output.
|
|
||||||
* accd556: Fixed typo in es_ES.lang.php.
|
|
||||||
* #747: Added XML to requirements.
|
|
||||||
* #740: Update es_ES.lang.php.
|
|
||||||
* #752: Update fr_FR.lang.php.
|
|
||||||
* 86c0a58: Added server_id as id (fixes #738).
|
|
||||||
* be9e3f7: Composer update.
|
|
||||||
* 8cc8a0d: Updated wget to curl.
|
|
||||||
* #662: Updated Japanese Translations.
|
|
||||||
* #697: Adding verbosity for cURL.
|
|
||||||
* #695: Allow HTTP/2 status responses.
|
|
||||||
* #703: Update es_ES.lang.php.
|
|
||||||
* 5b0fba6: Add button when there are no servers.
|
|
||||||
* 5511cd5: Added faq for #719.
|
|
||||||
* fcd12d9: Updated bootstrap to 4.3.1.
|
|
||||||
* 6ca3615: Added missing field to email config.
|
|
||||||
* 3e1b912: Updated Bootstrap-select to v1.13.10.
|
|
||||||
* cba09ed: Manifest, Sw.js - Fixed path to files.
|
|
||||||
* f70dacb: Added sw.js and manifest.
|
|
||||||
* 59be9f2: Added beter support for use without Javascript.
|
|
||||||
* 9915a11: Improved accessibility.
|
|
||||||
* 0025af2: Updated Bootstrap-select to v1.13.9.
|
|
||||||
* fea3289: Added missing offline duration.
|
|
||||||
* 560dc8a: Makefile - Adding an input to choose macOS as the current OS.
|
|
||||||
* 5e5281d: Fixing #665.
|
|
||||||
* 9cdafc9: Updated useragent to Github URL.
|
|
||||||
* cf2f6b0: Changed database column to TEXT.
|
|
||||||
* 6c14709: Updated default template (fixing #685).
|
|
||||||
* 5424976: Fixed PHPMailer 6.0.5 Vulnerability (resolving #680).
|
|
||||||
* 2c6ef08: Added noopener and updated download link to Github releases.
|
|
||||||
* #656: Downgraded symfony/filesystem to ~3.4 (PHP 5.5.9 compatible) and added 7.0.8 as minimal PHP7 version.
|
|
||||||
* #620: Added updater.sh shell script.
|
|
||||||
* #653: Fixes wrong default type in upgrade/install query.
|
|
||||||
* #642: Added post field as addition to #631.
|
|
||||||
* #644: Fixed urlencoding in Nexmo message
|
|
||||||
* #639: Added combined notifications.
|
|
||||||
* #626: Added redirect check.
|
|
||||||
* #627: Latest server output, error and output during a failure will be saved and are shown on the server page.
|
|
||||||
* #631: Added option to specify the request method.
|
|
||||||
* #628: Added the option to mark specific HTTP status codes as online.
|
|
||||||
* #640: Removed () after last offline value when the last offline duration is unknown.
|
|
||||||
* #637: Added php extensions to composer required list, spelling fixes in changelog and composer update.
|
|
||||||
* #635: Changed server order on ?&mod=user&action=edit&id=x.
|
|
||||||
* #634: Changed ' to " in sql query, both were used.
|
|
||||||
* #629: Fix bug that made it impossible to check rdp:// and fixed port update.
|
|
||||||
* b49659f: Added question to notification faq about not receiving notifications.
|
|
||||||
* ef28908: Indentation fix.
|
|
||||||
* #605: Added Norwegian language.
|
|
||||||
* f6173d4: Added license to composer.json file.
|
|
||||||
|
|
||||||
v3.3.1 (released August 10, 2018)
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
* #403: Removed default mysql port settings from files and left empty values.
|
|
||||||
* 5e61d89: Defined $encrypted_password.
|
|
||||||
* ce8182e: Updated composer.lock.
|
|
||||||
* 51ef755: Removed last_offline_duration = "" bug.
|
|
||||||
* 6534749: Added last offline duration to all translations.
|
|
||||||
* e4bade3: Updated PHPMailer namespace.
|
|
||||||
* d2dda8a: Removed duplicate from Russian translation.
|
|
||||||
* #613: Updated Russian translation.
|
|
||||||
* f21f3db: Typo fix, removed unused code & updated documentation.
|
|
||||||
* 476c59e: Update required PHP version to 5.5.9.
|
|
||||||
* 1c984b3: Update documentation, added some small changes.
|
|
||||||
* eac8ebc: Fixed sms error check.
|
|
||||||
* e2c424e: Spacing, indentation and braces.
|
|
||||||
* a05d36d: Fixed typos & removed unused code.
|
|
||||||
* 3023c83: Changed die() to trigger_error().
|
|
||||||
* a96e1e5: Removed eval(), redone get & load language functions.
|
|
||||||
* b0ea7eb: Added forgotten translation.
|
|
||||||
* 92e8312: Removed unused code.
|
|
||||||
* fc84c06: Added cronjob over web to documentation. Changed HTMl error to 403.
|
|
||||||
* 93b324f: Security update symfony/http-foundation.
|
|
||||||
* dd56e29: Update composer.phar to new version.
|
|
||||||
* b98a4af: Typo fix.
|
|
||||||
|
|
||||||
v3.3.0 (released May 30, 2018)
|
|
||||||
------------------------------
|
|
||||||
|
|
||||||
* 57f4c36: Added support for the following SMS gateways: Plivo, SolutionsInfini, Callr and GatewayAPI.
|
|
||||||
* c3751e7: Moved Clickatell api key to password field.
|
|
||||||
* #590: Rollback Twig version update to work with PHP5.
|
|
||||||
* #589: Enlarge select pattern_online width.
|
|
||||||
* 3c55a35: Allow ping by hostname.
|
|
||||||
* #579: Added support for "site online when pattern not found".
|
|
||||||
* #587: Added __MACOSX/ to .gitignore.
|
|
||||||
* a496874, 62254a5 and 57f4c36: Rewritten global and gateway specific SMS gateway functions.
|
|
||||||
* 8ca259d: Updated list of available SMS gateways.
|
|
||||||
* d64f27f: Add CM Telecom bulk SMS gateway.
|
|
||||||
* 0580e75: Added last offline and the duration of the last outage.
|
|
||||||
* 3a005f2: Fixing #580 removed results block.
|
|
||||||
* 79742fe: Fixed ping error: Failed to parse address "8.8.8.8".
|
|
||||||
* fc4ffd6: Added Twilio and Telegram to notification list and changed URL to download the latest release.
|
|
||||||
* #571: Update several dependencies.
|
|
||||||
* #569: Added support for Twilio SMS gateway.
|
|
||||||
* a80452d: Added Telegram and Pushover to inline documentation.
|
|
||||||
* 526c252: Added noopener to external link.
|
|
||||||
* 64b4d60: Added activation process for Telegram notifications.
|
|
||||||
* 67632ab: Added Telegram notifications to the documentation.
|
|
||||||
* 7059ac6: Defined latency for new added servers.
|
|
||||||
* 11a021e: Fixed indentation fail #515.
|
|
||||||
* #550: Fix urlencode bug when sending SMS using FreeMobileSMS.
|
|
||||||
* #541: Fix method declaration error in PHP7.2.
|
|
||||||
* #515: Run archive and cleanup per server to reduce memory use.
|
|
||||||
* #516: Fixed #500 ping latency.
|
|
||||||
* 2471767: Fixed pre installed server query.
|
|
||||||
|
|
||||||
v3.2.2 (released March 27, 2018)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
* #554: Implemented Telegram notifications.
|
|
||||||
* #505: Added button to clear the logs.
|
|
||||||
* #436: Nexmo.class.php updates to Nexmo.php.
|
|
||||||
* #350: Removed utf8_decode.
|
|
||||||
* Updated credits.
|
|
||||||
* #535: Updated Japanese translation.
|
|
||||||
* #502: Fixed database population bug during installation.
|
|
||||||
* #512: Added username validation during installation and added the dot (.) to allowed characters.
|
|
||||||
* #475: Added Japanese translation.
|
|
||||||
|
|
||||||
v3.2.1 (released March 27, 2018)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
* #343: Added optional header value check.
|
|
||||||
* #433: Changed baseurl repoforgeextras.
|
|
||||||
* #432: Changed baseurl repoforge.
|
|
||||||
* #437: Octopush.class.php updates to Octopush.php.
|
|
||||||
* #435: Added Nexmo SMS to list in config.tpl.html.
|
|
||||||
* #464: Updated attributes pushover_key and pushover_device in update.tpl.html.
|
|
||||||
* #454: Updated HistoryGraph.php timestamp to number_format.
|
|
||||||
|
|
||||||
v3.2.0 (released April 15, 2017)
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
* #170: Implement Nexmo SMS.
|
|
||||||
* #161: Added Swedish translation.
|
|
||||||
* #185: Added Estonian translation.
|
|
||||||
* #210: Added Finnish translation.
|
|
||||||
* #201: Added Persian translation.
|
|
||||||
* #195: Updated Spanish translation.
|
|
||||||
* #169: Increased server ip char limit to 500.
|
|
||||||
* #164: Added support for FreeVoipDeal SMS gateway <http://www.freevoipdeal.com>.
|
|
||||||
* #181: Added blank index files to prevent directory listing.
|
|
||||||
* #237: Adding CSRF protection.
|
|
||||||
* #287: Default language - English.
|
|
||||||
* #286: Add popular ports drop down.
|
|
||||||
* #269: Added Slovenian language.
|
|
||||||
* #96: Authentication for website checks.
|
|
||||||
|
|
||||||
|
|
||||||
v3.1.1 (released November 6, 2014)
|
|
||||||
----------------------------------
|
|
||||||
|
|
||||||
* #130: Added Czech translation.
|
|
||||||
* #138: Added Polish translation.
|
|
||||||
* #148: Added Turkish translation.
|
|
||||||
* #124: Updated Bulgarian translation.
|
|
||||||
* #132: Updated German translation.
|
|
||||||
* #134: Updated French translation.
|
|
||||||
* #144: Updated Brazilian translation.
|
|
||||||
* #146: Updated Russian translation.
|
|
||||||
* #147: Updated Spanish translation.
|
|
||||||
* #128: Added SSL/TLS option for SMTP config.
|
|
||||||
* #131: Allow URL and timeout to be passed as argument to the cronjob.
|
|
||||||
* #135: Uptime percentage above 100%.
|
|
||||||
* #151: Links in install results were stripped automatically from template.
|
|
||||||
|
|
||||||
|
|
||||||
v3.1.0 (released August 7, 2014)
|
v3.1.0 (released August 7, 2014)
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,10 @@ tag = $(shell git describe)
|
||||||
VERSION = ${subst v,,$(tag)}
|
VERSION = ${subst v,,$(tag)}
|
||||||
RELEASE_DIR = ./build
|
RELEASE_DIR = ./build
|
||||||
RELEASE_FILE = phpservermon-$(VERSION)
|
RELEASE_FILE = phpservermon-$(VERSION)
|
||||||
os = l
|
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@echo ' PHP Server Monitor - $(tag)'
|
@echo ' PHP Server Monitor - $(tag)'
|
||||||
@echo ' - make export [os=...] [tag=...] - create a new release from tag. OS: Use m for macOS.'
|
@echo ' - make export [tag=...] - create a new release from tag '
|
||||||
@echo ' - make install - install all dependencies '
|
@echo ' - make install - install all dependencies '
|
||||||
|
|
||||||
install:
|
install:
|
||||||
|
@ -19,15 +18,8 @@ export:
|
||||||
mkdir -p $(RELEASE_DIR) $(RELEASE_DIR)/$(RELEASE_FILE)
|
mkdir -p $(RELEASE_DIR) $(RELEASE_DIR)/$(RELEASE_FILE)
|
||||||
rm -rf $(RELEASE_DIR)/$(RELEASE_FILE)/*
|
rm -rf $(RELEASE_DIR)/$(RELEASE_FILE)/*
|
||||||
git archive $(tag) | tar -xf - -C $(RELEASE_DIR)/$(RELEASE_FILE)/
|
git archive $(tag) | tar -xf - -C $(RELEASE_DIR)/$(RELEASE_FILE)/
|
||||||
ifeq (${os}, m)
|
#find $(RELEASE_DIR)/$(RELEASE_FILE) -name "*.php" -exec sed -i "" "s/@package_version@/$(tag)/" {} \; # for osx
|
||||||
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
|
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..) '
|
@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
|
find $(RELEASE_DIR)/$(RELEASE_FILE) -name "*.php" | xargs -I file php -l file
|
||||||
@echo 'Downloading dependencies'
|
@echo 'Downloading dependencies'
|
||||||
|
|
|
@ -1,13 +1,7 @@
|
||||||
PHP Server Monitor
|
PHP Server Monitor
|
||||||
==================
|
==================
|
||||||
|
|
||||||
.. image:: https://badges.gitter.im/Join%20Chat.svg
|
Version 3.1.0
|
||||||
: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.
|
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,
|
It comes with a web based user interface where you can manage your services and websites,
|
||||||
|
@ -18,7 +12,7 @@ Features:
|
||||||
---------
|
---------
|
||||||
|
|
||||||
* Monitor services and websites (see below).
|
* Monitor services and websites (see below).
|
||||||
* Email, SMS, Discord, Pushover, Telegram and Jabber notifications.
|
* Email, SMS and Pushover notifications.
|
||||||
* View history graphs of uptime and latency.
|
* View history graphs of uptime and latency.
|
||||||
* User authentication with 2 levels (administrator and regular user).
|
* User authentication with 2 levels (administrator and regular user).
|
||||||
* Logs of connection errors, outgoing emails and text messages.
|
* Logs of connection errors, outgoing emails and text messages.
|
||||||
|
@ -35,39 +29,23 @@ There are two different ways to monitor a server:
|
||||||
* Website
|
* Website
|
||||||
|
|
||||||
You can enter a link to a website, it will then use cURL to open the website and check the HTTP status code.
|
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/5xx, it means an error occurred and the website is not accessible to the public.
|
If the HTTP status code is in the 4xx range, 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.
|
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.
|
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.
|
In both cases the script will return a "status offline", and will start sending out notifications.
|
||||||
|
|
||||||
Each server has its own settings regarding notification.
|
Each server has its own settings regarding notification.
|
||||||
You can choose for email, text message (SMS), Pushover.net, Telegram and Jabber notifications.
|
You can choose for email, text message (SMS) and Pushover.net notifications.
|
||||||
The following SMS gateways are currently available:
|
The following SMS gateways are currently available:
|
||||||
|
|
||||||
* Clickatell - <https://www.clickatell.com>
|
* Clickatell - <https://www.clickatell.com>
|
||||||
* Inetworx - <https://www.inetworx.ch>
|
* Inetworx - <http://www.inetworx.ch>
|
||||||
* Messagebird - <https://www.messagebird.com>
|
* Mollie - <http://www.mollie.nl>
|
||||||
* Mosms - <https://www.mosms.com>
|
* Mosms - <http://www.mosms.com>
|
||||||
* Smsglobal - <https://smsglobal.com>
|
* Smsglobal - <http://smsglobal.com/>
|
||||||
* SMSit - <https://www.smsit.dk>
|
* SMSit - <http://www.smsit.dk/>
|
||||||
* Spryng - <https://www.spryng.nl>
|
* Spryng - <http://www.spryng.nl>
|
||||||
* Textmarketer - <https://www.textmarketer.co.uk>
|
* Textmarketer - <http://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.
|
Please note: for these gateways you will need an account with sufficient credits.
|
||||||
|
|
||||||
|
@ -75,7 +53,7 @@ Please note: for these gateways you will need an account with sufficient credits
|
||||||
Download
|
Download
|
||||||
--------
|
--------
|
||||||
|
|
||||||
The latest version can be downloaded from https://github.com/phpservermon/phpservermon/releases.
|
The latest version can be downloaded from http://www.phpservermonitor.org/.
|
||||||
|
|
||||||
|
|
||||||
Requirements
|
Requirements
|
||||||
|
@ -83,21 +61,10 @@ Requirements
|
||||||
|
|
||||||
* Web server
|
* Web server
|
||||||
* MySQL database
|
* MySQL database
|
||||||
* For PHP5: 5.5.9+
|
* PHP 5.3.7+
|
||||||
* For PHP7: 7.0.8+
|
* PHP cURL package
|
||||||
* PHP Extensions (modules)
|
* PHP PDO mysql driver
|
||||||
|
|
||||||
* ext-curl
|
|
||||||
* ext-ctype
|
|
||||||
* ext-filter
|
|
||||||
* ext-hash
|
|
||||||
* ext-json
|
|
||||||
* ext-libxml
|
|
||||||
* ext-openssl
|
|
||||||
* ext-pdo
|
|
||||||
* ext-pcre
|
|
||||||
* ext-sockets
|
|
||||||
* ext-xml
|
|
||||||
|
|
||||||
Install
|
Install
|
||||||
-------
|
-------
|
||||||
|
@ -110,17 +77,12 @@ To be able to run an installation from the repo, you need to run the following c
|
||||||
|
|
||||||
php composer.phar install
|
php composer.phar install
|
||||||
|
|
||||||
If you are familiar with Vagrant (https://www.vagrantup.com)::
|
|
||||||
|
|
||||||
vagrant up
|
|
||||||
|
|
||||||
.. and browse to http://localhost:8080/psm/.
|
|
||||||
|
|
||||||
|
|
||||||
Documentation
|
Documentation
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
The documentation is available in the docs folder or https://docs.phpservermonitor.org.
|
The documentation is available in the docs folder or http://docs.phpservermonitor.org.
|
||||||
|
|
||||||
|
|
||||||
License
|
License
|
||||||
|
@ -137,9 +99,4 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with PHP Server Monitor. If not, see https://www.gnu.org/licenses/.
|
along with PHP Server Monitor. If not, see http://www.gnu.org/licenses/.
|
||||||
|
|
||||||
Docker
|
|
||||||
-------
|
|
||||||
|
|
||||||
PHPServerMonitor is now available on Docker : https://github.com/phpservermon/docker-phpservermonitor
|
|
||||||
|
|
16
SECURITY.md
16
SECURITY.md
|
@ -1,16 +0,0 @@
|
||||||
# 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.
|
|
|
@ -1,21 +0,0 @@
|
||||||
# -*- mode: ruby -*-
|
|
||||||
# vi: set ft=ruby :
|
|
||||||
|
|
||||||
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox'
|
|
||||||
Vagrant.configure("2") do |config|
|
|
||||||
##### VM definition #####
|
|
||||||
config.vm.define "phpservermon-dev" do |config|
|
|
||||||
config.vm.hostname = "phpservermon-dev"
|
|
||||||
config.vm.box = "bento/ubuntu-20.04"
|
|
||||||
config.vm.box_check_update = false
|
|
||||||
config.vm.network "private_network", ip: "192.168.56.100"
|
|
||||||
config.vm.provision :ansible do |ansible|
|
|
||||||
ansible.limit = "all"
|
|
||||||
ansible.playbook = "provision.yaml"
|
|
||||||
end
|
|
||||||
config.vm.provider "virtualbox" do |vb|
|
|
||||||
vb.memory = "2048"
|
|
||||||
vb.cpus = "2"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,33 +1,18 @@
|
||||||
{
|
{
|
||||||
"name": "phpservermon/phpservermon",
|
"name": "phpservermon/phpservermon",
|
||||||
"description": "PHP Server Monitor",
|
"description": "PHP Server Monitor",
|
||||||
"license": "GPL-3.0-or-later",
|
"homepage": "http://www.phpservermonitor.org",
|
||||||
"homepage": "https://www.phpservermonitor.org",
|
"repositories": [
|
||||||
"require": {
|
{
|
||||||
"php": "^5.5.9|>=7.0.8",
|
"type": "vcs",
|
||||||
"ext-curl": "*",
|
"url": "https://github.com/phpservermon/php-pushover"
|
||||||
"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",
|
|
||||||
"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/"
|
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.3.7",
|
||||||
|
"phpmailer/phpmailer": "5.2.6",
|
||||||
|
"symfony/http-foundation": "2.4.*",
|
||||||
|
"php-pushover/php-pushover": "dev-master",
|
||||||
|
"twig/twig": "1.*"
|
||||||
}
|
}
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -4,7 +4,4 @@ define('PSM_DB_USER', 'db_user');
|
||||||
define('PSM_DB_PASS', 'db_pass');
|
define('PSM_DB_PASS', 'db_pass');
|
||||||
define('PSM_DB_NAME', 'db_name');
|
define('PSM_DB_NAME', 'db_name');
|
||||||
define('PSM_DB_HOST', 'localhost');
|
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);
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
||||||
</head>
|
|
||||||
<body></body>
|
|
||||||
</html>
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -19,147 +18,33 @@
|
||||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Pepijn Over <pep@mailbox.org>
|
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
**/
|
**/
|
||||||
|
|
||||||
namespace {
|
|
||||||
// include main configuration and functionality
|
// include main configuration and functionality
|
||||||
use psm\Router;
|
require_once dirname(__FILE__) . '/../src/bootstrap.php';
|
||||||
use psm\Util\Server\UpdateManager;
|
|
||||||
|
|
||||||
require_once __DIR__ . '/../src/bootstrap.php';
|
if(!psm_is_cli()) {
|
||||||
|
die('This script can only be run from the command line.');
|
||||||
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
|
// 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
|
// 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.
|
// if you want to change PSM_CRON_TIMEOUT, have a look in src/includes/psmconfig.inc.php.
|
||||||
// or you can provide the --timeout=x argument
|
$time = time();
|
||||||
|
if(psm_get_conf('cron_running') == 1 && ($time - psm_get_conf('cron_running_time') < PSM_CRON_TIMEOUT)) {
|
||||||
$status = null;
|
|
||||||
if (PHP_SAPI === 'cli') {
|
|
||||||
$shortOptions = 's:'; // status
|
|
||||||
|
|
||||||
$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.');
|
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);
|
|
||||||
}
|
}
|
||||||
|
if(!defined('PSM_DEBUG') || !PSM_DEBUG) {
|
||||||
|
psm_update_conf('cron_running', 1);
|
||||||
|
}
|
||||||
|
psm_update_conf('cron_running_time', $time);
|
||||||
|
|
||||||
|
$autorun = new \psm\Util\Server\UpdateManager($db);
|
||||||
|
$autorun->run();
|
||||||
|
|
||||||
|
psm_update_conf('cron_running', 0);
|
||||||
|
|
|
@ -1,84 +0,0 @@
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
<?php
|
|
||||||
define('PSM_DB_PREFIX', 'monitor_');
|
|
||||||
define('PSM_DB_USER', 'psm');
|
|
||||||
define('PSM_DB_PASS', 'psm-dev-password');
|
|
||||||
define('PSM_DB_NAME', 'psm');
|
|
||||||
define('PSM_DB_HOST', 'localhost');
|
|
||||||
define('PSM_DB_PORT', '3306'); //3306 is the default port for MySQL. If no specfic port is used, leave it empty.
|
|
||||||
define('PSM_BASE_URL', '');
|
|
||||||
define('PSM_WEBCRON_KEY', '');
|
|
||||||
define('PSM_PUBLIC', false);
|
|
|
@ -44,16 +44,16 @@ master_doc = 'index'
|
||||||
|
|
||||||
# General information about the project.
|
# General information about the project.
|
||||||
project = u'PHP Server Monitor'
|
project = u'PHP Server Monitor'
|
||||||
copyright = u'2008-2017, Pepijn Over'
|
copyright = u'2008-2014, Pepijn Over'
|
||||||
|
|
||||||
# The version info for the project you're documenting, acts as replacement for
|
# The version info for the project you're documenting, acts as replacement for
|
||||||
# |version| and |release|, also used in various other places throughout the
|
# |version| and |release|, also used in various other places throughout the
|
||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = '3.6'
|
version = '3.1.0'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '3.6.0.beta2'
|
release = version
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
|
|
@ -5,7 +5,7 @@ Copyright
|
||||||
|
|
||||||
.. code-block:: none
|
.. code-block:: none
|
||||||
|
|
||||||
Copyright (C) 2008-2017 Pepijn Over <pep_at_mailbox_org>
|
Copyright (C) 2008-2014 Pepijn Over <pep_at_neanderthal-technology.com>
|
||||||
|
|
||||||
|
|
||||||
PHP Server Monitor is free software: you can redistribute it and/or modify
|
PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||||
|
|
106
docs/credits.rst
106
docs/credits.rst
|
@ -9,18 +9,9 @@ Credits
|
||||||
|
|
||||||
The following people have contributed to the development of PHP Server Monitor:
|
The following people have contributed to the development of PHP Server Monitor:
|
||||||
|
|
||||||
|
|
||||||
* Pepijn Over - https://github.com/dopeh
|
* Pepijn Over - https://github.com/dopeh
|
||||||
|
|
||||||
* Creator
|
* Creator and project maintainer
|
||||||
|
|
||||||
* 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
|
* Jérôme Cabanis - https://github.com/Abawell
|
||||||
|
|
||||||
|
@ -29,11 +20,6 @@ The following people have contributed to the development of PHP Server Monitor:
|
||||||
* Mobile compatibility
|
* Mobile compatibility
|
||||||
* Various fixes and improvements
|
* 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
|
* Perri Vardy-Mason - https://github.com/VeoPVM
|
||||||
|
|
||||||
* Textmarketer SMS gateway
|
* Textmarketer SMS gateway
|
||||||
|
@ -76,60 +62,23 @@ The following people have contributed to the development of PHP Server Monitor:
|
||||||
|
|
||||||
* Icon
|
* 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
|
Translators
|
||||||
+++++++++++
|
+++++++++++
|
||||||
|
|
||||||
The following people have contributed to the translation of PHP Server Monitor:
|
The following people have contributed to the translation of PHP Server Monitor:
|
||||||
|
|
||||||
* Bulgarian
|
|
||||||
|
|
||||||
* Plamen Vasilev - https://github.com/PVasileff
|
|
||||||
|
|
||||||
* Catalan
|
|
||||||
|
|
||||||
* caos30 - https://github.com/caos30
|
|
||||||
|
|
||||||
* Chinese
|
* Chinese
|
||||||
|
|
||||||
* manhere - https://github.com/manhere
|
* manhere - https://github.com/manhere
|
||||||
|
|
||||||
* Czech
|
* Bulgarian
|
||||||
|
|
||||||
* Simon Berka - https://github.com/berkas1
|
* Plamen Vasilev - https://github.com/PVasileff
|
||||||
|
|
||||||
* Danish
|
* Danish
|
||||||
|
|
||||||
* nerdalertdk
|
* nerdalertdk
|
||||||
|
|
||||||
* Estonian
|
|
||||||
|
|
||||||
* Richard A. - https://github.com/ItsRichardRaz
|
|
||||||
|
|
||||||
* Finnish
|
|
||||||
|
|
||||||
* Sami Nieminen - https://github.com/celeroncool
|
|
||||||
|
|
||||||
* French
|
* French
|
||||||
|
|
||||||
* David Ribeiro
|
* David Ribeiro
|
||||||
|
@ -138,70 +87,37 @@ The following people have contributed to the translation of PHP Server Monitor:
|
||||||
* German
|
* German
|
||||||
|
|
||||||
* Brunbaur Herbert
|
* Brunbaur Herbert
|
||||||
* Jean Pierre Kolb - https://github.com/JPKCom
|
|
||||||
|
|
||||||
* Italian
|
* Italian
|
||||||
|
|
||||||
* Marco Gargani
|
* Marco Gargani
|
||||||
|
|
||||||
* Japanese
|
|
||||||
|
|
||||||
* Vus520 - https://github.com/vus520
|
|
||||||
* Rht0910 - https://github.com/rht0910
|
|
||||||
|
|
||||||
* Korean
|
* Korean
|
||||||
|
|
||||||
* Ik-Jun
|
* Ik-Jun
|
||||||
|
|
||||||
* Persian
|
|
||||||
|
|
||||||
* Javad Evazzadeh Kakroudi - https://github.com/evazzadeh
|
|
||||||
|
|
||||||
* Polish
|
|
||||||
|
|
||||||
* Arkadiusz Klenczar - https://github.com/aklenczar
|
|
||||||
|
|
||||||
* Portuguese (Brazil)
|
* Portuguese (Brazil)
|
||||||
|
|
||||||
* Luiz Alberto S. Ribeiro
|
* Luiz Alberto S. Ribeiro
|
||||||
|
|
||||||
|
* Spanish
|
||||||
|
|
||||||
|
* Klemens Häckel - http://clickdimension.wordpress.com
|
||||||
|
|
||||||
* Russian
|
* Russian
|
||||||
|
|
||||||
* Roman Beylin - https://github.com/roman-beylin
|
* Roman Beylin - https://github.com/roman-beylin
|
||||||
* Yuriy Lyutov - https://github.com/delysh
|
* 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
|
Vendors
|
||||||
+++++++
|
+++++++
|
||||||
|
|
||||||
The following libraries are being used by PHP Server Monitor:
|
The following libraries are being used by PHP Server Monitor:
|
||||||
|
|
||||||
* Chart.js - http://chartjs.org/
|
* jqPlot - http://www.jqplot.com
|
||||||
* Twitter Bootstrap - http://getbootstrap.com
|
* Twitter Bootstrap - http://getbootstrap.com
|
||||||
* jQuery - https://jquery.com
|
* Bootstrap Multiselect - https://github.com/davidstutz/bootstrap-multiselect
|
||||||
* 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 Mailer - https://github.com/PHPMailer/PHPMailer
|
||||||
* PHP-Pushover - https://github.com/kryap/php-pushover
|
* php-pushover - https://github.com/kryap/php-pushover
|
||||||
* Symfony - https://symfony.com
|
* Twig - http://twig.sensiolabs.org
|
||||||
* Random_compat - https://github.com/paragonie/random_compat
|
|
||||||
* Hammer.js - https://github.com/hammerjs/hammer.js
|
|
||||||
|
|
|
@ -25,10 +25,6 @@ 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 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
|
Adding a new language
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
|
@ -44,25 +40,6 @@ To add a new language, follow these steps:
|
||||||
Getting started
|
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".
|
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.
|
The Router (https://github.com/phpservermon/phpservermon/blob/develop/src/psm/Router.class.php) is used to load the modules.
|
||||||
|
|
108
docs/faq.rst
108
docs/faq.rst
|
@ -10,7 +10,7 @@ Users
|
||||||
What are the differences between the user levels?
|
What are the differences between the user levels?
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
|
|
||||||
There are 3 user levels available: anonymous, regular user and administrator.
|
There are 2 user levels available: regular user and administrator.
|
||||||
|
|
||||||
Administrators:
|
Administrators:
|
||||||
|
|
||||||
|
@ -24,16 +24,6 @@ Regular users:
|
||||||
* View the history and logs of their assigned servers.
|
* View the history and logs of their assigned servers.
|
||||||
* Run the updater on 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
|
Servers
|
||||||
+++++++
|
+++++++
|
||||||
|
@ -61,27 +51,10 @@ 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.
|
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.
|
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 can be modified in the config section, but bij default 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 of the monitor looks like::
|
||||||
|
|
||||||
Mozilla/5.0 (compatible; phpservermon/3.0.1; +http://www.phpservermonitor.org)
|
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
|
Configuration
|
||||||
+++++++++++++
|
+++++++++++++
|
||||||
|
@ -105,80 +78,3 @@ The second part is the actual message. There are a few variables you can use in
|
||||||
* %IP% - The ip of the server
|
* %IP% - The ip of the server
|
||||||
* %PORT% - The port of the server
|
* %PORT% - The port of the server
|
||||||
* %ERROR% - This one only works for the off_* messages and contains the error returned by the monitor
|
* %ERROR% - This one only works for the off_* messages and contains the error returned by the monitor
|
||||||
|
|
||||||
After upgrading, my email stopped working.
|
|
||||||
------------------------------------------
|
|
||||||
|
|
||||||
Run 'php composer.phar update' and you should be good to go!
|
|
||||||
|
|
||||||
Setting up a public page.
|
|
||||||
-------------------------
|
|
||||||
|
|
||||||
1. Set PSM_PUBLIC to true in config.php.
|
|
||||||
2. If not yet existing, create a user with username '__PUBLIC__'. See Users -> "I removed user '__PUBLIC__', what now?" for help.
|
|
||||||
3. Add servers to user '__PUBLIC__'.
|
|
||||||
4. Go to /public.php.
|
|
||||||
|
|
||||||
Notifications
|
|
||||||
+++++++++++++
|
|
||||||
|
|
||||||
I'm not recieving a notification after my server went down.
|
|
||||||
-----------------------------------------------------------
|
|
||||||
|
|
||||||
1. Check if you have setup the noticication method correctly on the config tab.
|
|
||||||
2. Check if you have added the user to the server you want to monitor. This can be found under permissions while editting the server.
|
|
||||||
3. Check if you have enabled the notification method for the server. This can be changed on the server edit page.
|
|
||||||
|
|
||||||
How do I setup Telegram?
|
|
||||||
------------------------
|
|
||||||
A few steps are required to get Telegram notifications working.
|
|
||||||
You need to be an administrator for this part.
|
|
||||||
|
|
||||||
1. Go to @botfather (https://t.me/BotFather) and type /start .
|
|
||||||
2. Type /newbot and give your bot an unique name.
|
|
||||||
3. Save the API token.
|
|
||||||
4. Login to PhpServerMonitor dashboard > config > Telegram > put your api token into Telegram API Token's column.
|
|
||||||
|
|
||||||
How do I sent Telegram notifications to a person?
|
|
||||||
-------------------------------------------------
|
|
||||||
|
|
||||||
1. Go to @cid_bot (https://t.me/cid_bot) and start.
|
|
||||||
2. Save your chat id.
|
|
||||||
3. Login to PhpServerMonitor dashboard then open user profile page, then put your chat id into Telegram chat id's column.
|
|
||||||
4. Press save then activate Telegram notifications button.
|
|
||||||
5. Go to your chat with the bot and press start of type /start.
|
|
||||||
|
|
||||||
How do I sent Telegram notifications to a group?
|
|
||||||
------------------------------------------------
|
|
||||||
|
|
||||||
1. Add @cid_bot (https://t.me/cid_bot) to the group.
|
|
||||||
2. Save the chat id (including the -).
|
|
||||||
3. Remove @cid_bot from the group.
|
|
||||||
4. Add your bot to the group.
|
|
||||||
|
|
||||||
How do I sent Telegram notifications to a channel?
|
|
||||||
--------------------------------------------------
|
|
||||||
|
|
||||||
1. Create a public channel.
|
|
||||||
2. Add the bot as an administator to the channel.
|
|
||||||
3. Save chat id as: @channelname.
|
|
||||||
|
|
||||||
What is the username of my bot?
|
|
||||||
-------------------------------
|
|
||||||
|
|
||||||
1. Go to profile on the monitor.
|
|
||||||
2. Press activate.
|
|
||||||
3. A button will appear, this will direct you to your Telegram bot.
|
|
||||||
|
|
||||||
How do I setup Jabber notifications from Google account?
|
|
||||||
--------------------------------------------------------
|
|
||||||
A few steps are required to get Jabber notifications working for Google account.
|
|
||||||
You need to be an administrator for this part.
|
|
||||||
|
|
||||||
1. Go into you Google Account Security settings (https://myaccount.google.com/security).
|
|
||||||
2. Check that you have two factor auth enabled. If not, activate it.
|
|
||||||
3. Add new app password - copy it.
|
|
||||||
4. Login to PhpServerMonitor dashboard > config > Jabber and use password from step 3 with your Google account in PhpServerMonitor jabber settings.
|
|
||||||
5. As host use `talk.google.com`.
|
|
||||||
6. As username use your whole Google account (for example `example@google.com`).
|
|
||||||
7. As port use `5223` (really, not typo error ...).
|
|
||||||
|
|
|
@ -26,8 +26,7 @@ To change these values correctly, only update the second parameter of the functi
|
||||||
define('PSM_DB_HOST', 'db_host');
|
define('PSM_DB_HOST', 'db_host');
|
||||||
define('PSM_DB_NAME', 'db_name');
|
define('PSM_DB_NAME', 'db_name');
|
||||||
define('PSM_DB_USER', 'db_user');
|
define('PSM_DB_USER', 'db_user');
|
||||||
define('PSM_DB_PASS', 'db_user_password'); NOTE: password containing '%' will cause an error.
|
define('PSM_DB_PASS', 'db_user_password');
|
||||||
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.
|
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.
|
Do NOT remove the quotes around your username as that will result in an error.
|
||||||
|
@ -50,8 +49,6 @@ For a regular upgrade, follow these steps:
|
||||||
* Follow the steps
|
* Follow the steps
|
||||||
* Enjoy
|
* Enjoy
|
||||||
|
|
||||||
Alternatively you can use updater.sh script.
|
|
||||||
|
|
||||||
From 2.0
|
From 2.0
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
@ -94,67 +91,10 @@ 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
|
*/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.
|
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.
|
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.
|
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
|
Troubleshooting
|
||||||
+++++++++++++++
|
+++++++++++++++
|
||||||
|
@ -163,4 +103,3 @@ If you have problems setting up or accessing your monitor and do not know why, e
|
||||||
To enable debug mode, add the following line to your config.php file::
|
To enable debug mode, add the following line to your config.php file::
|
||||||
|
|
||||||
define('PSM_DEBUG', true);
|
define('PSM_DEBUG', true);
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ Features
|
||||||
++++++++
|
++++++++
|
||||||
|
|
||||||
* Monitor services and websites (see below).
|
* Monitor services and websites (see below).
|
||||||
* Email, SMS, Pushover, Telegram and Jabber notifications.
|
* Email, SMS and Pushover notifications.
|
||||||
* View history graphs of uptime and latency.
|
* View history graphs of uptime and latency.
|
||||||
* User authentication with 2 levels (administrator and regular user).
|
* User authentication with 2 levels (administrator and regular user).
|
||||||
* Logs of connection errors, outgoing emails and text messages.
|
* Logs of connection errors, outgoing emails and text messages.
|
||||||
|
@ -44,27 +44,17 @@ There are two different ways to monitor a server:
|
||||||
Notifications
|
Notifications
|
||||||
-------------
|
-------------
|
||||||
Each server has its own settings regarding notification.
|
Each server has its own settings regarding notification.
|
||||||
You can choose for email, text message (SMS), Pushover.net, Telegram and Jabber notifications.
|
You can choose for email, text message (SMS) and Pushover.net notifications.
|
||||||
The following SMS gateways are currently available:
|
The following SMS gateways are currently available:
|
||||||
|
|
||||||
* Clickatell - <https://www.clickatell.com>
|
* Clickatell - <https://www.clickatell.com>
|
||||||
* Inetworx - <https://www.inetworx.ch>
|
* Inetworx - <http://www.inetworx.ch>
|
||||||
* Messagebird - <https://www.messagebird.com>
|
* Mollie - <http://www.mollie.nl>
|
||||||
* Mosms - <https://www.mosms.com>
|
* Mosms - <http://www.mosms.com>
|
||||||
* Smsglobal - <https://smsglobal.com/>
|
* Smsglobal - <http://smsglobal.com/>
|
||||||
* SMSit - <https://www.smsit.dk/>
|
* SMSit - <http://www.smsit.dk/>
|
||||||
* Spryng - <https://www.spryng.nl>
|
* Spryng - <http://www.spryng.nl>
|
||||||
* Textmarketer - <https://www.textmarketer.co.uk>
|
* Textmarketer - <http://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.
|
Please note: for these gateways you will need an account with sufficient credits.
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,6 @@ Requirements
|
||||||
|
|
||||||
* Web server
|
* Web server
|
||||||
* MySQL database
|
* MySQL database
|
||||||
* For PHP5: 5.5.9+
|
* PHP 5.3.7+
|
||||||
* For PHP7: 7.0.8+
|
|
||||||
* PHP cURL package
|
* PHP cURL package
|
||||||
* PHP PDO mysql driver
|
* PHP PDO mysql driver
|
||||||
* PHP XML package
|
|
||||||
|
|
BIN
favicon.png
BIN
favicon.png
Binary file not shown.
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.6 KiB |
26
index.php
26
index.php
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -19,31 +18,16 @@
|
||||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Pepijn Over <pep@mailbox.org>
|
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
**/
|
**/
|
||||||
|
|
||||||
require __DIR__ . '/src/bootstrap.php';
|
require 'src/bootstrap.php';
|
||||||
|
|
||||||
psm_no_cache();
|
psm_no_cache();
|
||||||
|
|
||||||
if (isset($_GET["logout"])) {
|
$router = new psm\Router();
|
||||||
$router->getService('user')->doLogout();
|
$router->run();
|
||||||
// logged out, redirect to login
|
|
||||||
header('Location: ' . psm_build_url());
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
|
|
||||||
$mod = psm_GET('mod', PSM_MODULE_DEFAULT);
|
|
||||||
|
|
||||||
try {
|
|
||||||
$router->run($mod);
|
|
||||||
} catch (\InvalidArgumentException $e) {
|
|
||||||
// invalid module, try the default one
|
|
||||||
// it that somehow also doesnt exist, we have a bit of an issue
|
|
||||||
// and we really have no reason catch it
|
|
||||||
$router->run(PSM_MODULE_DEFAULT);
|
|
||||||
}
|
|
14
install.php
14
install.php
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -19,17 +18,16 @@
|
||||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Pepijn Over <pep@mailbox.org>
|
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
**/
|
**/
|
||||||
|
|
||||||
namespace {
|
define('PSM_INSTALL', true);
|
||||||
define('PSM_INSTALL', true);
|
|
||||||
|
|
||||||
require __DIR__ . '/src/bootstrap.php';
|
require 'src/bootstrap.php';
|
||||||
|
|
||||||
$router->run('install');
|
$router = new psm\Router();
|
||||||
}
|
$router->run('install');
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
*
|
|
||||||
!.gitignore
|
|
|
@ -1,21 +0,0 @@
|
||||||
{
|
|
||||||
"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
BIN
phpservermon.png
Binary file not shown.
Before Width: | Height: | Size: 6.0 KiB |
|
@ -1,70 +0,0 @@
|
||||||
---
|
|
||||||
- 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
|
|
||||||
|
|
|
@ -1,73 +0,0 @@
|
||||||
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);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});*/
|
|
|
@ -1,8 +0,0 @@
|
||||||
#!/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
10
setup-php.sh
|
@ -1,10 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
# check if vendor dir is existing
|
|
||||||
DIR="/vagrant/vendor/"
|
|
||||||
if [ -d "$DIR" ]; then
|
|
||||||
# Take action if $DIR exists. #
|
|
||||||
echo "vendor dir found, nothing to do..."
|
|
||||||
else
|
|
||||||
echo "vendor dir not found, installing dependencies..."
|
|
||||||
cd /vagrant/ && php composer.phar install
|
|
||||||
fi
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -19,108 +18,100 @@
|
||||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Pepijn Over <pep@mailbox.org>
|
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
* @since phpservermon 2.1.0
|
* @since phpservermon 2.1.0
|
||||||
**/
|
**/
|
||||||
|
|
||||||
namespace {
|
// Include paths
|
||||||
// Include paths
|
define('PSM_PATH_SRC', dirname(__FILE__) . DIRECTORY_SEPARATOR);
|
||||||
define('PSM_PATH_SRC', __DIR__ . DIRECTORY_SEPARATOR);
|
define('PSM_PATH_INC', PSM_PATH_SRC . 'includes' . DIRECTORY_SEPARATOR);
|
||||||
define('PSM_PATH_CONFIG', PSM_PATH_SRC . 'config' . DIRECTORY_SEPARATOR);
|
define('PSM_PATH_TPL', PSM_PATH_SRC . 'templates' . DIRECTORY_SEPARATOR);
|
||||||
define('PSM_PATH_LANG', PSM_PATH_SRC . 'lang' . 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
|
// user levels
|
||||||
define('PSM_USER_ADMIN', 10);
|
define('PSM_USER_ADMIN', 10);
|
||||||
define('PSM_USER_USER', 20);
|
define('PSM_USER_USER', 20);
|
||||||
define('PSM_USER_ANONYMOUS', 30);
|
define('PSM_USER_ANONYMOUS', 30);
|
||||||
|
|
||||||
if (function_exists('date_default_timezone_set') && function_exists('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());
|
date_default_timezone_set(@date_default_timezone_get());
|
||||||
}
|
}
|
||||||
|
|
||||||
// find config file
|
// find config file
|
||||||
$path_conf = PSM_PATH_SRC . '../config.php';
|
$path_conf = PSM_PATH_SRC . '../config.php';
|
||||||
if (file_exists($path_conf)) {
|
if(file_exists($path_conf)) {
|
||||||
include_once $path_conf;
|
include_once $path_conf;
|
||||||
}
|
}
|
||||||
// check for a debug var
|
// check for a debug var
|
||||||
if (!defined('PSM_DEBUG')) {
|
if(!defined('PSM_DEBUG')) {
|
||||||
define('PSM_DEBUG', false);
|
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;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// Debug enabled: report everything
|
// auto-find all include files
|
||||||
// Debug disabled: report error only if created manually
|
$includes = glob(PSM_PATH_INC . '*.inc.php');
|
||||||
ini_set('display_errors', 1);
|
foreach($includes as $file) {
|
||||||
PSM_DEBUG ? error_reporting(E_ALL) : error_reporting(E_USER_ERROR);
|
include_once $file;
|
||||||
|
}
|
||||||
|
// init db connection
|
||||||
|
$db = new psm\Service\Database();
|
||||||
|
|
||||||
// check for a cron allowed ip array
|
// sanity check!
|
||||||
if (!defined('PSM_CRON_ALLOW')) {
|
if(!defined('PSM_INSTALL') || !PSM_INSTALL) {
|
||||||
//serialize for php version lower than 7.0.0
|
if($db->getDbHost() === null) {
|
||||||
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
|
// no config file has been loaded, redirect the user to the install
|
||||||
header('Location: install.php');
|
header('Location: install.php');
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
// config file has been loaded, check if we have a connection
|
// config file has been loaded, check if we have a connection
|
||||||
if (!$db->status()) {
|
if(!$db->status()) {
|
||||||
trigger_error("Unable to establish database connection...", E_USER_ERROR);
|
die('Unable to establish database connection...');
|
||||||
}
|
}
|
||||||
// attempt to load configuration from database
|
// attempt to load configuration from database
|
||||||
if (!psm_load_conf()) {
|
if(!psm_load_conf()) {
|
||||||
// unable to load from config table
|
// unable to load from config table
|
||||||
header('Location: install.php');
|
header('Location: install.php');
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
// config load OK, make sure database version is up to date
|
// config load OK, make sure database version is up to date
|
||||||
$installer = new \psm\Util\Install\Installer($db);
|
$installer = new \psm\Util\Install\Installer($db);
|
||||||
if ($installer->isUpgradeRequired()) {
|
if($installer->isUpgradeRequired()) {
|
||||||
trigger_error(
|
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.');
|
||||||
"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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$lang = psm_get_conf('language', 'en_US');
|
||||||
|
psm_load_lang($lang);
|
|
@ -1,68 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
|
|
||||||
<container xmlns="http://symfony.com/schema/dic/services"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
|
|
||||||
<parameters>
|
|
||||||
<parameter key="config.theme" type="constant">PSM_THEME</parameter>
|
|
||||||
|
|
||||||
<parameter key="modules" type="collection">
|
|
||||||
<parameter>module.config</parameter>
|
|
||||||
<parameter>module.error</parameter>
|
|
||||||
<parameter>module.server</parameter>
|
|
||||||
<parameter>module.user</parameter>
|
|
||||||
<parameter>module.install</parameter>
|
|
||||||
</parameter>
|
|
||||||
|
|
||||||
<parameter key="path.src" type="constant">PSM_PATH_SRC</parameter>
|
|
||||||
<parameter key="path.templates">%path.src%templates</parameter>
|
|
||||||
|
|
||||||
<parameter key="db.host" type="constant">PSM_DB_HOST</parameter>
|
|
||||||
<parameter key="db.port" type="constant">PSM_DB_PORT</parameter>
|
|
||||||
<parameter key="db.user" type="constant">PSM_DB_USER</parameter>
|
|
||||||
<parameter key="db.pass" type="constant">PSM_DB_PASS</parameter>
|
|
||||||
<parameter key="db.name" type="constant">PSM_DB_NAME</parameter>
|
|
||||||
</parameters>
|
|
||||||
|
|
||||||
<services>
|
|
||||||
<!--MODULES start-->
|
|
||||||
<service id="module.config" class="psm\Module\Config\ConfigModule" />
|
|
||||||
<service id="module.error" class="psm\Module\Error\ErrorModule" />
|
|
||||||
<service id="module.server" class="psm\Module\Server\ServerModule" />
|
|
||||||
<service id="module.user" class="psm\Module\User\UserModule" />
|
|
||||||
<service id="module.install" class="psm\Module\Install\InstallModule" />
|
|
||||||
<!--MODULES end-->
|
|
||||||
|
|
||||||
<!--SERVICES start-->
|
|
||||||
<service id="db" class="psm\Service\Database">
|
|
||||||
<argument>%db.host%</argument>
|
|
||||||
<argument>%db.user%</argument>
|
|
||||||
<argument>%db.pass%</argument>
|
|
||||||
<argument>%db.name%</argument>
|
|
||||||
<argument>%db.port%</argument>
|
|
||||||
</service>
|
|
||||||
|
|
||||||
<service id="event" class="Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher">
|
|
||||||
<argument type="service" id="service_container" />
|
|
||||||
</service>
|
|
||||||
<service id="user" class="psm\Service\User">
|
|
||||||
<argument type="service" id="db" />
|
|
||||||
</service>
|
|
||||||
<service id="twig.loader" class="Twig_Loader_Filesystem">
|
|
||||||
<argument>%path.templates%/%config.theme%</argument>
|
|
||||||
</service>
|
|
||||||
<service id="twig" class="Twig_Environment">
|
|
||||||
<argument type="service" id="twig.loader" />
|
|
||||||
</service>
|
|
||||||
<!--SERVICES end-->
|
|
||||||
|
|
||||||
<!--UTIL start-->
|
|
||||||
<service id="util.user.validator" class="psm\Util\User\UserValidator">
|
|
||||||
<argument type="service" id="user" />
|
|
||||||
</service>
|
|
||||||
<service id="util.server.updatemanager" class="psm\Util\Server\UpdateManager">
|
|
||||||
<argument type="service" id="service_container" />
|
|
||||||
</service>
|
|
||||||
<!--UTIL end-->
|
|
||||||
</services>
|
|
||||||
</container>
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -20,7 +19,7 @@
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Anthony Ferrara <ircmaxell@php.net>
|
* @author Anthony Ferrara <ircmaxell@php.net>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
|
@ -36,6 +35,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!defined('PASSWORD_DEFAULT')) {
|
if (!defined('PASSWORD_DEFAULT')) {
|
||||||
|
|
||||||
define('PASSWORD_BCRYPT', 1);
|
define('PASSWORD_BCRYPT', 1);
|
||||||
define('PASSWORD_DEFAULT', PASSWORD_BCRYPT);
|
define('PASSWORD_DEFAULT', PASSWORD_BCRYPT);
|
||||||
|
|
||||||
|
@ -48,8 +48,7 @@ if (!defined('PASSWORD_DEFAULT')) {
|
||||||
*
|
*
|
||||||
* @return string|false The hashed password, or false on error.
|
* @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')) {
|
if (!function_exists('crypt')) {
|
||||||
trigger_error("Crypt must be loaded for password_hash to function", E_USER_WARNING);
|
trigger_error("Crypt must be loaded for password_hash to function", E_USER_WARNING);
|
||||||
return null;
|
return null;
|
||||||
|
@ -59,8 +58,7 @@ if (!defined('PASSWORD_DEFAULT')) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (!is_int($algo)) {
|
if (!is_int($algo)) {
|
||||||
trigger_error("password_hash() expects parameter 2 to be long, " . gettype($algo) .
|
trigger_error("password_hash() expects parameter 2 to be long, " . gettype($algo) . " given", E_USER_WARNING);
|
||||||
" given", E_USER_WARNING);
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
switch ($algo) {
|
switch ($algo) {
|
||||||
|
@ -70,10 +68,7 @@ if (!defined('PASSWORD_DEFAULT')) {
|
||||||
if (isset($options['cost'])) {
|
if (isset($options['cost'])) {
|
||||||
$cost = $options['cost'];
|
$cost = $options['cost'];
|
||||||
if ($cost < 4 || $cost > 31) {
|
if ($cost < 4 || $cost > 31) {
|
||||||
trigger_error(
|
trigger_error(sprintf("password_hash(): Invalid bcrypt cost parameter specified: %d", $cost), E_USER_WARNING);
|
||||||
sprintf("password_hash(): Invalid bcrypt cost parameter specified: %d", $cost),
|
|
||||||
E_USER_WARNING
|
|
||||||
);
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -84,10 +79,7 @@ if (!defined('PASSWORD_DEFAULT')) {
|
||||||
$hash_format = sprintf("$2y$%02d$", $cost);
|
$hash_format = sprintf("$2y$%02d$", $cost);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
trigger_error(
|
trigger_error(sprintf("password_hash(): Unknown password hashing algorithm: %s", $algo), E_USER_WARNING);
|
||||||
sprintf("password_hash(): Unknown password hashing algorithm: %s", $algo),
|
|
||||||
E_USER_WARNING
|
|
||||||
);
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (isset($options['salt'])) {
|
if (isset($options['salt'])) {
|
||||||
|
@ -104,7 +96,6 @@ if (!defined('PASSWORD_DEFAULT')) {
|
||||||
$salt = (string) $options['salt'];
|
$salt = (string) $options['salt'];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// no break
|
|
||||||
case 'array':
|
case 'array':
|
||||||
case 'resource':
|
case 'resource':
|
||||||
default:
|
default:
|
||||||
|
@ -112,14 +103,7 @@ if (!defined('PASSWORD_DEFAULT')) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (strlen($salt) < $required_salt_len) {
|
if (strlen($salt) < $required_salt_len) {
|
||||||
trigger_error(
|
trigger_error(sprintf("password_hash(): Provided salt is too short: %d expecting %d", strlen($salt), $required_salt_len), E_USER_WARNING);
|
||||||
sprintf(
|
|
||||||
"password_hash(): Provided salt is too short: %d expecting %d",
|
|
||||||
strlen($salt),
|
|
||||||
$required_salt_len
|
|
||||||
),
|
|
||||||
E_USER_WARNING
|
|
||||||
);
|
|
||||||
return null;
|
return null;
|
||||||
} elseif (0 == preg_match('#^[a-zA-Z0-9./]+$#D', $salt)) {
|
} elseif (0 == preg_match('#^[a-zA-Z0-9./]+$#D', $salt)) {
|
||||||
$salt = str_replace('+', '.', base64_encode($salt));
|
$salt = str_replace('+', '.', base64_encode($salt));
|
||||||
|
@ -192,8 +176,7 @@ if (!defined('PASSWORD_DEFAULT')) {
|
||||||
*
|
*
|
||||||
* @return array The array of information about the hash.
|
* @return array The array of information about the hash.
|
||||||
*/
|
*/
|
||||||
function password_get_info($hash)
|
function password_get_info($hash) {
|
||||||
{
|
|
||||||
$return = array(
|
$return = array(
|
||||||
'algo' => 0,
|
'algo' => 0,
|
||||||
'algoName' => 'unknown',
|
'algoName' => 'unknown',
|
||||||
|
@ -219,8 +202,7 @@ if (!defined('PASSWORD_DEFAULT')) {
|
||||||
*
|
*
|
||||||
* @return boolean True if the password needs to be rehashed.
|
* @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);
|
$info = password_get_info($hash);
|
||||||
if ($info['algo'] != $algo) {
|
if ($info['algo'] != $algo) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -244,8 +226,7 @@ if (!defined('PASSWORD_DEFAULT')) {
|
||||||
*
|
*
|
||||||
* @return boolean If the password matches the hash
|
* @return boolean If the password matches the hash
|
||||||
*/
|
*/
|
||||||
function password_verify($password, $hash)
|
function password_verify($password, $hash) {
|
||||||
{
|
|
||||||
if (!function_exists('crypt')) {
|
if (!function_exists('crypt')) {
|
||||||
trigger_error("Crypt must be loaded for password_verify to function", E_USER_WARNING);
|
trigger_error("Crypt must be loaded for password_verify to function", E_USER_WARNING);
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -19,8 +18,8 @@
|
||||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Pepijn Over <pep@mailbox.org>
|
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
|
@ -30,19 +29,19 @@
|
||||||
/**
|
/**
|
||||||
* Current PSM version
|
* Current PSM version
|
||||||
*/
|
*/
|
||||||
define('PSM_VERSION', '3.6.0');
|
define('PSM_VERSION', '3.1.0');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* URL to check for updates. Will not be checked if turned off on config page.
|
* URL to check for updates. Will not be checked if turned off on config page.
|
||||||
* @see psm_update_available()
|
* @see psm_update_available()
|
||||||
*/
|
*/
|
||||||
define('PSM_UPDATE_URL', 'https://api.github.com/repos/phpservermon/phpservermon/releases/latest');
|
define('PSM_UPDATE_URL', 'http://www.phpservermonitor.org/version.php');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default update interval (1 day). Only applicable when updates are enabled.
|
* Default update interval (1 week). Only applicable when updates are enabled.
|
||||||
* @see psm_update_available()
|
* @see psm_update_available()
|
||||||
*/
|
*/
|
||||||
define('PSM_UPDATE_INTERVAL', 1 * 24 * 60 * 60);
|
define('PSM_UPDATE_INTERVAL', 7 * 24 * 60 * 60);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuration for: Hashing strength
|
* Configuration for: Hashing strength
|
||||||
|
@ -67,7 +66,7 @@ define('PSM_UPDATE_INTERVAL', 1 * 24 * 60 * 60);
|
||||||
*
|
*
|
||||||
* This constant will be used in the login and the registration class.
|
* 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
|
* Configuration for: Cookies
|
||||||
|
@ -84,9 +83,9 @@ define('PSM_LOGIN_HASH_COST_FACTOR', '10');
|
||||||
* COOKIE_DOMAIN: The domain where the cookie is valid for, like '.mydomain.com'
|
* 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.
|
* 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_RUNTIME", 1209600);
|
||||||
define('PSM_LOGIN_COOKIE_DOMAIN', null);
|
define("PSM_LOGIN_COOKIE_DOMAIN", null);
|
||||||
define('PSM_LOGIN_COOKIE_SECRET_KEY', '4w900de52e3ap7y77y8675jy6c594286');
|
define("PSM_LOGIN_COOKIE_SECRET_KEY", "4w900de52e3ap7y77y8675jy6c594286");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Number of seconds the reset link is valid after sending it to the user.
|
* Number of seconds the reset link is valid after sending it to the user.
|
||||||
|
@ -94,7 +93,7 @@ define('PSM_LOGIN_COOKIE_SECRET_KEY', '4w900de52e3ap7y77y8675jy6c594286');
|
||||||
define('PSM_LOGIN_RESET_RUNTIME', 3600);
|
define('PSM_LOGIN_RESET_RUNTIME', 3600);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Number of seconds the cron is supposedly dead and we will run another cron anyway. Set to 0 to disable.
|
* Number of seconds the cron is supposedly dead and we will run another cron anyway.
|
||||||
*/
|
*/
|
||||||
define('PSM_CRON_TIMEOUT', 600);
|
define('PSM_CRON_TIMEOUT', 600);
|
||||||
|
|
||||||
|
@ -103,42 +102,13 @@ define('PSM_CRON_TIMEOUT', 600);
|
||||||
*/
|
*/
|
||||||
define('PSM_CURL_TIMEOUT', 10);
|
define('PSM_CURL_TIMEOUT', 10);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of the default theme.
|
||||||
|
*/
|
||||||
|
define('PSM_THEME', 'default');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clone URL for the Pushover.net service.
|
* Clone URL for the Pushover.net service.
|
||||||
*/
|
*/
|
||||||
define('PSM_PUSHOVER_CLONE_URL', 'https://pushover.net/apps/clone/php_server_monitor');
|
define('PSM_PUSHOVER_CLONE_URL', 'https://pushover.net/apps/clone/php_server_monitor');
|
||||||
|
|
||||||
/**
|
|
||||||
* Get chat id for Telegram service.
|
|
||||||
*/
|
|
||||||
define('PSM_TELEGRAM_GET_ID_URL', 'https://telegram.me/cid_bot');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* By defining the PSM_BASE_URL, you will force the psm_build_url() to use this.
|
|
||||||
* Useful for cronjobs if it cannot be auto-detected.
|
|
||||||
*/
|
|
||||||
//define('PSM_BASE_URL', null);
|
|
||||||
|
|
||||||
if (!defined('PSM_MODULE_DEFAULT')) {
|
|
||||||
/**
|
|
||||||
* Default theme
|
|
||||||
*/
|
|
||||||
define('PSM_THEME', 'default');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Default module (if none given or invalid one)
|
|
||||||
*/
|
|
||||||
define('PSM_MODULE_DEFAULT', 'server_status');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (defined('PSM_JABBER_FORCE_TLS') === false) {
|
|
||||||
define('PSM_JABBER_FORCE_TLS', true);
|
|
||||||
}
|
|
||||||
if (defined('PSM_JABBER_AUTH_TYPE') === false) {
|
|
||||||
// possible values: PLAIN, X-OAUTH2, DIGEST-MD5, CRAM-MD5, SCRAM-SHA-1, ANONYMOUS, EXTERNAL
|
|
||||||
define('PSM_JABBER_AUTH_TYPE', 'PLAIN'); // default just plain because of google for example :(
|
|
||||||
}
|
|
||||||
if (defined('PSM_JABBER_DEBUG_LEVEL') === false) {
|
|
||||||
// possible values: ERROR, WARNING, NOTICE, INFO, DEBUG
|
|
||||||
define('PSM_JABBER_DEBUG_LEVEL', JAXLLogger::WARNING);
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
||||||
</head>
|
|
||||||
<body></body>
|
|
||||||
</html>
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -20,7 +19,7 @@
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Plamen Vasilev a.k.a Paco <p.vasileff@gmail.com>
|
* @author Plamen Vasilev a.k.a Paco <p.vasileff@gmail.com>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
|
@ -28,13 +27,7 @@
|
||||||
|
|
||||||
$sm_lang = array(
|
$sm_lang = array(
|
||||||
'name' => 'Български - Bulgarian',
|
'name' => 'Български - Bulgarian',
|
||||||
'locale' => array(
|
'locale' => array('bg_BG.UTF-8', 'bg_BG', 'bulgarian'),
|
||||||
'0' => 'bg_BG.UTF-8',
|
|
||||||
'1' => 'bg_BG',
|
|
||||||
'2' => 'bulgarian',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'bg',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
'system' => array(
|
||||||
'title' => 'Мониторинг',
|
'title' => 'Мониторинг',
|
||||||
'install' => 'Инсталация',
|
'install' => 'Инсталация',
|
||||||
|
@ -48,13 +41,12 @@ $sm_lang = array(
|
||||||
'no' => 'Не',
|
'no' => 'Не',
|
||||||
'insert' => 'Добавяне',
|
'insert' => 'Добавяне',
|
||||||
'add_new' => 'Добави нов',
|
'add_new' => 'Добави нов',
|
||||||
'update_available' => 'Налична е нова версия: ({version}). Може да я свалите
|
'update_available' => 'Налична е нова версия: ({version}). Може да я свалите от <a href="http://www.phpservermonitor.org" target="_blank">тук</a>.',
|
||||||
от <a href="https://github.com/phpservermon/phpservermon/releases/latest"
|
|
||||||
target="_blank" rel="noopener">тук</a>.',
|
|
||||||
'back_to_top' => 'Нагоре',
|
'back_to_top' => 'Нагоре',
|
||||||
'go_back' => 'Назад',
|
'go_back' => 'Назад',
|
||||||
'ok' => 'Ок',
|
'ok' => 'Ок',
|
||||||
'cancel' => 'Отказ',
|
'cancel' => 'Отказ',
|
||||||
|
// date/time са във формат според параметъра strftime PHP функцията http://php.net/manual/function.strftime.php
|
||||||
'short_day_format' => '%B %e',
|
'short_day_format' => '%B %e',
|
||||||
'long_day_format' => '%B %e, %Y',
|
'long_day_format' => '%B %e, %Y',
|
||||||
'yesterday_format' => 'Вчера в %k:%M',
|
'yesterday_format' => 'Вчера в %k:%M',
|
||||||
|
@ -66,7 +58,6 @@ $sm_lang = array(
|
||||||
'a_minute_ago' => 'преди минута',
|
'a_minute_ago' => 'преди минута',
|
||||||
'seconds_ago' => 'преди %d секунди',
|
'seconds_ago' => 'преди %d секунди',
|
||||||
'a_second_ago' => 'преди секунда',
|
'a_second_ago' => 'преди секунда',
|
||||||
'seconds' => 'секунди',
|
|
||||||
),
|
),
|
||||||
'menu' => array(
|
'menu' => array(
|
||||||
'config' => 'Настройки',
|
'config' => 'Настройки',
|
||||||
|
@ -83,46 +74,29 @@ $sm_lang = array(
|
||||||
'user_name' => 'Потребител',
|
'user_name' => 'Потребител',
|
||||||
'password' => 'Парола',
|
'password' => 'Парола',
|
||||||
'password_repeat' => 'Повторете паролата',
|
'password_repeat' => 'Повторете паролата',
|
||||||
'password_leave_blank' => 'Оставете празно, за да не бъде променена
|
'password_leave_blank' => 'Оставете празно, за да не бъде променена паролата',
|
||||||
паролата',
|
|
||||||
'level' => 'Ниво на достъп',
|
'level' => 'Ниво на достъп',
|
||||||
'level_10' => 'Администратор',
|
'level_10' => 'Администратор',
|
||||||
'level_20' => 'Потребител',
|
'level_20' => 'Потребител',
|
||||||
'level_description' => '<b>Администраторите</b> имат пълен достъп: могат
|
'level_description' => '<b>Администраторите</b> имат пълен достъп: могат да управляват сървърите, потребителите и да редактират глобалните настройки.<br/><b>Потребителите</b> могат само да виждат статуса на сървърите и да обнояват информацията за даден сървър, за който им е разрешен достъп.',
|
||||||
да управляват сървърите, потребителите и да
|
|
||||||
редактират глобалните
|
|
||||||
настройки.<br><b>Потребителите</b> могат само да
|
|
||||||
виждат статуса на сървърите и да обнояват
|
|
||||||
информацията за даден сървър, за който им е
|
|
||||||
разрешен достъп.',
|
|
||||||
'mobile' => 'Мобилен телефон',
|
'mobile' => 'Мобилен телефон',
|
||||||
'email' => 'Имейл',
|
'email' => 'Имейл',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'pushover_description' => '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.',
|
||||||
известия в реално време. Посетете <a
|
'pushover_key' => 'Pushover Key',
|
||||||
href="https://pushover.net/" target="_blank">техния сайт</a> за
|
'pushover_device' => 'Pushover Device',
|
||||||
повече информация.',
|
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||||
'pushover_key' => 'Pushover Ключ',
|
|
||||||
'pushover_device' => 'Pushover Устройство',
|
|
||||||
'pushover_device_description' => 'Име на устройство, което да получава
|
|
||||||
съобщение. Оставете празно, за изпращане
|
|
||||||
до всички устройства.',
|
|
||||||
'delete_title' => 'Изтриване на потребител',
|
'delete_title' => 'Изтриване на потребител',
|
||||||
'delete_message' => 'Сигурни ли сте, че искате да изтриете потребител
|
'delete_message' => 'Сигурни ли сте, че искате да изтриете потребител \'%1\'?',
|
||||||
\'%1\'?',
|
|
||||||
'deleted' => 'Потребителят е изтрит успешно.',
|
'deleted' => 'Потребителят е изтрит успешно.',
|
||||||
'updated' => 'Информацията за потребителя е обновена.',
|
'updated' => 'Информацията за потребителя е обновена.',
|
||||||
'inserted' => 'Потребителят е добавен.',
|
'inserted' => 'Потребителят е добавен.',
|
||||||
'profile' => 'Профил',
|
'profile' => 'Профил',
|
||||||
'profile_updated' => 'Профилът е обновен успешно',
|
'profile_updated' => 'Профилът е обновен успешно',
|
||||||
'error_user_name_bad_length' => 'Потребителското име трябва да съдържа
|
'error_user_name_bad_length' => 'Потребителското име трябва да съдържа между 2 и 64 символа',
|
||||||
между 2 и 64 символа',
|
'error_user_name_invalid' => 'Може да съдържа само латински букви (a-z, A-Z), цифри (0-9) и долна черта (_).',
|
||||||
'error_user_name_invalid' => 'Може да съдържа само латински букви (a-z, A-Z),
|
'error_user_name_exists' => 'Вече съществува акаунт с това потребителско име.',
|
||||||
цифри (0-9), точка (.) и долна черта (_).',
|
'error_user_email_bad_length' => 'Имейл адреса трябва да съдържа между 5 и 255 символа.',
|
||||||
'error_user_name_exists' => 'Вече съществува акаунт с това потребителско
|
|
||||||
име.',
|
|
||||||
'error_user_email_bad_length' => 'Имейл адреса трябва да съдържа между 5 и 255
|
|
||||||
символа.',
|
|
||||||
'error_user_email_invalid' => 'Въведения имейл адрес е грешен.',
|
'error_user_email_invalid' => 'Въведения имейл адрес е грешен.',
|
||||||
'error_user_level_invalid' => 'Избраното ниво на достъп е грешно.',
|
'error_user_level_invalid' => 'Избраното ниво на достъп е грешно.',
|
||||||
'error_user_no_match' => 'Потребителят не може да бъде намерен.',
|
'error_user_no_match' => 'Потребителят не може да бъде намерен.',
|
||||||
|
@ -137,31 +111,22 @@ $sm_lang = array(
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'no_logs' => 'Няма налични логове',
|
'no_logs' => 'Няма налични логове',
|
||||||
'clear' => 'Изчистване на дневника',
|
|
||||||
'delete_title' => 'Изтриване на дневника',
|
|
||||||
'delete_message' => 'Наистина ли искате да изтриете <b>всички</b>
|
|
||||||
дневници?',
|
|
||||||
),
|
),
|
||||||
'servers' => array(
|
'servers' => array(
|
||||||
'server' => 'Сървър',
|
'server' => 'Сървър',
|
||||||
'status' => 'Статус',
|
'status' => 'Статус',
|
||||||
'label' => 'Име',
|
'label' => 'Име',
|
||||||
'domain' => 'Хост',
|
'domain' => 'Хост',
|
||||||
'timeout' => 'Изчакване',
|
'timeout' => 'Timeout',
|
||||||
'timeout_description' => 'Брой секунди, който да изчака отговор от
|
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||||
сървъра',
|
|
||||||
'port' => 'Порт',
|
'port' => 'Порт',
|
||||||
'type' => 'Тип',
|
'type' => 'Тип',
|
||||||
'type_website' => 'Сайт',
|
'type_website' => 'Сайт',
|
||||||
'type_service' => 'Услуга',
|
'type_service' => 'Услуга',
|
||||||
'pattern' => 'Търсене на стринг/образец',
|
'pattern' => 'Търсене на стринг/образец',
|
||||||
'pattern_description' => 'Ако този текст не е намерен в интернет
|
'pattern_description' => 'Ако този текст не е намерен в интернет страницата (когато имате добавен сайт), той ще бъде маркиран като Офлайн. Регулярните изрази са разрешени.',
|
||||||
страницата (когато имате добавен сайт), той ще
|
|
||||||
бъде маркиран като Офлайн. Регулярните изрази
|
|
||||||
са разрешени.',
|
|
||||||
'last_check' => 'Последна проверка',
|
'last_check' => 'Последна проверка',
|
||||||
'last_online' => 'Последно на линия',
|
'last_online' => 'Последно на линия',
|
||||||
'last_offline' => 'Last offline',
|
|
||||||
'monitoring' => 'Мониторинг',
|
'monitoring' => 'Мониторинг',
|
||||||
'no_monitoring' => 'Не се наблюдава',
|
'no_monitoring' => 'Не се наблюдава',
|
||||||
'email' => 'Имейл',
|
'email' => 'Имейл',
|
||||||
|
@ -169,7 +134,7 @@ $sm_lang = array(
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'send_sms' => 'SMS',
|
'send_sms' => 'SMS',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'users' => 'Потребители',
|
'users' => 'Users',
|
||||||
'delete_title' => 'Изтриване на сървър',
|
'delete_title' => 'Изтриване на сървър',
|
||||||
'delete_message' => 'Сигурни ли сте, че искате да изтриете сървър \'%1\'?',
|
'delete_message' => 'Сигурни ли сте, че искате да изтриете сървър \'%1\'?',
|
||||||
'deleted' => 'Сървъра е изтрит успешно.',
|
'deleted' => 'Сървъра е изтрит успешно.',
|
||||||
|
@ -186,29 +151,24 @@ $sm_lang = array(
|
||||||
'day' => 'Ден',
|
'day' => 'Ден',
|
||||||
'hour' => 'Час',
|
'hour' => 'Час',
|
||||||
'warning_threshold' => 'Предупредителен праг',
|
'warning_threshold' => 'Предупредителен праг',
|
||||||
'warning_threshold_description' => 'Брой неуспешни проверки, преди сървъра
|
'warning_threshold_description' => 'Брой неуспешни проверки, преди сървъра или сайта да бъдат маркирани като Офлайн.',
|
||||||
или сайта да бъдат маркирани като
|
|
||||||
Офлайн.',
|
|
||||||
'chart_last_week' => 'Последната седмица',
|
'chart_last_week' => 'Последната седмица',
|
||||||
'chart_history' => 'История',
|
'chart_history' => 'История',
|
||||||
|
// Charts формат на датата според jqPlot http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html
|
||||||
'chart_day_format' => '%d.%m.%Y',
|
'chart_day_format' => '%d.%m.%Y',
|
||||||
'chart_long_date_format' => '%d.%m.%Y %H:%M:%S',
|
'chart_long_date_format' => '%d.%m.%Y %H:%M:%S',
|
||||||
'chart_short_date_format' => '%d.%m %H:%M',
|
'chart_short_date_format' => '%d.%m %H:%M',
|
||||||
'chart_short_time_format' => '%H:%M',
|
'chart_short_time_format' => '%H:%M',
|
||||||
'warning_notifications_disabled_sms' => 'SMS известията са изключени.',
|
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||||
'warning_notifications_disabled_email' => 'Имейл известията са изключени.',
|
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||||
'warning_notifications_disabled_pushover' => 'Pushover известията са изключени.',
|
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||||
'error_server_no_match' => 'Сървърът не е намерен.',
|
'error_server_no_match' => 'Server not found.',
|
||||||
'error_server_label_bad_length' => 'Името трябва да е между 1 и 255 символа.',
|
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
||||||
'error_server_ip_bad_length' => 'Хоста/IP адреса трябва да е между 1 и 255
|
'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_service' => 'IP адреса е невалиден.',
|
'error_server_ip_bad_website' => 'The website URL is not valid.',
|
||||||
'error_server_ip_bad_website' => 'Сайта е невалиден.',
|
'error_server_type_invalid' => 'The selected server type is invalid.',
|
||||||
'error_server_type_invalid' => 'Избраният тип сървър е невалиден.',
|
'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
|
||||||
'error_server_warning_threshold_invalid' => 'Броя неуспешни проверки, преди
|
|
||||||
сървъра или сайта да бъдат
|
|
||||||
маркирани като Офлайн трябва да е
|
|
||||||
цифра по-голяма от 0.',
|
|
||||||
),
|
),
|
||||||
'config' => array(
|
'config' => array(
|
||||||
'general' => 'Основни настройки',
|
'general' => 'Основни настройки',
|
||||||
|
@ -225,112 +185,87 @@ $sm_lang = array(
|
||||||
'email_smtp_noauth' => 'Оставете празно за "без аутентикация"',
|
'email_smtp_noauth' => 'Оставете празно за "без аутентикация"',
|
||||||
'sms_status' => 'Да се изпращат ли SMS-и',
|
'sms_status' => 'Да се изпращат ли SMS-и',
|
||||||
'sms_gateway' => 'Портал за изпращане на 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_username' => 'Потребител',
|
||||||
'sms_gateway_password' => 'Парола',
|
'sms_gateway_password' => 'Парола',
|
||||||
'sms_from' => 'Номер на изпращача',
|
'sms_from' => 'Номер на изпращача',
|
||||||
'pushover_status' => 'Позволява изпращането на Pushover съобщения',
|
'pushover_status' => 'Allow sending Pushover messages',
|
||||||
'pushover_description' => '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.',
|
||||||
известия в реално време. Посетете <a
|
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||||
href="https://pushover.net/" target="_blank">техния сайт</a> за
|
|
||||||
повече информация.',
|
|
||||||
'pushover_clone_app' => 'Кликнете тук за да създаване на вашият Pushover App',
|
|
||||||
'pushover_api_token' => 'Pushover App API Token',
|
'pushover_api_token' => 'Pushover App API Token',
|
||||||
'pushover_api_token_description' => 'Преди да използвате Pushover, трябва да <a
|
'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.',
|
||||||
href="%1$s" target="_blank" rel="noopener">регистрирате
|
|
||||||
свой App</a> в техния сайт и въведете вашия
|
|
||||||
App API Token тук.',
|
|
||||||
'alert_type' => 'Изберете кога желаете да получавате известия',
|
'alert_type' => 'Изберете кога желаете да получавате известия',
|
||||||
'alert_type_description' => '<b>Промяна на сатуса:</b><br>Ще получавате
|
'alert_type_description' => '<b>Промяна на сатуса:</b><br>'.
|
||||||
известие когато има промяна със връзката на
|
'Ще получавате известие когато има промяна със връзката на даден някой от описаните сървър или сайт. От Онлайн -> Офлайн и от Офлайн -> Онлайн.<br/>'.
|
||||||
даден някой от описаните сървър или сайт. От
|
'<br/><b>Офлайн</b><br>'.
|
||||||
Онлайн -> Офлайн и от Офлайн ->
|
'Ще получите известие когато връзката до сървъра е изгубена за *ПЪРВИ ПЪТ*. Например, '.
|
||||||
Онлайн.<br><br><b>Офлайн</b><br>Ще получите
|
'вашия cron скрипт проверява всеки 15 минути и връзката до сървъра е изгубена в 1 часа през нощта и не работи до 6 часа сутринта '.
|
||||||
известие когато връзката до сървъра е
|
'Вие ще получите едно известие в 1 часа за това<br/>'.
|
||||||
изгубена за *ПЪРВИ ПЪТ*. Например, вашия cron
|
'<br><b>Винаги:</b><br> '.
|
||||||
скрипт проверява всеки 15 минути и връзката
|
'Ще получавате известие при всяка проверка на Вашия крон скрипт дори когато връзката до даден сървър или сайт е била прекъсната в продължение на часове.',
|
||||||
до сървъра е изгубена в 1 часа през нощта и не
|
|
||||||
работи до 6 часа сутринта Вие ще получите
|
|
||||||
едно известие в 1 часа за
|
|
||||||
това<br><br><b>Винаги:</b><br> Ще получавате
|
|
||||||
известие при всяка проверка на Вашия крон
|
|
||||||
скрипт дори когато връзката до даден сървър
|
|
||||||
или сайт е била прекъсната в продължение на
|
|
||||||
часове.',
|
|
||||||
'alert_type_status' => 'Промяна на статуса',
|
'alert_type_status' => 'Промяна на статуса',
|
||||||
'alert_type_offline' => 'Офлайн',
|
'alert_type_offline' => 'Офлайн',
|
||||||
'alert_type_always' => 'Винаги',
|
'alert_type_always' => 'Винаги',
|
||||||
'log_status' => 'Статус на логовете',
|
'log_status' => 'Статус на логовете',
|
||||||
'log_status_description' => 'Ако е отметнато, системата ще записва всяка
|
'log_status_description' => 'Ако е отметнато, системата ще записва всяка промяна.',
|
||||||
промяна.',
|
'log_email' => 'Да се пази ли лог на изпратените имейли от системата',
|
||||||
'log_email' => 'Да се пази ли лог на изпратените имейли от
|
'log_sms' => 'Да се пази ли лог на изпратените SMS съобщения от системата',
|
||||||
системата',
|
'log_pushover' => 'Log pushover messages sent by the script',
|
||||||
'log_sms' => 'Да се пази ли лог на изпратените SMS съобщения от
|
|
||||||
системата',
|
|
||||||
'updated' => 'Настройките са обновени успешно.',
|
'updated' => 'Настройките са обновени успешно.',
|
||||||
'tab_email' => 'Имейл',
|
'tab_email' => 'Имейл',
|
||||||
'tab_sms' => 'SMS',
|
'tab_sms' => 'SMS',
|
||||||
'tab_pushover' => 'Pushover',
|
'tab_pushover' => 'Pushover',
|
||||||
'settings_email' => 'Имейл настройки',
|
'settings_email' => 'Имейл настройки',
|
||||||
'settings_sms' => 'SMS настройки',
|
'settings_sms' => 'SMS настройки',
|
||||||
'settings_pushover' => 'Pushover настройки',
|
'settings_pushover' => 'Pushover settings',
|
||||||
'settings_notification' => 'Настройки на известията',
|
'settings_notification' => 'Настройки на известията',
|
||||||
'settings_log' => 'Настройки на логовете',
|
'settings_log' => 'Настройки на логовете',
|
||||||
'auto_refresh' => 'Автоматично опресняване',
|
'auto_refresh' => 'Автоматично опресняване',
|
||||||
'auto_refresh_description' => 'Автоматично опресняване на
|
'auto_refresh_servers' =>
|
||||||
страницата.<br><span class="small">Времето е в
|
'Автоматично опресняване на страницата.<br/>'.
|
||||||
секунди, ако е 0 страницата няма да се
|
'<span class="small">'.
|
||||||
обновява.</span>',
|
'Времето е в секунди, ако е 0 страницата няма да се обновява.'.
|
||||||
|
'</span>',
|
||||||
'seconds' => 'секунди',
|
'seconds' => 'секунди',
|
||||||
'test' => 'Тест',
|
'test' => 'Тест',
|
||||||
'test_email' => 'Ще бъде изпратенo тестово съобщение до имейл
|
'test_email' => 'Ще бъде изпратенo тестово съобщение до имейл адреса, който сте задали в профила си.',
|
||||||
адреса, който сте задали в профила си.',
|
'test_sms' => 'Ще бъде изпратен тестово SMS съобщение до телефонния номер, който сте задали в профила си.',
|
||||||
'test_sms' => 'Ще бъде изпратен тестово SMS съобщение до телефонния
|
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||||
номер, който сте задали в профила си.',
|
|
||||||
'test_pushover' => 'Pushover известоята ще бъдат изпратени до
|
|
||||||
потребителски ключ/устройство посочено във
|
|
||||||
вашият профил.',
|
|
||||||
'send' => 'Изпрати',
|
'send' => 'Изпрати',
|
||||||
'test_subject' => 'Тестово съобщение',
|
'test_subject' => 'Test',
|
||||||
'test_message' => 'Тестово съобщение изпртено от PHP Сървър
|
'test_message' => 'Тестово съобщение',
|
||||||
мониторинг',
|
|
||||||
'email_sent' => 'Тестовия имейл е изпратен успешно.',
|
'email_sent' => 'Тестовия имейл е изпратен успешно.',
|
||||||
'email_error' => 'Възникна грешка при изпращането на тесовия имейл',
|
'email_error' => 'Възникна грешка при изпращането на тесовия имейл',
|
||||||
'sms_sent' => 'Тестовото SMS съобщение е изпратеното успешно.',
|
'sms_sent' => 'Тестовото SMS съобщение е изпратеното успешно.',
|
||||||
'sms_error' => 'Възникна грешка при изпращането на тестовия SMS. %s',
|
'sms_error' => 'Възникна грешка при изпращането на тестовия SMS',
|
||||||
'sms_error_nomobile' => 'Неуспешно изпращане на тестов SMS: не е намерен
|
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||||
валиден телефонен номер във вашия профил.',
|
'pushover_sent' => 'Pushover notification sent',
|
||||||
'pushover_sent' => 'Pushover тестово известие',
|
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||||
'pushover_error' => 'Възникна грешка при изпращане на тестово Pushover
|
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||||
известие: %s',
|
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||||
'pushover_error_noapp' => 'Unable to send test notification: не е зададен валиден Pushover
|
'log_retention_period' => 'Log retention period',
|
||||||
App API token в настройките.',
|
'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
|
||||||
'pushover_error_nokey' => 'Unable to send test notification: не е зададен валиден Pushover
|
'log_retention_days' => 'days',
|
||||||
ключ във вашия профил.',
|
|
||||||
'log_retention_period' => 'Период на съхранение на логовете',
|
|
||||||
'log_retention_period_description' => 'Какъв брой дни да се пазят логовете от
|
|
||||||
известията и архиви за ъптайм на
|
|
||||||
сървърите. Въведете 0 ако желаете
|
|
||||||
логовете да не се трият.',
|
|
||||||
'log_retention_days' => 'дни',
|
|
||||||
),
|
),
|
||||||
|
// За нов ред в имейл съобщението, моля използвайте тага <br/>
|
||||||
'notifications' => array(
|
'notifications' => array(
|
||||||
'off_sms' => 'Сървър \'%LABEL%\' е Офлайн: ip=%IP%, port=%PORT%. Greshka=%ERROR%',
|
'off_sms' => 'Сървър \'%LABEL%\' е Офлайн: ip=%IP%, port=%PORT%. Greshka=%ERROR%',
|
||||||
'off_email_subject' => 'Връзката до \'%LABEL%\' е ИЗГУБЕНА',
|
'off_email_subject' => 'Връзката до \'%LABEL%\' е ИЗГУБЕНА',
|
||||||
'off_email_body' => 'Неуспешно свързване:<br><br>Сървър: %LABEL%<br>IP адрес:
|
'off_email_body' => "Неуспешно свързване:<br/><br/>Сървър: %LABEL%<br/>IP адрес: %IP%<br/>Порт: %PORT%<br/>Грешка: %ERROR%<br/>Днес: %DATE%",
|
||||||
%IP%<br>Порт: %PORT%<br>Грешка: %ERROR%<br>Днес: %DATE%',
|
|
||||||
'off_pushover_title' => 'Връзката до \'%LABEL%\' е ИЗГУБЕНА',
|
'off_pushover_title' => 'Връзката до \'%LABEL%\' е ИЗГУБЕНА',
|
||||||
'off_pushover_message' => 'Неуспешно свързване:<br><br>Сървър: %LABEL%<br>IP
|
'off_pushover_message' => "Неуспешно свързване:<br/><br/>Сървър: %LABEL%<br/>IP адрес: %IP%<br/>Порт: %PORT%<br/>Грешка: %ERROR%<br/>Днес: %DATE%",
|
||||||
адрес: %IP%<br>Порт: %PORT%<br>Грешка: %ERROR%<br>Днес: %DATE%',
|
'on_sms' => 'Сървър \'%LABEL%\' е Онлайн: ip=%IP%, port=%PORT%',
|
||||||
'on_sms' => 'Сървър \'%LABEL%\' е Онлайн: ip=%IP%, port=%PORT%, it was down for
|
|
||||||
%LAST_OFFLINE_DURATION%',
|
|
||||||
'on_email_subject' => 'Връзката до \'%LABEL%\' е ВЪЗСТАНОВЕНА',
|
'on_email_subject' => 'Връзката до \'%LABEL%\' е ВЪЗСТАНОВЕНА',
|
||||||
'on_email_body' => 'Връзката до \'%LABEL%\' беше ВЪЗСТАНОВЕНА, it was down for
|
'on_email_body' => "Връзката до '%LABEL%' беше ВЪЗСТАНОВЕНА:<br/><br/>Сървър: %LABEL%<br/>IP адрес: %IP%<br/>Порт: %PORT%<br/>Днес: %DATE%",
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Сървър: %LABEL%<br>IP адрес: %IP%<br>Порт:
|
|
||||||
%PORT%<br>Днес: %DATE%',
|
|
||||||
'on_pushover_title' => 'Връзката до \'%LABEL%\' е ВЪЗСТАНОВЕНА',
|
'on_pushover_title' => 'Връзката до \'%LABEL%\' е ВЪЗСТАНОВЕНА',
|
||||||
'on_pushover_message' => 'Връзката до \'%LABEL%\' беше ВЪЗСТАНОВЕНА, it was down for
|
'on_pushover_message' => "Връзката до '%LABEL%' беше ВЪЗСТАНОВЕНА:<br/><br/>Сървър: %LABEL%<br/>IP адрес: %IP%<br/>Порт: %PORT%<br/>Днес: %DATE%",
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Сървър: %LABEL%<br>IP адрес:
|
|
||||||
%IP%<br>Порт: %PORT%<br>Днес: %DATE%',
|
|
||||||
),
|
),
|
||||||
'login' => array(
|
'login' => array(
|
||||||
'welcome_usermenu' => 'Добре дошъл, %user_name%',
|
'welcome_usermenu' => 'Добре дошъл, %user_name%',
|
||||||
|
@ -346,24 +281,17 @@ $sm_lang = array(
|
||||||
'password_repeat' => 'Повторете паролата',
|
'password_repeat' => 'Повторете паролата',
|
||||||
'password_forgot' => 'Забравили сте паролата си?',
|
'password_forgot' => 'Забравили сте паролата си?',
|
||||||
'password_reset' => 'Възстановяване на паролата',
|
'password_reset' => 'Възстановяване на паролата',
|
||||||
'password_reset_email_subject' => 'Възстановяване на парола за PHP Сървър
|
'password_reset_email_subject' => 'Възстановяване на парола за PHP Сървър Мониторинг',
|
||||||
Мониторинг',
|
'password_reset_email_body' => 'За да възстановите паролата си е нужно да кликнете на линка по-долу. Валидността на линка е един час.<br/><br/>%link%',
|
||||||
'password_reset_email_body' => 'За да възстановите паролата си е нужно да
|
|
||||||
кликнете на линка по-долу. Валидността на
|
|
||||||
линка е един час.<br><br>%link%',
|
|
||||||
'error_user_incorrect' => 'Потребителят не може да бъде намерен.',
|
'error_user_incorrect' => 'Потребителят не може да бъде намерен.',
|
||||||
'error_login_incorrect' => 'Информацията е грешна.',
|
'error_login_incorrect' => 'Информацията е грешна.',
|
||||||
'error_login_passwords_nomatch' => 'Паролите не съвпадат.',
|
'error_login_passwords_nomatch' => 'Паролите не съвпадат.',
|
||||||
'error_reset_invalid_link' => 'Линкът за възстановяване на паролата не е
|
'error_reset_invalid_link' => 'Линкът за възстановяване на паролата не е валиден.',
|
||||||
валиден.',
|
'success_password_forgot' => 'Изпратен е имейл с информация за възстановяване на паролата.',
|
||||||
'success_password_forgot' => 'Изпратен е имейл с информация за
|
'success_password_reset' => 'Вашата парола е променена успешно. Моля, влезте в системата.',
|
||||||
възстановяване на паролата.',
|
|
||||||
'success_password_reset' => 'Вашата парола е променена успешно. Моля,
|
|
||||||
влезте в системата.',
|
|
||||||
),
|
),
|
||||||
'error' => array(
|
'error' => array(
|
||||||
'401_unauthorized' => 'Неоторизиран достъп',
|
'401_unauthorized' => 'Unauthorized',
|
||||||
'401_unauthorized_description' => 'Нямате нужното ниво на достъп за да
|
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||||
прегледате тази страница.',
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,457 +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@mailbox.org>
|
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
|
||||||
* @version Release: v3.4.1
|
|
||||||
* @link http://www.phpservermonitor.org/
|
|
||||||
**/
|
|
||||||
|
|
||||||
$sm_lang = array(
|
|
||||||
'name' => 'Català - Catalan',
|
|
||||||
'locale' => array(
|
|
||||||
'0' => 'ca_ES.UTF-8',
|
|
||||||
'1' => 'ca_ES',
|
|
||||||
'2' => 'catalan',
|
|
||||||
'3' => 'catalan-es',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'ca',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
|
||||||
'title' => 'Server Monitor',
|
|
||||||
'install' => 'Instal·lar',
|
|
||||||
'action' => 'Acció',
|
|
||||||
'save' => 'Desar',
|
|
||||||
'edit' => 'Editar',
|
|
||||||
'delete' => 'Esborrar',
|
|
||||||
'date' => 'Data',
|
|
||||||
'message' => 'Missatge',
|
|
||||||
'yes' => 'Sí',
|
|
||||||
'no' => 'No',
|
|
||||||
'insert' => 'Inserir',
|
|
||||||
'add_new' => 'Afegir nou',
|
|
||||||
'update_available' => 'Hi ha disponible una nova versió ({version}) a <a
|
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
|
||||||
rel="noopener">https://github.com/phpservermon</a>.',
|
|
||||||
'back_to_top' => 'Tornar a dalt',
|
|
||||||
'go_back' => 'Enrere',
|
|
||||||
'ok' => 'OK',
|
|
||||||
'bad' => 'dolent',
|
|
||||||
'cancel' => 'Cancel·lar',
|
|
||||||
'none' => 'Cap',
|
|
||||||
'activate' => 'Activar',
|
|
||||||
'short_day_format' => '%e %B',
|
|
||||||
'long_day_format' => '%e %B %Y',
|
|
||||||
'yesterday_format' => 'Ahir a les %k:%M',
|
|
||||||
'other_day_format' => '%A a les %k:%M',
|
|
||||||
'never' => 'Mai',
|
|
||||||
'hours_ago' => 'fa %d hores',
|
|
||||||
'an_hour_ago' => 'fa una hora',
|
|
||||||
'minutes_ago' => 'fa %d minuts',
|
|
||||||
'a_minute_ago' => 'fa un minut',
|
|
||||||
'seconds_ago' => 'fa %d segons',
|
|
||||||
'a_second_ago' => 'fa un segon',
|
|
||||||
'year' => 'any',
|
|
||||||
'years' => 'anys',
|
|
||||||
'month' => 'mes',
|
|
||||||
'months' => 'mesos',
|
|
||||||
'day' => 'dia',
|
|
||||||
'days' => 'dies',
|
|
||||||
'hour' => 'hora',
|
|
||||||
'hours' => 'hores',
|
|
||||||
'minute' => 'minut',
|
|
||||||
'minutes' => 'minuts',
|
|
||||||
'second' => 'segon',
|
|
||||||
'seconds' => 'segons',
|
|
||||||
),
|
|
||||||
'menu' => array(
|
|
||||||
'config' => 'Configuració',
|
|
||||||
'server' => 'Servidors',
|
|
||||||
'server_log' => 'Log',
|
|
||||||
'server_status' => 'Estat',
|
|
||||||
'server_update' => 'FER PING ARA',
|
|
||||||
'user' => 'Usuaris',
|
|
||||||
'help' => 'Ajuda',
|
|
||||||
),
|
|
||||||
'users' => array(
|
|
||||||
'user' => 'Usuari',
|
|
||||||
'name' => 'Nom',
|
|
||||||
'user_name' => 'Nom d\'usuari',
|
|
||||||
'password' => 'Contrasenya',
|
|
||||||
'password_repeat' => 'Repetir contrasenya',
|
|
||||||
'password_leave_blank' => 'Deixar en blanc si no es vol canviar',
|
|
||||||
'level' => 'Nivell',
|
|
||||||
'level_10' => 'Administrador',
|
|
||||||
'level_20' => 'Usuari',
|
|
||||||
'level_description' => 'Els <b>administradors</b> tenen accés complet: poden administrar servidors, usuaris i
|
|
||||||
editar la configuració general.<br/>Els <b>usuaris</b> només poden engegar
|
|
||||||
actualitzacions dels servidors que els han estat assignats.',
|
|
||||||
'mobile' => 'Mòbil',
|
|
||||||
'email' => 'Correu',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'pushover_description' => 'Pushover és un servei que fa fàcil obtenir notificacions en temps real. Veieu <a
|
|
||||||
href="https://pushover.net/" target="_blank">la seva web</a> per a més
|
|
||||||
informació.',
|
|
||||||
'pushover_key' => 'Clau Pushover',
|
|
||||||
'pushover_device' => 'Dispositiu Pushover',
|
|
||||||
'pushover_device_description' => 'Nom del dispositiu al qual enviar els missatges. Deixau en blanc per enviar
|
|
||||||
a tots els dispositius.',
|
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> és una app de
|
|
||||||
missatgeria que facilita el rebre notificacions en temps real. Consulteu la <a
|
|
||||||
href="http://docs.phpservermonitor.org/" target="_blank">documentació</a> per a
|
|
||||||
més informació i per saber com instal·lar-ho.',
|
|
||||||
'telegram_chat_id' => 'Codi ID del xat a Telegram',
|
|
||||||
'telegram_chat_id_description' => 'Els missatges seran enviats al xat de Telegram amb aquest ID.',
|
|
||||||
'telegram_get_chat_id' => 'Premeu aquí per a obtenir el codi ID del vostre xat',
|
|
||||||
'activate_telegram' => 'Activar notificacions de Telegram',
|
|
||||||
'activate_telegram_description' => 'Permetre a Telegram enviar notificacions al xat amb aquest ID. Sense
|
|
||||||
aquest permís, Telegram rebutjarà qualsevol missatge enviat des
|
|
||||||
d\'aquesta aplicació.',
|
|
||||||
'telegram_bot_username_found' => 'S\'ha trobat el bot!<br><a href="%s" target="_blank"><button class="btn
|
|
||||||
btn-primary">Següent pas</button></a> <br>S\'obrirà un xat amb el bot. És
|
|
||||||
necessari que premeu el botó START o escriviu el comandament /start com a
|
|
||||||
missatge pel bot.',
|
|
||||||
'telegram_bot_username_error_token' => '401 - No autoritzat. Assegureu-vos que el token de la API és vàlid.',
|
|
||||||
'telegram_bot_error' => 'Ha succeït un error mentre s\'intentava activar les notificacions amb Telegram: %s',
|
|
||||||
'delete_title' => 'Esborrar usuari',
|
|
||||||
'delete_message' => 'Aquesta és una acció irreversible, n\'esteu segurs de voler esborrar l\'usuari \'%1\'?',
|
|
||||||
'deleted' => 'Usuari esborrat.',
|
|
||||||
'updated' => 'Usuari actualitzat.',
|
|
||||||
'inserted' => 'Usuari afegit.',
|
|
||||||
'profile' => 'Perfil',
|
|
||||||
'profile_updated' => 'El vostre perfil ha estat actualitzat.',
|
|
||||||
'error_user_name_bad_length' => 'El nom d\'usuari ha de tenir entre 2 i 64 caràcters.',
|
|
||||||
'error_user_name_invalid' => 'El nom d\'usuari només pot tenir caràcters alfanumèrics (a-z, A-Z), digits
|
|
||||||
(0-9) i guions baixos (_).',
|
|
||||||
'error_user_name_exists' => 'Aquest nom d\'usuari ja existeix. Esculliu un altre.',
|
|
||||||
'error_user_email_bad_length' => 'L\'adreça de correu ha de tenir entre 5 i 255 caràcters.',
|
|
||||||
'error_user_email_invalid' => 'L\'adreça de correu no és correcta.',
|
|
||||||
'error_user_level_invalid' => 'Aquest nivell d\'usuari no és vàlid.',
|
|
||||||
'error_user_no_match' => 'No s\'ha trobat aquest usuari a la base de dades.',
|
|
||||||
'error_user_password_invalid' => 'Aquesta contrasenya no és vàlida.',
|
|
||||||
'error_user_password_no_match' => 'LEs contrasenyes no coincideixen.',
|
|
||||||
),
|
|
||||||
'log' => array(
|
|
||||||
'title' => 'Entrades del LOG',
|
|
||||||
'type' => 'Tipus',
|
|
||||||
'status' => 'Estat',
|
|
||||||
'email' => 'Correu',
|
|
||||||
'sms' => 'SMS',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'no_logs' => 'No generar LOGs',
|
|
||||||
'clear' => 'Netejar LOG',
|
|
||||||
'delete_title' => 'Esborrar LOG',
|
|
||||||
'delete_message' => 'Voleu esborrar <b>tots</b> els LOGs?',
|
|
||||||
),
|
|
||||||
'servers' => array(
|
|
||||||
'server' => 'Servidor',
|
|
||||||
'status' => 'Estat',
|
|
||||||
'label' => 'Etiqueta',
|
|
||||||
'domain' => 'Domini/IP',
|
|
||||||
'timeout' => 'Timeout',
|
|
||||||
'timeout_description' => 'Nombre de segons que cal esperar a que el servidor respongui.',
|
|
||||||
'authentication_settings' => 'Opcions d\'autenticació (opcional)',
|
|
||||||
'website_username' => 'Nom d\'usuari',
|
|
||||||
'website_username_description' => 'Nom d\'usuari per accedir al portal web (només està soportada
|
|
||||||
l\'autenticació d\'Apache).',
|
|
||||||
'website_password' => 'Contrasenya',
|
|
||||||
'website_password_description' => 'Contrasenya per accedir al portal web. La contrasenya es desa encriptada a
|
|
||||||
la base de dades.',
|
|
||||||
'fieldset_monitoring' => 'Monitorització',
|
|
||||||
'fieldset_permissions' => 'Permisos',
|
|
||||||
'port' => 'Port',
|
|
||||||
'custom_port' => 'Port personalitzat',
|
|
||||||
'popular_ports' => 'Ports populars',
|
|
||||||
'request_method' => 'Mètode de crida',
|
|
||||||
'custom_request_method' => 'Mètode de crida personalitzat',
|
|
||||||
'popular_request_methods' => 'Mètodes de crida habituals',
|
|
||||||
'post_field' => 'Camp POST',
|
|
||||||
'post_field_description' => 'Els camps de dades que seran enviats emprant el mètode de crida de dalt.
|
|
||||||
Exemple: param1=val1&param2=val2&...',
|
|
||||||
'please_select' => 'Seleccioneu',
|
|
||||||
'type' => 'Tipus',
|
|
||||||
'type_website' => 'Website',
|
|
||||||
'type_service' => 'Servei',
|
|
||||||
'type_ping' => 'Ping',
|
|
||||||
'pattern' => 'cercar cadena/patrò',
|
|
||||||
'pattern_description' => 'Si aquest patró no es troba al lloc web, el servidor es marcarà fora de línia. Es
|
|
||||||
permeten expressions regulars.',
|
|
||||||
'pattern_online' => 'El patró indica que el website és',
|
|
||||||
'pattern_online_description' => 'En línia: si aquest patró es pot trobar en la resposta del servidor, el
|
|
||||||
servidor serà marcat com en línia. Fóra de línia: si aquest patró no es
|
|
||||||
pot trobar en la resposta del servidor, aquest serà marcat fóra de línia.',
|
|
||||||
'redirect_check' => 'El redireccionament cap a un altre domini és',
|
|
||||||
'redirect_check_description' => 'El redireccionament cap a un altre domini habitualment és un mal senyal.',
|
|
||||||
'allow_http_status' => 'Permetre codi d\'estat HTTP',
|
|
||||||
'allow_http_status_description' => 'Marcar el website com en línia. Els codis d\'estat HTTP inferiors a 400
|
|
||||||
són marcats com en línia per defecte. Empreu el símbol | per separar
|
|
||||||
més d\'un estat. Exemple: 401|403.',
|
|
||||||
'header_name_description' => 'Nom de la capçalera (sensible a majúscules)',
|
|
||||||
'header_value_description' => 'Valor de la capçalera. Es permeten expressions regulars.',
|
|
||||||
'last_check' => 'Darrera comprovació',
|
|
||||||
'last_online' => 'Darrer cop en línia',
|
|
||||||
'last_offline' => 'Darrer cop fóra de línia',
|
|
||||||
'last_output' => 'Darrera sortida positiva',
|
|
||||||
'last_error' => 'Darrer error',
|
|
||||||
'last_error_output' => 'Darrera sortida amb error',
|
|
||||||
'monitoring' => 'Monitorització',
|
|
||||||
'no_monitoring' => 'Sense monitorització',
|
|
||||||
'email' => 'Correu',
|
|
||||||
'send_email' => 'Enviar correu',
|
|
||||||
'sms' => 'SMS',
|
|
||||||
'send_sms' => 'Enviar SMS',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'send_pushover' => 'Enviar notificació per Pushover',
|
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'send_telegram' => 'Enviar notificació per Telegram',
|
|
||||||
'users' => 'Usuaris',
|
|
||||||
'delete_title' => 'Esborrar servidor',
|
|
||||||
'delete_message' => 'Esteu segurs de que voleu esborrar el servidor \'%1\'?',
|
|
||||||
'deleted' => 'Servidor esborrat.',
|
|
||||||
'updated' => 'Servidor actualitzat.',
|
|
||||||
'inserted' => 'Servidor afegit.',
|
|
||||||
'latency' => 'Latència',
|
|
||||||
'latency_max' => 'Latència (màxima)',
|
|
||||||
'latency_min' => 'Latència (mínima)',
|
|
||||||
'latency_avg' => 'Latència (mitjana)',
|
|
||||||
'uptime' => 'Temps actiu',
|
|
||||||
'year' => 'Any',
|
|
||||||
'month' => 'Mes',
|
|
||||||
'week' => 'Setmana',
|
|
||||||
'day' => 'Dia',
|
|
||||||
'hour' => 'Hora',
|
|
||||||
'warning_threshold' => 'Llindar \'advertència',
|
|
||||||
'warning_threshold_description' => 'Nombre de comprovacions fallides necessàries abans de considerar el
|
|
||||||
servidor fóra de línia.',
|
|
||||||
'chart_last_week' => 'Darrera setmana',
|
|
||||||
'chart_history' => 'Historial',
|
|
||||||
'chart_day_format' => '%Y-%m-%d',
|
|
||||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
|
||||||
'chart_short_date_format' => '%d/%m %H:%M',
|
|
||||||
'chart_short_time_format' => '%H:%M',
|
|
||||||
'warning_notifications_disabled_sms' => 'Les notificacions per SMS estan deshabilitades.',
|
|
||||||
'warning_notifications_disabled_email' => 'Les notificacions per correu estan deshabilitades.',
|
|
||||||
'warning_notifications_disabled_pushover' => 'Les notificacions per Pushover estan deshabilitades.',
|
|
||||||
'warning_notifications_disabled_telegram' => 'Les notificacions per Telegram estan deshabilitades.',
|
|
||||||
'error_server_no_match' => 'No s\'ha trobat el servidor.',
|
|
||||||
'error_server_label_bad_length' => 'L\'etiqueta ha de tenir entre 1 i 255 caràcters.',
|
|
||||||
'error_server_ip_bad_length' => 'El nom de domini o IP ha de tenir entre 1 i 255 caràcters.',
|
|
||||||
'error_server_ip_bad_service' => 'L\'adreça IP no és vàlida',
|
|
||||||
'error_server_ip_bad_website' => 'L\'adreça URL del lloc web no és vàlida.',
|
|
||||||
'error_server_type_invalid' => 'El tipus de servidor escollit no és vàlid.',
|
|
||||||
'error_server_warning_threshold_invalid' => 'El llindar d\'advertència ha de ser un valor sencer positiu.',
|
|
||||||
),
|
|
||||||
'config' => array(
|
|
||||||
'general' => 'General',
|
|
||||||
'language' => 'Idioma',
|
|
||||||
'show_update' => 'Comprovar actualitzacions?',
|
|
||||||
'password_encrypt_key' => 'La clau per xifrar contrasenyes',
|
|
||||||
'password_encrypt_key_note' => 'Aquesta és la clau emprada per xifrar les contrasenyes que són
|
|
||||||
emmagatzemades als servidors per accedir als llocs web. Si la clau canviés la
|
|
||||||
contrasenya guardada no seria vàlida!',
|
|
||||||
'proxy' => 'Habilitar proxy',
|
|
||||||
'proxy_url' => 'URL del proxy',
|
|
||||||
'proxy_user' => 'Usuari del proxy',
|
|
||||||
'proxy_password' => 'Contrasenya del proxy',
|
|
||||||
'email_status' => 'Permetre l\'enviament de correus',
|
|
||||||
'email_from_email' => 'Adreça del remitent',
|
|
||||||
'email_from_name' => 'Nom del remitent',
|
|
||||||
'email_smtp' => 'Habilitar SMTP',
|
|
||||||
'email_smtp_host' => 'Servidor SMTP',
|
|
||||||
'email_smtp_port' => 'Port SMTP',
|
|
||||||
'email_smtp_security' => 'Seguretat SMTP',
|
|
||||||
'email_smtp_security_none' => 'Cap',
|
|
||||||
'email_smtp_username' => 'Usuari SMTP',
|
|
||||||
'email_smtp_password' => 'Contrasenya SMTP',
|
|
||||||
'email_smtp_noauth' => 'Deixar en blanc si no cal autenticació',
|
|
||||||
'sms_status' => 'Permetre l\'enviament de missatges de text',
|
|
||||||
'sms_gateway' => 'Servei \'Gateway\' per l\'enviament de SMS',
|
|
||||||
'sms_gateway_username' => 'Usuari del Gateway',
|
|
||||||
'sms_gateway_password' => 'Contrasenya del Gateway',
|
|
||||||
'sms_from' => 'Numero de telèfon de qui envia',
|
|
||||||
'pushover_status' => 'Permetre l\'enviament de missatges per Pushover',
|
|
||||||
'pushover_description' => 'Pushover és un servei que facilita la recepció de notificacions en temps real.
|
|
||||||
Veieu <a href=\'https://pushover.net/\'>la serv web</a> per a més informació.',
|
|
||||||
'pushover_clone_app' => 'premeu aquí per a crear la vostra app Pushover',
|
|
||||||
'pushover_api_token' => 'Token de la API de la App Pushover',
|
|
||||||
'pushover_api_token_description' => 'Abans de poder emprar Pushover necessiteu <a href="%1$s"
|
|
||||||
target="_blank">registrar una app</a> al seu portal web i introduïr
|
|
||||||
aquí el Token de la API.',
|
|
||||||
'telegram_status' => 'Permetre l\'enviament de missatges per Telegram',
|
|
||||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> és una app de xat
|
|
||||||
(mòbil i PC) que facilita la recepció de notificacions en temps real. Veieu la <a
|
|
||||||
href="http://docs.phpservermonitor.org/" target="_blank">documentació</a> per
|
|
||||||
saber més i saber com activar-ho.',
|
|
||||||
'telegram_api_token' => 'Token de l\'API de Telegram',
|
|
||||||
'telegram_api_token_description' => 'Abans de poder emprar Telegram necessiteu obtenir un token de l\'API.
|
|
||||||
Consulteu la <a href="http://docs.phpservermonitor.org/"
|
|
||||||
target="_blank">documentació</a> per saber més.',
|
|
||||||
'alert_type' => 'Seleccioneu quan voleu ser notificats.',
|
|
||||||
'alert_type_description' => '<b>Canvi d\'estat:</b> Rebreu una notificació quan un servidor tingui un canvi
|
|
||||||
d\'estat. És a dir, passi d\'estar en línia a fora de línia o viceversa.<br
|
|
||||||
/><br /><b>Fora de línia:</b> Rebreu una notificació només *EL PRIMER COP* que
|
|
||||||
un servidor passa a estar fora de línia. Per exemple, la vostra aplicació
|
|
||||||
s\'executa cada 15 minuts i el servidor esdevé fora de línia a la una de la
|
|
||||||
matinada i es queda així fins les sis. llavors rebríeu només una notificació.
|
|
||||||
No se us aviasarà quan torni a ser en línia.<br /><br><b>Sempre:</b> Rebreu una
|
|
||||||
notificació *CADA COP* que l\'aplicació detecti que el servidor és fora de
|
|
||||||
línia, fins que torni a estar en línia.',
|
|
||||||
'alert_type_status' => 'Canvi \'estat',
|
|
||||||
'alert_type_offline' => 'Fora de línia',
|
|
||||||
'alert_type_always' => 'Sempre',
|
|
||||||
'combine_notifications' => 'Combinar notificacions',
|
|
||||||
'combine_notifications_description' => 'Redueix el nombre de notificacions en combinar-les en una de sola.
|
|
||||||
(Això no afecta a les notificacions per SMS.)',
|
|
||||||
'alert_proxy' => 'Encara que s\'habiliti, el proxy no és emprat mai per als serveis',
|
|
||||||
'alert_proxy_url' => '<b>Format:</b> Servidor:Port',
|
|
||||||
'log_status' => 'LOG d\'estat',
|
|
||||||
'log_status_description' => 'Si el LOG d\'estat es configura a SÍ, l\'aplicació enregistrarà aquells events
|
|
||||||
que disparin les notificacions.',
|
|
||||||
'log_email' => 'Enregistrar els correus enviats per l\'aplicació',
|
|
||||||
'log_sms' => 'Enregistrar els SMS enviats per l\'aplicació',
|
|
||||||
'log_pushover' => 'Enregistrar els missatges enviats a Pushover per l\'aplicació',
|
|
||||||
'log_telegram' => 'Enregistrar els missatges enviats a Telegram per l\'aplicació',
|
|
||||||
'updated' => 'S\'ha actualitzat la configuració',
|
|
||||||
'tab_email' => 'Correu',
|
|
||||||
'tab_sms' => 'SMS',
|
|
||||||
'tab_pushover' => 'Pushover',
|
|
||||||
'tab_telegram' => 'Telegram',
|
|
||||||
'settings_email' => 'Preferències de correu',
|
|
||||||
'settings_sms' => 'Preferències de SMS',
|
|
||||||
'settings_pushover' => 'Preferències de Pushover',
|
|
||||||
'settings_telegram' => 'Preferències de Telegram',
|
|
||||||
'settings_notification' => 'Preferències de notificacions',
|
|
||||||
'settings_log' => 'Preferències de LOG',
|
|
||||||
'settings_proxy' => 'Preferències de Proxy',
|
|
||||||
'auto_refresh' => 'Auto-recàrrega',
|
|
||||||
'auto_refresh_description' => 'Recarregar automàticament la plana Servidors.<br/><span class="small">Temps en
|
|
||||||
segons, si poseu ZERO la plana no s\'auto-recarregarà.</span>',
|
|
||||||
'test' => 'Provar',
|
|
||||||
'test_email' => 'S\'enviarà un correu a l\'adreça que teniu al vostre perfil d\'usuari.',
|
|
||||||
'test_sms' => 'S\'enviarà un SMS al telèfon que teniu al vostre perfil d\'usuari.',
|
|
||||||
'test_pushover' => 'S\'enviarà una notificació per Pushover a la clau d\'usuari/dispositiu que teniu al
|
|
||||||
vostre perfil d\'usuari.',
|
|
||||||
'test_telegram' => 'S\'enviarà una notificació per Telegram al xat amb l\'ID que teniu al vostre perfil
|
|
||||||
d\'usuari.',
|
|
||||||
'send' => 'Enviar',
|
|
||||||
'test_subject' => 'Provar',
|
|
||||||
'test_message' => 'Missatge de prova',
|
|
||||||
'email_sent' => 'Correu enviat',
|
|
||||||
'email_error' => 'Hi ha hagut un error provant d\'enviar el correu',
|
|
||||||
'sms_sent' => 'Sms enviat',
|
|
||||||
'sms_error' => 'Hi ha hagut un error provant d\'enviar el SMS',
|
|
||||||
'sms_error_nomobile' => 'No ha estat posible enviar el SMS de prova: no s\'ha trobat un telèfon vàlid al
|
|
||||||
vostre perfil d\'usuari.',
|
|
||||||
'pushover_sent' => 'Notificació enviada per Pushover',
|
|
||||||
'pushover_error' => 'Ha succeït un error provant d\'enviar la notificació Pushover: %s',
|
|
||||||
'pushover_error_noapp' => 'No ha estat posible enviar la notificació de prova: no s\'ha trobat cap token
|
|
||||||
d\'API d\'una App Pushover a la configuració general.',
|
|
||||||
'pushover_error_nokey' => 'No ha estat posible enviar la notificació de prova: no s\'ha trobat cap clau
|
|
||||||
Pushover al vostre perfil d\'usuari.',
|
|
||||||
'telegram_sent' => 'Notificació enviada per Telegram',
|
|
||||||
'telegram_error' => 'Ha succeït un error provant d\'enviar la notificació per Telegram: %s',
|
|
||||||
'telegram_error_notoken' => 'No ha estat posible enviar la notificació de prova: no s\'ha trobat cap token
|
|
||||||
d\'API de Telegram a la configuració general.',
|
|
||||||
'telegram_error_noid' => 'No ha estat posible enviar la notificació de prova: no s\'ha trobat cap codi ID de
|
|
||||||
xat al vostre perfil d\'usuari.',
|
|
||||||
'log_retention_period' => 'Període de retenció al LOG',
|
|
||||||
'log_retention_period_description' => 'Nombre de dies a conservar al LOG les notificacions i informació sobre
|
|
||||||
l\'activitat dels servidors. Poseu 0 per evitar que el LOG es buidi
|
|
||||||
mai.',
|
|
||||||
'log_retention_days' => 'dies',
|
|
||||||
),
|
|
||||||
'notifications' => array(
|
|
||||||
'off_sms' => 'El servidor \'%LABEL%\' NO RESPON: IP=%IP%, Port=%PORT%. Error=%ERROR%',
|
|
||||||
'off_email_subject' => 'IMPORTANT: El servidor \'%LABEL%\' NO RESPON',
|
|
||||||
'off_email_body' => 'Ha fallat la connexió amb aquest servidor:<br/><br/>Servidor: %LABEL%<br/>IP:
|
|
||||||
%IP%<br/>Port: %PORT%<br/>Error: %ERROR%<br/>Data: %DATE%',
|
|
||||||
'off_pushover_title' => 'El servidor \'%LABEL%\' NO RESPON',
|
|
||||||
'off_pushover_message' => 'Ha fallat la connexió amb aquest servidor:<br/><br/>Servidor: %LABEL%<br/>IP:
|
|
||||||
%IP%<br/>Port: %PORT%<br/>Error: %ERROR%<br/>Data: %DATE%',
|
|
||||||
'off_telegram_message' => 'Ha fallat la connexió amb aquest servidor:<br/><br/>Servidor: %LABEL%<br/>IP:
|
|
||||||
%IP%<br/>Port: %PORT%<br/>Error: %ERROR%<br/>Data: %DATE%',
|
|
||||||
'on_sms' => 'El servidor \'%LABEL%\' TORNA A FUNCIONAR: ip=%IP%, port=%PORT%, temps
|
|
||||||
caigut=%LAST_OFFLINE_DURATION%',
|
|
||||||
'on_email_subject' => 'IMPORTANT: el servidor \'%LABEL%\' TORNA A FUNCIONAR',
|
|
||||||
'on_email_body' => 'El servidor \'%LABEL%\' TORNA A FUNCIONAR:<br/><br/>Servidor: %LABEL%<br/>IP:
|
|
||||||
%IP%<br/>Port: %PORT%<br/>Data: %DATE%<br/>Temps fóra de línia: %LAST_OFFLINE_DURATION%',
|
|
||||||
'on_pushover_title' => 'El servidor \'%LABEL%\' TORNA A FUNCIONAR',
|
|
||||||
'on_pushover_message' => 'El servidor \'%LABEL%\' TORNA A FUNCIONAR:<br/><br/>Servidor: %LABEL%<br/>IP:
|
|
||||||
%IP%<br/>Port: %PORT%<br/>Data: %DATE%<br/>Temps fóra de línia:
|
|
||||||
%LAST_OFFLINE_DURATION%',
|
|
||||||
'on_telegram_message' => 'El servidor \'%LABEL%\' TORNA A FUNCIONAR:<br/><br/>Servidor: %LABEL%<br/>IP:
|
|
||||||
%IP%<br/>Port: %PORT%<br/>Data: %DATE%<br/>Temps fóra de línia:
|
|
||||||
%LAST_OFFLINE_DURATION%',
|
|
||||||
'combi_off_email_message' => '<ul><li>Servidor: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Error:
|
|
||||||
%ERROR%</li><li>Data: %DATE%</li></ul>',
|
|
||||||
'combi_off_pushover_message' => '<ul><li>Servidor: %LABEL%</li><li>IP: %IP%</li><li>Port:
|
|
||||||
%PORT%</li><li>Error: %ERROR%</li><li>Data: %DATE%</li></ul>',
|
|
||||||
'combi_off_telegram_message' => '- Servidor: %LABEL%<br/>- IP: %IP%<br/>- Port: %PORT%<br/>- Error:
|
|
||||||
%ERROR%<br/>- Data: %DATE%<br/><br/>',
|
|
||||||
'combi_on_email_message' => '<ul><li>Servidor: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Data:
|
|
||||||
%DATE%</li><li>Temps fóra de línia: %LAST_OFFLINE_DURATION%</li></ul>',
|
|
||||||
'combi_on_pushover_message' => '<ul><li>Servidor: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Data:
|
|
||||||
%DATE%</li><li>Temps fóra de línia: %LAST_OFFLINE_DURATION%</li></ul>',
|
|
||||||
'combi_on_telegram_message' => '- Servidor: %LABEL%<br/>- IP: %IP%<br/>- Port: %PORT%<br/>- Data: %DATE%<br/>-
|
|
||||||
Temps fóra de línia: %LAST_OFFLINE_DURATION%<br/><br/>',
|
|
||||||
'combi_email_subject' => 'IMPORTANT: els servidors \'%UP%\' TORNEN A FUNCIONAR, els servidors \'%DOWN%\' NO
|
|
||||||
RESPONEN',
|
|
||||||
'combi_pushover_subject' => 'Els servidors \'%UP%\' TORNEN A FUNCIONAR, els servidors \'%DOWN%\' NO RESPONEN',
|
|
||||||
'combi_email_message' => '<b>Aquests servidors NO RESPONEN:</b><br/>%DOWN_SERVERS%<br/><b>Aquests servidors
|
|
||||||
TORNEN A FUNCIONAR:</b><br/>%UP_SERVERS%',
|
|
||||||
'combi_pushover_message' => '<b>Aquests servidors NO RESPONEN:</b><br/>%DOWN_SERVERS%<br/><b>Aquests servidors
|
|
||||||
TORNEN A FUNCIONAR:</b><br/>%UP_SERVERS%',
|
|
||||||
'combi_telegram_message' => '<b>Aquests servidors NO RESPONEN:</b><br/>%DOWN_SERVERS%<br/><b>Aquests servidors
|
|
||||||
TORNEN A FUNCIONAR:</b><br/>%UP_SERVERS%',
|
|
||||||
),
|
|
||||||
'login' => array(
|
|
||||||
'welcome_usermenu' => 'Benvingut(a), %user_name%',
|
|
||||||
'title_sign_in' => 'Credencials d\'accés',
|
|
||||||
'title_forgot' => 'Heu oblidat la contrasenya?',
|
|
||||||
'title_reset' => 'Restablir la contrasenya',
|
|
||||||
'submit' => 'Enviar',
|
|
||||||
'remember_me' => 'Recorda\'m',
|
|
||||||
'login' => 'Accedir',
|
|
||||||
'logout' => 'Tancar sessió',
|
|
||||||
'username' => 'Usuari',
|
|
||||||
'password' => 'Contrasenya',
|
|
||||||
'password_repeat' => 'Repetir contrasenya',
|
|
||||||
'password_forgot' => 'Heu oblidat la contrasenya?',
|
|
||||||
'password_reset' => 'Restablir la contrasenya',
|
|
||||||
'password_reset_email_subject' => 'Restablir la vostra contrasenya per accedir a PHP Server Monitor',
|
|
||||||
'password_reset_email_body' => 'Empreu el següent enllaç per restablir la vostra contrasenya. Tingueu en
|
|
||||||
compte que expira en 1 hora.<br/><br/>%link%',
|
|
||||||
'error_user_incorrect' => 'No s\'ha trobat l\'usuari especificat.',
|
|
||||||
'error_login_incorrect' => 'Aquestes credencials no són vàlides.',
|
|
||||||
'error_login_passwords_nomatch' => 'Les dues contrasenyes no coincideixen.',
|
|
||||||
'error_reset_invalid_link' => 'L\'enllaç per restablir la contrasenya no és vàlid.',
|
|
||||||
'success_password_forgot' => 'Se us ha enviat un correu amb informació per restablir la vostra contrasenya.',
|
|
||||||
'success_password_reset' => 'La vostra contrasenya s\'ha restablert amb èxit. Ja podeu entrar.',
|
|
||||||
),
|
|
||||||
'error' => array(
|
|
||||||
'401_unauthorized' => 'No-autoritzat',
|
|
||||||
'401_unauthorized_description' => 'No teniu els privilegis per veure aquesta plana o potser la vostra sessió
|
|
||||||
ha expirat.',
|
|
||||||
),
|
|
||||||
);
|
|
|
@ -1,335 +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 Simon Berka <berka@berkasimon.com>
|
|
||||||
* @author Pavel Laupe Dvorak <pavel@pavel-dvorak.cz>
|
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
|
||||||
* @version Release: @package_version@
|
|
||||||
* @link http://www.phpservermonitor.org/
|
|
||||||
**/
|
|
||||||
|
|
||||||
$sm_lang = array(
|
|
||||||
'name' => 'Česky - Czech',
|
|
||||||
'locale' => array(
|
|
||||||
'0' => 'cs_CZ.UTF-8',
|
|
||||||
'1' => 'cs_CZ',
|
|
||||||
'2' => 'czech',
|
|
||||||
'3' => 'czech',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'cs',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
|
||||||
'title' => 'Server Monitor',
|
|
||||||
'install' => 'Instalace',
|
|
||||||
'action' => 'Akce',
|
|
||||||
'save' => 'Uložit',
|
|
||||||
'edit' => 'Upravit',
|
|
||||||
'delete' => 'Smazat',
|
|
||||||
'date' => 'Datum',
|
|
||||||
'message' => 'Zpráva',
|
|
||||||
'yes' => 'Ano',
|
|
||||||
'no' => 'Ne',
|
|
||||||
'insert' => 'Vložit',
|
|
||||||
'add_new' => 'Přidat',
|
|
||||||
'update_available' => 'Nová verze - ({version}) je dostupná na <a
|
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
|
||||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
|
||||||
'back_to_top' => 'Zpět na začátek',
|
|
||||||
'go_back' => 'Zpět',
|
|
||||||
'ok' => 'OK',
|
|
||||||
'cancel' => 'Zrušit',
|
|
||||||
'short_day_format' => '%B %e',
|
|
||||||
'long_day_format' => '%B %e, %Y',
|
|
||||||
'yesterday_format' => 'Včera v %k:%M',
|
|
||||||
'other_day_format' => '%A v %k:%M',
|
|
||||||
'never' => 'Nikdy',
|
|
||||||
'hours_ago' => 'před %d hodinami',
|
|
||||||
'an_hour_ago' => 'cca před hodinou',
|
|
||||||
'minutes_ago' => 'před %d minutami',
|
|
||||||
'a_minute_ago' => 'cca před minutou',
|
|
||||||
'seconds_ago' => 'před %d vteřinami',
|
|
||||||
'a_second_ago' => 'před chvílí',
|
|
||||||
'seconds' => 'sekunder',
|
|
||||||
),
|
|
||||||
'menu' => array(
|
|
||||||
'config' => 'Konfigurace',
|
|
||||||
'server' => 'Servery',
|
|
||||||
'server_log' => 'Log',
|
|
||||||
'server_status' => 'Status',
|
|
||||||
'server_update' => 'Aktualizace',
|
|
||||||
'user' => 'Uživatelé',
|
|
||||||
'help' => 'Nápověda',
|
|
||||||
),
|
|
||||||
'users' => array(
|
|
||||||
'user' => 'Uživatel',
|
|
||||||
'name' => 'Jméno',
|
|
||||||
'user_name' => 'Uživatelské jméno',
|
|
||||||
'password' => 'Heslo',
|
|
||||||
'password_repeat' => 'Stejné heslo (pro kontrolu)',
|
|
||||||
'password_leave_blank' => 'Ponechte prázdné pro ponechání beze změn.',
|
|
||||||
'level' => 'Oprávnění',
|
|
||||||
'level_10' => 'Administrátor',
|
|
||||||
'level_20' => 'Uživatel',
|
|
||||||
'level_description' => '<b>Administrátor</b> má plný přístup: může spravovat servery, uživatele a
|
|
||||||
upravit globální konfiguraci.<br><b>Uživatel</b> má práva pouze na čtení a
|
|
||||||
spustit aktualizaci serverů, které má přiřazeny.',
|
|
||||||
'mobile' => 'Mobil',
|
|
||||||
'email' => 'E-mail',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'pushover_description' => 'Pushover je služba umožňující jednoduše zasílat real-time upozornění.
|
|
||||||
Více na <a href="https://pushover.net/" target="_blank">webu Pushover</a>',
|
|
||||||
'pushover_key' => 'Pushover Token',
|
|
||||||
'pushover_device' => 'Pushover Zařízení',
|
|
||||||
'pushover_device_description' => 'Název zařízení, na které má být zráva odeslána. Ponechte prázdné
|
|
||||||
pro odeslání na všechna zařízení.',
|
|
||||||
'delete_title' => 'Smazat uživatele',
|
|
||||||
'delete_message' => 'Opravdu smazat uživatele \'%1\'?',
|
|
||||||
'deleted' => 'Uživatel smazán.',
|
|
||||||
'updated' => 'Uživatel aktualizován.',
|
|
||||||
'inserted' => 'Uživatel přidán.',
|
|
||||||
'profile' => 'Profil',
|
|
||||||
'profile_updated' => 'Váš uživatelský profil byl upraven.',
|
|
||||||
'error_user_name_bad_length' => 'Uživatelské jméno musí obsahovat 2 až 64 znaků.',
|
|
||||||
'error_user_name_invalid' => 'Uživatelské jméno může obsahovat pouze písmena (a-z, A-Z), čísla (0-9),
|
|
||||||
tečky (.) a podtržítka (_).',
|
|
||||||
'error_user_name_exists' => 'Zadané uživatelské jméno již existuje v databázi.',
|
|
||||||
'error_user_email_bad_length' => 'E-mailová adresa musí obsahovat 5 až 255 znaků .',
|
|
||||||
'error_user_email_invalid' => 'E-mailová adresa je neplatná',
|
|
||||||
'error_user_level_invalid' => 'Zadané oprávnění je neplatné.',
|
|
||||||
'error_user_no_match' => 'Uživatel nebyl nalezen.',
|
|
||||||
'error_user_password_invalid' => 'Zadané heslo je neplatné.',
|
|
||||||
'error_user_password_no_match' => 'Zadaná hesla neodpovídají.',
|
|
||||||
),
|
|
||||||
'log' => array(
|
|
||||||
'title' => 'Záznamy logu',
|
|
||||||
'type' => 'Typ',
|
|
||||||
'status' => 'Stav',
|
|
||||||
'email' => 'E-mail',
|
|
||||||
'sms' => 'SMS',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'no_logs' => 'Žádné záznamy',
|
|
||||||
'clear' => 'Jasný protokol',
|
|
||||||
'delete_title' => 'Odstranit protokol',
|
|
||||||
'delete_message' => 'Opravdu chcete odstranit protokoly <b>všechny</b>?',
|
|
||||||
),
|
|
||||||
'servers' => array(
|
|
||||||
'server' => 'Server',
|
|
||||||
'status' => 'Stav',
|
|
||||||
'label' => 'Popis',
|
|
||||||
'domain' => 'Doména/IP',
|
|
||||||
'timeout' => 'Časový limit',
|
|
||||||
'timeout_description' => 'Počet vteřin čekání na odpověď serveru.',
|
|
||||||
'authentication_settings' => 'Nastavení autentizace',
|
|
||||||
'optional' => 'volitelný',
|
|
||||||
'website_username' => 'Uživatelské jméno',
|
|
||||||
'website_username_description' => 'Uživatelské jméno pro přístup na stránku. (Pouze Apache autorizace je
|
|
||||||
podporovaná.)',
|
|
||||||
'website_password' => 'Heslo',
|
|
||||||
'website_password_description' => 'Heslo pro přístup na stránku. Heslo je v databázi šifrované.',
|
|
||||||
'fieldset_monitoring' => 'Monitoring',
|
|
||||||
'fieldset_permissions' => 'Oprávnění',
|
|
||||||
'port' => 'Port',
|
|
||||||
'custom_port' => 'Uživatelský Port',
|
|
||||||
'popular_ports' => 'Populární Porty',
|
|
||||||
'please_select' => 'Prosím vyberte',
|
|
||||||
'type' => 'Typ',
|
|
||||||
'type_website' => 'Web',
|
|
||||||
'type_service' => 'Služba',
|
|
||||||
'pattern' => 'Vyhledat řetězec/vzorek',
|
|
||||||
'pattern_description' => 'Pokud vzorek nebude na webu nalezen, bude server označen jako offline. Regulární
|
|
||||||
výrazy jsou povoleny.',
|
|
||||||
'last_check' => 'Poslední kontrola',
|
|
||||||
'last_online' => 'Naposledy online',
|
|
||||||
'last_offline' => 'Naposledy offline',
|
|
||||||
'monitoring' => 'Monitoring',
|
|
||||||
'no_monitoring' => 'Žádné monitorované služby',
|
|
||||||
'email' => 'E-mail',
|
|
||||||
'send_email' => 'Odeslat e-mail',
|
|
||||||
'sms' => 'SMS',
|
|
||||||
'send_sms' => 'Odeslat SMS',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'users' => 'Uživatelé',
|
|
||||||
'delete_title' => 'Smazat server',
|
|
||||||
'delete_message' => 'Opravdu si přejete smazat \'%1\'?',
|
|
||||||
'deleted' => 'Server smazán.',
|
|
||||||
'updated' => 'Server aktualizován.',
|
|
||||||
'inserted' => 'Server přidán.',
|
|
||||||
'latency' => 'Latence',
|
|
||||||
'latency_max' => 'Latence (maximum)',
|
|
||||||
'latency_min' => 'Latence (minimum)',
|
|
||||||
'latency_avg' => 'Latence (průměr)',
|
|
||||||
'uptime' => 'Uptime',
|
|
||||||
'year' => 'Rok',
|
|
||||||
'month' => 'Měsíc',
|
|
||||||
'week' => 'Týden',
|
|
||||||
'day' => 'Den',
|
|
||||||
'hour' => 'Hodina',
|
|
||||||
'warning_threshold' => 'Stropní hranice varování',
|
|
||||||
'warning_threshold_description' => 'Počet neúspěšných pokusů před označením serveru jako offline.',
|
|
||||||
'chart_last_week' => 'Minulý týden',
|
|
||||||
'chart_history' => 'Historie',
|
|
||||||
'chart_day_format' => '%Y-%m-%d',
|
|
||||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
|
||||||
'chart_short_date_format' => '%m/%d %H:%M',
|
|
||||||
'chart_short_time_format' => '%H:%M',
|
|
||||||
'warning_notifications_disabled_sms' => 'SMS upozornění jsou vypnuta.',
|
|
||||||
'warning_notifications_disabled_email' => 'E-mailová upozornění jsou vypnuta.',
|
|
||||||
'warning_notifications_disabled_pushover' => 'Pushover upozornění jsou vypnuta.',
|
|
||||||
'error_server_no_match' => 'Server nenalezen.',
|
|
||||||
'error_server_label_bad_length' => 'Popisek musí obsahovat 1 až 255 znaků.',
|
|
||||||
'error_server_ip_bad_length' => 'Doména/IP adresa musí obsahovat 1 až 255 znaků.',
|
|
||||||
'error_server_ip_bad_service' => 'IP adresa není platná.',
|
|
||||||
'error_server_ip_bad_website' => 'URL webu není platná.',
|
|
||||||
'error_server_type_invalid' => 'Zvolený typ serveru není platný',
|
|
||||||
'error_server_warning_threshold_invalid' => 'Hranice varování musí být číslo větší než 0.',
|
|
||||||
),
|
|
||||||
'config' => array(
|
|
||||||
'general' => 'Obecné',
|
|
||||||
'language' => 'Jazyk',
|
|
||||||
'show_update' => 'Kontrolovat aktualizace?',
|
|
||||||
'password_encrypt_key' => 'Šifrovací klíč pro hesla',
|
|
||||||
'password_encrypt_key_note' => 'Tímto klíčem se šifrují hesla, která se ukládají u serverů pro
|
|
||||||
přístup na webové stránky. Pokud klíč změníte budou uložená hesla
|
|
||||||
neplatná!',
|
|
||||||
'email_status' => 'Povolit odesílání e-mailu',
|
|
||||||
'email_from_email' => 'E-mailová adresa odesilatele',
|
|
||||||
'email_from_name' => 'Jméno odesilatele',
|
|
||||||
'email_smtp' => 'Zapnout SMTP',
|
|
||||||
'email_smtp_host' => 'SMTP adresa',
|
|
||||||
'email_smtp_port' => 'SMTP port',
|
|
||||||
'email_smtp_security' => 'SMTP zabezpečení',
|
|
||||||
'email_smtp_security_none' => 'žádné',
|
|
||||||
'email_smtp_username' => 'SMTP uživatelské jméno',
|
|
||||||
'email_smtp_password' => 'SMTP heslo',
|
|
||||||
'email_smtp_noauth' => 'Ponechte prázdné pro použití SMTP bez hesla',
|
|
||||||
'sms_status' => 'Povolit odesílání textových zpráv',
|
|
||||||
'sms_gateway' => 'Brána použitá pro odesílání zpráv',
|
|
||||||
'sms_gateway_username' => 'Uživatelské jméno brány',
|
|
||||||
'sms_gateway_password' => 'Heslo brány',
|
|
||||||
'sms_from' => 'Telefonní číslo odesilatele',
|
|
||||||
'pushover_status' => 'Povolit zasílání Pushover zpráv',
|
|
||||||
'pushover_description' => 'Pushover je služba umožňující jednoduše zasílat real-time upozornění.
|
|
||||||
Více na <a href="https://pushover.net/" target="_blank">webu Pushover</a>',
|
|
||||||
'pushover_clone_app' => 'Klikněte pro vytvoření Pushover aplikace',
|
|
||||||
'pushover_api_token' => 'Pushover App API Token',
|
|
||||||
'pushover_api_token_description' => 'Pře použitím Pushoveru se musíte <a href="%1$s" target="_blank"
|
|
||||||
rel="noopener">registrovat</a> a získat API Token.',
|
|
||||||
'alert_type' => 'Zvolte kdy si přejete být upozorněni.',
|
|
||||||
'alert_type_description' => '<b>Změna stavu:</b> Obdržíte upozornění při změně stavu, tedy:online ->
|
|
||||||
offline nebo offline -> online.<br><br /><b>Offline:</b> Obdržíte upozornění,
|
|
||||||
kdy server přejde poprvé do offline stavu. Například, pokud je cron nastaven
|
|
||||||
na 15 minut a sledovaný server bude offline mezi 01:00 a 06:00. Obdržíte
|
|
||||||
upozornění pouze v 01:00. <br><br><b>Vždy:</b> Obdržíte upozornění při
|
|
||||||
každém spuštění kontroly, tedy i pokud bude server offline několik hodin.',
|
|
||||||
'alert_type_status' => 'Změna stavu',
|
|
||||||
'alert_type_offline' => 'Offline',
|
|
||||||
'alert_type_always' => 'Vždy',
|
|
||||||
'log_status' => 'Log',
|
|
||||||
'log_status_description' => 'Pokud je Log nastaven na hodnotu TRUE, systém do něj zapíše veškerá
|
|
||||||
provedená upozornění.',
|
|
||||||
'log_email' => 'Logovat odeslané e-maily',
|
|
||||||
'log_sms' => 'Logovat odeslané textové zprávy',
|
|
||||||
'log_pushover' => 'Logovat odeslané Pushover zprávy',
|
|
||||||
'updated' => 'Nastavení bylo aktualizováno.',
|
|
||||||
'tab_email' => 'E-mail',
|
|
||||||
'tab_sms' => 'SMS',
|
|
||||||
'tab_pushover' => 'Pushover',
|
|
||||||
'settings_email' => 'Nastavení e-mailů',
|
|
||||||
'settings_sms' => 'Nastavení textových zpráv',
|
|
||||||
'settings_pushover' => 'Nastavení Pushover',
|
|
||||||
'settings_notification' => 'Nastavení upozornění',
|
|
||||||
'settings_log' => 'Nastavení logu',
|
|
||||||
'auto_refresh' => 'Automaticky obnovit',
|
|
||||||
'auto_refresh_description' => 'Automaticky obnovit stránku Servery.<br><span class="small">Čas v sekundách,
|
|
||||||
0 pro vypnutí automatického obnovení.</span>',
|
|
||||||
'test' => 'Test',
|
|
||||||
'test_email' => 'E-mail bude odeslán na adresu uvedenou v uživatelském profilu.',
|
|
||||||
'test_sms' => 'SMS bude odeslána na telefonní číslo uvedené v uživatelském profilu.',
|
|
||||||
'test_pushover' => 'Pushover upozornění bude odesláno uživateli/zařízení dle nastavení v
|
|
||||||
uživatelském profilu.',
|
|
||||||
'send' => 'Odeslat',
|
|
||||||
'test_subject' => 'Test',
|
|
||||||
'test_message' => 'Testovací zpráva',
|
|
||||||
'email_sent' => 'E-mail odeslán',
|
|
||||||
'email_error' => 'Chyba při odeslání e-mailu',
|
|
||||||
'sms_sent' => 'SMS odeslána',
|
|
||||||
'sms_error' => 'Chyba při odeslání SMS. %s',
|
|
||||||
'sms_error_nomobile' => 'Nebylo možné odeslat SMS: v uživatelském profilu nebylo nalezeno platné
|
|
||||||
telefonní číslo.',
|
|
||||||
'pushover_sent' => 'Pushover upozornění odesláno.',
|
|
||||||
'pushover_error' => 'Nastala chyba při odesílání Pushover upozornění: %s',
|
|
||||||
'pushover_error_noapp' => 'Nebylo možné odeslat testovací upozornění: v globálním nastavení nebyl
|
|
||||||
nalezen žádný API token.',
|
|
||||||
'pushover_error_nokey' => 'Nebylo možné odeslat testovací upozornění: ve vašem profilu není definován
|
|
||||||
Pushover key.',
|
|
||||||
'log_retention_period' => 'Rotace logu',
|
|
||||||
'log_retention_period_description' => 'Počet dnů po které budou zachovány logy upozornění. Vložte 0 pro
|
|
||||||
vypnutí autorotace.',
|
|
||||||
'log_retention_days' => 'dnů',
|
|
||||||
),
|
|
||||||
'notifications' => array(
|
|
||||||
'off_sms' => 'Server \'%LABEL%\' je offline: ip=%IP%, port=%PORT%. Chyba=%ERROR%',
|
|
||||||
'off_email_subject' => 'DŮLEŽITÉ: Server \'%LABEL%\' je offline',
|
|
||||||
'off_email_body' => 'Nebylo možné spojit se se serverem:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>Chyba: %ERROR%<br>Datum: %DATE%',
|
|
||||||
'off_pushover_title' => 'Server \'%LABEL%\' je offline',
|
|
||||||
'off_pushover_message' => 'Nebylo možné spojit se se serverem:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>Chyba: %ERROR%<br>Datum: %DATE%',
|
|
||||||
'on_sms' => 'Server \'%LABEL%\' je online: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
|
||||||
'on_email_subject' => 'DŮLEŽITÉ: Server \'%LABEL%\' je online',
|
|
||||||
'on_email_body' => 'Server \'%LABEL%\' je opět online, it was down for
|
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Datum:
|
|
||||||
%DATE%',
|
|
||||||
'on_pushover_title' => 'Server \'%LABEL%\' je online',
|
|
||||||
'on_pushover_message' => 'Server \'%LABEL%\' je znovu online, it was down for
|
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>Datum: %DATE%',
|
|
||||||
),
|
|
||||||
'login' => array(
|
|
||||||
'welcome_usermenu' => 'Vítejte, %user_name%',
|
|
||||||
'title_sign_in' => 'Prosím přihlašte se',
|
|
||||||
'title_forgot' => 'Zapomenuté heslo?',
|
|
||||||
'title_reset' => 'Obnova hesla',
|
|
||||||
'submit' => 'Odeslat',
|
|
||||||
'remember_me' => 'Zapamatovat údaje',
|
|
||||||
'login' => 'Přihlásit',
|
|
||||||
'logout' => 'Odhlásit',
|
|
||||||
'username' => 'Uživatelské jméno',
|
|
||||||
'password' => 'Heslo',
|
|
||||||
'password_repeat' => 'Opište heslo',
|
|
||||||
'password_forgot' => 'Zapomenuté heslo?',
|
|
||||||
'password_reset' => 'Obnovit heslo',
|
|
||||||
'password_reset_email_subject' => 'Obnovit heslo pro PHP Server Monitor',
|
|
||||||
'password_reset_email_body' => 'Použijte následující odkaz pro obnovení hesla. Odkaz je platný jednu
|
|
||||||
hodinu.<br><br>%link%',
|
|
||||||
'error_user_incorrect' => 'Zadané uživatelské jméno nebylo nalezeno.',
|
|
||||||
'error_login_incorrect' => 'Přihlášení nebylo úspěšné.',
|
|
||||||
'error_login_passwords_nomatch' => 'Zadaná hesla neodpovídají.',
|
|
||||||
'error_reset_invalid_link' => 'Odkaz je neplatný.',
|
|
||||||
'success_password_forgot' => 'Na vaši e-mailovou adresu byl zaslán e-mail s informacemi pro obnovu hesla.',
|
|
||||||
'success_password_reset' => 'Vaše heslo bylo úspěšně obnoveno. Prosím přihlašte se.',
|
|
||||||
),
|
|
||||||
'error' => array(
|
|
||||||
'401_unauthorized' => 'Nedostatečné oprávnění',
|
|
||||||
'401_unauthorized_description' => 'Nemáte oprávnění zobrazit tuto stránku.',
|
|
||||||
),
|
|
||||||
);
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -20,7 +19,7 @@
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author nerdalertdk
|
* @author nerdalertdk
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
|
@ -28,18 +27,13 @@
|
||||||
|
|
||||||
$sm_lang = array(
|
$sm_lang = array(
|
||||||
'name' => 'Dansk - Danish',
|
'name' => 'Dansk - Danish',
|
||||||
'locale' => array(
|
'locale' => array('da_DK.UTF-8', 'da_DK', 'danish', 'danish-dk'),
|
||||||
'0' => 'da_DK.UTF-8',
|
|
||||||
'1' => 'da_DK',
|
|
||||||
'2' => 'danish',
|
|
||||||
'3' => 'danish-dk',
|
|
||||||
),
|
|
||||||
'system' => array(
|
'system' => array(
|
||||||
'title' => 'Server Monitor',
|
'title' => 'Server Monitor',
|
||||||
'install' => 'Installér',
|
'install' => 'Installere',
|
||||||
'action' => 'Action',
|
'action' => 'Action',
|
||||||
'save' => 'Gem',
|
'save' => 'Gem',
|
||||||
'edit' => 'Redigér',
|
'edit' => 'Redigere',
|
||||||
'delete' => 'Slet',
|
'delete' => 'Slet',
|
||||||
'date' => 'Dato',
|
'date' => 'Dato',
|
||||||
'message' => 'Besked',
|
'message' => 'Besked',
|
||||||
|
@ -47,13 +41,12 @@ $sm_lang = array(
|
||||||
'no' => 'Nej',
|
'no' => 'Nej',
|
||||||
'insert' => 'Indsæt',
|
'insert' => 'Indsæt',
|
||||||
'add_new' => 'Tilføj ny',
|
'add_new' => 'Tilføj ny',
|
||||||
'update_available' => 'En ny version ({version}) er tilgængelig på <a
|
'update_available' => 'En ny version ({version}) er tilgængelig på <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
|
||||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
|
||||||
'back_to_top' => 'Til toppen',
|
'back_to_top' => 'Til toppen',
|
||||||
'go_back' => 'Tilbage',
|
'go_back' => 'Tilbage',
|
||||||
'ok' => 'OK',
|
'ok' => 'OK',
|
||||||
'cancel' => 'Annullér',
|
'cancel' => 'Annuller',
|
||||||
|
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||||
'short_day_format' => '%B %e',
|
'short_day_format' => '%B %e',
|
||||||
'long_day_format' => '%B %e, %Y',
|
'long_day_format' => '%B %e, %Y',
|
||||||
'yesterday_format' => 'Igår %k:%M',
|
'yesterday_format' => 'Igår %k:%M',
|
||||||
|
@ -65,14 +58,13 @@ $sm_lang = array(
|
||||||
'a_minute_ago' => 'omkring et minut siden',
|
'a_minute_ago' => 'omkring et minut siden',
|
||||||
'seconds_ago' => '%d sekunder siden',
|
'seconds_ago' => '%d sekunder siden',
|
||||||
'a_second_ago' => 'et sekund siden',
|
'a_second_ago' => 'et sekund siden',
|
||||||
'seconds' => 'sekunder',
|
|
||||||
),
|
),
|
||||||
'menu' => array(
|
'menu' => array(
|
||||||
'config' => 'Indstillinger',
|
'config' => 'Indstillinger',
|
||||||
'server' => 'Servere',
|
'server' => 'Servere',
|
||||||
'server_log' => 'Log',
|
'server_log' => 'Log',
|
||||||
'server_status' => 'Status',
|
'server_status' => 'Status',
|
||||||
'server_update' => 'Opdatér',
|
'server_update' => 'Opdatere',
|
||||||
'user' => 'Brugere',
|
'user' => 'Brugere',
|
||||||
'help' => 'Hjælp',
|
'help' => 'Hjælp',
|
||||||
),
|
),
|
||||||
|
@ -82,23 +74,18 @@ $sm_lang = array(
|
||||||
'user_name' => 'Brugernavn',
|
'user_name' => 'Brugernavn',
|
||||||
'password' => 'Adgangskode',
|
'password' => 'Adgangskode',
|
||||||
'password_repeat' => 'Adgangskode igen',
|
'password_repeat' => 'Adgangskode igen',
|
||||||
'password_leave_blank' => 'Udfyldes hvis du vil skifte adgangskode',
|
'password_leave_blank' => 'Udfyldes hvis du vil skifte kode',
|
||||||
'level' => 'Niveau',
|
'level' => 'Level',
|
||||||
'level_10' => 'Administrator',
|
'level_10' => 'Administrator',
|
||||||
'level_20' => 'Bruger',
|
'level_20' => 'Bruger',
|
||||||
'level_description' => '<b>Administratorer</b> har fuld adgang: De kan styre servere, brugere og
|
'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.',
|
||||||
indstillinger.<br><b>Brugere</b> kan kun se og opdatere servere som er de har adgang
|
|
||||||
til.',
|
|
||||||
'mobile' => 'Mobil',
|
'mobile' => 'Mobil',
|
||||||
'email' => 'E-mail',
|
'email' => 'Email',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'pushover_description' => 'Pushover er en service der gør det let at modtage real-time notifikationer. Se <a
|
'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.',
|
||||||
href="https://pushover.net/" target="_blank">deres website</a> for mere
|
'pushover_key' => 'Pushover Key',
|
||||||
information.',
|
'pushover_device' => 'Pushover Device',
|
||||||
'pushover_key' => 'Pushover nøgle',
|
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||||
'pushover_device' => 'Pushover enhed',
|
|
||||||
'pushover_device_description' => 'Navnet på enheden som beskeden skal sendes til. Lad denne være tom hvis
|
|
||||||
alle skal modtage beskeden.',
|
|
||||||
'delete_title' => 'Slet bruger',
|
'delete_title' => 'Slet bruger',
|
||||||
'delete_message' => 'Er du sikker på du vil slette bruger \'%1\'?',
|
'delete_message' => 'Er du sikker på du vil slette bruger \'%1\'?',
|
||||||
'deleted' => 'Bruger slettet.',
|
'deleted' => 'Bruger slettet.',
|
||||||
|
@ -107,11 +94,10 @@ $sm_lang = array(
|
||||||
'profile' => 'Profil',
|
'profile' => 'Profil',
|
||||||
'profile_updated' => 'Din profil er opdateret.',
|
'profile_updated' => 'Din profil er opdateret.',
|
||||||
'error_user_name_bad_length' => 'Brugernavn skal være mellem 2 til 64 tegn.',
|
'error_user_name_bad_length' => 'Brugernavn skal være mellem 2 til 64 tegn.',
|
||||||
'error_user_name_invalid' => 'Brugernavn må kun indholde alfabetiske tegn (a-z, A-Z), tal (0-9), prikker (.)
|
'error_user_name_invalid' => 'Brugernavn må kun indholde alfabetiske tegn (a-z, A-Z), tal (0-9) og (_).',
|
||||||
og (_).',
|
|
||||||
'error_user_name_exists' => 'Det valgte brugernavn findes allerede.',
|
'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_bad_length' => 'Email addresser skal være mellem 5 til 255 tegn.',
|
||||||
'error_user_email_invalid' => 'Den valgte e-mail er ugyldig.',
|
'error_user_email_invalid' => 'Den valgte email er ugyldig.',
|
||||||
'error_user_level_invalid' => 'Det angivet bruger niveau er ugyldig.',
|
'error_user_level_invalid' => 'Det angivet bruger niveau er ugyldig.',
|
||||||
'error_user_no_match' => 'Brugeren findes ikke.',
|
'error_user_no_match' => 'Brugeren findes ikke.',
|
||||||
'error_user_password_invalid' => 'Den indtastede adgangskode er ugyldig.',
|
'error_user_password_invalid' => 'Den indtastede adgangskode er ugyldig.',
|
||||||
|
@ -121,13 +107,10 @@ $sm_lang = array(
|
||||||
'title' => 'Logposter',
|
'title' => 'Logposter',
|
||||||
'type' => 'Type',
|
'type' => 'Type',
|
||||||
'status' => 'Status',
|
'status' => 'Status',
|
||||||
'email' => 'E-mail',
|
'email' => 'Email',
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'no_logs' => 'Intet i loggen',
|
'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(
|
'servers' => array(
|
||||||
'server' => 'Server',
|
'server' => 'Server',
|
||||||
|
@ -135,21 +118,19 @@ $sm_lang = array(
|
||||||
'label' => 'Label',
|
'label' => 'Label',
|
||||||
'domain' => 'Domæne/IP',
|
'domain' => 'Domæne/IP',
|
||||||
'timeout' => 'Timeout',
|
'timeout' => 'Timeout',
|
||||||
'timeout_description' => 'Antal sekunder som serveren har til at svare.',
|
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||||
'port' => 'Port',
|
'port' => 'Port',
|
||||||
'type' => 'Type',
|
'type' => 'Type',
|
||||||
'type_website' => 'Hjemmeside',
|
'type_website' => 'Hjemmeside',
|
||||||
'type_service' => 'Tjeneste',
|
'type_service' => 'Tjeneste',
|
||||||
'pattern' => 'Søgestreng/mønster',
|
'pattern' => 'Søge streng/mønster',
|
||||||
'pattern_description' => 'Hvis dette mønster ikke findes på hjemmesiden, vil serveren blive markeret som
|
'pattern_description' => 'Hvis dette mønster ikke findes på hjemmesiden, vil serveren blive markeret offline. Regulære udtryk er tilladt.',
|
||||||
værende offline. Regulære udtryk er tilladt.',
|
|
||||||
'last_check' => 'Sidst kontrolleret',
|
'last_check' => 'Sidst kontrolleret',
|
||||||
'last_online' => 'Sidst online',
|
'last_online' => 'Sidst online',
|
||||||
'last_offline' => 'Sidst offline',
|
|
||||||
'monitoring' => 'Overvågning',
|
'monitoring' => 'Overvågning',
|
||||||
'no_monitoring' => 'Ingen overvågning',
|
'no_monitoring' => 'Ingen overvågning',
|
||||||
'email' => 'E-mail',
|
'email' => 'Email',
|
||||||
'send_email' => 'Send E-mail',
|
'send_email' => 'Send Email',
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'send_sms' => 'Send SMS',
|
'send_sms' => 'Send SMS',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
|
@ -159,10 +140,10 @@ $sm_lang = array(
|
||||||
'deleted' => 'Server slettet.',
|
'deleted' => 'Server slettet.',
|
||||||
'updated' => 'Server opdateret.',
|
'updated' => 'Server opdateret.',
|
||||||
'inserted' => 'Server tilføjet.',
|
'inserted' => 'Server tilføjet.',
|
||||||
'latency' => 'Forsinkelse',
|
'latency' => 'Latency',
|
||||||
'latency_max' => 'Forsinkelse (maksimum)',
|
'latency_max' => 'Latency (maksimum)',
|
||||||
'latency_min' => 'Forsinkelse (minimum)',
|
'latency_min' => 'Latency (minimum)',
|
||||||
'latency_avg' => 'Forsinkelse (gennemsnitlig)',
|
'latency_avg' => 'Latency (gennemsnitlig)',
|
||||||
'uptime' => 'Oppetid',
|
'uptime' => 'Oppetid',
|
||||||
'year' => 'År',
|
'year' => 'År',
|
||||||
'month' => 'Måned',
|
'month' => 'Måned',
|
||||||
|
@ -170,121 +151,121 @@ $sm_lang = array(
|
||||||
'day' => 'Dag',
|
'day' => 'Dag',
|
||||||
'hour' => 'Time',
|
'hour' => 'Time',
|
||||||
'warning_threshold' => 'Advarsel grænse',
|
'warning_threshold' => 'Advarsel grænse',
|
||||||
'warning_threshold_description' => 'Antallet af fejl, før status skifter til offline.',
|
'warning_threshold_description' => 'Antal af fejl før status skifter til offline.',
|
||||||
'chart_last_week' => 'Sidste uge',
|
'chart_last_week' => 'Sidste uge',
|
||||||
'chart_history' => 'Historie',
|
'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_day_format' => '%d-%m-%Y',
|
||||||
'chart_long_date_format' => '%d-%m-%Y %H:%M:%S',
|
'chart_long_date_format' => '%d-%m-%Y %H:%M:%S',
|
||||||
'chart_short_date_format' => '%d/%m %H:%M',
|
'chart_short_date_format' => '%d/%m %H:%M',
|
||||||
'chart_short_time_format' => '%H:%M',
|
'chart_short_time_format' => '%H:%M',
|
||||||
'warning_notifications_disabled_sms' => 'SMS notifikationer er deaktiveret.',
|
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||||
'warning_notifications_disabled_email' => 'E-mail notifikationer er deaktiveret.',
|
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||||
'warning_notifications_disabled_pushover' => 'Pushover notifikationer er deaktiveret.',
|
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||||
'error_server_no_match' => 'Server ikke fundet.',
|
'error_server_no_match' => 'Server not found.',
|
||||||
'error_server_label_bad_length' => 'Label skal være mellem et og 255 karakterer.',
|
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
||||||
'error_server_ip_bad_length' => 'Domænet/IP skal være mellem et og 255 karakterer.',
|
'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.',
|
||||||
'error_server_ip_bad_service' => 'IP adressen er ikke gyldig.',
|
'error_server_ip_bad_service' => 'The IP address is not valid.',
|
||||||
'error_server_ip_bad_website' => 'Websitets URL er ikke gyldigt.',
|
'error_server_ip_bad_website' => 'The website URL is not valid.',
|
||||||
'error_server_type_invalid' => 'Den valgte servertype er ikke gyldig.',
|
'error_server_type_invalid' => 'The selected server type is invalid.',
|
||||||
'error_server_warning_threshold_invalid' => 'Advarsels-tærskel skal være et gyldigt tal større end 0.',
|
'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
|
||||||
),
|
),
|
||||||
'config' => array(
|
'config' => array(
|
||||||
'general' => 'Generelt',
|
'general' => 'Generelt',
|
||||||
'language' => 'Sprog',
|
'language' => 'Sprog',
|
||||||
'show_update' => 'Opdateringer',
|
'show_update' => 'Opdateringer',
|
||||||
'email_status' => 'Tillad at sende e-mail',
|
'email_status' => 'Tillad at sende mail',
|
||||||
'email_from_email' => 'E-mail fra adresse',
|
'email_from_email' => 'Email fra adresse',
|
||||||
'email_from_name' => 'E-mail fra navn',
|
'email_from_name' => 'Email fra navn',
|
||||||
'email_smtp' => 'Aktiver SMTP',
|
'email_smtp' => 'Aktiver SMTP',
|
||||||
'email_smtp_host' => 'SMTP vært',
|
'email_smtp_host' => 'SMTP vært',
|
||||||
'email_smtp_port' => 'SMTP port',
|
'email_smtp_port' => 'SMTP port',
|
||||||
'email_smtp_security' => 'SMTP c',
|
|
||||||
'email_smtp_security_none' => 'Ingen',
|
|
||||||
'email_smtp_username' => 'SMTP brugernavn',
|
'email_smtp_username' => 'SMTP brugernavn',
|
||||||
'email_smtp_password' => 'SMTP adgangskode',
|
'email_smtp_password' => 'SMTP adgangskode',
|
||||||
'email_smtp_noauth' => 'Efterlad blank hvis det ikke er krævet',
|
'email_smtp_noauth' => 'Efterladt blank hvis det ikke er opkrævet',
|
||||||
'sms_status' => 'Tillad at sende SMS beskeder',
|
'sms_status' => 'Tillad at sende SMS beskeder',
|
||||||
'sms_gateway' => 'SMS Gateway',
|
'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_username' => 'Gateway brugernavn/apikey',
|
||||||
'sms_gateway_password' => 'Gateway adgangskode',
|
'sms_gateway_password' => 'Gateway adgangskode',
|
||||||
'sms_from' => 'Afsenderens navn.',
|
'sms_from' => 'Afsenders navn.',
|
||||||
'pushover_status' => 'Tillad at sende Pushover beskeder',
|
'pushover_status' => 'Allow sending Pushover messages',
|
||||||
'pushover_description' => 'Pushover er en service det gør det nemt at modtage real-time notifikationer. Se <a
|
'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.',
|
||||||
href="https://pushover.net/" target="_blank">deres website</a> for yderligere
|
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||||
information.',
|
|
||||||
'pushover_clone_app' => 'Klik her for at oprette din Pushover app',
|
|
||||||
'pushover_api_token' => 'Pushover App API Token',
|
'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"
|
'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.',
|
||||||
rel="noopener">registrere en app</a> på deres website og indtaste en App
|
'alert_type' => 'Vælg hvornår du vil modtage besked',
|
||||||
API Token her.',
|
'alert_type_description' => '<b>Status ændring:</b> '.
|
||||||
'alert_type' => 'Vælg hvornår du vil modtage beskeden',
|
'Du vil modtage en notifcation når en server har en ændring i status. Fra online -> offline eller offline -> online.<br/>'.
|
||||||
'alert_type_description' => '<b>Status ændring:</b> Du vil modtage en notifkation når en server har en
|
'<br /><b>Offline:</b> '.
|
||||||
ændring i status. Fra online -> offline eller offline -> online.<br><br
|
'Du vil modtage en meddelelse, når en server går offline for * kun første gang *. for eksempel, '.
|
||||||
/><b>Offline:</b> Du vil modtage en meddelelse, når en server går offline for
|
'Hvis dit cronjob køre hvert kvatere og din server går ned kl 01 og kommer først op kl 06 '.
|
||||||
første gang. Eksempelvis hvis dit cronjob kører hvert kvarter, og din server
|
' så vil du kun modtage en mail kl 01.<br/>'.
|
||||||
går ned kl 01 og kommer først op kl 06, vil du kun modtage en mail kl
|
'<br><b>Altid:</b> '.
|
||||||
01.<br><br><b>Altid:</b> Du vil modtage en besked, hver gang scriptet kører og
|
'Du vil modtage en besked, hver gang scriptet kører og et websted er nede, selvom site har været offline i flere timer.',
|
||||||
et websted er nede, selvom site har været offline i flere timer.',
|
|
||||||
'alert_type_status' => 'Status ændret',
|
'alert_type_status' => 'Status ændret',
|
||||||
'alert_type_offline' => 'Offline',
|
'alert_type_offline' => 'Offline',
|
||||||
'alert_type_always' => 'Altid',
|
'alert_type_always' => 'Altid',
|
||||||
'log_status' => 'Log status',
|
'log_status' => 'Log status',
|
||||||
'log_status_description' => 'Hvis log status er sat til TRUE, vil monitoren logge hændelsen hver gang status
|
'log_status_description' => 'Hvis log status er sat til TRUE, vil monitoren logge hændelsen hver gang status ændre sig.',
|
||||||
ændre sig.',
|
'log_email' => 'Log mails sendt af systemet',
|
||||||
'log_email' => 'Log e-mails sendt af systemet',
|
|
||||||
'log_sms' => 'Log SMS sendt af systemet',
|
'log_sms' => 'Log SMS sendt af systemet',
|
||||||
'log_pushover' => 'Log pushover messages sent by the script',
|
'log_pushover' => 'Log pushover messages sent by the script',
|
||||||
'updated' => 'Indstillingerne er blevet opdateret.',
|
'updated' => 'Indstillingerne er blevet opdateret.',
|
||||||
'tab_email' => 'E-mail',
|
'tab_email' => 'Email',
|
||||||
'tab_sms' => 'SMS',
|
'tab_sms' => 'SMS',
|
||||||
'tab_pushover' => 'Pushover',
|
'tab_pushover' => 'Pushover',
|
||||||
'settings_email' => 'E-mail indstillinger',
|
'settings_email' => 'Email indstillinger',
|
||||||
'settings_sms' => 'SMS indstillinger',
|
'settings_sms' => 'SMS indstillinger',
|
||||||
'settings_pushover' => 'Pushover settings',
|
'settings_pushover' => 'Pushover settings',
|
||||||
'settings_notification' => 'Meddelelse indstillinger',
|
'settings_notification' => 'Meddelelse indstillinger',
|
||||||
'settings_log' => 'Log indstillinger',
|
'settings_log' => 'Log indstillinger',
|
||||||
'auto_refresh' => 'Genopfrisk automatisk',
|
'auto_refresh' => 'Genopfriske automatisk',
|
||||||
'auto_refresh_description' => 'Genopfrisk automatisk serversider.<br><span class="small">Tid i sekunder. Hvis
|
'auto_refresh_servers' =>
|
||||||
0 vil siden ikke genopfriske automatisk</span>',
|
'Genopfriske automatisk server sider.<br/>'.
|
||||||
|
'<span class="small">'.
|
||||||
|
'Tid i sekunder, Hvis 0 vil siden ikke genopfriske automatisk'.
|
||||||
|
'</span>',
|
||||||
|
'seconds' => 'sekunder',
|
||||||
'test' => 'Test',
|
'test' => 'Test',
|
||||||
'test_email' => 'En e-mail vil blive sendt til den adresse, der er angivet i din brugerprofil.',
|
'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_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
|
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||||
brugerprofilen.',
|
|
||||||
'send' => 'Send',
|
'send' => 'Send',
|
||||||
'test_subject' => 'Test',
|
'test_subject' => 'Test',
|
||||||
'test_message' => 'Test besked',
|
'test_message' => 'Test besked',
|
||||||
'email_sent' => 'E-mail sendt',
|
'email_sent' => 'Email sendt',
|
||||||
'email_error' => 'Fejl ved afsendelse af e-mail',
|
'email_error' => 'Fejl ved afsendelse af email',
|
||||||
'sms_sent' => 'Sms sendt',
|
'sms_sent' => 'Sms sendt',
|
||||||
'sms_error' => 'Fejl ved afsendelse af SMS. %s',
|
'sms_error' => 'Fejl ved afsendelse af SMS',
|
||||||
'sms_error_nomobile' => 'Ikke muligt at sende SMS: Intet gyldigt telefonnummer blev fundet i din profil.',
|
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||||
'pushover_sent' => 'Pushover notifikation blev sendt',
|
'pushover_sent' => 'Pushover notification sent',
|
||||||
'pushover_error' => 'En fejl opstod under afsendelse af Pushover notifikation: %s',
|
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||||
'pushover_error_noapp' => 'Ikke muligt at sende test notifikation: Intet Pushover App API token fundet i den
|
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||||
globale konfiguration.',
|
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||||
'pushover_error_nokey' => 'Ikke muligt at sende test notifikation: Ingen Pushover key fundet i din profil.',
|
'log_retention_period' => 'Log retention period',
|
||||||
'log_retention_period' => 'Logs gemmes',
|
'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_period_description' => 'Antal dage over hvor længe logs med notifikationer og arkiverede
|
'log_retention_days' => 'days',
|
||||||
serveres oppetid skal gemmes. Indtast 0 for at deaktivere logoprydning.',
|
|
||||||
'log_retention_days' => 'dage',
|
|
||||||
),
|
),
|
||||||
|
// for newlines in the email messages use <br/>
|
||||||
'notifications' => array(
|
'notifications' => array(
|
||||||
'off_sms' => 'Serveren \'%LABEL%\' er NEDE: ip=%IP%, port=%PORT%. Fejl=%ERROR%',
|
'off_sms' => 'Server \'%LABEL%\' is DOWN: ip=%IP%, port=%PORT%. Fejl=%ERROR%',
|
||||||
'off_email_subject' => 'VIGTIGT: Server \'%LABEL%\' er NEDE',
|
'off_email_subject' => 'VIGTIG: Server \'%LABEL%\' is DOWN',
|
||||||
'off_email_body' => 'Det lykkedes ikke at oprette forbindelse til følgende server:<br><br>Server:
|
'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%",
|
||||||
%LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Fejl: %ERROR%<br>Dato: %DATE%',
|
'off_pushover_title' => 'Server \'%LABEL%\' is DOWN',
|
||||||
'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/>Date: %DATE%",
|
||||||
'off_pushover_message' => 'Det lykkedes ikke at oprette forbindelse til følgende server:<br><br>Server:
|
'on_sms' => 'Server \'%LABEL%\' is RUNNING: ip=%IP%, port=%PORT%',
|
||||||
%LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Fejl: %ERROR%<br>Dato: %DATE%',
|
'on_email_subject' => 'VIGTIG: Server \'%LABEL%\' is RUNNING',
|
||||||
'on_sms' => 'Serveren \'%LABEL%\' KØRER: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
'on_email_body' => "Server '%LABEL%' køre igen:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Dato: %DATE%",
|
||||||
'on_email_subject' => 'VIGTIGT: Serveren \'%LABEL%\' KØRER',
|
'on_pushover_title' => 'Server \'%LABEL%\' is RUNNING',
|
||||||
'on_email_body' => 'Serveren \'%LABEL%\' kører igen, it was down for %LAST_OFFLINE_DURATION%:<br><br>Server:
|
'on_pushover_message' => "Server '%LABEL%' køre igen:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Dato: %DATE%",
|
||||||
%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(
|
'login' => array(
|
||||||
'welcome_usermenu' => 'Velkommen, %user_name%',
|
'welcome_usermenu' => 'Velkommen, %user_name%',
|
||||||
|
@ -301,18 +282,16 @@ $sm_lang = array(
|
||||||
'password_forgot' => 'Glemt adgangskode?',
|
'password_forgot' => 'Glemt adgangskode?',
|
||||||
'password_reset' => 'Nulstil adgangskode',
|
'password_reset' => 'Nulstil adgangskode',
|
||||||
'password_reset_email_subject' => 'Nulstil din adgangskode for PHP Server Monitor',
|
'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
|
'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%',
|
||||||
linkets gyldighed udløber efter en time.<br><br>%link%',
|
|
||||||
'error_user_incorrect' => 'Det angivet brugernavn kunne ikke findes.',
|
'error_user_incorrect' => 'Det angivet brugernavn kunne ikke findes.',
|
||||||
'error_login_incorrect' => 'Oplysningerne stemmer ikke overens.',
|
'error_login_incorrect' => 'Oplysningerne stemmer ikke overens.',
|
||||||
'error_login_passwords_nomatch' => 'De angivne adgangskoder er ikke ens.',
|
'error_login_passwords_nomatch' => 'De angivet adgangskoder matcher ikke.',
|
||||||
'error_reset_invalid_link' => 'Følgende link er ugyldigt.',
|
'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
|
'success_password_forgot' => 'En e-mail er blevet sendt til dig med oplysninger om, hvordan du nulstiller din adgangskode.',
|
||||||
adgangskode.',
|
'success_password_reset' => 'Dit password er blevet nulstillet. venligst log ind.',
|
||||||
'success_password_reset' => 'Din adgangskode er blevet nulstillet. Log venligst ind igen.',
|
|
||||||
),
|
),
|
||||||
'error' => array(
|
'error' => array(
|
||||||
'401_unauthorized' => 'Uautoriseret',
|
'401_unauthorized' => 'Unauthorized',
|
||||||
'401_unauthorized_description' => 'Du har ikke rettigheder til at se denne side.',
|
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -19,8 +18,8 @@
|
||||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Jean Pierre Kolb <http://www.jpkc.com/>
|
* @author Brunbaur Herbert
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
|
@ -28,107 +27,90 @@
|
||||||
|
|
||||||
$sm_lang = array(
|
$sm_lang = array(
|
||||||
'name' => 'Deutsch - German',
|
'name' => 'Deutsch - German',
|
||||||
'locale' => array(
|
'locale' => array('de_DE.UTF-8', 'de_DE', 'german'),
|
||||||
'0' => 'de_DE.UTF-8',
|
|
||||||
'1' => 'de_DE',
|
|
||||||
'2' => 'german',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'de',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
'system' => array(
|
||||||
'title' => 'Server Monitor',
|
'title' => 'Server Monitor',
|
||||||
'install' => 'Installation',
|
'install' => 'Install',
|
||||||
'action' => 'Aktion',
|
'action' => 'Aktion',
|
||||||
'save' => 'Speichern',
|
'save' => 'Speichern',
|
||||||
'edit' => 'Bearbeiten',
|
'edit' => 'Bearbeiten',
|
||||||
'delete' => 'Löschen',
|
'delete' => 'Löschen',
|
||||||
'date' => 'Datum',
|
'date' => 'Datum',
|
||||||
'message' => 'Meldung',
|
'message' => 'Meldung',
|
||||||
'yes' => 'Ja',
|
'yes' => 'Ja',
|
||||||
'no' => 'Nein',
|
'no' => 'Nein',
|
||||||
'insert' => 'Einfügen',
|
'insert' => 'Einfügen',
|
||||||
'add_new' => 'Neuen Eintrag erstellen',
|
'add_new' => 'Neuen Eintrag erstellen',
|
||||||
'update_available' => 'Eine Aktualisierung ({version}) ist verfügbar unter <a
|
'update_available' => 'Ein neues Update ({version}) ist verfügbar auf <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
'back_to_top' => 'Back to top',
|
||||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
'go_back' => 'Go back',
|
||||||
'back_to_top' => 'nach oben',
|
|
||||||
'go_back' => 'Zurück',
|
|
||||||
'ok' => 'OK',
|
'ok' => 'OK',
|
||||||
'cancel' => 'Abbrechen',
|
'cancel' => 'Cancel',
|
||||||
|
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||||
'short_day_format' => '%B %e',
|
'short_day_format' => '%B %e',
|
||||||
'long_day_format' => '%B %e, %Y',
|
'long_day_format' => '%B %e, %Y',
|
||||||
'yesterday_format' => 'Gestern um %k:%M Uhr',
|
'yesterday_format' => 'Gestern um %k:%M',
|
||||||
'other_day_format' => '%A um %k:%M Uhr',
|
'other_day_format' => '%A um %k:%M',
|
||||||
'never' => 'Nie',
|
'never' => 'Never',
|
||||||
'hours_ago' => 'vor %d Stunden',
|
'hours_ago' => '%d hours ago',
|
||||||
'an_hour_ago' => 'vor über einer Stunde',
|
'an_hour_ago' => 'about an hour ago',
|
||||||
'minutes_ago' => 'vor %d Minuten',
|
'minutes_ago' => '%d minutes ago',
|
||||||
'a_minute_ago' => 'vor über einer Minute',
|
'a_minute_ago' => 'about a minute ago',
|
||||||
'seconds_ago' => 'vor %d Sekunden',
|
'seconds_ago' => '%d seconds ago',
|
||||||
'a_second_ago' => 'vor über einer Sekunde',
|
'a_second_ago' => 'a second ago',
|
||||||
'seconds' => 'Sekunden',
|
|
||||||
),
|
),
|
||||||
'menu' => array(
|
'menu' => array(
|
||||||
'config' => 'Einstellungen',
|
'config' => 'Einstellungen',
|
||||||
'server' => 'Server',
|
'server' => 'Server',
|
||||||
'server_log' => 'Protokoll',
|
'server_log' => 'Log',
|
||||||
'server_status' => 'Status',
|
'server_status' => 'Status',
|
||||||
'server_update' => 'Update',
|
'server_update' => 'Updates',
|
||||||
'user' => 'Benutzer',
|
'user' => 'Benutzer',
|
||||||
'help' => 'Hilfe',
|
'help' => 'Hilfe',
|
||||||
),
|
),
|
||||||
'users' => array(
|
'users' => array(
|
||||||
'user' => 'Benutzer',
|
'user' => 'Benutzer',
|
||||||
'name' => 'Name',
|
'name' => 'Name',
|
||||||
'user_name' => 'Benutzername',
|
'user_name' => 'Username',
|
||||||
'password' => 'Passwort',
|
'password' => 'Password',
|
||||||
'password_repeat' => 'Passwort wiederholen',
|
'password_repeat' => 'Password repeat',
|
||||||
'password_leave_blank' => 'Passwort ändern...',
|
'password_leave_blank' => 'Leave blank to keep unchanged',
|
||||||
'level' => 'Berechtigungsstufe',
|
'level' => 'Level',
|
||||||
'level_10' => 'Administrator',
|
'level_10' => 'Administrator',
|
||||||
'level_20' => 'Benutzer',
|
'level_20' => 'User',
|
||||||
'level_description' => '<b>Administratoren</b> haben vollen Zugriff — sie können Webseiten, Benutzer und
|
'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.',
|
||||||
globale Einstellungen verwalten.<br><b>Benutzer</b> können nur (für ihnen
|
|
||||||
zugeordnete Webseiten) Analysedaten einsehen und deren Aktualisierung veranlassen.',
|
|
||||||
'mobile' => 'Mobil',
|
'mobile' => 'Mobil',
|
||||||
'email' => 'E-Mail',
|
'email' => 'Email',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'pushover_description' => 'Pushover ist ein Dienst, der es stark vereinfacht, Statusbenachrichtigungen in
|
'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.',
|
||||||
Echtzeit zu erhalten. Besuchen Sie <a href="https://pushover.net/"
|
'pushover_key' => 'Pushover Key',
|
||||||
target="_blank">pushover.net</a> für weitere Informationen.',
|
'pushover_device' => 'Pushover Device',
|
||||||
'pushover_key' => 'Pushover Key/Schlüssel',
|
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||||
'pushover_device' => 'Pushover Gerät',
|
'delete_title' => 'Delete User',
|
||||||
'pushover_device_description' => 'Name des Gerätes, an das die Nachricht gesendet werden soll. Leer lassen,
|
'delete_message' => 'Are you sure you want to delete user \'%1\'?',
|
||||||
um die Nachricht an alle registrierten Geräte zu senden.',
|
'deleted' => 'User deleted.',
|
||||||
'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.',
|
'updated' => 'Benutzer bearbeitet.',
|
||||||
'inserted' => 'Benutzer hinzugefügt.',
|
'inserted' => 'Benutzer eingetragen.',
|
||||||
'profile' => 'Profileinstellungen',
|
'profile' => 'Profile',
|
||||||
'profile_updated' => 'Ihr Profil wurde aktualisiert.',
|
'profile_updated' => 'Your profile has been updated.',
|
||||||
'error_user_name_bad_length' => 'Benutzernamen müssen zwischen 2 und 64 Zeichen lang sein.',
|
'error_user_name_bad_length' => 'Usernames must be between 2 and 64 characters.',
|
||||||
'error_user_name_invalid' => 'Der Benutzername darf nur alphanumerische Zeichen (a-z, A-Z), Zahlen (0-9),
|
'error_user_name_invalid' => 'It may only contain alphabetic characters (a-z, A-Z), digits (0-9) and underscores (_).',
|
||||||
Punkte (.) und Unterstriche (_) enthalten.',
|
'error_user_name_exists' => 'The given username already exists in the database.',
|
||||||
'error_user_name_exists' => 'Der gewählte Benutzername existiert bereits in der Datenbank.',
|
'error_user_email_bad_length' => 'Email addresses must be between 5 and 255 characters.',
|
||||||
'error_user_email_bad_length' => 'E-Mail-Adressen müssen zwischen 5 und 255 Zeichen lang sein.',
|
'error_user_email_invalid' => 'The email address is invalid.',
|
||||||
'error_user_email_invalid' => 'Die E-Mail-Adresse ist ungültig.',
|
'error_user_level_invalid' => 'The given user level is invalid.',
|
||||||
'error_user_level_invalid' => 'Die gewählte Berechtigungsstufe ist ungültig.',
|
'error_user_no_match' => 'The user could not be found in the database.',
|
||||||
'error_user_no_match' => 'Der Benutzer konnte in der Datenbank nicht gefunden werden.',
|
'error_user_password_invalid' => 'The entered password is invalid.',
|
||||||
'error_user_password_invalid' => 'Das eingegebene Passwort ist nicht korrekt.',
|
'error_user_password_no_match' => 'The entered passwords do not match.',
|
||||||
'error_user_password_no_match' => 'Die eingegebenen Passwörter stimmen nicht überein.',
|
|
||||||
),
|
),
|
||||||
'log' => array(
|
'log' => array(
|
||||||
'title' => 'Protokoll',
|
'title' => 'Log Einträge',
|
||||||
'type' => 'Typ',
|
'type' => 'Type',
|
||||||
'status' => 'Status',
|
'status' => 'Status',
|
||||||
'email' => 'E-Mail',
|
'email' => 'Email',
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'no_logs' => 'Keine Protokolle vorhanden.',
|
'no_logs' => 'No logs',
|
||||||
'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(
|
'servers' => array(
|
||||||
'server' => 'Server',
|
'server' => 'Server',
|
||||||
|
@ -136,201 +118,180 @@ $sm_lang = array(
|
||||||
'label' => 'Beschriftung',
|
'label' => 'Beschriftung',
|
||||||
'domain' => 'Domain/IP',
|
'domain' => 'Domain/IP',
|
||||||
'timeout' => 'Timeout',
|
'timeout' => 'Timeout',
|
||||||
'timeout_description' => 'Anzahl der Sekunden, die auf eine Antwort des Servers gewartet werden soll.',
|
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||||
'port' => 'Port',
|
'port' => 'Port',
|
||||||
'type' => 'Typ',
|
'type' => 'Type',
|
||||||
'type_website' => 'Webseite',
|
'type_website' => 'Website',
|
||||||
'type_service' => 'Service',
|
'type_service' => 'Service',
|
||||||
'type_ping' => 'Ping',
|
'pattern' => 'Search string/pattern',
|
||||||
'pattern' => 'Suchstring/-muster',
|
'pattern_description' => 'If this pattern is not found on the website, the server will be marked offline. Regular expressions are allowed.',
|
||||||
'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_check' => 'Letzter Check',
|
||||||
'last_online' => 'Zuletzt online',
|
'last_online' => 'Letztes mal Online',
|
||||||
'last_offline' => 'Zuletzt offline',
|
|
||||||
'monitoring' => 'Monitoring',
|
'monitoring' => 'Monitoring',
|
||||||
'no_monitoring' => 'Monitoring inaktiv',
|
'no_monitoring' => 'No monitoring',
|
||||||
'email' => 'E-Mail',
|
'email' => 'Email',
|
||||||
'send_email' => 'E-Mail versenden',
|
'send_email' => 'Email',
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'send_sms' => 'SMS versenden',
|
'send_sms' => 'SMS',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'users' => 'Benutzer',
|
'users' => 'Users',
|
||||||
'delete_title' => 'Server löschen',
|
'delete_title' => 'Delete Server',
|
||||||
'delete_message' => 'Sind Sie sicher, dass Sie den Server \'%1\' löschen wollen?',
|
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
|
||||||
'deleted' => 'Server gelöscht.',
|
'deleted' => 'Server deleted.',
|
||||||
'updated' => 'Server aktualisiert.',
|
'updated' => 'Server aktualisiert.',
|
||||||
'inserted' => 'Server hinzugefügt.',
|
'inserted' => 'Server eingetragen.',
|
||||||
'latency' => 'Antwortzeit',
|
'latency' => 'Antwortzeit',
|
||||||
'latency_max' => 'Antwortzeit (Maximum)',
|
'latency_max' => 'Latency (maximum)',
|
||||||
'latency_min' => 'Antwortzeit (Minimum)',
|
'latency_min' => 'Latency (minimum)',
|
||||||
'latency_avg' => 'Antwortzeit (im Durchschnitt)',
|
'latency_avg' => 'Latency (average)',
|
||||||
'uptime' => 'Uptime',
|
'uptime' => 'Uptime',
|
||||||
'year' => 'Jahr',
|
'year' => 'Year',
|
||||||
'month' => 'Monat',
|
'month' => 'Month',
|
||||||
'week' => 'Woche',
|
'week' => 'Week',
|
||||||
'day' => 'Tag',
|
'day' => 'Day',
|
||||||
'hour' => 'Stunde',
|
'hour' => 'Hour',
|
||||||
'warning_threshold' => 'Warnschwelle',
|
'warning_threshold' => 'Warning threshold',
|
||||||
'warning_threshold_description' => 'Anzahl der fehlgeschlagenen Überprüfungen, bevor der Status als offline
|
'warning_threshold_description' => 'Number of failed checks required before it is marked offline.',
|
||||||
markiert wird.',
|
'chart_last_week' => 'Last week',
|
||||||
'chart_last_week' => 'Letzte Woche',
|
'chart_history' => 'History',
|
||||||
'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_day_format' => '%d.%m.%Y',
|
||||||
'chart_long_date_format' => '%d.%m.%Y %H:%M:%S Uhr',
|
'chart_long_date_format' => '%d.%m.%Y %H:%M:%S',
|
||||||
'chart_short_date_format' => '%d.%m %H:%M Uhr',
|
'chart_short_date_format' => '%d.%m %H:%M',
|
||||||
'chart_short_time_format' => '%H:%M Uhr',
|
'chart_short_time_format' => '%H:%M',
|
||||||
'warning_notifications_disabled_sms' => 'SMS-Benachrichtigungen sind deaktiviert.',
|
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||||
'warning_notifications_disabled_email' => 'E-Mail-Benachrichtigungen sind deaktiviert.',
|
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||||
'warning_notifications_disabled_pushover' => 'Pushover-Benachrichtigungen sind deaktiviert.',
|
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||||
'error_server_no_match' => 'Server nicht gefunden.',
|
'error_server_no_match' => 'Server not found.',
|
||||||
'error_server_label_bad_length' => 'Das Label muss zwischen 1 und 255 Zeichen lang sein.',
|
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
||||||
'error_server_ip_bad_length' => 'Die Domain/IP muss zwischen 1 und 255 Zeichen lang sein.',
|
'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.',
|
||||||
'error_server_ip_bad_service' => 'Die eingegebene IP-Adresse ist ungültig.',
|
'error_server_ip_bad_service' => 'The IP address is not valid.',
|
||||||
'error_server_ip_bad_website' => 'Die eingegebene Webseiten-URL ist ungültig.',
|
'error_server_ip_bad_website' => 'The website URL is not valid.',
|
||||||
'error_server_type_invalid' => 'Der gewählte Server-Typ ist ungültig.',
|
'error_server_type_invalid' => 'The selected server type is invalid.',
|
||||||
'error_server_warning_threshold_invalid' => 'Die Warnschwelle muss eine gültige ganze Zahl größer als 0
|
'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
|
||||||
sein.',
|
|
||||||
),
|
),
|
||||||
'config' => array(
|
'config' => array(
|
||||||
'general' => 'Allgemein',
|
'general' => 'General',
|
||||||
'language' => 'Sprache',
|
'language' => 'Sprache',
|
||||||
'show_update' => 'Wöchentlich auf Aktualisierungen prüfen?',
|
'show_update' => 'Updats wöchentlich prüfen?',
|
||||||
'email_add_url' => 'Server URL an E-Mail anhängen?',
|
'email_status' => 'Email senden erlauben?',
|
||||||
'email_status' => 'E-Mail-Versand erlauben?',
|
'email_from_email' => 'Email from address',
|
||||||
'email_from_email' => 'Absenderadresse',
|
'email_from_name' => 'Email from name',
|
||||||
'email_from_name' => 'Name des Absenders',
|
'email_smtp' => 'Enable SMTP',
|
||||||
'email_smtp' => 'SMTP-Versand aktivieren',
|
'email_smtp_host' => 'SMTP host',
|
||||||
'email_smtp_host' => 'SMTP Server/Host',
|
'email_smtp_port' => 'SMTP port',
|
||||||
'email_smtp_port' => 'SMTP Port',
|
'email_smtp_username' => 'SMTP username',
|
||||||
'email_smtp_security' => 'SMTP Authentifizierung',
|
'email_smtp_password' => 'SMTP password',
|
||||||
'email_smtp_security_none' => 'Keine',
|
'email_smtp_noauth' => 'Leave blank for no authentication',
|
||||||
'email_smtp_username' => 'SMTP Benutzername',
|
'sms_status' => 'SMS Nachricht senden erlauben?',
|
||||||
'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' => '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_username' => 'Gateway Benutzername',
|
||||||
'sms_gateway_password' => 'Gateway Passwort',
|
'sms_gateway_password' => 'Gateway Passwort',
|
||||||
'sms_from' => 'SMS-Sendernummer',
|
'sms_from' => 'SMS Sendernummer',
|
||||||
'pushover_status' => 'Ermögliche das Senden von Pushover-Nachrichten',
|
'pushover_status' => 'Allow sending Pushover messages',
|
||||||
'pushover_description' => 'Pushover ist ein Dienst, der es stark vereinfacht, Statusbenachrichtigungen in
|
'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.',
|
||||||
Echtzeit zu erhalten. Besuchen Sie <a href="https://pushover.net/"
|
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||||
target="_blank">pushover.net</a> für weitere Informationen.',
|
'pushover_api_token' => 'Pushover App API Token',
|
||||||
'pushover_clone_app' => 'Klicken Sie hier, um Ihre Pushover-Anwendung zu erstellen',
|
'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_api_token' => 'Pushover-Anwendungs-API-Token',
|
'alert_type' => 'Wann möchten Sie benachrichtig werden?',
|
||||||
'pushover_api_token_description' => 'Bevor Sie Pushover verwenden können, müssen Sie Ihre <a href="%1$s"
|
'alert_type_description' => '<b>Status geändert:</b> '.
|
||||||
target="_blank" rel="noopener">Anwendung hier registrieren</a> und Ihren
|
'... wenn sich der Status ändert<br/>'.
|
||||||
Anwendungs-API-Token hier eingeben.',
|
'z.B. online -> offline oder offline -> online.<br/>'.
|
||||||
'telegram_status' => 'Telegram Nachrichten erlauben?',
|
'<br/><b>Offline: </b>'.
|
||||||
'telegram_add_url' => 'Server URL an Nachricht anhängen?',
|
'Sie bekommen eine Benachrichtigung, wenn ein Server Offline ist.<br/>'.
|
||||||
'jabber_status' => 'Allow sending Jabber (XMPP) messages',
|
'Es wird nur eine Mitteilung versendet.<br/>'.
|
||||||
'alert_type' => 'Wann möchten Sie benachrichtigt werden?',
|
'<br/><b>Immer: </b>'.
|
||||||
'alert_type_description' => '<b>Status geändert:</b> ... wenn sich der Status ändert<br>z. B. online ->
|
'Sie werden jedesmal wenn der CronJob oder das Script ausgeführt wird benachrichtigt auch wenn der Dienst mehreres Stunden offline ist',
|
||||||
offline oder offline -> online.<br><br><b>Offline: </b>Sie bekommen eine
|
'alert_type_status' => 'Status geändert',
|
||||||
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_offline' => 'Offline',
|
||||||
'alert_type_always' => 'Immer',
|
'alert_type_always' => 'Immer',
|
||||||
'log_status' => 'Protokollierung aktivieren?',
|
'log_status' => 'Log Status',
|
||||||
'log_status_description' => 'Ist die Protokollierung aktiviert (d.h. ist ein Haken gesetzt), wird jeder Status
|
'log_status_description' => 'Ist der Log Status auf TRUE (ein Hacken) gesetzt, wird jeder Status protokolliert.',
|
||||||
und jede Meldung vom System protokolliert.',
|
'log_email' => 'Email Log per Script senden?',
|
||||||
'log_email' => 'E-Mail-Versand protokollieren?',
|
'log_sms' => 'SMS Log per Script senden?',
|
||||||
'log_sms' => 'SMS-Versand protokollieren?',
|
'log_pushover' => 'Pushover Log per Script senden?',
|
||||||
'log_pushover' => 'Pushover-Versand protokollieren?',
|
|
||||||
'log_telegram' => 'Telegram-Versand protokollieren?',
|
|
||||||
'updated' => 'Die Einstellungen wurden gespeichert.',
|
'updated' => 'Die Einstellungen wurden gespeichert.',
|
||||||
'tab_email' => 'E-Mail',
|
'tab_email' => 'Email',
|
||||||
'tab_sms' => 'SMS',
|
'tab_sms' => 'SMS',
|
||||||
'tab_pushover' => 'Pushover',
|
'tab_pushover' => 'Pushover',
|
||||||
'settings_email' => 'E-Mail-Einstellungen',
|
'settings_email' => 'Email',
|
||||||
'settings_sms' => 'SMS-Einstellungen',
|
'settings_sms' => 'SMS Nachricht',
|
||||||
'settings_pushover' => 'Pushover-Einstellungen',
|
'settings_pushover' => 'Pushover settings',
|
||||||
'settings_notification' => 'Benachrichtigungseinstellungen',
|
'settings_notification' => 'Benachrichtigung',
|
||||||
'settings_log' => 'Protokollierungseinstellungen',
|
'settings_log' => 'Log',
|
||||||
'auto_refresh' => 'Automatische Aktualisierung',
|
'auto_refresh' => 'Auto-refresh',
|
||||||
'auto_refresh_description' => 'Automatische Aktualisierung der Server-Übersichtsseite<br><span
|
'auto_refresh_servers' =>
|
||||||
class="small">Zeit in Sekunden - die Ziffer \'0\' deaktiviert die automatische
|
'Auto-refresh servers page<br/>'.
|
||||||
Aktualisierung.</span>',
|
'<span class="small">'.
|
||||||
|
'Time in seconds, if 0 the page won\'t refresh.'.
|
||||||
|
'</span>',
|
||||||
|
'seconds' => 'seconds',
|
||||||
'test' => 'Test',
|
'test' => 'Test',
|
||||||
'test_email' => 'Eine E-Mail wird an die E-Mail-Adresse gesendet, die in Ihrem Profil hinterlegt ist.',
|
'test_email' => 'An email will be sent to the address specified in your user profile.',
|
||||||
'test_sms' => 'Eine SMS wird an die Telefonnummer gesendet, die in Ihrem Profil hinterlegt ist.',
|
'test_sms' => 'An SMS will be sent to the phone number specified in your user profile.',
|
||||||
'test_pushover' => 'Eine Pushover-Benachrichtigung wird an den Schlüssel/das Gerät gesendet, welche(s) in
|
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||||
Ihrem Profil hinterlegt ist.',
|
'send' => 'Send',
|
||||||
'send' => 'Senden',
|
|
||||||
'test_subject' => 'Test',
|
'test_subject' => 'Test',
|
||||||
'test_message' => 'Testnachricht',
|
'test_message' => 'Test message',
|
||||||
'email_sent' => 'E-Mail gesendet.',
|
'email_sent' => 'Email sent',
|
||||||
'email_error' => 'Beim Versand der E-Mail trat ein Fehler auf.',
|
'email_error' => 'Error in email sending',
|
||||||
'sms_sent' => 'SMS-Nachricht gesendet.',
|
'sms_sent' => 'Sms sent',
|
||||||
'sms_error' => 'Beim Versand der SMS-Nachricht trat ein Fehler auf. %s',
|
'sms_error' => 'Error in sms sending',
|
||||||
'sms_error_nomobile' => 'Versand der SMS-Nachricht nicht möglich: Es wurde keine gültige Telefonnummer in
|
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||||
Ihrem Profil hinterlegt.',
|
'pushover_sent' => 'Pushover notification sent',
|
||||||
'pushover_sent' => 'Pushover-Benachrichtigung versendet',
|
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||||
'pushover_error' => 'Beim Versand der Pushover-Benachrichtigung trat ein Fehler auf: %s',
|
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||||
'pushover_error_noapp' => 'Es konnte keine Testbenachrichtigung versendet werden: Kein
|
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||||
Pushover-Anwendungs-API-Token in den allgemeinen Einstellungen hinterlegt.',
|
'log_retention_period' => 'Log retention period',
|
||||||
'pushover_error_nokey' => 'Es konnte keine Testbenachrichtigung versendet werden: Es wurde kein Pushover
|
'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
|
||||||
Key/Schlüssel in Ihrem Profil hinterlegt.',
|
'log_retention_days' => 'days',
|
||||||
'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',
|
|
||||||
),
|
),
|
||||||
|
// for newlines in the email messages use <br/>
|
||||||
'notifications' => array(
|
'notifications' => array(
|
||||||
'off_sms' => 'Dienst/Webseite \'%LABEL%\' ist offline: ip=%IP%, port=%PORT%. Fehler=%ERROR%',
|
'off_sms' => 'Server \'%LABEL%\' ist Offline: ip=%IP%, port=%PORT%. Fehler=%ERROR%',
|
||||||
'off_email_subject' => 'Warnung: Dienst/Webseite \'%LABEL%\' ist offline.',
|
'off_email_subject' => 'Wichtig: Server \'%LABEL%\' ist Offline',
|
||||||
'off_email_body' => 'Kann keine funktionierende Verbindung zum Dienst bzw. der Webseite
|
'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%",
|
||||||
aufbauen:<br><br>Dienst/Webseite: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Fehler:
|
'off_pushover_title' => 'Server \'%LABEL%\' ist Offline',
|
||||||
%ERROR%<br>Datum: %DATE% Uhr',
|
'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%",
|
||||||
'off_pushover_title' => 'Dienst/Webseite \'%LABEL%\' ist offline.',
|
'on_sms' => 'Server \'%LABEL%\' ist wieder Online: ip=%IP%, port=%PORT%',
|
||||||
'off_pushover_message' => 'Kann keine funktionierende Verbindung zum Dienst bzw. der Webseite
|
'on_email_subject' => 'Wichtig: Server \'%LABEL%\' ist wieder Online',
|
||||||
aufbauen:<br><br>Dienst/Webseite: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Fehler:
|
'on_email_body' => "Server '%LABEL%' läuft wieder:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Datum: %DATE%",
|
||||||
%ERROR%<br>Datum: %DATE% Uhr',
|
'on_pushover_title' => 'Server \'%LABEL%\' ist wieder Online',
|
||||||
'on_sms' => 'Dienst/Webseite \'%LABEL%\' ist wieder online: ip=%IP%, port=%PORT%, offline für
|
'on_pushover_message' => "Server '%LABEL%' läuft wieder:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Datum: %DATE%",
|
||||||
%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(
|
'login' => array(
|
||||||
'welcome_usermenu' => '%user_name%',
|
'welcome_usermenu' => 'Welcome, %user_name%',
|
||||||
'title_sign_in' => 'Bitte loggen Sie sich ein.',
|
'title_sign_in' => 'Please sign in',
|
||||||
'title_forgot' => 'Passwort vergessen?',
|
'title_forgot' => 'Forgot your password?',
|
||||||
'title_reset' => 'Ihr Passwort zurücksetzen',
|
'title_reset' => 'Reset your password',
|
||||||
'submit' => 'Senden',
|
'submit' => 'Submit',
|
||||||
'remember_me' => 'Angemeldet bleiben',
|
'remember_me' => 'Remember me',
|
||||||
'login' => 'Login',
|
'login' => 'Login',
|
||||||
'logout' => 'Abmelden',
|
'logout' => 'Logout',
|
||||||
'username' => 'Benutzername',
|
'username' => 'Username',
|
||||||
'password' => 'Passwort',
|
'password' => 'Password',
|
||||||
'password_repeat' => 'Passwort wiederholen',
|
'password_repeat' => 'Repeat password',
|
||||||
'password_forgot' => 'Passwort vergessen?',
|
'password_forgot' => 'Forgot password?',
|
||||||
'password_reset' => 'Passwort zurücksetzen',
|
'password_reset' => 'Reset password',
|
||||||
'password_reset_email_subject' => 'Setzen Sie Ihr Zugangspasswort für den Server Monitor',
|
'password_reset_email_subject' => 'Reset your password for PHP Server Monitor',
|
||||||
'password_reset_email_body' => 'Benutzen Sie bitte den folgenden Link, um Ihr Zugangspasswort zurückzusetzen.
|
'password_reset_email_body' => 'Please use the following link to reset your password. Please note it expires in 1 hour.<br/><br/>%link%',
|
||||||
Bitte beachten Sie: Der Link verfällt in einer Stunde.<br><br>%link%',
|
'error_user_incorrect' => 'The provided username could not be found.',
|
||||||
'error_user_incorrect' => 'Der angegebene Benutzername konnte nicht gefunden werden.',
|
'error_login_incorrect' => 'The information is incorrect.',
|
||||||
'error_login_incorrect' => 'Die angegebenen Informationen sind leider nicht korrekt.',
|
'error_login_passwords_nomatch' => 'The provided passwords do not match.',
|
||||||
'error_login_passwords_nomatch' => 'Die angegebenen Passwörter stimmen nicht überein.',
|
'error_reset_invalid_link' => 'The reset link you provided is invalid.',
|
||||||
'error_reset_invalid_link' => 'Der angegebene Link, um Ihr Zugangspasswort zurückzusetzen, ist ungültig.',
|
'success_password_forgot' => 'An email has been sent to you with information how to reset your password.',
|
||||||
'success_password_forgot' => 'Eine Nachricht wurde an Ihre E-Mail-Adresse versendet. Sie beschreibt, wie Sie
|
'success_password_reset' => 'Your password has been reset successfully. Please login.',
|
||||||
Ihr Passwort zurücksetzen können.',
|
|
||||||
'success_password_reset' => 'Ihr Passwort wurde erfolgreich zurückgesetzt. Bitte versuchen Sie, sich erneut
|
|
||||||
anzumelden.',
|
|
||||||
),
|
),
|
||||||
'error' => array(
|
'error' => array(
|
||||||
'401_unauthorized' => 'Nicht autorisiert',
|
'401_unauthorized' => 'Unauthorized',
|
||||||
'401_unauthorized_description' => 'Sie haben nicht die erforderlichen Zugriffsrechte, um diese Seite
|
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||||
aufzurufen.',
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -19,8 +18,8 @@
|
||||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Pepijn Over <pep@mailbox.org>
|
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
|
@ -28,14 +27,7 @@
|
||||||
|
|
||||||
$sm_lang = array(
|
$sm_lang = array(
|
||||||
'name' => 'English',
|
'name' => 'English',
|
||||||
'locale' => array(
|
'locale' => array('en_US.UTF-8', 'en_US', 'american', 'english-us'),
|
||||||
'0' => 'en_US.UTF-8',
|
|
||||||
'1' => 'en_US',
|
|
||||||
'2' => 'american',
|
|
||||||
'3' => 'english-us',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'en',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
'system' => array(
|
||||||
'title' => 'Server Monitor',
|
'title' => 'Server Monitor',
|
||||||
'install' => 'Install',
|
'install' => 'Install',
|
||||||
|
@ -43,21 +35,18 @@ $sm_lang = array(
|
||||||
'save' => 'Save',
|
'save' => 'Save',
|
||||||
'edit' => 'Edit',
|
'edit' => 'Edit',
|
||||||
'delete' => 'Delete',
|
'delete' => 'Delete',
|
||||||
'view' => 'View',
|
|
||||||
'date' => 'Date',
|
'date' => 'Date',
|
||||||
'message' => 'Message',
|
'message' => 'Message',
|
||||||
'yes' => 'Yes',
|
'yes' => 'Yes',
|
||||||
'no' => 'No',
|
'no' => 'No',
|
||||||
'insert' => 'Insert',
|
'insert' => 'Insert',
|
||||||
'add_new' => 'Add new',
|
'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.',
|
'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',
|
'back_to_top' => 'Back to top',
|
||||||
'go_back' => 'Go back',
|
'go_back' => 'Go back',
|
||||||
'ok' => 'OK',
|
'ok' => 'OK',
|
||||||
'bad' => 'bad',
|
|
||||||
'cancel' => 'Cancel',
|
'cancel' => 'Cancel',
|
||||||
'none' => 'None',
|
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||||
'activate' => 'Activate',
|
|
||||||
'short_day_format' => '%B %e',
|
'short_day_format' => '%B %e',
|
||||||
'long_day_format' => '%B %e, %Y',
|
'long_day_format' => '%B %e, %Y',
|
||||||
'yesterday_format' => 'Yesterday at %k:%M',
|
'yesterday_format' => 'Yesterday at %k:%M',
|
||||||
|
@ -69,23 +58,6 @@ $sm_lang = array(
|
||||||
'a_minute_ago' => 'about a minute ago',
|
'a_minute_ago' => 'about a minute ago',
|
||||||
'seconds_ago' => '%d seconds ago',
|
'seconds_ago' => '%d seconds ago',
|
||||||
'a_second_ago' => 'a second 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(
|
'menu' => array(
|
||||||
'config' => 'Config',
|
'config' => 'Config',
|
||||||
|
@ -106,39 +78,14 @@ $sm_lang = array(
|
||||||
'level' => 'Level',
|
'level' => 'Level',
|
||||||
'level_10' => 'Administrator',
|
'level_10' => 'Administrator',
|
||||||
'level_20' => 'User',
|
'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.',
|
||||||
'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',
|
'mobile' => 'Mobile',
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'pushover' => 'Pushover',
|
'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_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_key' => 'Pushover Key',
|
||||||
'pushover_device' => 'Pushover Device',
|
'pushover_device' => 'Pushover Device',
|
||||||
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
'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_title' => 'Delete User',
|
||||||
'delete_message' => 'Are you sure you want to delete user \'%1\'?',
|
'delete_message' => 'Are you sure you want to delete user \'%1\'?',
|
||||||
'deleted' => 'User deleted.',
|
'deleted' => 'User deleted.',
|
||||||
|
@ -147,7 +94,7 @@ $sm_lang = array(
|
||||||
'profile' => 'Profile',
|
'profile' => 'Profile',
|
||||||
'profile_updated' => 'Your profile has been updated.',
|
'profile_updated' => 'Your profile has been updated.',
|
||||||
'error_user_name_bad_length' => 'Usernames must be between 2 and 64 characters.',
|
'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_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_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_bad_length' => 'Email addresses must be between 5 and 255 characters.',
|
||||||
'error_user_email_invalid' => 'The email address is invalid.',
|
'error_user_email_invalid' => 'The email address is invalid.',
|
||||||
|
@ -155,8 +102,6 @@ $sm_lang = array(
|
||||||
'error_user_no_match' => 'The user could not be found in the database.',
|
'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_invalid' => 'The entered password is invalid.',
|
||||||
'error_user_password_no_match' => 'The entered passwords do not match.',
|
'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(
|
'log' => array(
|
||||||
'title' => 'Log entries',
|
'title' => 'Log entries',
|
||||||
|
@ -164,15 +109,8 @@ $sm_lang = array(
|
||||||
'status' => 'Status',
|
'status' => 'Status',
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'discord' => 'Discord',
|
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'webhook' => 'Webhook',
|
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'jabber' => 'Jabber',
|
|
||||||
'no_logs' => 'No logs',
|
'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(
|
'servers' => array(
|
||||||
'server' => 'Server',
|
'server' => 'Server',
|
||||||
|
@ -181,63 +119,21 @@ $sm_lang = array(
|
||||||
'domain' => 'Domain/IP',
|
'domain' => 'Domain/IP',
|
||||||
'timeout' => 'Timeout',
|
'timeout' => 'Timeout',
|
||||||
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
'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',
|
'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' => 'Type',
|
||||||
'type_website' => 'Website',
|
'type_website' => 'Website',
|
||||||
'type_service' => 'Service',
|
'type_service' => 'Service',
|
||||||
'type_ping' => 'Ping',
|
|
||||||
'pattern' => 'Search string/pattern',
|
'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_description' => 'If this pattern is not found on the website, the server will be marked 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_check' => 'Last check',
|
||||||
'last_online' => 'Last online',
|
'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',
|
'monitoring' => 'Monitoring',
|
||||||
'no_monitoring' => 'No monitoring',
|
'no_monitoring' => 'No monitoring',
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'send_email' => 'Send Email',
|
'send_email' => 'Send Email',
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'send_sms' => 'Send SMS',
|
'send_sms' => 'Send SMS',
|
||||||
'discord' => 'Discord',
|
|
||||||
'send_discord' => 'Send Discord notification',
|
|
||||||
'webhook' => 'Webhook',
|
|
||||||
'send_webhook' => 'Send Webhook notification',
|
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'send_pushover' => 'Send Pushover notification',
|
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'send_telegram' => 'Send Telegram notification',
|
|
||||||
'jabber' => 'Jabber',
|
|
||||||
'send_jabber' => 'Send Jabber notification',
|
|
||||||
'users' => 'Users',
|
'users' => 'Users',
|
||||||
'delete_title' => 'Delete server',
|
'delete_title' => 'Delete server',
|
||||||
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
|
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
|
||||||
|
@ -248,8 +144,6 @@ $sm_lang = array(
|
||||||
'latency_max' => 'Latency (maximum)',
|
'latency_max' => 'Latency (maximum)',
|
||||||
'latency_min' => 'Latency (minimum)',
|
'latency_min' => 'Latency (minimum)',
|
||||||
'latency_avg' => 'Latency (average)',
|
'latency_avg' => 'Latency (average)',
|
||||||
'online' => 'online',
|
|
||||||
'offline' => 'offline',
|
|
||||||
'uptime' => 'Uptime',
|
'uptime' => 'Uptime',
|
||||||
'year' => 'Year',
|
'year' => 'Year',
|
||||||
'month' => 'Month',
|
'month' => 'Month',
|
||||||
|
@ -258,23 +152,16 @@ $sm_lang = array(
|
||||||
'hour' => 'Hour',
|
'hour' => 'Hour',
|
||||||
'warning_threshold' => 'Warning threshold',
|
'warning_threshold' => 'Warning threshold',
|
||||||
'warning_threshold_description' => 'Number of failed checks required before it is marked offline.',
|
'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_last_week' => 'Last week',
|
||||||
'chart_history' => 'History',
|
'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_day_format' => '%Y-%m-%d',
|
||||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||||
'chart_short_date_format' => '%m/%d %H:%M',
|
'chart_short_date_format' => '%m/%d %H:%M',
|
||||||
'chart_short_time_format' => '%H:%M',
|
'chart_short_time_format' => '%H:%M',
|
||||||
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||||
'warning_notifications_disabled_email' => 'Email 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_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_no_match' => 'Server not found.',
|
||||||
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
'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_length' => 'The domain / IP must be between 1 and 255 characters.',
|
||||||
|
@ -282,273 +169,103 @@ $sm_lang = array(
|
||||||
'error_server_ip_bad_website' => 'The website URL 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_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_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(
|
'config' => array(
|
||||||
'general' => 'General',
|
'general' => 'General',
|
||||||
'site_title' => 'Site title',
|
|
||||||
'language' => 'Language',
|
'language' => 'Language',
|
||||||
'show_update' => 'Check for updates?',
|
'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_status' => 'Allow sending email',
|
||||||
'email_add_url' => 'Add url to the monitor in email',
|
|
||||||
'email_from_email' => 'Email from address',
|
'email_from_email' => 'Email from address',
|
||||||
'email_from_name' => 'Email from name',
|
'email_from_name' => 'Email from name',
|
||||||
'email_smtp' => 'Enable SMTP',
|
'email_smtp' => 'Enable SMTP',
|
||||||
'email_smtp_host' => 'SMTP host',
|
'email_smtp_host' => 'SMTP host',
|
||||||
'email_smtp_port' => 'SMTP port',
|
'email_smtp_port' => 'SMTP port',
|
||||||
'email_smtp_security' => 'SMTP security',
|
|
||||||
'email_smtp_security_none' => 'None',
|
|
||||||
'email_smtp_username' => 'SMTP username',
|
'email_smtp_username' => 'SMTP username',
|
||||||
'email_smtp_password' => 'SMTP password',
|
'email_smtp_password' => 'SMTP password',
|
||||||
'email_smtp_noauth' => 'Leave blank for no authentication',
|
'email_smtp_noauth' => 'Leave blank for no authentication',
|
||||||
'sms_status' => 'Allow sending text messages',
|
'sms_status' => 'Allow sending text messages',
|
||||||
'sms_gateway' => 'Gateway to use for sending 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_username' => 'Gateway username',
|
||||||
'sms_gateway_password' => 'Gateway password',
|
'sms_gateway_password' => 'Gateway password',
|
||||||
'sms_from' => 'Sender\'s phone number',
|
'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_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_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_clone_app' => 'Click here to create your Pushover app',
|
||||||
'pushover_api_token' => 'Pushover App API Token',
|
'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.',
|
'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.',
|
||||||
'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' => '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_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_status' => 'Status change',
|
||||||
'alert_type_offline' => 'Offline',
|
'alert_type_offline' => 'Offline',
|
||||||
'alert_type_always' => 'Always',
|
'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' => '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_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_email' => 'Log emails sent by the script',
|
||||||
'log_sms' => 'Log text messages 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_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.',
|
'updated' => 'The configuration has been updated.',
|
||||||
'tab_email' => 'Email',
|
'tab_email' => 'Email',
|
||||||
'tab_sms' => 'SMS',
|
'tab_sms' => 'SMS',
|
||||||
'tab_discord' => 'Discord',
|
|
||||||
'tab_pushover' => 'Pushover',
|
'tab_pushover' => 'Pushover',
|
||||||
'tab_webhook' => 'Webhook',
|
|
||||||
'tab_telegram' => 'Telegram',
|
|
||||||
'tab_jabber' => 'Jabber',
|
|
||||||
'tab_auth' => 'Authentication',
|
|
||||||
'settings_email' => 'Email settings',
|
'settings_email' => 'Email settings',
|
||||||
'settings_sms' => 'Text message settings',
|
'settings_sms' => 'Text message settings',
|
||||||
'settings_discord' => 'Discord settings',
|
|
||||||
'settings_pushover' => 'Pushover settings',
|
'settings_pushover' => 'Pushover settings',
|
||||||
'settings_webhook' => 'Webhook settings',
|
|
||||||
'settings_telegram' => 'Telegram settings',
|
|
||||||
'settings_jabber' => 'Jabber settings',
|
|
||||||
'settings_notification' => 'Notification settings',
|
'settings_notification' => 'Notification settings',
|
||||||
'settings_log' => 'Log settings',
|
'settings_log' => 'Log settings',
|
||||||
'settings_proxy' => 'Proxy settings',
|
|
||||||
'settings_dirauth' => 'LDAP settings',
|
|
||||||
'auto_refresh' => 'Auto-refresh',
|
'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>',
|
'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' => 'Test',
|
||||||
'test_email' => 'An email will be sent to the address specified in your user profile.',
|
'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_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_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',
|
'send' => 'Send',
|
||||||
'test_subject' => 'Test',
|
'test_subject' => 'Test',
|
||||||
'test_message' => 'Test message',
|
'test_message' => 'Test message',
|
||||||
'email_sent' => 'Email sent',
|
'email_sent' => 'Email sent',
|
||||||
'email_error' => 'Error in email sending',
|
'email_error' => 'Error in email sending',
|
||||||
'sms_sent' => 'SMS sent',
|
'sms_sent' => 'Sms sent',
|
||||||
'sms_error' => 'An error has occurred while sending the SMS: %s',
|
'sms_error' => 'Error in sms sending',
|
||||||
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
'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_sent' => 'Pushover notification sent',
|
||||||
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
'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_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.',
|
'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' => '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_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',
|
'log_retention_days' => 'days',
|
||||||
'user_agent' => 'User Agent',
|
|
||||||
'user_agent_key_note' => 'Custom user agent used by monitor within communication with external services.',
|
|
||||||
),
|
),
|
||||||
|
// for newlines in the email messages use <br/>
|
||||||
'notifications' => array(
|
'notifications' => array(
|
||||||
'off_sms' => 'Server \'%LABEL%\' is DOWN: ip=%IP%, port=%PORT%. Error=%ERROR%',
|
'off_sms' => 'Server \'%LABEL%\' is DOWN: ip=%IP%, port=%PORT%. Error=%ERROR%',
|
||||||
'off_email_subject' => 'IMPORTANT: Server \'%LABEL%\' is DOWN',
|
'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_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_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_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%',
|
'on_sms' => 'Server \'%LABEL%\' is RUNNING: ip=%IP%, port=%PORT%',
|
||||||
'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_subject' => 'IMPORTANT: Server \'%LABEL%\' is RUNNING',
|
||||||
'on_email_body' => 'Server \'%LABEL%\' is running again, it was down for
|
'on_email_body' => "Server '%LABEL%' is running again:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Date: %DATE%",
|
||||||
%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_title' => 'Server \'%LABEL%\' is RUNNING',
|
||||||
'on_pushover_message' => 'Server \'%LABEL%\' is running again, it was down for
|
'on_pushover_message' => 'Server \'%LABEL%\' is running again:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Date: %DATE%',
|
||||||
%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(
|
'login' => array(
|
||||||
'welcome_usermenu' => 'Welcome, %user_name%',
|
'welcome_usermenu' => 'Welcome, %user_name%',
|
||||||
|
@ -565,7 +282,7 @@ $sm_lang = array(
|
||||||
'password_forgot' => 'Forgot password?',
|
'password_forgot' => 'Forgot password?',
|
||||||
'password_reset' => 'Reset password',
|
'password_reset' => 'Reset password',
|
||||||
'password_reset_email_subject' => 'Reset your password for PHP Server Monitor',
|
'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%',
|
'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_user_incorrect' => 'The provided username could not be found.',
|
||||||
'error_login_incorrect' => 'The information is incorrect.',
|
'error_login_incorrect' => 'The information is incorrect.',
|
||||||
'error_login_passwords_nomatch' => 'The provided passwords do not match.',
|
'error_login_passwords_nomatch' => 'The provided passwords do not match.',
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -20,10 +19,7 @@
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Klemens Häckel <http://clickdimension.wordpress.com/>
|
* @author Klemens Häckel <http://clickdimension.wordpress.com/>
|
||||||
* @author Luis Rodriguez <luis@techreanimate.com>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.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
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
|
@ -31,70 +27,43 @@
|
||||||
|
|
||||||
$sm_lang = array(
|
$sm_lang = array(
|
||||||
'name' => 'Español - Spanish',
|
'name' => 'Español - Spanish',
|
||||||
'locale' => array(
|
'locale' => array('es_ES.UTF-8', 'es_ES', 'spanish', 'esp'),
|
||||||
'0' => 'es_ES.UTF-8',
|
|
||||||
'1' => 'es_ES',
|
|
||||||
'2' => 'spanish',
|
|
||||||
'3' => 'esp',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'es',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
'system' => array(
|
||||||
'title' => 'Server Monitor',
|
'title' => 'Server Monitor',
|
||||||
'install' => 'Instalar',
|
'install' => 'Install',
|
||||||
'action' => 'Acción',
|
'action' => 'Acción',
|
||||||
'save' => 'Guardar',
|
'save' => 'Guardar',
|
||||||
'edit' => 'Modificar',
|
'edit' => 'Modificar',
|
||||||
'delete' => 'Eliminar',
|
'delete' => 'Eliminar',
|
||||||
'view' => 'Ver',
|
|
||||||
'date' => 'Fecha',
|
'date' => 'Fecha',
|
||||||
'message' => 'Mensaje',
|
'message' => 'Mensaje',
|
||||||
'yes' => 'Si',
|
'yes' => 'Si',
|
||||||
'no' => 'No',
|
'no' => 'No',
|
||||||
'insert' => 'Insertar',
|
'insert' => 'Insertar',
|
||||||
'add_new' => 'Agregar nuevo',
|
'add_new' => 'Agregar nuevo',
|
||||||
'update_available' => 'Hay una nueva versión ({version}) disponible en <a
|
'update_available' => 'Hay una nueva versión ({version}) disponible en <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
'back_to_top' => 'Back to top',
|
||||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
'go_back' => 'Go back',
|
||||||
'back_to_top' => 'Volver arriba',
|
'ok' => 'OK',
|
||||||
'go_back' => 'Volver',
|
'cancel' => 'Cancel',
|
||||||
'ok' => 'Bueno',
|
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||||
'bad' => 'Malo',
|
'short_day_format' => '%B %e',
|
||||||
'cancel' => 'Cancelar',
|
'long_day_format' => '%B %e, %Y',
|
||||||
'none' => 'None',
|
'yesterday_format' => 'Yesterday at %k:%M',
|
||||||
'activate' => 'Activar',
|
'other_day_format' => '%A at %k:%M',
|
||||||
'short_day_format' => '%e de %B',
|
'never' => 'Never',
|
||||||
'long_day_format' => '%e de %B de %Y',
|
'hours_ago' => '%d hours ago',
|
||||||
'yesterday_format' => 'Ayer a las %k:%M',
|
'an_hour_ago' => 'about an hour ago',
|
||||||
'other_day_format' => '%A a las %k:%M',
|
'minutes_ago' => '%d minutes ago',
|
||||||
'never' => 'Nunca',
|
'a_minute_ago' => 'about a minute ago',
|
||||||
'hours_ago' => 'Hace %d horas',
|
'seconds_ago' => '%d seconds ago',
|
||||||
'an_hour_ago' => 'Hace aproximadamente una hora',
|
'a_second_ago' => 'a second ago',
|
||||||
'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(
|
'menu' => array(
|
||||||
'config' => 'Configurar',
|
'config' => 'Configurar',
|
||||||
'server' => 'Servidores',
|
'server' => 'Servidores',
|
||||||
'server_log' => 'Registro',
|
'server_log' => 'Log',
|
||||||
'server_status' => 'Estado',
|
'server_status' => 'Status',
|
||||||
'server_update' => 'Actualizar',
|
'server_update' => 'Actualizar',
|
||||||
'user' => 'Usuarios',
|
'user' => 'Usuarios',
|
||||||
'help' => 'Ayuda',
|
'help' => 'Ayuda',
|
||||||
|
@ -102,367 +71,227 @@ $sm_lang = array(
|
||||||
'users' => array(
|
'users' => array(
|
||||||
'user' => 'Usuario',
|
'user' => 'Usuario',
|
||||||
'name' => 'Nombre',
|
'name' => 'Nombre',
|
||||||
'user_name' => 'Nombre de Usuario',
|
'user_name' => 'Username',
|
||||||
'password' => 'Contraseña',
|
'password' => 'Password',
|
||||||
'password_repeat' => 'Repetir Contraseña',
|
'password_repeat' => 'Password repeat',
|
||||||
'password_leave_blank' => 'Dejar en blanco para mantener sin cambios',
|
'password_leave_blank' => 'Leave blank to keep unchanged',
|
||||||
'level' => 'Nivel',
|
'level' => 'Level',
|
||||||
'level_10' => 'Administrador',
|
'level_10' => 'Administrator',
|
||||||
'level_20' => 'Usuarios',
|
'level_20' => 'User',
|
||||||
'level_description' => '<b>Administradores</b> tienen acceso completo: pueden administrar servidores, usuarios
|
'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.',
|
||||||
y editar la configuración global.<br>Los <b>usuarios</b> sólo pueden ver y ejecutar
|
'mobile' => 'Mobil',
|
||||||
el programa de actualización para los servidores que se han asignado a los mismos.',
|
|
||||||
'mobile' => 'Móvil',
|
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'pushover_description' => 'Pushover es un servicio que hace que sea fácil de obtener notificaciones en tiempo
|
'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.',
|
||||||
real. Vea <a href="https://pushover.net/" target="_blank"> su página web </a> para
|
'pushover_key' => 'Pushover Key',
|
||||||
más información.',
|
'pushover_device' => 'Pushover Device',
|
||||||
'pushover_key' => 'Clave Pushover',
|
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||||
'pushover_device' => 'Dispositivo Pushover',
|
'delete_title' => 'Delete User',
|
||||||
'pushover_device_description' => 'Nombre del dispositivo para enviar el mensaje. Dejar en blanco para enviarlo
|
'delete_message' => 'Are you sure you want to delete user \'%1\'?',
|
||||||
a todos los dispositivos.',
|
'deleted' => 'User deleted.',
|
||||||
'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.',
|
'updated' => 'Usuario actualizado.',
|
||||||
'inserted' => 'Usuario ingresado.',
|
'inserted' => 'Usuario ingresado.',
|
||||||
'profile' => 'Perfil',
|
'profile' => 'Profile',
|
||||||
'profile_updated' => 'Su perfil ha sido actualizado.',
|
'profile_updated' => 'Your profile has been updated.',
|
||||||
'error_user_name_bad_length' => 'Los nombres de usuario deben tener entre 2 y 64 caracteres.',
|
'error_user_name_bad_length' => 'Usernames must be between 2 and 64 characters.',
|
||||||
'error_user_name_invalid' => 'El nombre de usuario sólo puede contener caracteres alfabéticos (a-z, A-Z),
|
'error_user_name_invalid' => 'The username may only contain alphabetic characters (a-z, A-Z), digits (0-9) and underscores (_).',
|
||||||
números (0-9), puntos (.) y guiones bajos (_).',
|
'error_user_name_exists' => 'The given username already exists in the database.',
|
||||||
'error_user_name_exists' => 'El nombre de usuario dado ya existe en la base de datos.',
|
'error_user_email_bad_length' => 'Email addresses must be between 5 and 255 characters.',
|
||||||
'error_user_email_bad_length' => 'Direcciones de correo electrónico deben estar entre 5 y 255 caracteres.',
|
'error_user_email_invalid' => 'The email address is invalid.',
|
||||||
'error_user_email_invalid' => 'La dirección de correo electrónico no es válida.',
|
'error_user_level_invalid' => 'The given user level is invalid.',
|
||||||
'error_user_level_invalid' => 'El nivel de usuario dado es inválido.',
|
'error_user_no_match' => 'The user could not be found in the database.',
|
||||||
'error_user_no_match' => 'El usuario no se pudo encontrar en la base de datos.',
|
'error_user_password_invalid' => 'The entered password is invalid.',
|
||||||
'error_user_password_invalid' => 'La contraseña introducida no es válida.',
|
'error_user_password_no_match' => 'The entered passwords do not match.',
|
||||||
'error_user_password_no_match' => 'Las contraseñas introducidas no coinciden.',
|
|
||||||
),
|
),
|
||||||
'log' => array(
|
'log' => array(
|
||||||
'title' => 'Registro',
|
'title' => 'Registro Log',
|
||||||
'type' => 'Tipo',
|
'type' => 'Tipo',
|
||||||
'status' => 'Estado',
|
'status' => 'Estado',
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'telegram' => 'Telegram',
|
'no_logs' => 'No logs',
|
||||||
'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(
|
'servers' => array(
|
||||||
'server' => 'Servidores',
|
'server' => 'Servidores',
|
||||||
'status' => 'Estado',
|
'status' => 'Status',
|
||||||
'label' => 'Título',
|
'label' => 'Titulo',
|
||||||
'domain' => 'Dominio/IP',
|
'domain' => 'Domain/IP',
|
||||||
'timeout' => 'Tiempo de espera',
|
'timeout' => 'Timeout',
|
||||||
'timeout_description' => 'Número de segundos a esperar para que el servidor responda.',
|
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||||
'authentication_settings' => 'Configuración de autenticación',
|
'port' => 'Port',
|
||||||
'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' => 'Tipo',
|
||||||
'type_website' => 'Sitio Web',
|
'type_website' => 'Website',
|
||||||
'type_service' => 'Servicio',
|
'type_service' => 'Service',
|
||||||
'type_ping' => 'Ping',
|
'pattern' => 'Search string/pattern',
|
||||||
'pattern' => 'Patrón/texto de búsqueda',
|
'pattern_description' => 'If this pattern is not found on the website, the server will be marked offline. Regular expressions are allowed.',
|
||||||
'pattern_description' => 'Si el patrón no se encuentra en el sitio, se marcará al servidor como en
|
'last_check' => 'Ultima verificación',
|
||||||
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_online' => 'Última vez en línea',
|
||||||
'last_offline' => 'Última vez fuera de línea',
|
'monitoring' => 'Monitoreo',
|
||||||
'last_output' => 'Última salida',
|
'no_monitoring' => 'No monitoring',
|
||||||
'last_error' => 'Último error',
|
|
||||||
'last_error_output' => 'Último error',
|
|
||||||
'output' => 'Salida',
|
|
||||||
'monitoring' => 'Monitoreado',
|
|
||||||
'no_monitoring' => 'No monitoreando',
|
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'send_email' => 'Enviar correo electrónico',
|
'send_email' => 'Email',
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'send_sms' => 'Eviar SMS',
|
'send_sms' => 'SMS',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'send_pushover' => 'Enviar notificación por Pushover',
|
'users' => 'Users',
|
||||||
'telegram' => 'Telegram',
|
'delete_title' => 'Delete Server',
|
||||||
'send_telegram' => 'Enviar notificación por Telegram',
|
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
|
||||||
'users' => 'Usuarios',
|
'deleted' => 'Server deleted.',
|
||||||
'delete_title' => 'Eliminar servidor',
|
'updated' => 'Servidor arctualizado.',
|
||||||
'delete_message' => '¿Seguro que desea eliminar el servidor \'%1\'?',
|
|
||||||
'deleted' => 'Servidor eliminado.',
|
|
||||||
'updated' => 'Servidor actualizado.',
|
|
||||||
'inserted' => 'Servidor ingresado.',
|
'inserted' => 'Servidor ingresado.',
|
||||||
'latency' => 'Latencia',
|
'latency' => 'Tiempo de respuesta',
|
||||||
'latency_max' => 'Latencia (máximo)',
|
'latency_max' => 'Tiempo de respuesta (maximum)',
|
||||||
'latency_min' => 'Latencia (mínimo)',
|
'latency_min' => 'Tiempo de respuesta (minimum)',
|
||||||
'latency_avg' => 'Latencia (promedio)',
|
'latency_avg' => 'Tiempo de respuesta (average)',
|
||||||
'online' => 'en línea',
|
'uptime' => 'Uptime',
|
||||||
'offline' => 'fuera de línea',
|
'year' => 'Year',
|
||||||
'uptime' => 'Activo',
|
'month' => 'Month',
|
||||||
'year' => 'Año',
|
'week' => 'Week',
|
||||||
'month' => 'Mes',
|
'day' => 'Day',
|
||||||
'week' => 'Semana',
|
'hour' => 'Hour',
|
||||||
'day' => 'Día',
|
'warning_threshold' => 'Warning threshold',
|
||||||
'hour' => 'Hora',
|
'warning_threshold_description' => 'Number of failed checks required before it is marked offline.',
|
||||||
'warning_threshold' => 'Umbral de advertencia',
|
'chart_last_week' => 'Last week',
|
||||||
'warning_threshold_description' => 'Número de controles fallidos necesarios antes de que se marque como fuera
|
'chart_history' => 'History',
|
||||||
de línea.',
|
// Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html
|
||||||
'chart_last_week' => 'Última semana',
|
|
||||||
'chart_history' => 'Historial',
|
|
||||||
'chart_day_format' => '%Y-%m-%d',
|
'chart_day_format' => '%Y-%m-%d',
|
||||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||||
'chart_short_date_format' => '%m/%d %H:%M',
|
'chart_short_date_format' => '%m/%d %H:%M',
|
||||||
'chart_short_time_format' => '%H:%M',
|
'chart_short_time_format' => '%H:%M',
|
||||||
'warning_notifications_disabled_sms' => 'Las notificaciones por SMS están desactivadas.',
|
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||||
'warning_notifications_disabled_email' => 'Las notificaciones por correo electrónico están desactivados.',
|
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||||
'warning_notifications_disabled_pushover' => 'Las notificaciones Pushover están desactivadas.',
|
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||||
'warning_notifications_disabled_telegram' => 'Las notificaciones Telegram están desactivadas.',
|
'error_server_no_match' => 'Server not found.',
|
||||||
'error_server_no_match' => 'Servidor no encontrado.',
|
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
||||||
'error_server_label_bad_length' => 'La etiqueta debe estar entre 1 y 255 caracteres.',
|
'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.',
|
||||||
'error_server_ip_bad_length' => 'El dominio / IP debe estar entre 1 y 255 caracteres.',
|
'error_server_ip_bad_service' => 'The IP address is not valid.',
|
||||||
'error_server_ip_bad_service' => 'La dirección IP no es válida.',
|
'error_server_ip_bad_website' => 'The website URL is not valid.',
|
||||||
'error_server_ip_bad_website' => 'El URL del Sitio Web no es válido.',
|
'error_server_type_invalid' => 'The selected server type is invalid.',
|
||||||
'error_server_type_invalid' => 'El tipo de servidor seleccionado no es válido.',
|
'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
|
||||||
'error_server_warning_threshold_invalid' => 'El umbral de advertencia debe ser un entero válido mayor que 0.',
|
|
||||||
),
|
),
|
||||||
'config' => array(
|
'config' => array(
|
||||||
'general' => 'General',
|
'general' => 'General',
|
||||||
'language' => 'Idioma',
|
'language' => 'Idioma',
|
||||||
'show_update' => '¿Comprobar actualizaciones?',
|
'show_update' => 'Comprobar actualizaciones semanalmente ?',
|
||||||
'password_encrypt_key' => 'Clave cripográfica',
|
'email_status' => 'Habilitar envio de email ?',
|
||||||
'password_encrypt_key_note' => 'Esta es la clave utilizada para encriptar las contraseñas de acceso a los
|
'email_from_email' => 'Email desde dirección',
|
||||||
servidores. ¡Si la contraseña cambia las credenciales serán inválidas!',
|
'email_from_name' => 'Email desde nombre',
|
||||||
'proxy' => 'Activar Proxy',
|
'email_smtp' => 'Enable SMTP',
|
||||||
'proxy_url' => 'URL del proxy',
|
'email_smtp_host' => 'SMTP host',
|
||||||
'proxy_user' => 'Usuario',
|
'email_smtp_port' => 'SMTP port',
|
||||||
'proxy_password' => 'Contraseña',
|
'email_smtp_username' => 'SMTP username',
|
||||||
'email_status' => '¿Habilitar envio de email?',
|
'email_smtp_password' => 'SMTP password',
|
||||||
'email_from_email' => 'Dirección del Remitente',
|
'email_smtp_noauth' => 'Leave blank for no authentication',
|
||||||
'email_from_name' => 'Nombre del Remitente',
|
'sms_status' => 'Habilitar envio de SMS ?',
|
||||||
'email_smtp' => 'Habilitar SMTP',
|
'sms_gateway' => 'SMS Gateway',
|
||||||
'email_smtp_host' => 'Servidor SMTP',
|
'sms_gateway_mosms' => 'Mosms',
|
||||||
'email_smtp_port' => 'Puerto SMTP',
|
'sms_gateway_mollie' => 'Mollie',
|
||||||
'email_smtp_security' => 'Seguridad SMTP',
|
'sms_gateway_spryng' => 'Spryng',
|
||||||
'email_smtp_security_none' => 'Ninguna',
|
'sms_gateway_inetworx' => 'Inetworx',
|
||||||
'email_smtp_username' => 'Usuario SMTP',
|
'sms_gateway_clickatell' => 'Clickatell',
|
||||||
'email_smtp_password' => 'Contraseña SMTP',
|
'sms_gateway_textmarketer' => 'Textmarketer',
|
||||||
'email_smtp_noauth' => 'Deja en blanco para ninguna autenticación',
|
'sms_gateway_smsglobal' => 'SMSGlobal',
|
||||||
'sms_status' => '¿Habilitar envio de SMS?',
|
'sms_gateway_smsit' => 'Smsit',
|
||||||
'sms_gateway' => 'Proveedor de SMS',
|
'sms_gateway_username' => 'Gateway username',
|
||||||
'sms_gateway_username' => 'Usuario',
|
'sms_gateway_password' => 'Gateway password',
|
||||||
'sms_gateway_password' => 'Contraseña',
|
|
||||||
'sms_from' => 'Número origen del SMS',
|
'sms_from' => 'Número origen del SMS',
|
||||||
'pushover_status' => '¿Habilitar el envío de mensajes Pushover?',
|
'pushover_status' => 'Allow sending Pushover messages',
|
||||||
'pushover_description' => 'Pushover es un servicio que hace que sea fácil de obtener notificaciones en tiempo
|
'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.',
|
||||||
real. Vea <a href="https://pushover.net/" target="_blank"> su página web </a> para
|
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||||
más información.',
|
'pushover_api_token' => 'Pushover App API Token',
|
||||||
'pushover_clone_app' => 'Haga clic aquí para crear tu aplicación Pushover',
|
'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_api_token' => 'Token API de Pushover',
|
'alert_type' => 'Cuando desea recibir notificaciones ?',
|
||||||
'pushover_api_token_description' => 'Antes de poder utilizar Pushover, necesita <a href="%1$s" target="_blank"
|
'alert_type_description' => '<b>... Al cambiar el estado:</b> '.
|
||||||
rel="noopener"> registrar </a> su aplicación en la página web e
|
'p.ej. online -> offline o offline -> online.<br/>'.
|
||||||
ingresar el token API.',
|
'<br /><b>Offline:</b> '.
|
||||||
'telegram_status' => '¿Habilitar el envío de mensajes de Telegram?',
|
'Recibirá una notificación cuando el servidor va fuera de línea.'.
|
||||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> es una aplicación de
|
'Se envia un sólo mensaje cuando el CronJob detecta la caída por primera vez.<br/>'.
|
||||||
mensajería instantánea que permite recibir notificaciones en tiempo real. Visite
|
'<br><b>Siempre:</b> '.
|
||||||
la <a href="http://docs.phpservermonitor.org/" target="_blank">documentación</a>
|
'Se le enviará una notificación, cada vez que se ejecuta el script o el CronJob, '.
|
||||||
para una guía mas detallada.',
|
'aunqué el servicio puede haber estado fuera de línea por varias horas antes.',
|
||||||
'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_status' => 'Cambio de estado',
|
||||||
'alert_type_offline' => 'Fuera de Línea',
|
'alert_type_offline' => 'Offline',
|
||||||
'alert_type_always' => 'Siempre',
|
'alert_type_always' => 'Siempre',
|
||||||
'combine_notifications' => 'Combinar notificaciones',
|
'log_status' => 'Log status',
|
||||||
'combine_notifications_description' => 'Reduce la cantidad de notificaciones combinando los mensajes en una
|
'log_status_description' => 'Al setear TRUE (marcar) se protocolan todos los estados.',
|
||||||
sola notificación. (Esto no afecta a las notificaciones por SMS.)',
|
'log_email' => 'Enviar Log via email?',
|
||||||
'alert_proxy' => 'Incluso si está activo, los proxy no se utilizarán para los servicios.',
|
'log_sms' => 'Enviar Log via SMS ?',
|
||||||
'alert_proxy_url' => 'Formato: host:puerto',
|
'log_pushover' => 'Log pushover messages sent by the script',
|
||||||
'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.',
|
'updated' => 'Configuración guardada.',
|
||||||
'tab_email' => 'Email',
|
'tab_email' => 'Email',
|
||||||
'tab_sms' => 'SMS',
|
'tab_sms' => 'SMS',
|
||||||
'tab_pushover' => 'Pushover',
|
'tab_pushover' => 'Pushover',
|
||||||
'tab_telegram' => 'Telegram',
|
'settings_email' => 'Email',
|
||||||
'settings_email' => 'Configuración de Correo Electrónico',
|
'settings_sms' => 'Mensaje SMS',
|
||||||
'settings_sms' => 'Configuración de Mensajes de Texto',
|
'settings_pushover' => 'Pushover settings',
|
||||||
'settings_pushover' => 'Configuración de Pushover',
|
'settings_notification' => 'Notificación',
|
||||||
'settings_telegram' => 'Configuración de Telegram',
|
'settings_log' => 'Log',
|
||||||
'settings_notification' => 'Configuración de las notificaciones',
|
'auto_refresh' => 'Refrescar automáticamente página de servidores',
|
||||||
'settings_log' => 'Configuración de registros',
|
'auto_refresh_servers' =>
|
||||||
'settings_proxy' => 'Configuración del proxy',
|
'Refrescar automáticamente página de servidores.<br/>'.
|
||||||
'auto_refresh' => 'Auto-actualizar',
|
'<span class="small">'.
|
||||||
'auto_refresh_description' => 'Auto-actualizar la página de servidores.<br><span class="small">Tiempo en
|
'Tiempo en segundos, indicar "0" para no actualizar.'.
|
||||||
segundos, si se utiliza 0 la página no se actualizará.</span>',
|
'</span>',
|
||||||
'test' => 'Prueba',
|
'seconds' => 'seconds',
|
||||||
'test_email' => 'Un correo electrónico será enviado a la dirección especificada en su perfil de usuario.',
|
'test' => 'Test',
|
||||||
'test_sms' => 'Un SMS se enviará al número de teléfono especificado en su perfil de usuario.',
|
'test_email' => 'An email will be sent to the address specified in your user profile.',
|
||||||
'test_pushover' => 'Una notificación Pushover será enviada a la clave de usuario / dispositivo especificado
|
'test_sms' => 'An SMS will be sent to the phone number specified in your user profile.',
|
||||||
en su perfil de usuario.',
|
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||||
'test_telegram' => 'Una notificación de Telegram será enviada al chat id especificado en su perfil de
|
'send' => 'Send',
|
||||||
usuario.',
|
'test_subject' => 'Test',
|
||||||
'send' => 'Enviar',
|
'test_message' => 'Test message',
|
||||||
'test_subject' => 'Prueba',
|
'email_sent' => 'Email sent',
|
||||||
'test_message' => 'Mensaje de prueba',
|
'email_error' => 'Error in email sending',
|
||||||
'email_sent' => 'Correo enviado',
|
'sms_sent' => 'Sms sent',
|
||||||
'email_error' => 'Error al enviar el correo',
|
'sms_error' => 'Error in sms sending',
|
||||||
'sms_sent' => 'SMS enviado',
|
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||||
'sms_error' => 'Error al enviar el SMS: %s',
|
'pushover_sent' => 'Pushover notification sent',
|
||||||
'sms_error_nomobile' => 'Imposible enviar el SMS: no se encontró un número de teléfono válido en su
|
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||||
perfil.',
|
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||||
'pushover_sent' => 'Notificación de Pushover enviada',
|
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||||
'pushover_error' => 'Ocurrió un error enviado la notificación de Pushover: %s',
|
'log_retention_period' => 'Log retention period',
|
||||||
'pushover_error_noapp' => 'No se puede enviar una notificación de prueba: no existe un token API de Pushover
|
'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
|
||||||
en la configuración global.',
|
'log_retention_days' => 'days',
|
||||||
'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',
|
|
||||||
),
|
),
|
||||||
|
// for newlines in the email messages use <br/>
|
||||||
'notifications' => array(
|
'notifications' => array(
|
||||||
'off_sms' => 'Servidor \'%LABEL%\' está fuera de línea: ip=%IP%, puerto=%PORT%. error=%ERROR%',
|
'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_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:
|
'off_email_body' => "No posible conectar al servidor:<br/><br/>Servidor: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Error: %ERROR%<br/>Fecha: %DATE%",
|
||||||
%PORT%<br/>Error: %ERROR%<br/>Fecha: %DATE%',
|
|
||||||
'off_pushover_title' => 'Servidor \'%LABEL%\' está fuera de línea',
|
'off_pushover_title' => 'Servidor \'%LABEL%\' está fuera de línea',
|
||||||
'off_pushover_message' => 'No posible conectar al servidor:<br/><br/>Servidor: %LABEL%<br/>IP:
|
'off_pushover_message' => "No posible conectar al servidor:<br/><br/>Servidor: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Error: %ERROR%<br/>Fecha: %DATE%",
|
||||||
%IP%<br/>Puerto: %PORT%<br/>Error: %ERROR%<br/>Fecha: %DATE%',
|
'on_sms' => 'Servidor \'%LABEL%\' ya está de nuevo funcionando en línea: ip=%IP%, port=%PORT%',
|
||||||
'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_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
|
'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%",
|
||||||
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_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
|
'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%",
|
||||||
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(
|
'login' => array(
|
||||||
'welcome_usermenu' => '%user_name%',
|
'welcome_usermenu' => 'Welcome, %user_name%',
|
||||||
'title_sign_in' => 'Por favor, inicie sesión',
|
'title_sign_in' => 'Please sign in',
|
||||||
'title_forgot' => '¿Olvidaste tu contraseña?',
|
'title_forgot' => 'Forgot your password?',
|
||||||
'title_reset' => 'Restablecer su contraseña',
|
'title_reset' => 'Reset your password',
|
||||||
'submit' => 'Enviar',
|
'submit' => 'Submit',
|
||||||
'remember_me' => 'Recordarme',
|
'remember_me' => 'Remember me',
|
||||||
'login' => 'Iniciar sesión',
|
'login' => 'Login',
|
||||||
'logout' => 'Salir',
|
'logout' => 'Logout',
|
||||||
'username' => 'Nombre de usuario',
|
'username' => 'Username',
|
||||||
'password' => 'Contraseña',
|
'password' => 'Password',
|
||||||
'password_repeat' => 'Repita la contraseña',
|
'password_repeat' => 'Repeat password',
|
||||||
'password_forgot' => '¿Has olvidado tu contraseña?',
|
'password_forgot' => 'Forgot password?',
|
||||||
'password_reset' => 'Perdí mi contraseña',
|
'password_reset' => 'Reset password',
|
||||||
'password_reset_email_subject' => 'Restablecer la contraseña para PHP Server Monitor',
|
'password_reset_email_subject' => 'Reset your password for PHP Server Monitor',
|
||||||
'password_reset_email_body' => 'Utilice el siguiente enlace para restablecer tu contraseña. Tenga en cuenta
|
'password_reset_email_body' => 'Please use the following link to reset your password. Please note it expires in 1 hour.<br/><br/>%link%',
|
||||||
que expira de 1 hora.<br><br>%link%',
|
'error_user_incorrect' => 'The provided username could not be found.',
|
||||||
'error_user_incorrect' => 'El nombre de usuario proporcionado no se pudo encontrar.',
|
'error_login_incorrect' => 'The information is incorrect.',
|
||||||
'error_login_incorrect' => 'La información es incorrecta.',
|
'error_login_passwords_nomatch' => 'The provided passwords do not match.',
|
||||||
'error_login_passwords_nomatch' => 'Las contraseñas proporcionadas no coinciden.',
|
'error_reset_invalid_link' => 'The reset link you provided is invalid.',
|
||||||
'error_reset_invalid_link' => 'El vínculo de cambio que ya ha proporcionado no es válido.',
|
'success_password_forgot' => 'An email has been sent to you with information how to reset your password.',
|
||||||
'success_password_forgot' => 'Un correo electrónico ha sido enviado a usted con información de cómo
|
'success_password_reset' => 'Your password has been reset successfully. Please login.',
|
||||||
restablecer su contraseña.',
|
|
||||||
'success_password_reset' => 'Su contraseña ha sido restablecida correctamente. Por favor, inicia sesión.',
|
|
||||||
),
|
),
|
||||||
'error' => array(
|
'error' => array(
|
||||||
'401_unauthorized' => 'No Autorizado',
|
'401_unauthorized' => 'Unauthorized',
|
||||||
'401_unauthorized_description' => 'Usted no tiene los privilegios para ver esta página.',
|
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,316 +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 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.',
|
|
||||||
),
|
|
||||||
);
|
|
|
@ -1,348 +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 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' => 'شما اجازه مشاهده این صفحه را ندارید.',
|
|
||||||
),
|
|
||||||
);
|
|
|
@ -1,298 +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 Sami Nieminen <nieminen.sami2@gmail.com>
|
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
|
||||||
* @version Release: @package_version@
|
|
||||||
* @link http://www.phpservermonitor.org/
|
|
||||||
**/
|
|
||||||
|
|
||||||
$sm_lang = array(
|
|
||||||
'name' => 'Suomi - Finnish',
|
|
||||||
'locale' => array(
|
|
||||||
'0' => 'fi_FI.UTF-8',
|
|
||||||
'1' => 'fi_FI',
|
|
||||||
'2' => 'finnish',
|
|
||||||
'3' => 'finnish-fi',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'fi',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
|
||||||
'title' => 'Server Monitor',
|
|
||||||
'install' => 'Asenna',
|
|
||||||
'action' => 'Toiminta',
|
|
||||||
'save' => 'Tallenna',
|
|
||||||
'edit' => 'Muokkaa',
|
|
||||||
'delete' => 'Poista',
|
|
||||||
'date' => 'Päivä',
|
|
||||||
'message' => 'Viesti',
|
|
||||||
'yes' => 'Kyllä',
|
|
||||||
'no' => 'Ei',
|
|
||||||
'insert' => 'Asetukset',
|
|
||||||
'add_new' => 'Lisää uusi',
|
|
||||||
'update_available' => 'Uusi versio ({version}) on ladattavissa osoitteessa <a
|
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
|
||||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
|
||||||
'back_to_top' => 'Takaisin ylös',
|
|
||||||
'go_back' => 'Takaisin',
|
|
||||||
'ok' => 'OK',
|
|
||||||
'cancel' => 'Peruuta',
|
|
||||||
'short_day_format' => '%B %e',
|
|
||||||
'long_day_format' => '%B %e, %Y',
|
|
||||||
'yesterday_format' => 'Eilen klo %k:%M',
|
|
||||||
'other_day_format' => '%A klo %k:%M',
|
|
||||||
'never' => 'Ei koskaan',
|
|
||||||
'hours_ago' => '%d tuntia sitten',
|
|
||||||
'an_hour_ago' => 'noin tunti sitten',
|
|
||||||
'minutes_ago' => '%d minuuttia sitten',
|
|
||||||
'a_minute_ago' => 'noin minuutti sitten',
|
|
||||||
'seconds_ago' => '%d sekuntia sitten',
|
|
||||||
'a_second_ago' => 'sekunti sitten',
|
|
||||||
),
|
|
||||||
'menu' => array(
|
|
||||||
'config' => 'Asetukset',
|
|
||||||
'server' => 'Palvelimet',
|
|
||||||
'server_log' => 'Tapahtumat',
|
|
||||||
'server_status' => 'Tila',
|
|
||||||
'server_update' => 'Päivitä',
|
|
||||||
'user' => 'Käyttäjät',
|
|
||||||
'help' => 'Apua',
|
|
||||||
),
|
|
||||||
'users' => array(
|
|
||||||
'user' => 'Käyttäjä',
|
|
||||||
'name' => 'Nimi',
|
|
||||||
'user_name' => 'Käyttäjänimi',
|
|
||||||
'password' => 'Salasana',
|
|
||||||
'password_repeat' => 'Salasana uudestaan',
|
|
||||||
'password_leave_blank' => 'Jätä tyhjäksi jos et halua vaihtaa',
|
|
||||||
'level' => 'Taso',
|
|
||||||
'level_10' => 'Järjestelmänvalvoja',
|
|
||||||
'level_20' => 'Käyttäjä',
|
|
||||||
'level_description' => '<b>Järjestelmänvalvojilla</b> on täydet oikeudet: he voivat hallita palvelimia,
|
|
||||||
käyttäjiä ja muokata ohjelmiston asetuksia.<br><b>Käyttäjät</b> voivat vain
|
|
||||||
nähdä ja päivittää palvelimia jotka on asetettu heille.',
|
|
||||||
'mobile' => 'Puhelin',
|
|
||||||
'email' => 'Sähköposti',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'pushover_description' => 'Pushover on palvelu jolla on helppo lähettää reaaliaikaisia tilaviestejä. Katso
|
|
||||||
<a href="https://pushover.net/" target="_blank">verkkosivuilta</a> lisäinfoa.',
|
|
||||||
'pushover_key' => 'Pushover avain',
|
|
||||||
'pushover_device' => 'Pushover laite',
|
|
||||||
'pushover_device_description' => 'Laitteen nimi johon viesti lähetetään. Jätä tyhjäksi lähettääksesi
|
|
||||||
kaikkiin laitteisiin.',
|
|
||||||
'delete_title' => 'Poista käyttäjä',
|
|
||||||
'delete_message' => 'Haluatko varmasti poistaa käyttäjän \'%1\'?',
|
|
||||||
'deleted' => 'Käyttäjä poistettu.',
|
|
||||||
'updated' => 'Käyttäjä päivitetty.',
|
|
||||||
'inserted' => 'Käyttäjä lisätty.',
|
|
||||||
'profile' => 'Profiili',
|
|
||||||
'profile_updated' => 'Profiilisi on päivitetty.',
|
|
||||||
'error_user_name_bad_length' => 'Käyttäjänimi saa olla 2-64 merkkiä pitkä.',
|
|
||||||
'error_user_name_invalid' => 'Käyttäjänimessä saa olla vain kirjaimia (a-z, A-Z), numeroita (0-9),
|
|
||||||
pisteitä (.) ja alaviivoja (_).',
|
|
||||||
'error_user_name_exists' => 'Annettu käyttäjänimi on jo tietokannassa.',
|
|
||||||
'error_user_email_bad_length' => 'Sähköpostiosoitteen täytyy olla 5-255 merkkiä pitkä.',
|
|
||||||
'error_user_email_invalid' => 'Annettu sähköposti ei kelpaa.',
|
|
||||||
'error_user_level_invalid' => 'Annettu käyttäjän taso ei kelpaa.',
|
|
||||||
'error_user_no_match' => 'Käyttäjää ei löydetty tietokannasta.',
|
|
||||||
'error_user_password_invalid' => 'Annettu salasana on väärin.',
|
|
||||||
'error_user_password_no_match' => 'Annetut salasanat eivät täsmää.',
|
|
||||||
),
|
|
||||||
'log' => array(
|
|
||||||
'title' => 'Tapahtumamerkinnät',
|
|
||||||
'type' => 'Tyyppi',
|
|
||||||
'status' => 'Tila',
|
|
||||||
'email' => 'Sähköposti',
|
|
||||||
'sms' => 'Tekstiviesti',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'no_logs' => 'Ei tapahtumia',
|
|
||||||
'clear' => 'Tyhjennä loki',
|
|
||||||
'delete_title' => 'Poista loki',
|
|
||||||
'delete_message' => 'Haluatko varmasti poistaa <b>kaikki</b> lokit?',
|
|
||||||
),
|
|
||||||
'servers' => array(
|
|
||||||
'server' => 'Palvelin',
|
|
||||||
'status' => 'Tila',
|
|
||||||
'label' => 'Nimi',
|
|
||||||
'domain' => 'Isäntänimi/IP',
|
|
||||||
'timeout' => 'Aikakatkaisu',
|
|
||||||
'timeout_description' => 'Kuinka monta sekuntia odottaa kunnes palvelin merkitään sammuneeksi.',
|
|
||||||
'port' => 'Portti',
|
|
||||||
'type' => 'Tyyppi',
|
|
||||||
'type_website' => 'Verkkosivu',
|
|
||||||
'type_service' => 'Palvelu',
|
|
||||||
'pattern' => 'Etsittävä sarja/kuvio',
|
|
||||||
'pattern_description' => 'Jos määriteltyä sarjaa ei löydetä verkkosivuilta, palvelin merkitään
|
|
||||||
sammuneeksi. REGEX on sallittua.',
|
|
||||||
'last_check' => 'Viimeisin tarkistus',
|
|
||||||
'last_online' => 'Viimeksi nähty',
|
|
||||||
'monitoring' => 'Valvottava',
|
|
||||||
'no_monitoring' => 'Ei valvontaa',
|
|
||||||
'email' => 'Sähköposti',
|
|
||||||
'send_email' => 'Lähetä sähköposti',
|
|
||||||
'sms' => 'Tekstiviesti',
|
|
||||||
'send_sms' => 'Lähetä tekstiviesti',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'users' => 'Käyttäjät',
|
|
||||||
'delete_title' => 'Poista palvelin',
|
|
||||||
'delete_message' => 'Haluatko varmasti poistaa palvelimen \'%1\'?',
|
|
||||||
'deleted' => 'Palvelin poistettu.',
|
|
||||||
'updated' => 'Palvelin päivitetty.',
|
|
||||||
'inserted' => 'Palvelin lisätty.',
|
|
||||||
'latency' => 'Viive',
|
|
||||||
'latency_max' => 'Viive (maksimi)',
|
|
||||||
'latency_min' => 'Viive (minimi)',
|
|
||||||
'latency_avg' => 'Viive (keskiarvo)',
|
|
||||||
'uptime' => 'Päälläoloaika',
|
|
||||||
'year' => 'Vuosi',
|
|
||||||
'month' => 'Kuukausi',
|
|
||||||
'week' => 'Viikko',
|
|
||||||
'day' => 'Päivä',
|
|
||||||
'hour' => 'Tunti',
|
|
||||||
'warning_threshold' => 'Varoituskynnys',
|
|
||||||
'warning_threshold_description' => 'Epäonnistuneiden tarkistuksien määrä kunnes se merkataan sammuneeksi.',
|
|
||||||
'chart_last_week' => 'Viime viikolla',
|
|
||||||
'chart_history' => 'Historia',
|
|
||||||
'chart_day_format' => '%Y-%m-%d',
|
|
||||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
|
||||||
'chart_short_date_format' => '%m/%d %H:%M',
|
|
||||||
'chart_short_time_format' => '%H:%M',
|
|
||||||
'warning_notifications_disabled_sms' => 'Tekstiviesti-ilmoitukset on poistettu käytöstä.',
|
|
||||||
'warning_notifications_disabled_email' => 'Sähköposti-ilmoitukset on poistettu käytöstä.',
|
|
||||||
'warning_notifications_disabled_pushover' => 'Pushover-ilmoitukset on poistettu käytöstä.',
|
|
||||||
'error_server_no_match' => 'Palvelinta ei löydetty.',
|
|
||||||
'error_server_label_bad_length' => 'Nimen pitää olla 1-255 merkkiä pitkä.',
|
|
||||||
'error_server_ip_bad_length' => 'Isäntänimen / IP:n pitää olla 1-255 merkkiä pitkä.',
|
|
||||||
'error_server_ip_bad_service' => 'Annettu IP osoite ei kelpaa.',
|
|
||||||
'error_server_ip_bad_website' => 'Annettu verkkosivun osoite ei kelpaa.',
|
|
||||||
'error_server_type_invalid' => 'Valittu palvelintyyppi ei kelpaa.',
|
|
||||||
'error_server_warning_threshold_invalid' => 'Varoituskynnyksen arvo pitää olla suurempi kuin 0.',
|
|
||||||
),
|
|
||||||
'config' => array(
|
|
||||||
'general' => 'Yleiset',
|
|
||||||
'language' => 'Kieli',
|
|
||||||
'show_update' => 'Tarkista päivitykset?',
|
|
||||||
'email_status' => 'Salli sähköpostin lähettäminen',
|
|
||||||
'email_from_email' => 'Lähettäjän osoite',
|
|
||||||
'email_from_name' => 'Lähettäjän nimi',
|
|
||||||
'email_smtp' => 'Käytä SMTP:tä',
|
|
||||||
'email_smtp_host' => 'SMTP isäntä',
|
|
||||||
'email_smtp_port' => 'SMTP portti',
|
|
||||||
'email_smtp_security' => 'SMTP turvallisuus',
|
|
||||||
'email_smtp_security_none' => 'Ei mitään',
|
|
||||||
'email_smtp_username' => 'SMTP käyttäjänimi',
|
|
||||||
'email_smtp_password' => 'SMTP salasana',
|
|
||||||
'email_smtp_noauth' => 'Jätä tyhjäksi jos ei varmennusta',
|
|
||||||
'sms_status' => 'Salli tekstiviestien lähetys',
|
|
||||||
'sms_gateway' => 'Palvelu jonka kautta tekstiviestit lähetetään',
|
|
||||||
'sms_gateway_username' => 'Palvelun käyttäjänimi',
|
|
||||||
'sms_gateway_password' => 'Palvelun salasana',
|
|
||||||
'sms_from' => 'Lähettäjän puhelinnumero',
|
|
||||||
'pushover_status' => 'Salli Pushover-viestien lähetys',
|
|
||||||
'pushover_description' => 'Pushover on palvelu jolla on helppo lähettää reaaliaikaisia tilaviestejä. Katso
|
|
||||||
<a href="https://pushover.net/" target="_blank">verkkosivuilta</a> lisäinfoa.',
|
|
||||||
'pushover_clone_app' => 'Paina tästä luodaksesi Pushover-sovelluksesi',
|
|
||||||
'pushover_api_token' => 'Pushover API-avain',
|
|
||||||
'pushover_api_token_description' => 'Ennen kuin voit käyttää Pushoveria, sinun täytyy <a href="%1$s"
|
|
||||||
target="_blank" rel="noopener">rekisteröidä sovellus</a> heidän
|
|
||||||
nettisivuillaan, ja kopioida API-avain tänne.',
|
|
||||||
'alert_type' => 'Valitse milloin haluat ilmoituksia.',
|
|
||||||
'alert_type_description' => '<b>Tilan muutos:</b> Saat ilmoituksen kun palvelimen tila vaihtuu. Eli tilasta
|
|
||||||
päällä -> sammunut tai sammunut -> päällä.<br><br /><b>Sammunut:</b> Saat
|
|
||||||
yhden ilmoituksen kun palvelimen tila vaihtuu sammuneeksi, mutta *VAIN
|
|
||||||
ENSIMMÄISEN KERRAN*. Esimerkiksi, jos tarkistus tehdään joka 15 minuutti, ja
|
|
||||||
palvelin sammuu klo 1 ja pysyy sammuneena klo 6 asti. Saat vain yhden ilmoituksen
|
|
||||||
klo 1, ei muuta.<br><br><b>Aina:</b> Saat ilmoituksen joka kerta kun palvelin
|
|
||||||
tarkistetaan, vaikka palvelin olisi ollut sammuneena tunteja.',
|
|
||||||
'alert_type_status' => 'Tilan muutos',
|
|
||||||
'alert_type_offline' => 'Sammunut',
|
|
||||||
'alert_type_always' => 'Aina',
|
|
||||||
'log_status' => 'Tallenna tapahtumat',
|
|
||||||
'log_status_description' => 'Jos arvo on tosi, palvelin tallentaa tapahtumamerkinnän jokaisesta tilan
|
|
||||||
muutoksesta.',
|
|
||||||
'log_email' => 'Tallenna lähetetyt sähköpostitapahtumat',
|
|
||||||
'log_sms' => 'Tallenna lähetetyt tekstiviestitapahtumat',
|
|
||||||
'log_pushover' => 'Tallenna lähetetyt Pushover-tapahtumat',
|
|
||||||
'updated' => 'Asetukset tallennettu ja päivitetty.',
|
|
||||||
'tab_email' => 'Sähköposti',
|
|
||||||
'tab_sms' => 'Tekstiviesti',
|
|
||||||
'tab_pushover' => 'Pushover',
|
|
||||||
'settings_email' => 'Sähköposti asetukset',
|
|
||||||
'settings_sms' => 'Tekstiviesti asetukset',
|
|
||||||
'settings_pushover' => 'Pushover asetukset',
|
|
||||||
'settings_notification' => 'Ilmoitusasetukset',
|
|
||||||
'settings_log' => 'Tapahtumamerkintöjen asetukset',
|
|
||||||
'auto_refresh' => 'Automaattipäivitys',
|
|
||||||
'auto_refresh_description' => 'Päivittää automaattisesti palvelimet-sivun.<br><span class="small">Aika
|
|
||||||
sekunteina, jos 0, sivu ei päivity automaattisesti.</span>',
|
|
||||||
'test' => 'Testi',
|
|
||||||
'test_email' => 'Testisähköposti lähetetään profiilisi sähköpostiosoitteeseen.',
|
|
||||||
'test_sms' => 'Testitekstiviesti lähetetään profiilisi numeroon.',
|
|
||||||
'test_pushover' => 'Pushover-ilmoitus lähetetään profiilissa asetettuun laitteeseen.',
|
|
||||||
'send' => 'Lähetä',
|
|
||||||
'test_subject' => 'Testi',
|
|
||||||
'test_message' => 'Testiviesti',
|
|
||||||
'email_sent' => 'Sähköposti lähetetty',
|
|
||||||
'email_error' => 'Virhe sähköpostin lähetyksessä',
|
|
||||||
'sms_sent' => 'Tekstiviesti lähetetty',
|
|
||||||
'sms_error' => 'Virhe tekstiviestin lähetyksessä. %s',
|
|
||||||
'sms_error_nomobile' => 'Testitektiviestin lähetys epäonnistui: toimivaa numeroa ei löydetty profiilistasi.',
|
|
||||||
'pushover_sent' => 'Pushover ilmoitus lähetetty',
|
|
||||||
'pushover_error' => 'Virhe Pushover-ilmoitusta lähetettäessä: %s',
|
|
||||||
'pushover_error_noapp' => 'Virhe lähetettäessä Pushover-ilmoitusta: Pushover API-avainta ei löydetty
|
|
||||||
asetuksista.',
|
|
||||||
'pushover_error_nokey' => 'Virhe lähetettäessä Pushover-ilmoitusta: Pushover avainta ei löydetty
|
|
||||||
profiilistasi.',
|
|
||||||
'log_retention_period' => 'Tapahtumien säilytysaika',
|
|
||||||
'log_retention_period_description' => 'Kuinka monta päivää pitää palvelinten päälläoloaikoja ja muita
|
|
||||||
tapahtumia. Aseta arvoksi 0 jos haluat pitää ne loputtomasti.',
|
|
||||||
'log_retention_days' => 'päivää',
|
|
||||||
),
|
|
||||||
'login' => array(
|
|
||||||
'welcome_usermenu' => 'Tervetuloa, %user_name%',
|
|
||||||
'title_sign_in' => 'Ole hyvä ja kirjaudu sisään',
|
|
||||||
'title_forgot' => 'Unohtuiko salasanasi?',
|
|
||||||
'title_reset' => 'Resetoi salasanasi',
|
|
||||||
'submit' => 'Lähetä',
|
|
||||||
'remember_me' => 'Muista minut',
|
|
||||||
'login' => 'Kirjaudu sisään',
|
|
||||||
'logout' => 'Kirjaudu ulos',
|
|
||||||
'username' => 'Käyttäjänimi',
|
|
||||||
'password' => 'Salasana',
|
|
||||||
'password_repeat' => 'Salasana uudestaan',
|
|
||||||
'password_forgot' => 'Unohtuiko salasanasi?',
|
|
||||||
'password_reset' => 'Resetoi salasanasi',
|
|
||||||
'password_reset_email_subject' => 'Resetoi salasanasi PHP Server Monitoriin',
|
|
||||||
'password_reset_email_body' => 'Ole hyvä ja käytä seuraavaa linkkiä restoidaksesi salasanasi. Huomaa että
|
|
||||||
linkki vanhentuu tunnin sisällä.<br><br>%link%',
|
|
||||||
'error_user_incorrect' => 'Annettua käyttäjänimeä ei löydetty.',
|
|
||||||
'error_login_incorrect' => 'Antamasi tiedot eivät ole oikein.',
|
|
||||||
'error_login_passwords_nomatch' => 'Annetut salasanat eivät täsmää.',
|
|
||||||
'error_reset_invalid_link' => 'Resetointilinkkisi on väärä.',
|
|
||||||
'success_password_forgot' => 'Sähköpostiisi on lähetetty ohjeet kuinka resetoida salasanasi.',
|
|
||||||
'success_password_reset' => 'Salasanasi on resetoitu onnistuneesti, ole hyvä ja kirjaudu sisään.',
|
|
||||||
),
|
|
||||||
'error' => array(
|
|
||||||
'401_unauthorized' => 'Ei käyttöoikeuksia',
|
|
||||||
'401_unauthorized_description' => 'Sinulla ei ole käyttöoikeuksia katsoa tätä sivua.',
|
|
||||||
),
|
|
||||||
);
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -21,7 +20,7 @@
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author David Ribeiro
|
* @author David Ribeiro
|
||||||
* @author Jérôme Cabanis <jerome@lauraly.com>
|
* @author Jérôme Cabanis <jerome@lauraly.com>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
|
@ -29,13 +28,7 @@
|
||||||
|
|
||||||
$sm_lang = array(
|
$sm_lang = array(
|
||||||
'name' => 'Français - French',
|
'name' => 'Français - French',
|
||||||
'locale' => array(
|
'locale' => array('fr_FR.UTF-8', 'fr_FR', 'french'),
|
||||||
'0' => 'fr_FR.UTF-8',
|
|
||||||
'1' => 'fr_FR',
|
|
||||||
'2' => 'french',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'fr',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
'system' => array(
|
||||||
'title' => 'Server Monitor',
|
'title' => 'Server Monitor',
|
||||||
'install' => 'Installer',
|
'install' => 'Installer',
|
||||||
|
@ -43,23 +36,18 @@ $sm_lang = array(
|
||||||
'save' => 'Enregistrer',
|
'save' => 'Enregistrer',
|
||||||
'edit' => 'Editer',
|
'edit' => 'Editer',
|
||||||
'delete' => 'Supprimer',
|
'delete' => 'Supprimer',
|
||||||
'view' => 'Détails',
|
|
||||||
'date' => 'Date',
|
'date' => 'Date',
|
||||||
'message' => 'Message',
|
'message' => 'Message',
|
||||||
'yes' => 'Oui',
|
'yes' => 'Oui',
|
||||||
'no' => 'Non',
|
'no' => 'Non',
|
||||||
'insert' => 'Nouveau',
|
'insert' => 'Nouveau',
|
||||||
'add_new' => 'Nouveau',
|
'add_new' => 'Nouveau',
|
||||||
'update_available' => 'Une nouvelle version ({version}) est disponible à l\'adresse <a
|
'update_available' => 'Une nouvelle version ({version}) est disponible à l\'adresse <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
|
||||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
|
||||||
'back_to_top' => 'Haut de page',
|
'back_to_top' => 'Haut de page',
|
||||||
'go_back' => 'Retour',
|
'go_back' => 'Retour',
|
||||||
'ok' => 'OK',
|
'ok' => 'OK',
|
||||||
'bad' => 'mauvais',
|
|
||||||
'cancel' => 'Annuler',
|
'cancel' => 'Annuler',
|
||||||
'none' => 'Aucun',
|
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||||
'activate' => 'Activer',
|
|
||||||
'short_day_format' => 'Le %e %B',
|
'short_day_format' => 'Le %e %B',
|
||||||
'long_day_format' => 'Le %e %B %Y',
|
'long_day_format' => 'Le %e %B %Y',
|
||||||
'yesterday_format' => 'Hier à %kh%M',
|
'yesterday_format' => 'Hier à %kh%M',
|
||||||
|
@ -71,21 +59,6 @@ $sm_lang = array(
|
||||||
'a_minute_ago' => 'Il y a une minute',
|
'a_minute_ago' => 'Il y a une minute',
|
||||||
'seconds_ago' => 'Il y a %d secondes',
|
'seconds_ago' => 'Il y a %d secondes',
|
||||||
'a_second_ago' => 'Il y a une seconde',
|
'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(
|
'menu' => array(
|
||||||
'config' => 'Configuration',
|
'config' => 'Configuration',
|
||||||
|
@ -103,56 +76,31 @@ $sm_lang = array(
|
||||||
'password' => 'Mot de passe',
|
'password' => 'Mot de passe',
|
||||||
'password_repeat' => 'Répéter le mot de passe',
|
'password_repeat' => 'Répéter le mot de passe',
|
||||||
'password_leave_blank' => 'Laisser vide pour ne pas le modifier',
|
'password_leave_blank' => 'Laisser vide pour ne pas le modifier',
|
||||||
'level' => 'Rôle',
|
'level' => 'Niveau',
|
||||||
'level_10' => 'Administrateur',
|
'level_10' => 'Administrateur',
|
||||||
'level_20' => 'Utilisateur',
|
'level_20' => 'Utilisateur',
|
||||||
'level_description' => 'Les <b>Administrateurs</b> ont un accès total. Ils peuvent gérer les serveurs, les
|
'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.',
|
||||||
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',
|
'mobile' => 'Téléphone',
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'pushover_description' => 'Pushover est un service qui simplifie les notifications en temps réel. Voir <a
|
'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.',
|
||||||
href="https://pushover.net/" target="_blank">leur site web</a> pour plus
|
'pushover_key' => 'Pushover Key',
|
||||||
d\'informations.',
|
'pushover_device' => 'Pushover Device',
|
||||||
'pushover_key' => 'Clé Pushover',
|
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||||
'pushover_device' => 'Appareil Pushover',
|
|
||||||
'pushover_device_description' => 'Nom de l\'appareil auquel le message doit être envoyé. Laissez vide pour
|
|
||||||
l\'envoyer à tous les appareils.',
|
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> est une application de
|
|
||||||
messagerie instantanée qui facilite la réception de notification en temps réel.
|
|
||||||
Lisez la <a href="http://docs.phpservermonitor.org/"
|
|
||||||
target="_blank">documentation</a> pour obtenir plus d\'informations sur la
|
|
||||||
configuration de ce service.',
|
|
||||||
'telegram_chat_id' => 'ID de conversation (Chat ID) Telegram',
|
|
||||||
'telegram_chat_id_description' => 'Les notifications seront envoyées à la conversation correspondante.',
|
|
||||||
'telegram_get_chat_id' => 'Cliquez ici pour obtenir votre ID de conversation (Chat ID)',
|
|
||||||
'activate_telegram' => 'Activer les alertes Telegram',
|
|
||||||
'activate_telegram_description' => 'Permet aux notifications Telegram d\'être envoyée à la conversation
|
|
||||||
spécifiée. Sans cette permission, Telegram ne nous autorise pas à vous
|
|
||||||
envoyer des notifications.',
|
|
||||||
'telegram_bot_username_found' => 'Le BOT a été trouvé !<br><a href="%s" target="_blank"
|
|
||||||
rel="noopener"><button class="btn btn-primary">Étape suivante</button></a>
|
|
||||||
<br>Cela va ouvrir une conversation avec le BOT. Vous devez appuyer sur
|
|
||||||
\'/start\' ou le saisir.',
|
|
||||||
'telegram_bot_username_error_token' => '<b>401 - Unauthorized</b>. Assurez-vous que le Token API soit valide.',
|
|
||||||
'telegram_bot_error' => 'Une erreur s\'est produite en tentant d\'activer les notifications Telegram : %s',
|
|
||||||
'delete_title' => 'Supprimer un utilisateur',
|
'delete_title' => 'Supprimer un utilisateur',
|
||||||
'delete_message' => 'Êtes-vous sûr de vouloir supprimer l\'utilisateur \'%1\' ?',
|
'delete_message' => 'Êtes-vous sûr de vouloir supprimer l\'utilisateur \'%1\' ?',
|
||||||
'deleted' => 'Utilisateur supprimé.',
|
'deleted' => 'Utilisateur supprimé.',
|
||||||
'updated' => 'Utilisateur mis à jour.',
|
'updated' => 'Utilisateur mis à jour.',
|
||||||
'inserted' => 'Utilisateur ajouté.',
|
'inserted' => 'Utilisateur ajouté.',
|
||||||
'profile' => 'Profil',
|
'profile' => 'Profil',
|
||||||
'profile_updated' => 'Votre profil a été mis à jour.',
|
'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_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,
|
'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 (_).',
|
||||||
A-Z), des chiffres (0-9), points (.) ou underscore (_).',
|
|
||||||
'error_user_name_exists' => 'Ce nom d\'utilisateur existe déjà.',
|
'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_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_email_invalid' => 'L\'adresse email n\'est pas valide.',
|
||||||
'error_user_level_invalid' => 'Le rôle d\'utilisateur 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ées.',
|
'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_invalid' => 'Le mot de passe n\'est pas valide.',
|
||||||
'error_user_password_no_match' => 'Le mot de passe est incorrect.',
|
'error_user_password_no_match' => 'Le mot de passe est incorrect.',
|
||||||
),
|
),
|
||||||
|
@ -160,83 +108,36 @@ $sm_lang = array(
|
||||||
'title' => 'Événements',
|
'title' => 'Événements',
|
||||||
'type' => 'Type',
|
'type' => 'Type',
|
||||||
'status' => 'État',
|
'status' => 'État',
|
||||||
'email' => 'Email',
|
'email' => 'email',
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'no_logs' => 'Aucun événement',
|
'no_logs' => 'Aucun événement',
|
||||||
'clear' => 'Effacer les journaux',
|
|
||||||
'delete_title' => 'Supprimer les journaux',
|
|
||||||
'delete_message' => 'Êtes-vous sûr de vouloir supprimer <b>tous</b> les journaux ?',
|
|
||||||
),
|
),
|
||||||
'servers' => array(
|
'servers' => array(
|
||||||
'server' => 'Serveur',
|
'server' => 'Serveur',
|
||||||
'status' => 'État',
|
'status' => 'État',
|
||||||
'label' => 'Nom',
|
'label' => 'Nom',
|
||||||
'domain' => 'Domaine/IP',
|
'domain' => 'Domaine/IP',
|
||||||
'timeout' => 'Délai d\'attente',
|
'timeout' => 'Timeout',
|
||||||
'timeout_description' => 'Nombre de secondes à attendre une réponse du serveur.',
|
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||||
'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',
|
'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' => 'Type',
|
||||||
'type_website' => 'Site Web',
|
'type_website' => 'Site Web',
|
||||||
'type_service' => 'Service',
|
'type_service' => 'Service',
|
||||||
'type_ping' => 'Ping',
|
|
||||||
'pattern' => 'Rechercher un texte/motif',
|
'pattern' => 'Rechercher un texte/motif',
|
||||||
'pattern_description' => 'Si ce texte n\'est par retrouvé sur le site web, le serveur est marqué
|
'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.',
|
||||||
hors-service. Les expressions régulières sont autorisées.',
|
|
||||||
'pattern_online' => 'Le texte indique que le site est',
|
|
||||||
'pattern_online_description' => 'En ligne : Si ce texte est trouvé sur le site internet, le serveur sera
|
|
||||||
considéré en ligne. Hors-ligne : Si ce texte n\'est pas trouvé sur le
|
|
||||||
site, le serveur sera considéré hors-ligne.',
|
|
||||||
'redirect_check' => 'La redirection vers un autre domaine est',
|
|
||||||
'redirect_check_description' => 'Une redirection vers un autre domaine est généralement mauvais signe.',
|
|
||||||
'allow_http_status' => 'Autoriser Les codes de statuts HTTP',
|
|
||||||
'allow_http_status_description' => 'Marquer le serveur en ligne. Les codes de statuts HTTP inférieur à 400
|
|
||||||
sont considérés comme en ligne par défaut. Séparer les valeurs avec
|
|
||||||
|.',
|
|
||||||
'header_name' => 'Nom d\'en-têtes',
|
|
||||||
'header_value' => 'Valeur d\'en-tête',
|
|
||||||
'header_name_description' => 'Sensible à la casse.',
|
|
||||||
'header_value_description' => 'Les expressions régulières sont autorisées.',
|
|
||||||
'last_check' => 'Dernière vérification',
|
'last_check' => 'Dernière vérification',
|
||||||
'last_online' => 'Dernière fois OK',
|
'last_online' => 'Dernière fois OK',
|
||||||
'last_offline' => 'Dernière fois hors-ligne',
|
'monitoring' => 'Serveillé',
|
||||||
'last_output' => 'Dernière sortie positive',
|
'no_monitoring' => 'Non serveillé',
|
||||||
'last_error' => 'Dernière erreur',
|
|
||||||
'last_error_output' => 'Dernière erreur de sortie',
|
|
||||||
'output' => 'Sortie',
|
|
||||||
'monitoring' => 'Surveillé',
|
|
||||||
'no_monitoring' => 'Non surveillé',
|
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'send_email' => 'Envoyer un email',
|
'send_email' => 'Envoyer un email',
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'send_sms' => 'Envoyer un SMS',
|
'send_sms' => 'Envoyer un SMS',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'send_pushover' => 'Envoyer des notifications Pushover',
|
'users' => 'Users',
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'send_telegram' => 'Envoyer des notifications Telegram',
|
|
||||||
'users' => 'Utilisateurs',
|
|
||||||
'delete_title' => 'Supprimer un serveur',
|
'delete_title' => 'Supprimer un serveur',
|
||||||
'delete_message' => 'Êtes-vous sûr de vouloir supprimer le serveur \'%1\' ?',
|
'delete_message' => 'Êtes-vous sûr de vouloir supprimer le serveur \'%1\' ?',
|
||||||
'deleted' => 'Serveur supprimé.',
|
'deleted' => 'Serveur supprimé.',
|
||||||
'updated' => 'Serveur mis à jour.',
|
'updated' => 'Serveur mis à jour.',
|
||||||
'inserted' => 'Serveur ajouté.',
|
'inserted' => 'Serveur ajouté.',
|
||||||
|
@ -244,8 +145,6 @@ $sm_lang = array(
|
||||||
'latency_max' => 'Temps de réponse maximum',
|
'latency_max' => 'Temps de réponse maximum',
|
||||||
'latency_min' => 'Temps de réponse minimum',
|
'latency_min' => 'Temps de réponse minimum',
|
||||||
'latency_avg' => 'Temps de réponse moyen',
|
'latency_avg' => 'Temps de réponse moyen',
|
||||||
'online' => 'en ligne',
|
|
||||||
'offline' => 'hors ligne',
|
|
||||||
'uptime' => 'Disponibilité',
|
'uptime' => 'Disponibilité',
|
||||||
'year' => 'Année',
|
'year' => 'Année',
|
||||||
'month' => 'Mois',
|
'month' => 'Mois',
|
||||||
|
@ -253,18 +152,17 @@ $sm_lang = array(
|
||||||
'day' => 'Jour',
|
'day' => 'Jour',
|
||||||
'hour' => 'Heure',
|
'hour' => 'Heure',
|
||||||
'warning_threshold' => 'Seuil d\'alerte',
|
'warning_threshold' => 'Seuil d\'alerte',
|
||||||
'warning_threshold_description' => 'Nombre d\'échecs de connexion avant que le serveur soit marqué
|
'warning_threshold_description' => 'Nombre d\'échecs de connexion avant que le serveur soit marqué hors-service.',
|
||||||
hors-service.',
|
|
||||||
'chart_last_week' => 'La dernière semaine',
|
'chart_last_week' => 'La dernière semaine',
|
||||||
'chart_history' => 'Historique',
|
'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_day_format' => '%d/%m/%Y',
|
||||||
'chart_long_date_format' => '%d/%m/%Y %H:%M:%S',
|
'chart_long_date_format' => '%d/%m/%Y %H:%M:%S',
|
||||||
'chart_short_date_format' => '%d/%m %H:%M',
|
'chart_short_date_format' => '%d/%m %H:%M',
|
||||||
'chart_short_time_format' => '%H:%M',
|
'chart_short_time_format' => '%H:%M',
|
||||||
'warning_notifications_disabled_sms' => 'Les notifications SMS sont désactivées.',
|
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||||
'warning_notifications_disabled_email' => 'Les notifications par email sont désactivées.',
|
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||||
'warning_notifications_disabled_pushover' => 'Les notifications Pushover sont désactivées.',
|
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||||
'warning_notifications_disabled_telegram' => 'Les notifications Telegram sont désactivées.',
|
|
||||||
'error_server_no_match' => 'Serveur non trouvé.',
|
'error_server_no_match' => 'Serveur non trouvé.',
|
||||||
'error_server_label_bad_length' => 'Le nom doit avoir entre 1 et 255 caractères.',
|
'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_length' => 'Domaine/IP doit avoir entre 1 et 255 caractères.',
|
||||||
|
@ -276,198 +174,125 @@ $sm_lang = array(
|
||||||
'config' => array(
|
'config' => array(
|
||||||
'general' => 'Général',
|
'general' => 'Général',
|
||||||
'language' => 'Langue',
|
'language' => 'Langue',
|
||||||
'show_update' => 'Vérifier les nouvelles mises à jour chaque semaine',
|
'show_update' => 'Vérifier les nouvelles mise à jour chaque semaines',
|
||||||
'password_encrypt_key' => 'Clé de chiffrement des mots de passe',
|
|
||||||
'password_encrypt_key_note' => 'Cette clé est utilisée pour chiffrer les mots
|
|
||||||
de passe qui sont enregistrés dans la base de données pour les serveurs qui requierent une authentification. Si la clé
|
|
||||||
est modifiée, les mots de passe enregistrés ne seront plus valide !',
|
|
||||||
'proxy' => 'Activer le proxy',
|
|
||||||
'proxy_url' => 'URL du proxy',
|
|
||||||
'proxy_user' => 'Nom d\'utilisateur du proxy',
|
|
||||||
'proxy_password' => 'Mot de passe du proxy',
|
|
||||||
'email_status' => 'Autoriser l\'envoi de mail',
|
'email_status' => 'Autoriser l\'envoi de mail',
|
||||||
'email_from_email' => 'Adresse de l\'expéditeur',
|
'email_from_email' => 'Adresse de l\'expéditeur',
|
||||||
'email_from_name' => 'Nom de l\'expéditeur',
|
'email_from_name' => 'Nom de l\'expéditeur',
|
||||||
'email_smtp' => 'Utiliser un serveur SMTP',
|
'email_smtp' => 'Utiliser un serveur SMTP',
|
||||||
'email_smtp_host' => 'Adresse serveur SMTP',
|
'email_smtp_host' => 'Adresse serveur SMTP',
|
||||||
'email_smtp_port' => 'Port 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_username' => 'Nom utilisateur SMTP',
|
||||||
'email_smtp_password' => 'Mot de passe SMTP',
|
'email_smtp_password' => 'Mot de passe SMTP',
|
||||||
'email_smtp_noauth' => 'Laisser vide si pas d\'authentication',
|
'email_smtp_noauth' => 'Laisser vide si pas d\'authentication',
|
||||||
'sms_status' => 'Autoriser l\'envoi de SMS',
|
'sms_status' => 'Autoriser l\'envoi de SMS',
|
||||||
'sms_gateway' => 'Passerelle à utiliser pour 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_username' => 'Nom utilisateur de la passerelle',
|
||||||
'sms_gateway_password' => 'Mot de passe de la passerelle',
|
'sms_gateway_password' => 'Mot de passe de la passerelle',
|
||||||
'sms_from' => 'SMS de l\'expéditeur',
|
'sms_from' => 'SMS de l\'expéditeur',
|
||||||
'pushover_status' => 'Autoriser l\'envoi des messages Pushover',
|
'pushover_status' => 'Allow sending Pushover messages',
|
||||||
'pushover_description' => 'Pushover est un service qui simplifie les notifications en temps réel. Voir <a
|
'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.',
|
||||||
href="https://pushover.net/" target="_blank">leur site web</a> pour plus
|
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||||
d\'informations.',
|
'pushover_api_token' => 'Pushover App API Token',
|
||||||
'pushover_clone_app' => 'Cliquez ici pour créer votre application Pushover',
|
'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_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' => 'Choisissez quand vous souhaitez être notifié',
|
||||||
'alert_type_description' => '<b>Changement d\'état : </b>Vous recevez une notification chaque fois que
|
'alert_type_description' => '<b>Changement d\'état : </b>'.
|
||||||
le serveur change d\'état. C\'est-à-dire passe de l\'état OK à HORS SERVICE
|
'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/>'.
|
||||||
ou de HORS SERVICE à OK.<br><br><b>Hors service : </b>Vous ne recevez une
|
'<br/><b>Hors service : </b>'.
|
||||||
notification que quand le serveur passe de l\'état OK à HORS SERVICE. Par
|
'Vous ne recevez une notification que quand le serveur passe de l\'état OK à HORS SERVICE. Par exemple, '.
|
||||||
exemple, Votre tâche planifiée s\'exécute toutes les 15 minutes et votre
|
'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.'.
|
||||||
serveur passe à l\'état HORS SERVICE à 1 heure du matin et le reste jusqu\'à
|
'Vous ne recevez qu\'une seule notification à 1 heure du matin.<br/>'.
|
||||||
6 heures du matin.Vous ne recevez qu\'une seule notification à 1 heure du
|
'<br/><b>Toujours : </b>'.
|
||||||
matin.<br><br><b>Toujours : </b>Vous recevez une notification à chaque
|
'Vous recevez une notification à chaque exécution de la tache planifiée si le serveur est à l\'état HORS SERVICE ',
|
||||||
exécution de la tâche planifiée si le serveur est à l\'état HORS SERVICE ',
|
|
||||||
'alert_type_status' => 'Changement d\'état',
|
'alert_type_status' => 'Changement d\'état',
|
||||||
'alert_type_offline' => 'Hors service',
|
'alert_type_offline' => 'Hors service',
|
||||||
'alert_type_always' => 'Toujours',
|
'alert_type_always' => 'Toujours',
|
||||||
'combine_notifications' => 'Combiner les notifications',
|
|
||||||
'combine_notifications_description' => 'Réduit le nombre de notifications en les combinant toutes en une
|
|
||||||
seule. (Cela ne s\'applique pas aux SMS.)',
|
|
||||||
'alert_proxy' => 'Le serveur proxy n\'est jamais utilisé pour les services, même quand celui-ci est activé.',
|
|
||||||
'alert_proxy_url' => 'Format : hôte:port',
|
|
||||||
'log_status' => 'Etat des événements',
|
'log_status' => 'Etat des événements',
|
||||||
'log_status_description' => 'Si l\'option est activée, un événement est enregistré chaque fois qu\'une
|
'log_status_description' => 'Si l\'option est activée, un événement est enregistré chaque fois qu\'une notification a lieu.',
|
||||||
notification a lieu.',
|
'log_email' => 'Enregistrer tout les emails envoyés',
|
||||||
'log_email' => 'Enregistrer tous les emails envoyés',
|
'log_sms' => 'Enregistrer tout les SMS envoyés',
|
||||||
'log_sms' => 'Enregistrer tous les SMS envoyés',
|
'log_pushover' => 'Log pushover messages sent by the script',
|
||||||
'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.',
|
'updated' => 'La configuration a été mise à jour.',
|
||||||
'tab_email' => 'Email',
|
'tab_email' => 'Email',
|
||||||
'tab_sms' => 'SMS',
|
'tab_sms' => 'SMS',
|
||||||
'tab_pushover' => 'Pushover',
|
'tab_pushover' => 'Pushover',
|
||||||
'tab_telegram' => 'Telegram',
|
|
||||||
'settings_email' => 'Configuration email',
|
'settings_email' => 'Configuration email',
|
||||||
'settings_sms' => 'Configuration SMS',
|
'settings_sms' => 'Configuration SMS',
|
||||||
'settings_pushover' => 'Configuration Pushover',
|
'settings_pushover' => 'Pushover settings',
|
||||||
'settings_telegram' => 'Configuration Telegram',
|
|
||||||
'settings_notification' => 'Configuration des notifications',
|
'settings_notification' => 'Configuration des notifications',
|
||||||
'settings_log' => 'Configuration des événements',
|
'settings_log' => 'Configuration des événements',
|
||||||
'settings_proxy' => 'Configuration du proxy',
|
'auto_refresh' => 'Auto-rachaîchissement',
|
||||||
'auto_refresh' => 'Auto-rafraîchissement',
|
'auto_refresh_servers' =>
|
||||||
'auto_refresh_description' => 'Auto-rafraîchissement de la page serveurs.<br><span class="small">Temps en
|
'Auto-rachaîchissement de la page serveurs.<br/>'.
|
||||||
secondes. Si 0, la page n\'est pas rafraîchie.</span>',
|
'<span class="small">'.
|
||||||
|
'Temps en secondes. Si 0, la page n\'est pas rafraîchie.'.
|
||||||
|
'</span>',
|
||||||
|
'seconds' => 'secondes',
|
||||||
'test' => 'Tester',
|
'test' => 'Tester',
|
||||||
'test_email' => 'Un email va vous être envoyé à l\'adresse définie dans votre profil utilisateur.',
|
'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_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
|
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||||
profil utilisateur.',
|
|
||||||
'test_telegram' => 'Une notification Telegram sera envoyé à la conversion indiqué sur votre profil (ID de
|
|
||||||
conversation).',
|
|
||||||
'send' => 'Envoyer',
|
'send' => 'Envoyer',
|
||||||
'test_subject' => 'Test',
|
'test_subject' => 'Test',
|
||||||
'test_message' => 'Message de test',
|
'test_message' => 'Message de test',
|
||||||
'email_sent' => 'Email envoyé',
|
'email_sent' => 'Email envoyé',
|
||||||
'email_error' => 'Erreur lors de l\'envoi de l\'email',
|
'email_error' => 'Erreur lors de l\'envoie de l\'email',
|
||||||
'sms_sent' => 'SMS envoyé',
|
'sms_sent' => 'Sms envoyé',
|
||||||
'sms_error' => 'Erreur lors de l\'envoi du SMS. %s',
|
'sms_error' => 'Erreur lors de l\'envoie du sms',
|
||||||
'sms_error_nomobile' => 'Impossible d\'envoyer un SMS de test: aucun numéro de téléphone défini dans votre
|
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||||
profil.',
|
'pushover_sent' => 'Pushover notification sent',
|
||||||
'pushover_sent' => 'Notification Pushover envoyée',
|
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||||
'pushover_error' => 'Une erreur s\'est produite lors de l\'envoi de la notification Pushover : %s',
|
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||||
'pushover_error_noapp' => 'Impossible d\'envoyer une notification de test: Aucun jeton application Pushover
|
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||||
n\'a été défini dans la configuration Pushover.',
|
'log_retention_period' => 'Log retention period',
|
||||||
'pushover_error_nokey' => 'Impossible d\'envoyer une notification de test: Aucune clé Pushover n\'a été
|
'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
|
||||||
définie dans votre profil.',
|
'log_retention_days' => 'days',
|
||||||
'telegram_sent' => 'Notification Telegram envoyée',
|
|
||||||
'telegram_error' => 'Une erreur s\'est produite lors de l\'envoi de la notification : %s',
|
|
||||||
'telegram_error_notoken' => 'Impossible d\'envoyer la notification de test : aucun token APII token
|
|
||||||
trouvé dans la configuration.',
|
|
||||||
'telegram_error_noid' => 'Impossible d\'envoyer la notification de test : aucun ID de conversation
|
|
||||||
trouvé dans votre profil utilisateur.',
|
|
||||||
'log_retention_period' => 'Durée de conservation',
|
|
||||||
'log_retention_period_description' => 'Nombre de jours de conservation des événements envoyés et des temps
|
|
||||||
de réponse des serveurs. Entrez 0 pour les conserver indéfiniment.',
|
|
||||||
'log_retention_days' => 'jours',
|
|
||||||
),
|
),
|
||||||
|
// for newlines in the email messages use <br/>
|
||||||
'notifications' => array(
|
'notifications' => array(
|
||||||
'off_sms' => 'Le Serveur \'%LABEL%\' est HORS SERVICE: IP=%IP%, Port=%PORT%. Erreur=%ERROR%',
|
'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_subject' => 'IMPORTANT: Le Serveur \'%LABEL%\' est HORS SERVICE',
|
||||||
'off_email_body' => 'Impossible de se connecter au serveur suivant:<br><br>Serveur : %LABEL%<br>IP :
|
'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%",
|
||||||
%IP%<br>Port : %PORT%<br>Erreur : %ERROR%<br>Date: %DATE%',
|
|
||||||
'off_pushover_title' => 'Le Serveur \'%LABEL%\' est HORS SERVICE',
|
'off_pushover_title' => 'Le Serveur \'%LABEL%\' est HORS SERVICE',
|
||||||
'off_pushover_message' => 'Impossible de se connecter au serveur suivant :<br><br>Serveur :
|
'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%",
|
||||||
%LABEL%<br>IP : %IP%<br>Port : %PORT%<br>Erreur :
|
'on_sms' => 'Le Serveur \'%LABEL%\' est OK: IP=%IP%, Port=%PORT%',
|
||||||
%ERROR%<br>Date : %DATE%',
|
|
||||||
'off_telegram_message' => 'Impossible de se connecter au serveur suivant :<br><br>Serveur :
|
|
||||||
%LABEL%<br>IP : %IP%<br>Port : %PORT%<br>Erreur :
|
|
||||||
%ERROR%<br>Date : %DATE%',
|
|
||||||
'on_sms' => 'Le Serveur \'%LABEL%\' est OK: IP=%IP%, Port=%PORT%, il était hors-ligne pendant
|
|
||||||
%LAST_OFFLINE_DURATION%',
|
|
||||||
'on_email_subject' => 'IMPORTANT: Le Serveur \'%LABEL%\' est OK',
|
'on_email_subject' => 'IMPORTANT: Le Serveur \'%LABEL%\' est OK',
|
||||||
'on_email_body' => 'Le Serveur \'%LABEL%\' est de nouveau OK, il était hors-ligne pendant
|
'on_email_body' => "Le Serveur '%LABEL%' est de nouveau OK:<br/><br/>Serveur: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Date: %DATE%",
|
||||||
%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_title' => 'Le Serveur \'%LABEL%\' est OK',
|
||||||
'on_pushover_message' => 'Le Serveur \'%LABEL%\' est de nouveau OK, il était hors-ligne pendant
|
'on_pushover_message' => "Le Serveur '%LABEL%' est de nouveau OK:<br/><br/>Serveur: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Date: %DATE%",
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Serveur: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>Date: %DATE%',
|
|
||||||
'on_telegram_message' => 'Server \'%LABEL%\' est de nouveau OK, il était hors-ligne pendant:
|
|
||||||
%LAST_OFFLINE_DURATION%<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Date:
|
|
||||||
%DATE%',
|
|
||||||
'combi_off_email_message' => '<ul><li>Serveur : %LABEL%</li><li>IP : %IP%</li><li>Port :
|
|
||||||
%PORT%</li><li>Erreur : %ERROR%</li><li>Date : %DATE%</li></ul>',
|
|
||||||
'combi_off_pushover_message' => '<ul><li>Serveur : %LABEL%</li><li>IP : %IP%</li><li>Port :
|
|
||||||
%PORT%</li><li>Erreur : %ERROR%</li><li>Date : %DATE%</li></ul>',
|
|
||||||
'combi_off_telegram_message' => '- Serveur : %LABEL%<br>- IP : %IP%<br>- Port : %PORT%<br>-
|
|
||||||
Erreur : %ERROR%<br>- Date : %DATE%<br><br>',
|
|
||||||
'combi_on_email_message' => '<ul><li>Serveur : %LABEL%</li><li>IP : %IP%</li><li>Port :
|
|
||||||
%PORT%</li><li>Durée : %LAST_OFFLINE_DURATION%</li><li>Date :
|
|
||||||
%DATE%</li></ul>',
|
|
||||||
'combi_on_pushover_message' => '<ul><li>Serveur : %LABEL%</li><li>IP : %IP%</li><li>Port :
|
|
||||||
%PORT%</li><li>Durée : %LAST_OFFLINE_DURATION%</li><li>Date :
|
|
||||||
%DATE%</li></ul>',
|
|
||||||
'combi_on_telegram_message' => '- Serveur : %LABEL%<br>- IP: %IP%<br>- Port : %PORT%<br>-
|
|
||||||
Durée : %LAST_OFFLINE_DURATION%<br>- Date : %DATE%<br><br>',
|
|
||||||
'combi_email_subject' => 'IMPORTANT : \'%UP%\' serveur(s) de nouveau en ligne, \'%DOWN%\'
|
|
||||||
hors-ligne',
|
|
||||||
'combi_pushover_subject' => '\'%UP%\' serveur(s) de nouveaux en ligne, \'%DOWN%\' serveur(s) hors-ligne',
|
|
||||||
'combi_email_message' => '<b>Le(s) serveur(s) suivant(s) hors-ligne :</b><br>%DOWN_SERVERS%<br><b>Le(s)
|
|
||||||
serveur(s) suivant(s) en ligne :</b><br>%UP_SERVERS%',
|
|
||||||
'combi_pushover_message' => '<b>Le(s) serveur(s) suivant(s) hors-ligne :</b><br>%DOWN_SERVERS%<br><b>Le(s)
|
|
||||||
serveur(s) suivant(s) en ligne :</b><br>%UP_SERVERS%',
|
|
||||||
'combi_telegram_message' => '<b>Le(s) serveur(s) suivant(s) hors-ligne :</b><br>%DOWN_SERVERS%<br><b>Le(s)
|
|
||||||
serveur(s) suivant(s) en ligne :</b><br>%UP_SERVERS%',
|
|
||||||
),
|
),
|
||||||
'login' => array(
|
'login' => array(
|
||||||
'welcome_usermenu' => 'Bonjour %user_name%',
|
'welcome_usermenu' => 'Bonjour %user_name%',
|
||||||
'title_sign_in' => 'Connectez vous SVP',
|
'title_sign_in' => 'Connectez vous SVP',
|
||||||
'title_forgot' => 'Mot de passe oublié ?',
|
'title_forgot' => 'Mot de passe oublié ?',
|
||||||
'title_reset' => 'Réinitialisation du mot de passe',
|
'title_reset' => 'Réinitialisation du mot de passe',
|
||||||
'submit' => 'Envoyer',
|
'submit' => 'Envoyer',
|
||||||
'remember_me' => 'Se souvenir de moi',
|
'remember_me' => 'Se vouvenir de moi',
|
||||||
'login' => 'Connexion',
|
'login' => 'Connexion',
|
||||||
'logout' => 'Déconnexion',
|
'logout' => 'Déconnexion',
|
||||||
'username' => 'Nom',
|
'username' => 'Nom',
|
||||||
'password' => 'Mot de passe',
|
'password' => 'Mot de passe',
|
||||||
'password_repeat' => 'Répéter le mot de passe',
|
'password_repeat' => 'Répéter le mot de passe',
|
||||||
'password_forgot' => 'Mot de passe oublié ?',
|
'password_forgot' => 'Mot de passe oublié ?',
|
||||||
'password_reset' => 'Réinitialiser le mot de passe',
|
'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_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.
|
'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%',
|
||||||
Veuillez noter qu\'il expire dans une heure.<br><br>%link%',
|
|
||||||
'error_user_incorrect' => 'Nom d\'utilisateur invalide.',
|
'error_user_incorrect' => 'Nom d\'utilisateur invalide.',
|
||||||
'error_login_incorrect' => 'Informations incorrectes.',
|
'error_login_incorrect' => 'Informations incorrectes.',
|
||||||
'error_login_passwords_nomatch' => 'Mot de passe invalide.',
|
'error_login_passwords_nomatch' => 'Mot de passe invalide.',
|
||||||
'error_reset_invalid_link' => 'Le lien d\'initialisation du mot de passe n\'est pas valide.',
|
'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_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é.',
|
'success_password_reset' => 'Votre mot de passe a été réinitialisé.',
|
||||||
),
|
),
|
||||||
'error' => array(
|
'error' => array(
|
||||||
'401_unauthorized' => 'Non autorisée',
|
'401_unauthorized' => 'Unauthorized',
|
||||||
'401_unauthorized_description' => 'Vous n\'avez pas les privilèges nécessaires pour voir cette page.',
|
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -20,7 +19,7 @@
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Marco Gargani <http://www.marcogargani.it>
|
* @author Marco Gargani <http://www.marcogargani.it>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
|
@ -28,17 +27,10 @@
|
||||||
|
|
||||||
$sm_lang = array(
|
$sm_lang = array(
|
||||||
'name' => 'Italiano - Italian',
|
'name' => 'Italiano - Italian',
|
||||||
'locale' => array(
|
'locale' => array('it_IT.UTF-8', 'it_IT', 'italian', 'ita'),
|
||||||
'0' => 'it_IT.UTF-8',
|
|
||||||
'1' => 'it_IT',
|
|
||||||
'2' => 'italian',
|
|
||||||
'3' => 'ita',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'it',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
'system' => array(
|
||||||
'title' => 'Server Monitor',
|
'title' => 'Server Monitor',
|
||||||
'install' => 'Installa',
|
'install' => 'Install',
|
||||||
'action' => 'Azione',
|
'action' => 'Azione',
|
||||||
'save' => 'Salva',
|
'save' => 'Salva',
|
||||||
'edit' => 'Modifica',
|
'edit' => 'Modifica',
|
||||||
|
@ -48,32 +40,30 @@ $sm_lang = array(
|
||||||
'yes' => 'Sì',
|
'yes' => 'Sì',
|
||||||
'no' => 'No',
|
'no' => 'No',
|
||||||
'insert' => 'Inserisci',
|
'insert' => 'Inserisci',
|
||||||
'add_new' => 'Aggiungi Nuovo',
|
'add_new' => 'Aggiungi Nuovo?',
|
||||||
'update_available' => 'Una nuova versione ({version}) è disponibile su <a
|
'update_available' => 'Un nuovo aggiornamento ({version}) è disponibile su <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
'back_to_top' => 'Back to top',
|
||||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
'go_back' => 'Go back',
|
||||||
'back_to_top' => 'Torna su',
|
|
||||||
'go_back' => 'Indietro',
|
|
||||||
'ok' => 'OK',
|
'ok' => 'OK',
|
||||||
'cancel' => 'Annulla',
|
'cancel' => 'Cancel',
|
||||||
'short_day_format' => '%e %B',
|
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||||
'long_day_format' => '%e %B %Y',
|
'short_day_format' => '%B %e',
|
||||||
'yesterday_format' => 'Ieri alle %H:%M',
|
'long_day_format' => '%B %e, %Y',
|
||||||
'other_day_format' => '%A alle %H:%M',
|
'yesterday_format' => 'Yesterday at %k:%M',
|
||||||
'never' => 'Mai',
|
'other_day_format' => '%A at %k:%M',
|
||||||
'hours_ago' => '%d ore fa',
|
'never' => 'Never',
|
||||||
'an_hour_ago' => 'circa un ora fa',
|
'hours_ago' => '%d hours ago',
|
||||||
'minutes_ago' => '%d minuti fa',
|
'an_hour_ago' => 'about an hour ago',
|
||||||
'a_minute_ago' => 'circa un minuto fa',
|
'minutes_ago' => '%d minutes ago',
|
||||||
'seconds_ago' => '%d secondi fa',
|
'a_minute_ago' => 'about a minute ago',
|
||||||
'a_second_ago' => 'un secondo fa',
|
'seconds_ago' => '%d seconds ago',
|
||||||
'seconds' => 'secondi',
|
'a_second_ago' => 'a second ago',
|
||||||
),
|
),
|
||||||
'menu' => array(
|
'menu' => array(
|
||||||
'config' => 'Configurazione',
|
'config' => 'Configurazione',
|
||||||
'server' => 'Servers',
|
'server' => 'Servers',
|
||||||
'server_log' => 'Log',
|
'server_log' => 'Log',
|
||||||
'server_status' => 'Stato',
|
'server_status' => 'Status',
|
||||||
'server_update' => 'Aggiorna',
|
'server_update' => 'Aggiorna',
|
||||||
'user' => 'Utenti',
|
'user' => 'Utenti',
|
||||||
'help' => 'Aiuto',
|
'help' => 'Aiuto',
|
||||||
|
@ -81,42 +71,37 @@ $sm_lang = array(
|
||||||
'users' => array(
|
'users' => array(
|
||||||
'user' => 'Utente',
|
'user' => 'Utente',
|
||||||
'name' => 'Nome',
|
'name' => 'Nome',
|
||||||
'user_name' => 'Nome utente',
|
'user_name' => 'Username',
|
||||||
'password' => 'Password',
|
'password' => 'Password',
|
||||||
'password_repeat' => 'Ripeti password',
|
'password_repeat' => 'Password repeat',
|
||||||
'password_leave_blank' => 'Lascia vuoto per non modificare',
|
'password_leave_blank' => 'Leave blank to keep unchanged',
|
||||||
'level' => 'Livello',
|
'level' => 'Level',
|
||||||
'level_10' => 'Amministratore',
|
'level_10' => 'Administrator',
|
||||||
'level_20' => 'Utente',
|
'level_20' => 'User',
|
||||||
'level_description' => 'Gli <b>Amministratori</b> hanno pieno accesso: possono gestire server, utenti e
|
'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.',
|
||||||
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',
|
'mobile' => 'Cellulare',
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'pushover_description' => 'Pushover è un servizio che rende semplice ottenere notifiche in tempo reale. Vedi
|
'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.',
|
||||||
<a href="https://pushover.net/">il loro sito web</a> per maggiori informazioni.',
|
|
||||||
'pushover_key' => 'Pushover Key',
|
'pushover_key' => 'Pushover Key',
|
||||||
'pushover_device' => 'Dispositivo Pushover',
|
'pushover_device' => 'Pushover Device',
|
||||||
'pushover_device_description' => 'Nome del dispositivo a cui inviare il messaggio. Lascia vuoto per inviarlo a
|
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||||
tutti i dispositivi.',
|
'delete_title' => 'Delete User',
|
||||||
'delete_title' => 'Elimina Utente',
|
'delete_message' => 'Are you sure you want to delete user \'%1\'?',
|
||||||
'delete_message' => 'Sei sicuro di voler eliminare l\'utente \'%1\'?',
|
'deleted' => 'User deleted.',
|
||||||
'deleted' => 'Utente eliminato.',
|
|
||||||
'updated' => 'Utente aggiornato.',
|
'updated' => 'Utente aggiornato.',
|
||||||
'inserted' => 'Utente aggiunto.',
|
'inserted' => 'Utente aggiunto.',
|
||||||
'profile' => 'Profilo',
|
'profile' => 'Profile',
|
||||||
'profile_updated' => 'Il tuo profilo è stato aggiornato.',
|
'profile_updated' => 'Your profile has been updated.',
|
||||||
'error_user_name_bad_length' => 'Il nome utente deve essere composto da almeno 2 caratteri (massimo 64).',
|
'error_user_name_bad_length' => 'Usernames must be between 2 and 64 characters.',
|
||||||
'error_user_name_invalid' => 'Lo username può contenere solo caratteri alfabetici (a-z, A-Z), numeri (0-9),
|
'error_user_name_invalid' => 'The username may only contain alphabetic characters (a-z, A-Z), digits (0-9) and underscores (_).',
|
||||||
il punto (.) ed la sottolineatura (_).',
|
'error_user_name_exists' => 'The given username already exists in the database.',
|
||||||
'error_user_name_exists' => 'Nome utente già in uso.',
|
'error_user_email_bad_length' => 'Email addresses must be between 5 and 255 characters.',
|
||||||
'error_user_email_bad_length' => 'L\'indirizzo Email deve essere composto da 5 a 255 caratteri.',
|
'error_user_email_invalid' => 'The email address is invalid.',
|
||||||
'error_user_email_invalid' => 'Indirizzo Email non valido.',
|
'error_user_level_invalid' => 'The given user level is invalid.',
|
||||||
'error_user_level_invalid' => 'Livello utente non valido.',
|
'error_user_no_match' => 'The user could not be found in the database.',
|
||||||
'error_user_no_match' => 'L\'utente non è stato trovato nel database.',
|
'error_user_password_invalid' => 'The entered password is invalid.',
|
||||||
'error_user_password_invalid' => 'La password inserita non è valida.',
|
'error_user_password_no_match' => 'The entered passwords do not match.',
|
||||||
'error_user_password_no_match' => 'Le password inserite non corrispondono.',
|
|
||||||
),
|
),
|
||||||
'log' => array(
|
'log' => array(
|
||||||
'title' => 'Righe log',
|
'title' => 'Righe log',
|
||||||
|
@ -125,198 +110,188 @@ $sm_lang = array(
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'no_logs' => 'Nessun log',
|
'no_logs' => 'No logs',
|
||||||
'clear' => 'Pulisci il registro',
|
|
||||||
'delete_title' => 'Elimina log',
|
|
||||||
'delete_message' => 'Sei sicuro di voler eliminare <b>tutti</b> i registri?',
|
|
||||||
),
|
),
|
||||||
'servers' => array(
|
'servers' => array(
|
||||||
'server' => 'Server',
|
'server' => 'Server',
|
||||||
'status' => 'Stato',
|
'status' => 'Status',
|
||||||
'label' => 'Nome',
|
'label' => 'Nome',
|
||||||
'domain' => 'Dominio/IP',
|
'domain' => 'Dominio/IP',
|
||||||
'timeout' => 'Timeout',
|
'timeout' => 'Timeout',
|
||||||
'timeout_description' => 'Numero di secondi da attendere per la risposta del server.',
|
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||||
'port' => 'Porta',
|
'port' => 'Porta',
|
||||||
'type' => 'Tipo',
|
'type' => 'Tipo',
|
||||||
'type_website' => 'Sito web',
|
'type_website' => 'Website',
|
||||||
'type_service' => 'Servizio',
|
'type_service' => 'Service',
|
||||||
'pattern' => 'Cerca stringa/pattern',
|
'pattern' => 'Search string/pattern',
|
||||||
'pattern_description' => 'Se questo pattern non è trovato nel sito web, il server verrà contrassegnato come
|
'pattern_description' => 'If this pattern is not found on the website, the server will be marked offline. Regular expressions are allowed.',
|
||||||
fuori linea. Le espressioni regolari sono consentite.',
|
|
||||||
'last_check' => 'Ultimo Controllo',
|
'last_check' => 'Ultimo Controllo',
|
||||||
'last_online' => 'Ultima volta Online',
|
'last_online' => 'Ultima volta Online',
|
||||||
'last_offline' => 'Ultima volta offline',
|
'monitoring' => 'Sotto Controllo',
|
||||||
'monitoring' => 'Monitoraggio',
|
'no_monitoring' => 'No monitoring',
|
||||||
'no_monitoring' => 'Non monitorato',
|
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'send_email' => 'Invia Email',
|
'send_email' => 'Invia Email',
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'send_sms' => 'Invia SMS',
|
'send_sms' => 'Invia SMS',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'users' => 'Utenti',
|
'users' => 'Users',
|
||||||
'delete_title' => 'Elimina Server',
|
'delete_title' => 'Delete Server',
|
||||||
'delete_message' => 'Sei sicuro di voler eliminare il server \'%1\'?',
|
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
|
||||||
'deleted' => 'Server eliminato.',
|
'deleted' => 'Server deleted.',
|
||||||
'updated' => 'Server aggiornato.',
|
'updated' => 'Server aggiornato.',
|
||||||
'inserted' => 'Server aggiunto.',
|
'inserted' => 'Server aggiunto.',
|
||||||
'latency' => 'Tempo di risposta',
|
'latency' => 'Tempo di risposta',
|
||||||
'latency_max' => 'Tempo di risposta (massimo)',
|
'latency_max' => 'Tempo di risposta (maximum)',
|
||||||
'latency_min' => 'Tempo di risposta (minimo)',
|
'latency_min' => 'Tempo di risposta (minimum)',
|
||||||
'latency_avg' => 'Tempo di risposta (medio)',
|
'latency_avg' => 'Tempo di risposta (average)',
|
||||||
'uptime' => 'Uptime',
|
'uptime' => 'Uptime',
|
||||||
'year' => 'Anno',
|
'year' => 'Year',
|
||||||
'month' => 'Mese',
|
'month' => 'Month',
|
||||||
'week' => 'Settimana',
|
'week' => 'Week',
|
||||||
'day' => 'Giorno',
|
'day' => 'Day',
|
||||||
'hour' => 'Ora',
|
'hour' => 'Hour',
|
||||||
'warning_threshold' => 'Soglia di allarme',
|
'warning_threshold' => 'Warning threshold',
|
||||||
'warning_threshold_description' => 'Numero richiesto di verifiche fallite prima di ritenerlo fuori linea.',
|
'warning_threshold_description' => 'Number of failed checks required before it is marked offline.',
|
||||||
'chart_last_week' => 'Ultima settimana',
|
'chart_last_week' => 'Last week',
|
||||||
'chart_history' => 'Cronologia',
|
'chart_history' => 'History',
|
||||||
'chart_day_format' => '%d-%m-%Y',
|
// Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html
|
||||||
'chart_long_date_format' => '%d-%m-%Y %H:%M:%S',
|
'chart_day_format' => '%Y-%m-%d',
|
||||||
'chart_short_date_format' => '%d/%m %H:%M',
|
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||||
|
'chart_short_date_format' => '%m/%d %H:%M',
|
||||||
'chart_short_time_format' => '%H:%M',
|
'chart_short_time_format' => '%H:%M',
|
||||||
'warning_notifications_disabled_sms' => 'Le notifiche SMS sono disabilitate.',
|
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||||
'warning_notifications_disabled_email' => 'Le notifiche Email sono disabilitate.',
|
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||||
'warning_notifications_disabled_pushover' => 'Le notifiche Pushover sono disabilitate.',
|
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||||
'error_server_no_match' => 'Server non trovato.',
|
'error_server_no_match' => 'Server not found.',
|
||||||
'error_server_label_bad_length' => 'L\'etichetta deve contenere da 1 a 255 caratteri.',
|
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
||||||
'error_server_ip_bad_length' => 'Il dominio / IP deve contenere da 1 a 255 caratteri.',
|
'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.',
|
||||||
'error_server_ip_bad_service' => 'L\'indirizzo IP non è valido.',
|
'error_server_ip_bad_service' => 'The IP address is not valid.',
|
||||||
'error_server_ip_bad_website' => 'L\'indirizzo URL del sito web non è valido.',
|
'error_server_ip_bad_website' => 'The website URL is not valid.',
|
||||||
'error_server_type_invalid' => 'Tipologia di server selezionata non valida.',
|
'error_server_type_invalid' => 'The selected server type is invalid.',
|
||||||
'error_server_warning_threshold_invalid' => 'La soglia d\'allarme deve essere un numero intero valido,
|
'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
|
||||||
superiore a zero.',
|
|
||||||
),
|
),
|
||||||
'config' => array(
|
'config' => array(
|
||||||
'general' => 'Generale',
|
'general' => 'Generale',
|
||||||
'language' => 'Linguaggio',
|
'language' => 'Linguaggio',
|
||||||
'show_update' => 'Controllare per nuovi aggiornamenti?',
|
'show_update' => 'Controllare settimanalmente per nuovi aggiornamenti?',
|
||||||
'email_status' => 'Permetti invio email',
|
'email_status' => 'Permetti invio email?',
|
||||||
'email_from_email' => 'Indirizzo Email mittente',
|
'email_from_email' => 'Indirizzo Email mittente',
|
||||||
'email_from_name' => 'Nome Email mittente',
|
'email_from_name' => 'Nome Email mittente',
|
||||||
'email_smtp' => 'Abilita SMTP',
|
'email_smtp' => 'Enable SMTP',
|
||||||
'email_smtp_host' => 'Server SMTP',
|
'email_smtp_host' => 'SMTP host',
|
||||||
'email_smtp_port' => 'Porta SMTP',
|
'email_smtp_port' => 'SMTP port',
|
||||||
'email_smtp_security' => 'Sicurezza SMTP',
|
'email_smtp_username' => 'SMTP username',
|
||||||
'email_smtp_security_none' => 'Nessuna',
|
'email_smtp_password' => 'SMTP password',
|
||||||
'email_smtp_username' => 'Nome utente SMTP',
|
'email_smtp_noauth' => 'Leave blank for no authentication',
|
||||||
'email_smtp_password' => 'Password SMTP',
|
'sms_status' => 'Permetti invio SMS?',
|
||||||
'email_smtp_noauth' => 'Lasciare vuoto per nessuna autentificazione',
|
|
||||||
'sms_status' => 'Permetti invio SMS',
|
|
||||||
'sms_gateway' => 'Gateway da usare per inviare 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_username' => 'Nome Utente Gateway',
|
||||||
'sms_gateway_password' => 'Password Gateway',
|
'sms_gateway_password' => 'Password Gateway',
|
||||||
'sms_from' => 'Numero di telefono del mittente',
|
'sms_from' => 'Numero di telefono del mittente',
|
||||||
'pushover_status' => 'Permetti invio messaggi da Pushover',
|
'pushover_status' => 'Allow sending Pushover messages',
|
||||||
'pushover_description' => 'Pushover è un servizio che rende semplice ottenere notifiche in tempo reale. Vedi
|
'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.',
|
||||||
<a href="https://pushover.net/">il loro sito web</a> per maggiori informazioni.',
|
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||||
'pushover_clone_app' => 'Clicca qui per creare la tua Pushover app',
|
|
||||||
'pushover_api_token' => 'Pushover App API Token',
|
'pushover_api_token' => 'Pushover App API Token',
|
||||||
'pushover_api_token_description' => 'Prima di poter usare Pushover, devi <a href="%1$s" target="_blank"
|
'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.',
|
||||||
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' => 'Seleziona quando vuoi essere notificato',
|
||||||
'alert_type_description' => '<b>Cambio di Stato:</b> Riceverai una notifica solo quando un server cambierà
|
'alert_type_description' => '<b>Cambio di Stato:</b> '.
|
||||||
stato. Quindi da online -> offline oppure da offline -> online.<br><br /><b>Fuori
|
'Riceverai una notifica solo quando un server cambierà stato. Quindi da online -> offline oppure da offline -> online.<br/>'.
|
||||||
linea:</b> Riceverai una notifica solo quando un server andrà offline *SOLO LA
|
'<br /><b>Offline:</b> '.
|
||||||
PRIMA VOLTA*. Per esempio, Se il tuo cronjob è impostato per controllare ogni 15
|
'Riceverai una notifica solo quando un server andrà offline *SOLO LA PRIMA VOLTA*. Per esempio, '.
|
||||||
min e il tuo server andrà offline dalle 2AM alle 6AM. Riceverai una sola
|
'Se il tuo cronjob è impostato per controllare ogni 15 min e il tuo server andrà offline dalle 2AM alle 6AM. '.
|
||||||
notifica alle 2AM e nient\'altro.<br><br><b>Sempre:</b> Riceverai una notifica
|
'Riceverai una sola notifica alle 2AM e nient\'altro.<br/>'.
|
||||||
ogni volta che lo script troverà un server down anche se è stato offline per
|
'<br><b>Sempre:</b> '.
|
||||||
ore.',
|
'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_status' => 'Cambio di Stato',
|
||||||
'alert_type_offline' => 'Fuori linea',
|
'alert_type_offline' => 'Offline',
|
||||||
'alert_type_always' => 'Sempre',
|
'alert_type_always' => 'Sempre',
|
||||||
'log_status' => 'Stato Log',
|
'log_status' => 'Stato Log',
|
||||||
'log_status_description' => 'Se lo Stato Log è impostato su VERO, il monitor registrerà nel log gli eventi
|
'log_status_description' => 'Se lo Stato Log è impostato su VERO, il monitor registrerà nel log gli eventi appena le notifiche verranno inviate.',
|
||||||
appena le notifiche verranno inviate.',
|
'log_email' => 'Registra email inviate dallo script.',
|
||||||
'log_email' => 'Registra email inviate dal sistema.',
|
'log_sms' => 'Registra SMS inviati dallo script.',
|
||||||
'log_sms' => 'Registra SMS inviati dal sistema.',
|
'log_pushover' => 'Log pushover messages sent by the script',
|
||||||
'log_pushover' => 'Registra messaggi Pushover inviati dal sistema',
|
|
||||||
'updated' => 'La configurazione è stato aggiornata.',
|
'updated' => 'La configurazione è stato aggiornata.',
|
||||||
'tab_email' => 'Email',
|
'tab_email' => 'Email',
|
||||||
'tab_sms' => 'SMS',
|
'tab_sms' => 'SMS',
|
||||||
'tab_pushover' => 'Pushover',
|
'tab_pushover' => 'Pushover',
|
||||||
'settings_email' => 'Impostazioni Email',
|
'settings_email' => 'Impostazioni Email',
|
||||||
'settings_sms' => 'Impostazioni SMS',
|
'settings_sms' => 'Impostazioni SMS',
|
||||||
'settings_pushover' => 'Impostazioni Pushover',
|
'settings_pushover' => 'Pushover settings',
|
||||||
'settings_notification' => 'Impostazioni Notifiche',
|
'settings_notification' => 'Impostazioni Notifiche',
|
||||||
'settings_log' => 'Impostazioni Log',
|
'settings_log' => 'Impostazioni Log',
|
||||||
'auto_refresh' => 'Auto-Aggiornamento',
|
'auto_refresh' => 'Auto-Aggiorna pagina servers',
|
||||||
'auto_refresh_description' => 'Auto-Aggiornamento pagina servers.<br><span class="small">Tempo in secondi, se
|
'auto_refresh_servers' =>
|
||||||
impostato a 0 la pagina non si aggiornerà.</span>',
|
'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' => 'Test',
|
||||||
'test_email' => 'Un Email verrà inviata all\'indirizzo specificato nel tuo profilo.',
|
'test_email' => 'An email will be sent to the address specified in your user profile.',
|
||||||
'test_sms' => 'Un SMS verrà inviato al numero di telefono specificato nel tuo profilo.',
|
'test_sms' => 'An SMS will be sent to the phone number specified in your user profile.',
|
||||||
'test_pushover' => 'Una notifica Pushover verrà inviata al dispositivo specificato nel tuo profilo.',
|
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||||
'send' => 'Invia',
|
'send' => 'Send',
|
||||||
'test_subject' => 'Test',
|
'test_subject' => 'Test',
|
||||||
'test_message' => 'Messaggio di test',
|
'test_message' => 'Test message',
|
||||||
'email_sent' => 'Email inviata',
|
'email_sent' => 'Email sent',
|
||||||
'email_error' => 'Errore in invio Email',
|
'email_error' => 'Error in email sending',
|
||||||
'sms_sent' => 'SMS inviato',
|
'sms_sent' => 'Sms sent',
|
||||||
'sms_error' => 'Errore in invio SMS. %s',
|
'sms_error' => 'Error in sms sending',
|
||||||
'sms_error_nomobile' => 'Impossibile inviare SMS: nessun numero di telefono valido inserito nel tuo profilo.',
|
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||||
'pushover_sent' => 'Notifica Pushover inviata',
|
'pushover_sent' => 'Pushover notification sent',
|
||||||
'pushover_error' => 'Riscontrato un errore durante l\'invio della notifica Pushover: %s',
|
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||||
'pushover_error_noapp' => 'Impossibile inviare la notifica: nessun \'Pushover App API Token\' inserito nella
|
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||||
configurazione globale.',
|
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||||
'pushover_error_nokey' => 'Impossibile inviare la notifica: nessuna \'Pushover Key\' inserita nel tuo profilo.',
|
'log_retention_period' => 'Log retention period',
|
||||||
'log_retention_period' => 'Periodo conservazione Log',
|
'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_period_description' => 'Numero di giorni per la conservazione dei log delle notifiche e
|
'log_retention_days' => 'days',
|
||||||
risultati monitoraggio. Inserire 0 (zero) per disabilitare la
|
|
||||||
cancellazione dei log.',
|
|
||||||
'log_retention_days' => 'giorni',
|
|
||||||
),
|
),
|
||||||
|
// for newlines in the email messages use <br/>
|
||||||
'notifications' => array(
|
'notifications' => array(
|
||||||
'off_sms' => 'Server \'%LABEL%\' INATTIVO: ip=%IP%, porta=%PORT%. Errore=%ERROR%',
|
'off_sms' => 'Server \'%LABEL%\' è DOWN: ip=%IP%, porta=%PORT%. Errore=%ERROR%',
|
||||||
'off_email_subject' => 'IMPORTANTE: Il Server \'%LABEL%\' è INATTIVO',
|
'off_email_subject' => 'IMPORTANTE: Server \'%LABEL%\' è DOWN',
|
||||||
'off_email_body' => 'Impossibile connettersi al seguente server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Porta:
|
'off_email_body' => "Impossibile connettersi al seguente server:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Porta: %PORT%<br/>Errore: %ERROR%<br/>Data: %DATE%",
|
||||||
%PORT%<br>Errore: %ERROR%<br>Data: %DATE%',
|
'off_pushover_title' => 'Server \'%LABEL%\' è DOWN',
|
||||||
'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%",
|
||||||
'off_pushover_message' => 'Impossibile connettersi al seguente server:<br><br>Server: %LABEL%<br>IP:
|
'on_sms' => 'Server \'%LABEL%\' è ATTIVO: ip=%IP%, porta=%PORT%',
|
||||||
%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_subject' => 'IMPORTANTE: Server \'%LABEL%\' è ATTIVO',
|
||||||
'on_email_body' => 'Server \'%LABEL%\' è di nuovo attivo, it was down for
|
'on_email_body' => "Server '%LABEL%' è di nuovo attivo:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Porta: %PORT%<br/>Data: %DATE%",
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Porta: %PORT%<br>Data:
|
'on_pushover_title' => 'Server \'%LABEL%\' è ATTIVO',
|
||||||
%DATE%',
|
'on_pushover_message' => "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, it was down for
|
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Porta:
|
|
||||||
%PORT%<br>Data: %DATE%',
|
|
||||||
),
|
),
|
||||||
'login' => array(
|
'login' => array(
|
||||||
'welcome_usermenu' => 'Benvenuto, %user_name%',
|
'welcome_usermenu' => 'Welcome, %user_name%',
|
||||||
'title_sign_in' => 'Registrati',
|
'title_sign_in' => 'Please sign in',
|
||||||
'title_forgot' => 'Password dimenticata?',
|
'title_forgot' => 'Forgot your password?',
|
||||||
'title_reset' => 'Reimposta la tua password',
|
'title_reset' => 'Reset your password',
|
||||||
'submit' => 'Invia',
|
'submit' => 'Submit',
|
||||||
'remember_me' => 'Ricordami',
|
'remember_me' => 'Remember me',
|
||||||
'login' => 'Accedi',
|
'login' => 'Login',
|
||||||
'logout' => 'Uscita',
|
'logout' => 'Logout',
|
||||||
'username' => 'Nome utente',
|
'username' => 'Username',
|
||||||
'password' => 'Password',
|
'password' => 'Password',
|
||||||
'password_repeat' => 'Ripeti password',
|
'password_repeat' => 'Repeat password',
|
||||||
'password_forgot' => 'Password dimenticata?',
|
'password_forgot' => 'Forgot password?',
|
||||||
'password_reset' => 'Reimposta password',
|
'password_reset' => 'Reset password',
|
||||||
'password_reset_email_subject' => 'Reimpossta la tua password per PHP Server Monitor',
|
'password_reset_email_subject' => 'Reset your password for PHP Server Monitor',
|
||||||
'password_reset_email_body' => 'Usa il seguente link per reimpostare la tua password. Ricordati che scade tra
|
'password_reset_email_body' => 'Please use the following link to reset your password. Please note it expires in 1 hour.<br/><br/>%link%',
|
||||||
un ora.<br><br>%link%',
|
'error_user_incorrect' => 'The provided username could not be found.',
|
||||||
'error_user_incorrect' => 'Il nome utente inserito non è staot trovato.',
|
'error_login_incorrect' => 'The information is incorrect.',
|
||||||
'error_login_incorrect' => 'Le informazioni sono errate.',
|
'error_login_passwords_nomatch' => 'The provided passwords do not match.',
|
||||||
'error_login_passwords_nomatch' => 'Le password inserite non sono valide.',
|
'error_reset_invalid_link' => 'The reset link you provided is invalid.',
|
||||||
'error_reset_invalid_link' => 'Il link di reimpostazione password non è valido.',
|
'success_password_forgot' => 'An email has been sent to you with information how to reset your password.',
|
||||||
'success_password_forgot' => 'Ti è stata inviata un\'Email con le istruzioni da seguire per reimpostare la
|
'success_password_reset' => 'Your password has been reset successfully. Please login.',
|
||||||
tua password.',
|
|
||||||
'success_password_reset' => 'La tua password è stata correttamente reimpostata. Ora puoi effettuare
|
|
||||||
l\'accesso.',
|
|
||||||
),
|
),
|
||||||
'error' => array(
|
'error' => array(
|
||||||
'401_unauthorized' => 'Non autorizzato',
|
'401_unauthorized' => 'Unauthorized',
|
||||||
'401_unauthorized_description' => 'Non hai i permessi necessari per visualizzare questa pagina.',
|
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,458 +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@mailbox.org>
|
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
|
||||||
* @version Release: v3.2.0
|
|
||||||
* @link http://www.phpservermonitor.org/
|
|
||||||
**/
|
|
||||||
|
|
||||||
$sm_lang = array(
|
|
||||||
'name' => '日本語 - Japanese',
|
|
||||||
'locale' => array(
|
|
||||||
'0' => 'ja_JP.UTF-8',
|
|
||||||
'1' => 'ja_JP',
|
|
||||||
'2' => 'Japan',
|
|
||||||
'3' => 'Japanese',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'ja',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
|
||||||
'title' => 'サーバーモニター',
|
|
||||||
'install' => 'インストール',
|
|
||||||
'action' => 'アクション',
|
|
||||||
'save' => 'セーブ',
|
|
||||||
'edit' => '編集',
|
|
||||||
'delete' => '削除',
|
|
||||||
'date' => '日時',
|
|
||||||
'message' => 'メッセージ',
|
|
||||||
'yes' => 'はい',
|
|
||||||
'no' => 'いいえ',
|
|
||||||
'insert' => '挿入',
|
|
||||||
'add_new' => '新規に追加',
|
|
||||||
'update_available' => '新しいバージョン({version})
|
|
||||||
がリリースされています。ここから入手可能です: <a
|
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
|
||||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
|
||||||
'back_to_top' => 'トップに戻る',
|
|
||||||
'go_back' => '戻る',
|
|
||||||
'ok' => 'OK',
|
|
||||||
'bad' => 'よくない',
|
|
||||||
'cancel' => 'キャンセル',
|
|
||||||
'none' => 'なし',
|
|
||||||
'activate' => '有効化',
|
|
||||||
'short_day_format' => '%B %e',
|
|
||||||
'long_day_format' => '%B %e, %Y',
|
|
||||||
'yesterday_format' => '昨日の %k:%M',
|
|
||||||
'other_day_format' => '%A の %k:%M',
|
|
||||||
'never' => 'なし',
|
|
||||||
'hours_ago' => '%d 時間前',
|
|
||||||
'an_hour_ago' => '1時間くらい前',
|
|
||||||
'minutes_ago' => '%d 分前',
|
|
||||||
'a_minute_ago' => '1分くらい前',
|
|
||||||
'seconds_ago' => '%d 秒前',
|
|
||||||
'a_second_ago' => '<1秒',
|
|
||||||
'year' => '年',
|
|
||||||
'years' => '年',
|
|
||||||
'month' => '月',
|
|
||||||
'months' => '月',
|
|
||||||
'day' => '日',
|
|
||||||
'days' => '日',
|
|
||||||
'hour' => '時間',
|
|
||||||
'hours' => '時間',
|
|
||||||
'minute' => '分',
|
|
||||||
'minutes' => '分',
|
|
||||||
'second' => '秒',
|
|
||||||
'seconds' => '秒',
|
|
||||||
),
|
|
||||||
'menu' => array(
|
|
||||||
'config' => '設定',
|
|
||||||
'server' => 'サーバー',
|
|
||||||
'server_log' => 'ログ',
|
|
||||||
'server_status' => 'ステータス',
|
|
||||||
'server_update' => 'アップデート',
|
|
||||||
'user' => 'ユーザー',
|
|
||||||
'help' => 'ヘルプ',
|
|
||||||
),
|
|
||||||
'users' => array(
|
|
||||||
'user' => 'ユーザー',
|
|
||||||
'name' => '名前',
|
|
||||||
'user_name' => 'ユーザーネーム',
|
|
||||||
'password' => 'パスワード',
|
|
||||||
'password_repeat' => 'パスワードを繰り返す',
|
|
||||||
'password_leave_blank' => '空白のままにしておく',
|
|
||||||
'level' => 'レベル',
|
|
||||||
'level_10' => '管理者(Administrator)',
|
|
||||||
'level_20' => 'ユーザー(User)',
|
|
||||||
'level_description' => '<b>管理者(Administrator)</b>
|
|
||||||
はフルアクセス権があります:サーバーの管理、
|
|
||||||
ユーザーとグローバル設定を変更できます。<br><b>ユーザー(Users)</b>は、割り当てられたサーバーのアップデータのみを表示して実行できます。',
|
|
||||||
'mobile' => 'モバイル',
|
|
||||||
'email' => 'メールアドレス',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'pushover_description' => 'Pushoverサービスは、リアルタイムで通知を受け取るのが簡単にできます。詳細についてはこちらをご覧ください:
|
|
||||||
<a href="https://pushover.net/" target="_blank"
|
|
||||||
rel="noopener">https://pushover.net/</a>',
|
|
||||||
'pushover_key' => 'Pushoverキー',
|
|
||||||
'pushover_device' => 'Pushoverデバイス',
|
|
||||||
'pushover_device_description' => '指定したデバイスに送信します。空欄ですべてのデバイスに送信できます。',
|
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank" rel="noopener">Telegram</a>
|
|
||||||
はチャットアプリで、簡単にリアルタイム通知を受け取ることができます。
|
|
||||||
<a href="http://docs.phpservermonitor.org/" target="_blank"
|
|
||||||
rel="noopener">ドキュメント</a>
|
|
||||||
で詳しい情報、インストールの方法を知りましょう。',
|
|
||||||
'telegram_chat_id' => 'Telegram チャットID',
|
|
||||||
'telegram_chat_id_description' => 'メッセージは対応するチャットへ送信されます。',
|
|
||||||
'telegram_get_chat_id' => 'ここをクリックしてあなたのチャットIDを取得します。',
|
|
||||||
'activate_telegram' => 'Telegramの通知を有効化',
|
|
||||||
'activate_telegram_description' => '指定されたチャットIDにTelegram通知を送信できるようにします。
|
|
||||||
この許可がなければ、Telegramはあなたに通知を送信することができません。',
|
|
||||||
'telegram_bot_username_found' => 'ボットが見つかりました!<br><a href="%s" target="_blank"><button
|
|
||||||
class="btn btn-primary">次のステップ</button></a>
|
|
||||||
<br>これにより、ボットとあなたのチャットが開かれます。ここであなたは、
|
|
||||||
/start を入力する必要があります。',
|
|
||||||
'telegram_bot_username_error_token' => '401 - 未認証。
|
|
||||||
APIトークンが有効であることを確認してください。',
|
|
||||||
'telegram_bot_error' => 'Telegram通知を有効化中にエラーが発生: %s',
|
|
||||||
'delete_title' => 'ユーザーを削除',
|
|
||||||
'delete_message' => '本当にユーザーを削除しますか?: \'%1\'?',
|
|
||||||
'deleted' => 'ユーザーを削除しました。',
|
|
||||||
'updated' => 'ユーザー情報を更新しました。',
|
|
||||||
'inserted' => 'ユーザーを追加しました。',
|
|
||||||
'profile' => 'プロフィール',
|
|
||||||
'profile_updated' => 'あなたのプロフィールは更新されました。',
|
|
||||||
'error_user_name_bad_length' => 'ユーザーネームは2~64文字以内で入力してください。',
|
|
||||||
'error_user_name_invalid' => 'ユーザー名は、アルファベット、数字とアンダーバーのみを含むことができます
|
|
||||||
ドット(.)。',
|
|
||||||
'error_user_name_exists' => '登録しようとしたユーザー名は既にデータベースに登録されています。',
|
|
||||||
'error_user_email_bad_length' => 'メールアドレスは5~255文字以内で入力してください。',
|
|
||||||
'error_user_email_invalid' => 'メールアドレスが無効です。',
|
|
||||||
'error_user_level_invalid' => '指定したレベルが無効です。',
|
|
||||||
'error_user_no_match' => 'このユーザー名は存在しません。',
|
|
||||||
'error_user_password_invalid' => 'パスワードが無効です。',
|
|
||||||
'error_user_password_no_match' => '確認のパスワードが一致しません。',
|
|
||||||
),
|
|
||||||
'log' => array(
|
|
||||||
'title' => 'ログエントリー',
|
|
||||||
'type' => 'タイプ',
|
|
||||||
'status' => 'ステータス',
|
|
||||||
'email' => 'メール',
|
|
||||||
'sms' => 'SMS',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'no_logs' => 'ログがありません',
|
|
||||||
'clear' => 'ログをクリアする',
|
|
||||||
'delete_title' => 'ログを削除する',
|
|
||||||
'delete_message' => 'すべてのログを削除してもよろしいですか?',
|
|
||||||
),
|
|
||||||
'servers' => array(
|
|
||||||
'server' => 'サーバー',
|
|
||||||
'status' => 'ステータス',
|
|
||||||
'label' => 'ラベル',
|
|
||||||
'domain' => 'ドメイン/IP',
|
|
||||||
'timeout' => 'タイムアウト',
|
|
||||||
'timeout_description' => '指定した秒数、サーバーのレスポンスを待ちます。',
|
|
||||||
'authentication_settings' => '認証設定',
|
|
||||||
'optional' => 'オプション',
|
|
||||||
'website_username' => 'ユーザー名',
|
|
||||||
'website_username_description' => 'ユーザー名でウェブサイトにアクセスします。
|
|
||||||
(サポートはApache認証のみです。)',
|
|
||||||
'website_password' => 'パスワード',
|
|
||||||
'website_password_description' => 'パスワードはサイトのアクセスに使用します。パスワードは暗号化されてデータベースへ保存されます。',
|
|
||||||
'fieldset_monitoring' => 'モニター',
|
|
||||||
'fieldset_permissions' => '権限',
|
|
||||||
'port' => 'ポート',
|
|
||||||
'custom_port' => 'カスタムポート',
|
|
||||||
'popular_ports' => '主要なポート',
|
|
||||||
'request_method' => 'リクエストメソッド',
|
|
||||||
'custom_request_method' => 'カスタムリクエストメソッド',
|
|
||||||
'popular_request_methods' => '主要なリクエストメソッド',
|
|
||||||
'post_field' => 'Postフィールド',
|
|
||||||
'post_field_description' => 'このデータは上記のリクエストメソッドを使用する際に使用されます。
|
|
||||||
例: param1=val1&param2=val2&...',
|
|
||||||
'please_select' => '選択してください',
|
|
||||||
'type' => 'タイプ',
|
|
||||||
'type_website' => 'ウェブサイト',
|
|
||||||
'type_service' => 'サービス',
|
|
||||||
'type_ping' => 'Ping',
|
|
||||||
'pattern' => '文字列/パターンを検索',
|
|
||||||
'pattern_description' => '指定した文字列/パターンが存在しない場合は、「オフライン」としてマークされます。また、標準的な計算式は許可されています。',
|
|
||||||
'pattern_online' => 'パターンがウェブサイトであることを示すパターン: ',
|
|
||||||
'pattern_online_description' => 'オンライン:このパターンがWebサイトにある場合、オンラインとしてマークされます。
|
|
||||||
オフライン:このパターンがWebサイトにない場合、オフラインとしてマークされます。',
|
|
||||||
'redirect_check' => '別のドメインへのリダイレクト: ',
|
|
||||||
'redirect_check_description' => '別のドメインにリダイレクトするのは通常は悪い兆候です。',
|
|
||||||
'allow_http_status' => 'HTTPステータスコードを許可する',
|
|
||||||
'allow_http_status_description' => 'ウェブサイトをオンラインにマークします。
|
|
||||||
400未満のステータスコードはデフォルトでオンラインとマークされます。
|
|
||||||
| で区切ります。 例: 401|403.',
|
|
||||||
'header_name_description' => 'ヘッダー名(大文字小文字を区別します)',
|
|
||||||
'header_value_description' => 'ヘッダーの値。正規表現が利用可能です。',
|
|
||||||
'last_check' => '最後の確認',
|
|
||||||
'last_online' => '最後のオンライン',
|
|
||||||
'last_offline' => '最後のオフライン',
|
|
||||||
'last_output' => '最後のポジティブの出力',
|
|
||||||
'last_error' => '最後のエラー',
|
|
||||||
'last_error_output' => '最後のエラー出力',
|
|
||||||
'monitoring' => 'モニタリング',
|
|
||||||
'no_monitoring' => 'モニタリングなし',
|
|
||||||
'email' => 'メール',
|
|
||||||
'send_email' => 'メールを送信',
|
|
||||||
'sms' => 'SMS',
|
|
||||||
'send_sms' => 'SMSを送信',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'send_pushover' => 'Pushover通知を送信',
|
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'send_telegram' => 'Telegram通知を送信',
|
|
||||||
'users' => 'ユーザー',
|
|
||||||
'delete_title' => 'サーバーを削除',
|
|
||||||
'delete_message' => '本当にこのサーバーを削除しますか?: \'%1\'?',
|
|
||||||
'deleted' => 'サーバーを削除しました。',
|
|
||||||
'updated' => 'サーバーを更新しました。',
|
|
||||||
'inserted' => 'サーバーを追加しました。',
|
|
||||||
'latency' => 'レイテンシ',
|
|
||||||
'latency_max' => 'レイテンシ(最大)',
|
|
||||||
'latency_min' => 'レイテンシ(最小)',
|
|
||||||
'latency_avg' => 'レイテンシ(アベレージ)',
|
|
||||||
'uptime' => '稼働時間',
|
|
||||||
'year' => '年',
|
|
||||||
'month' => '月',
|
|
||||||
'week' => '週間',
|
|
||||||
'day' => '日',
|
|
||||||
'hour' => '時間',
|
|
||||||
'warning_threshold' => '警告閾値',
|
|
||||||
'warning_threshold_description' => 'オフラインとしてマークされる前に失敗したチェックの数',
|
|
||||||
'chart_last_week' => '最後の週間',
|
|
||||||
'chart_history' => '履歴',
|
|
||||||
'chart_day_format' => '%Y-%m-%d',
|
|
||||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
|
||||||
'chart_short_date_format' => '%m/%d %H:%M',
|
|
||||||
'chart_short_time_format' => '%H:%M',
|
|
||||||
'warning_notifications_disabled_sms' => 'SMS 通知は無効です。',
|
|
||||||
'warning_notifications_disabled_email' => 'メール通知は無効です。',
|
|
||||||
'warning_notifications_disabled_pushover' => 'Pushover通知は無効です。',
|
|
||||||
'warning_notifications_disabled_telegram' => 'Telegram通知は無効です。',
|
|
||||||
'error_server_no_match' => 'サーバーが見つかりません',
|
|
||||||
'error_server_label_bad_length' => 'ラベルは1~255文字以内で入力してください。',
|
|
||||||
'error_server_ip_bad_length' => 'ドメイン/IPは1~255文字以内で入力してください。',
|
|
||||||
'error_server_ip_bad_service' => '無効なIPです。',
|
|
||||||
'error_server_ip_bad_website' => 'ウェブサイトのURLが無効です。',
|
|
||||||
'error_server_type_invalid' => '選択されたサーバータイプが無効です。',
|
|
||||||
'error_server_warning_threshold_invalid' => '警告のしきい値は、0より大きい有効な整数でなければなりません。',
|
|
||||||
),
|
|
||||||
'config' => array(
|
|
||||||
'general' => '基本',
|
|
||||||
'language' => '言語',
|
|
||||||
'show_update' => 'アップデートをチェックしますか?',
|
|
||||||
'password_encrypt_key' => '暗号鍵パスワード',
|
|
||||||
'password_encrypt_key_note' => 'このキーは、Webサイトにアクセスするためにサーバーに保存されているパスワードを暗号化するために使用されます。
|
|
||||||
キーが変更された場合、保存されたパスワードは無効です!',
|
|
||||||
'proxy' => 'プロキシを有効化する',
|
|
||||||
'proxy_url' => 'プロキシのURL',
|
|
||||||
'proxy_user' => 'プロキシのユーザー名',
|
|
||||||
'proxy_password' => 'プロキシのパスワード',
|
|
||||||
'email_status' => 'メールの送信を許可',
|
|
||||||
'email_from_email' => 'アドレスからのメール',
|
|
||||||
'email_from_name' => '名前からのメール',
|
|
||||||
'email_smtp' => 'SMTPを有効にしますか?',
|
|
||||||
'email_smtp_host' => 'SMTPホスト',
|
|
||||||
'email_smtp_port' => 'SMTPポート',
|
|
||||||
'email_smtp_security' => 'SMTPセキュリティ',
|
|
||||||
'email_smtp_security_none' => 'なし',
|
|
||||||
'email_smtp_username' => 'SMTPのユーザー名',
|
|
||||||
'email_smtp_password' => 'SMTPのパスワード',
|
|
||||||
'email_smtp_noauth' => '空白で認証なしになります',
|
|
||||||
'sms_status' => 'テキストメッセージの送信を許可する',
|
|
||||||
'sms_gateway' => 'このゲートウェイは、メッセージの送信に使用されます。',
|
|
||||||
'sms_gateway_username' => 'ゲートウェイのユーザー名',
|
|
||||||
'sms_gateway_password' => 'ゲートウェイのパスワード',
|
|
||||||
'sms_from' => '送信者の電話番号:',
|
|
||||||
'pushover_status' => 'Pushoverのメッセージを送信することを許可する',
|
|
||||||
'pushover_description' => 'Pushoverは、リアルタイムの通知を簡単に取得できるサービスです。
|
|
||||||
詳細については、
|
|
||||||
href="https://pushover.net/">ウェブサイト</a>をご覧ください。',
|
|
||||||
'pushover_clone_app' => 'クリックでPushoverアプリケーションを作成できます。',
|
|
||||||
'pushover_api_token' => 'PushoverアプリケーションのAPIトークン',
|
|
||||||
'pushover_api_token_description' => 'Pushoverを使用するには、事前にウェブサイトで<a
|
|
||||||
href="%1$s" target="_blank"
|
|
||||||
rel="noopener">アプリを登録</a>してApp
|
|
||||||
APIトークンを入力する必要があります。',
|
|
||||||
'telegram_status' => 'Telegramメッセージの送信を許可する',
|
|
||||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank" rel="noopener">Telegram</a>
|
|
||||||
はチャットアプリで、簡単にリアルタイム通知を受け取ることができます。
|
|
||||||
<a href="http://docs.phpservermonitor.org/" target="_blank"
|
|
||||||
rel="noopener">documentation</a>
|
|
||||||
で詳しい情報、インストールの方法を知りましょう。',
|
|
||||||
'telegram_api_token' => 'Telegram APIトークン',
|
|
||||||
'telegram_api_token_description' => 'Telegramを使用する前に、APIトークンを取得する必要があります。
|
|
||||||
<a href="http://docs.phpservermonitor.org/" target="_blank"
|
|
||||||
rel="noopener">documentation</a>
|
|
||||||
でヘルプを参照してください。',
|
|
||||||
'alert_type' => '通知するタイミングを選択',
|
|
||||||
'alert_type_description' => '<b>状態の変化:</b>
|
|
||||||
サーバーのステータスが変更されたときに通知を受け取ります。
|
|
||||||
だからオンライン -> オフラインまたはオフライン ->
|
|
||||||
オンライン。<br><br /><b>オフライン:</b>
|
|
||||||
サーバーが*初めての間*オフラインになったときに通知を受け取ります。
|
|
||||||
例えば、あなたのcronの仕事は15分ごとです。あなたのサーバーは午前1時にダウンし、午前6時まで停止します。
|
|
||||||
午前1時に1つの通知が届きます。<br><br><b>常に:</b>
|
|
||||||
サイトが数時間にわたってオフラインになっていても、スクリプトが実行され、サイトが停止するたびに通知を受け取ります。',
|
|
||||||
'alert_type_status' => '状況の変化',
|
|
||||||
'alert_type_offline' => 'オフライン',
|
|
||||||
'alert_type_always' => '常に',
|
|
||||||
'combine_notifications' => '通知の結合',
|
|
||||||
'combine_notifications_description' => '通知を1つの通知にまとめて通知の量を削減します。(これはSMS通知には影響しません。)',
|
|
||||||
'alert_proxy' => '有効にしても、プロキシはサービスに使用されません',
|
|
||||||
'alert_proxy_url' => 'フォーマット: ホスト:ポート',
|
|
||||||
'log_status' => 'ログステータス',
|
|
||||||
'log_status_description' => 'ログステータスがTRUEに設定されている場合、モニターは通知設定が渡されるたびにイベントを記録します。',
|
|
||||||
'log_email' => 'スクリプトによって送信された電子メールを記録する',
|
|
||||||
'log_sms' => 'スクリプトによって送信されたテキストメッセージを記録する',
|
|
||||||
'log_pushover' => 'スクリプトによって送信されたPushoverメッセージを記録する',
|
|
||||||
'log_telegram' => 'スクリプトによって送信されたTelegramメッセージを記録する',
|
|
||||||
'updated' => '設定は更新されました。',
|
|
||||||
'tab_email' => 'メール',
|
|
||||||
'tab_sms' => 'SMS',
|
|
||||||
'tab_pushover' => 'Pushover',
|
|
||||||
'tab_telegram' => 'Telegram',
|
|
||||||
'settings_email' => 'メール設定',
|
|
||||||
'settings_sms' => 'テキストメッセージ設定',
|
|
||||||
'settings_pushover' => 'Pushover設定',
|
|
||||||
'settings_telegram' => 'Telegram設定',
|
|
||||||
'settings_notification' => '通知設定',
|
|
||||||
'settings_log' => 'ログ設定',
|
|
||||||
'settings_proxy' => 'プロキシ設定',
|
|
||||||
'auto_refresh' => '自動更新',
|
|
||||||
'auto_refresh_description' => 'サーバーページを自動更新します。<br><span
|
|
||||||
class="small">時間を秒で指定し、0に設定すると更新しません。</span>',
|
|
||||||
'test' => 'テスト',
|
|
||||||
'test_email' => 'あなたのユーザープロフィールで指定されたアドレスに電子メールが送信されます。',
|
|
||||||
'test_sms' => 'あなたのユーザープロフィールで指定された電話番号にSMSが送信されます。',
|
|
||||||
'test_pushover' => 'あなたのユーザープロフィールで指定されたユーザー
|
|
||||||
キー/デバイスにPushover通知が送信されます。',
|
|
||||||
'test_telegram' => 'あなたのユーザープロフィールで指定されたチャットIDにTelegram通知が送信されます。',
|
|
||||||
'send' => '送信',
|
|
||||||
'test_subject' => 'テスト',
|
|
||||||
'test_message' => 'これはテストメッセージです',
|
|
||||||
'email_sent' => 'メールが送信されました',
|
|
||||||
'email_error' => 'メールを送信中にエラーが発生しました',
|
|
||||||
'sms_sent' => 'SMSが送信されました',
|
|
||||||
'sms_error' => 'SMSを送信中にエラーが発生しました %s',
|
|
||||||
'sms_error_nomobile' => 'テストSMSの送信に失敗:
|
|
||||||
あなたのプロフィールに有効な電話番号がありません',
|
|
||||||
'pushover_sent' => 'Pushover通知が送信されました',
|
|
||||||
'pushover_error' => 'Pushover通知を送信中にエラーが発生しました: %s',
|
|
||||||
'pushover_error_noapp' => 'テスト通知の送信に失敗しました:グローバル設定にAPIトークンがありません',
|
|
||||||
'pushover_error_nokey' => 'テスト通知の送信に失敗しました:あなたのプロフィールに有効なPushoverキーがありません',
|
|
||||||
'telegram_sent' => 'Telegram通知が送信されました',
|
|
||||||
'telegram_error' => 'Telegram通知を送信中にエラーが発生しました: %s',
|
|
||||||
'telegram_error_notoken' => 'テスト通知の送信に失敗しました:グローバル設定にTelegram
|
|
||||||
APIトークンがありません',
|
|
||||||
'telegram_error_noid' => 'テスト通知の送信に失敗しました:あなたのプロフィールに有効なチャットIDがありません',
|
|
||||||
'log_retention_period' => 'ログ保持期間',
|
|
||||||
'log_retention_period_description' => '通知のログおよびサーバー稼働時間のアーカイブを保持する日数。
|
|
||||||
ログのクリーンアップを無効にするには、0を入力します。',
|
|
||||||
'log_retention_days' => '日',
|
|
||||||
),
|
|
||||||
'notifications' => array(
|
|
||||||
'off_sms' => 'サーバー \'%LABEL%\' はダウンしています: ip=%IP%, ポート=%PORT%.
|
|
||||||
エラー=%ERROR%',
|
|
||||||
'off_email_subject' => '重要: サーバー \'%LABEL%\' がダウンしています!',
|
|
||||||
'off_email_body' => 'サーバーへの接続に失敗しました:<br><br>Server: %LABEL%<br>IP:
|
|
||||||
%IP%<br>ポート: %PORT%<br>エラー: %ERROR%<br>日時: %DATE%',
|
|
||||||
'off_pushover_title' => 'サーバー \'%LABEL%\' がダウンしています!',
|
|
||||||
'off_pushover_message' => 'サーバーへの接続に失敗しました:<br/><br/>Server: %LABEL%<br/>IP:
|
|
||||||
%IP%<br/>ポート: %PORT%<br/>エラー: %ERROR%<br/>日時: %DATE%',
|
|
||||||
'off_telegram_message' => 'サーバーへの接続に失敗しました:<br/><br/>Server: %LABEL%<br/>IP:
|
|
||||||
%IP%<br/>ポート: %PORT%<br/>エラー: %ERROR%<br/>日時: %DATE%',
|
|
||||||
'on_sms' => 'サーバー \'%LABEL%\' は動作しています: ip=%IP%, port=%PORT%, it was down for
|
|
||||||
%LAST_OFFLINE_DURATION%',
|
|
||||||
'on_email_subject' => '重要: サーバー \'%LABEL%\' は動作しています',
|
|
||||||
'on_email_body' => 'サーバー \'%LABEL%\' は動作中です。
|
|
||||||
この期間の間ダウンしていました:
|
|
||||||
%LAST_OFFLINE_DURATION%:<br/><br/>サーバー: %LABEL%<br/>IP: %IP%<br/>ポート:
|
|
||||||
%PORT%<br/>日時: %DATE%',
|
|
||||||
'on_pushover_title' => 'サーバー \'%LABEL%\' は動作しています',
|
|
||||||
'on_pushover_message' => 'サーバー \'%LABEL%\' は動作中です。
|
|
||||||
この期間の間ダウンしていました:
|
|
||||||
%LAST_OFFLINE_DURATION%:<br/><br/>サーバー: %LABEL%<br/>IP: %IP%<br/>ポート:
|
|
||||||
%PORT%<br/>日時: %DATE%',
|
|
||||||
'on_telegram_message' => 'サーバー \'%LABEL%\' は動作中です。
|
|
||||||
この期間の間ダウンしていました: <br/><br/>サーバー:
|
|
||||||
%LABEL%<br/>IP: %IP%<br/>ポート: %PORT%<br/>ダウンタイム:
|
|
||||||
%LAST_OFFLINE_DURATION%<br/>日時: %DATE%',
|
|
||||||
'combi_off_email_message' => '<ul><li>サーバー: %LABEL%</li><li>IP: %IP%</li><li>ポート:
|
|
||||||
%PORT%</li><li>エラー: %ERROR%</li><li>日時: %DATE%</li></ul>',
|
|
||||||
'combi_off_pushover_message' => '<ul><li>サーバー: %LABEL%</li><li>IP: %IP%</li><li>ポート:
|
|
||||||
%PORT%</li><li>エラー: %ERROR%</li><li>日時: %DATE%</li></ul>',
|
|
||||||
'combi_off_telegram_message' => '- サーバー: %LABEL%<br/>- IP: %IP%<br/>- ポート: %PORT%<br/>-
|
|
||||||
エラー: %ERROR%<br/>- 日時: %DATE%<br/><br/>',
|
|
||||||
'combi_on_email_message' => '<ul><li>サーバー: %LABEL%</li><li>IP: %IP%</li><li>ポート:
|
|
||||||
%PORT%</li><li>ダウンタイム: %LAST_OFFLINE_DURATION%</li><li>日時:
|
|
||||||
%DATE%</li></ul>',
|
|
||||||
'combi_on_pushover_message' => '<ul><li>サーバー: %LABEL%</li><li>IP: %IP%</li><li>ポート:
|
|
||||||
%PORT%</li><li>ダウンタイム: %LAST_OFFLINE_DURATION%</li><li>日時:
|
|
||||||
%DATE%</li></ul>',
|
|
||||||
'combi_on_telegram_message' => '- サーバー: %LABEL%<br/>- IP: %IP%<br/>- ポート: %PORT%<br/>-
|
|
||||||
ダウンタイム: %LAST_OFFLINE_DURATION%<br/>- 日時: %DATE%<br/><br/>',
|
|
||||||
'combi_email_subject' => '重要: \'%UP%\' サーバーは動作を再開しました。 \'%DOWN%\'
|
|
||||||
サーバーはダウンしています。',
|
|
||||||
'combi_pushover_subject' => '\'%UP%\' サーバーは動作を再開しました。 \'%DOWN%\'
|
|
||||||
サーバーはダウンしています。',
|
|
||||||
'combi_email_message' => '<b>以下のサーバーはダウンしています:
|
|
||||||
</b><br/>%DOWN_SERVERS%<br/><b>以下のサーバーは動作を再開しました:</b><br/>%UP_SERVERS%',
|
|
||||||
'combi_pushover_message' => '<b>以下のサーバーはダウンしています:
|
|
||||||
</b><br/>%DOWN_SERVERS%<br/><b>以下のサーバーは動作を再開しました:</b><br/>%UP_SERVERS%',
|
|
||||||
'combi_telegram_message' => '<b>以下のサーバーはダウンしています:
|
|
||||||
</b><br/>%DOWN_SERVERS%<br/><b>以下のサーバーは動作を再開しました:</b><br/>%UP_SERVERS%',
|
|
||||||
),
|
|
||||||
'login' => array(
|
|
||||||
'welcome_usermenu' => 'ようこそ、 %user_name%',
|
|
||||||
'title_sign_in' => 'サインインしてください。',
|
|
||||||
'title_forgot' => 'パスワードを忘れましたか?',
|
|
||||||
'title_reset' => 'パスワードをリセットする',
|
|
||||||
'submit' => '送信',
|
|
||||||
'remember_me' => 'ログイン状態を保持する',
|
|
||||||
'login' => 'ログイン',
|
|
||||||
'logout' => 'ログアウト',
|
|
||||||
'username' => 'ユーザー名',
|
|
||||||
'password' => 'パスワード',
|
|
||||||
'password_repeat' => 'パスワードを繰り返してください',
|
|
||||||
'password_forgot' => 'パスワードを忘れましたか?',
|
|
||||||
'password_reset' => 'パスワードをリセットする',
|
|
||||||
'password_reset_email_subject' => 'PHP Server Monitorのパスワードをリセットする',
|
|
||||||
'password_reset_email_body' => 'パスワードをリセットするには、次のリンクを使用してください。
|
|
||||||
1時間で期限切れになりますのでご注意ください。<br /><br
|
|
||||||
/> %link%',
|
|
||||||
'error_user_incorrect' => '指定されたユーザー名が見つかりませんでした。',
|
|
||||||
'error_login_incorrect' => '情報が間違っています。',
|
|
||||||
'error_login_passwords_nomatch' => '指定されたパスワードが一致しません。',
|
|
||||||
'error_reset_invalid_link' => '指定したリセットリンクは無効です。',
|
|
||||||
'success_password_forgot' => 'パスワードをリセットする方法に関する情報が電子メールで送信されました。',
|
|
||||||
'success_password_reset' => 'パスワードは正常にリセットされました。ログインしてください。',
|
|
||||||
),
|
|
||||||
'error' => array(
|
|
||||||
'401_unauthorized' => '未認証',
|
|
||||||
'401_unauthorized_description' => 'このページを表示する権限がありません。',
|
|
||||||
),
|
|
||||||
);
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -20,7 +19,7 @@
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Ik-Jun
|
* @author Ik-Jun
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
|
@ -28,14 +27,11 @@
|
||||||
|
|
||||||
$sm_lang = array(
|
$sm_lang = array(
|
||||||
'name' => '한국 - Korean',
|
'name' => '한국 - Korean',
|
||||||
'locale' => array(
|
'locale' => array('ko_KR.UTF-8', 'ko_KR', 'korean'),
|
||||||
'0' => 'ko_KR.UTF-8',
|
|
||||||
'1' => 'ko_KR',
|
|
||||||
'2' => 'korean',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'ko',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
'system' => array(
|
||||||
|
'title' => 'Server Monitor',
|
||||||
|
'install' => 'Install',
|
||||||
|
'action' => 'Action',
|
||||||
'save' => '저장',
|
'save' => '저장',
|
||||||
'edit' => '수정',
|
'edit' => '수정',
|
||||||
'delete' => '삭제',
|
'delete' => '삭제',
|
||||||
|
@ -45,14 +41,29 @@ $sm_lang = array(
|
||||||
'no' => '아니오',
|
'no' => '아니오',
|
||||||
'insert' => '삽입',
|
'insert' => '삽입',
|
||||||
'add_new' => '새계정 추가',
|
'add_new' => '새계정 추가',
|
||||||
'update_available' => '새로운 업데이트가 있습니다 ({version}). 다음사이트를 방문 해
|
'update_available' => '새로운 업데이트가 있습니다 ({version}). 다음사이트를 방문 해 주십시오. <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||||
주십시오. <a href="https://github.com/phpservermon/phpservermon/releases/latest"
|
'back_to_top' => 'Back to top',
|
||||||
target="_blank" rel="noopener">http://www.phpservermonitor.org</a>.',
|
'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(
|
'menu' => array(
|
||||||
'config' => '설정',
|
'config' => '설정',
|
||||||
'server' => '서버목록',
|
'server' => '서버목록',
|
||||||
'server_log' => '로그',
|
'server_log' => '로그',
|
||||||
|
'server_status' => 'Status',
|
||||||
'server_update' => '업데이트',
|
'server_update' => '업데이트',
|
||||||
'user' => '사용자',
|
'user' => '사용자',
|
||||||
'help' => '도움말',
|
'help' => '도움말',
|
||||||
|
@ -60,30 +71,104 @@ $sm_lang = array(
|
||||||
'users' => array(
|
'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' => '수정되었습니다.',
|
'updated' => '수정되었습니다.',
|
||||||
'inserted' => '추가되었습니다.',
|
'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(
|
'log' => array(
|
||||||
|
'title' => 'Log entries',
|
||||||
'type' => '속성',
|
'type' => '속성',
|
||||||
'status' => '상태',
|
'status' => '상태',
|
||||||
'email' => 'email',
|
'email' => 'email',
|
||||||
'sms' => 'sms',
|
'sms' => 'sms',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'telegram' => 'Telegram',
|
'no_logs' => 'No logs',
|
||||||
),
|
),
|
||||||
'servers' => array(
|
'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/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_check' => '최근체크',
|
||||||
'last_online' => '최근접속',
|
'last_online' => '최근접속',
|
||||||
'monitoring' => '확인중',
|
'monitoring' => '확인중',
|
||||||
|
'no_monitoring' => 'No monitoring',
|
||||||
'email' => '메일 전송',
|
'email' => '메일 전송',
|
||||||
'send_email' => '메일 전송',
|
'send_email' => '메일 전송',
|
||||||
'sms' => 'SMS 전송',
|
'sms' => 'SMS 전송',
|
||||||
'send_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' => '서버가 수정되었습니다.',
|
'updated' => '서버가 수정되었습니다.',
|
||||||
'inserted' => '서버가 추가되었습니다.',
|
'inserted' => '서버가 추가되었습니다.',
|
||||||
'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(
|
'config' => array(
|
||||||
'general' => '일반',
|
'general' => '일반',
|
||||||
|
@ -92,51 +177,121 @@ $sm_lang = array(
|
||||||
'email_status' => '메일전송 허용',
|
'email_status' => '메일전송 허용',
|
||||||
'email_from_email' => 'Email 주소',
|
'email_from_email' => 'Email 주소',
|
||||||
'email_from_name' => '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_status' => '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_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' => '알림을 원하면 다음과 같이 변경하십시오.',
|
||||||
'alert_type_description' => '<b>상태 변경: </b><br>서버 상태가 변경이되면 알림을
|
'alert_type_description' => '<b>상태 변경: </b><br/>'.
|
||||||
받습니다. online -> offline -> online.<br><br><b>오프라인:
|
'서버 상태가 변경이되면 알림을 받습니다. online -> offline -> online.<br/>'.
|
||||||
</b><br>서버가 첫번째로 오프라인이 되었을 때 알림을
|
'<br/><b>오프라인: </b><br/>'.
|
||||||
받습니다. 예를들어, cron이 매 15분이고 오전1시 부터
|
'서버가 첫번째로 오프라인이 되었을 때 알림을 받습니다. 예를들어, '.
|
||||||
오전6시까지 다운되었을때 오전1시에 한번 알림을
|
'cron이 매 15분이고 오전1시 부터 오전6시까지 다운되었을때 오전1시에 한번 알림을 받습니다.<br />' .
|
||||||
받습니다.<br /><br><b>항상: </b><br>사이트가 다운되었을 때
|
'<br/><b>항상: </b><br/>'.
|
||||||
매시간 알림을 받습니다.',
|
'사이트가 다운되었을 때 매시간 알림을 받습니다.',
|
||||||
|
|
||||||
'alert_type_status' => '상태 변경',
|
'alert_type_status' => '상태 변경',
|
||||||
'alert_type_offline' => '오프라인',
|
'alert_type_offline' => '오프라인',
|
||||||
'alert_type_always' => '항상',
|
'alert_type_always' => '항상',
|
||||||
'log_status' => '로그 상태',
|
'log_status' => '로그 상태',
|
||||||
'log_status_description' => '로그상태가 TRUE이면 알림설정이 통과할때마다 이벤트를
|
'log_status_description' => '로그상태가 TRUE이면 알림설정이 통과할때마다 이벤트를 기록합니다.',
|
||||||
기록합니다.',
|
|
||||||
'log_email' => '이메일로 로그를 전송하시겠습니까?',
|
'log_email' => '이메일로 로그를 전송하시겠습니까?',
|
||||||
'log_sms' => 'SMS로 로그를 전송하시겠습니까?',
|
'log_sms' => 'SMS로 로그를 전송하시겠습니까?',
|
||||||
|
'log_pushover' => 'Log pushover messages sent by the script',
|
||||||
'updated' => '설정이 수정되었습니다.',
|
'updated' => '설정이 수정되었습니다.',
|
||||||
'tab_email' => 'Email',
|
'tab_email' => 'Email',
|
||||||
'tab_sms' => 'SMS',
|
'tab_sms' => 'SMS',
|
||||||
'tab_pushover' => 'Pushover',
|
'tab_pushover' => 'Pushover',
|
||||||
'settings_email' => 'Email 설정',
|
'settings_email' => 'Email 설정',
|
||||||
'settings_sms' => 'SMS 설정',
|
'settings_sms' => 'SMS 설정',
|
||||||
|
'settings_pushover' => 'Pushover settings',
|
||||||
'settings_notification' => '알림 설정',
|
'settings_notification' => '알림 설정',
|
||||||
'settings_log' => '로그 설정',
|
'settings_log' => '로그 설정',
|
||||||
'auto_refresh_description' => '서버페이지를 자동으로 새로고침.<br><span class="small">시간은
|
'auto_refresh' => 'Auto-refresh',
|
||||||
초(sec)로 설정을 하고, 0은 새로고침을 하지 않습니다.</span>',
|
'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(
|
'notifications' => array(
|
||||||
'off_sms' => '서버(\'%LABEL%\')가 다운되었습니다. : ip=%IP%, port=%PORT%. Error=%ERROR%',
|
'off_sms' => '서버(\'%LABEL%\')가 다운되었습니다. : ip=%IP%, port=%PORT%. Error=%ERROR%',
|
||||||
'off_email_subject' => '중요: 서버(\'%LABEL%\')가 다운되었습니다.',
|
'off_email_subject' => '중요: 서버(\'%LABEL%\')가 다운되었습니다.',
|
||||||
'off_email_body' => '서버 접속을 실패하였습니다.<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
'off_email_body' => "서버 접속을 실패하였습니다.<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Error: %ERROR%<br/>Date: %DATE%",
|
||||||
%PORT%<br>Error: %ERROR%<br>Date: %DATE%',
|
|
||||||
'off_pushover_title' => '서버(\'%LABEL%\')가 다운되었습니다.',
|
'off_pushover_title' => '서버(\'%LABEL%\')가 다운되었습니다.',
|
||||||
'off_pushover_message' => '서버 접속을 실패하였습니다.<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
'off_pushover_message' => "서버 접속을 실패하였습니다.<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Error: %ERROR%<br/>Date: %DATE%",
|
||||||
%PORT%<br>Error: %ERROR%<br>Date: %DATE%',
|
'on_sms' => '서버(\'%LABEL%\') 가동중: ip=%IP%, port=%PORT%',
|
||||||
'on_sms' => '서버(\'%LABEL%\') 가동중: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
|
||||||
'on_email_subject' => '중요: 서버(\'%LABEL%\')가 가동중입니다.',
|
'on_email_subject' => '중요: 서버(\'%LABEL%\')가 가동중입니다.',
|
||||||
'on_email_body' => '서버(\'%LABEL%\')가 재가동됩니다., it was down for
|
'on_email_body' => "서버('%LABEL%')가 재가동됩니다.:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Date: %DATE%",
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Date:
|
|
||||||
%DATE%',
|
|
||||||
'on_pushover_title' => '서버(\'%LABEL%\')가 가동중입니다.',
|
'on_pushover_title' => '서버(\'%LABEL%\')가 가동중입니다.',
|
||||||
'on_pushover_message' => '서버(\'%LABEL%\')가 재가동됩니다., it was down for
|
'on_pushover_message' => "서버('%LABEL%')가 재가동됩니다.:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>Date: %DATE%",
|
||||||
%LAST_OFFLINE_DURATION%:<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.',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -19,8 +18,8 @@
|
||||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Pepijn Over <pep@mailbox.org>
|
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
|
@ -28,16 +27,10 @@
|
||||||
|
|
||||||
$sm_lang = array(
|
$sm_lang = array(
|
||||||
'name' => 'Nederlands - Dutch',
|
'name' => 'Nederlands - Dutch',
|
||||||
'locale' => array(
|
'locale' => array('nl_NL.UTF-8', 'nl_NL', 'dutch'),
|
||||||
'0' => 'nl_NL.UTF-8',
|
|
||||||
'1' => 'nl_NL',
|
|
||||||
'2' => 'dutch',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'nl',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
'system' => array(
|
||||||
'title' => 'Server Monitor',
|
'title' => 'Server Monitor',
|
||||||
'install' => 'Installeren',
|
'install' => 'Intalleren',
|
||||||
'action' => 'Actie',
|
'action' => 'Actie',
|
||||||
'save' => 'Opslaan',
|
'save' => 'Opslaan',
|
||||||
'edit' => 'Wijzig',
|
'edit' => 'Wijzig',
|
||||||
|
@ -48,16 +41,12 @@ $sm_lang = array(
|
||||||
'no' => 'Nee',
|
'no' => 'Nee',
|
||||||
'insert' => 'Voeg toe',
|
'insert' => 'Voeg toe',
|
||||||
'add_new' => 'Voeg toe',
|
'add_new' => 'Voeg toe',
|
||||||
'update_available' => 'Een nieuwe update ({version}) is beschikbaar op <a
|
'update_available' => 'Een nieuwe update ({version}) is beschikbaar op <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
|
||||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
|
||||||
'back_to_top' => 'Terug naar boven',
|
'back_to_top' => 'Terug naar boven',
|
||||||
'go_back' => 'Terug',
|
'go_back' => 'Terug',
|
||||||
'ok' => 'OK',
|
'ok' => 'OK',
|
||||||
'bad' => 'niet goed',
|
|
||||||
'cancel' => 'Cancel',
|
'cancel' => 'Cancel',
|
||||||
'none' => 'Geen',
|
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||||
'activate' => 'Activeer',
|
|
||||||
'short_day_format' => '%B %e',
|
'short_day_format' => '%B %e',
|
||||||
'long_day_format' => '%B %e, %Y',
|
'long_day_format' => '%B %e, %Y',
|
||||||
'yesterday_format' => 'Gisteren om %k:%M',
|
'yesterday_format' => 'Gisteren om %k:%M',
|
||||||
|
@ -69,22 +58,6 @@ $sm_lang = array(
|
||||||
'a_minute_ago' => 'een minuut geleden',
|
'a_minute_ago' => 'een minuut geleden',
|
||||||
'seconds_ago' => '%d seconden geleden',
|
'seconds_ago' => '%d seconden geleden',
|
||||||
'a_second_ago' => 'een seconde 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(
|
'menu' => array(
|
||||||
'config' => 'Configuratie',
|
'config' => 'Configuratie',
|
||||||
|
@ -105,27 +78,14 @@ $sm_lang = array(
|
||||||
'level' => 'Level',
|
'level' => 'Level',
|
||||||
'level_10' => 'Beheerder',
|
'level_10' => 'Beheerder',
|
||||||
'level_20' => 'Gebruiker',
|
'level_20' => 'Gebruiker',
|
||||||
'level_description' => '<b>Beheerders</b> hebben volledige toegang: ze kunnen servers en gebruiker beheren en
|
'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.',
|
||||||
de globale configuratie aanpassen.<br><b>Gebruikers</b> kunnen alleen de servers
|
|
||||||
bekijken en op fouten testen die aan hun zijn toegewezen.',
|
|
||||||
'mobile' => 'Mobiel',
|
'mobile' => 'Mobiel',
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'pushover_description' => 'Pushover is een dienst die het gemakkelijk maakt om real-time notificaties te
|
'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.',
|
||||||
ontvangen. Zie <a href="https://pushover.net/" target="_blank">hun website</a> voor
|
|
||||||
meer informatie.',
|
|
||||||
'pushover_key' => 'Pushover Key',
|
'pushover_key' => 'Pushover Key',
|
||||||
'pushover_device' => 'Pushover Device',
|
'pushover_device' => 'Pushover Device',
|
||||||
'pushover_device_description' => 'Apparaat waar de berichten naar toe gaan. Laat leeg voor alle apparaten.',
|
'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_title' => 'Verwijder gebruiker',
|
||||||
'delete_message' => 'Weet je zeker dat je deze gebruiker wilt verwijderen: \'%1\'?',
|
'delete_message' => 'Weet je zeker dat je deze gebruiker wilt verwijderen: \'%1\'?',
|
||||||
'deleted' => 'Gebruiker verwijderd.',
|
'deleted' => 'Gebruiker verwijderd.',
|
||||||
|
@ -134,8 +94,7 @@ $sm_lang = array(
|
||||||
'profile' => 'Profiel',
|
'profile' => 'Profiel',
|
||||||
'profile_updated' => 'Je profiel is bijgewerkt.',
|
'profile_updated' => 'Je profiel is bijgewerkt.',
|
||||||
'error_user_name_bad_length' => 'Een gebruikersnaam moet tussen de 2 en 64 tekens zijn.',
|
'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),
|
'error_user_name_invalid' => 'Een gebruikersnaam mag alleen alfabetische tekens (a-z, A-Z), cijfers (0-9) en underscores (_) bevatten.',
|
||||||
punten (.) en underscores (_) bevatten.',
|
|
||||||
'error_user_name_exists' => 'De opgegeven gebruikersnaam bestaat al.',
|
'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_bad_length' => 'Een email adres moet tussen de 5 en 255 tekens zijn.',
|
||||||
'error_user_email_invalid' => 'Het email adres is ongeldig.',
|
'error_user_email_invalid' => 'Het email adres is ongeldig.',
|
||||||
|
@ -143,7 +102,6 @@ $sm_lang = array(
|
||||||
'error_user_no_match' => 'De gebruiker kon niet worden toegevoegd aan de database.',
|
'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_invalid' => 'Het ingevulde wachtwoord is ongeldig.',
|
||||||
'error_user_password_no_match' => 'De ingevulde wachtwoorden komen niet overeen.',
|
'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(
|
'log' => array(
|
||||||
'title' => 'Log entries',
|
'title' => 'Log entries',
|
||||||
|
@ -152,11 +110,7 @@ $sm_lang = array(
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'telegram' => 'Telegram',
|
'no_logs' => 'No logs',
|
||||||
'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(
|
'servers' => array(
|
||||||
'server' => 'Server',
|
'server' => 'Server',
|
||||||
|
@ -165,47 +119,21 @@ $sm_lang = array(
|
||||||
'domain' => 'Domein/IP',
|
'domain' => 'Domein/IP',
|
||||||
'timeout' => 'Timeout',
|
'timeout' => 'Timeout',
|
||||||
'timeout_description' => 'Aantal seconden te wachten op een reactie van de server.',
|
'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',
|
'port' => 'Poort',
|
||||||
'custom_port' => 'Aangepaste poort',
|
|
||||||
'popular_ports' => 'Populaire poorten',
|
|
||||||
'post_field' => 'POST veld',
|
|
||||||
'please_select' => 'Selecteer',
|
|
||||||
'type' => 'Type',
|
'type' => 'Type',
|
||||||
'type_website' => 'Website',
|
'type_website' => 'Website',
|
||||||
'type_service' => 'Service',
|
'type_service' => 'Service',
|
||||||
'type_ping' => 'Ping',
|
|
||||||
'pattern' => 'Zoek voor tekst/regex',
|
'pattern' => 'Zoek voor tekst/regex',
|
||||||
'pattern_description' => 'Als dit patroon niet gevonden wordt op de website, zal de server als offline
|
'pattern_description' => 'Als dit patroon niet gevonden wordt op de website, zal de server als offline gemarkeerd worden. Regular expressions zijn toegestaan.',
|
||||||
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_check' => 'Laatst gecontroleerd',
|
||||||
'last_online' => 'Laatst online',
|
'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',
|
'monitoring' => 'Monitoring',
|
||||||
'no_monitoring' => 'Geen monitoring',
|
'no_monitoring' => 'No monitoring',
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'send_email' => 'Stuur email',
|
'send_email' => 'Stuur email',
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'send_sms' => 'Stuur SMS',
|
'send_sms' => 'Stuur SMS',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'send_pushover' => 'Stuur Pushover notificatie',
|
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'send_telegram' => 'Stuur Telegram notificatie',
|
|
||||||
'users' => 'Gebruikers',
|
'users' => 'Gebruikers',
|
||||||
'delete_title' => 'Verwijder server',
|
'delete_title' => 'Verwijder server',
|
||||||
'delete_message' => 'Weet je zeker dat je deze server wilt verwijderen: \'%1\'?',
|
'delete_message' => 'Weet je zeker dat je deze server wilt verwijderen: \'%1\'?',
|
||||||
|
@ -216,18 +144,17 @@ $sm_lang = array(
|
||||||
'latency_max' => 'Latency (maximum)',
|
'latency_max' => 'Latency (maximum)',
|
||||||
'latency_min' => 'Latency (minimum)',
|
'latency_min' => 'Latency (minimum)',
|
||||||
'latency_avg' => 'Latency (gemiddeld)',
|
'latency_avg' => 'Latency (gemiddeld)',
|
||||||
'online' => 'online',
|
|
||||||
'offline' => 'offline',
|
|
||||||
'uptime' => 'Uptime',
|
'uptime' => 'Uptime',
|
||||||
'year' => 'Jaar',
|
'year' => 'Jaar',
|
||||||
'month' => 'Maand',
|
'month' => 'Maand',
|
||||||
'week' => 'Week',
|
'week' => 'Week',
|
||||||
'day' => 'Dag',
|
'day' => 'Dag',
|
||||||
'hour' => 'Uur',
|
'hour' => 'Uur',
|
||||||
'warning_threshold' => 'Waarschuwingsdrempel',
|
'warning_threshold' => 'Warning threshold',
|
||||||
'warning_threshold_description' => 'Aantal mislukte pogingen voordat de server als offline gemarkeerd wordt.',
|
'warning_threshold_description' => 'Aantal mislukte pogingen voordat de server als offline gemarkeerd wordt.',
|
||||||
'chart_last_week' => 'Afgelopen week',
|
'chart_last_week' => 'Afgelopen week',
|
||||||
'chart_history' => 'Geschiedenis',
|
'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_day_format' => '%d-%m-%Y',
|
||||||
'chart_long_date_format' => '%d-%m-%Y %H:%M:%S',
|
'chart_long_date_format' => '%d-%m-%Y %H:%M:%S',
|
||||||
'chart_short_date_format' => '%d-%m %H:%M',
|
'chart_short_date_format' => '%d-%m %H:%M',
|
||||||
|
@ -235,7 +162,6 @@ $sm_lang = array(
|
||||||
'warning_notifications_disabled_sms' => 'SMS notificaties zijn uitgeschakeld.',
|
'warning_notifications_disabled_sms' => 'SMS notificaties zijn uitgeschakeld.',
|
||||||
'warning_notifications_disabled_email' => 'Email notificaties zijn uitgeschakeld.',
|
'warning_notifications_disabled_email' => 'Email notificaties zijn uitgeschakeld.',
|
||||||
'warning_notifications_disabled_pushover' => 'Pushover 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_no_match' => 'Server niet gevonden.',
|
||||||
'error_server_label_bad_length' => 'Het label moet tussen de 1 en 255 karakters lang zijn.',
|
'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_length' => 'Het domein / IP moet tussen de 1 en 255 karakters lang zijn.',
|
||||||
|
@ -246,73 +172,68 @@ $sm_lang = array(
|
||||||
),
|
),
|
||||||
'config' => array(
|
'config' => array(
|
||||||
'general' => 'Algemeen',
|
'general' => 'Algemeen',
|
||||||
'site_title' => 'Website titel',
|
|
||||||
'language' => 'Taal',
|
'language' => 'Taal',
|
||||||
'show_update' => 'Controleer wekelijks voor updates?',
|
'show_update' => 'Controleer wekelijks voor updates?',
|
||||||
'email_status' => 'Sta email berichten toe?',
|
'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_email' => 'Email van adres',
|
||||||
'email_from_name' => 'Email van naam',
|
'email_from_name' => 'Email van naam',
|
||||||
'email_smtp' => 'SMTP gebruiken',
|
'email_smtp' => 'SMTP gebruiken',
|
||||||
'email_smtp_host' => 'SMTP host',
|
'email_smtp_host' => 'SMTP host',
|
||||||
'email_smtp_port' => 'SMTP poort',
|
'email_smtp_port' => 'SMTP poort',
|
||||||
'email_smtp_security' => 'SMTP beveiliging',
|
|
||||||
'email_smtp_security_none' => 'Geen',
|
|
||||||
'email_smtp_username' => 'SMTP gebruikersnaam',
|
'email_smtp_username' => 'SMTP gebruikersnaam',
|
||||||
'email_smtp_password' => 'SMTP wachtwoord',
|
'email_smtp_password' => 'SMTP wachtwoord',
|
||||||
'email_smtp_noauth' => 'Laat leeg voor geen authenticatie',
|
'email_smtp_noauth' => 'Laat leeg voor geen authenticatie',
|
||||||
'sms_status' => 'Sta SMS berichten toe?',
|
'sms_status' => 'Sta SMS berichten toe?',
|
||||||
'sms_gateway' => 'Gateway voor het sturen van SMS',
|
'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_username' => 'Gateway gebruikersnaam',
|
||||||
'sms_gateway_password' => 'Gateway wachtwoord',
|
'sms_gateway_password' => 'Gateway wachtwoord',
|
||||||
'sms_from' => 'Telefoonnummer afzender',
|
'sms_from' => 'Telefoonnummer afzender',
|
||||||
'pushover_status' => 'Sta Pushover berichten toe?',
|
'pushover_status' => 'Sta Pushover berichten toe?',
|
||||||
'pushover_description' => 'Pushover is een dienst die het gemakkelijk maakt om real-time notificaties te
|
'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.',
|
||||||
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_clone_app' => 'Klik hier om je Pushover app te maken',
|
||||||
'pushover_api_token' => 'Pushover App API Token',
|
'pushover_api_token' => 'Pushover App API Token',
|
||||||
'pushover_api_token_description' => 'Voordat je Pushover kunt gebruiken moet je een <a href="%1$s"
|
'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.',
|
||||||
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' => 'Selecteer wanneer je een notificatie wilt',
|
||||||
'alert_type_description' => '<b>Status verandert:</b> Je ontvangt alleen bericht wanneer een server van status
|
'alert_type_description' => '<b>Status change:</b> '.
|
||||||
verandert. Dus van online -> offline of offline -> online.<br><br
|
'Je ontvangt alleen bericht wanneer een server van status verandert. Dus van online -> offline of offline -> online.<br/>'.
|
||||||
/><b>Offline:</b> Je ontvangt bericht wanneer een server offline gaat voor de
|
'<br /><b>Offline:</b> '.
|
||||||
*EERSTE KEER*. Bijvoorbeeld, je cronjob draait iedere 15 min en je server gaat
|
'Je ontvangt bericht wanneer een server offline gaat voor de *EERSTE KEER*. Bijvoorbeeld, '.
|
||||||
down om 01:00 en blijft offline tot 06:00. Je krijgt 1 bericht om 01:00 en dat is
|
'je cronjob draait iedere 15 min en je server gaat down om 01:00 en blijft offline tot 06:00. '.
|
||||||
het.<br><br><b>Altijd:</b> Je krijgt een bericht elke keer dat het script draait
|
'Je krijgt 1 bericht om 01:00 en dat is het.<br/>'.
|
||||||
en een website is down, ook al is de site al een paar uur offline.',
|
'<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_status' => 'Status verandering',
|
||||||
'alert_type_offline' => 'Offline',
|
'alert_type_offline' => 'Offline',
|
||||||
'alert_type_always' => 'Altijd',
|
'alert_type_always' => 'Altijd',
|
||||||
'combine_notifications' => 'Combineer notificaties',
|
|
||||||
'alert_proxy_url' => 'Formaat: host:poort',
|
|
||||||
'log_status' => 'Log status',
|
'log_status' => 'Log status',
|
||||||
'log_status_description' => 'Als de log status aan staat, zal de monitor een log aanmaken elke keer dat hij
|
'log_status_description' => 'Als de log status aan staat, zal de monitor een log aanmaken elke keer dat hij door de notificatie instellingen komt.',
|
||||||
door de notificatie instellingen komt.',
|
|
||||||
'log_email' => 'Log emails verstuurd bij het script?',
|
'log_email' => 'Log emails verstuurd bij het script?',
|
||||||
'log_sms' => 'Log sms berichten verstuurd bij het script?',
|
'log_sms' => 'Log sms berichten verstuurd bij het script?',
|
||||||
'log_pushover' => 'Log Pushover 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.',
|
'updated' => 'De configuratie is gewijzigd.',
|
||||||
'tab_email' => 'Email',
|
'tab_email' => 'Email',
|
||||||
'tab_sms' => 'SMS',
|
'tab_sms' => 'SMS',
|
||||||
'tab_pushover' => 'Pushover',
|
'tab_pushover' => 'Pushover',
|
||||||
'tab_telegram' => 'Telegram',
|
|
||||||
'settings_email' => 'Email instellingen',
|
'settings_email' => 'Email instellingen',
|
||||||
'settings_sms' => 'SMS instellingen',
|
'settings_sms' => 'SMS instellingen',
|
||||||
'settings_pushover' => 'Pushover instellingen',
|
'settings_pushover' => 'Pushover instellingen',
|
||||||
'settings_telegram' => 'Telegram instellingen',
|
|
||||||
'settings_notification' => 'Notificatie instellingen',
|
'settings_notification' => 'Notificatie instellingen',
|
||||||
'settings_log' => 'Log instellingen',
|
'settings_log' => 'Log instellingen',
|
||||||
'settings_proxy' => 'Proxy instellingen',
|
'auto_refresh' => 'Auto-refresh',
|
||||||
'auto_refresh' => 'Herlaad automatisch',
|
'auto_refresh_servers' =>
|
||||||
'auto_refresh_description' => 'Auto-herladen servers pagina.<br><span class="small">Tijd in seconden, als de
|
'Auto-refresh servers pagina.<br/>'.
|
||||||
tijd 0 is wordt de pagina niet ververst.</span>',
|
'<span class="small">'.
|
||||||
|
'Tijd in seconden, als de tijd 0 is wordt de pagina niet ververst.'.
|
||||||
|
'</span>',
|
||||||
|
'seconds' => 'seconden',
|
||||||
'test' => 'Test',
|
'test' => 'Test',
|
||||||
'test_email' => 'Er zal een email verstuurd worden naar het email adres in je profiel.',
|
'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_sms' => 'Er zal een SMS verstuurd worden naar het telefoonnummer in je profiel.',
|
||||||
|
@ -323,44 +244,28 @@ $sm_lang = array(
|
||||||
'email_sent' => 'Email verzonden',
|
'email_sent' => 'Email verzonden',
|
||||||
'email_error' => 'Er is een fout opgetreden tijdens het verzenden',
|
'email_error' => 'Er is een fout opgetreden tijdens het verzenden',
|
||||||
'sms_sent' => 'SMS verzonden',
|
'sms_sent' => 'SMS verzonden',
|
||||||
'sms_error' => 'Er is een fout opgetreden tijdens het verzenden. %s',
|
'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.',
|
'sms_error_nomobile' => 'Kan test SMS niet verzenden: er is geen telefoonnummer ingevuld in je profiel.',
|
||||||
'pushover_sent' => 'Pushover notificatie verzonden',
|
'pushover_sent' => 'Pushover notificatie verzonden',
|
||||||
'pushover_error' => 'De volgende fout is opgetreden bij het versturen van de Pushover notificatie: %s',
|
'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
|
'pushover_error_noapp' => 'Kan test notificatie niet verzenden: er is geen Pushover App API token gevonden in de algemene configuratie.',
|
||||||
de algemene configuratie.',
|
'pushover_error_nokey' => 'Kan test notificatie niet verzenden: er is geen Pushover key gevonden in je profiel.',
|
||||||
'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' => 'Log retentie periode',
|
||||||
'log_retention_period_description' => 'Aantal dagen dat logs van notificaties en archieven van server uptime
|
'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.',
|
||||||
worden bewaard. Vul 0 in om log opruiming uit te zetten.',
|
|
||||||
'log_retention_days' => 'dagen',
|
'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.',
|
|
||||||
),
|
),
|
||||||
|
// for newlines in the email messages use <br/>
|
||||||
'notifications' => array(
|
'notifications' => array(
|
||||||
'off_sms' => 'Server %LABEL% is DOWN: ip=%IP%, poort=%PORT%. Fout=%ERROR%',
|
'off_sms' => 'Server %LABEL% is DOWN: ip=%IP%, poort=%PORT%. Fout=%ERROR%',
|
||||||
'off_email_subject' => 'BELANGRIJK: Server %LABEL% is DOWN',
|
'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:
|
'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%",
|
||||||
%PORT%<br>Fout: %ERROR%<br>Datum: %DATE%',
|
|
||||||
'off_pushover_title' => 'Server %LABEL% is DOWN',
|
'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:
|
'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%",
|
||||||
%PORT%<br>Fout: %ERROR%<br>Datum: %DATE%',
|
'on_sms' => 'Server %LABEL% is RUNNING: ip=%IP%, poort=%PORT%',
|
||||||
'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_subject' => 'BELANGRIJK: Server %LABEL% is RUNNING',
|
||||||
'on_email_body' => 'Server %LABEL% is na %LAST_OFFLINE_DURATION% weer online:<br><br>Server: %LABEL%<br>IP:
|
'on_email_body' => "Server %LABEL% is weer online:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Poort: %PORT%<br/>Datum: %DATE%",
|
||||||
%IP%<br>Poort: %PORT%<br>Datum: %DATE%',
|
|
||||||
'on_pushover_title' => 'Server %LABEL% is RUNNING',
|
'on_pushover_title' => 'Server %LABEL% is RUNNING',
|
||||||
'on_pushover_message' => 'Server %LABEL% is na %LAST_OFFLINE_DURATION% weer online:<br><br>Server:
|
'on_pushover_message' => "Server %LABEL% is weer online:<br/><br/>Server: %LABEL%<br/>IP: %IP%<br/>Poort: %PORT%<br/>Datum: %DATE%",
|
||||||
%LABEL%<br>IP: %IP%<br>Poort: %PORT%<br>Datum: %DATE%',
|
|
||||||
),
|
),
|
||||||
'login' => array(
|
'login' => array(
|
||||||
'welcome_usermenu' => 'Welkom, %user_name%',
|
'welcome_usermenu' => 'Welkom, %user_name%',
|
||||||
|
@ -377,8 +282,7 @@ $sm_lang = array(
|
||||||
'password_forgot' => 'Wachtwoord vergeten?',
|
'password_forgot' => 'Wachtwoord vergeten?',
|
||||||
'password_reset' => 'Wachtwoord herstellen',
|
'password_reset' => 'Wachtwoord herstellen',
|
||||||
'password_reset_email_subject' => 'Wijzig je wachtwoord voor PHP Server Monitor',
|
'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
|
'password_reset_email_body' => 'Gebruik de onderstaande link om je wachtwoord te wijzigen. Let op, deze link verloopt na 1 uur.<br/><br/>%link%',
|
||||||
verloopt na 1 uur.<br><br>%link%',
|
|
||||||
'error_user_incorrect' => 'De opgegeven gebruikersnaam is onjuist.',
|
'error_user_incorrect' => 'De opgegeven gebruikersnaam is onjuist.',
|
||||||
'error_login_incorrect' => 'De informatie is niet juist.',
|
'error_login_incorrect' => 'De informatie is niet juist.',
|
||||||
'error_login_passwords_nomatch' => 'De ingevulde wachtwoorden komen niet overeen.',
|
'error_login_passwords_nomatch' => 'De ingevulde wachtwoorden komen niet overeen.',
|
||||||
|
@ -388,6 +292,6 @@ $sm_lang = array(
|
||||||
),
|
),
|
||||||
'error' => array(
|
'error' => array(
|
||||||
'401_unauthorized' => 'Unauthorized',
|
'401_unauthorized' => 'Unauthorized',
|
||||||
'401_unauthorized_description' => 'Je hebt niet de juiste bevoegdheden om deze pagina te bekijken.',
|
'401_unauthorized_description' => 'U heeft niet de juiste bevoegdheden om deze pagina te bekijken.',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,409 +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 Daniel S. Billing <daniel@infihex.com>
|
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
|
||||||
* @version Release: @package_version@
|
|
||||||
* @link http://www.phpservermonitor.org/
|
|
||||||
**/
|
|
||||||
|
|
||||||
$sm_lang = array(
|
|
||||||
'name' => 'Norsk - Norwegian',
|
|
||||||
'locale' => array(
|
|
||||||
'0' => 'no_NB.UTF-8',
|
|
||||||
'1' => 'no_NB',
|
|
||||||
'2' => 'norwegian',
|
|
||||||
'3' => 'norwegian-no',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'no',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
|
||||||
'title' => 'Server Overvåking',
|
|
||||||
'install' => 'Installer',
|
|
||||||
'action' => 'Handling',
|
|
||||||
'save' => 'Lagre',
|
|
||||||
'edit' => 'Endre',
|
|
||||||
'delete' => 'Slett',
|
|
||||||
'date' => 'Dato',
|
|
||||||
'message' => 'Melding',
|
|
||||||
'yes' => 'Ja',
|
|
||||||
'no' => 'Nei',
|
|
||||||
'insert' => 'Sett inn',
|
|
||||||
'add_new' => 'Legg til ny',
|
|
||||||
'update_available' => 'En ny versjon ({versjon}) er tilgjengelig på <a
|
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
|
||||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
|
||||||
'back_to_top' => 'Tilbake til toppen',
|
|
||||||
'go_back' => 'Gå tilbake',
|
|
||||||
'ok' => 'OK',
|
|
||||||
'cancel' => 'Avbryt',
|
|
||||||
'activate' => 'Aktiver',
|
|
||||||
'short_day_format' => '%e. %B',
|
|
||||||
'long_day_format' => '%e. %B, %Y',
|
|
||||||
'yesterday_format' => 'Yesterday at %H:%M',
|
|
||||||
'other_day_format' => '%A at %H:%M',
|
|
||||||
'never' => 'Aldri',
|
|
||||||
'hours_ago' => '%d timer siden',
|
|
||||||
'an_hour_ago' => 'omtrent et time siden',
|
|
||||||
'minutes_ago' => '%d minutter siden',
|
|
||||||
'a_minute_ago' => 'omtrent et minutt siden',
|
|
||||||
'seconds_ago' => '%d sekunder siden',
|
|
||||||
'a_second_ago' => 'et sekund siden',
|
|
||||||
'year' => 'år',
|
|
||||||
'years' => 'år',
|
|
||||||
'month' => 'måned',
|
|
||||||
'months' => 'måneder',
|
|
||||||
'day' => 'dag',
|
|
||||||
'days' => 'dager',
|
|
||||||
'hour' => 'time',
|
|
||||||
'hours' => 'timer',
|
|
||||||
'minute' => 'minutt',
|
|
||||||
'minutes' => 'minutter',
|
|
||||||
'second' => 'sekund',
|
|
||||||
'seconds' => 'sekunder',
|
|
||||||
),
|
|
||||||
'menu' => array(
|
|
||||||
'config' => 'Konfig',
|
|
||||||
'server' => 'Servere',
|
|
||||||
'server_log' => 'Logg',
|
|
||||||
'server_status' => 'Status',
|
|
||||||
'server_update' => 'Oppdater',
|
|
||||||
'user' => 'Brukere',
|
|
||||||
'help' => 'Hjelp',
|
|
||||||
),
|
|
||||||
'users' => array(
|
|
||||||
'user' => 'Bruker',
|
|
||||||
'name' => 'Navn',
|
|
||||||
'user_name' => 'Brukernavn',
|
|
||||||
'password' => 'Passord',
|
|
||||||
'password_repeat' => 'Gjenta passord',
|
|
||||||
'password_leave_blank' => 'La være tom for å forbli uendret',
|
|
||||||
'level' => 'Level',
|
|
||||||
'level_10' => 'Administrator',
|
|
||||||
'level_20' => 'Bruker',
|
|
||||||
'level_description' => '<b>Administratorer</b> har full tilgang: de kan administrere servere, brukere og
|
|
||||||
redigere den globale konfigurasjonen.<br><b>Brukere</b> kan bare vise og kjøre
|
|
||||||
oppdatering for serverne som er tildelt dem.',
|
|
||||||
'mobile' => 'Mobil',
|
|
||||||
'email' => 'E-post',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'pushover_description' => 'Pushover er en tjeneste som gjør det enkelt å få meldinger i sanntid. Se <a
|
|
||||||
href="https://pushover.net/" target="_blank">deres nettside</a> for mer info.',
|
|
||||||
'pushover_key' => 'Pushover Key',
|
|
||||||
'pushover_device' => 'Pushover Device',
|
|
||||||
'pushover_device_description' => 'Enhetsnavn for å sende meldingen til. La det være tomt for å sende det
|
|
||||||
til alle enheter.',
|
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> er en chat-app som
|
|
||||||
gjør det enkelt å få meldinger i sanntid. Gå til <a
|
|
||||||
href="http://docs.phpservermonitor.org/" target="_blank">dokumentasjonen</a> for
|
|
||||||
mer informasjon og en installasjonsguide. ',
|
|
||||||
'telegram_chat_id' => 'Telegram chat-ID',
|
|
||||||
'telegram_chat_id_description' => 'Meldingen vil bli sendt til tilhørende chat.',
|
|
||||||
'telegram_get_chat_id' => 'Klikk her for å få chat-ID',
|
|
||||||
'activate_telegram' => 'Aktiver Telegram notifications',
|
|
||||||
'activate_telegram_description' => 'Tillat Telegram varsler som skal sendes til det angitte chat-IDet. Uten
|
|
||||||
denne tillatelsen tillater Telegram oss ikke å sende varsler til deg.',
|
|
||||||
'telegram_bot_username_found' => 'The bot was found!<br><a href="%s" target="_blank" rel="noopener"><button
|
|
||||||
class="btn btn-primary">Neste steg</button></a> <br>Dette åpner en chat med
|
|
||||||
bot. Her må du trykke på start ved å skrive: /start.',
|
|
||||||
'telegram_bot_username_error_token' => '401 - Unauthorized. Pass på at API-token er gyldig.',
|
|
||||||
'telegram_bot_error' => 'Det har oppstått en feil under aktivering av Telegram varsling: %s',
|
|
||||||
'delete_title' => 'Slett bruker',
|
|
||||||
'delete_message' => 'Er du sikker på at du vil slette brukeren \'%1\'?',
|
|
||||||
'deleted' => 'Bruker slettet.',
|
|
||||||
'updated' => 'Bruker oppdatert.',
|
|
||||||
'inserted' => 'Bruker lagt til.',
|
|
||||||
'profile' => 'Profil',
|
|
||||||
'profile_updated' => 'Din profil har blitt oppdatert.',
|
|
||||||
'error_user_name_bad_length' => 'Brukernavn må være mellom 2 og 64 tegn.',
|
|
||||||
'error_user_name_invalid' => 'Brukernavnet kan bare inneholde alfabetiske tegn (a-z, A-Z), sifre (0-9),
|
|
||||||
punktum (.) and understrek (_).',
|
|
||||||
'error_user_name_exists' => 'Det oppgitte brukernavnet eksisterer allerede i databasen.',
|
|
||||||
'error_user_email_bad_length' => 'E-postadresser må være mellom 5 og 255 tegn.',
|
|
||||||
'error_user_email_invalid' => 'E-postadressen er ugyldig.',
|
|
||||||
'error_user_level_invalid' => 'Det oppgitte brukernivået er ugyldig.',
|
|
||||||
'error_user_no_match' => 'Brukeren kunne ikke bli funnet i databasen.',
|
|
||||||
'error_user_password_invalid' => 'Det oppgitte passordet er ugyldig.',
|
|
||||||
'error_user_password_no_match' => 'De oppgitte passordene stemmer ikke overens.',
|
|
||||||
),
|
|
||||||
'log' => array(
|
|
||||||
'title' => 'Logg oppføringer',
|
|
||||||
'type' => 'Type',
|
|
||||||
'status' => 'Status',
|
|
||||||
'email' => 'E-post',
|
|
||||||
'sms' => 'Tekstmelding',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'no_logs' => 'Ingen logger',
|
|
||||||
'clear' => 'Tøm logg',
|
|
||||||
'delete_title' => 'Slett logg',
|
|
||||||
'delete_message' => 'Er du sikker på at du vil slette <b>alle</ b> logger?',
|
|
||||||
),
|
|
||||||
'servers' => array(
|
|
||||||
'server' => 'Server',
|
|
||||||
'status' => 'Status',
|
|
||||||
'label' => 'Label',
|
|
||||||
'domain' => 'Domene/IP',
|
|
||||||
'timeout' => 'Timeout',
|
|
||||||
'timeout_description' => 'Antall sekunder å vente på at serveren skal svare.',
|
|
||||||
'authentication_settings' => 'Autentiseringsinnstillinger',
|
|
||||||
'optional' => 'ValgfrittF',
|
|
||||||
'website_username' => 'Brukernavn',
|
|
||||||
'website_username_description' => 'Brukernavn for å få tilgang til nettstedet. (Kun Apache-godkjenning
|
|
||||||
støttes.)',
|
|
||||||
'website_password' => 'Password',
|
|
||||||
'website_password_description' => 'Passord for å få tilgang til nettstedet. Passordet er kryptert i
|
|
||||||
databasen.',
|
|
||||||
'fieldset_monitoring' => 'Overvåkning',
|
|
||||||
'fieldset_permissions' => 'Tilganger',
|
|
||||||
'port' => 'Port',
|
|
||||||
'custom_port' => 'Tilpasset Port',
|
|
||||||
'popular_ports' => 'Populære Ports',
|
|
||||||
'please_select' => 'Vennligst vent',
|
|
||||||
'type' => 'Type',
|
|
||||||
'type_website' => 'Nettside',
|
|
||||||
'type_service' => 'Tjeneste',
|
|
||||||
'type_ping' => 'Ping',
|
|
||||||
'pattern' => 'Søke streng/mønster',
|
|
||||||
'pattern_description' => 'Hvis dette mønsteret ikke er funnet på nettstedet, blir serveren merket
|
|
||||||
online/offline. Vanlige uttrykk er tillatt.',
|
|
||||||
'pattern_online' => 'Mønster indikerer at nettstedet er',
|
|
||||||
'pattern_online_description' => 'Online: Hvis dette mønsteret blir funnet på nettstedet, er serverens merke
|
|
||||||
online. Frakoblet: Hvis dette mønsteret ikke blir funnet på nettstedet,
|
|
||||||
flagges serveren offline.',
|
|
||||||
'header_name' => 'Overskriftnavn',
|
|
||||||
'header_value' => 'Overskriftsverdi',
|
|
||||||
'header_name_description' => 'Versalsensitivt.',
|
|
||||||
'header_value_description' => 'Vanlige uttrykk er tillatt.',
|
|
||||||
'last_check' => 'Siste sjekk',
|
|
||||||
'last_online' => 'Sist online',
|
|
||||||
'last_offline' => 'Sist offline',
|
|
||||||
'monitoring' => 'Overvåking',
|
|
||||||
'no_monitoring' => 'Ingen overvåking',
|
|
||||||
'email' => 'E-post',
|
|
||||||
'send_email' => 'Send e-post',
|
|
||||||
'sms' => 'Tekstmelding',
|
|
||||||
'send_sms' => 'Send tekstmelding',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'send_pushover' => 'Send Pushover melding',
|
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'send_telegram' => 'Send Telegram melding',
|
|
||||||
'users' => 'Brukere',
|
|
||||||
'delete_title' => 'Slett server',
|
|
||||||
'delete_message' => 'Er du sikker på at du vil slette serveren \'%1\'?',
|
|
||||||
'deleted' => 'Server slettet.',
|
|
||||||
'updated' => 'Server oppdatert.',
|
|
||||||
'inserted' => 'Server lagt til.',
|
|
||||||
'latency' => 'Ventetid',
|
|
||||||
'latency_max' => 'Ventetid (maximum)',
|
|
||||||
'latency_min' => 'Ventetid (minimum)',
|
|
||||||
'latency_avg' => 'Ventetid (gjennomsnitt)',
|
|
||||||
'online' => 'online',
|
|
||||||
'offline' => 'offline',
|
|
||||||
'uptime' => 'Oppetid',
|
|
||||||
'year' => 'År',
|
|
||||||
'month' => 'Måned',
|
|
||||||
'week' => 'Uke',
|
|
||||||
'day' => 'Dag',
|
|
||||||
'hour' => 'Time',
|
|
||||||
'warning_threshold' => 'Advarselsgrense',
|
|
||||||
'warning_threshold_description' => 'Antall mislykkede sjekker kreves før den er merket frakoblet.',
|
|
||||||
'chart_last_week' => 'Forrige uke',
|
|
||||||
'chart_history' => 'Historie',
|
|
||||||
'chart_day_format' => '%d-%m-%Y',
|
|
||||||
'chart_long_date_format' => '%d-%m-%Y %H:%M:%S',
|
|
||||||
'chart_short_date_format' => '%d/%m %H:%M',
|
|
||||||
'chart_short_time_format' => '%H:%M',
|
|
||||||
'warning_notifications_disabled_sms' => 'Tekstmelding varsling er deaktivert.',
|
|
||||||
'warning_notifications_disabled_email' => 'E-post varsling er deaktivert.',
|
|
||||||
'warning_notifications_disabled_pushover' => 'Pushover varsling er deaktivert.',
|
|
||||||
'warning_notifications_disabled_telegram' => 'Telegram varsling er deaktivert.',
|
|
||||||
'error_server_no_match' => 'Server ikke funnet.',
|
|
||||||
'error_server_label_bad_length' => 'Etiketten må være mellom 1 og 255 tegn.',
|
|
||||||
'error_server_ip_bad_length' => 'Domenet / IP må være mellom 1 og 255 tegn.',
|
|
||||||
'error_server_ip_bad_service' => 'IP-adressen er ikke gyldig.',
|
|
||||||
'error_server_ip_bad_website' => 'Nettstedets URL er ikke gyldig.',
|
|
||||||
'error_server_type_invalid' => 'Den valgte servertypen er ugyldig.',
|
|
||||||
'error_server_warning_threshold_invalid' => 'Advarselsgrensen må være et gyldig heltall større enn 0.',
|
|
||||||
),
|
|
||||||
'config' => array(
|
|
||||||
'general' => 'General',
|
|
||||||
'language' => 'Språk',
|
|
||||||
'show_update' => 'Se etter oppdateringer?',
|
|
||||||
'password_encrypt_key' => 'Krypteringsnøkkelpassordet',
|
|
||||||
'password_encrypt_key_note' => 'Denne nøkkelen brukes til å kryptere passord som er lagret på servere for
|
|
||||||
tilgang til nettsteder. Hvis nøkkelen endres, er det lagrede passordet
|
|
||||||
ugyldig!',
|
|
||||||
'proxy' => 'Aktiver proxy',
|
|
||||||
'proxy_url' => 'Proxy URL',
|
|
||||||
'proxy_user' => 'Proxy brukernavn',
|
|
||||||
'proxy_password' => 'Proxy passord',
|
|
||||||
'email_status' => 'Tillat sending av e-post',
|
|
||||||
'email_from_email' => 'E-post fra adresse',
|
|
||||||
'email_from_name' => 'E-post from navn',
|
|
||||||
'email_smtp' => 'Aktiver SMTP',
|
|
||||||
'email_smtp_host' => 'SMTP-vert',
|
|
||||||
'email_smtp_port' => 'SMTP-port',
|
|
||||||
'email_smtp_security' => 'SMTP-sikkerhet',
|
|
||||||
'email_smtp_security_none' => 'Ingen',
|
|
||||||
'email_smtp_username' => 'SMTP brukernavn',
|
|
||||||
'email_smtp_password' => 'SMTP passord',
|
|
||||||
'email_smtp_noauth' => 'La være tom for ingen godkjenning',
|
|
||||||
'sms_status' => 'Tillat sending av tekstmeldinger',
|
|
||||||
'sms_gateway' => 'Gateway for bruk for sending av meldinger',
|
|
||||||
'sms_gateway_username' => 'Gateway brukernavn',
|
|
||||||
'sms_gateway_password' => 'Gateway passord',
|
|
||||||
'sms_from' => 'Avsenderens telefonnummer',
|
|
||||||
'pushover_status' => 'Tillat sending av Pushover-meldinger',
|
|
||||||
'pushover_description' => 'Pushover er en tjeneste som gjør det enkelt å få meldinger i sanntid. Se <a
|
|
||||||
href="https://pushover.net/" target="_blank">deres nettside</a> for mer info.',
|
|
||||||
'pushover_clone_app' => 'Klikk her for å lage din Pushover-app',
|
|
||||||
'pushover_api_token' => 'Pushover App API Token',
|
|
||||||
'pushover_api_token_description' => 'Før du kan bruke Pushover, må du <a href="%1$s" target="_blank"
|
|
||||||
rel="noopener"> registrere en app </a> på deres nettside og angi App API
|
|
||||||
Token her.',
|
|
||||||
'telegram_status' => 'Tillat sending av Telegram-meldinger',
|
|
||||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> er en chat-app som
|
|
||||||
gjør det enkelt å få meldinger i sanntid. Gå til <a
|
|
||||||
href="http://docs.phpservermonitor.org/" target="_blank">dokumentasjonen</a> for
|
|
||||||
mer informasjon og en installasjonsveiledning.',
|
|
||||||
'telegram_api_token' => 'Telegram API Token',
|
|
||||||
'telegram_api_token_description' => 'Før du kan bruke Telegram, må du få en API-token. Gå til <a
|
|
||||||
href="http://docs.phpservermonitor.org/"
|
|
||||||
target="_blank">dokumentasjonen</a> for å få hjelp.',
|
|
||||||
'alert_type' => 'Velg når du vil bli varslet.',
|
|
||||||
'alert_type_description' => '<b>Statusendring:</b> Du vil motta et varsel når en server har endret status.
|
|
||||||
Så fra online -> offline eller offline -> online.<br><br /><b>Offline:</b> Du
|
|
||||||
vil motta et varsel når en server går offline for *FØRSTE GANG BARE*. For
|
|
||||||
eksempel,din cronjob er hver 15 minutter og serveren din går ned klokken 01:00
|
|
||||||
og holder seg ned til 06:00. Du får 1 melding klokken 01:00 og det er
|
|
||||||
det.<br><br><b>Alltid:</b> Du vil motta et varsel hver gang scriptet kjører, og
|
|
||||||
et nettsted er nede, selv om nettstedet har vært offline i flere timer.',
|
|
||||||
'alert_type_status' => 'Statusendring',
|
|
||||||
'alert_type_offline' => 'Offline',
|
|
||||||
'alert_type_always' => 'Alltid',
|
|
||||||
'alert_proxy' => 'Selv om aktivert, blir proxy aldri brukt for tjenester',
|
|
||||||
'alert_proxy_url' => 'Format: Vert:Port',
|
|
||||||
'log_status' => 'Logg status',
|
|
||||||
'log_status_description' => 'Hvis loggstatus er satt til SANT, logger monitoren på hendelsen når
|
|
||||||
meldingsinnstillingene er bestått.',
|
|
||||||
'log_email' => 'Logg e-post sendt av skriptet',
|
|
||||||
'log_sms' => 'Logg tekstmeldinger sendt av skriptet',
|
|
||||||
'log_pushover' => 'Logg pushover-meldinger sendt av skriptet',
|
|
||||||
'log_telegram' => 'Logg Telegram-meldinger sendt av skriptet',
|
|
||||||
'updated' => 'Konfigurasjonen er oppdatert.',
|
|
||||||
'tab_email' => 'E-post',
|
|
||||||
'tab_sms' => 'Tekstmelding',
|
|
||||||
'tab_pushover' => 'Pushover',
|
|
||||||
'tab_telegram' => 'Telegram',
|
|
||||||
'settings_email' => 'E-post innstillinger',
|
|
||||||
'settings_sms' => 'Tekstmelding innstillinger',
|
|
||||||
'settings_pushover' => 'Pushover innstillinger',
|
|
||||||
'settings_telegram' => 'Telegram innstillinger',
|
|
||||||
'settings_notification' => 'Varsling innstillinger',
|
|
||||||
'settings_log' => 'Logg innstillinger',
|
|
||||||
'settings_proxy' => 'Proxy innstillinger',
|
|
||||||
'auto_refresh' => 'Auto-refresh',
|
|
||||||
'auto_refresh_description' => 'Auto-refresh server side.<br><span class="small">Tid i sekunder, hvis 0 siden
|
|
||||||
ikke blir oppdatert.</span>',
|
|
||||||
'test' => 'Test',
|
|
||||||
'test_email' => 'En e-post vil bli sendt til adressen spesifisert i brukerprofilen din.',
|
|
||||||
'test_sms' => 'En tekstmelding vil bli sendt til telefonnummeret som er angitt i brukerprofilen din.',
|
|
||||||
'test_pushover' => 'En Pushover varsling vil bli sendt til brukernøkkelen/enheten som er angitt i
|
|
||||||
brukerprofilen din.',
|
|
||||||
'test_telegram' => 'Et telegramvarsling vil bli sendt til chat-ID-en spesifisert i brukerprofilen din.',
|
|
||||||
'send' => 'Send',
|
|
||||||
'test_subject' => 'Test',
|
|
||||||
'test_message' => 'Test melding',
|
|
||||||
'email_sent' => 'E-post sent',
|
|
||||||
'email_error' => 'Feil ved sending av e-post',
|
|
||||||
'sms_sent' => 'Tekstmelding sendt',
|
|
||||||
'sms_error' => 'Det har oppstått en feil under sending av tekstmelding: %s',
|
|
||||||
'sms_error_nomobile' => 'Kan ikke sende test tekstmelding: ingen gyldig telefonnummer funnet i profilen din.',
|
|
||||||
'pushover_sent' => 'Pushover varsling sendt',
|
|
||||||
'pushover_error' => 'Det har oppstått en feil under sending av Pushover-varslingen: %s',
|
|
||||||
'pushover_error_noapp' => 'Kan ikke sende testvarsling: Ingen Pushover App API-token funnet i den globale
|
|
||||||
konfigurasjonen.',
|
|
||||||
'pushover_error_nokey' => 'Kan ikke sende testvarsling: Ingen Pushover-nøkkel funnet i profilen din.',
|
|
||||||
'telegram_sent' => 'Telegram varsling sent',
|
|
||||||
'telegram_error' => 'Det har oppstått en feil under sending av telegrammeldingen: %s',
|
|
||||||
'telegram_error_notoken' => 'Kan ikke sende testvarsling: Ingen Telegram API-token funnet i den globale
|
|
||||||
konfigurasjonen.',
|
|
||||||
'telegram_error_noid' => 'Kan ikke sende testvarsling: Ingen chat-ID funnet i profilen din.',
|
|
||||||
'log_retention_period' => 'Oppbevaringsperiode for logg',
|
|
||||||
'log_retention_period_description' => 'Antall dager for å holde logger over varsler og arkiver av
|
|
||||||
serveroppetid. Skriv 0 for å deaktivere loggopprydding.',
|
|
||||||
'log_retention_days' => 'dager',
|
|
||||||
),
|
|
||||||
'notifications' => array(
|
|
||||||
'off_sms' => 'Serveren \'%LABEL%\' er NEDE: ip=%IP%, port=%PORT%. Feil=%ERROR%',
|
|
||||||
'off_email_subject' => 'VIKTIG: Serveren \'%LABEL%\' er NEDE',
|
|
||||||
'off_email_body' => 'Kunne ikke koble til følgende server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>Feil: %ERROR%<br>Dato: %DATE%',
|
|
||||||
'off_pushover_title' => 'Server \'%LABEL%\' er NEDE',
|
|
||||||
'off_pushover_message' => 'Kunne ikke koble til følgende server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>Feil: %ERROR%<br>Dato: %DATE%',
|
|
||||||
'off_telegram_message' => 'Kunne ikke koble til følgende server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>Feil: %ERROR%<br>Dato: %DATE%',
|
|
||||||
'on_sms' => 'Server \'%LABEL%\' er OPPE igjen: ip=%IP%, port=%PORT%, det var nede i %LAST_OFFLINE_DURATION%',
|
|
||||||
'on_email_subject' => 'VIKTIG: Server \'%LABEL%\' er OPPE',
|
|
||||||
'on_email_body' => 'Server \'%LABEL%\' er oppe igjen, det var nede i %LAST_OFFLINE_DURATION%:<br><br>Server:
|
|
||||||
%LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Dato: %DATE%',
|
|
||||||
'on_pushover_title' => 'Server \'%LABEL%\' er OPPE',
|
|
||||||
'on_pushover_message' => 'Server \'%LABEL%\' er oppe igjen, det var nede i
|
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Dato:
|
|
||||||
%DATE%',
|
|
||||||
'on_telegram_message' => 'Server \'%LABEL%\' er oppe igjen, det var nede i
|
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Dato:
|
|
||||||
%DATE%',
|
|
||||||
),
|
|
||||||
'login' => array(
|
|
||||||
'welcome_usermenu' => 'Velkommen, %user_name%',
|
|
||||||
'title_sign_in' => 'Vennligst logg inn',
|
|
||||||
'title_forgot' => 'Glemt passordet?',
|
|
||||||
'title_reset' => 'Tilbakestill passordet ditt',
|
|
||||||
'submit' => 'Send inn',
|
|
||||||
'remember_me' => 'Husk meg',
|
|
||||||
'login' => 'Logg inn',
|
|
||||||
'logout' => 'Logg ut',
|
|
||||||
'username' => 'Brukernavn',
|
|
||||||
'password' => 'Passord',
|
|
||||||
'password_repeat' => 'Gjenta passord',
|
|
||||||
'password_forgot' => 'Glemt passordet?',
|
|
||||||
'password_reset' => 'Tilbakestille passord',
|
|
||||||
'password_reset_email_subject' => 'Tilbakestill passordet ditt for PHP Server Monitor',
|
|
||||||
'password_reset_email_body' => 'Vennligst bruk følgende link for å tilbakestille passordet ditt. Vær
|
|
||||||
oppmerksom på at det utløper om 1 time.<br><br>%link%',
|
|
||||||
'error_user_incorrect' => 'Det oppgitte brukernavnet ble ikke funnet.',
|
|
||||||
'error_login_incorrect' => 'Informasjonen er feil.',
|
|
||||||
'error_login_passwords_nomatch' => 'De oppgitte passordene stemmer ikke overens.',
|
|
||||||
'error_reset_invalid_link' => 'Tilbakestill lenken du oppgav er ugyldig.',
|
|
||||||
'success_password_forgot' => 'En epost er sendt til deg med informasjon om hvordan du tilbakestiller passordet
|
|
||||||
ditt.',
|
|
||||||
'success_password_reset' => 'Ditt passord er tilbakestilt. Vennligst logg inn.',
|
|
||||||
),
|
|
||||||
'error' => array(
|
|
||||||
'401_unauthorized' => 'Uautorisert',
|
|
||||||
'401_unauthorized_description' => 'Du har ikke rettighetene til å se denne siden.',
|
|
||||||
),
|
|
||||||
);
|
|
|
@ -1,598 +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 Arkadiusz Klenczar <a.klenczar@gmail.com>
|
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
|
||||||
* @version Release: v3.5.2
|
|
||||||
* @link http://www.phpservermonitor.org/
|
|
||||||
**/
|
|
||||||
|
|
||||||
$sm_lang = array(
|
|
||||||
'name' => 'Polski - Polish',
|
|
||||||
'locale' => array(
|
|
||||||
'0' => 'pl_PL.UTF-8',
|
|
||||||
'1' => 'pl_PL',
|
|
||||||
'2' => 'polski',
|
|
||||||
'3' => 'polski',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'pl',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
|
||||||
'title' => 'Server Monitor',
|
|
||||||
'install' => 'Instalacja',
|
|
||||||
'action' => 'Akcja',
|
|
||||||
'save' => 'Zapisz',
|
|
||||||
'edit' => 'Edycja',
|
|
||||||
'delete' => 'Usuń',
|
|
||||||
'view' => 'Zobacz',
|
|
||||||
'date' => 'Data',
|
|
||||||
'message' => 'Wiadomość',
|
|
||||||
'yes' => 'Tak',
|
|
||||||
'no' => 'Nie',
|
|
||||||
'insert' => 'Wstaw',
|
|
||||||
'add_new' => 'Dodaj',
|
|
||||||
'update_available' => 'Nowa wersja ({version}) jest dostępna do pobrania z <a
|
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
|
||||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
|
||||||
'back_to_top' => 'Do góry',
|
|
||||||
'go_back' => 'Wstecz',
|
|
||||||
'ok' => 'pożądane',
|
|
||||||
'bad' => 'niepożądane',
|
|
||||||
'cancel' => 'Anuluj',
|
|
||||||
'none' => 'Brak',
|
|
||||||
'activate' => 'Aktywny',
|
|
||||||
'short_day_format' => '%B %e',
|
|
||||||
'long_day_format' => '%B %e, %Y',
|
|
||||||
'yesterday_format' => 'Wczoraj o %k:%M',
|
|
||||||
'other_day_format' => '%A o %k:%M',
|
|
||||||
'never' => 'Nigdy',
|
|
||||||
'hours_ago' => '%d godzin temu',
|
|
||||||
'an_hour_ago' => 'godzinę temu',
|
|
||||||
'minutes_ago' => '%d minut temu',
|
|
||||||
'a_minute_ago' => 'minutę temu',
|
|
||||||
'seconds_ago' => '%d sekund temu',
|
|
||||||
'a_second_ago' => 'sekundę temu',
|
|
||||||
'year' => 'rok',
|
|
||||||
'years' => 'lata',
|
|
||||||
'month' => 'miesiąc',
|
|
||||||
'months' => 'miesiące',
|
|
||||||
'day' => 'dzień',
|
|
||||||
'days' => 'dni',
|
|
||||||
'hour' => 'godzina',
|
|
||||||
'hours' => 'godziny',
|
|
||||||
'minute' => 'minuta',
|
|
||||||
'minutes' => 'minut',
|
|
||||||
'second' => 'sekunda',
|
|
||||||
'seconds' => 'sekundy',
|
|
||||||
'millisecond' => 'milisekunka',
|
|
||||||
'milliseconds' => 'milisekundy',
|
|
||||||
'current' => 'aktualnie',
|
|
||||||
'settings' => 'Ustawienia',
|
|
||||||
'search' => 'Szukaj',
|
|
||||||
),
|
|
||||||
'menu' => array(
|
|
||||||
'config' => 'Konfiguracja',
|
|
||||||
'server' => 'Serwery',
|
|
||||||
'server_log' => 'Logi',
|
|
||||||
'server_status' => 'Status',
|
|
||||||
'server_update' => 'Aktualizuj',
|
|
||||||
'user' => 'Użytkownicy',
|
|
||||||
'help' => 'Pomoc',
|
|
||||||
),
|
|
||||||
'users' => array(
|
|
||||||
'user' => 'Użytkownik',
|
|
||||||
'name' => 'Nazwa',
|
|
||||||
'user_name' => 'Login',
|
|
||||||
'password' => 'Hasło',
|
|
||||||
'password_repeat' => 'Powtórz hasło',
|
|
||||||
'password_leave_blank' => 'Pozostaw puste aby zaniechać zmian',
|
|
||||||
'level' => 'Poziom',
|
|
||||||
'level_10' => 'Administrator',
|
|
||||||
'level_20' => 'Użytkownik',
|
|
||||||
'level_description' => '<b>Administratorzy</b> posiadają pełny dostęp: mogą zarządzać serwerami,
|
|
||||||
użytkownikami oraz edytować konfigurację globalną.<br><b>Użytkownicy</b> mogą
|
|
||||||
podejrzeć serwer oraz uruchomić aktualizację statusu dla serwerów do nich
|
|
||||||
przypisanych.',
|
|
||||||
'mobile' => 'Telefon',
|
|
||||||
'email' => 'Email',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'pushover_description' => 'Pushover jest usługą szybkich notyfikacji. Sprawdź <a
|
|
||||||
href="https://pushover.net/" target="_blank">ich stronę</a> po więcej informacji.',
|
|
||||||
'pushover_key' => 'Pushover Key',
|
|
||||||
'pushover_device' => 'Urządzenie dla Pushover',
|
|
||||||
'pushover_device_description' => 'Nazwa urządzenia do którego wysłać powiadomienie. Pozostaw puste aby
|
|
||||||
wysłać do wszystkich urządzeń.',
|
|
||||||
'discord' => 'Discord',
|
|
||||||
'discord_label' => 'Discord',
|
|
||||||
'discord_description' => 'Podaj swoje <a href="https://discordjs.guide/popular-topics/webhooks.html"
|
|
||||||
target="_blank">webhook</a> tutaj.',
|
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> jest komunikatorem
|
|
||||||
internetowym, który umożliwa notyfikacje w czasie rzeczywistym. Odwiedź stronę
|
|
||||||
z <a href="http://docs.phpservermonitor.org/" target="_blank">documentacja</a> aby
|
|
||||||
uzyskać więcej informacji.',
|
|
||||||
'telegram_chat_id' => 'Telegram chat id',
|
|
||||||
'telegram_chat_id_description' => 'Wiadomość zostanie wysłana do odpowiedniej rozmowy.',
|
|
||||||
'telegram_get_chat_id' => 'Kliknij tutaj żeby otrzywać swój chat id',
|
|
||||||
'activate_telegram' => 'Aktywuj notyfikacje Telegram',
|
|
||||||
'activate_telegram_description' => 'Zezwól na wysyłanie notyfikacji Telegram do podanego chat id. Bez tej
|
|
||||||
zgodny Telegram nie zezwoli na wysyłanie notyfikacji do Ciebie.',
|
|
||||||
'telegram_bot_username_found' => 'Bot został odnaleziony!<br><a href="%s" target="_blank"
|
|
||||||
rel="noopener"><button class="btn btn-primary">Następny krok</button></a>
|
|
||||||
<br>Następnie otworzy się okno rozmowy z botem. Musisz nacisnąć start
|
|
||||||
lub wpisać /start.',
|
|
||||||
'telegram_bot_username_error_token' => '401 - Błąd autoryzacji. Proszę sprawdzić czy API token jest
|
|
||||||
prawidłowy.',
|
|
||||||
'telegram_bot_error' => 'Wystąpił błąd podczas aktywowania notyfikacji Telegram: %s',
|
|
||||||
'jabber' => 'Jabber',
|
|
||||||
'jabber_label' => 'Jabber',
|
|
||||||
'jabber_description' => 'Twoje konto Jabber',
|
|
||||||
'webhook' => 'Webhook',
|
|
||||||
'webhook_description' => 'Wyślij json webhook do wybranego endpoint. <br/>Zapytanie json może być dowolnie
|
|
||||||
dostosowane np. {"text":"servermon: #message"}',
|
|
||||||
'webhook_url' => 'Webhook URL',
|
|
||||||
'webhook_url_description' => 'Publiczne webhook endpoint URL powinny się zaczynać od https://.',
|
|
||||||
'webhook_json' => 'Webhook JSON',
|
|
||||||
'webhook_json_description' => 'Zdefiniuj niestandardowy json, użyj #message jak zmienną z treścią
|
|
||||||
wiadomości.',
|
|
||||||
'delete_title' => 'Usuń użytkownika',
|
|
||||||
'delete_message' => 'Czy jesteś pewny że chcesz usunąć użytkownika \'%1\'?',
|
|
||||||
'deleted' => 'Użytkownik usunięty.',
|
|
||||||
'updated' => 'Użytkownik zaktualizowany.',
|
|
||||||
'inserted' => 'Użytkownik dodany.',
|
|
||||||
'profile' => 'Profil',
|
|
||||||
'profile_updated' => 'Twój profil został zaktualizowany.',
|
|
||||||
'error_user_name_bad_length' => 'Login musi mieć od 2 do 64 znaków.',
|
|
||||||
'error_user_name_invalid' => 'Login może zawierać tylko litery (a-z, A-Z), cyfry (0-9), kropki (.) oraz znak
|
|
||||||
podkreślenia (_).',
|
|
||||||
'error_user_name_exists' => 'Wybrana nazwa użytkownika jest już używana.',
|
|
||||||
'error_user_email_bad_length' => 'Email powinien mieć od 5 do 255 znaków.',
|
|
||||||
'error_user_email_invalid' => 'Wprowadzony adres email jest nieprawidłowy.',
|
|
||||||
'error_user_level_invalid' => 'Wybrany poziom uprawnień użytkownika jest nieprawidłowy.',
|
|
||||||
'error_user_no_match' => 'Użytkownik nie został odnaleziony.',
|
|
||||||
'error_user_password_invalid' => 'Wprowadzone hasło jest nieprawidłowe.',
|
|
||||||
'error_user_password_no_match' => 'Wprowadzone hasła są różne.',
|
|
||||||
'error_user_admin_cant_be_deleted' => 'Nie można usunąć jedynego konta administratora.',
|
|
||||||
),
|
|
||||||
'log' => array(
|
|
||||||
'title' => 'Logi',
|
|
||||||
'type' => 'Typ',
|
|
||||||
'status' => 'Status',
|
|
||||||
'email' => 'Email',
|
|
||||||
'sms' => 'SMS',
|
|
||||||
'discord' => 'Discord',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'webhook' => 'Webhook',
|
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'jabber' => 'Jabber',
|
|
||||||
'no_logs' => 'Brak logów',
|
|
||||||
'clear' => 'Wyczyść log',
|
|
||||||
'delete_title' => 'Wyczyść log',
|
|
||||||
'delete_message' => 'Czy na pewno chcesz usunąć <b>wszystkie</b> dzienniki?',
|
|
||||||
),
|
|
||||||
'servers' => array(
|
|
||||||
'server' => 'Server',
|
|
||||||
'status' => 'Status',
|
|
||||||
'label' => 'Etykieta',
|
|
||||||
'domain' => 'Domena/IP',
|
|
||||||
'timeout' => 'Timeout',
|
|
||||||
'timeout_description' => 'Liczba sekund do odczekania na odpowiedź serwera.',
|
|
||||||
'authentication_settings' => 'Ustawienia uwierzytelniania',
|
|
||||||
'optional' => 'Opcjonalne',
|
|
||||||
'website_username' => 'Nazwa użytkownika',
|
|
||||||
'website_username_description' => 'Nazwa użytkownika z dostępem do strony (tylko uwierzytelnianie Apache
|
|
||||||
jest wspierana).',
|
|
||||||
'website_password' => 'Hasło',
|
|
||||||
'website_password_description' => 'Hasło dostęput do strony. Hasło zostanie zaszyfrowane i zapisane w
|
|
||||||
badzie danych.',
|
|
||||||
'fieldset_monitoring' => 'Monitoring',
|
|
||||||
'fieldset_permissions' => 'Uprawnienia',
|
|
||||||
'permissions' => 'Serwer będzie widoczny dla następujących użytkowników',
|
|
||||||
'port' => 'Port',
|
|
||||||
'custom_port' => 'Niestandardowy port',
|
|
||||||
'popular_ports' => 'Popularne porty',
|
|
||||||
'request_method' => 'Metoda HTTP',
|
|
||||||
'custom_request_method' => 'Niestandardowe metoda HTTP',
|
|
||||||
'popular_request_methods' => 'Popularne metody HTTP',
|
|
||||||
'post_field' => 'Pole Post',
|
|
||||||
'post_field_description' => 'Dane zostaną wysłane za pomocą wyżej wybranej metody.',
|
|
||||||
'please_select' => 'Proszę wybrać',
|
|
||||||
'type' => 'Typ',
|
|
||||||
'type_website' => 'Strona',
|
|
||||||
'type_service' => 'Usługa',
|
|
||||||
'type_ping' => 'Ping',
|
|
||||||
'pattern' => 'Wyszukiwane wyrażenie/wzorzec',
|
|
||||||
'pattern_description' => 'Jeśli wzorzec nie zostanie odnaleziony, status zostanie zmieniony. Dozwolone są
|
|
||||||
wyrażenia regularne.',
|
|
||||||
'pattern_online' => 'Wykrycie wzorca oznacza, że strona jest',
|
|
||||||
'pattern_online_description' => 'Online: jeżeli wzorzec zostanie wykryty na stronie to server zostanie
|
|
||||||
oznaczony jako online. Offline: jeżeli wzorzec nie zostanie wykryty na
|
|
||||||
stronie to serwer zostanie oznaczony jako offline.',
|
|
||||||
'redirect_check' => 'Przekierowanie na inną domenę jest',
|
|
||||||
'redirect_check_description' => 'Przekierowanie na inną domenę zazwyczaj jest niepożądanym zachowaniem.',
|
|
||||||
'allow_http_status' => 'Dozwolone kody odpowiedzi HTTP',
|
|
||||||
'allow_http_status_description' => 'Podaj listę dozwolonych kodów odpowiedzi HTTP, kolejne wartości
|
|
||||||
oddzielone za pomocą |. Domyślnie odpowiedzi o wartości poniżej 400
|
|
||||||
zostaną uznane jako prawidłowe.',
|
|
||||||
'header_name' => 'Nazwa nagłówka',
|
|
||||||
'header_value' => 'Wartość nagłówka',
|
|
||||||
'header_name_description' => 'Wielkość liter ma znaczenie.',
|
|
||||||
'header_value_description' => 'Dozwolone są wyrażenia regularne.',
|
|
||||||
'last_check' => 'Ostatnie sprawdzenie',
|
|
||||||
'last_online' => 'Ostatnio online',
|
|
||||||
'last_offline' => 'Ostatnio offline',
|
|
||||||
'last_output' => 'Ostatni prawidłowy wynik',
|
|
||||||
'last_error' => 'Ostatni bląd',
|
|
||||||
'last_error_output' => 'Ostatni wynik blądu',
|
|
||||||
'output' => 'Wynik',
|
|
||||||
'monitoring' => 'Monitorowany',
|
|
||||||
'no_monitoring' => 'Brak monitoringu',
|
|
||||||
'email' => 'Email',
|
|
||||||
'send_email' => 'Wyślij Email',
|
|
||||||
'sms' => 'SMS',
|
|
||||||
'send_sms' => 'Wyślij SMS',
|
|
||||||
'discord' => 'Discord',
|
|
||||||
'send_discord' => 'Wyślij powiadomienie Discord',
|
|
||||||
'webhook' => 'Webook',
|
|
||||||
'send_webhook' => 'Wyślij powiadomienie Webhook',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'send_pushover' => 'Wyślij powiadomienie Pushover',
|
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'send_telegram' => 'Wyślij powiadomienie Telegram',
|
|
||||||
'jabber' => 'Jabber',
|
|
||||||
'send_jabber' => 'Wyślij powiadomienie Jabber',
|
|
||||||
'users' => 'Użytkownicy',
|
|
||||||
'delete_title' => 'Usuń serwer',
|
|
||||||
'delete_message' => 'Czy jesteś pewny że chcesz usunąć serwer \'%1\'?',
|
|
||||||
'deleted' => 'Serwer usunięty.',
|
|
||||||
'updated' => 'Serwer zaktualizowany.',
|
|
||||||
'inserted' => 'Server dodany.',
|
|
||||||
'latency' => 'Opóźnienie',
|
|
||||||
'latency_max' => 'Opóźnienie (maksymalne)',
|
|
||||||
'latency_min' => 'Opóźnienie (minimalne)',
|
|
||||||
'latency_avg' => 'Opóźnienie (średnie)',
|
|
||||||
'online' => 'online',
|
|
||||||
'offline' => 'offline',
|
|
||||||
'uptime' => 'Czas dostępności',
|
|
||||||
'year' => 'Rok',
|
|
||||||
'month' => 'Miesiąc',
|
|
||||||
'week' => 'Tydzień',
|
|
||||||
'day' => 'Dzień',
|
|
||||||
'hour' => 'Godzina',
|
|
||||||
'warning_threshold' => 'Próg ostrzeżeń',
|
|
||||||
'warning_threshold_description' => 'Ilość wymaganych niepowodzeń przed oznaczeniem serwera jako offline.',
|
|
||||||
'ssl_cert_expiry_days' => 'Ważność certyfikatu SSL',
|
|
||||||
'ssl_cert_expiry_days_description' => 'Minimalna ilość dni, których certyfikat SSL musi być ważny.
|
|
||||||
Ustawienie wartości 0 spowoduje, że ważność certyfikatu nie
|
|
||||||
będzie sprawdzana.',
|
|
||||||
'ssl_cert_expired' => 'Certyfikat SSL wygasł',
|
|
||||||
'ssl_cert_expiring' => 'Certyfikat SSL wygaśnie:',
|
|
||||||
'chart_last_week' => 'Ostatni tydzień',
|
|
||||||
'chart_history' => 'Historia',
|
|
||||||
'chart_day_format' => '%Y-%m-%d',
|
|
||||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
|
||||||
'chart_short_date_format' => '%m/%d %H:%M',
|
|
||||||
'chart_short_time_format' => '%H:%M',
|
|
||||||
'warning_notifications_disabled_sms' => 'Powiadomienia SMS są wyłączone.',
|
|
||||||
'warning_notifications_disabled_email' => 'Powiadomienia Email są wyłączone.',
|
|
||||||
'warning_notifications_disabled_discord' => 'Powiadomienia Discord są wyłączone.',
|
|
||||||
'warning_notifications_disabled_webhook' => 'Powiadomienia Webhook są wyłączone.',
|
|
||||||
'warning_notifications_disabled_pushover' => 'Powiadomienia Pushover są wyłączone.',
|
|
||||||
'warning_notifications_disabled_telegram' => 'Powiadomienia Telegram są wyłączone.',
|
|
||||||
'warning_notifications_disabled_jabber' => 'Powiadomienia Jabber są wyłączone.',
|
|
||||||
'error_server_no_match' => 'Nie odnaleziono serwera.',
|
|
||||||
'error_server_label_bad_length' => 'Etykieta musi mieć pomiędzy 1 a 255 znaków.',
|
|
||||||
'error_server_ip_bad_length' => 'Domena/IP musi mieć pomiędzy 1 a 255 znaków.',
|
|
||||||
'error_server_ip_bad_service' => 'Adres IP jest nieprawidłowy.',
|
|
||||||
'error_server_ip_bad_website' => 'Adres URL jest nieprawidłowy.',
|
|
||||||
'error_server_type_invalid' => 'Wybrany typ serwera jest nieprawidłowy.',
|
|
||||||
'error_server_warning_threshold_invalid' => 'Próg ostrzeżeń musi być liczbą całkowitą większą od 0.',
|
|
||||||
'error_server_ssl_cert_expiry_days' => 'Minimalna ilość dla ważności certyfikatu SSL musi być liczbą
|
|
||||||
całkowitą większą lub równą 0.',
|
|
||||||
),
|
|
||||||
'config' => array(
|
|
||||||
'general' => 'Ogólne',
|
|
||||||
'site_title' => 'Tytuł strony',
|
|
||||||
'language' => 'Język',
|
|
||||||
'show_update' => 'Sprawdzić aktualizacje?',
|
|
||||||
'password_encrypt_key' => 'Klucz szyfrowania haseł',
|
|
||||||
'password_encrypt_key_note' => 'Klucz będzie użyty do szyfrowania haseł, które są zapisane w ustawieniach
|
|
||||||
serwerów żeby mieć dostęp do stron. Jeżeli klucz zostanie zmienione to
|
|
||||||
zapisane hasła będą nieprawidłowe!',
|
|
||||||
'proxy' => 'Włącz proxy',
|
|
||||||
'proxy_url' => 'Proxy ULR',
|
|
||||||
'proxy_user' => 'Użytkownik proxy',
|
|
||||||
'proxy_password' => 'Hasło proxy',
|
|
||||||
'email_status' => 'Pozwól na wysyłkę email',
|
|
||||||
'email_from_email' => 'Email z adresu',
|
|
||||||
'email_from_name' => 'Email od(nazwa)',
|
|
||||||
'email_smtp' => 'Włącz SMTP',
|
|
||||||
'email_smtp_host' => 'SMTP host',
|
|
||||||
'email_smtp_port' => 'SMTP port',
|
|
||||||
'email_smtp_security' => 'SMTP security',
|
|
||||||
'email_smtp_security_none' => 'None',
|
|
||||||
'email_smtp_username' => 'SMTP login',
|
|
||||||
'email_smtp_password' => 'SMTP hasło',
|
|
||||||
'email_smtp_noauth' => 'Pozostaw puste dla braku uwierzytelniania',
|
|
||||||
'sms_status' => 'Pozwól na wysyłkę SMS',
|
|
||||||
'sms_gateway' => 'Bramka SMS',
|
|
||||||
'sms_gateway_username' => 'Login do bramki',
|
|
||||||
'sms_gateway_password' => 'Hasło do bramki',
|
|
||||||
'sms_from' => 'Numer nadawcy',
|
|
||||||
'discord_status' => 'Zezwól na wysyłanie powiadomień Discord',
|
|
||||||
'discord_description' => 'Discord jest serwisem, który umożliwia wysyłania powiadomień w czasie
|
|
||||||
rzeczywistym. Odwiedź <a href="https://discord.com/" target="_blank">stronę
|
|
||||||
serwisu</a> żeby otrzymać więcej informacji.',
|
|
||||||
'webhook_status' => 'Zezwól na wysyłanie powiadomień webhooks.',
|
|
||||||
'webhook_description' => 'Zezwól na wysyłanie powiadomień webhooks do serwisów takich jak Slack. Endpoint
|
|
||||||
dla payload wiadomości jest zdefiniowany w ustawieniach profilu użytkownika.',
|
|
||||||
'webhook_url' => 'Webhook URL',
|
|
||||||
'webhook_url_description' => 'URL dla webhook endpoint',
|
|
||||||
'webhook_json' => 'Webhook Json',
|
|
||||||
'webhook_json_description' => 'Niestandardowsy Json, użyj #message jak zmienną z treścią wiadomości.',
|
|
||||||
'pushover_status' => 'Zezwól na wysyłanie powiadomień Pushover',
|
|
||||||
'pushover_description' => 'Pushover jest usługą ułatwiającą otrzymywanie powiadomień w czasie
|
|
||||||
rzeczywistym. Sprawdź <a href="https://pushover.net/" target="_blank">ich
|
|
||||||
stronę</a> aby uzyskać więcej informacji.',
|
|
||||||
'pushover_clone_app' => 'Kliknij tutaj aby stworzyć aplikację korzystającą z Pushover',
|
|
||||||
'pushover_api_token' => 'Pushover App API Token',
|
|
||||||
'pushover_api_token_description' => 'Zanim zaczniesz używać Pushover, musisz <a href="%1$s" target="_blank"
|
|
||||||
rel="noopener"> zarejestrować aplikację</a> na ich stronie internetowej
|
|
||||||
i wpisać tutaj App API Token.',
|
|
||||||
'telegram_status' => 'Zezwól na wysyłanie powiadomień Telegram',
|
|
||||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> jest komunikatorem
|
|
||||||
internetowym, który umożliwa notyfikacje w czasie rzeczywistym. Odwiedź stronę
|
|
||||||
z <a href="http://docs.phpservermonitor.org/" target="_blank">documentacja</a> aby
|
|
||||||
uzyskać więcej informacji.',
|
|
||||||
'telegram_api_token' => 'Telegram API Token',
|
|
||||||
'telegram_api_token_description' => 'Zanim zaczniesz używać Telegram, potrzebujesz uzyskać API Token.
|
|
||||||
Odwiedź strone z <a href="http://docs.phpservermonitor.org/"
|
|
||||||
target="_blank">dokumentacją</a> żeby uzyskać pomocy.',
|
|
||||||
'jabber_status' => 'Zezwól na wysyłanie powiadomień Jabber (XMPP)',
|
|
||||||
'jabber_description' => 'Odwiedź stronę <a href="http://docs.phpservermonitor.org/">dokumentacją</a> aby
|
|
||||||
uzyskać więcej informaji oraz przewodnik po instalacji.',
|
|
||||||
'jabber_host' => 'Host',
|
|
||||||
'jabber_host_description' => 'Adres host dostawcy Twojego konta Jabber. Dla konta Google użyj
|
|
||||||
talk.google.com.',
|
|
||||||
'jabber_port' => 'Port',
|
|
||||||
'jabber_port_description' => 'Port Twojego dostawcy Jabber. Domyślnie 5222. Dla konta Google użyj 5223.',
|
|
||||||
'jabber_username' => 'Nazwa użytkownika',
|
|
||||||
'jabber_username_description' => 'Dla konta Google użyj razem z domeną np. example@google.com.',
|
|
||||||
'jabber_domain' => 'Domena',
|
|
||||||
'jabber_domain_description' => 'Domena Twojego dostawy Jabber. Zostaw puste dla konta Google.',
|
|
||||||
'jabber_password' => 'Hasło',
|
|
||||||
'jabber_password_description' => 'Wypełnij tylko żeby ustawić lub zmienić.',
|
|
||||||
'jabber_check' => 'Sprawdź swoje konto Jabber czy powiadomienie zostało odebrane.',
|
|
||||||
'alert_type' => 'Wybierz kiedy chcesz być powiadomiony.',
|
|
||||||
'alert_type_description' => '<b>Zmiana statusu:</b> Otrzymasz powiadomienie gdy serwer zmieni status. Z online
|
|
||||||
-> offline lub offline -> online.<br><br /><b>Offline:</b> Otrzymasz
|
|
||||||
powiadomienie gdy serwer zmieni status na offline po raz pierwszy. Na przykład,
|
|
||||||
Twój cronjob uruchamia się co 15 minut, a Twój serwer przestaje odpowiadać o
|
|
||||||
13 i nie działa do 18. Otrzymasz *TYLKO* jedno powiadomienie o
|
|
||||||
13.<br><br><b>Zawsze:</b> Otrzymasz powiadomienie za każdym razem gdy skrypt
|
|
||||||
zostanie uruchomiony a strona będzie niedostępna.',
|
|
||||||
'alert_type_status' => 'Zmiana statusu',
|
|
||||||
'alert_type_offline' => 'Offline',
|
|
||||||
'alert_type_always' => 'Zawsze',
|
|
||||||
'combine_notifications' => 'Scalanie powiadomień',
|
|
||||||
'combine_notifications_description' => 'Ogranicza ilość wysyłanych powiadomień poprzez scalanie wszystkich
|
|
||||||
powiadomień w jedną wiadomość (nie dotyczy powiadomień SMS).',
|
|
||||||
'alert_proxy' => 'Jeżeli włączone to proxy nigdy nie bedzie użyte dla serwisów',
|
|
||||||
'alert_proxy_url' => 'Fomat: host:port',
|
|
||||||
'log_status' => 'Status logowania',
|
|
||||||
'log_status_description' => 'Jeśli status logowania ustawiony jest na TRUE, monitor będzie logował
|
|
||||||
wydarzenia.',
|
|
||||||
'log_email' => 'Emaile wysłane przez skrypt',
|
|
||||||
'log_sms' => 'SMS wysłane przez skrypt',
|
|
||||||
'log_discord' => 'Notyfikacje Discord wysłane przez skrypt',
|
|
||||||
'log_pushover' => 'Notyfikacje Pushover wysłane przez skrypt',
|
|
||||||
'log_webhook' => 'Notyfikacje Webhook wysłane przez skrypt',
|
|
||||||
'log_telegram' => 'Notyfikacje Telegram wysłane przez skrypt',
|
|
||||||
'log_jabber' => 'Notyfikacje Jabber wysłane przez skrypt',
|
|
||||||
'updated' => 'Konfiguracja została zaktualizowana.',
|
|
||||||
'tab_email' => 'Email',
|
|
||||||
'tab_sms' => 'SMS',
|
|
||||||
'tab_discord' => 'Discord',
|
|
||||||
'tab_pushover' => 'Pushover',
|
|
||||||
'tab_webhook' => 'Webhook',
|
|
||||||
'tab_telegram' => 'Telegram',
|
|
||||||
'tab_jabber' => 'Jabber',
|
|
||||||
'settings_email' => 'Ustawienia Email',
|
|
||||||
'settings_sms' => 'Ustawienia SMS',
|
|
||||||
'settings_discord' => 'Ustawienie Discord',
|
|
||||||
'settings_pushover' => 'Ustawienia Pushover',
|
|
||||||
'settings_webhook' => 'Ustawienia Webhook',
|
|
||||||
'settings_telegram' => 'Ustawienia Telegram',
|
|
||||||
'settings_jabber' => 'Ustawienia Jabber',
|
|
||||||
'settings_notification' => 'Ustawienia powiadomień',
|
|
||||||
'settings_log' => 'Ustawienia Logowania',
|
|
||||||
'settings_proxy' => 'Ustawienia serwera Proxy',
|
|
||||||
'auto_refresh' => 'Auto-odświeżanie',
|
|
||||||
'auto_refresh_description' => 'Auto-odświeżanie strony serwera.<br><span class="small">Czas w sekundach, dla
|
|
||||||
czasu 0 strona nie będzie odświeżana.</span>',
|
|
||||||
'test' => 'Test',
|
|
||||||
'test_email' => 'Email zostanie wysłany na adres podany w Twoim profilu.',
|
|
||||||
'test_sms' => 'SMS zostanie wysłany na numer podany w Twoim profilu.',
|
|
||||||
'test_discord' => 'Powiadomienie Discord zostanie wysłane do webhook, który został podany w Twoim profilu
|
|
||||||
użytkownika.',
|
|
||||||
'test_pushover' => 'Powiadomienie Pushover zostanie wysłane na klucz użytkownika/urządzenie podane w Twoim
|
|
||||||
profilu użytkownika.',
|
|
||||||
'test_webhook' => 'Powiadomienia Webhook zostanie wysłane do endpoint o podanym URL.',
|
|
||||||
'test_telegram' => 'Powiadomienie Telegram zostanie wysłane na chat id podane w Twoim profilu użytkownika.',
|
|
||||||
'test_jabber' => 'Powiadomienie Telegram zostanie wysłane na konto Jabber podane w Twoim profilu
|
|
||||||
użytkownika.',
|
|
||||||
'send' => 'Wyślij',
|
|
||||||
'test_subject' => 'Test',
|
|
||||||
'test_message' => 'Testowa wiadomość',
|
|
||||||
'email_sent' => 'Email wysłany',
|
|
||||||
'email_error' => 'Błąd podczas wysyłania emaila',
|
|
||||||
'sms_sent' => 'Sms wysłany',
|
|
||||||
'sms_error' => 'Błąd podczas wysyłania sms. %s',
|
|
||||||
'sms_error_nomobile' => 'Nie udało się wysłać testowego SMS: brak poprawnego telefonu w Twoim profilu.',
|
|
||||||
'discord_sent' => 'Powiadomienie Discord wysłane',
|
|
||||||
'discord_error' => 'Błąd podczas wysyłania powiadomienia Pushover: %s',
|
|
||||||
'discord_error_nowebhook' => 'Błąd podczas wysyłania powiadomienia Discord: brak prawidłowego Discord
|
|
||||||
webhook w profilu użytkownika.',
|
|
||||||
'webhook_sent' => 'Powiadomienie Webhook wysłane',
|
|
||||||
'webhook_error' => 'Błąd podczas wysyłania powiadomienia Webhook: %s',
|
|
||||||
'webhook_error_nourl' => 'Błąd podczas wysyłania testowego powiadomienia: brak Webhook URL w profilu
|
|
||||||
użytkownika.',
|
|
||||||
'webhook_error_nojson' => 'Błąd podczas wysyłania testowego powiadomienia: brak json w profilu
|
|
||||||
użytkownika.',
|
|
||||||
'pushover_sent' => 'Powiadomienie Pushover wysłane.',
|
|
||||||
'pushover_error' => 'Błąd podczas wysyłania powiadomienia Pushover: %s',
|
|
||||||
'pushover_error_noapp' => 'Błąd podczas wysyłania testowego powiadomienia: brak Pushover App API token w
|
|
||||||
konfiguracji globalnej.',
|
|
||||||
'pushover_error_nokey' => 'Błąd podczas wysyłania testowego powiadomienia: brak Pushover key na Twoim
|
|
||||||
profilu.',
|
|
||||||
'telegram_sent' => 'Powiadomienie Telegram zostało wysłane',
|
|
||||||
'telegram_error' => 'Wystąpił błąd podczas wysyłania powiadomienia Telegram: %s',
|
|
||||||
'telegram_error_notoken' => 'Nie można wysłać testowego powiadomienia: brak Telegram API token w głównych
|
|
||||||
ustawieniach systemu.',
|
|
||||||
'telegram_error_noid' => 'Nie można wysłać testowego powiadomienia: brak chat id w ustawieniach profilu
|
|
||||||
Twojego użytkownika.',
|
|
||||||
'jabber_sent' => 'Powiadomienie Jabber zostało wysłane',
|
|
||||||
'jabber_error' => 'Wystąpił błąd podczas wysyłania powiadomienia Jabber: %s',
|
|
||||||
'jabber_error_noconfig' => 'Nie można wysłać testowego powiadomienia: brak konfiguracji konta Jabber w
|
|
||||||
głównych ustawieniach systemu.',
|
|
||||||
'jabber_error_noaccount' => 'Nie można wysłać testowego powiadomienia: brak konfiguracji konta Jabber w
|
|
||||||
ustawieniach profilu Twojego użytkownika.',
|
|
||||||
'log_retention_period' => 'Czas rotacji logów',
|
|
||||||
'log_retention_period_description' => 'Liczba dni przez którą należy przetrzymywać logi powiadomień i
|
|
||||||
archiwizować uptime serwera. Wpisz 0 aby wyłączyć czyszczenie
|
|
||||||
logów.',
|
|
||||||
'log_retention_days' => 'dni',
|
|
||||||
'user_agent' => 'User Agent',
|
|
||||||
'user_agent_key_note' => 'Niestandardowy user agent używany przez monitor do komunikacji z zewnętrznymi
|
|
||||||
serwisami.',
|
|
||||||
),
|
|
||||||
'notifications' => array(
|
|
||||||
'off_sms' => 'Serwer \'%LABEL%\' przestał odpowiadać: ip=%IP%, port=%PORT%. Błąd=%ERROR%',
|
|
||||||
'off_email_subject' => 'Uwaga: Serwer \'%LABEL%\' nie odpowiada',
|
|
||||||
'off_email_body' => 'Błąd połączenia do serwera:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>Błąd: %ERROR%<br>Data: %DATE%',
|
|
||||||
'off_discord_message' => 'Błąd połączenia do serwera:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>Błąd: %ERROR%<br>Data: %DATE%',
|
|
||||||
'off_webhook_title' => 'Serwer \'%LABEL%\' nie odpowiada',
|
|
||||||
'off_webhook_message' => 'Błąd połączenia do serwera:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>Błąd: %ERROR%<br>Data: %DATE%',
|
|
||||||
'off_pushover_title' => 'Serwer \'%LABEL%\' nie odpowiada',
|
|
||||||
'off_pushover_message' => 'Błąd połączenia do serwera:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>Błąd: %ERROR%<br>Data: %DATE%',
|
|
||||||
'off_telegram_message' => 'Błąd połączenia do serwera:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>Błąd: %ERROR%<br>Data: %DATE%',
|
|
||||||
'off_jabber_message' => 'Błąd połączenia do serwera:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>Błąd: %ERROR%<br>Data: %DATE%',
|
|
||||||
'on_sms' => 'Serwer \'%LABEL%\' działa poprawnie: ip=%IP%, port=%PORT%, it was down for
|
|
||||||
%LAST_OFFLINE_DURATION%',
|
|
||||||
'on_email_subject' => 'Uwaga: Serwer \'%LABEL%\' działa poprawnie',
|
|
||||||
'on_email_body' => 'Serwer \'%LABEL%\' znów odpowiada, był offline przez
|
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Data:
|
|
||||||
%DATE%',
|
|
||||||
'on_discord_message' => 'Serwer \'%LABEL%\' znów odpowiada, był offline przez
|
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Data:
|
|
||||||
%DATE%',
|
|
||||||
'on_webhook_title' => 'Serwer \'%LABEL%\' działa poprawnie',
|
|
||||||
'on_webhook_message' => 'Serwer \'%LABEL%\' znów odpowiada, był offline przez
|
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Data:
|
|
||||||
%DATE%',
|
|
||||||
'on_pushover_title' => 'Serwer \'%LABEL%\' działa poprawnie',
|
|
||||||
'on_pushover_message' => 'Serwer \'%LABEL%\' znów działa poprawnie, był offline przez
|
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Data:
|
|
||||||
%DATE%',
|
|
||||||
'on_telegram_message' => 'Serwer \'%LABEL%\' znów działa poprawnie, był offline przez
|
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Data:
|
|
||||||
%DATE%',
|
|
||||||
'on_jabber_message' => 'Serwer \'%LABEL%\' znów działa poprawnie, był offline przez
|
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Serwer: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Data:
|
|
||||||
%DATE%',
|
|
||||||
'combi_off_email_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Error:
|
|
||||||
%ERROR%</li><li>Date: %DATE%</li></ul>',
|
|
||||||
'combi_off_discord_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>- Error: %ERROR%<br>-
|
|
||||||
Date: %DATE%<br><br>',
|
|
||||||
'combi_off_webhook_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Error:
|
|
||||||
%ERROR%</li><li>Date: %DATE%</li></ul>',
|
|
||||||
'combi_off_pushover_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Error:
|
|
||||||
%ERROR%</li><li>Date: %DATE%</li></ul>',
|
|
||||||
'combi_off_telegram_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>- Error: %ERROR%<br>-
|
|
||||||
Date: %DATE%<br><br>',
|
|
||||||
'combi_off_jabber_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>- Error: %ERROR%<br>-
|
|
||||||
Date: %DATE%<br><br>',
|
|
||||||
'combi_on_email_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Downtime:
|
|
||||||
%LAST_OFFLINE_DURATION%</li><li>Date: %DATE%</li></ul>',
|
|
||||||
'combi_on_webhook_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port: %PORT%</li><li>Downtime:
|
|
||||||
%LAST_OFFLINE_DURATION%</li><li>Date: %DATE%</li></ul>',
|
|
||||||
'combi_on_discord_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>- Downtime:
|
|
||||||
%LAST_OFFLINE_DURATION%<br>- Date: %DATE%<br><br>',
|
|
||||||
'combi_on_pushover_message' => '<ul><li>Server: %LABEL%</li><li>IP: %IP%</li><li>Port:
|
|
||||||
%PORT%</li><li>Downtime: %LAST_OFFLINE_DURATION%</li><li>Date:
|
|
||||||
%DATE%</li></ul>',
|
|
||||||
'combi_on_telegram_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>- Downtime:
|
|
||||||
%LAST_OFFLINE_DURATION%<br>- Date: %DATE%<br><br>',
|
|
||||||
'combi_on_jabber_message' => '- Server: %LABEL%<br>- IP: %IP%<br>- Port: %PORT%<br>- Downtime:
|
|
||||||
%LAST_OFFLINE_DURATION%<br>- Date: %DATE%<br><br>',
|
|
||||||
'combi_email_subject' => 'WAŻNE: \'%UP%\' serverów znowu ONLINE, \'%DOWN%\' serverów jest OFFLINE',
|
|
||||||
'combi_webhook_subject' => '\'%UP%\' serverów jest znowu ONLINE UP, \'%DOWN%\' serverów jest OFFLINE',
|
|
||||||
'combi_pushover_subject' => '\'%UP%\' serverów jest znowu ONLINE UP, \'%DOWN%\' serverów jest OFFLINE',
|
|
||||||
'combi_email_message' => '<b>Następujące serwery są offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
|
|
||||||
serwery są znowu online:</b><br>%UP_SERVERS%',
|
|
||||||
'combi_discord_message' => '<b>Następujące serwery są offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
|
|
||||||
serwery są znowu online:</b><br>%UP_SERVERS%',
|
|
||||||
'combi_webhook_message' => '<b>Następujące serwery są offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
|
|
||||||
serwery są znowu online:</b><br>%UP_SERVERS%',
|
|
||||||
'combi_pushover_message' => '<b>Następujące serwery są offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
|
|
||||||
serwery są znowu online:</b><br>%UP_SERVERS%',
|
|
||||||
'combi_telegram_message' => '<b>Następujące serwery są offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
|
|
||||||
serwery są znowu online:</b><br>%UP_SERVERS%',
|
|
||||||
'combi_jabber_message' => '<b>Następujące serwery są offline:</b><br>%DOWN_SERVERS%<br><b>Następujące
|
|
||||||
serwery są znowu online:</b><br>%UP_SERVERS%',
|
|
||||||
),
|
|
||||||
'login' => array(
|
|
||||||
'welcome_usermenu' => 'Witaj, %user_name%',
|
|
||||||
'title_sign_in' => 'Zaloguj się',
|
|
||||||
'title_forgot' => 'Zapomniałeś hasła?',
|
|
||||||
'title_reset' => 'Zresetuj hasło',
|
|
||||||
'submit' => 'Zapisz',
|
|
||||||
'remember_me' => 'Zapamiętaj mnie',
|
|
||||||
'login' => 'Zaloguj',
|
|
||||||
'logout' => 'Wyloguj',
|
|
||||||
'username' => 'Login',
|
|
||||||
'password' => 'Hasło',
|
|
||||||
'password_repeat' => 'Powtórz hasło',
|
|
||||||
'password_forgot' => 'Zapomniałeś hasła?',
|
|
||||||
'password_reset' => 'Zresetuj hasło',
|
|
||||||
'password_reset_email_subject' => 'Zresetuj hasło do monitoringu',
|
|
||||||
'password_reset_email_body' => 'Aby zresetować hasło użyj tego linku. Ważność linku to jedna
|
|
||||||
godzina.<br><br>%link%',
|
|
||||||
'error_user_incorrect' => 'Brak użytkownika o takim loginie.',
|
|
||||||
'error_login_incorrect' => 'Login lub hasło jest błędne.',
|
|
||||||
'error_login_passwords_nomatch' => 'Podane hasła nie pasują do siebie.',
|
|
||||||
'error_reset_invalid_link' => 'Podany link do zmiany hasła jest nieprawidłowy.',
|
|
||||||
'success_password_forgot' => 'Email został wysłany do Ciebie z informacjami dotyczącymi zresetowania
|
|
||||||
hasła.',
|
|
||||||
'success_password_reset' => 'Twoje hasło zostało pomyślnie zmienione. Zaloguj się.',
|
|
||||||
),
|
|
||||||
'error' => array(
|
|
||||||
'401_unauthorized' => 'Brak autoryzacji',
|
|
||||||
'401_unauthorized_description' => 'Nie masz odpowiednich praw dostępu by przeglądać tę stronę.',
|
|
||||||
),
|
|
||||||
);
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -20,7 +19,7 @@
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Luiz Alberto S. Ribeiro <madeinnordeste@gmail.com>
|
* @author Luiz Alberto S. Ribeiro <madeinnordeste@gmail.com>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
|
@ -28,13 +27,7 @@
|
||||||
|
|
||||||
$sm_lang = array(
|
$sm_lang = array(
|
||||||
'name' => 'Português - Brazilian Portuguese',
|
'name' => 'Português - Brazilian Portuguese',
|
||||||
'locale' => array(
|
'locale' => array('pt_BR.UTF-8', 'pt_BR', 'portuguese-brazilian'),
|
||||||
'0' => 'pt_BR.UTF-8',
|
|
||||||
'1' => 'pt_BR',
|
|
||||||
'2' => 'portuguese-brazilian',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'BR',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
'system' => array(
|
||||||
'title' => 'Server Monitor',
|
'title' => 'Server Monitor',
|
||||||
'install' => 'Instalar',
|
'install' => 'Instalar',
|
||||||
|
@ -48,13 +41,12 @@ $sm_lang = array(
|
||||||
'no' => 'Não',
|
'no' => 'Não',
|
||||||
'insert' => 'Inserir',
|
'insert' => 'Inserir',
|
||||||
'add_new' => 'Adicionar novo',
|
'add_new' => 'Adicionar novo',
|
||||||
'update_available' => 'Uma atualização ({version}) disponível em <a
|
'update_available' => 'Uma atualização ({version}) disponível em <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
|
||||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
|
||||||
'back_to_top' => 'Voltar ao topo',
|
'back_to_top' => 'Voltar ao topo',
|
||||||
'go_back' => 'Voltar',
|
'go_back' => 'Voltar',
|
||||||
'ok' => 'OK',
|
'ok' => 'OK',
|
||||||
'cancel' => 'Cancel',
|
'cancel' => 'Cancel',
|
||||||
|
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||||
'short_day_format' => '%e %m',
|
'short_day_format' => '%e %m',
|
||||||
'long_day_format' => '%e/%m/%Y',
|
'long_day_format' => '%e/%m/%Y',
|
||||||
'yesterday_format' => 'Ontem as %k:%M',
|
'yesterday_format' => 'Ontem as %k:%M',
|
||||||
|
@ -66,7 +58,6 @@ $sm_lang = array(
|
||||||
'a_minute_ago' => 'cerca de um minuto atrás',
|
'a_minute_ago' => 'cerca de um minuto atrás',
|
||||||
'seconds_ago' => '%d segundos atrás',
|
'seconds_ago' => '%d segundos atrás',
|
||||||
'a_second_ago' => 'um segundo atrás',
|
'a_second_ago' => 'um segundo atrás',
|
||||||
'seconds' => 'segundos',
|
|
||||||
),
|
),
|
||||||
'menu' => array(
|
'menu' => array(
|
||||||
'config' => 'Configuração',
|
'config' => 'Configuração',
|
||||||
|
@ -87,28 +78,23 @@ $sm_lang = array(
|
||||||
'level' => 'Nível',
|
'level' => 'Nível',
|
||||||
'level_10' => 'Administrador',
|
'level_10' => 'Administrador',
|
||||||
'level_20' => 'Usuário',
|
'level_20' => 'Usuário',
|
||||||
'level_description' => '<b>Administradores</b> Tem total acesso: podem gerenciar servidores, usuários e
|
'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.',
|
||||||
configurações globais.<br><b>Usuários</b> só podem executar atualizações para
|
|
||||||
servidores que lhe foram atribuídos.',
|
|
||||||
'mobile' => 'Celular',
|
'mobile' => 'Celular',
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'pushover_description' => 'Pushover para enviar notificações em real-tome. Veja <a
|
'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.',
|
||||||
href="https://pushover.net/" target="_blank">o website</a> para mais informações.',
|
|
||||||
'pushover_key' => 'Pushover Key',
|
'pushover_key' => 'Pushover Key',
|
||||||
'pushover_device' => 'Pushover Device',
|
'pushover_device' => 'Pushover Device',
|
||||||
'pushover_device_description' => 'Nome do Device para enviar a mensagem. Deixe em branco para enviar a todos
|
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||||
os Devices.',
|
'delete_title' => 'Delete User',
|
||||||
'delete_title' => 'Excluir Usuário',
|
'delete_message' => 'Are you sure you want to delete user \'%1\'?',
|
||||||
'delete_message' => 'Tem certeza que deseja excluir o usuário \'%1\'?',
|
'deleted' => 'User deleted.',
|
||||||
'deleted' => 'Usuário excluído.',
|
|
||||||
'updated' => 'Usuário atualizado.',
|
'updated' => 'Usuário atualizado.',
|
||||||
'inserted' => 'Usuário adicionado.',
|
'inserted' => 'Usuário adicionado.',
|
||||||
'profile' => 'Perfil',
|
'profile' => 'Perfil',
|
||||||
'profile_updated' => 'Seu perfil foi atualizado.',
|
'profile_updated' => 'Seu perfil foi atualizado.',
|
||||||
'error_user_name_bad_length' => 'Usernames deve conter entre 2 e 64 caracteres.',
|
'error_user_name_bad_length' => 'Usernames deve conter entre 2 e 64 caracteres.',
|
||||||
'error_user_name_invalid' => 'Só pode conter caracteres alfabéticos (a-z, A-Z), dígitos (0-9), pontos (.) e
|
'error_user_name_invalid' => 'Só pode conter caracteres alfabéticos (a-z, A-Z), dígitos (0-9) e underscores (_).',
|
||||||
underscores (_).',
|
|
||||||
'error_user_name_exists' => 'O nome de usuário(username) já existe no banco de dados',
|
'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_bad_length' => 'Email deve conter entre 5 e 255 caracteres.',
|
||||||
'error_user_email_invalid' => 'O endereço de email é inválido.',
|
'error_user_email_invalid' => 'O endereço de email é inválido.',
|
||||||
|
@ -124,10 +110,7 @@ $sm_lang = array(
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'no_logs' => 'Sem logs',
|
'no_logs' => 'No logs',
|
||||||
'clear' => 'Log clara',
|
|
||||||
'delete_title' => 'Log clara',
|
|
||||||
'delete_message' => 'Tem certeza de que deseja excluir <b>todos</b> os logs?',
|
|
||||||
),
|
),
|
||||||
'servers' => array(
|
'servers' => array(
|
||||||
'server' => 'Servidor',
|
'server' => 'Servidor',
|
||||||
|
@ -135,28 +118,26 @@ $sm_lang = array(
|
||||||
'label' => 'Etiqueta',
|
'label' => 'Etiqueta',
|
||||||
'domain' => 'Domínio/IP',
|
'domain' => 'Domínio/IP',
|
||||||
'timeout' => 'Timeout',
|
'timeout' => 'Timeout',
|
||||||
'timeout_description' => 'Segundos para aguardar a resposta do servidor.',
|
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||||
'port' => 'Porta',
|
'port' => 'Porta',
|
||||||
'type' => 'Tipo',
|
'type' => 'Tipo',
|
||||||
'type_website' => 'Website',
|
'type_website' => 'Website',
|
||||||
'type_service' => 'Service',
|
'type_service' => 'Service',
|
||||||
'pattern' => 'Pesquisa palavra/padrão',
|
'pattern' => 'Pesquisa palavra/padrão',
|
||||||
'pattern_description' => 'Se esse padrão não for encontrado no site, o servidor será marcado offline. As
|
'pattern_description' => 'Se esse padrão não for encontrado no site, o servidor será marcado offline. As expressões regulares são permitidas.',
|
||||||
expressões regulares são permitidas.',
|
|
||||||
'last_check' => 'Última verificação',
|
'last_check' => 'Última verificação',
|
||||||
'last_online' => 'Última vez online',
|
'last_online' => 'Última vez online',
|
||||||
'last_offline' => 'Última vez offline',
|
|
||||||
'monitoring' => 'Monitoramento',
|
'monitoring' => 'Monitoramento',
|
||||||
'no_monitoring' => 'Sem monitoring',
|
'no_monitoring' => 'No monitoring',
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'send_email' => 'Enviar Email',
|
'send_email' => 'Enviar Email',
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
'send_sms' => 'Enviar SMS',
|
'send_sms' => 'Enviar SMS',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'users' => 'Usuários',
|
'users' => 'Users',
|
||||||
'delete_title' => 'Exluir Servidor',
|
'delete_title' => 'Delete Server',
|
||||||
'delete_message' => 'Tem certeza que deseja excluir o servidor \'%1\'?',
|
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
|
||||||
'deleted' => 'Servidor excluído.',
|
'deleted' => 'Server deleted.',
|
||||||
'updated' => 'Servidor atualizado.',
|
'updated' => 'Servidor atualizado.',
|
||||||
'inserted' => 'Servidor adicionar.',
|
'inserted' => 'Servidor adicionar.',
|
||||||
'latency' => 'Tempo de resposta',
|
'latency' => 'Tempo de resposta',
|
||||||
|
@ -168,25 +149,26 @@ $sm_lang = array(
|
||||||
'month' => 'Mês',
|
'month' => 'Mês',
|
||||||
'week' => 'Semana',
|
'week' => 'Semana',
|
||||||
'day' => 'Dia',
|
'day' => 'Dia',
|
||||||
'hour' => 'Hora',
|
'hour' => 'HOra',
|
||||||
'warning_threshold' => 'Limite de Aviso',
|
'warning_threshold' => 'Limite de Aviso',
|
||||||
'warning_threshold_description' => 'Número de verificações que falharam antes de ser marcado offline.',
|
'warning_threshold_description' => 'Número de verificações que falharam antes de ser marcado offline.',
|
||||||
'chart_last_week' => 'Última semana',
|
'chart_last_week' => 'Última semana',
|
||||||
'chart_history' => 'Histórico',
|
'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_day_format' => '%d/%m/%Y',
|
||||||
'chart_long_date_format' => '%d/%m/%Y %H:%M:%S',
|
'chart_long_date_format' => '%d/%m/%Y %H:%M:%S',
|
||||||
'chart_short_date_format' => '%d/%m %H:%M',
|
'chart_short_date_format' => '%d/%m %H:%M',
|
||||||
'chart_short_time_format' => '%H:%M',
|
'chart_short_time_format' => '%H:%M',
|
||||||
'warning_notifications_disabled_sms' => 'Notificações SMS estão desabilitadas.',
|
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||||
'warning_notifications_disabled_email' => 'Notificações por email estão desabilitadas.',
|
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||||
'warning_notifications_disabled_pushover' => 'Notificações por Pushover estão desabilitadas.',
|
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||||
'error_server_no_match' => 'Servidor não encontrado.',
|
'error_server_no_match' => 'Server not found.',
|
||||||
'error_server_label_bad_length' => 'A etiqueta deve ter entre 1 e 255 caracteres.',
|
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
||||||
'error_server_ip_bad_length' => 'O domínio / IP deve ter entre 1 e 255 caracteres.',
|
'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.',
|
||||||
'error_server_ip_bad_service' => 'O IP não é válido.',
|
'error_server_ip_bad_service' => 'The IP address is not valid.',
|
||||||
'error_server_ip_bad_website' => 'A URL não é válida.',
|
'error_server_ip_bad_website' => 'The website URL is not valid.',
|
||||||
'error_server_type_invalid' => 'O tipo de servidor selecionado não é valido.',
|
'error_server_type_invalid' => 'The selected server type is invalid.',
|
||||||
'error_server_warning_threshold_invalid' => 'O limite de aviso deve ser um número inteiro maior que 0.',
|
'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
|
||||||
),
|
),
|
||||||
'config' => array(
|
'config' => array(
|
||||||
'general' => 'Geral',
|
'general' => 'Geral',
|
||||||
|
@ -198,39 +180,41 @@ $sm_lang = array(
|
||||||
'email_smtp' => 'Enable SMTP',
|
'email_smtp' => 'Enable SMTP',
|
||||||
'email_smtp_host' => 'SMTP host',
|
'email_smtp_host' => 'SMTP host',
|
||||||
'email_smtp_port' => 'SMTP port',
|
'email_smtp_port' => 'SMTP port',
|
||||||
'email_smtp_security' => 'SMTP security',
|
|
||||||
'email_smtp_security_none' => 'None',
|
|
||||||
'email_smtp_username' => 'SMTP username',
|
'email_smtp_username' => 'SMTP username',
|
||||||
'email_smtp_password' => 'SMTP password',
|
'email_smtp_password' => 'SMTP password',
|
||||||
'email_smtp_noauth' => 'Deixe em branco para nenhuma autenticação',
|
'email_smtp_noauth' => 'Deixe em branco para nenhuma autenticação',
|
||||||
'sms_status' => 'Habilitar o envio de mensagem de texto?',
|
'sms_status' => 'Habilitar o envio de mensagem de texto?',
|
||||||
'sms_gateway' => 'Gateway para o uso de envio de mensagens',
|
'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_username' => 'Usuário do Gateway',
|
||||||
'sms_gateway_password' => 'Senha do Gateway',
|
'sms_gateway_password' => 'Senha do Gateway',
|
||||||
'sms_from' => 'Número de telefone de envio',
|
'sms_from' => 'Número de telefone de envio',
|
||||||
'pushover_status' => 'Habilitar envio de mensagens Pushover',
|
'pushover_status' => 'Allow sending Pushover messages',
|
||||||
'pushover_description' => 'Pushover é um serviço de notificações em tempo real. Veja <a
|
'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.',
|
||||||
href="https://pushover.net/" target="_blank">o website</a> para mais informações.',
|
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||||
'pushover_clone_app' => 'Clique aqui para criar sua app Pushover',
|
|
||||||
'pushover_api_token' => 'Pushover App API Token',
|
'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"
|
'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.',
|
||||||
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' => 'Selecione como você gostaria de ser notificado.',
|
||||||
'alert_type_description' => '<b>Mudança de Status:</b> Você receberá uma notificação quando o seridor
|
'alert_type_description' => '<b>Mudança de Status:</b> '.
|
||||||
tive uma mudança de status. De online -> offline ou offline -> online.<br><br
|
'Você receberá uma notificação quando o seridor tive uma mudança de status. De online -> offline ou offline -> online.<br/>'.
|
||||||
/><b>Offline:</b> Você receberá uma notificação quando o servidor fica
|
'<br /><b>Offline:</b> '.
|
||||||
OFFLINE (Pela primeira vez). Por exemplo, A cronjob é a cada 15 minutos e seu
|
'Você receberá uma notificação quando o servidor fica OFFLINE (Pela primeira vez). Por exemplo, '.
|
||||||
servidor caiu em 1:00 e permanece offline até 6 am. Você receberá uma
|
'A cronjob é a cada 15 minutos e seu servidor caiu em 1:00 e permanece offline até 6 am. '.
|
||||||
notificação a 1:00 apenas<br><br><b>Sempre:</b> Você receberá uma
|
'Você receberá uma notificação a 1:00 apenas<br/>'.
|
||||||
notificação toda vez que o script é executado e um site esta offline, mesmo se
|
'<br><b>Sempre:</b> '.
|
||||||
o site tenha ficado offline por horas.',
|
'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_status' => 'Mudança de Status',
|
||||||
'alert_type_offline' => 'Offline',
|
'alert_type_offline' => 'Offline',
|
||||||
'alert_type_always' => 'Sempre',
|
'alert_type_always' => 'Sempre',
|
||||||
'log_status' => 'Log status',
|
'log_status' => 'Log status',
|
||||||
'log_status_description' => 'Se o status de registro é definido como TRUE, o monitor irá registrar o evento
|
'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.',
|
||||||
sempre que as configurações de notificação forem passadas.',
|
|
||||||
'log_email' => 'Registrar no Log os envios de email feitos pelo script?',
|
'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_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',
|
||||||
|
@ -244,51 +228,44 @@ $sm_lang = array(
|
||||||
'settings_notification' => 'Configuração de notificações',
|
'settings_notification' => 'Configuração de notificações',
|
||||||
'settings_log' => 'Configuração de Logs',
|
'settings_log' => 'Configuração de Logs',
|
||||||
'auto_refresh' => 'Atualizar automaticamente',
|
'auto_refresh' => 'Atualizar automaticamente',
|
||||||
'auto_refresh_description' => 'Atualizar automaticamente a página de servidores.<br><span class="small">Tempo
|
'auto_refresh_servers' =>
|
||||||
em segundos, Se 0 a página não será atualizada.</span>',
|
'Atualizar automaticamente a página de servidores.<br/>'.
|
||||||
'test' => 'Teste',
|
'<span class="small">'.
|
||||||
'test_email' => 'Um e-mail será enviado para o endereço especificado em seu perfil de usuário.',
|
'Tempo em segundos, Se 0 a página não será atualizada.'.
|
||||||
'test_sms' => 'Um SMS será enviado para o número de telefone especificado em seu perfil de usuário.',
|
'</span>',
|
||||||
'test_pushover' => 'A notificação Pushover será enviado para a chave de usuário / dispositivo especificado
|
'seconds' => 'segundos',
|
||||||
em seu perfil de usuário.',
|
'test' => 'Test',
|
||||||
'send' => 'Enviar',
|
'test_email' => 'An email will be sent to the address specified in your user profile.',
|
||||||
'test_subject' => 'Teste',
|
'test_sms' => 'An SMS will be sent to the phone number specified in your user profile.',
|
||||||
'test_message' => 'Mensagem de Teste',
|
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||||
'email_sent' => 'Email enviado',
|
'send' => 'Send',
|
||||||
'email_error' => 'Erro no envio do email',
|
'test_subject' => 'Test',
|
||||||
'sms_sent' => 'Sms enviado',
|
'test_message' => 'Test message',
|
||||||
'sms_error' => 'Error no envio do SMS. %s',
|
'email_sent' => 'Email sent',
|
||||||
'sms_error_nomobile' => 'Não foi possível enviar SMS de teste: nenhum número de telefone válido encontrado
|
'email_error' => 'Error in email sending',
|
||||||
em seu perfil.',
|
'sms_sent' => 'Sms sent',
|
||||||
'pushover_sent' => 'Notificação Pushover enviada',
|
'sms_error' => 'Error in sms sending',
|
||||||
'pushover_error' => 'Um erro foi encontrado ao enviar a notificação Pushover: %s',
|
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||||
'pushover_error_noapp' => 'Não foi possível enviar a notificação de teste: não foi encontrada a APP API
|
'pushover_sent' => 'Pushover notification sent',
|
||||||
token do Pushover na configuração global.',
|
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||||
'pushover_error_nokey' => 'Não foi possível enviar a notificação de teste: não foi encontrada a Pushover
|
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||||
Key no seu perfil.',
|
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||||
'log_retention_period' => 'Período de retenção do Log',
|
'log_retention_period' => 'Log retention period',
|
||||||
'log_retention_period_description' => 'Número de dias para manter os registros de notificações e arquivos
|
'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.',
|
||||||
de tempo de atividade do servidor. Digite 0 para desativar a limpeza de
|
'log_retention_days' => 'days',
|
||||||
registro.',
|
|
||||||
'log_retention_days' => 'dias',
|
|
||||||
),
|
),
|
||||||
|
// for newlines in the email messages use <br/>
|
||||||
'notifications' => array(
|
'notifications' => array(
|
||||||
'off_sms' => 'Servidor \'%LABEL%\' está OFFLINE: ip=%IP%, porta=%PORT%. Erro=%ERROR%',
|
'off_sms' => 'Servidor \'%LABEL%\' está OFFLINE: ip=%IP%, porta=%PORT%. Erro=%ERROR%',
|
||||||
'off_email_subject' => 'IMPORTANTE: Servidor \'%LABEL%\' está OFFLINE',
|
'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:
|
'off_email_body' => "Falha ao conectar ao servidor:<br/><br/>Servidor: %LABEL%<br/>IP: %IP%<br/>Porta: %PORT%<br/>Erro: %ERROR%<br/>Data: %DATE%",
|
||||||
%PORT%<br>Erro: %ERROR%<br>Data: %DATE%',
|
|
||||||
'off_pushover_title' => 'Servidor \'%LABEL%\' está OFFLINE',
|
'off_pushover_title' => 'Servidor \'%LABEL%\' está OFFLINE',
|
||||||
'off_pushover_message' => 'Falha ao conectar ao servidor:<br><br>Servidor: %LABEL%<br>IP: %IP%<br>Porta:
|
'off_pushover_message' => "Falha ao conectar ao servidor:<br/><br/>Servidor: %LABEL%<br/>IP: %IP%<br/>Porta: %PORT%<br/>Erro: %ERROR%<br/>Data: %DATE%",
|
||||||
%PORT%<br>Erro: %ERROR%<br>Data: %DATE%',
|
'on_sms' => 'Servidor \'%LABEL%\' esta ONLINE: ip=%IP%, porta=%PORT%',
|
||||||
'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_subject' => 'IMPORTANTE: Servidor \'%LABEL%\' esta ONLINE',
|
||||||
'on_email_body' => 'Servidor \'%LABEL%\' esta ONLINE novamente, it was down for
|
'on_email_body' => "Servidor '%LABEL%' esta ONLINE novamente:<br/><br/>Servidor: %LABEL%<br/>IP: %IP%<br/>Porta: %PORT%<br/>Data: %DATE%",
|
||||||
%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_title' => 'Servidor \'%LABEL%\' esta ONLINE',
|
||||||
'on_pushover_message' => 'Servidor \'%LABEL%\' esta ONLINE novamente, it was down for
|
'on_pushover_message' => "Servidor '%LABEL%' esta ONLINE novamente:<br/><br/>Servidor: %LABEL%<br/>IP: %IP%<br/>Porta: %PORT%<br/>Data: %DATE%",
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Servidor: %LABEL%<br>IP: %IP%<br>Porta:
|
|
||||||
%PORT%<br>Data: %DATE%',
|
|
||||||
),
|
),
|
||||||
'login' => array(
|
'login' => array(
|
||||||
'welcome_usermenu' => 'Bem vindo, %user_name%',
|
'welcome_usermenu' => 'Bem vindo, %user_name%',
|
||||||
|
@ -305,8 +282,7 @@ $sm_lang = array(
|
||||||
'password_forgot' => 'Perdeu a senha?',
|
'password_forgot' => 'Perdeu a senha?',
|
||||||
'password_reset' => 'Redefinir senha',
|
'password_reset' => 'Redefinir senha',
|
||||||
'password_reset_email_subject' => 'Redefinir sua senha para PHP Server Monitor',
|
'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
|
'password_reset_email_body' => 'Por favor use o link para redefinir sua senha. Este link irá expirar em 1 hora.<br/><br/>%link%',
|
||||||
hora.<br><br>%link%',
|
|
||||||
'error_user_incorrect' => 'O username não pode ser encontrado.',
|
'error_user_incorrect' => 'O username não pode ser encontrado.',
|
||||||
'error_login_incorrect' => 'As informações são incorretas.',
|
'error_login_incorrect' => 'As informações são incorretas.',
|
||||||
'error_login_passwords_nomatch' => 'A senha informada não é válida.',
|
'error_login_passwords_nomatch' => 'A senha informada não é válida.',
|
||||||
|
@ -315,7 +291,7 @@ $sm_lang = array(
|
||||||
'success_password_reset' => 'Sua senha foi redefinida com sucesso. Por favor faça login.',
|
'success_password_reset' => 'Sua senha foi redefinida com sucesso. Por favor faça login.',
|
||||||
),
|
),
|
||||||
'error' => array(
|
'error' => array(
|
||||||
'401_unauthorized' => 'Não autorizado',
|
'401_unauthorized' => 'Unauthorized',
|
||||||
'401_unauthorized_description' => 'Você não tem autorização para ver esta página.',
|
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -20,22 +19,15 @@
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Roman Beylin <roman.beylin@yandex.ru>
|
* @author Roman Beylin <roman.beylin@yandex.ru>
|
||||||
* @author Alexell <alexell@alexell.ru>
|
* @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
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
**/
|
**/
|
||||||
|
|
||||||
$sm_lang = array(
|
$sm_lang = array(
|
||||||
'name' => 'Русский - Russian',
|
'name' => 'Russian - Русский',
|
||||||
'locale' => array(
|
'locale' => array('ru_RU.UTF-8', 'ru_RU', 'russian', 'russian'),
|
||||||
'0' => 'ru_RU.UTF-8',
|
|
||||||
'1' => 'ru_RU',
|
|
||||||
'2' => 'russian',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'ru',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
'system' => array(
|
||||||
'title' => 'Сервер Мониторинг',
|
'title' => 'Сервер Мониторинг',
|
||||||
'install' => 'Установка',
|
'install' => 'Установка',
|
||||||
|
@ -49,14 +41,12 @@ $sm_lang = array(
|
||||||
'no' => 'Нет',
|
'no' => 'Нет',
|
||||||
'insert' => 'Добавить',
|
'insert' => 'Добавить',
|
||||||
'add_new' => 'Добавить новый',
|
'add_new' => 'Добавить новый',
|
||||||
'update_available' => 'Новая версия ({version}) доступна по адресу <a
|
'update_available' => 'Новая версия ({version}) доступна по адресу <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
|
||||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
|
||||||
'back_to_top' => 'Наверх',
|
'back_to_top' => 'Наверх',
|
||||||
'go_back' => 'Вернуться',
|
'go_back' => 'Вернуться',
|
||||||
'ok' => 'OK',
|
'ok' => 'OK',
|
||||||
'cancel' => 'Отмена',
|
'cancel' => 'Отмена',
|
||||||
'activate' => 'Активировать',
|
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||||
'short_day_format' => '%e %B',
|
'short_day_format' => '%e %B',
|
||||||
'long_day_format' => '%e %B %Y',
|
'long_day_format' => '%e %B %Y',
|
||||||
'yesterday_format' => 'Вчера в %k:%M',
|
'yesterday_format' => 'Вчера в %k:%M',
|
||||||
|
@ -68,18 +58,6 @@ $sm_lang = array(
|
||||||
'a_minute_ago' => 'минуту назад',
|
'a_minute_ago' => 'минуту назад',
|
||||||
'seconds_ago' => '%d секунд назад',
|
'seconds_ago' => '%d секунд назад',
|
||||||
'a_second_ago' => 'секунду назад',
|
'a_second_ago' => 'секунду назад',
|
||||||
'year' => 'год',
|
|
||||||
'years' => 'лет',
|
|
||||||
'month' => 'месяц',
|
|
||||||
'months' => 'месяцев',
|
|
||||||
'day' => 'день',
|
|
||||||
'days' => 'дней',
|
|
||||||
'hour' => 'час',
|
|
||||||
'hours' => 'часов',
|
|
||||||
'minute' => 'минута',
|
|
||||||
'minutes' => 'минут',
|
|
||||||
'second' => 'секунда',
|
|
||||||
'seconds' => 'секунд',
|
|
||||||
),
|
),
|
||||||
'menu' => array(
|
'menu' => array(
|
||||||
'config' => 'Параметры',
|
'config' => 'Параметры',
|
||||||
|
@ -100,50 +78,14 @@ $sm_lang = array(
|
||||||
'level' => 'Уровень',
|
'level' => 'Уровень',
|
||||||
'level_10' => 'Администратор',
|
'level_10' => 'Администратор',
|
||||||
'level_20' => 'Пользователь',
|
'level_20' => 'Пользователь',
|
||||||
'level_description' => '<b>Администраторы</b> имеют полный доступ: они
|
'level_description' => '<b>Администраторы</b> имеют полный доступ: они могут управлять серверами, пользователями и изменять общую конфигурацию.<br/><b>Пользователи</b> могут только просматривать и запускать проверку для серверов, которые были к ним прикреплены.',
|
||||||
могут управлять серверами, пользователями и
|
|
||||||
изменять общую
|
|
||||||
конфигурацию.<br><b>Пользователи</b> могут только
|
|
||||||
просматривать и запускать проверку для
|
|
||||||
серверов, которые были к ним прикреплены.',
|
|
||||||
'mobile' => 'Телефон',
|
'mobile' => 'Телефон',
|
||||||
'email' => 'E-mail',
|
'email' => 'E-mail',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'pushover_description' => 'Pushover - это сервис, который позволяет легко
|
'pushover_description' => 'Pushover - это сервис, который позволяет легко получать уведомления в режиме реального времени. Больше информации на <a href="https://pushover.net/">их веб-сайте</a>.',
|
||||||
получать уведомления в режиме реального
|
|
||||||
времени. Больше информации на <a
|
|
||||||
href="https://pushover.net/" target="_blank">их веб-сайте</a>.',
|
|
||||||
'pushover_key' => 'Pushover ключ',
|
'pushover_key' => 'Pushover ключ',
|
||||||
'pushover_device' => 'Pushover устройство',
|
'pushover_device' => 'Pushover устройство',
|
||||||
'pushover_device_description' => 'Имя устройства, на которое будут
|
'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_title' => 'Удалить пользователя',
|
||||||
'delete_message' => 'Вы уверены что хотите удалить пользователя \'%1\'?',
|
'delete_message' => 'Вы уверены что хотите удалить пользователя \'%1\'?',
|
||||||
'deleted' => 'Пользователь удален.',
|
'deleted' => 'Пользователь удален.',
|
||||||
|
@ -152,14 +94,11 @@ $sm_lang = array(
|
||||||
'profile' => 'Профиль',
|
'profile' => 'Профиль',
|
||||||
'profile_updated' => 'Ваш профиль был обновлен.',
|
'profile_updated' => 'Ваш профиль был обновлен.',
|
||||||
'error_user_name_bad_length' => 'Логин должен содержать от 2 до 64 знаков.',
|
'error_user_name_bad_length' => 'Логин должен содержать от 2 до 64 знаков.',
|
||||||
'error_user_name_invalid' => 'Имя пользователя может содержать только
|
'error_user_name_invalid' => 'Имя пользователя может содержать только латинские символы (a-z, A-Z), цифры (0-9) и подчеркивание (_).',
|
||||||
латинские символы (a-z, A-Z), цифры (0-9), точки (.)
|
|
||||||
и подчеркивание (_).',
|
|
||||||
'error_user_name_exists' => 'Данный логин уже существует.',
|
'error_user_name_exists' => 'Данный логин уже существует.',
|
||||||
'error_user_email_bad_length' => 'E-mail может содержать от 5 до 255 знаков.',
|
'error_user_email_bad_length' => 'E-mail может содержать от 5 до 255 знаков.',
|
||||||
'error_user_email_invalid' => 'E-mail указан неверно.',
|
'error_user_email_invalid' => 'E-mail указан неверно.',
|
||||||
'error_user_level_invalid' => 'Данный уровень пользователя
|
'error_user_level_invalid' => 'Данный уровень пользователя недействителен.',
|
||||||
недействителен.',
|
|
||||||
'error_user_no_match' => 'Данного пользователя нет в базе данных.',
|
'error_user_no_match' => 'Данного пользователя нет в базе данных.',
|
||||||
'error_user_password_invalid' => 'Пароль указан неверно.',
|
'error_user_password_invalid' => 'Пароль указан неверно.',
|
||||||
'error_user_password_no_match' => 'Введенные пароли не совпадают.',
|
'error_user_password_no_match' => 'Введенные пароли не совпадают.',
|
||||||
|
@ -169,13 +108,9 @@ $sm_lang = array(
|
||||||
'type' => 'Тип',
|
'type' => 'Тип',
|
||||||
'status' => 'Статус',
|
'status' => 'Статус',
|
||||||
'email' => 'E-mail',
|
'email' => 'E-mail',
|
||||||
'sms' => 'SMS',
|
'sms' => 'СМС',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'no_logs' => 'Записей нет',
|
'no_logs' => 'Записей нет',
|
||||||
'clear' => 'Очистить логи',
|
|
||||||
'delete_title' => 'Удаление логов',
|
|
||||||
'delete_message' => 'Вы уверены что хотите удалить <b>все</b> логи?',
|
|
||||||
),
|
),
|
||||||
'servers' => array(
|
'servers' => array(
|
||||||
'server' => 'Сервер',
|
'server' => 'Сервер',
|
||||||
|
@ -184,40 +119,14 @@ $sm_lang = array(
|
||||||
'domain' => 'Домен/IP',
|
'domain' => 'Домен/IP',
|
||||||
'timeout' => 'Тайм-аут',
|
'timeout' => 'Тайм-аут',
|
||||||
'timeout_description' => 'Количество секунд ожидания ответа сервера.',
|
'timeout_description' => 'Количество секунд ожидания ответа сервера.',
|
||||||
'authentication_settings' => 'Настройки аутентификации',
|
|
||||||
'optional' => 'необязательно',
|
|
||||||
'website_username' => 'Имя пользователя',
|
|
||||||
'website_username_description' => 'Имя пользователя для доступа к сайту.
|
|
||||||
(Поддерживается только Apache authentication.)',
|
|
||||||
'website_password' => 'Пароль',
|
|
||||||
'website_password_description' => 'пароль для доступа к сайту. Пароль будет
|
|
||||||
храниться в зашифрованном виде.',
|
|
||||||
'fieldset_monitoring' => 'Мониторинг',
|
|
||||||
'fieldset_permissions' => 'Права доступа',
|
|
||||||
'port' => 'Порт',
|
'port' => 'Порт',
|
||||||
'custom_port' => 'Указать порт',
|
|
||||||
'popular_ports' => 'Популярные порты',
|
|
||||||
'please_select' => 'Выберите',
|
|
||||||
'type' => 'Тип',
|
'type' => 'Тип',
|
||||||
'type_website' => 'Веб-сайт',
|
'type_website' => 'Веб-сайт',
|
||||||
'type_service' => 'Сервис',
|
'type_service' => 'Сервис',
|
||||||
'type_ping' => 'Пинг',
|
|
||||||
'pattern' => 'Искать текст/шаблон',
|
'pattern' => 'Искать текст/шаблон',
|
||||||
'pattern_description' => 'Если текст по шаблону не найден на сайте,
|
'pattern_description' => 'Если текст по шаблону не найден на сайте, сервер будет помечен как Оффлайн. Регулярные выражения допустимы.',
|
||||||
сервер будет помечен как Оффлайн. Регулярные
|
|
||||||
выражения допустимы.',
|
|
||||||
'pattern_online' => 'Шаблон указывает что вебсайт:',
|
|
||||||
'pattern_online_description' => 'Online: Если этот шаблон найден на веб-сайте,
|
|
||||||
сервер будет отмечен Онлайн. Offline: Если
|
|
||||||
этот шаблон не найден на веб-сайте, сервер
|
|
||||||
будет отмечен как Оффлайн.',
|
|
||||||
'header_name' => 'Название заголовка',
|
|
||||||
'header_value' => 'Значение заголовка',
|
|
||||||
'header_name_description' => 'с учетом регистра.',
|
|
||||||
'header_value_description' => 'Разрешены регулярные выражения.',
|
|
||||||
'last_check' => 'Последняя проверка',
|
'last_check' => 'Последняя проверка',
|
||||||
'last_online' => 'Был онлайн',
|
'last_online' => 'Был онлайн',
|
||||||
'last_offline' => 'Был оффлайн',
|
|
||||||
'monitoring' => 'Мониторинг',
|
'monitoring' => 'Мониторинг',
|
||||||
'no_monitoring' => 'Нет мониторинга',
|
'no_monitoring' => 'Нет мониторинга',
|
||||||
'email' => 'E-mail',
|
'email' => 'E-mail',
|
||||||
|
@ -225,21 +134,16 @@ $sm_lang = array(
|
||||||
'sms' => 'CMC',
|
'sms' => 'CMC',
|
||||||
'send_sms' => 'Отправить CMC',
|
'send_sms' => 'Отправить CMC',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'send_pushover' => 'Отправлять уведомления в Pushover',
|
|
||||||
'telegram' => 'Telegram',
|
|
||||||
'send_telegram' => 'Отправлять уведомления в Telegram',
|
|
||||||
'users' => 'Пользователи',
|
'users' => 'Пользователи',
|
||||||
'delete_title' => 'Удалить сервер',
|
'delete_title' => 'Удалить сервер',
|
||||||
'delete_message' => 'Вы уверены что хотите удалить сервер \'%1\'?',
|
'delete_message' => 'Вы уверены что хотите удалить сервер \'%1\'?',
|
||||||
'deleted' => 'Сервер удален.',
|
'deleted' => 'Сервер удален.',
|
||||||
'updated' => 'Сервер обновлен.',
|
'updated' => 'Сервер обновлен.',
|
||||||
'inserted' => 'Сервер добавлен.',
|
'inserted' => 'Север добавлен.',
|
||||||
'latency' => 'Задержка',
|
'latency' => 'Задержка',
|
||||||
'latency_max' => 'Задержка (максимальная)',
|
'latency_max' => 'Задержка (максимальная)',
|
||||||
'latency_min' => 'Задержка (минимальная)',
|
'latency_min' => 'Задержка (минимальная)',
|
||||||
'latency_avg' => 'Задержка (средняя)',
|
'latency_avg' => 'Задержка (средняя)',
|
||||||
'online' => 'онлайн',
|
|
||||||
'offline' => 'оффлайн',
|
|
||||||
'uptime' => 'Аптайм',
|
'uptime' => 'Аптайм',
|
||||||
'year' => 'Год',
|
'year' => 'Год',
|
||||||
'month' => 'Месяц',
|
'month' => 'Месяц',
|
||||||
|
@ -247,197 +151,121 @@ $sm_lang = array(
|
||||||
'day' => 'День',
|
'day' => 'День',
|
||||||
'hour' => 'Час',
|
'hour' => 'Час',
|
||||||
'warning_threshold' => 'Порог предупреждения',
|
'warning_threshold' => 'Порог предупреждения',
|
||||||
'warning_threshold_description' => 'Количество неудачных проверок,
|
'warning_threshold_description' => 'Количество неудачных проверок, требуемых перед тем как сервер будет помечен как Оффлайн.',
|
||||||
требуемых чтобы сервер был помечен как
|
|
||||||
Оффлайн.',
|
|
||||||
'chart_last_week' => 'Прошлая неделя',
|
'chart_last_week' => 'Прошлая неделя',
|
||||||
'chart_history' => 'История',
|
'chart_history' => 'История',
|
||||||
'chart_day_format' => '%d.%m.%Y',
|
// Charts date format according jqPlot date format http://www.jqplot.com/docs/files/plugins/jqplot-dateAxisRenderer-js.html
|
||||||
'chart_long_date_format' => '%d.%m.%Y %H:%M:%S',
|
'chart_day_format' => '%d-%m-%Y',
|
||||||
'chart_short_date_format' => '%d.%m %H:%M',
|
'chart_long_date_format' => '%d-%m-%Y %H:%M:%S',
|
||||||
|
'chart_short_date_format' => '%d/%m %H:%M',
|
||||||
'chart_short_time_format' => '%H:%M',
|
'chart_short_time_format' => '%H:%M',
|
||||||
'warning_notifications_disabled_sms' => 'SMS уведомления отключены.',
|
'warning_notifications_disabled_sms' => 'СМС уведомления отключены.',
|
||||||
'warning_notifications_disabled_email' => 'E-mail уведомления отключены.',
|
'warning_notifications_disabled_email' => 'E-mail уведомления отключены.',
|
||||||
'warning_notifications_disabled_pushover' => 'Pushover уведомления отключены.',
|
'warning_notifications_disabled_pushover' => 'Pushover уведомления отключены.',
|
||||||
'warning_notifications_disabled_telegram' => 'Уведомления в Telegram отключены.',
|
|
||||||
'error_server_no_match' => 'Сервер не найден.',
|
'error_server_no_match' => 'Сервер не найден.',
|
||||||
'error_server_label_bad_length' => 'Название должно содержать от 1 до 255
|
'error_server_label_bad_length' => 'Название должно содержать от 1 до 255 знаков.',
|
||||||
знаков.',
|
|
||||||
'error_server_ip_bad_length' => 'Домен/IP должен содержать от 1 до 255 знаков',
|
'error_server_ip_bad_length' => 'Домен/IP должен содержать от 1 до 255 знаков',
|
||||||
'error_server_ip_bad_service' => 'IP-адрес недействителен.',
|
'error_server_ip_bad_service' => 'IP-адрес недействителен.',
|
||||||
'error_server_ip_bad_website' => 'Ссылка веб-страницы недействительна.',
|
'error_server_ip_bad_website' => 'Ссылка веб-страницы недействительна.',
|
||||||
'error_server_type_invalid' => 'Выбраный тип сервера недействителен.',
|
'error_server_type_invalid' => 'Выбраный тип сервера недействителен.',
|
||||||
'error_server_warning_threshold_invalid' => 'Порог предупреждения должен иметь
|
'error_server_warning_threshold_invalid' => 'Порог предупреждения должен иметь значение больше 0',
|
||||||
значение больше 0',
|
|
||||||
),
|
),
|
||||||
'config' => array(
|
'config' => array(
|
||||||
'general' => 'Основные',
|
'general' => 'Основные',
|
||||||
'language' => 'Язык',
|
'language' => 'Язык',
|
||||||
'show_update' => 'Проверять обновления?',
|
'show_update' => 'Обновления',
|
||||||
'password_encrypt_key' => 'Ключ шифрования пароля',
|
'email_status' => 'Разрешить отправку E-mail',
|
||||||
'password_encrypt_key_note' => 'Этот ключ используется для шифрования
|
|
||||||
паролей, которые указаны на серверах (для
|
|
||||||
доступа к веб-сайтам). Если ключ изменится,
|
|
||||||
сохраненный пароль будет недействителен!',
|
|
||||||
'proxy' => 'Использовать прокси',
|
|
||||||
'proxy_url' => 'Адрес прокси',
|
|
||||||
'proxy_user' => 'Имя пользователя прокси',
|
|
||||||
'proxy_password' => 'Пароль прокси',
|
|
||||||
'email_status' => 'Разрешить отправку email',
|
|
||||||
'email_from_email' => 'Отправлять от адреса',
|
'email_from_email' => 'Отправлять от адреса',
|
||||||
'email_from_name' => 'Отправлять от имени',
|
'email_from_name' => 'Отправлять от имени',
|
||||||
'email_smtp' => 'Использовать SMTP',
|
'email_smtp' => 'Включить SMTP',
|
||||||
'email_smtp_host' => 'SMTP адрес',
|
'email_smtp_host' => 'SMTP сервер',
|
||||||
'email_smtp_port' => 'SMTP порт',
|
'email_smtp_port' => 'SMTP порт',
|
||||||
'email_smtp_security' => 'SMTP защита',
|
|
||||||
'email_smtp_security_none' => 'нет',
|
|
||||||
'email_smtp_username' => 'SMTP пользователь',
|
'email_smtp_username' => 'SMTP пользователь',
|
||||||
'email_smtp_password' => 'SMTP пароль',
|
'email_smtp_password' => 'SMTP пароль',
|
||||||
'email_smtp_noauth' => 'Оставить пустым, если без аутентификации',
|
'email_smtp_noauth' => 'Оставить пустым, если без аутентификации',
|
||||||
'sms_status' => 'Разрешить отправку SMS',
|
'sms_status' => 'Разрешить отправку СМС',
|
||||||
'sms_gateway' => 'Шлюз для отправки 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_textmarketer' => 'Textmarketer',
|
||||||
|
'sms_gateway_smsglobal' => 'SMSGlobal',
|
||||||
|
'sms_gateway_smsit' => 'Smsit',
|
||||||
'sms_gateway_username' => 'Пользователь',
|
'sms_gateway_username' => 'Пользователь',
|
||||||
'sms_gateway_password' => 'Пароль',
|
'sms_gateway_password' => 'Пароль',
|
||||||
'sms_from' => 'Номер отправителя',
|
'sms_from' => 'Номер отправителя',
|
||||||
'pushover_status' => 'Разрешить отправку Pushover сообщений',
|
'pushover_status' => 'Разрешить отправку Pushover сообщений',
|
||||||
'pushover_description' => 'Pushover - это сервис, который позволяет легко
|
'pushover_description' => 'Pushover - это сервис, который позволяет легко получать уведомления в режиме реального времени. Больше информации на <a href="https://pushover.net/">их веб-сайте</a>.',
|
||||||
получать уведомления в режиме реального
|
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||||
времени. Больше информации на <a
|
|
||||||
href="https://pushover.net/" target="_blank">их веб-сайте</a>.',
|
|
||||||
'pushover_clone_app' => 'Нажмите здесь чтобы создать ваш Pushover app',
|
|
||||||
'pushover_api_token' => 'Pushover App API Token',
|
'pushover_api_token' => 'Pushover App API Token',
|
||||||
'pushover_api_token_description' => 'Прежде чем вы сможете начать
|
'pushover_api_token_description' => 'Прежде чем вы сможете начать пользоваться Pushover, вам необходимо зарегестрировать <a href="%1$s" target="_blank">"App"</a> на их веб-сайте и ввести "App API Token" сюда.',
|
||||||
пользоваться Pushover, вам необходимо
|
'alert_type' => 'Выбeрите, какие вы хотите получать уведомления',
|
||||||
зарегистрировать <a href="%1$s" target="_blank"
|
'alert_type_description' => '<b>Изменение статуса :</b> '.
|
||||||
rel="noopener">"App"</a> на их веб-сайте и ввести "App
|
'Вы получите уведомление об изменение статуса. Для онлайн -> оффлайн или офлайн -> онлайн.<br/>'.
|
||||||
API Token" сюда.',
|
'<br /><b>Оффлайн:</b> '.
|
||||||
'telegram_status' => 'Разрешить отправку уведомлений в Telegram',
|
'Вы получите уведомление только когда сервер перейдет в статус оффлайн. Например, '.
|
||||||
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> удобный
|
'Задание Cron выставлено на каждые 15 минут. Сервер перейдет в статус оффлайн в 1:00 и не измениться до 6:00. '.
|
||||||
мессенджер для получения уведомлений в
|
'Вы получите 1 уведомление только в 1:00<br/>'.
|
||||||
реальном времени. Посетите <a
|
'<br><b>Всегда:</b> '.
|
||||||
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_status' => 'Изменение статуса',
|
||||||
'alert_type_offline' => 'Оффлайн',
|
'alert_type_offline' => 'Оффлайн',
|
||||||
'alert_type_always' => 'Всегда',
|
'alert_type_always' => 'Всегда',
|
||||||
'alert_proxy' => 'Даже если включено, прокси никогда не
|
|
||||||
используется для сервисов',
|
|
||||||
'alert_proxy_url' => 'Формат: адрес:порт',
|
|
||||||
'log_status' => 'Лог статусов',
|
'log_status' => 'Лог статусов',
|
||||||
'log_status_description' => 'Если лог статусов включен, монитор будет
|
'log_status_description' => 'Если лог установлен в TRUE, монитор будет логировать все события режим которых выбран в типе уведомлений.',
|
||||||
логировать все события выбранные в типе
|
|
||||||
уведомлений.',
|
|
||||||
'log_email' => 'Логировать уведомления отправленые по E-mail',
|
'log_email' => 'Логировать уведомления отправленые по E-mail',
|
||||||
'log_sms' => 'Логировать уведомления отправленые по SMS',
|
'log_sms' => 'Логировать уведомления отправленые по СМС',
|
||||||
'log_pushover' => 'Логировать Pushover уведомления',
|
'log_pushover' => 'Логировать Pushover уведомления',
|
||||||
'log_telegram' => 'Логировать Telegram уведомления',
|
'updated' => 'Параметры были успешно применены.',
|
||||||
'updated' => 'Настройки успешно сохранены.',
|
'tab_email' => 'E-mail',
|
||||||
'tab_email' => 'Email',
|
'tab_sms' => 'СМС',
|
||||||
'tab_sms' => 'SMS',
|
|
||||||
'tab_pushover' => 'Pushover',
|
'tab_pushover' => 'Pushover',
|
||||||
'tab_telegram' => 'Telegram',
|
|
||||||
'settings_email' => 'Настройка E-mail',
|
'settings_email' => 'Настройка E-mail',
|
||||||
'settings_sms' => 'Настройка SMS',
|
'settings_sms' => 'Настройка SMS',
|
||||||
'settings_pushover' => 'Настройка Pushover',
|
'settings_pushover' => 'Настройка Pushover',
|
||||||
'settings_telegram' => 'Настройка Telegram',
|
|
||||||
'settings_notification' => 'Настройка уведомлений',
|
'settings_notification' => 'Настройка уведомлений',
|
||||||
'settings_log' => 'Настройка логирования',
|
'settings_log' => 'Настройка логирования',
|
||||||
'settings_proxy' => 'Настройка прокси',
|
|
||||||
'auto_refresh' => 'Авто-обновление',
|
'auto_refresh' => 'Авто-обновление',
|
||||||
'auto_refresh_description' => 'Авто-обновление страницы статуса
|
'auto_refresh_servers' =>
|
||||||
серверов.<br><span class="small">Время в секундах.
|
'Авто-обновление страницы статуса серверов.<br/>'.
|
||||||
Если указано 0, то страница не будет
|
'<span class="small">'.
|
||||||
обновляться.</span>',
|
'Вермя в секундах, если 0 страница не будет обновляться.'.
|
||||||
|
'</span>',
|
||||||
|
'seconds' => 'секунд',
|
||||||
'test' => 'Проверка',
|
'test' => 'Проверка',
|
||||||
'test_email' => 'Сообщение будет отправлено на адрес указаный в
|
'test_email' => 'Сообщение будет отправлено на адрес указаный в профиле пользователя.',
|
||||||
профиле пользователя.',
|
'test_sms' => 'Сообщение будет отправлено на номер телефона указаный в профиле пользователя.',
|
||||||
'test_sms' => 'SMS будет отправлено на номер телефона указаный в
|
'test_pushover' => 'Pushover уведомление будет отправленно на устройство указанное в профиле пользователя.',
|
||||||
профиле пользователя.',
|
|
||||||
'test_pushover' => 'Pushover уведомление будет отправленно на
|
|
||||||
устройство указанное в профиле пользователя.',
|
|
||||||
'test_telegram' => 'Уведомление Telegram будет отправлено на
|
|
||||||
идентификатор чата, указанный в профиле
|
|
||||||
пользователя.',
|
|
||||||
'send' => 'Отправить',
|
'send' => 'Отправить',
|
||||||
'test_subject' => 'Проверка',
|
'test_subject' => 'Проверка',
|
||||||
'test_message' => 'Тестовое сообщение',
|
'test_message' => 'Тестовое сообщение',
|
||||||
'email_sent' => 'Email отправлен',
|
'email_sent' => 'Сообщение отправлено',
|
||||||
'email_error' => 'Ошибка отправки email',
|
'email_error' => 'Ошибка при отправке сообщения',
|
||||||
'sms_sent' => 'SMS отправлено',
|
'sms_sent' => 'СМС отправлено',
|
||||||
'sms_error' => 'При отправке SMS произошла ошибка: %s',
|
'sms_error' => 'Ошибка при отправке СМС',
|
||||||
'sms_error_nomobile' => 'Не удалось отправить тестовое SMS:
|
'sms_error_nomobile' => 'Не удалось отправить пробный СМС: действительный телефонный номер не был найден в вашем профиле.',
|
||||||
действительный номер телефона не найден в
|
|
||||||
вашем профиле.',
|
|
||||||
'pushover_sent' => 'Pushover уведомление отправлено',
|
'pushover_sent' => 'Pushover уведомление отправлено',
|
||||||
'pushover_error' => 'Произошла ошибка во время отправки Pushover
|
'pushover_error' => 'Произошла ошибка во время отправки Pushover уведомления: %s',
|
||||||
уведомления: %s',
|
'pushover_error_noapp' => 'Не удалось отправить пробное уведомление: Pushover "App API token" не был найден в основных настройках.',
|
||||||
'pushover_error_noapp' => 'Не удалось отправить тестовое уведомление:
|
'pushover_error_nokey' => 'Не удалось отправить пробное уведомление: Pushover ключ не был найден в вашем профиле.',
|
||||||
Pushover "App API token" не найден в основных
|
'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.',
|
||||||
'pushover_error_nokey' => 'Не удалось отправить тестовое уведомление:
|
'log_retention_days' => 'days',
|
||||||
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' => 'дней',
|
|
||||||
),
|
),
|
||||||
|
// for newlines in the email messages use <br/>
|
||||||
'notifications' => array(
|
'notifications' => array(
|
||||||
'off_sms' => 'Сервер \'%LABEL%\' сейчас НЕДОСТУПЕН: IP=%IP%, Порт=%PORT%.
|
'off_sms' => 'Сервер \'%LABEL%\' сейчас НЕДОСТУПЕН: ip=%IP%, port=%PORT%. Ошибка=%ERROR%',
|
||||||
Ошибка=%ERROR%',
|
|
||||||
'off_email_subject' => 'ВАЖНО: сервер \'%LABEL%\' сейчас НЕДОСТУПЕН',
|
'off_email_subject' => 'ВАЖНО: сервер \'%LABEL%\' сейчас НЕДОСТУПЕН',
|
||||||
'off_email_body' => 'Невозможно подключиться к следующему
|
'off_email_body' => "Невозможно подключиться к следующему серверу:<br/><br/>Сервер: %LABEL%<br/>IP: %IP%<br/>Порт: %PORT%<br/>Ошибка: %ERROR%<br/>Дата: %DATE%",
|
||||||
серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт:
|
|
||||||
%PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
|
|
||||||
'off_pushover_title' => 'Cервер \'%LABEL%\' сейчас НЕДОСТУПЕН',
|
'off_pushover_title' => 'Cервер \'%LABEL%\' сейчас НЕДОСТУПЕН',
|
||||||
'off_pushover_message' => 'Невозможно подключиться к следующему
|
'off_pushover_message' => "Невозможно подключиться к следующему серверу:<br/><br/>Сервер: %LABEL%<br/>IP: %IP%<br/>Порт: %PORT%<br/>Ошибка: %ERROR%<br/>Дата: %DATE%",
|
||||||
серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт:
|
'on_sms' => 'Сервер \'%LABEL%\' сейчас ДОСТУПЕН: ip=%IP%, port=%PORT%',
|
||||||
%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_subject' => 'ВАЖНО: Сервер \'%LABEL%\' сейчас ДОСТУПЕН',
|
||||||
'on_email_body' => 'Сервер \'%LABEL%\' снова доступен.<br>Был недоступен:
|
'on_email_body' => "Сервер '%LABEL%' снова доступен:<br/><br/>Сервер: %LABEL%<br/>IP: %IP%<br/>Порт: %PORT%<br/>Дата: %DATE%",
|
||||||
%LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт:
|
|
||||||
%PORT%<br>Дата: %DATE%',
|
|
||||||
'on_pushover_title' => 'Сервер \'%LABEL%\' сейчас ДОСТУПЕН',
|
'on_pushover_title' => 'Сервер \'%LABEL%\' сейчас ДОСТУПЕН',
|
||||||
'on_pushover_message' => 'Сервер \'%LABEL%\' снова доступен.<br>Был
|
'on_pushover_message' => "Сервер '%LABEL%' снова доступен:<br/><br/>Сервер: %LABEL%<br/>IP: %IP%<br/>Порт: %PORT%<br/>Дата: %DATE%",
|
||||||
недоступен: %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(
|
'login' => array(
|
||||||
'welcome_usermenu' => 'Здравствуйте, %user_name%',
|
'welcome_usermenu' => 'Здравствуйте, %user_name%',
|
||||||
|
@ -453,18 +281,14 @@ $sm_lang = array(
|
||||||
'password_repeat' => 'Повторить пароль',
|
'password_repeat' => 'Повторить пароль',
|
||||||
'password_forgot' => 'Забыли пароль?',
|
'password_forgot' => 'Забыли пароль?',
|
||||||
'password_reset' => 'Сбросить пароль',
|
'password_reset' => 'Сбросить пароль',
|
||||||
'password_reset_email_subject' => 'Сброс пароля для PHP Server Monitor',
|
'password_reset_email_subject' => 'Сбросить пароль для PHP Server Monitor',
|
||||||
'password_reset_email_body' => 'Пожалуйста, используйте следующую ссылку
|
'password_reset_email_body' => 'Пожалуйста, используйте следующую ссылку для сброса пароля. Ссылка действительна 1 час.<br/><br/>%link%',
|
||||||
для сброса пароля. Ссылка действительна 1
|
|
||||||
час.<br><br>%link%',
|
|
||||||
'error_user_incorrect' => 'Пользователь с указаными данными не найден.',
|
'error_user_incorrect' => 'Пользователь с указаными данными не найден.',
|
||||||
'error_login_incorrect' => 'Информация указана неверно.',
|
'error_login_incorrect' => 'Информация указана неверно.',
|
||||||
'error_login_passwords_nomatch' => 'Пароль указан неверно.',
|
'error_login_passwords_nomatch' => 'Пароль указан неверно.',
|
||||||
'error_reset_invalid_link' => 'Ссылка для сброса пароля недействительна.',
|
'error_reset_invalid_link' => 'Ссылка для сброса пароля недействительна.',
|
||||||
'success_password_forgot' => 'Вам был отправлен email, с инструкциями по
|
'success_password_forgot' => 'Вам был отправлен email, с описанием сброса пароля.',
|
||||||
сбросу пароля.',
|
'success_password_reset' => 'Ваш пароль был сброшен. Пожалуйста авторизуйтесь.',
|
||||||
'success_password_reset' => 'Ваш пароль был сброшен. Пожалуйста
|
|
||||||
авторизуйтесь.',
|
|
||||||
),
|
),
|
||||||
'error' => array(
|
'error' => array(
|
||||||
'401_unauthorized' => 'Доступ закрыт',
|
'401_unauthorized' => 'Доступ закрыт',
|
||||||
|
|
|
@ -1,334 +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 Peter Misura <bzurko@gmail.com>
|
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
|
||||||
* @version Release: @package_version@
|
|
||||||
* @link http://www.phpservermonitor.org/
|
|
||||||
**/
|
|
||||||
|
|
||||||
$sm_lang = array(
|
|
||||||
'name' => 'Slovensky - Slovak',
|
|
||||||
'locale' => array(
|
|
||||||
'0' => 'sk_SK.UTF-8',
|
|
||||||
'1' => 'sk_SK',
|
|
||||||
'2' => 'slovak',
|
|
||||||
'3' => 'slovak',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'sk',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
|
||||||
'title' => 'Server Monitor',
|
|
||||||
'install' => 'Inštalácia',
|
|
||||||
'action' => 'Akcia',
|
|
||||||
'save' => 'Uložiť',
|
|
||||||
'edit' => 'Upraviť',
|
|
||||||
'delete' => 'Zmazať',
|
|
||||||
'date' => 'Dátum',
|
|
||||||
'message' => 'Správa',
|
|
||||||
'yes' => 'Áno',
|
|
||||||
'no' => 'Nie',
|
|
||||||
'insert' => 'Vložiť',
|
|
||||||
'add_new' => 'Pridať',
|
|
||||||
'update_available' => 'Nová verzia - ({version}) je dostupná na <a
|
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
|
||||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
|
||||||
'back_to_top' => 'Späť na začiatok',
|
|
||||||
'go_back' => 'Späť',
|
|
||||||
'ok' => 'OK',
|
|
||||||
'cancel' => 'Zrušiť',
|
|
||||||
'short_day_format' => '%B %e',
|
|
||||||
'long_day_format' => '%B %e, %Y',
|
|
||||||
'yesterday_format' => 'Včera v %k:%M',
|
|
||||||
'other_day_format' => '%A v %k:%M',
|
|
||||||
'never' => 'Nikdy',
|
|
||||||
'hours_ago' => 'pred %d hodinami',
|
|
||||||
'an_hour_ago' => 'cca pred hodinou',
|
|
||||||
'minutes_ago' => 'pred %d minútami',
|
|
||||||
'a_minute_ago' => 'cca pred minútou',
|
|
||||||
'seconds_ago' => 'pred %d sekundami',
|
|
||||||
'a_second_ago' => 'pred chvíľou',
|
|
||||||
'seconds' => 'sekúnd',
|
|
||||||
),
|
|
||||||
'menu' => array(
|
|
||||||
'config' => 'Konfigurácia',
|
|
||||||
'server' => 'Servery',
|
|
||||||
'server_log' => 'Log',
|
|
||||||
'server_status' => 'Stav',
|
|
||||||
'server_update' => 'Aktualizácia',
|
|
||||||
'user' => 'Užívateľ',
|
|
||||||
'help' => 'Nápoveda',
|
|
||||||
),
|
|
||||||
'users' => array(
|
|
||||||
'user' => 'Užívateľ',
|
|
||||||
'name' => 'Meno',
|
|
||||||
'user_name' => 'Užívateľské meno',
|
|
||||||
'password' => 'Heslo',
|
|
||||||
'password_repeat' => 'Rovnaké heslo (pre kontrolu)',
|
|
||||||
'password_leave_blank' => 'Nevyplňujte ak nechcete zmeniť.',
|
|
||||||
'level' => 'Oprávnenie',
|
|
||||||
'level_10' => 'Administrátor',
|
|
||||||
'level_20' => 'Užívateľ',
|
|
||||||
'level_description' => '<b>Administrátor</b> má plný prístup: môže spravovať servery, užívateľov a
|
|
||||||
upraviť globálnu konfiguráciu.<br><b>Uživatel</b> má práva len na čítanie a
|
|
||||||
spustiť aktualizáciu serverov, ktoré má priradené.',
|
|
||||||
'mobile' => 'Mobil',
|
|
||||||
'email' => 'E-mail',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'pushover_description' => 'Pushover je služba umožňujúca jednoducho zasielať real-time upozornenia. Viac
|
|
||||||
na <a href="https://pushover.net/">webe Pushover</a>',
|
|
||||||
'pushover_key' => 'Pushover Token',
|
|
||||||
'pushover_device' => 'Pushover Zariadenie',
|
|
||||||
'pushover_device_description' => 'Název zariadenia, na ktoré má byť správa odoslaná. Ponechajte prázdne
|
|
||||||
pre odoslanie na všetky zariadenia.',
|
|
||||||
'delete_title' => 'Zmazať užívateľa',
|
|
||||||
'delete_message' => 'Naozaj zmazať užívateľa \'%1\'?',
|
|
||||||
'deleted' => 'Užívateľ zmazaný.',
|
|
||||||
'updated' => 'Užívateľ aktualizovaný.',
|
|
||||||
'inserted' => 'Užívateľ pridaný.',
|
|
||||||
'profile' => 'Profil',
|
|
||||||
'profile_updated' => 'Váš užívateľský profil bol upravený.',
|
|
||||||
'error_user_name_bad_length' => 'Užívateľské meno musí obsahovať 2 až 64 znakov.',
|
|
||||||
'error_user_name_invalid' => 'Užívateľské meno môže obsahovať iba písmena (a-z, A-Z), čísla (0-9),
|
|
||||||
bodky (.) a podtržítka (_).',
|
|
||||||
'error_user_name_exists' => 'Zadané uživatelské jméno již existuje v databázi.',
|
|
||||||
'error_user_email_bad_length' => 'E-mailová adresa musí obsahovat 5 až 255 znaků .',
|
|
||||||
'error_user_email_invalid' => 'E-mailová adresa je neplatná',
|
|
||||||
'error_user_level_invalid' => 'Zadané oprávnenie je neplatné.',
|
|
||||||
'error_user_no_match' => 'Užívateľ nebol najdený.',
|
|
||||||
'error_user_password_invalid' => 'Zadané heslo je neplatné.',
|
|
||||||
'error_user_password_no_match' => 'Zadaná heslá sa nezhodujú.',
|
|
||||||
),
|
|
||||||
'log' => array(
|
|
||||||
'title' => 'Záznamy logu',
|
|
||||||
'type' => 'Typ',
|
|
||||||
'status' => 'Stav',
|
|
||||||
'email' => 'E-mail',
|
|
||||||
'sms' => 'SMS',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'no_logs' => 'Žiadne záznamy',
|
|
||||||
'clear' => 'Jasný protokol',
|
|
||||||
'delete_title' => 'Jasný protokol',
|
|
||||||
'delete_message' => 'Naozaj chcete odstrániť <b>všetky</b> záznamy?',
|
|
||||||
),
|
|
||||||
'servers' => array(
|
|
||||||
'server' => 'Server',
|
|
||||||
'status' => 'Stav',
|
|
||||||
'label' => 'Popis',
|
|
||||||
'domain' => 'Doména/IP',
|
|
||||||
'timeout' => 'Časový limit',
|
|
||||||
'timeout_description' => 'Počet sekúnd čakania na odpoveď serveru.',
|
|
||||||
'authentication_settings' => 'Nastavenie autentizacie',
|
|
||||||
'optional' => 'voliteľný',
|
|
||||||
'website_username' => 'Užívateľské meno',
|
|
||||||
'website_username_description' => 'Užívateľské meno pre prístup na stránku. (Len Apache autorizácia je
|
|
||||||
podporovaná.)',
|
|
||||||
'website_password' => 'Heslo',
|
|
||||||
'website_password_description' => 'Heslo pre prístup na stránku. Heslo je v databázi šifrované.',
|
|
||||||
'fieldset_monitoring' => 'Monitoring',
|
|
||||||
'fieldset_permissions' => 'Oprávnenie',
|
|
||||||
'port' => 'Port',
|
|
||||||
'custom_port' => 'Užívateľský Port',
|
|
||||||
'popular_ports' => 'Populárne Porty',
|
|
||||||
'please_select' => 'Prosím vyberte',
|
|
||||||
'type' => 'Typ',
|
|
||||||
'type_website' => 'Web',
|
|
||||||
'type_service' => 'Služba',
|
|
||||||
'pattern' => 'Vyhledat reťazec/vzor',
|
|
||||||
'pattern_description' => 'Pokiaľ reťazec nebude na webe nájdený, bude server označený ako offline.
|
|
||||||
Regulárne výrazy sú povolené.',
|
|
||||||
'last_check' => 'Posledná kontrola',
|
|
||||||
'last_online' => 'Naposledy online',
|
|
||||||
'monitoring' => 'Monitoring',
|
|
||||||
'no_monitoring' => 'Žiadne monitorované služby',
|
|
||||||
'email' => 'E-mail',
|
|
||||||
'send_email' => 'Odoslať e-mail',
|
|
||||||
'sms' => 'SMS',
|
|
||||||
'send_sms' => 'Odoslať SMS',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'users' => 'Užívatelia',
|
|
||||||
'delete_title' => 'Zmazať server',
|
|
||||||
'delete_message' => 'Naozaj si prajete zmazať \'%1\'?',
|
|
||||||
'deleted' => 'Server zmazaný.',
|
|
||||||
'updated' => 'Server aktualizovaný.',
|
|
||||||
'inserted' => 'Server pridaný.',
|
|
||||||
'latency' => 'Latencia',
|
|
||||||
'latency_max' => 'Latencia (maximum)',
|
|
||||||
'latency_min' => 'Latencia (minimum)',
|
|
||||||
'latency_avg' => 'Latencia (priemer)',
|
|
||||||
'uptime' => 'Uptime',
|
|
||||||
'year' => 'Rok',
|
|
||||||
'month' => 'Mesiac',
|
|
||||||
'week' => 'Týždeň',
|
|
||||||
'day' => 'Deň',
|
|
||||||
'hour' => 'Hodina',
|
|
||||||
'warning_threshold' => 'Stropná hranica varovania',
|
|
||||||
'warning_threshold_description' => 'Počet neúspešných pokusov pred označením serveru ako offline.',
|
|
||||||
'chart_last_week' => 'Minulý týždeň',
|
|
||||||
'chart_history' => 'História',
|
|
||||||
'chart_day_format' => '%Y-%m-%d',
|
|
||||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
|
||||||
'chart_short_date_format' => '%m/%d %H:%M',
|
|
||||||
'chart_short_time_format' => '%H:%M',
|
|
||||||
'warning_notifications_disabled_sms' => 'SMS upozornenia sú vypnuté.',
|
|
||||||
'warning_notifications_disabled_email' => 'E-mailové upozornenia sú vypnuté.',
|
|
||||||
'warning_notifications_disabled_pushover' => 'Pushover upozornenia sú vypnuté.',
|
|
||||||
'error_server_no_match' => 'Server nenájdený.',
|
|
||||||
'error_server_label_bad_length' => 'Popisok musí obsahovať 1 až 255 znakov.',
|
|
||||||
'error_server_ip_bad_length' => 'Doména/IP adresa musí obsahovať 1 až 255 znakov.',
|
|
||||||
'error_server_ip_bad_service' => 'IP adresa nie je platná.',
|
|
||||||
'error_server_ip_bad_website' => 'URL webu nie je platná.',
|
|
||||||
'error_server_type_invalid' => 'Zvolený typ serveru nie je platný',
|
|
||||||
'error_server_warning_threshold_invalid' => 'Hranica varovania musí byť číslo väčšie ako 0.',
|
|
||||||
),
|
|
||||||
'config' => array(
|
|
||||||
'general' => 'Všeobecné',
|
|
||||||
'language' => 'Jazyk',
|
|
||||||
'show_update' => 'Kontrolovať aktualizácie?',
|
|
||||||
'password_encrypt_key' => 'Šifrovací kľúč pre heslá',
|
|
||||||
'password_encrypt_key_note' => 'Týmto klúčom sa šifrujú heslá, ktoré sa ukladajú na serveroch pre
|
|
||||||
prístup na webové stránky. Ak kľúč zmeníte, budú uložené heslá
|
|
||||||
neplatné!',
|
|
||||||
'email_status' => 'Povoliť odosielanie e-mailu',
|
|
||||||
'email_from_email' => 'E-mailová adresa odosielateľa',
|
|
||||||
'email_from_name' => 'Jméno odosielateľa',
|
|
||||||
'email_smtp' => 'Zapnúť SMTP',
|
|
||||||
'email_smtp_host' => 'SMTP adresa',
|
|
||||||
'email_smtp_port' => 'SMTP port',
|
|
||||||
'email_smtp_security' => 'SMTP zabezpečenie',
|
|
||||||
'email_smtp_security_none' => 'žiadne',
|
|
||||||
'email_smtp_username' => 'SMTP užívateľské meno',
|
|
||||||
'email_smtp_password' => 'SMTP heslo',
|
|
||||||
'email_smtp_noauth' => 'Nechajte prázdne pre použitie SMTP bez hesla',
|
|
||||||
'sms_status' => 'Povoliť odosielanie textových správ',
|
|
||||||
'sms_gateway' => 'Brána použitá pro odosielanie správ',
|
|
||||||
'sms_gateway_username' => 'Užívateľské meno brány',
|
|
||||||
'sms_gateway_password' => 'Heslo brány',
|
|
||||||
'sms_from' => 'Telefónne číslo odosielateľa',
|
|
||||||
'pushover_status' => 'Povoliť zasielanie Pushover správ',
|
|
||||||
'pushover_description' => 'Pushover je služba umožňujúca jednoducho zasielať real-time upozornenia. Viac
|
|
||||||
na <a href="https://pushover.net/">webe Pushover</a>',
|
|
||||||
'pushover_clone_app' => 'Kliknite pre vytvorenie Pushover aplikácie',
|
|
||||||
'pushover_api_token' => 'Pushover App API Token',
|
|
||||||
'pushover_api_token_description' => 'Pred použitím Pushoveru sa musíte <a href="%1$s" target="_blank"
|
|
||||||
rel="noopener">registrovať</a> a získať API Token.',
|
|
||||||
'alert_type' => 'Zvoľte kedy si prajete byť upozornení.',
|
|
||||||
'alert_type_description' => '<b>Zmena stavu:</b> Obdržíte upozornenie pri zmene stavu, teda: online ->
|
|
||||||
offline alebo offline -> online.<br><br /><b>Offline:</b> Obdržíte upozornenie,
|
|
||||||
keď server prejde *PO PRVÝ KRÁT* do offline stavu. Napríklad, pokiaľ je cron
|
|
||||||
nastavený na 15 minút a sledovaný server bude offline mezi 01:00 a 06:00, tak
|
|
||||||
obdržíte upozornenie iba o 01:00.<br><br><b>Vždy:</b> Obdržíte upozornenie
|
|
||||||
pri každom spustení kontroly, teda aj pokiaľ bude server offline niekoľko
|
|
||||||
hodín.',
|
|
||||||
'alert_type_status' => 'Zmena stavu',
|
|
||||||
'alert_type_offline' => 'Offline',
|
|
||||||
'alert_type_always' => 'Vždy',
|
|
||||||
'log_status' => 'Log',
|
|
||||||
'log_status_description' => 'Pokiaľ je Log nastavený na hodnotu TRUE, systém do neho zapíše všetky
|
|
||||||
upozornenia.',
|
|
||||||
'log_email' => 'Logovať odoslané e-maily',
|
|
||||||
'log_sms' => 'Logovať odoslané textové správy',
|
|
||||||
'log_pushover' => 'Logovať odoslané Pushover správy',
|
|
||||||
'updated' => 'Nastavenie bolo aktualizované.',
|
|
||||||
'tab_email' => 'E-mail',
|
|
||||||
'tab_sms' => 'SMS',
|
|
||||||
'tab_pushover' => 'Pushover',
|
|
||||||
'settings_email' => 'Nastavenie e-mailov',
|
|
||||||
'settings_sms' => 'Nastavenie textových správ',
|
|
||||||
'settings_pushover' => 'Nastavenie Pushover',
|
|
||||||
'settings_notification' => 'Nastavenie upozornení',
|
|
||||||
'settings_log' => 'Nastavenie logu',
|
|
||||||
'auto_refresh' => 'Automaticky obnoviť',
|
|
||||||
'auto_refresh_description' => 'Automaticky obnoviť stránku Servery.<br><span class="small">Čas v
|
|
||||||
sekundách, 0 pre vypnutie automatického obnovenia.</span>',
|
|
||||||
'test' => 'Test',
|
|
||||||
'test_email' => 'E-mail bude odoslaný na adresu uvedenú v užívateľskom profile.',
|
|
||||||
'test_sms' => 'SMS bude odoslaná na telefónne číslo uvedené v užívateľskom profile.',
|
|
||||||
'test_pushover' => 'Pushover upozornenie bude odoslané užívateľovi/zariadeniu podľa nastavení v
|
|
||||||
užívateľskom profile.',
|
|
||||||
'send' => 'Odoslať',
|
|
||||||
'test_subject' => 'Test',
|
|
||||||
'test_message' => 'Testovacia správa',
|
|
||||||
'email_sent' => 'E-mail odoslaný',
|
|
||||||
'email_error' => 'Chyba pri odosielaní e-mailu',
|
|
||||||
'sms_sent' => 'SMS odoslaná',
|
|
||||||
'sms_error' => 'Chyba pri odosielaní SMS. %s',
|
|
||||||
'sms_error_nomobile' => 'Nebolo možné odoslať SMS: v užívateľskom profile nebylo nájdené platné
|
|
||||||
telefónne číslo.',
|
|
||||||
'pushover_sent' => 'Pushover upozornenie odoslané.',
|
|
||||||
'pushover_error' => 'Nastala chyba pri odosielaní Pushover upozornenia: %s',
|
|
||||||
'pushover_error_noapp' => 'Nebolo možné odoslať testovacie upozornenie: v globálnom nastavení nebol
|
|
||||||
nájdený žiaden API token.',
|
|
||||||
'pushover_error_nokey' => 'Nebylo možné odoslať testovacie upozornenie: ve vašom profile nie je
|
|
||||||
definovaný Pushover key.',
|
|
||||||
'log_retention_period' => 'Rotácia logu',
|
|
||||||
'log_retention_period_description' => 'Počet dní po které budú uchované logy upozornení. Vložte 0 pre
|
|
||||||
vypnutie autorotáce.',
|
|
||||||
'log_retention_days' => 'dní',
|
|
||||||
),
|
|
||||||
'notifications' => array(
|
|
||||||
'off_sms' => 'Server \'%LABEL%\' je offline: ip=%IP%, port=%PORT%. Chyba=%ERROR%',
|
|
||||||
'off_email_subject' => 'DÔLEŽITÉ: Server \'%LABEL%\' je offline',
|
|
||||||
'off_email_body' => 'Nebolo možné spojiť sa so serverom:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>Chyba: %ERROR%<br>Dátum: %DATE%',
|
|
||||||
'off_pushover_title' => 'Server \'%LABEL%\' je offline',
|
|
||||||
'off_pushover_message' => 'Nebolo možné spojiť sa so serverom:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>Chyba: %ERROR%<br>Dátum: %DATE%',
|
|
||||||
'on_sms' => 'Server \'%LABEL%\' je online: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
|
||||||
'on_email_subject' => 'DÔLEŽITÉ: Server \'%LABEL%\' je online',
|
|
||||||
'on_email_body' => 'Server \'%LABEL%\' je opäť online, it was down for
|
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Dátum:
|
|
||||||
%DATE%',
|
|
||||||
'on_pushover_title' => 'Server \'%LABEL%\' je online',
|
|
||||||
'on_pushover_message' => 'Server \'%LABEL%\' je znovu online, it was down for
|
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>Dátum: %DATE%',
|
|
||||||
),
|
|
||||||
'login' => array(
|
|
||||||
'welcome_usermenu' => 'Vitajte, %user_name%',
|
|
||||||
'title_sign_in' => 'Prosím prihláste sa',
|
|
||||||
'title_forgot' => 'Zabudnuté heslo?',
|
|
||||||
'title_reset' => 'Obnova hesla',
|
|
||||||
'submit' => 'Odoslať',
|
|
||||||
'remember_me' => 'Zapamätať údaje',
|
|
||||||
'login' => 'Prihlásiť',
|
|
||||||
'logout' => 'Odhlásiť',
|
|
||||||
'username' => 'Užívateľské meno',
|
|
||||||
'password' => 'Heslo',
|
|
||||||
'password_repeat' => 'Opakujte heslo',
|
|
||||||
'password_forgot' => 'Zabudnuté heslo?',
|
|
||||||
'password_reset' => 'Obnoviť heslo',
|
|
||||||
'password_reset_email_subject' => 'Obnoviť heslo pre PHP Server Monitor',
|
|
||||||
'password_reset_email_body' => 'Použite následujúci odkaz pre obnovenie hesla. Odkaz je platný jednu
|
|
||||||
hodinu.<br><br>%link%',
|
|
||||||
'error_user_incorrect' => 'Zadané užívateľské meno nebolo nájdené.',
|
|
||||||
'error_login_incorrect' => 'Prihlásenie nebolo úspešné.',
|
|
||||||
'error_login_passwords_nomatch' => 'Zadané heslá sa nezhodujú.',
|
|
||||||
'error_reset_invalid_link' => 'Odkaz je neplatný.',
|
|
||||||
'success_password_forgot' => 'Na vašu e-mailovú adresu bol zaslaný e-mail s informáciami pre obnovu hesla.',
|
|
||||||
'success_password_reset' => 'Vaše heslo bolo úspešne obnovené. Prosím prihláste sa.',
|
|
||||||
),
|
|
||||||
'error' => array(
|
|
||||||
'401_unauthorized' => 'Nedostatočné oprávnenia',
|
|
||||||
'401_unauthorized_description' => 'Nemáte oprávnenie zobraziť túto stránku.',
|
|
||||||
),
|
|
||||||
);
|
|
|
@ -1,322 +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 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.',
|
|
||||||
),
|
|
||||||
);
|
|
|
@ -1,318 +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 andlil
|
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
|
||||||
* @version Release: @package_version@
|
|
||||||
* @link http://www.phpservermonitor.org/
|
|
||||||
**/
|
|
||||||
|
|
||||||
$sm_lang = array(
|
|
||||||
'name' => 'Svenska - Swedish',
|
|
||||||
'locale' => array(
|
|
||||||
'0' => 'sv_SE.UTF-8',
|
|
||||||
'1' => 'sv_SE',
|
|
||||||
'2' => 'svenska',
|
|
||||||
'3' => 'svenska-SE',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'sv',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
|
||||||
'title' => 'Server Monitor',
|
|
||||||
'install' => 'Installera',
|
|
||||||
'action' => 'Åtgärd',
|
|
||||||
'save' => 'Spara',
|
|
||||||
'edit' => 'Redigera',
|
|
||||||
'delete' => 'Radera',
|
|
||||||
'date' => 'Datum',
|
|
||||||
'message' => 'Meddelande',
|
|
||||||
'yes' => 'Ja',
|
|
||||||
'no' => 'Nej',
|
|
||||||
'insert' => 'Infoga',
|
|
||||||
'add_new' => 'Lägg till',
|
|
||||||
'update_available' => 'En ny version ({version}) finns tillgänglig från <a
|
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
|
||||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
|
||||||
'back_to_top' => 'Gå upp',
|
|
||||||
'go_back' => 'Gå tillbaka',
|
|
||||||
'ok' => 'OK',
|
|
||||||
'cancel' => 'Avbryt',
|
|
||||||
'short_day_format' => '%B %e',
|
|
||||||
'long_day_format' => '%B %e, %Y',
|
|
||||||
'yesterday_format' => 'Igår kl %k:%M',
|
|
||||||
'other_day_format' => '%A kl %k:%M',
|
|
||||||
'never' => 'Aldrig',
|
|
||||||
'hours_ago' => '%d timmar sedan',
|
|
||||||
'an_hour_ago' => 'ungefär en timme sedan',
|
|
||||||
'minutes_ago' => '%d minuter sedan',
|
|
||||||
'a_minute_ago' => 'ungefär en minut sen',
|
|
||||||
'seconds_ago' => '%d sekunder sedan',
|
|
||||||
'a_second_ago' => 'en sekund sedan',
|
|
||||||
'seconds' => 'sekunder',
|
|
||||||
),
|
|
||||||
'menu' => array(
|
|
||||||
'config' => 'Inställningar',
|
|
||||||
'server' => 'Servrar',
|
|
||||||
'server_log' => 'Logg',
|
|
||||||
'server_status' => 'Status',
|
|
||||||
'server_update' => 'Uppdatera',
|
|
||||||
'user' => 'Användare',
|
|
||||||
'help' => 'Hjälp',
|
|
||||||
),
|
|
||||||
'users' => array(
|
|
||||||
'user' => 'Användare',
|
|
||||||
'name' => 'Namn',
|
|
||||||
'user_name' => 'Användarnamn',
|
|
||||||
'password' => 'Lösenord',
|
|
||||||
'password_repeat' => 'Upprepa lösenord',
|
|
||||||
'password_leave_blank' => 'Lämna blankt för att inte ändra ',
|
|
||||||
'level' => 'Nivå',
|
|
||||||
'level_10' => 'Administratör',
|
|
||||||
'level_20' => 'Användare',
|
|
||||||
'level_description' => '<b>Administratörer</b> har fulla rättigheter: de kan hantera servrar, användare och
|
|
||||||
redigera gemensamma inställningar.<br><b>Användare</b> kan bara se och köra
|
|
||||||
uppdateraren för de servrar som de blivit tilldelade.',
|
|
||||||
'mobile' => 'Mobilnummer',
|
|
||||||
'email' => 'Email',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'pushover_description' => 'Pushover är en tjänst som skickar meddelande i realtid. Se <a
|
|
||||||
href="https://pushover.net/" target="_blank">deras webbsida</a> för mer
|
|
||||||
information.',
|
|
||||||
'pushover_key' => 'Pushover Key',
|
|
||||||
'pushover_device' => 'Pushover Device',
|
|
||||||
'pushover_device_description' => 'Enhetsnman att skicka meddelande till. Lämna tomt för att skicka till alla
|
|
||||||
enheter.',
|
|
||||||
'delete_title' => 'Radera användare',
|
|
||||||
'delete_message' => 'Är du säker att du vill radera användare \'%1\'?',
|
|
||||||
'deleted' => 'Användare raderad.',
|
|
||||||
'updated' => 'Användare uppdaterad.',
|
|
||||||
'inserted' => 'Användare tillagd.',
|
|
||||||
'profile' => 'Profil',
|
|
||||||
'profile_updated' => 'Din profil har uppdaterats.',
|
|
||||||
'error_user_name_bad_length' => 'Användarnamn måste vara mellan 2 och 64 tecken.',
|
|
||||||
'error_user_name_invalid' => 'Användarnamnet får bara innehålla bokstäver (a-z, A-Z), siffror (0-9),
|
|
||||||
prickar (.) and understreck (_).',
|
|
||||||
'error_user_name_exists' => 'Användarnamnet används redan.',
|
|
||||||
'error_user_email_bad_length' => 'Email-adressen måste vara mellan 5 och 255 tecken.',
|
|
||||||
'error_user_email_invalid' => 'Email-adressen är ogiltig.',
|
|
||||||
'error_user_level_invalid' => 'Behörighetsnivån är ogiltig.',
|
|
||||||
'error_user_no_match' => 'Användaren kunde inte hittas i databasen.',
|
|
||||||
'error_user_password_invalid' => 'Lösenordet är ogiltigt.',
|
|
||||||
'error_user_password_no_match' => 'Lösenorden stämmer inte överens.',
|
|
||||||
),
|
|
||||||
'log' => array(
|
|
||||||
'title' => 'Logg-poster',
|
|
||||||
'type' => 'Typ',
|
|
||||||
'status' => 'Status',
|
|
||||||
'email' => 'Email',
|
|
||||||
'sms' => 'SMS',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'no_logs' => 'Inga loggar',
|
|
||||||
'clear' => 'Tydlig logg',
|
|
||||||
'delete_title' => 'Tydlig logg',
|
|
||||||
'delete_message' => 'Är du säker på att du vill radera <b>alla</b> loggar?',
|
|
||||||
),
|
|
||||||
'servers' => array(
|
|
||||||
'server' => 'Server',
|
|
||||||
'status' => 'Status',
|
|
||||||
'label' => 'Namn',
|
|
||||||
'domain' => 'Domän/IP',
|
|
||||||
'timeout' => 'Timeout',
|
|
||||||
'timeout_description' => 'Antal sekunder att vänta på svar.',
|
|
||||||
'port' => 'Port',
|
|
||||||
'type' => 'Typ',
|
|
||||||
'type_website' => 'Website',
|
|
||||||
'type_service' => 'Service',
|
|
||||||
'pattern' => 'Hitta sträng/mönster',
|
|
||||||
'pattern_description' => 'Om detta mönster inte hittas i svaret kommer servern att markeras offline. "Regular
|
|
||||||
expressions" är tillåtna.',
|
|
||||||
'last_check' => 'Senaste kontroll',
|
|
||||||
'last_online' => 'Senast online',
|
|
||||||
'last_offline' => 'Senast offline',
|
|
||||||
'monitoring' => 'Övervakas',
|
|
||||||
'no_monitoring' => 'Övervakas inte',
|
|
||||||
'email' => 'Email',
|
|
||||||
'send_email' => 'Skicka Email',
|
|
||||||
'sms' => 'SMS',
|
|
||||||
'send_sms' => 'Skicka SMS',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'users' => 'Användare',
|
|
||||||
'delete_title' => 'Radera server',
|
|
||||||
'delete_message' => 'Är du säker att du vill radera server \'%1\'?',
|
|
||||||
'deleted' => 'Server raderad.',
|
|
||||||
'updated' => 'Server uppdaterad.',
|
|
||||||
'inserted' => 'Server tillagd.',
|
|
||||||
'latency' => 'Fördröjning',
|
|
||||||
'latency_max' => 'Fördröjning (maximum)',
|
|
||||||
'latency_min' => 'Fördröjning (minimum)',
|
|
||||||
'latency_avg' => 'Fördröjning (medel)',
|
|
||||||
'uptime' => 'Uptime',
|
|
||||||
'year' => 'År',
|
|
||||||
'month' => 'Månad',
|
|
||||||
'week' => 'Vecka',
|
|
||||||
'day' => 'Dag',
|
|
||||||
'hour' => 'Timme',
|
|
||||||
'warning_threshold' => 'Varningströskel',
|
|
||||||
'warning_threshold_description' => 'Antalet misslyckade kontroller innan server markeras som offline.',
|
|
||||||
'chart_last_week' => 'Senaste veckan',
|
|
||||||
'chart_history' => 'Historik',
|
|
||||||
'chart_day_format' => '%Y-%m-%d',
|
|
||||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
|
||||||
'chart_short_date_format' => '%m/%d %H:%M',
|
|
||||||
'chart_short_time_format' => '%H:%M',
|
|
||||||
'warning_notifications_disabled_sms' => 'SMS-meddelande är avstängda.',
|
|
||||||
'warning_notifications_disabled_email' => 'Email-meddelande är avstängda.',
|
|
||||||
'warning_notifications_disabled_pushover' => 'Pushover-meddelande är avstängda.',
|
|
||||||
'error_server_no_match' => 'Server kan inte hittas.',
|
|
||||||
'error_server_label_bad_length' => 'Namn måste vara mellan 1 och 255 tecken.',
|
|
||||||
'error_server_ip_bad_length' => 'Domän / IP måste vara mellan 1 och 255 tecken.',
|
|
||||||
'error_server_ip_bad_service' => 'IP-adressen är ogiltig.',
|
|
||||||
'error_server_ip_bad_website' => 'URL:en är ogiltig.',
|
|
||||||
'error_server_type_invalid' => 'Vald servertyp är ogiltig.',
|
|
||||||
'error_server_warning_threshold_invalid' => 'Varningströskel skall vara ett heltal större än 0.',
|
|
||||||
),
|
|
||||||
'config' => array(
|
|
||||||
'general' => 'Allmänt',
|
|
||||||
'language' => 'Språk',
|
|
||||||
'show_update' => 'Sök efter uppdateringar?',
|
|
||||||
'email_status' => 'Tillåt email',
|
|
||||||
'email_from_email' => 'Email avsändaradress',
|
|
||||||
'email_from_name' => 'Email från namn',
|
|
||||||
'email_smtp' => 'Aktivera SMTP',
|
|
||||||
'email_smtp_host' => 'SMTP värd',
|
|
||||||
'email_smtp_port' => 'SMTP port',
|
|
||||||
'email_smtp_security' => 'SMTP säkerhet',
|
|
||||||
'email_smtp_security_none' => 'Ingen',
|
|
||||||
'email_smtp_username' => 'SMTP användarnamn',
|
|
||||||
'email_smtp_password' => 'SMTP lösenord',
|
|
||||||
'email_smtp_noauth' => 'Lämna blank för att inte autentisera',
|
|
||||||
'sms_status' => 'Tillåt SMS',
|
|
||||||
'sms_gateway' => 'Gateway för SMS',
|
|
||||||
'sms_gateway_username' => 'Gateway användarnamn',
|
|
||||||
'sms_gateway_password' => 'Gateway lösenord',
|
|
||||||
'sms_from' => 'Avsändarens telefonnummer',
|
|
||||||
'pushover_status' => 'Tillåt Pushover-meddelande',
|
|
||||||
'pushover_description' => 'Pushover är en tjänst som skickar meddelande i realtid. Se <a
|
|
||||||
href="https://pushover.net/" target="_blank">deras webbsida</a> för mer info.',
|
|
||||||
'pushover_clone_app' => 'Klicka här för att skapa din Pushover app',
|
|
||||||
'pushover_api_token' => 'Pushover App API Token',
|
|
||||||
'pushover_api_token_description' => 'Innan du kan använda Pushover behöver du <a href="%1$s" target="_blank"
|
|
||||||
rel="noopener">registrera en App</a> på deras webbsida och skriva in App
|
|
||||||
API Token här.',
|
|
||||||
'alert_type' => 'Välj när du vill bli meddelad.',
|
|
||||||
'alert_type_description' => '<b>Statusförändring:</b> Du får ett meddelande när status ändras. Så från
|
|
||||||
online -> offline eller offline -> online.<br><br /><b>Offline:</b> Du får ett
|
|
||||||
meddelande när en server går offline *FÖR FÖRSTA GÅNGEN* Exempelvis, ditt
|
|
||||||
cronjob körs var 15 minut och din server går ned kl 1 och är nere till kl 6.
|
|
||||||
Du kommer få 1 meddelande kl 1 och inga mer.<br><br><b>Alltid:</b> Du kommer få
|
|
||||||
ett meddelande varje gång kontrollen görs, även om servern har varit offline
|
|
||||||
under en längre tid.',
|
|
||||||
'alert_type_status' => 'Statusförändring',
|
|
||||||
'alert_type_offline' => 'Offline',
|
|
||||||
'alert_type_always' => 'Alltid',
|
|
||||||
'log_status' => 'Statusloggning',
|
|
||||||
'log_status_description' => 'Om statusloggning är TRUE, kommer alla händelser som triggar ett meddelande att
|
|
||||||
loggas.',
|
|
||||||
'log_email' => 'Logga email',
|
|
||||||
'log_sms' => 'Logga SMS',
|
|
||||||
'log_pushover' => 'Logga Pushover-meddelande',
|
|
||||||
'updated' => 'Inställningarna har uppdaterats.',
|
|
||||||
'tab_email' => 'Email',
|
|
||||||
'tab_sms' => 'SMS',
|
|
||||||
'tab_pushover' => 'Pushover',
|
|
||||||
'settings_email' => 'Email-inställningar',
|
|
||||||
'settings_sms' => 'SMS-inställningar',
|
|
||||||
'settings_pushover' => 'Pushover-inställningar',
|
|
||||||
'settings_notification' => 'Meddelande-inställningar',
|
|
||||||
'settings_log' => 'Logg-inställningar',
|
|
||||||
'auto_refresh' => 'Auto-uppdatera',
|
|
||||||
'auto_refresh_description' => 'Auto-uppdatera status-sidan.<br><span class="small">Tid i sekunder, om "0" så
|
|
||||||
uppdateras sidan inte automatiskt.</span>',
|
|
||||||
'test' => 'Test',
|
|
||||||
'test_email' => 'Ett emial kommer skickas till adressen i din profil.',
|
|
||||||
'test_sms' => 'Ett SMS kommer skickas till mobilnumret i din profil.',
|
|
||||||
'test_pushover' => 'Ett Pushover-meddelande kommer skickas till "user key/device" i din profil.',
|
|
||||||
'send' => 'Skicka',
|
|
||||||
'test_subject' => 'Test',
|
|
||||||
'test_message' => 'Testmeddelande',
|
|
||||||
'email_sent' => 'Email skickat',
|
|
||||||
'email_error' => 'Sändning av email misslyckades',
|
|
||||||
'sms_sent' => 'Sms skickat',
|
|
||||||
'sms_error' => 'Sändning av SMS misslyckades. %s',
|
|
||||||
'sms_error_nomobile' => 'Kan inte skicka test-SMS: det finns inget giltigt mobilnummer i din profil.',
|
|
||||||
'pushover_sent' => 'Pushover-meddelande skickat',
|
|
||||||
'pushover_error' => 'Ett fel uppstod vid sändning av Pushover-meddelande: %s',
|
|
||||||
'pushover_error_noapp' => 'Kan inte skicka test-meddelande: Ingen Pushover App API token hittades i gemensamma
|
|
||||||
inställningar.',
|
|
||||||
'pushover_error_nokey' => 'Kan inte skicka test-meddelande: Ingen Pushover key finns i din profil.',
|
|
||||||
'log_retention_period' => 'Loggar sparas',
|
|
||||||
'log_retention_period_description' => 'Antal dagar loggar över meddelande och uptime sparas. 0 innebär att
|
|
||||||
loggrensning är avstängd.',
|
|
||||||
'log_retention_days' => 'dagar',
|
|
||||||
),
|
|
||||||
'notifications' => array(
|
|
||||||
'off_sms' => 'Server \'%LABEL%\' är NERE: ip=%IP%, port=%PORT%. Fel=%ERROR%',
|
|
||||||
'off_email_subject' => 'VIKTIGT: Server \'%LABEL%\' är NERE',
|
|
||||||
'off_email_body' => 'Kunde inte ansluta till följande server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>Fel: %ERROR%<br>Tid: %DATE%',
|
|
||||||
'off_pushover_title' => 'Server \'%LABEL%\' är NERE',
|
|
||||||
'off_pushover_message' => 'Kunde inte ansluta till följande server:<br><br>Server: %LABEL%<br>IP:
|
|
||||||
%IP%<br>Port: %PORT%<br>Fel: %ERROR%<br>Tid: %DATE%',
|
|
||||||
'on_sms' => 'Server \'%LABEL%\' är UPPE: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
|
||||||
'on_email_subject' => 'VIKTIGT: Server \'%LABEL%\' är UPPE',
|
|
||||||
'on_email_body' => 'Server \'%LABEL%\' är uppe igen, it was down for %LAST_OFFLINE_DURATION%:<br><br>Server:
|
|
||||||
%LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Tid: %DATE%',
|
|
||||||
'on_pushover_title' => 'Server \'%LABEL%\' är UPPE',
|
|
||||||
'on_pushover_message' => 'Server \'%LABEL%\' är uppe igen, it was down for
|
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Tid:
|
|
||||||
%DATE%',
|
|
||||||
),
|
|
||||||
'login' => array(
|
|
||||||
'welcome_usermenu' => 'Välkommen, %user_name%',
|
|
||||||
'title_sign_in' => 'Logga in',
|
|
||||||
'title_forgot' => 'Glömt ditt lösenord?',
|
|
||||||
'title_reset' => 'Återställ ditt lösenord',
|
|
||||||
'submit' => 'Skicka',
|
|
||||||
'remember_me' => 'Kom ihåg mig',
|
|
||||||
'login' => 'Logga in',
|
|
||||||
'logout' => 'Logga ut',
|
|
||||||
'username' => 'Användarnamn',
|
|
||||||
'password' => 'Lösenord',
|
|
||||||
'password_repeat' => 'Upprepa lösenord',
|
|
||||||
'password_forgot' => 'Glömt lösenord?',
|
|
||||||
'password_reset' => 'Återställ lösenord',
|
|
||||||
'password_reset_email_subject' => 'Password reset for PHP Server Monitor',
|
|
||||||
'password_reset_email_body' => 'Använd följande länk för att återställa ditt
|
|
||||||
lösenord. Tänk på att länken bara är giltig 1
|
|
||||||
timme.<br><br>%link%',
|
|
||||||
'error_user_incorrect' => 'Användaren kunde inte hittas.',
|
|
||||||
'error_login_incorrect' => 'Informationen är felaktig.',
|
|
||||||
'error_login_passwords_nomatch' => 'Lösenorden stämmer inte överens.',
|
|
||||||
'error_reset_invalid_link' => 'Reset-länken är ogiltig.',
|
|
||||||
'success_password_forgot' => 'Ett email med information om hur du nollställer ditt lösenord har skickats.',
|
|
||||||
'success_password_reset' => 'Ditt lösenord har nollställts. Var god logga in.',
|
|
||||||
),
|
|
||||||
'error' => array(
|
|
||||||
'401_unauthorized' => 'Unauthorized',
|
|
||||||
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
|
||||||
),
|
|
||||||
);
|
|
|
@ -1,321 +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 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.',
|
|
||||||
),
|
|
||||||
);
|
|
|
@ -1,538 +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 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' => 'Ви не маєте дозволу переглядати цю
|
|
||||||
сторінку.',
|
|
||||||
),
|
|
||||||
);
|
|
|
@ -1,325 +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 Loi Le <lploi91@gmail.com>
|
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
|
||||||
* @version Release: @package_version@
|
|
||||||
* @link http://www.phpservermonitor.org/
|
|
||||||
**/
|
|
||||||
|
|
||||||
$sm_lang = array(
|
|
||||||
'name' => 'Tiếng Việt - Vietnamese',
|
|
||||||
'locale' => array(
|
|
||||||
'0' => 'vi_VN.UTF-8',
|
|
||||||
'1' => 'vi_VN',
|
|
||||||
'2' => 'Việt Nam',
|
|
||||||
),
|
|
||||||
'system' => array(
|
|
||||||
'title' => 'Server Monitor',
|
|
||||||
'install' => 'Cài đặt',
|
|
||||||
'action' => 'Hành động',
|
|
||||||
'save' => 'Lưu',
|
|
||||||
'edit' => 'Sửa',
|
|
||||||
'delete' => 'Xóa',
|
|
||||||
'date' => 'Ngày',
|
|
||||||
'message' => 'Message',
|
|
||||||
'yes' => 'Yes',
|
|
||||||
'no' => 'No',
|
|
||||||
'insert' => 'Thêm mới',
|
|
||||||
'add_new' => 'Thêm mới',
|
|
||||||
'update_available' => 'Phiên bản mới ({version}) có săn trên <a
|
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
|
||||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
|
||||||
'back_to_top' => 'Lên đầu trang',
|
|
||||||
'go_back' => 'Quay lại',
|
|
||||||
'ok' => 'OK',
|
|
||||||
'cancel' => 'Cancel',
|
|
||||||
'short_day_format' => '%B %e',
|
|
||||||
'long_day_format' => '%B %e, %Y',
|
|
||||||
'yesterday_format' => 'Yesterday at %k:%M',
|
|
||||||
'other_day_format' => '%A at %k:%M',
|
|
||||||
'never' => 'Never',
|
|
||||||
'hours_ago' => '%d giờ trước',
|
|
||||||
'an_hour_ago' => 'khoảng một giờ trước',
|
|
||||||
'minutes_ago' => '%d phút trước',
|
|
||||||
'a_minute_ago' => 'khoảng một phút trước',
|
|
||||||
'seconds_ago' => '%d giây trước',
|
|
||||||
'a_second_ago' => 'một giây trước',
|
|
||||||
'seconds' => 'giây',
|
|
||||||
),
|
|
||||||
'menu' => array(
|
|
||||||
'config' => 'Cấu hình',
|
|
||||||
'server' => 'Servers',
|
|
||||||
'server_log' => 'Log',
|
|
||||||
'server_status' => 'Trạng thái',
|
|
||||||
'server_update' => 'Cập nhật',
|
|
||||||
'user' => 'Người dùng',
|
|
||||||
'help' => 'Giúp đỡ',
|
|
||||||
),
|
|
||||||
'users' => array(
|
|
||||||
'user' => 'Người dùng',
|
|
||||||
'name' => 'Tên',
|
|
||||||
'user_name' => 'Tên đăng nhập',
|
|
||||||
'password' => 'Mật khẩu',
|
|
||||||
'password_repeat' => 'Nhập lại mật khẩu',
|
|
||||||
'password_leave_blank' => 'Leave blank to keep unchanged',
|
|
||||||
'level' => 'Cấp độ',
|
|
||||||
'level_10' => 'Administrator',
|
|
||||||
'level_20' => 'User',
|
|
||||||
'level_description' => '<b>Administrators</b> có toàn quyền: họ có thể quản lý server, người
|
|
||||||
dùng và chỉnh sửa cấu hình.<br><b>Users</b> chỉ xem và chạy cập nhật
|
|
||||||
cho servers được giao cho họ.',
|
|
||||||
'mobile' => 'Di động',
|
|
||||||
'email' => 'Email',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'pushover_description' => 'Pushover là một dịch vụ dễ dàng nhận các thông báo theo thời gian
|
|
||||||
thực. Xem <a href="https://pushover.net/" target="_blank">website của họ</a>
|
|
||||||
để biết thêm thông tin.',
|
|
||||||
'pushover_key' => 'Pushover Key',
|
|
||||||
'pushover_device' => 'Pushover Device',
|
|
||||||
'pushover_device_description' => 'Tên thiết bị để gửi tin nhắn đến. Để trống để gửi
|
|
||||||
cho tất cả các thiết bị.',
|
|
||||||
'delete_title' => 'Xóa Người dùng',
|
|
||||||
'delete_message' => 'Bạn có chắc chắn xóa người dùng \'%1\'?',
|
|
||||||
'deleted' => 'Đã xóa người dùng.',
|
|
||||||
'updated' => 'Đã cập nhật người dùng.',
|
|
||||||
'inserted' => 'Đã thêm người dùng.',
|
|
||||||
'profile' => 'Hồ sơ',
|
|
||||||
'profile_updated' => 'Hồ sơ của bạn đã được cập nhật.',
|
|
||||||
'error_user_name_bad_length' => 'Tên người dùng phải có từ 2 và 64 ký tự.',
|
|
||||||
'error_user_name_invalid' => 'Tên người dùng chỉ có thể chứa các chữ cái(a-z, A-Z), số
|
|
||||||
(0-9), dấu chấm (.) và dấu gạch dưới (_).',
|
|
||||||
'error_user_name_exists' => 'Tên người dùng đã tồn tại trong cơ sở dữ liệu.',
|
|
||||||
'error_user_email_bad_length' => 'Địa chỉ email phải từ 5 đến 255 ký tự.',
|
|
||||||
'error_user_email_invalid' => 'Địa chỉ email không hợp lệ.',
|
|
||||||
'error_user_level_invalid' => 'Cấp độ người dùng không hợp lệ.',
|
|
||||||
'error_user_no_match' => 'Người dùng không tìm thấy trong cơ sở dữ liệu.',
|
|
||||||
'error_user_password_invalid' => 'Đặt mật khẩu không hợp lệ.',
|
|
||||||
'error_user_password_no_match' => 'Các mật khẩu không khớp.',
|
|
||||||
),
|
|
||||||
'log' => array(
|
|
||||||
'title' => 'Log entries',
|
|
||||||
'type' => 'Loại',
|
|
||||||
'status' => 'Trạng thái',
|
|
||||||
'email' => 'Email',
|
|
||||||
'sms' => 'SMS',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'no_logs' => 'No logs',
|
|
||||||
'clear' => 'Xoá nhật ký',
|
|
||||||
'delete_title' => 'Xoá nhật ký',
|
|
||||||
'delete_message' => 'Bạn có chắc chắn muốn xóa <b>tất</b> cả các bản ghi?',
|
|
||||||
),
|
|
||||||
'servers' => array(
|
|
||||||
'server' => 'Server',
|
|
||||||
'status' => 'Trạng thái',
|
|
||||||
'label' => 'Nhãn',
|
|
||||||
'domain' => 'Domain/IP',
|
|
||||||
'timeout' => 'Timeout',
|
|
||||||
'timeout_description' => 'Số giây để đợi máy chủ phản hồi.',
|
|
||||||
'port' => 'Cổng',
|
|
||||||
'type' => 'Loại',
|
|
||||||
'type_website' => 'Website',
|
|
||||||
'type_service' => 'Dịch vụ',
|
|
||||||
'pattern' => 'Tìm kiếm chuỗi/mẫu',
|
|
||||||
'pattern_description' => 'Nếu mẫu không tìm thấy trên website, server sẽ được đánh dấu là
|
|
||||||
offline. Biểu thức chính quy (Regular expressions) được cho phép.',
|
|
||||||
'last_check' => 'Kiểm tra lần cuối',
|
|
||||||
'last_online' => 'Trực tuyến lần cuối',
|
|
||||||
'monitoring' => 'Giám sát',
|
|
||||||
'no_monitoring' => 'Không giám sát',
|
|
||||||
'email' => 'Email',
|
|
||||||
'send_email' => 'Gửi Email',
|
|
||||||
'sms' => 'SMS',
|
|
||||||
'send_sms' => 'Gửi SMS',
|
|
||||||
'pushover' => 'Pushover',
|
|
||||||
'users' => 'Người dùng',
|
|
||||||
'delete_title' => 'Xóa server',
|
|
||||||
'delete_message' => 'Bạn có chắt chắn xóa server \'%1\'?',
|
|
||||||
'deleted' => 'Đã xóa server.',
|
|
||||||
'updated' => 'Đã cập nhật server.',
|
|
||||||
'inserted' => 'Đã thêm server.',
|
|
||||||
'latency' => 'Độ trễ',
|
|
||||||
'latency_max' => 'Độ trễ (cao nhất)',
|
|
||||||
'latency_min' => 'Độ trễ (thấp nhất)',
|
|
||||||
'latency_avg' => 'Độ trễ (trung bình)',
|
|
||||||
'uptime' => 'Thời gian hoạt động',
|
|
||||||
'year' => 'Năm',
|
|
||||||
'month' => 'Tháng',
|
|
||||||
'week' => 'Tuần',
|
|
||||||
'day' => 'Ngày',
|
|
||||||
'hour' => 'Giờ',
|
|
||||||
'warning_threshold' => 'Ngưỡng cảnh báo',
|
|
||||||
'warning_threshold_description' => 'Số lần kiểm tra thất bại trước khi đánh đấu là offline.',
|
|
||||||
'chart_last_week' => 'Tuần trước',
|
|
||||||
'chart_history' => 'Lịch sử',
|
|
||||||
'chart_day_format' => '%Y-%m-%d',
|
|
||||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
|
||||||
'chart_short_date_format' => '%m/%d %H:%M',
|
|
||||||
'chart_short_time_format' => '%H:%M',
|
|
||||||
'warning_notifications_disabled_sms' => 'SMS thông báo bị vô hiệu hóa.',
|
|
||||||
'warning_notifications_disabled_email' => 'Email thông báo bị vô hiệu hóa.',
|
|
||||||
'warning_notifications_disabled_pushover' => 'Pushover thông báo bị vô hiệu hóa.',
|
|
||||||
'error_server_no_match' => 'Không tìm thấy server.',
|
|
||||||
'error_server_label_bad_length' => 'Nhãn phải có từ 1 đến 255 ký tự.',
|
|
||||||
'error_server_ip_bad_length' => 'The domain / IP Nhãn phải có từ 1 đến 255 ký tự.',
|
|
||||||
'error_server_ip_bad_service' => 'Địa chỉ IP không hợp lệ.',
|
|
||||||
'error_server_ip_bad_website' => 'URL website không hợp lệ.',
|
|
||||||
'error_server_type_invalid' => 'Chọn loại server không hợp lệ.',
|
|
||||||
'error_server_warning_threshold_invalid' => 'Ngưỡng cảnh báo phải là một số nguyên có giá
|
|
||||||
trị lớn hơn 0.',
|
|
||||||
),
|
|
||||||
'config' => array(
|
|
||||||
'general' => 'Tổng quát',
|
|
||||||
'language' => 'Ngôn ngữ',
|
|
||||||
'show_update' => 'Kiểm tra cập nhật?',
|
|
||||||
'email_status' => 'Cho phép gửi email',
|
|
||||||
'email_from_email' => 'Gửi email từ địa chỉ',
|
|
||||||
'email_from_name' => 'Tên địa chỉ mail',
|
|
||||||
'email_smtp' => 'Enable SMTP',
|
|
||||||
'email_smtp_host' => 'SMTP host',
|
|
||||||
'email_smtp_port' => 'SMTP port',
|
|
||||||
'email_smtp_security' => 'SMTP security',
|
|
||||||
'email_smtp_security_none' => 'None',
|
|
||||||
'email_smtp_username' => 'SMTP username',
|
|
||||||
'email_smtp_password' => 'SMTP password',
|
|
||||||
'email_smtp_noauth' => 'Để trống nếu không có chứng thực',
|
|
||||||
'sms_status' => 'Cho phép gửi tin nhắn văn bản',
|
|
||||||
'sms_gateway' => 'Gateway sử dụng để gửi tin nhắn',
|
|
||||||
'sms_gateway_username' => 'Gateway username',
|
|
||||||
'sms_gateway_password' => 'Gateway password',
|
|
||||||
'sms_from' => 'Số điện thoại của người gửi',
|
|
||||||
'pushover_status' => 'Cho phép gửi tin nhắn bằng Pushover',
|
|
||||||
'pushover_description' => 'Pushover là một dịch vụ dễ dàng nhận các thông báo theo thời gian
|
|
||||||
thực. Xem <a href="https://pushover.net/" target="_blank">website của họ</a>
|
|
||||||
để biết thêm thông tin.',
|
|
||||||
'pushover_clone_app' => 'Nhấn vào đây để tạo ứng dụng Pushover của bạn',
|
|
||||||
'pushover_api_token' => 'Pushover App API Token',
|
|
||||||
'pushover_api_token_description' => 'Trước khi bạn có thể sử dụng Pushover, bạn cần phải <a
|
|
||||||
href="%1$s" target="_blank" rel="noopener">đăng ký một ứng
|
|
||||||
dụng</a> tại trang web của họ và nhập Token App API ở đây.',
|
|
||||||
'alert_type' => 'Chọn khi bạn muốn được thông báo.',
|
|
||||||
'alert_type_description' => '<b>Thay đổi trạng thái:</b> Bạn sẽ nhận được thông báo khi
|
|
||||||
một máy chủ có một sự thay đổi trạng thái. Từ online -> offline
|
|
||||||
hoặc offline -> online.<br><br /><b>Offline:</b> Bạn sẽ nhận được
|
|
||||||
thông báo khi một máy chủ offline *MỘT LẦN DUY NHẤT*. Ví dụ,
|
|
||||||
cronjob của bạn hoạt động mỗi 15 phút và server của bạn down
|
|
||||||
tại 01h00 cho đến 6h00. Bạn sẽ nhận được 1 thông báo lúc 01h00
|
|
||||||
và đó là nó.<br><br><b>Always:</b> Bạn sẽ nhận được thông báo
|
|
||||||
mỗi khi chạy đoạn script và một trang web tắt, ngay cả khi trang
|
|
||||||
web đã được offline trong nhiều giờ.',
|
|
||||||
'alert_type_status' => 'Thay đổi trạng thái',
|
|
||||||
'alert_type_offline' => 'Offline',
|
|
||||||
'alert_type_always' => 'Always',
|
|
||||||
'log_status' => 'Log status',
|
|
||||||
'log_status_description' => 'Nếu log status được đặt là TRUE, màn hình sẽ đăng sự kiện
|
|
||||||
này bất cứ khi nào các thiết lập thông báo được truyền.',
|
|
||||||
'log_email' => 'Log emails gửi bởi script',
|
|
||||||
'log_sms' => 'Log Tin nhăn văn bản gửi bởi script',
|
|
||||||
'log_pushover' => 'Log tin nhắn pushover gửi bởi script',
|
|
||||||
'updated' => 'Cấu hình đã được cập nhật.',
|
|
||||||
'tab_email' => 'Email',
|
|
||||||
'tab_sms' => 'SMS',
|
|
||||||
'tab_pushover' => 'Pushover',
|
|
||||||
'settings_email' => 'Thiết lặp email',
|
|
||||||
'settings_sms' => 'Thiết lập tin nhăn văn bản',
|
|
||||||
'settings_pushover' => 'Thiết lặp Pushover',
|
|
||||||
'settings_notification' => 'Thiết lặp thông báo',
|
|
||||||
'settings_log' => 'Thiết lặp Log',
|
|
||||||
'auto_refresh' => 'Tự động làm mới',
|
|
||||||
'auto_refresh_description' => 'Tự động làm mới servers page.<br><span class="small">Trong vài giây,
|
|
||||||
nếu 0 trang sẽ không làm mới.</span>',
|
|
||||||
'test' => 'Thử',
|
|
||||||
'test_email' => 'Một email sẽ được gửi đến địa chỉ được xác định trong hồ sơ
|
|
||||||
người dùng của bạn.',
|
|
||||||
'test_sms' => 'Một SMS sẽ được gửi đến địa chỉ được xác định trong hồ sơ người
|
|
||||||
dùng của bạn.',
|
|
||||||
'test_pushover' => 'Một thông báo Pushover sẽ được gửi đến địa chỉ được xác định
|
|
||||||
trong hồ sơ người dùng của bạn.',
|
|
||||||
'send' => 'Gửi',
|
|
||||||
'test_subject' => 'Thử nghiệm',
|
|
||||||
'test_message' => 'tin nhắn thử nghiệm',
|
|
||||||
'email_sent' => 'Gửi email',
|
|
||||||
'email_error' => 'Lỗi trong khi gửi mail',
|
|
||||||
'sms_sent' => 'Gửi SMS',
|
|
||||||
'sms_error' => 'Lỗi trong khi gửi sms. %s',
|
|
||||||
'sms_error_nomobile' => 'Không thể gửi thử SMS: không có số điện thoại hợp lệ được
|
|
||||||
tìm thấy trong hồ sơ của bạn.',
|
|
||||||
'pushover_sent' => 'Gửi thông báo Pushover',
|
|
||||||
'pushover_error' => 'Một lỗi đã xảy ra trong khi gửi thông báo Pushover: %s',
|
|
||||||
'pushover_error_noapp' => 'Không thể gửi thử thông báo: không tìm thấy Pushover App API token
|
|
||||||
trong cấu hình.',
|
|
||||||
'pushover_error_nokey' => 'Không thể gửi thử thông báo: không tìm thấy Pushover key trong hồ
|
|
||||||
sơ của bạn.',
|
|
||||||
'log_retention_period' => 'Thời gian lưu giữ log',
|
|
||||||
'log_retention_period_description' => 'Số ngày để giữ các bản ghi của các thông báo và tài
|
|
||||||
liệu lưu trữ của thời gian hoạt động máy chủ. Nhập 0
|
|
||||||
để vô hiệu hóa dọn dẹp log.',
|
|
||||||
'log_retention_days' => 'ngày',
|
|
||||||
),
|
|
||||||
'notifications' => array(
|
|
||||||
'off_sms' => 'Server \'%LABEL%\' is DOWN: ip=%IP%, cổng=%PORT%. Lỗi=%ERROR%',
|
|
||||||
'off_email_subject' => 'IMPORTANT: Server \'%LABEL%\' is DOWN',
|
|
||||||
'off_email_body' => 'Không thể kết nối đến máy chủ sau:<br><br>Server: %LABEL%<br>IP:
|
|
||||||
%IP%<br>Cổng: %PORT%<br>Lỗi: %ERROR%<br>Thời gian: %DATE%',
|
|
||||||
'off_pushover_title' => 'Server \'%LABEL%\' is DOWN',
|
|
||||||
'off_pushover_message' => 'Không thể kết nối đến máy chủ:<br><br>Server: %LABEL%<br>IP:
|
|
||||||
%IP%<br>Cổng: %PORT%<br>Lỗi: %ERROR%<br>Thời gian: %DATE%',
|
|
||||||
'on_sms' => 'Server \'%LABEL%\' is RUNNING: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
|
||||||
'on_email_subject' => 'IMPORTANT: Server \'%LABEL%\' hoạt động',
|
|
||||||
'on_email_body' => 'Server \'%LABEL%\' hoạt động lại, it was down for
|
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Cổng: %PORT%<br>Thời
|
|
||||||
gian: %DATE%',
|
|
||||||
'on_pushover_title' => 'Server \'%LABEL%\' hoạt động',
|
|
||||||
'on_pushover_message' => 'Server \'%LABEL%\' hoạt động lại, it was down for
|
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Cổng:
|
|
||||||
%PORT%<br>Thời gian: %DATE%',
|
|
||||||
),
|
|
||||||
'login' => array(
|
|
||||||
'welcome_usermenu' => 'Chào mừng, %user_name%',
|
|
||||||
'title_sign_in' => 'Vui lòng đăng nhập',
|
|
||||||
'title_forgot' => 'Quên mật khẩu?',
|
|
||||||
'title_reset' => 'Khôi phục mật khẩu',
|
|
||||||
'submit' => 'Gửi',
|
|
||||||
'remember_me' => 'Ghi nhớ tôi',
|
|
||||||
'login' => 'Đăng nhập',
|
|
||||||
'logout' => 'Đăng xuất',
|
|
||||||
'username' => 'Tên đăng nhập',
|
|
||||||
'password' => 'Mật khẩu',
|
|
||||||
'password_repeat' => 'Nhập lại mật khẩu',
|
|
||||||
'password_forgot' => 'Quên mật khẩu?',
|
|
||||||
'password_reset' => 'Khôi phục mật khẩu',
|
|
||||||
'password_reset_email_subject' => 'Khôi phục lại mật khẩu của bạn cho PHP Server Monitor',
|
|
||||||
'password_reset_email_body' => 'Vui lòng sử dụng liên kết sau đây để thiết lập lại mật
|
|
||||||
khẩu của bạn. Xin lưu ý nó hết hạn trong 1 giờ.<br><br>%link%',
|
|
||||||
'error_user_incorrect' => 'Tên người dùng cung cấp không thể tìm thấy.',
|
|
||||||
'error_login_incorrect' => 'Thông tin không đúng.',
|
|
||||||
'error_login_passwords_nomatch' => 'Mật khẩu được cung cấp không phù hợp.',
|
|
||||||
'error_reset_invalid_link' => 'Liên kết đặt lại mà bạn cung cấp không hợp lệ.',
|
|
||||||
'success_password_forgot' => 'Một email đã được gửi đến bạn với thông tin làm thế nào
|
|
||||||
để khôi phục lại mật khẩu của bạn.',
|
|
||||||
'success_password_reset' => 'Mật khẩu bạn được khôi phục thành công. Vui lòng đăng nhập.',
|
|
||||||
),
|
|
||||||
'error' => array(
|
|
||||||
'401_unauthorized' => 'Không được phép',
|
|
||||||
'401_unauthorized_description' => 'Bạn không có quyền xem trang này.',
|
|
||||||
),
|
|
||||||
);
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -20,7 +19,7 @@
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author manhere <https://github.com/manhere>
|
* @author manhere <https://github.com/manhere>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
|
@ -28,14 +27,7 @@
|
||||||
|
|
||||||
$sm_lang = array(
|
$sm_lang = array(
|
||||||
'name' => '中文 - Chinese',
|
'name' => '中文 - Chinese',
|
||||||
'locale' => array(
|
'locale' => array('zh_CN.UTF-8', 'zh_CN', 'chinese', 'chinese-cn'),
|
||||||
'0' => 'zh_CN.UTF-8',
|
|
||||||
'1' => 'zh_CN',
|
|
||||||
'2' => 'chinese',
|
|
||||||
'3' => 'chinese-cn',
|
|
||||||
),
|
|
||||||
'locale_tag' => 'zh',
|
|
||||||
'locale_dir' => 'ltr',
|
|
||||||
'system' => array(
|
'system' => array(
|
||||||
'title' => 'Server Monitor',
|
'title' => 'Server Monitor',
|
||||||
'install' => '安装',
|
'install' => '安装',
|
||||||
|
@ -46,16 +38,15 @@ $sm_lang = array(
|
||||||
'date' => '日期',
|
'date' => '日期',
|
||||||
'message' => '消息',
|
'message' => '消息',
|
||||||
'yes' => '是',
|
'yes' => '是',
|
||||||
'no' => '否',
|
'no' => '否o',
|
||||||
'insert' => '新增',
|
'insert' => '插入',
|
||||||
'add_new' => '添加',
|
'add_new' => '添加',
|
||||||
'update_available' => '发现新版本({version}) <a
|
'update_available' => '发现新版本({version}) <a href="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||||
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
|
|
||||||
rel="noopener">http://www.phpservermonitor.org</a>.',
|
|
||||||
'back_to_top' => '返回顶部',
|
'back_to_top' => '返回顶部',
|
||||||
'go_back' => '后退',
|
'go_back' => '后退',
|
||||||
'ok' => '确认',
|
'ok' => 'OK',
|
||||||
'cancel' => '取消',
|
'cancel' => 'Cancel',
|
||||||
|
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||||
'short_day_format' => '%B %e',
|
'short_day_format' => '%B %e',
|
||||||
'long_day_format' => '%B %e, %Y',
|
'long_day_format' => '%B %e, %Y',
|
||||||
'yesterday_format' => '昨日 %k:%M',
|
'yesterday_format' => '昨日 %k:%M',
|
||||||
|
@ -67,14 +58,13 @@ $sm_lang = array(
|
||||||
'a_minute_ago' => '1分钟前',
|
'a_minute_ago' => '1分钟前',
|
||||||
'seconds_ago' => '%d 秒前',
|
'seconds_ago' => '%d 秒前',
|
||||||
'a_second_ago' => '刚刚',
|
'a_second_ago' => '刚刚',
|
||||||
'seconds' => '秒',
|
|
||||||
),
|
),
|
||||||
'menu' => array(
|
'menu' => array(
|
||||||
'config' => '设置',
|
'config' => '设置',
|
||||||
'server' => '监控',
|
'server' => '服务器',
|
||||||
'server_log' => '日志',
|
'server_log' => '日志',
|
||||||
'server_status' => '状态',
|
'server_status' => '状态',
|
||||||
'server_update' => '刷新',
|
'server_update' => '更新',
|
||||||
'user' => '用户',
|
'user' => '用户',
|
||||||
'help' => '帮助',
|
'help' => '帮助',
|
||||||
),
|
),
|
||||||
|
@ -88,27 +78,23 @@ $sm_lang = array(
|
||||||
'level' => '等级',
|
'level' => '等级',
|
||||||
'level_10' => '超级管理员',
|
'level_10' => '超级管理员',
|
||||||
'level_20' => '普通用户',
|
'level_20' => '普通用户',
|
||||||
'level_description' => '<b>超级管理员</b> 拥有所有权限: 管理服务器, 用户
|
'level_description' => '<b>超级管理员</b> 拥有所有权限: 管理服务器, 用户 以及修改设置.<br/><b>普通用户</b> 只能查看及更新自己名下所属的服务器.',
|
||||||
以及修改设置.<br><b>普通用户</b>
|
|
||||||
只能查看及更新自己名下所属的服务器.',
|
|
||||||
'mobile' => '手机',
|
'mobile' => '手机',
|
||||||
'email' => '邮件',
|
'email' => '邮件',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'pushover_description' => 'Pushover 是第三方用于实时通知的服务(收费). 详情见 <a
|
'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.',
|
||||||
href="https://pushover.net/" target="_blank" rel="noopener">Pushover 官网</a>.',
|
|
||||||
'pushover_key' => 'Pushover Key',
|
'pushover_key' => 'Pushover Key',
|
||||||
'pushover_device' => 'Pushover Device',
|
'pushover_device' => 'Pushover Device',
|
||||||
'pushover_device_description' => '要发送信息的设备名. 留空则发送到所有设备.',
|
'pushover_device_description' => 'Device name to send the message to. Leave empty to send it to all devices.',
|
||||||
'delete_title' => '删除用户',
|
'delete_title' => 'Delete User',
|
||||||
'delete_message' => '确认删除用户 \'%1\'?',
|
'delete_message' => 'Are you sure you want to delete user \'%1\'?',
|
||||||
'deleted' => '用户已删除.',
|
'deleted' => 'User deleted.',
|
||||||
'updated' => '用户已更新.',
|
'updated' => '用户已更新.',
|
||||||
'inserted' => '用户已添加.',
|
'inserted' => '用户已添加.',
|
||||||
'profile' => '个人资料',
|
'profile' => '个人资料',
|
||||||
'profile_updated' => '个人资料已更新.',
|
'profile_updated' => '个人资料已更新.',
|
||||||
'error_user_name_bad_length' => '用户名长度必须为2-64个字符.',
|
'error_user_name_bad_length' => '用户名长度必须为2-64个字符.',
|
||||||
'error_user_name_invalid' => '用户名只允许使用字母 (a-z, A-Z), 数字 (0-9), 點(。)
|
'error_user_name_invalid' => '用户名只允许使用字母 (a-z, A-Z), 数字 (0-9) 及下划线 (_).',
|
||||||
及下划线 (_).',
|
|
||||||
'error_user_name_exists' => '该用户名已存在.',
|
'error_user_name_exists' => '该用户名已存在.',
|
||||||
'error_user_email_bad_length' => '电子邮箱长度必须为5-255个字符.',
|
'error_user_email_bad_length' => '电子邮箱长度必须为5-255个字符.',
|
||||||
'error_user_email_invalid' => '无效的邮箱地址.',
|
'error_user_email_invalid' => '无效的邮箱地址.',
|
||||||
|
@ -124,54 +110,41 @@ $sm_lang = array(
|
||||||
'email' => '邮件',
|
'email' => '邮件',
|
||||||
'sms' => '短信',
|
'sms' => '短信',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'no_logs' => '没有日志',
|
'no_logs' => 'No logs',
|
||||||
),
|
),
|
||||||
'servers' => array(
|
'servers' => array(
|
||||||
'server' => '业务',
|
'server' => '服务器',
|
||||||
'status' => '状态',
|
'status' => '状态',
|
||||||
'label' => '标签',
|
'label' => '标签',
|
||||||
'domain' => 'URL/IP',
|
'domain' => '域名/IP',
|
||||||
'timeout' => '超时时间',
|
'timeout' => 'Timeout',
|
||||||
'timeout_description' => '等待服务器响应的时间.',
|
'timeout_description' => 'Number of seconds to wait for the server to respond.',
|
||||||
'authentication_settings' => '访问权限设置',
|
|
||||||
'optional' => '可选',
|
|
||||||
'website_username' => '用户名',
|
|
||||||
'website_username_description' => '网站分配的用户名.',
|
|
||||||
'website_password' => '密码',
|
|
||||||
'website_password_description' => '网站分配的密码,密码将会加密存放',
|
|
||||||
'fieldset_monitoring' => '通知',
|
|
||||||
'fieldset_permissions' => '权限',
|
|
||||||
'port' => '端口',
|
'port' => '端口',
|
||||||
'custom_port' => '指定端口',
|
|
||||||
'popular_ports' => '默认端口',
|
|
||||||
'please_select' => '请选择',
|
|
||||||
'type' => '类型',
|
'type' => '类型',
|
||||||
'type_website' => '网站',
|
'type_website' => '网站',
|
||||||
'type_service' => '服务',
|
'type_service' => '服务',
|
||||||
'pattern' => '字符串/正则匹配',
|
'pattern' => '字符串/正则匹配',
|
||||||
'pattern_description' => '如果在网站上未找到对应匹配内容, 则标记该网站为离线.
|
'pattern_description' => '如果在网站上未找到对应匹配内容, 则标记该网站为离线. 支持正则表达式.',
|
||||||
支持正则表达式.',
|
|
||||||
'last_check' => '最后检查',
|
'last_check' => '最后检查',
|
||||||
'last_online' => '最后在线',
|
'last_online' => '最后在线',
|
||||||
'last_offline' => 'Last offline',
|
'monitoring' => '监控中',
|
||||||
'monitoring' => '监控',
|
'no_monitoring' => 'No monitoring',
|
||||||
'no_monitoring' => '未监控',
|
|
||||||
'email' => '邮件',
|
'email' => '邮件',
|
||||||
'send_email' => '发送邮件',
|
'send_email' => '发送邮件',
|
||||||
'sms' => '短信',
|
'sms' => '短信',
|
||||||
'send_sms' => '发送短信',
|
'send_sms' => '发送短信',
|
||||||
'pushover' => 'Pushover',
|
'pushover' => 'Pushover',
|
||||||
'users' => '用户',
|
'users' => 'Users',
|
||||||
'delete_title' => '删除服务器',
|
'delete_title' => 'Delete Server',
|
||||||
'delete_message' => '确认删除服务器 \'%1\'?',
|
'delete_message' => 'Are you sure you want to delete server \'%1\'?',
|
||||||
'deleted' => '服务器已删除.',
|
'deleted' => 'Server deleted.',
|
||||||
'updated' => '服务器已更新.',
|
'updated' => '服务器已更新.',
|
||||||
'inserted' => '服务器已添加.',
|
'inserted' => '服务器已添加.',
|
||||||
'latency' => '延迟',
|
'latency' => '延迟',
|
||||||
'latency_max' => '最大延迟',
|
'latency_max' => '延迟(最大)',
|
||||||
'latency_min' => '最小延迟',
|
'latency_min' => '延迟(最小)',
|
||||||
'latency_avg' => '平均延迟',
|
'latency_avg' => '延迟(平均)',
|
||||||
'uptime' => '在线时长',
|
'uptime' => 'Uptime',
|
||||||
'year' => '年',
|
'year' => '年',
|
||||||
'month' => '月',
|
'month' => '月',
|
||||||
'week' => '周',
|
'week' => '周',
|
||||||
|
@ -181,123 +154,118 @@ $sm_lang = array(
|
||||||
'warning_threshold_description' => '失败达到多少次数则标记为离线.',
|
'warning_threshold_description' => '失败达到多少次数则标记为离线.',
|
||||||
'chart_last_week' => '上周',
|
'chart_last_week' => '上周',
|
||||||
'chart_history' => '更早',
|
'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_day_format' => '%Y-%m-%d',
|
||||||
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
'chart_long_date_format' => '%Y-%m-%d %H:%M:%S',
|
||||||
'chart_short_date_format' => '%m/%d %H:%M',
|
'chart_short_date_format' => '%m/%d %H:%M',
|
||||||
'chart_short_time_format' => '%H:%M',
|
'chart_short_time_format' => '%H:%M',
|
||||||
'warning_notifications_disabled_sms' => '短信通知不可用.',
|
'warning_notifications_disabled_sms' => 'SMS notifications are disabled.',
|
||||||
'warning_notifications_disabled_email' => 'Email 通知不可用.',
|
'warning_notifications_disabled_email' => 'Email notifications are disabled.',
|
||||||
'warning_notifications_disabled_pushover' => 'Pushover 通知不可用.',
|
'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.',
|
||||||
'error_server_no_match' => '服务器不存在.',
|
'error_server_no_match' => 'Server not found.',
|
||||||
'error_server_label_bad_length' => '标签 长度要求 1 ~ 255 字符.',
|
'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.',
|
||||||
'error_server_ip_bad_length' => 'URL / IP 长度要求 1 ~ 255 字符.',
|
'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.',
|
||||||
'error_server_ip_bad_service' => '非法 IP.',
|
'error_server_ip_bad_service' => 'The IP address is not valid.',
|
||||||
'error_server_ip_bad_website' => '非法 URL.',
|
'error_server_ip_bad_website' => 'The website URL is not valid.',
|
||||||
'error_server_type_invalid' => '非法选项.',
|
'error_server_type_invalid' => 'The selected server type is invalid.',
|
||||||
'error_server_warning_threshold_invalid' => '报警阈值为大于 0 的数字.',
|
'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.',
|
||||||
),
|
),
|
||||||
'config' => array(
|
'config' => array(
|
||||||
'general' => '通用',
|
'general' => '通用',
|
||||||
'language' => '语言',
|
'language' => '语言',
|
||||||
'show_update' => '每周检查更新?',
|
'show_update' => '每周检查更新?',
|
||||||
'password_encrypt_key' => '加密密钥',
|
|
||||||
'password_encrypt_key_note' => '该密钥用于加密访问 URL 时的用户名和密码.
|
|
||||||
如果需要修改密钥,请同步修改以前的监控业务,确认密钥匹配!',
|
|
||||||
'proxy' => '使用代理',
|
|
||||||
'proxy_url' => '代理IP',
|
|
||||||
'proxy_user' => '用户名',
|
|
||||||
'proxy_password' => '密码',
|
|
||||||
'email_status' => '允许发送邮件?',
|
'email_status' => '允许发送邮件?',
|
||||||
'email_from_email' => '发件人地址',
|
'email_from_email' => '发件人地址',
|
||||||
'email_from_name' => '发件人名称',
|
'email_from_name' => '发件人名称',
|
||||||
'email_smtp' => '使用SMTP发送',
|
'email_smtp' => '使用SMTP发送',
|
||||||
'email_smtp_host' => 'SMTP主机',
|
'email_smtp_host' => 'SMTP主机',
|
||||||
'email_smtp_port' => 'SMTP端口',
|
'email_smtp_port' => 'SMTP端口',
|
||||||
'email_smtp_security' => 'SMTP 设置',
|
|
||||||
'email_smtp_security_none' => '空',
|
|
||||||
'email_smtp_username' => 'SMTP用户名',
|
'email_smtp_username' => 'SMTP用户名',
|
||||||
'email_smtp_password' => 'SMTP密码',
|
'email_smtp_password' => 'SMTP密码',
|
||||||
'email_smtp_noauth' => '留空为无验证',
|
'email_smtp_noauth' => '留空为无验证',
|
||||||
'sms_status' => '允许发送短信SMS?',
|
'sms_status' => '允许发送短信SMS?',
|
||||||
'sms_gateway' => '短信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_username' => 'SMS网关用户名',
|
||||||
'sms_gateway_password' => 'SMS网关密码',
|
'sms_gateway_password' => 'SMS网关密码',
|
||||||
'sms_from' => '发信人电话号',
|
'sms_from' => '发信人电话号',
|
||||||
'pushover_status' => '允许 Pushover 通知',
|
'pushover_status' => 'Allow sending Pushover messages',
|
||||||
'pushover_description' => 'Pushover 是第三方用于实时通知的服务(收费). 详情见 <a
|
'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.',
|
||||||
href="https://pushover.net/" target="_blank" rel="noopener">Pushover 官网</a>.',
|
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||||
'pushover_clone_app' => '点此创建 Pushover App',
|
'pushover_api_token' => 'Pushover App API Token',
|
||||||
'pushover_api_token' => 'Pushover 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_api_token_description' => '请先 <a href="%1$s" target="_blank" rel="noopener">注册Pushover</a>
|
|
||||||
并获取 Api Token.',
|
|
||||||
'alert_type' => '如果想要收到提醒请选中此项.',
|
'alert_type' => '如果想要收到提醒请选中此项.',
|
||||||
'alert_type_description' => '<b>状态变化:</b> 业务 online -> offline 或 offline -> online
|
'alert_type_description' => '<b>状态变化:</b> '.
|
||||||
的状态变化将会收到提醒.<br><br /><b>离线状态:</b>
|
'服务器 online -> offline 或 offline -> online 的状态变化将会收到提醒.<br/>'.
|
||||||
服务器首次发生离线状态将会收到提醒 ,如:cronjob
|
'<br /><b>离线状态:</b> '.
|
||||||
设定为15分钟执行一次,
|
'服务器首次发生离线状态将会收到提醒 ,如:'.
|
||||||
服务器从1:00-6:00一直处于当状态那么你将于1:00首次发现脱机时收到一条提醒,之后不会重复提醒.<br><br><b>总是提醒:</b>
|
'cronjob 设定为15分钟执行一次, 服务器从1:00-6:00一直处于当状态'.
|
||||||
每次脚本执行或站点离线(即使站点离线很久已提醒过)均发送提醒.',
|
'那么你将于1:00首次发现脱机时收到一条提醒,之后不会重复提醒.<br/>'.
|
||||||
|
'<br><b>总是提醒:</b> '.
|
||||||
|
'每次脚本执行或站点离线(即使站点离线很久已提醒过)均发送提醒.',
|
||||||
'alert_type_status' => '状态变化',
|
'alert_type_status' => '状态变化',
|
||||||
'alert_type_offline' => '离线状态',
|
'alert_type_offline' => '离线状态',
|
||||||
'alert_type_always' => '总是提醒',
|
'alert_type_always' => '总是提醒',
|
||||||
'alert_proxy' => '代理只用于 URL 监控,如没有用户名密码,请留空',
|
|
||||||
'alert_proxy_url' => '格式: Host:Port',
|
|
||||||
'log_status' => '状态记录',
|
'log_status' => '状态记录',
|
||||||
'log_status_description' => '如果状态记录设置为开, 提醒发送时均会保存记录.',
|
'log_status_description' => '如果状态记录设置为开, 提醒发送时均会保存记录.',
|
||||||
'log_email' => '记录脚本所发邮件?',
|
'log_email' => '记录脚本所发邮件?',
|
||||||
'log_sms' => '记录脚本所发短信?',
|
'log_sms' => '记录脚本所发短信SMS?',
|
||||||
'log_pushover' => '记录脚本所发pushover消息?',
|
'log_pushover' => 'Log pushover messages sent by the script',
|
||||||
'updated' => '设置已更新.',
|
'updated' => '设置已更新.',
|
||||||
'tab_email' => '邮件发送设置',
|
'tab_email' => '邮件发送设置',
|
||||||
'tab_sms' => '短信发送设置',
|
'tab_sms' => '短信发送设置',
|
||||||
'tab_pushover' => 'Pushover',
|
'tab_pushover' => 'Pushover',
|
||||||
'settings_email' => '邮件发送设置',
|
'settings_email' => '邮件发送设置',
|
||||||
'settings_sms' => '短信发送设置',
|
'settings_sms' => '短信发送设置',
|
||||||
'settings_pushover' => 'Pushover 设置',
|
'settings_pushover' => 'Pushover settings',
|
||||||
'settings_notification' => '提醒设置',
|
'settings_notification' => '提醒设置',
|
||||||
'settings_log' => '日志设置',
|
'settings_log' => '日志设置',
|
||||||
'settings_proxy' => '代理设置',
|
'auto_refresh' => 'Auto-refresh',
|
||||||
'auto_refresh' => '自动刷新',
|
'auto_refresh_servers' =>
|
||||||
'auto_refresh_description' => '自动刷新服务器页.<br><span class="small">单位为秒, 设置为 0
|
'自动刷新服务器页.<br/>'.
|
||||||
则不自动刷新.</span>',
|
'<span class="small">'.
|
||||||
'test' => '测试',
|
'单位为秒, 设置为0则不自动刷新.'.
|
||||||
'test_email' => '将发送一封邮件到您账户设置的邮件地址.',
|
'</span>',
|
||||||
'test_sms' => '将发送一封短信到您账户设置的手机号码.',
|
'seconds' => 'seconds',
|
||||||
'test_pushover' => '将发送一条 Pushover 通知到您账户设置的 key/device 设备上.',
|
'test' => 'Test',
|
||||||
'send' => '发送',
|
'test_email' => 'An email will be sent to the address specified in your user profile.',
|
||||||
'test_subject' => '测试',
|
'test_sms' => 'An SMS will be sent to the phone number specified in your user profile.',
|
||||||
'test_message' => '测试信息',
|
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
|
||||||
'email_sent' => '发送邮件',
|
'send' => 'Send',
|
||||||
'email_error' => '发送出错',
|
'test_subject' => 'Test',
|
||||||
'sms_sent' => '发送短信',
|
'test_message' => 'Test message',
|
||||||
'sms_error' => '短信发送出错 %s',
|
'email_sent' => 'Email sent',
|
||||||
'sms_error_nomobile' => '无法发送短信: 您的账号未设置有效手机号码.',
|
'email_error' => 'Error in email sending',
|
||||||
'pushover_sent' => '发送Pushover通知',
|
'sms_sent' => 'Sms sent',
|
||||||
'pushover_error' => 'Pushover通知发送出错: %s',
|
'sms_error' => 'Error in sms sending',
|
||||||
'pushover_error_noapp' => 'Pushover通知发送出错: no Pushover App API token found in the global
|
'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.',
|
||||||
configuration.',
|
'pushover_sent' => 'Pushover notification sent',
|
||||||
'pushover_error_nokey' => 'Pushover通知无法发送: no Pushover key found in your profile.',
|
'pushover_error' => 'An error has occurred while sending the Pushover notification: %s',
|
||||||
'log_retention_period' => '日志保留时长',
|
'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.',
|
||||||
'log_retention_period_description' => '日志存档保留时间,0为禁用日志清理',
|
'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.',
|
||||||
'log_retention_days' => '天',
|
'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(
|
'notifications' => array(
|
||||||
'off_sms' => '监控项 \'%LABEL%:%PORT%\' 异常. %ERROR% %IP%',
|
'off_sms' => '服务器 \'%LABEL%\' 宕机: ip=%IP%, port=%PORT%. Error=%ERROR%',
|
||||||
'off_email_subject' => 'IMPORTANT: 服务器 \'%LABEL%\' 宕机',
|
'off_email_subject' => 'IMPORTANT: 服务器 \'%LABEL%\' 宕机',
|
||||||
'off_email_body' => '无法连接到以下服务器:<br><br>服务器: %LABEL%<br>IP: %IP%<br>Port:
|
'off_email_body' => "无法连接到以下服务器:<br/><br/>服务器: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>错误: %ERROR%<br/>日期: %DATE%",
|
||||||
%PORT%<br>错误: %ERROR%<br>日期: %DATE%',
|
|
||||||
'off_pushover_title' => '服务器 \'%LABEL%\' 宕机',
|
'off_pushover_title' => '服务器 \'%LABEL%\' 宕机',
|
||||||
'off_pushover_message' => '无法连接到以下服务器:<br><br>服务器: %LABEL%<br>IP: %IP%<br>Port:
|
'off_pushover_message' => "无法连接到以下服务器:<br/><br/>服务器: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>错误: %ERROR%<br/>日期: %DATE%",
|
||||||
%PORT%<br>错误: %ERROR%<br>日期: %DATE%',
|
'on_sms' => '服务器 \'%LABEL%\' 运行中: ip=%IP%, port=%PORT%',
|
||||||
'on_sms' => '服务器 \'%LABEL%\' 运行中: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
|
|
||||||
'on_email_subject' => 'IMPORTANT: 服务器 \'%LABEL%\' 运行中',
|
'on_email_subject' => 'IMPORTANT: 服务器 \'%LABEL%\' 运行中',
|
||||||
'on_email_body' => '服务器 \'%LABEL%\' 恢复运行, it was down for
|
'on_email_body' => "服务器 '%LABEL%' 恢复运行:<br/><br/>服务器: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>日期: %DATE%",
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>服务器: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>日期:
|
|
||||||
%DATE%',
|
|
||||||
'on_pushover_title' => '服务器 \'%LABEL%\' 运行中',
|
'on_pushover_title' => '服务器 \'%LABEL%\' 运行中',
|
||||||
'on_pushover_message' => '服务器 \'%LABEL%\' 恢复运行, it was down for
|
'on_pushover_message' => "服务器 '%LABEL%' 恢复运行:<br/><br/>服务器: %LABEL%<br/>IP: %IP%<br/>Port: %PORT%<br/>日期: %DATE%",
|
||||||
%LAST_OFFLINE_DURATION%:<br><br>服务器: %LABEL%<br>IP: %IP%<br>Port:
|
|
||||||
%PORT%<br>日期: %DATE%',
|
|
||||||
),
|
),
|
||||||
'login' => array(
|
'login' => array(
|
||||||
'welcome_usermenu' => '欢迎, %user_name%',
|
'welcome_usermenu' => '欢迎, %user_name%',
|
||||||
|
@ -314,7 +282,7 @@ $sm_lang = array(
|
||||||
'password_forgot' => '忘记密码?',
|
'password_forgot' => '忘记密码?',
|
||||||
'password_reset' => '重设密码',
|
'password_reset' => '重设密码',
|
||||||
'password_reset_email_subject' => '重设你的密码',
|
'password_reset_email_subject' => '重设你的密码',
|
||||||
'password_reset_email_body' => '点击以下链接重设密码. 链接1小时内有效.<br><br>%link%',
|
'password_reset_email_body' => '点击以下链接重设密码. 链接1小时内有效.<br/><br/>%link%',
|
||||||
'error_user_incorrect' => '该用户不存在.',
|
'error_user_incorrect' => '该用户不存在.',
|
||||||
'error_login_incorrect' => '登录信息不正确.',
|
'error_login_incorrect' => '登录信息不正确.',
|
||||||
'error_login_passwords_nomatch' => '密码不符.',
|
'error_login_passwords_nomatch' => '密码不符.',
|
||||||
|
@ -323,7 +291,7 @@ $sm_lang = array(
|
||||||
'success_password_reset' => '密码重设成功.请登录.',
|
'success_password_reset' => '密码重设成功.请登录.',
|
||||||
),
|
),
|
||||||
'error' => array(
|
'error' => array(
|
||||||
'401_unauthorized' => '未授权的请求',
|
'401_unauthorized' => 'Unauthorized',
|
||||||
'401_unauthorized_description' => '未授权的请求.',
|
'401_unauthorized_description' => 'You do not have the privileges to view this page.',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,368 +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 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' => '您没有權限進入這個頁面。',
|
|
||||||
),
|
|
||||||
);
|
|
|
@ -0,0 +1,474 @@
|
||||||
|
<?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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,535 +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@mailbox.org>
|
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
|
||||||
* @version Release: @package_version@
|
|
||||||
* @link http://www.phpservermonitor.org/
|
|
||||||
**/
|
|
||||||
|
|
||||||
namespace psm\Module;
|
|
||||||
|
|
||||||
use psm\Service\Database;
|
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareTrait;
|
|
||||||
|
|
||||||
abstract class AbstractController implements ControllerInterface
|
|
||||||
{
|
|
||||||
use ContainerAwareTrait;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Current action
|
|
||||||
* @var string $action
|
|
||||||
*/
|
|
||||||
protected $action;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Default action
|
|
||||||
* @var string $action_default
|
|
||||||
* @see setActions()
|
|
||||||
*/
|
|
||||||
protected $action_default;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Actions available for this module
|
|
||||||
* @var array $actions
|
|
||||||
* @see setActions()
|
|
||||||
* @see getAction()
|
|
||||||
*/
|
|
||||||
protected $actions = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add footer to page?
|
|
||||||
* @var boolean $add_footer
|
|
||||||
* @see addFooter()
|
|
||||||
*/
|
|
||||||
protected $add_footer = true;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add menu to page?
|
|
||||||
* @var boolean $add_menu
|
|
||||||
* @see addMenu()
|
|
||||||
*/
|
|
||||||
protected $add_menu = true;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string $csrf_key
|
|
||||||
*/
|
|
||||||
protected $csrf_key;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Messages to show the user
|
|
||||||
* @var array $messages
|
|
||||||
* @see addMessage()
|
|
||||||
*/
|
|
||||||
protected $messages = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sidebar to add
|
|
||||||
* @var \psm\Util\Module\Sidebar $sidebar
|
|
||||||
*/
|
|
||||||
protected $sidebar;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* array of Modal to add
|
|
||||||
* @var \psm\Util\Module\ModalInterface[] $modal
|
|
||||||
*/
|
|
||||||
protected $modal = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* html code of header accessories
|
|
||||||
* @var string $header_accessories
|
|
||||||
*/
|
|
||||||
protected $header_accessories;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Database object
|
|
||||||
* @var \psm\Service\Database $db
|
|
||||||
*/
|
|
||||||
protected $db;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Twig object
|
|
||||||
* @var \Twig_Environment $twig
|
|
||||||
*/
|
|
||||||
protected $twig;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* User service
|
|
||||||
* @var \psm\Service\User $user
|
|
||||||
*/
|
|
||||||
protected $user;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Required user level for this module
|
|
||||||
* @var int $user_level_required
|
|
||||||
* @see setMinUserLevelRequired()
|
|
||||||
*/
|
|
||||||
protected $user_level_required = (PSM_PUBLIC && PSM_PUBLIC_PAGE) ? PSM_USER_ANONYMOUS : PSM_USER_USER;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Required user level for certain actions
|
|
||||||
* @var int $user_level_required_actions
|
|
||||||
* @see setMinUserLevelRequiredForAction()
|
|
||||||
*/
|
|
||||||
protected $user_level_required_actions = array();
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Required using black background layout
|
|
||||||
* @var boolean $black_background
|
|
||||||
*/
|
|
||||||
protected $black_background = false;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* XHR mode?
|
|
||||||
* @var boolean $xhr
|
|
||||||
* @see isXHR()
|
|
||||||
*/
|
|
||||||
protected $xhr = false;
|
|
||||||
|
|
||||||
public function __construct(Database $db, \Twig_Environment $twig)
|
|
||||||
{
|
|
||||||
$this->db = $db;
|
|
||||||
$this->twig = $twig;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Run the controller.
|
|
||||||
*
|
|
||||||
* @param string $action if NULL, the action will be retrieved from user input (GET/POST)
|
|
||||||
* @return \Symfony\Component\HttpFoundation\Response
|
|
||||||
*/
|
|
||||||
public function run($action = null)
|
|
||||||
{
|
|
||||||
if ($action === null) {
|
|
||||||
$action = psm_GET('action', psm_POST('action', $this->action_default));
|
|
||||||
}
|
|
||||||
$this->xhr = (bool) psm_GET('xhr', psm_POST('xhr', false));
|
|
||||||
|
|
||||||
$result = $this->runAction($action);
|
|
||||||
|
|
||||||
if (!in_array($action, $this->actions) || !$result) {
|
|
||||||
$result = $this->runAction($this->action_default);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($result instanceof Response) {
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
// no response returned from execute, create regular HTML
|
|
||||||
return $this->createHTML($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Run a specified action
|
|
||||||
*
|
|
||||||
* For it to run, the "execute$action" method must exist.
|
|
||||||
* @param string $action
|
|
||||||
* @return mixed FALSE when action couldnt be initialized, response otherwise
|
|
||||||
*/
|
|
||||||
protected function runAction($action)
|
|
||||||
{
|
|
||||||
if (isset($this->user_level_required_actions[$action])) {
|
|
||||||
if ($this->getUser()->getUserLevel() > $this->user_level_required_actions[$action]) {
|
|
||||||
// user is not allowed to access this action..
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$method = 'execute' . ucfirst($action);
|
|
||||||
if (method_exists($this, $method)) {
|
|
||||||
$this->action = $action;
|
|
||||||
$result = $this->$method();
|
|
||||||
// if result from execute is null, no return value given so return true to indicate a successful execute
|
|
||||||
return ($result === null) ? true : $result;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create the HTML code for the module.
|
|
||||||
*
|
|
||||||
* If XHR is on, no main template will be added.
|
|
||||||
*
|
|
||||||
* @param string $html HTML code to add to the main body
|
|
||||||
* @return \Symfony\Component\HttpFoundation\Response
|
|
||||||
*/
|
|
||||||
protected function createHTML($html = null)
|
|
||||||
{
|
|
||||||
if (!$this->xhr) {
|
|
||||||
// in XHR mode, we will not add the main template
|
|
||||||
$tpl_data = array(
|
|
||||||
'title' => psm_get_conf('site_title', strtoupper(psm_get_lang('system', 'title'))),
|
|
||||||
'label_back_to_top' => psm_get_lang('system', 'back_to_top'),
|
|
||||||
'add_footer' => $this->add_footer,
|
|
||||||
'version' => 'v' . PSM_VERSION,
|
|
||||||
'messages' => $this->getMessages(),
|
|
||||||
'html_content' => $html,
|
|
||||||
);
|
|
||||||
|
|
||||||
// add menu to page?
|
|
||||||
if ($this->add_menu) {
|
|
||||||
$tpl_data['html_menu'] = $this->createHTMLMenu();
|
|
||||||
}
|
|
||||||
// add header accessories to page ?
|
|
||||||
if ($this->header_accessories) {
|
|
||||||
$tpl_data['header_accessories'] = $this->header_accessories;
|
|
||||||
}
|
|
||||||
// add modal dialog to page ?
|
|
||||||
if (sizeof($this->modal)) {
|
|
||||||
$html_modal = '';
|
|
||||||
foreach ($this->modal as $modal) {
|
|
||||||
$html_modal .= $modal->createHTML();
|
|
||||||
}
|
|
||||||
$tpl_data['html_modal'] = $html_modal;
|
|
||||||
}
|
|
||||||
// add sidebar to page?
|
|
||||||
if ($this->sidebar !== null) {
|
|
||||||
$tpl_data['html_sidebar'] = $this->sidebar->createHTML();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (psm_update_available()) {
|
|
||||||
$tpl_data['update_available'] = str_replace(
|
|
||||||
'{version}',
|
|
||||||
'v' .
|
|
||||||
psm_get_conf('version_update_check'),
|
|
||||||
psm_get_lang('system', 'update_available')
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($this->black_background) {
|
|
||||||
$tpl_data['body_class'] = 'black_background';
|
|
||||||
}
|
|
||||||
$html = $this->twig->render('main/body.tpl.html', $tpl_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
$response = new Response($html);
|
|
||||||
|
|
||||||
return $response;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create HTML code for the menu
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
protected function createHTMLMenu()
|
|
||||||
{
|
|
||||||
$ulvl = $this->getUser()->getUserLevel();
|
|
||||||
|
|
||||||
$tpl_data = array(
|
|
||||||
'label_help' => psm_get_lang('menu', 'help'),
|
|
||||||
'label_profile' => psm_get_lang('users', 'profile'),
|
|
||||||
'label_logout' => psm_get_lang('login', 'logout'),
|
|
||||||
'url_profile' => psm_build_url(array('mod' => 'user_profile')),
|
|
||||||
'url_logout' => psm_build_url(array('logout' => 1)),
|
|
||||||
'label_current' => psm_get_lang('system', 'current'),
|
|
||||||
);
|
|
||||||
|
|
||||||
switch ($ulvl) {
|
|
||||||
case PSM_USER_ADMIN:
|
|
||||||
$items = array('server_status', 'server', 'server_log', 'user', 'config', 'server_update');
|
|
||||||
break;
|
|
||||||
case PSM_USER_USER:
|
|
||||||
$items = array('server_status', 'server', 'server_log', 'server_update');
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$items = array();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
$tpl_data['menu'] = array();
|
|
||||||
foreach ($items as $key) {
|
|
||||||
$tpl_data['menu'][] = array(
|
|
||||||
'active' => ($key == psm_GET('mod')) ? 'active' : '',
|
|
||||||
'url' => psm_build_url(array('mod' => $key)),
|
|
||||||
'label' => psm_get_lang('menu', $key),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($ulvl != PSM_USER_ANONYMOUS) {
|
|
||||||
$user = $this->getUser()->getUser();
|
|
||||||
$tpl_data['label_usermenu'] = str_replace(
|
|
||||||
'%user_name%',
|
|
||||||
$user->name,
|
|
||||||
psm_get_lang('login', 'welcome_usermenu')
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return $this->twig->render('main/menu.tpl.html', $tpl_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Hide or show the footer of the page
|
|
||||||
* @param boolean $value
|
|
||||||
*/
|
|
||||||
protected function addFooter($value)
|
|
||||||
{
|
|
||||||
$this->add_footer = $value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Hide or show the menu of the page
|
|
||||||
* @param boolean $value
|
|
||||||
*/
|
|
||||||
protected function addMenu($value)
|
|
||||||
{
|
|
||||||
$this->add_menu = $value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set actions available
|
|
||||||
* @param string|array $actions
|
|
||||||
* @param string $default default action
|
|
||||||
* @param boolean $append if TRUE, the actions will be added to the current actions
|
|
||||||
* @return psm\Module\AbstractModule
|
|
||||||
* @see getAction()
|
|
||||||
*/
|
|
||||||
protected function setActions($actions, $default = null, $append = true)
|
|
||||||
{
|
|
||||||
if (!is_array($actions)) {
|
|
||||||
$actions = array($actions);
|
|
||||||
}
|
|
||||||
if ($append) {
|
|
||||||
$this->actions = array_merge($actions);
|
|
||||||
} else {
|
|
||||||
$this->actions = $actions;
|
|
||||||
}
|
|
||||||
if ($default !== null) {
|
|
||||||
$this->action_default = $default;
|
|
||||||
}
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the current action
|
|
||||||
* @return string
|
|
||||||
* @see setActions()
|
|
||||||
*/
|
|
||||||
public function getAction()
|
|
||||||
{
|
|
||||||
return $this->action;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add one or multiple message to the stack to be displayed to the user
|
|
||||||
* @param string|array $msg
|
|
||||||
* @param string $shortcode primary/success/warning/danger
|
|
||||||
* @return \psm\Module\ControllerInterface
|
|
||||||
* @see getMessages()
|
|
||||||
*/
|
|
||||||
public function addMessage($msg, $shortcode = 'primary')
|
|
||||||
{
|
|
||||||
if (!is_array($msg)) {
|
|
||||||
$msg = array($msg);
|
|
||||||
}
|
|
||||||
$class = $shortcode;
|
|
||||||
switch ($shortcode) {
|
|
||||||
case 'error':
|
|
||||||
$icon = 'exclamation-circle';
|
|
||||||
$class = 'danger';
|
|
||||||
break;
|
|
||||||
case 'success':
|
|
||||||
$icon = 'check-circle';
|
|
||||||
break;
|
|
||||||
case 'warning':
|
|
||||||
$icon = 'exclamation-triangle';
|
|
||||||
break;
|
|
||||||
case 'primary':
|
|
||||||
default:
|
|
||||||
$icon = 'info-circle';
|
|
||||||
$shortcode = 'info';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($msg as $m) {
|
|
||||||
$this->messages[] = array(
|
|
||||||
'message' => $m,
|
|
||||||
'shortcode' => $shortcode,
|
|
||||||
'class' => $class,
|
|
||||||
'icon' => $icon,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get all messages (and optionally clear them)
|
|
||||||
* @param boolean $clear
|
|
||||||
* @return array
|
|
||||||
* @see addMessage()
|
|
||||||
*/
|
|
||||||
public function getMessages($clear = true)
|
|
||||||
{
|
|
||||||
$msgs = $this->messages;
|
|
||||||
if ($clear) {
|
|
||||||
$this->messages = array();
|
|
||||||
}
|
|
||||||
return $msgs;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the minimum required user level for this controller
|
|
||||||
* @param int $level
|
|
||||||
* @return \psm\Module\AbstractController
|
|
||||||
*/
|
|
||||||
public function setMinUserLevelRequired($level)
|
|
||||||
{
|
|
||||||
$this->user_level_required = intval($level);
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the minimum required user level for this controller
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function getMinUserLevelRequired()
|
|
||||||
{
|
|
||||||
return $this->user_level_required;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the minimum required user level for a certain action.
|
|
||||||
*
|
|
||||||
* Use this only if one of the access is more restricted than the entire controller
|
|
||||||
* @param int $level
|
|
||||||
* @param string|array $actions one or more actions to set this level for
|
|
||||||
* @return \psm\Module\AbstractController
|
|
||||||
* @see setMinUserLevelRequired()
|
|
||||||
*/
|
|
||||||
public function setMinUserLevelRequiredForAction($level, $actions)
|
|
||||||
{
|
|
||||||
if (!is_array($actions)) {
|
|
||||||
$actions = array($actions);
|
|
||||||
}
|
|
||||||
foreach ($actions as $action) {
|
|
||||||
$this->user_level_required_actions[$action] = intval($level);
|
|
||||||
}
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add a sidebar to the page
|
|
||||||
* @param \psm\Util\Module\SidebarInterface $sidebar
|
|
||||||
* @return \psm\Module\ControllerInterface
|
|
||||||
*/
|
|
||||||
public function setSidebar(\psm\Util\Module\SidebarInterface $sidebar)
|
|
||||||
{
|
|
||||||
$this->sidebar = $sidebar;
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add a modal dialog to the page
|
|
||||||
* @param \psm\Util\Module\ModalInterface $modal
|
|
||||||
* @return \psm\Module\ControllerInterface
|
|
||||||
*/
|
|
||||||
public function addModal(\psm\Util\Module\ModalInterface $modal)
|
|
||||||
{
|
|
||||||
$this->modal[$modal->getModalID()] = $modal;
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the html code of the header accessories
|
|
||||||
* @param string $html
|
|
||||||
*/
|
|
||||||
public function setHeaderAccessories($html)
|
|
||||||
{
|
|
||||||
$this->header_accessories = $html;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if XHR is on
|
|
||||||
* @return boolean
|
|
||||||
*/
|
|
||||||
public function isXHR()
|
|
||||||
{
|
|
||||||
return $this->xhr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get user service
|
|
||||||
* @return \psm\Service\User
|
|
||||||
*/
|
|
||||||
public function getUser()
|
|
||||||
{
|
|
||||||
return $this->container->get('user');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get custom key for CSRF validation
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getCSRFKey()
|
|
||||||
{
|
|
||||||
return $this->csrf_key;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set CSRF key for validation
|
|
||||||
* @param string $key
|
|
||||||
* @return \psm\Module\ControllerInterface
|
|
||||||
*/
|
|
||||||
protected function setCSRFKey($key)
|
|
||||||
{
|
|
||||||
$this->csrf_key = $key;
|
|
||||||
$this->twig->addGlobal('csrf_key', $key);
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -19,22 +18,22 @@
|
||||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Tim Zandbergen <Tim@Xervion.nl>
|
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
* @since phpservermon 3.6.0
|
* @since phpservermon 3.0
|
||||||
**/
|
**/
|
||||||
|
|
||||||
namespace {
|
namespace psm\Module\Config;
|
||||||
define('PSM_PUBLIC_PAGE', true);
|
use psm\Module\ModuleInterface;
|
||||||
|
|
||||||
require __DIR__ . '/src/bootstrap.php';
|
class ConfigModule implements ModuleInterface {
|
||||||
|
public function getControllers() {
|
||||||
$router->run('server_status');
|
return array(
|
||||||
|
'config' => __NAMESPACE__ . '\Controller\ConfigController',
|
||||||
// By destroying the session the login will show when going to another page
|
);
|
||||||
session_destroy();
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,340 @@
|
||||||
|
<?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'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,717 +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@mailbox.org>
|
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
|
||||||
* @version Release: @package_version@
|
|
||||||
* @link http://www.phpservermonitor.org/
|
|
||||||
**/
|
|
||||||
|
|
||||||
namespace psm\Module\Config\Controller;
|
|
||||||
|
|
||||||
use psm\Module\AbstractController;
|
|
||||||
use psm\Service\Database;
|
|
||||||
|
|
||||||
class ConfigController extends AbstractController
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checkboxes
|
|
||||||
* @var array $checkboxes
|
|
||||||
*/
|
|
||||||
protected $checkboxes = array(
|
|
||||||
'proxy',
|
|
||||||
'email_status',
|
|
||||||
'email_add_url',
|
|
||||||
'email_smtp',
|
|
||||||
'sms_status',
|
|
||||||
'discord_status',
|
|
||||||
'pushover_status',
|
|
||||||
'webhook_status',
|
|
||||||
'telegram_status',
|
|
||||||
'telegram_add_url',
|
|
||||||
'jabber_status',
|
|
||||||
'log_status',
|
|
||||||
'log_email',
|
|
||||||
'log_sms',
|
|
||||||
'log_discord',
|
|
||||||
'log_pushover',
|
|
||||||
'log_webhook',
|
|
||||||
'log_telegram',
|
|
||||||
'log_jabber',
|
|
||||||
'show_update',
|
|
||||||
'combine_notifications',
|
|
||||||
'dirauth_status',
|
|
||||||
'authdir_ldapfollowref',
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fields for saving
|
|
||||||
* @var array $fields
|
|
||||||
*/
|
|
||||||
protected $fields = array(
|
|
||||||
'proxy_url',
|
|
||||||
'proxy_user',
|
|
||||||
'proxy_password',
|
|
||||||
'email_from_name',
|
|
||||||
'email_from_email',
|
|
||||||
'email_smtp_host',
|
|
||||||
'email_smtp_port',
|
|
||||||
'email_smtp_username',
|
|
||||||
'sms_gateway_username',
|
|
||||||
'sms_gateway_password',
|
|
||||||
'sms_from',
|
|
||||||
'webhook_url',
|
|
||||||
'webhook_json',
|
|
||||||
'pushover_api_token',
|
|
||||||
'telegram_api_token',
|
|
||||||
'jabber_host',
|
|
||||||
'jabber_port',
|
|
||||||
'jabber_username',
|
|
||||||
'jabber_domain',
|
|
||||||
'user_agent',
|
|
||||||
'site_title',
|
|
||||||
'authdir_host_locn',
|
|
||||||
'authdir_host_port',
|
|
||||||
'authdir_userdomain',
|
|
||||||
'authdir_ldapver',
|
|
||||||
'authdir_basedn',
|
|
||||||
'authdir_usernameattrib',
|
|
||||||
'authdir_groupnameattrib',
|
|
||||||
'authdir_groupmemattrib',
|
|
||||||
'authdir_usercontainerrdn',
|
|
||||||
'authdir_groupcontainerrdn',
|
|
||||||
'authdir_groupname',
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fields for saving encrypted.
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
protected $encryptedFields = [
|
|
||||||
'email_smtp_password',
|
|
||||||
'jabber_password'
|
|
||||||
];
|
|
||||||
|
|
||||||
private $default_tab = 'general';
|
|
||||||
|
|
||||||
public function __construct(Database $db, \Twig_Environment $twig)
|
|
||||||
{
|
|
||||||
parent::__construct($db, $twig);
|
|
||||||
|
|
||||||
$this->setMinUserLevelRequired(PSM_USER_ADMIN);
|
|
||||||
$this->setCSRFKey('config');
|
|
||||||
|
|
||||||
$this->setActions(array(
|
|
||||||
'index', 'save',
|
|
||||||
), 'index');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Populate all the config fields with values from the database
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
protected function executeIndex()
|
|
||||||
{
|
|
||||||
$this->twig->addGlobal('subtitle', psm_get_lang('menu', 'config'));
|
|
||||||
$tpl_data = $this->getLabels();
|
|
||||||
|
|
||||||
$config_db = $this->db->select(
|
|
||||||
PSM_DB_PREFIX . 'config',
|
|
||||||
null,
|
|
||||||
array('key', 'value')
|
|
||||||
);
|
|
||||||
|
|
||||||
$config = array();
|
|
||||||
foreach ($config_db as $entry) {
|
|
||||||
$config[$entry['key']] = $entry['value'];
|
|
||||||
}
|
|
||||||
|
|
||||||
// generate language array
|
|
||||||
$lang_keys = psm_get_langs();
|
|
||||||
$tpl_data['language_current'] = (isset($config['language']))
|
|
||||||
? $config['language']
|
|
||||||
: 'en_US';
|
|
||||||
$tpl_data['languages'] = array();
|
|
||||||
foreach ($lang_keys as $key => $label) {
|
|
||||||
$tpl_data['languages'][] = array(
|
|
||||||
'value' => $key,
|
|
||||||
'label' => $label,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// generate sms_gateway array
|
|
||||||
$sms_gateways = psm_get_sms_gateways();
|
|
||||||
$tpl_data['sms_gateway'] = array();
|
|
||||||
foreach ($sms_gateways as $sms_gateway => $label) {
|
|
||||||
$tpl_data['sms_gateway'][] = array(
|
|
||||||
'value' => $sms_gateway,
|
|
||||||
'label' => $label,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (array("status", "offline", "always") as $alert_type) {
|
|
||||||
$tpl_data['alert_type'][] = array(
|
|
||||||
'value' => $alert_type,
|
|
||||||
'label' => psm_get_lang('config', 'alert_type_' . $alert_type),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (array("20", "10") as $authdir_defaultrole) {
|
|
||||||
$tpl_data['authdir_defaultroles'][] = array(
|
|
||||||
'value' => $authdir_defaultrole,
|
|
||||||
'label' => psm_get_lang('users', 'level_' . $authdir_defaultrole),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (array("openldap", "adds", "adlds") as $authdir_type) {
|
|
||||||
$tpl_data['authdir_type'][] = array(
|
|
||||||
'value' => $authdir_type,
|
|
||||||
'label' => psm_get_lang('config', 'authdir_type_' . $authdir_type),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$tpl_data['email_smtp_security'] = array(
|
|
||||||
array(
|
|
||||||
'value' => '',
|
|
||||||
'label' => psm_get_lang('config', 'email_smtp_security_none')
|
|
||||||
),
|
|
||||||
array(
|
|
||||||
'value' => 'ssl',
|
|
||||||
'label' => 'SSL'
|
|
||||||
),
|
|
||||||
array(
|
|
||||||
'value' => 'tls',
|
|
||||||
'label' => 'TLS'
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
$tpl_data['sms_gateway_selected'] = isset($config['sms_gateway']) ?
|
|
||||||
$config['sms_gateway'] : current($sms_gateways);
|
|
||||||
$tpl_data['alert_type_selected'] = isset($config['alert_type']) ?
|
|
||||||
$config['alert_type'] : '';
|
|
||||||
$tpl_data['authdir_type_selected'] = isset($config['authdir_type']) ?
|
|
||||||
$config['authdir_type'] : '';
|
|
||||||
$tpl_data['authdir_defaultrole_selected'] = isset($config['authdir_defaultrole']) ?
|
|
||||||
$config['authdir_defaultrole'] : '20';
|
|
||||||
$tpl_data['email_smtp_security_selected'] = isset($config['email_smtp_security']) ?
|
|
||||||
$config['email_smtp_security'] : '';
|
|
||||||
$tpl_data['auto_refresh_servers'] = isset($config['auto_refresh_servers']) ?
|
|
||||||
$config['auto_refresh_servers'] : '0';
|
|
||||||
$tpl_data['log_retention_period'] = isset($config['log_retention_period']) ?
|
|
||||||
$config['log_retention_period'] : '365';
|
|
||||||
$tpl_data['password_encrypt_key'] = isset($config['password_encrypt_key']) ?
|
|
||||||
$config['password_encrypt_key'] : sha1(microtime());
|
|
||||||
|
|
||||||
foreach ($this->checkboxes as $input_key) {
|
|
||||||
$tpl_data[$input_key . '_checked'] =
|
|
||||||
(isset($config[$input_key]) && (int) $config[$input_key] == 1)
|
|
||||||
? 'checked="checked"'
|
|
||||||
: '';
|
|
||||||
}
|
|
||||||
foreach ($this->fields as $input_key) {
|
|
||||||
$tpl_data[$input_key] = (isset($config[$input_key])) ? $config[$input_key] : '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$tpl_data['user_agent'] = empty($tpl_data['user_agent']) ?
|
|
||||||
'Mozilla/5.0 (compatible; phpservermon/' .
|
|
||||||
PSM_VERSION . '; +https://github.com/phpservermon/phpservermon)' : $tpl_data['user_agent'];
|
|
||||||
|
|
||||||
$tpl_data['site_title'] = empty($tpl_data['site_title']) ?
|
|
||||||
strtoupper(psm_get_lang('system', 'title')) : $tpl_data['site_title'];
|
|
||||||
|
|
||||||
// encrypted fields
|
|
||||||
foreach ($this->encryptedFields as $encryptedField) {
|
|
||||||
$tpl_data[$encryptedField] = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$tpl_data[$this->default_tab . '_active'] = 'active';
|
|
||||||
|
|
||||||
$testmodals = array('email', 'sms', 'discord', 'webhook', 'pushover', 'telegram', 'jabber');
|
|
||||||
|
|
||||||
foreach ($testmodals as $modal_id) {
|
|
||||||
$modal = new \psm\Util\Module\Modal(
|
|
||||||
$this->twig,
|
|
||||||
'test' . ucfirst($modal_id),
|
|
||||||
\psm\Util\Module\Modal::MODAL_TYPE_OKCANCEL
|
|
||||||
);
|
|
||||||
$this->addModal($modal);
|
|
||||||
$modal->setTitle(psm_get_lang('servers', 'send_' . $modal_id));
|
|
||||||
$modal->setMessage(psm_get_lang('config', 'test_' . $modal_id));
|
|
||||||
$modal->setOKButtonLabel(psm_get_lang('config', 'send'));
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->twig->render('module/config/config.tpl.html', $tpl_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If a post has been done, gather all the posted data
|
|
||||||
* and save it to the database
|
|
||||||
*/
|
|
||||||
protected function executeSave()
|
|
||||||
{
|
|
||||||
if (!empty($_POST)) {
|
|
||||||
// save new config
|
|
||||||
$clean = array(
|
|
||||||
'language' => $_POST['language'],
|
|
||||||
'site_title' => $_POST['site_title'],
|
|
||||||
'sms_gateway' => $_POST['sms_gateway'],
|
|
||||||
'alert_type' => $_POST['alert_type'],
|
|
||||||
'authdir_defaultrole' => $_POST['authdir_defaultrole'],
|
|
||||||
'authdir_type' => $_POST['authdir_type'],
|
|
||||||
'email_smtp_security' =>
|
|
||||||
in_array($_POST['email_smtp_security'], array('', 'ssl', 'tls'))
|
|
||||||
? $_POST['email_smtp_security']
|
|
||||||
: '',
|
|
||||||
'auto_refresh_servers' => intval(psm_POST('auto_refresh_servers', 0)),
|
|
||||||
'log_retention_period' => intval(psm_POST('log_retention_period', 365)),
|
|
||||||
'password_encrypt_key' => psm_POST('password_encrypt_key', sha1(microtime()))
|
|
||||||
);
|
|
||||||
foreach ($this->checkboxes as $input_key) {
|
|
||||||
$clean[$input_key] = (isset($_POST[$input_key])) ? '1' : '0';
|
|
||||||
}
|
|
||||||
foreach ($this->fields as $input_key) {
|
|
||||||
if (isset($_POST[$input_key])) {
|
|
||||||
$clean[$input_key] = $_POST[$input_key];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
foreach ($this->encryptedFields as $encryptedField) {
|
|
||||||
$value = filter_input(INPUT_POST, $encryptedField);
|
|
||||||
if ($value !== null && $value !== '') {
|
|
||||||
$clean[$encryptedField] = psm_password_encrypt(psm_get_conf('password_encrypt_key'), $value);
|
|
||||||
}
|
|
||||||
// else { leave as is }
|
|
||||||
}
|
|
||||||
$language_refresh = ($clean['language'] != psm_get_conf('language'));
|
|
||||||
foreach ($clean as $key => $value) {
|
|
||||||
psm_update_conf($key, $value);
|
|
||||||
}
|
|
||||||
$this->addMessage(psm_get_lang('config', 'updated'), 'success');
|
|
||||||
|
|
||||||
if (!empty($_POST['test_email'])) {
|
|
||||||
$this->testEmail();
|
|
||||||
} elseif (!empty($_POST['test_sms'])) {
|
|
||||||
$this->testSMS();
|
|
||||||
} elseif (!empty($_POST['test_discord'])) {
|
|
||||||
$this->testDiscord();
|
|
||||||
} elseif (!empty($_POST['test_pushover'])) {
|
|
||||||
$this->testPushover();
|
|
||||||
}elseif (!empty($_POST['test_webhook'])) {
|
|
||||||
$this->testWebhook();
|
|
||||||
} elseif (!empty($_POST['test_telegram'])) {
|
|
||||||
$this->testTelegram();
|
|
||||||
} elseif (!empty($_POST['test_jabber'])) {
|
|
||||||
$this->testJabber();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($language_refresh) {
|
|
||||||
header('Location: ' . psm_build_url(array('mod' => 'config'), true, false));
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($_POST['general_submit'])) {
|
|
||||||
$this->default_tab = 'general';
|
|
||||||
} elseif (isset($_POST['auth_submit'])) {
|
|
||||||
$this->default_tab = 'auth';
|
|
||||||
} elseif (isset($_POST['email_submit']) || !empty($_POST['test_email'])) {
|
|
||||||
$this->default_tab = 'email';
|
|
||||||
} elseif (isset($_POST['sms_submit']) || !empty($_POST['test_sms'])) {
|
|
||||||
$this->default_tab = 'sms';
|
|
||||||
} elseif (isset($_POST['discord_submit']) || !empty($_POST['test_discord'])) {
|
|
||||||
$this->default_tab = 'discord';
|
|
||||||
} elseif (isset($_POST['pushover_submit']) || !empty($_POST['test_pushover'])) {
|
|
||||||
$this->default_tab = 'pushover';
|
|
||||||
} elseif (isset($_POST['webhook_submit']) || !empty($_POST['test_webhook'])) {
|
|
||||||
$this->default_tab = 'webhook';
|
|
||||||
} elseif (isset($_POST['telegram_submit']) || !empty($_POST['test_telegram'])) {
|
|
||||||
$this->default_tab = 'telegram';
|
|
||||||
} elseif (isset($_POST['jabber_submit']) || !empty($_POST['test_jabber'])) {
|
|
||||||
$this->default_tab = 'jabber';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $this->runAction('index');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Execute email test
|
|
||||||
*
|
|
||||||
* @todo move test to separate class
|
|
||||||
*/
|
|
||||||
protected function testEmail()
|
|
||||||
{
|
|
||||||
$mail = psm_build_mail();
|
|
||||||
$message = psm_get_lang('config', 'test_message');
|
|
||||||
$mail->Subject = psm_get_lang('config', 'test_subject');
|
|
||||||
$mail->Priority = 1;
|
|
||||||
$mail->Body = $message;
|
|
||||||
$mail->AltBody = str_replace('<br/>', "\n", $message);
|
|
||||||
$user = $this->getUser()->getUser();
|
|
||||||
$mail->AddAddress($user->email, $user->name);
|
|
||||||
if ($mail->Send()) {
|
|
||||||
$this->addMessage(psm_get_lang('config', 'email_sent'), 'success');
|
|
||||||
} else {
|
|
||||||
$this->addMessage(psm_get_lang('config', 'email_error') . ': ' . $mail->ErrorInfo, 'error');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Execute SMS test
|
|
||||||
*
|
|
||||||
* @todo move test to separate class
|
|
||||||
*/
|
|
||||||
protected function testSMS()
|
|
||||||
{
|
|
||||||
$sms = psm_build_sms();
|
|
||||||
if ($sms) {
|
|
||||||
$user = $this->getUser()->getUser();
|
|
||||||
if (empty($user->mobile)) {
|
|
||||||
$this->addMessage(psm_get_lang('config', 'sms_error_nomobile'), 'error');
|
|
||||||
} else {
|
|
||||||
$sms->addRecipients($user->mobile);
|
|
||||||
$result = $sms->sendSMS(psm_get_lang('config', 'test_message'));
|
|
||||||
if ($result === 1) {
|
|
||||||
$this->addMessage(psm_get_lang('config', 'sms_sent'), 'success');
|
|
||||||
} else {
|
|
||||||
$this->addMessage(sprintf(psm_get_lang('config', 'sms_error'), $result), 'error');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Execute Discord test
|
|
||||||
*
|
|
||||||
* @todo move test to separate class
|
|
||||||
*/
|
|
||||||
protected function testDiscord()
|
|
||||||
{
|
|
||||||
$user = $this->getUser()->getUser();
|
|
||||||
if (empty($user->discord)) {
|
|
||||||
$this->addMessage(psm_get_lang('config', 'discord_error_nowebhook'), 'error');
|
|
||||||
} else {
|
|
||||||
$success = 0;
|
|
||||||
$result = 'An unknown error has occurred.';
|
|
||||||
try {
|
|
||||||
$curl = curl_init($user->discord);
|
|
||||||
$json = json_decode(
|
|
||||||
'{"content":""}',
|
|
||||||
true
|
|
||||||
);
|
|
||||||
$json['content'] = psm_get_lang('config', 'test_message');
|
|
||||||
$msg = "payload_json=" . urlencode(json_encode($json));
|
|
||||||
if(isset($curl)) {
|
|
||||||
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
|
|
||||||
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
|
|
||||||
curl_setopt($curl, CURLOPT_POSTFIELDS, $msg);
|
|
||||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
|
||||||
$result = curl_exec($curl);
|
|
||||||
$httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
|
||||||
$err = curl_errno($curl);
|
|
||||||
|
|
||||||
if ($err != 0 || $httpcode != 204) {
|
|
||||||
$success = 0;
|
|
||||||
// $result = ($result == '') ? 'Wrong input, please check if all values are correct!' : $result;
|
|
||||||
$error = "HTTP_code: " . $httpcode . ".\ncURL error (" . $err . "): " .
|
|
||||||
curl_strerror($err) . ". \nResult: " . $result;
|
|
||||||
$result = $error;
|
|
||||||
} else {
|
|
||||||
$success = 1;
|
|
||||||
}
|
|
||||||
curl_close($curl);
|
|
||||||
}
|
|
||||||
} catch (Exception $e) {
|
|
||||||
$success = 0;
|
|
||||||
$result = $e->getMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($success === 1) {
|
|
||||||
$this->addMessage(psm_get_lang('config', 'discord_sent'), 'success');
|
|
||||||
} else {
|
|
||||||
$this->addMessage(sprintf(psm_get_lang('config', 'discord_error'), $result), 'error');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Execute webhook test
|
|
||||||
*
|
|
||||||
* @todo move test to separate class
|
|
||||||
*/
|
|
||||||
protected function testWebhook()
|
|
||||||
{
|
|
||||||
|
|
||||||
$user = $this->getUser()->getUser();
|
|
||||||
|
|
||||||
|
|
||||||
if (empty($user->webhook_url)) {
|
|
||||||
$this->addMessage(psm_get_lang('config', 'webhook_error_nourl'), 'error');
|
|
||||||
} elseif (empty($user->webhook_json)) {
|
|
||||||
$this->addMessage(psm_get_lang('config', 'webhook_error_nojson'), 'error');
|
|
||||||
} else {
|
|
||||||
$webhook = psm_build_webhook();
|
|
||||||
$webhook->setUrl($user->webhook_url);
|
|
||||||
$webhook->setJson($user->webhook_json);
|
|
||||||
$message = (psm_get_lang('config', 'test_message'));
|
|
||||||
$result = $webhook->sendWebhook($message);
|
|
||||||
if ($result==1) {
|
|
||||||
$this->addMessage(psm_get_lang('config', 'webhook_sent'), 'success');
|
|
||||||
} else {
|
|
||||||
$this->addMessage(sprintf(psm_get_lang('config', 'webhook_error'), $result), 'error');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Execute pushover test
|
|
||||||
*
|
|
||||||
* @todo move test to separate class
|
|
||||||
*/
|
|
||||||
protected function testPushover()
|
|
||||||
{
|
|
||||||
$pushover = psm_build_pushover();
|
|
||||||
$pushover->setDebug(true);
|
|
||||||
$user = $this->getUser()->getUser();
|
|
||||||
$apiToken = psm_get_conf('pushover_api_token');
|
|
||||||
|
|
||||||
if (empty($apiToken)) {
|
|
||||||
$this->addMessage(psm_get_lang('config', 'pushover_error_noapp'), 'error');
|
|
||||||
} elseif (empty($user->pushover_key)) {
|
|
||||||
$this->addMessage(psm_get_lang('config', 'pushover_error_nokey'), 'error');
|
|
||||||
} else {
|
|
||||||
$pushover->setPriority(0);
|
|
||||||
$pushover->setTitle(psm_get_lang('config', 'test_subject'));
|
|
||||||
$pushover->setMessage(psm_get_lang('config', 'test_message'));
|
|
||||||
$pushover->setUser($user->pushover_key);
|
|
||||||
if ($user->pushover_device != '') {
|
|
||||||
$pushover->setDevice($user->pushover_device);
|
|
||||||
}
|
|
||||||
$result = $pushover->send();
|
|
||||||
|
|
||||||
if (isset($result['output']->status) && $result['output']->status == 1) {
|
|
||||||
$this->addMessage(psm_get_lang('config', 'pushover_sent'), 'success');
|
|
||||||
} else {
|
|
||||||
if (isset($result['output']->errors->error)) {
|
|
||||||
$error = $result['output']->errors->error;
|
|
||||||
} else {
|
|
||||||
$error = 'Unknown';
|
|
||||||
}
|
|
||||||
$this->addMessage(sprintf(psm_get_lang('config', 'pushover_error'), $error), 'error');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Execute telegram test
|
|
||||||
*
|
|
||||||
* @todo move test to separate class
|
|
||||||
*/
|
|
||||||
protected function testTelegram()
|
|
||||||
{
|
|
||||||
$telegram = psm_build_telegram();
|
|
||||||
$user = $this->getUser()->getUser();
|
|
||||||
$apiToken = psm_get_conf('telegram_api_token');
|
|
||||||
|
|
||||||
if (empty($apiToken)) {
|
|
||||||
$this->addMessage(psm_get_lang('config', 'telegram_error_notoken'), 'error');
|
|
||||||
} elseif (empty($user->telegram_id)) {
|
|
||||||
$this->addMessage(psm_get_lang('config', 'telegram_error_noid'), 'error');
|
|
||||||
} else {
|
|
||||||
$telegram->setMessage(psm_get_lang('config', 'test_message'));
|
|
||||||
$telegram->setUser($user->telegram_id);
|
|
||||||
|
|
||||||
$result = $telegram->send();
|
|
||||||
|
|
||||||
if (isset($result['ok']) && $result['ok'] != false) {
|
|
||||||
$this->addMessage(psm_get_lang('config', 'telegram_sent'), 'success');
|
|
||||||
} else {
|
|
||||||
if (isset($result['description'])) {
|
|
||||||
$error = $result['description'];
|
|
||||||
} else {
|
|
||||||
$error = 'Unknown';
|
|
||||||
}
|
|
||||||
$this->addMessage(sprintf(psm_get_lang('config', 'telegram_error'), $error), 'error');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test Jabber.
|
|
||||||
*/
|
|
||||||
protected function testJabber()
|
|
||||||
{
|
|
||||||
$user = $this->getUser()->getUser();
|
|
||||||
psm_jabber_send_message(
|
|
||||||
psm_get_conf('jabber_host'),
|
|
||||||
psm_get_conf('jabber_username'),
|
|
||||||
psm_password_decrypt(psm_get_conf('password_encrypt_key'), psm_get_conf('jabber_password')),
|
|
||||||
[$user->jabber],
|
|
||||||
psm_get_lang('config', 'test_message'),
|
|
||||||
(trim(psm_get_conf('jabber_port')) !== '' ? (int)psm_get_conf('jabber_port') : null),
|
|
||||||
(trim(psm_get_conf('jabber_domain')) !== '' ? psm_get_conf('jabber_domain') : null)
|
|
||||||
);
|
|
||||||
// no message - async ... so just info
|
|
||||||
$this->addMessage(psm_get_lang('config', 'jabber_check'), 'info');
|
|
||||||
// @todo possible to set message via ajax with callback ...
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function getLabels()
|
|
||||||
{
|
|
||||||
return array(
|
|
||||||
'label_tab_email' => psm_get_lang('config', 'tab_email'),
|
|
||||||
'label_tab_sms' => psm_get_lang('config', 'tab_sms'),
|
|
||||||
'label_tab_discord' => psm_get_lang('config', 'tab_discord'),
|
|
||||||
'label_tab_pushover' => psm_get_lang('config', 'tab_pushover'),
|
|
||||||
'label_tab_webhook' => psm_get_lang('config', 'tab_webhook'),
|
|
||||||
'label_tab_telegram' => psm_get_lang('config', 'tab_telegram'),
|
|
||||||
'label_tab_jabber' => psm_get_lang('config', 'tab_jabber'),
|
|
||||||
'label_tab_auth' => psm_get_lang('config', 'tab_auth'),
|
|
||||||
'label_settings_email' => psm_get_lang('config', 'settings_email'),
|
|
||||||
'label_settings_sms' => psm_get_lang('config', 'settings_sms'),
|
|
||||||
'label_settings_discord' => psm_get_lang('config', 'settings_discord'),
|
|
||||||
'label_settings_webhook' => psm_get_lang('config', 'settings_webhook'),
|
|
||||||
'label_settings_pushover' => psm_get_lang('config', 'settings_pushover'),
|
|
||||||
'label_settings_telegram' => psm_get_lang('config', 'settings_telegram'),
|
|
||||||
'label_settings_jabber' => psm_get_lang('config', 'settings_jabber'),
|
|
||||||
'label_settings_dirauth' => psm_get_lang('config', 'settings_dirauth'),
|
|
||||||
'label_settings_notification' => psm_get_lang('config', 'settings_notification'),
|
|
||||||
'label_settings_log' => psm_get_lang('config', 'settings_log'),
|
|
||||||
'label_settings_proxy' => psm_get_lang('config', 'settings_proxy'),
|
|
||||||
'label_general' => psm_get_lang('config', 'general'),
|
|
||||||
'label_language' => psm_get_lang('config', 'language'),
|
|
||||||
'label_show_update' => psm_get_lang('config', 'show_update'),
|
|
||||||
'label_password_encrypt_key' => psm_get_lang('config', 'password_encrypt_key'),
|
|
||||||
'label_password_encrypt_key_note' => psm_get_lang('config', 'password_encrypt_key_note'),
|
|
||||||
'label_proxy' => psm_get_lang('config', 'proxy'),
|
|
||||||
'label_proxy_url' => psm_get_lang('config', 'proxy_url'),
|
|
||||||
'label_proxy_user' => psm_get_lang('config', 'proxy_user'),
|
|
||||||
'label_proxy_password' => psm_get_lang('config', 'proxy_password'),
|
|
||||||
'label_email_add_url' => psm_get_lang('config', 'email_add_url'),
|
|
||||||
'label_email_status' => psm_get_lang('config', 'email_status'),
|
|
||||||
'label_email_from_email' => psm_get_lang('config', 'email_from_email'),
|
|
||||||
'label_email_from_name' => psm_get_lang('config', 'email_from_name'),
|
|
||||||
'label_email_smtp' => psm_get_lang('config', 'email_smtp'),
|
|
||||||
'label_email_smtp_host' => psm_get_lang('config', 'email_smtp_host'),
|
|
||||||
'label_email_smtp_port' => psm_get_lang('config', 'email_smtp_port'),
|
|
||||||
'label_email_smtp_security' => psm_get_lang('config', 'email_smtp_security'),
|
|
||||||
'label_email_smtp_username' => psm_get_lang('config', 'email_smtp_username'),
|
|
||||||
'label_email_smtp_password' => psm_get_lang('config', 'email_smtp_password'),
|
|
||||||
'label_email_smtp_noauth' => psm_get_lang('config', 'email_smtp_noauth'),
|
|
||||||
'label_sms_status' => psm_get_lang('config', 'sms_status'),
|
|
||||||
'label_sms_gateway' => psm_get_lang('config', 'sms_gateway'),
|
|
||||||
'label_sms_gateway_username' => psm_get_lang('config', 'sms_gateway_username'),
|
|
||||||
'label_sms_gateway_password' => psm_get_lang('config', 'sms_gateway_password'),
|
|
||||||
'label_sms_from' => psm_get_lang('config', 'sms_from'),
|
|
||||||
'label_discord_status' => psm_get_lang('config', 'discord_status'),
|
|
||||||
'label_discord_description' => psm_get_lang('config', 'discord_description'),
|
|
||||||
'label_webhook_description' => psm_get_lang('config', 'webhook_description'),
|
|
||||||
'label_webhook_status' => psm_get_lang('config', 'webhook_status'),
|
|
||||||
'label_webhook_url' => psm_get_lang('config', 'webhook_url'),
|
|
||||||
'label_webhook_url_description' => psm_get_lang('config', 'webhook_url_description'),
|
|
||||||
'label_webhook_json' => psm_get_lang('config', 'webhook_json'),
|
|
||||||
'label_webhook_json_description' => psm_get_lang('config', 'webhook_json_description'),
|
|
||||||
'label_pushover_description' => psm_get_lang('config', 'pushover_description'),
|
|
||||||
'label_pushover_status' => psm_get_lang('config', 'pushover_status'),
|
|
||||||
'label_pushover_clone_app' => psm_get_lang('config', 'pushover_clone_app'),
|
|
||||||
'pushover_clone_url' => PSM_PUSHOVER_CLONE_URL,
|
|
||||||
'label_pushover_api_token' => psm_get_lang('config', 'pushover_api_token'),
|
|
||||||
'label_pushover_api_token_description' => sprintf(
|
|
||||||
psm_get_lang('config', 'pushover_api_token_description'),
|
|
||||||
PSM_PUSHOVER_CLONE_URL
|
|
||||||
),
|
|
||||||
'label_telegram_description' => psm_get_lang('config', 'telegram_description'),
|
|
||||||
'label_telegram_status' => psm_get_lang('config', 'telegram_status'),
|
|
||||||
'label_telegram_add_url' => psm_get_lang('config', 'telegram_add_url'),
|
|
||||||
'label_telegram_api_token' => psm_get_lang('config', 'telegram_api_token'),
|
|
||||||
'label_telegram_api_token_description' => psm_get_lang('config', 'telegram_api_token_description'),
|
|
||||||
'label_jabber_status' => psm_get_lang('config', 'jabber_status'),
|
|
||||||
'label_jabber_description' => psm_get_lang('config', 'jabber_description'),
|
|
||||||
'label_jabber_host' => psm_get_lang('config', 'jabber_host'),
|
|
||||||
'label_jabber_host_description' => psm_get_lang('config', 'jabber_host_description'),
|
|
||||||
'label_jabber_port' => psm_get_lang('config', 'jabber_port'),
|
|
||||||
'label_jabber_port_description' => psm_get_lang('config', 'jabber_port_description'),
|
|
||||||
'label_jabber_username' => psm_get_lang('config', 'jabber_username'),
|
|
||||||
'label_jabber_username_description' => psm_get_lang('config', 'jabber_username_description'),
|
|
||||||
'label_jabber_domain' => psm_get_lang('config', 'jabber_domain'),
|
|
||||||
'label_jabber_domain_description' => psm_get_lang('config', 'jabber_domain_description'),
|
|
||||||
'label_jabber_password' => psm_get_lang('config', 'jabber_password'),
|
|
||||||
'label_jabber_password_description' => psm_get_lang('config', 'jabber_password_description'),
|
|
||||||
'label_dirauth_status' => psm_get_lang('config', 'dirauth_status'),
|
|
||||||
'label_authdir_host_locn' => psm_get_lang('config', 'authdir_host_locn'),
|
|
||||||
'label_authdir_host_port' => psm_get_lang('config', 'authdir_host_port'),
|
|
||||||
'label_authdir_type' => psm_get_lang('config', 'authdir_type'),
|
|
||||||
'label_authdir_type_description' => psm_get_lang('config', 'authdir_type_description'),
|
|
||||||
'label_authdir_userdomain' => psm_get_lang('config', 'authdir_userdomain'),
|
|
||||||
'label_authdir_userdomain_description' => psm_get_lang('config', 'authdir_userdomain_description'),
|
|
||||||
'label_authdir_ldapver' => psm_get_lang('config', 'authdir_ldapver'),
|
|
||||||
'label_authdir_ldapver_description' => psm_get_lang('config', 'authdir_ldapver_description'),
|
|
||||||
'label_authdir_ldapfollowref' => psm_get_lang('config', 'authdir_ldapfollowref'),
|
|
||||||
'label_authdir_ldapfollowref_description' => psm_get_lang('config', 'authdir_ldapfollowref_description'),
|
|
||||||
'label_authdir_basedn' => psm_get_lang('config', 'authdir_basedn'),
|
|
||||||
'label_authdir_basedn_description' => psm_get_lang('config', 'authdir_basedn_description'),
|
|
||||||
'label_authdir_usernameattrib' => psm_get_lang('config', 'authdir_usernameattrib'),
|
|
||||||
'label_authdir_usernameattrib_description' => psm_get_lang('config', 'authdir_usernameattrib_description'),
|
|
||||||
'label_authdir_groupnameattrib' => psm_get_lang('config', 'authdir_groupnameattrib'),
|
|
||||||
'label_authdir_groupnameattrib_description' =>
|
|
||||||
psm_get_lang('config', 'authdir_groupnameattrib_description'),
|
|
||||||
'label_authdir_groupmemattrib' => psm_get_lang('config', 'authdir_groupmemattrib'),
|
|
||||||
'label_authdir_groupmemattrib_description' => psm_get_lang('config', 'authdir_groupmemattrib_description'),
|
|
||||||
'label_authdir_usercontainerrdn' => psm_get_lang('config', 'authdir_usercontainerrdn'),
|
|
||||||
'label_authdir_usercontainerrdn_description' =>
|
|
||||||
psm_get_lang('config', 'authdir_usercontainerrdn_description'),
|
|
||||||
'label_authdir_groupcontainerrdn' => psm_get_lang('config', 'authdir_groupcontainerrdn'),
|
|
||||||
'label_authdir_groupcontainerrdn_description' =>
|
|
||||||
psm_get_lang('config', 'authdir_groupcontainerrdn_description'),
|
|
||||||
'label_authdir_groupname' => psm_get_lang('config', 'authdir_groupname'),
|
|
||||||
'label_authdir_groupname_description' => psm_get_lang('config', 'authdir_groupname_description'),
|
|
||||||
'label_authdir_defaultrole' => psm_get_lang('config', 'authdir_defaultrole'),
|
|
||||||
'label_authdir_defaultrole_description' => psm_get_lang('config', 'authdir_defaultrole_description'),
|
|
||||||
'label_alert_type' => psm_get_lang('config', 'alert_type'),
|
|
||||||
'label_alert_type_description' => psm_get_lang('config', 'alert_type_description'),
|
|
||||||
'label_combine_notifications' => psm_get_lang('config', 'combine_notifications'),
|
|
||||||
'label_combine_notifications_description' => psm_get_lang('config', 'combine_notifications_description'),
|
|
||||||
'label_log_status' => psm_get_lang('config', 'log_status'),
|
|
||||||
'label_log_status_description' => psm_get_lang('config', 'log_status_description'),
|
|
||||||
'label_log_email' => psm_get_lang('config', 'log_email'),
|
|
||||||
'label_log_sms' => psm_get_lang('config', 'log_sms'),
|
|
||||||
'label_log_discord' => psm_get_lang('config', 'log_discord'),
|
|
||||||
'label_log_pushover' => psm_get_lang('config', 'log_pushover'),
|
|
||||||
'label_log_webhook' => psm_get_lang('config', 'log_webhook'),
|
|
||||||
'label_log_telegram' => psm_get_lang('config', 'log_telegram'),
|
|
||||||
'label_log_jabber' => psm_get_lang('config', 'log_jabber'),
|
|
||||||
'label_alert_proxy' => psm_get_lang('config', 'alert_proxy'),
|
|
||||||
'label_alert_proxy_url' => psm_get_lang('config', 'alert_proxy_url'),
|
|
||||||
'label_auto_refresh' => psm_get_lang('config', 'auto_refresh'),
|
|
||||||
'label_auto_refresh_description' => psm_get_lang('config', 'auto_refresh_description'),
|
|
||||||
'label_seconds' => psm_get_lang('system', 'seconds'),
|
|
||||||
'label_save' => psm_get_lang('system', 'save'),
|
|
||||||
'label_test' => psm_get_lang('config', 'test'),
|
|
||||||
'label_log_retention_period' => psm_get_lang('config', 'log_retention_period'),
|
|
||||||
'label_log_retention_period_description' => psm_get_lang('config', 'log_retention_period_description'),
|
|
||||||
'label_log_retention_days' => psm_get_lang('config', 'log_retention_days'),
|
|
||||||
'label_days' => psm_get_lang('config', 'log_retention_days'),
|
|
||||||
'label_leave_blank' => psm_get_lang('users', 'password_leave_blank'),
|
|
||||||
'label_user_agent' => psm_get_lang('config', 'user_agent'),
|
|
||||||
'label_user_agent_key_note' => psm_get_lang('config', 'user_agent_key_note'),
|
|
||||||
'label_site_title' => psm_get_lang('config', 'site_title'),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
<?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
|
||||||
|
**/
|
||||||
|
|
||||||
|
namespace psm\Module;
|
||||||
|
use psm\Service\Database;
|
||||||
|
|
||||||
|
interface ControllerInterface {
|
||||||
|
|
||||||
|
public function __construct(Database $db, \Twig_Environment $twig);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the module
|
||||||
|
*/
|
||||||
|
public function initialize();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the minimum required user level for this controller
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getMinUserLevelRequired();
|
||||||
|
}
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -19,8 +18,8 @@
|
||||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Pepijn Over <pep@mailbox.org>
|
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
|
@ -28,15 +27,12 @@
|
||||||
**/
|
**/
|
||||||
|
|
||||||
namespace psm\Module\Error\Controller;
|
namespace psm\Module\Error\Controller;
|
||||||
|
|
||||||
use psm\Module\AbstractController;
|
use psm\Module\AbstractController;
|
||||||
use psm\Service\Database;
|
use psm\Service\Database;
|
||||||
|
|
||||||
class ErrorController extends AbstractController
|
class ErrorController extends AbstractController {
|
||||||
{
|
|
||||||
|
|
||||||
public function __construct(Database $db, \Twig_Environment $twig)
|
function __construct(Database $db, \Twig_Environment $twig) {
|
||||||
{
|
|
||||||
parent::__construct($db, $twig);
|
parent::__construct($db, $twig);
|
||||||
|
|
||||||
$this->setMinUserLevelRequired(PSM_USER_ANONYMOUS);
|
$this->setMinUserLevelRequired(PSM_USER_ANONYMOUS);
|
||||||
|
@ -51,8 +47,7 @@ class ErrorController extends AbstractController
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
protected function execute401()
|
protected function execute401() {
|
||||||
{
|
|
||||||
return $this->twig->render('module/error/401.tpl.html', array(
|
return $this->twig->render('module/error/401.tpl.html', array(
|
||||||
'label_title' => psm_get_lang('error', '401_unauthorized'),
|
'label_title' => psm_get_lang('error', '401_unauthorized'),
|
||||||
'label_description' => psm_get_lang('error', '401_unauthorized_description'),
|
'label_description' => psm_get_lang('error', '401_unauthorized_description'),
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -19,8 +18,8 @@
|
||||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Pepijn Over <pep@mailbox.org>
|
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
|
@ -28,21 +27,13 @@
|
||||||
**/
|
**/
|
||||||
|
|
||||||
namespace psm\Module\Error;
|
namespace psm\Module\Error;
|
||||||
|
|
||||||
use psm\Module\ModuleInterface;
|
use psm\Module\ModuleInterface;
|
||||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
|
||||||
|
|
||||||
class ErrorModule implements ModuleInterface
|
class ErrorModule implements ModuleInterface {
|
||||||
{
|
public function getControllers() {
|
||||||
|
|
||||||
public function load(ContainerBuilder $container)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getControllers()
|
|
||||||
{
|
|
||||||
return array(
|
return array(
|
||||||
'error' => __NAMESPACE__ . '\Controller\ErrorController',
|
'error' => __NAMESPACE__ . '\Controller\ErrorController',
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,351 @@
|
||||||
|
<?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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,465 +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@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();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?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
|
||||||
|
**/
|
||||||
|
|
||||||
|
namespace psm\Module\Install;
|
||||||
|
use psm\Module\ModuleInterface;
|
||||||
|
|
||||||
|
class InstallModule implements ModuleInterface {
|
||||||
|
public function getControllers() {
|
||||||
|
return array(
|
||||||
|
'install' => __NAMESPACE__ . '\Controller\InstallController',
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -19,8 +18,8 @@
|
||||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Pepijn Over <pep@mailbox.org>
|
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
|
@ -29,12 +28,7 @@
|
||||||
|
|
||||||
namespace psm\Module;
|
namespace psm\Module;
|
||||||
|
|
||||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
interface ModuleInterface {
|
||||||
|
|
||||||
interface ModuleInterface
|
|
||||||
{
|
|
||||||
|
|
||||||
public function load(ContainerBuilder $container);
|
|
||||||
|
|
||||||
public function getControllers();
|
public function getControllers();
|
||||||
}
|
}
|
|
@ -0,0 +1,125 @@
|
||||||
|
<?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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,160 +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@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;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,151 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHP Server Monitor
|
||||||
|
* Monitor your servers and websites.
|
||||||
|
*
|
||||||
|
* This file is part of PHP Server Monitor.
|
||||||
|
* PHP Server Monitor is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* PHP Server Monitor is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* @package phpservermon
|
||||||
|
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||||
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
|
* @version Release: @package_version@
|
||||||
|
* @link http://www.phpservermonitor.org/
|
||||||
|
**/
|
||||||
|
|
||||||
|
namespace psm\Module\Server\Controller;
|
||||||
|
use psm\Service\Database;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Log module. Create the page to view previous log messages
|
||||||
|
*/
|
||||||
|
class LogController extends AbstractServerController {
|
||||||
|
|
||||||
|
function __construct(Database $db, \Twig_Environment $twig) {
|
||||||
|
parent::__construct($db, $twig);
|
||||||
|
|
||||||
|
$this->setActions('index', 'index');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prepare the template with a list of all log entries
|
||||||
|
*/
|
||||||
|
protected function executeIndex() {
|
||||||
|
$this->twig->addGlobal('subtitle', psm_get_lang('menu', 'server_log'));
|
||||||
|
$tpl_data = array(
|
||||||
|
'label_status' => psm_get_lang('log', 'status'),
|
||||||
|
'label_email' => psm_get_lang('log', 'email'),
|
||||||
|
'label_sms' => psm_get_lang('log', 'sms'),
|
||||||
|
'label_pushover' => psm_get_lang('log', 'pushover'),
|
||||||
|
'label_title' => psm_get_lang('log', 'title'),
|
||||||
|
'label_server' => psm_get_lang('servers', 'server'),
|
||||||
|
'label_type' => psm_get_lang('log', 'type'),
|
||||||
|
'label_message' => psm_get_lang('system', 'message'),
|
||||||
|
'label_date' => psm_get_lang('system', 'date'),
|
||||||
|
'label_users' => ucfirst(psm_get_lang('menu', 'user')),
|
||||||
|
'label_no_logs' => psm_get_lang('log', 'no_logs'),
|
||||||
|
'tabs' => array(),
|
||||||
|
);
|
||||||
|
$log_types = array('status', 'email', 'sms', 'pushover');
|
||||||
|
|
||||||
|
// get users
|
||||||
|
$users = $this->db->select(PSM_DB_PREFIX.'users', null, array('user_id','name'));
|
||||||
|
|
||||||
|
$users_labels = array();
|
||||||
|
foreach ($users as $user) {
|
||||||
|
$users_labels[$user['user_id']] = $user['name'];
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($log_types as $key) {
|
||||||
|
$records = $this->getEntries($key);
|
||||||
|
$log_count = count($records);
|
||||||
|
|
||||||
|
$tab_data = array(
|
||||||
|
'id' => $key,
|
||||||
|
'has_users' => ($key == 'status') ? false : true,
|
||||||
|
'no_logs' => ($log_count == 0) ? true : false,
|
||||||
|
'tab_active' => ($key == 'status') ? 'active' : '',
|
||||||
|
);
|
||||||
|
|
||||||
|
for ($x = 0; $x < $log_count; $x++) {
|
||||||
|
$record = &$records[$x];
|
||||||
|
$record['class'] = ($x & 1) ? 'odd' : 'even';
|
||||||
|
$record['users'] = '';
|
||||||
|
$record['server'] = $record['label'];
|
||||||
|
$record['type_icon'] = ($record['server_type'] == 'website') ? 'icon-globe' : 'icon-cog';
|
||||||
|
$record['type_title'] = psm_get_lang('servers', 'type_' . $record['server_type']);
|
||||||
|
$ip = '(' . $record['ip'];
|
||||||
|
if(!empty($record['port']) && (($record['server_type'] != 'website') || ($record['port'] != 80))) {
|
||||||
|
$ip .= ':' . $record['port'];
|
||||||
|
}
|
||||||
|
$ip .= ')';
|
||||||
|
$record['ip'] = $ip;
|
||||||
|
$record['datetime_format'] = psm_date($record['datetime']);
|
||||||
|
|
||||||
|
// fix up user list
|
||||||
|
if(!empty($record['user_id'])) {
|
||||||
|
$names = array();
|
||||||
|
$users = explode(',', $record['user_id']);
|
||||||
|
foreach($users as $user_id) {
|
||||||
|
if(isset($users_labels[$user_id])) {
|
||||||
|
$names[] = $users_labels[$user_id];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sort($names);
|
||||||
|
$record['users'] = implode('<br/>', $names);
|
||||||
|
$record['user_list'] = implode(' • ', $names);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$tab_data['entries'] = $records;
|
||||||
|
$tpl_data['tabs'][] = $tab_data;
|
||||||
|
}
|
||||||
|
return $this->twig->render('module/server/log.tpl.html', $tpl_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all the log entries for a specific $type
|
||||||
|
*
|
||||||
|
* @param string $type status/email/sms
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getEntries($type) {
|
||||||
|
$sql_join = '';
|
||||||
|
if($this->user != null && $this->user->getUserLevel() > PSM_USER_ADMIN) {
|
||||||
|
// restrict by user_id
|
||||||
|
$sql_join = "JOIN `".PSM_DB_PREFIX."users_servers` AS `us` ON (
|
||||||
|
`us`.`user_id`={$this->user->getUserId()}
|
||||||
|
AND `us`.`server_id`=`servers`.`server_id`
|
||||||
|
)";
|
||||||
|
}
|
||||||
|
$entries = $this->db->query(
|
||||||
|
'SELECT '.
|
||||||
|
'`servers`.`label`, '.
|
||||||
|
'`servers`.`ip`, '.
|
||||||
|
'`servers`.`port`, '.
|
||||||
|
'`servers`.`type` AS server_type, '.
|
||||||
|
'`log`.`type`, '.
|
||||||
|
'`log`.`message`, '.
|
||||||
|
'`log`.`datetime`, '.
|
||||||
|
'`log`.`user_id` '.
|
||||||
|
'FROM `'.PSM_DB_PREFIX.'log` AS `log` '.
|
||||||
|
'JOIN `'.PSM_DB_PREFIX.'servers` AS `servers` ON (`servers`.`server_id`=`log`.`server_id`) '.
|
||||||
|
$sql_join .
|
||||||
|
'WHERE `log`.`type`=\''.$type.'\' '.
|
||||||
|
'ORDER BY `datetime` DESC '.
|
||||||
|
'LIMIT 0,20'
|
||||||
|
);
|
||||||
|
return $entries;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,208 +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@mailbox.org>
|
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
|
||||||
* @version Release: @package_version@
|
|
||||||
* @link http://www.phpservermonitor.org/
|
|
||||||
**/
|
|
||||||
|
|
||||||
namespace psm\Module\Server\Controller;
|
|
||||||
|
|
||||||
use psm\Service\Database;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Log module. Create the page to view previous log messages
|
|
||||||
*/
|
|
||||||
class LogController extends AbstractServerController
|
|
||||||
{
|
|
||||||
|
|
||||||
public function __construct(Database $db, \Twig_Environment $twig)
|
|
||||||
{
|
|
||||||
parent::__construct($db, $twig);
|
|
||||||
|
|
||||||
$this->setActions(array(
|
|
||||||
'index', 'delete',
|
|
||||||
), 'index');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prepare the template with a list of all log entries
|
|
||||||
*/
|
|
||||||
protected function executeIndex()
|
|
||||||
{
|
|
||||||
$this->twig->addGlobal('subtitle', psm_get_lang('menu', 'server_log'));
|
|
||||||
$tpl_data = array(
|
|
||||||
'label_status' => psm_get_lang('log', 'status'),
|
|
||||||
'label_email' => psm_get_lang('log', 'email'),
|
|
||||||
'label_sms' => psm_get_lang('log', 'sms'),
|
|
||||||
'label_discord' => psm_get_lang('log', 'discord'),
|
|
||||||
'label_pushover' => psm_get_lang('log', 'pushover'),
|
|
||||||
'label_webhook' => psm_get_lang('log', 'webhook'),
|
|
||||||
'label_telegram' => psm_get_lang('log', 'telegram'),
|
|
||||||
'label_jabber' => psm_get_lang('log', 'jabber'),
|
|
||||||
'label_title' => psm_get_lang('log', 'title'),
|
|
||||||
'label_server' => psm_get_lang('servers', 'server'),
|
|
||||||
'label_type' => psm_get_lang('log', 'type'),
|
|
||||||
'label_message' => psm_get_lang('system', 'message'),
|
|
||||||
'label_date' => psm_get_lang('system', 'date'),
|
|
||||||
'label_users' => ucfirst(psm_get_lang('menu', 'user')),
|
|
||||||
'label_no_logs' => psm_get_lang('log', 'no_logs'),
|
|
||||||
'tabs' => array(),
|
|
||||||
);
|
|
||||||
|
|
||||||
$sidebar = new \psm\Util\Module\Sidebar($this->twig);
|
|
||||||
$this->setSidebar($sidebar);
|
|
||||||
|
|
||||||
if ($this->getUser()->getUserLevel() == PSM_USER_ADMIN) {
|
|
||||||
$modal = new \psm\Util\Module\Modal($this->twig, 'delete', \psm\Util\Module\Modal::MODAL_TYPE_DANGER);
|
|
||||||
$this->addModal($modal);
|
|
||||||
$modal->setTitle(psm_get_lang('log', 'delete_title'));
|
|
||||||
$modal->setMessage(psm_get_lang('log', 'delete_message'));
|
|
||||||
$modal->setOKButtonLabel(psm_get_lang('system', 'delete'));
|
|
||||||
|
|
||||||
$sidebar->addButton(
|
|
||||||
'clear_logn',
|
|
||||||
psm_get_lang('log', 'clear'),
|
|
||||||
psm_build_url(array('mod' => 'server_log', 'action' => 'delete')),
|
|
||||||
'trash',
|
|
||||||
'danger show-modal',
|
|
||||||
psm_get_lang('log', 'delete_title'),
|
|
||||||
'delete'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$log_types = array('status', 'email', 'sms', 'pushover', 'telegram', 'jabber', 'discord', 'webhook');
|
|
||||||
|
|
||||||
foreach ($log_types as $key) {
|
|
||||||
$records = $this->getEntries($key);
|
|
||||||
$log_count = count($records);
|
|
||||||
|
|
||||||
$tab_data = array(
|
|
||||||
'id' => $key,
|
|
||||||
'label' => psm_get_lang('log', $key),
|
|
||||||
'has_users' => ($key == 'status') ? false : true,
|
|
||||||
'no_logs' => ($log_count == 0) ? true : false,
|
|
||||||
'tab_active' => ($key == 'status') ? 'active' : '',
|
|
||||||
);
|
|
||||||
|
|
||||||
for ($x = 0; $x < $log_count; $x++) {
|
|
||||||
$record = &$records[$x];
|
|
||||||
$record['users'] = '';
|
|
||||||
if ($key == 'status') {
|
|
||||||
$record['server'] = $record['label'];
|
|
||||||
$record['type_icon'] = ($record['server_type'] == 'website') ? 'globe-americas' : 'cogs';
|
|
||||||
$record['type_title'] = psm_get_lang('servers', 'type_' . $record['server_type']);
|
|
||||||
$ip = '(' . $record['ip'];
|
|
||||||
if (!empty($record['port']) && (($record['server_type'] != 'website') || ($record['port'] != 80))) {
|
|
||||||
$ip .= ':' . $record['port'];
|
|
||||||
}
|
|
||||||
$ip .= ')';
|
|
||||||
$record['ip'] = $ip;
|
|
||||||
}
|
|
||||||
$record['datetime_format'] = psm_date($record['datetime']);
|
|
||||||
|
|
||||||
// fix up user list
|
|
||||||
$users = $this->getLogUsers($record['log_id']);
|
|
||||||
if (!empty($users)) {
|
|
||||||
$names = array();
|
|
||||||
foreach ($users as $user) {
|
|
||||||
$names[] = $user['name'];
|
|
||||||
}
|
|
||||||
$record['users'] = implode('<br/>', $names);
|
|
||||||
$record['user_list'] = implode(' • ', $names);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$tab_data['entries'] = $records;
|
|
||||||
$tpl_data['tabs'][] = $tab_data;
|
|
||||||
}
|
|
||||||
return $this->twig->render('module/server/log.tpl.html', $tpl_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function executeDelete()
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Empty table log and log_users.
|
|
||||||
* Only when user is admin.
|
|
||||||
*/
|
|
||||||
if ($this->getUser()->getUserLevel() == PSM_USER_ADMIN) {
|
|
||||||
$archiver = new \psm\Util\Server\Archiver\LogsArchiver($this->db);
|
|
||||||
$archiver->cleanupall();
|
|
||||||
}
|
|
||||||
return $this->runAction('index');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get all the log entries for a specific $type
|
|
||||||
*
|
|
||||||
* @param string $type status/email/sms
|
|
||||||
* @return \PDOStatement array
|
|
||||||
*/
|
|
||||||
public function getEntries($type)
|
|
||||||
{
|
|
||||||
$sql_join = '';
|
|
||||||
if ($this->getUser()->getUserLevel() > PSM_USER_ADMIN) {
|
|
||||||
// restrict by user_id
|
|
||||||
$sql_join = "JOIN `" . PSM_DB_PREFIX . "users_servers` AS `us` ON (
|
|
||||||
`us`.`user_id`={$this->getUser()->getUserId()}
|
|
||||||
AND `us`.`server_id`=`servers`.`server_id`
|
|
||||||
)";
|
|
||||||
}
|
|
||||||
$entries = $this->db->query(
|
|
||||||
'SELECT ' .
|
|
||||||
'`servers`.`label`, ' .
|
|
||||||
'`servers`.`ip`, ' .
|
|
||||||
'`servers`.`port`, ' .
|
|
||||||
'`servers`.`type` AS server_type, ' .
|
|
||||||
'`log`.`log_id`, ' .
|
|
||||||
'`log`.`type`, ' .
|
|
||||||
'`log`.`message`, ' .
|
|
||||||
'`log`.`datetime` ' .
|
|
||||||
'FROM `' . PSM_DB_PREFIX . 'log` AS `log` ' .
|
|
||||||
'JOIN `' . PSM_DB_PREFIX . 'servers` AS `servers` ON (`servers`.`server_id`=`log`.`server_id`) ' .
|
|
||||||
$sql_join .
|
|
||||||
'WHERE `log`.`type`=\'' . $type . '\' ' .
|
|
||||||
'ORDER BY `datetime` DESC ' .
|
|
||||||
'LIMIT 0,20'
|
|
||||||
);
|
|
||||||
return $entries;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get all the user entries for a specific $log_id
|
|
||||||
*
|
|
||||||
* @param $log_id
|
|
||||||
* @return \PDOStatement array
|
|
||||||
*/
|
|
||||||
protected function getLogUsers($log_id)
|
|
||||||
{
|
|
||||||
return $this->db->query(
|
|
||||||
"SELECT
|
|
||||||
u.`user_id`,
|
|
||||||
u.`name`
|
|
||||||
FROM `" . PSM_DB_PREFIX . "log_users` AS lu
|
|
||||||
LEFT JOIN `" . PSM_DB_PREFIX . "users` AS u ON lu.`user_id` = u.`user_id`
|
|
||||||
WHERE lu.`log_id` = " . (int) $log_id . "
|
|
||||||
ORDER BY u.`name` ASC"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,439 @@
|
||||||
|
<?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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,698 +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@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;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,109 @@
|
||||||
|
<?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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,138 +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@mailbox.org>
|
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
|
||||||
* @version Release: @package_version@
|
|
||||||
* @link http://www.phpservermonitor.org/
|
|
||||||
**/
|
|
||||||
|
|
||||||
namespace psm\Module\Server\Controller;
|
|
||||||
|
|
||||||
use psm\Service\Database;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Status module
|
|
||||||
*/
|
|
||||||
class StatusController extends AbstractServerController
|
|
||||||
{
|
|
||||||
|
|
||||||
public function __construct(Database $db, \Twig_Environment $twig)
|
|
||||||
{
|
|
||||||
parent::__construct($db, $twig);
|
|
||||||
|
|
||||||
$this->setCSRFKey('status');
|
|
||||||
$this->setActions(array('index', 'saveLayout'), 'index');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prepare the template to show a list of all servers
|
|
||||||
*/
|
|
||||||
protected function executeIndex()
|
|
||||||
{
|
|
||||||
// set background color to black
|
|
||||||
$this->black_background = true;
|
|
||||||
$this->twig->addGlobal('subtitle', psm_get_lang('menu', 'server_status'));
|
|
||||||
|
|
||||||
// add header accessories
|
|
||||||
$layout = $this->getUser()->getUserPref('status_layout', 0);
|
|
||||||
$layout_data = array(
|
|
||||||
'label_none' => psm_get_lang('system', 'none'),
|
|
||||||
'label_last_check' => psm_get_lang('servers', 'last_check'),
|
|
||||||
'label_last_online' => psm_get_lang('servers', 'last_online'),
|
|
||||||
'label_last_offline' => psm_get_lang('servers', 'last_offline'),
|
|
||||||
'label_online' => psm_get_lang('servers', 'online'),
|
|
||||||
'label_offline' => psm_get_lang('servers', 'offline'),
|
|
||||||
'label_rtime' => psm_get_lang('servers', 'latency'),
|
|
||||||
'block_layout_active' => ($layout == 0) ? 'active' : '',
|
|
||||||
'list_layout_active' => ($layout != 0) ? 'active' : '',
|
|
||||||
'label_add_server' => psm_get_lang('system', 'add_new'),
|
|
||||||
'layout' => $layout,
|
|
||||||
'url_save' => psm_build_url(array('mod' => 'server', 'action' => 'edit')),
|
|
||||||
);
|
|
||||||
$this->setHeaderAccessories($this->twig->render('module/server/status/header.tpl.html', $layout_data));
|
|
||||||
|
|
||||||
$this->addFooter(false);
|
|
||||||
|
|
||||||
// get the active servers from database
|
|
||||||
$servers = $this->getServers();
|
|
||||||
|
|
||||||
$layout_data['servers_offline'] = array();
|
|
||||||
$layout_data['servers_warning'] = array();
|
|
||||||
$layout_data['servers_online'] = array();
|
|
||||||
|
|
||||||
foreach ($servers as $server) {
|
|
||||||
if ($server['active'] == 'no') {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
$server['last_checked_nice'] = psm_timespan($server['last_check']);
|
|
||||||
$server['last_online_nice'] = psm_timespan($server['last_online']);
|
|
||||||
$server['last_offline_nice'] = psm_timespan($server['last_offline']);
|
|
||||||
$server['last_offline_duration_nice'] = "";
|
|
||||||
if ($server['last_offline_nice'] != psm_get_lang('system', 'never')) {
|
|
||||||
$server['last_offline_duration_nice'] = "(" . $server['last_offline_duration'] . ")";
|
|
||||||
}
|
|
||||||
$server['url_view'] = psm_build_url(
|
|
||||||
array('mod' => 'server', 'action' => 'view', 'id' => $server['server_id'], 'back_to' => 'server_status')
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($server['status'] == "off") {
|
|
||||||
$layout_data['servers_offline'][] = $server;
|
|
||||||
} elseif ($server['warning_threshold_counter'] > 0) {
|
|
||||||
$layout_data['servers_warning'][] = $server;
|
|
||||||
} elseif ($server['ssl_cert_expired_time'] !== null && $server['ssl_cert_expiry_days'] > 0) {
|
|
||||||
$layout_data['servers_warning'][] = $server;
|
|
||||||
} else {
|
|
||||||
$layout_data['servers_online'][] = $server;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$auto_refresh_seconds = psm_get_conf('auto_refresh_servers');
|
|
||||||
if (intval($auto_refresh_seconds) > 0) {
|
|
||||||
$this->twig->addGlobal('auto_refresh', true);
|
|
||||||
$this->twig->addGlobal('auto_refresh_seconds', $auto_refresh_seconds);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($this->isXHR() || isset($_SERVER["HTTP_X_REQUESTED_WITH"])) {
|
|
||||||
$this->xhr = true;
|
|
||||||
//disable auto refresh in ajax return html
|
|
||||||
$layout_data["auto_refresh"] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->twig->render('module/server/status/index.tpl.html', $layout_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function executeSaveLayout()
|
|
||||||
{
|
|
||||||
if ($this->isXHR()) {
|
|
||||||
$layout = psm_POST('layout', 0);
|
|
||||||
$this->getUser()->setUserPref('status_layout', $layout);
|
|
||||||
|
|
||||||
$response = new \Symfony\Component\HttpFoundation\JsonResponse();
|
|
||||||
$response->setData(array(
|
|
||||||
'layout' => $layout,
|
|
||||||
));
|
|
||||||
return $response;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -20,8 +19,8 @@
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Michael Greenhill
|
* @author Michael Greenhill
|
||||||
* @author Pepijn Over <pep@mailbox.org>
|
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
|
@ -29,23 +28,20 @@
|
||||||
**/
|
**/
|
||||||
|
|
||||||
namespace psm\Module\Server\Controller;
|
namespace psm\Module\Server\Controller;
|
||||||
|
|
||||||
use psm\Module\AbstractController;
|
use psm\Module\AbstractController;
|
||||||
use psm\Service\Database;
|
use psm\Service\Database;
|
||||||
|
|
||||||
class UpdateController extends AbstractController
|
class UpdateController extends AbstractController {
|
||||||
{
|
|
||||||
|
|
||||||
public function __construct(Database $db, \Twig_Environment $twig)
|
function __construct(Database $db, \Twig_Environment $twig) {
|
||||||
{
|
|
||||||
parent::__construct($db, $twig);
|
parent::__construct($db, $twig);
|
||||||
|
|
||||||
$this->setActions('index', 'index');
|
$this->setActions('index', 'index');
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function executeIndex()
|
protected function executeIndex() {
|
||||||
{
|
$autorun = new \psm\Util\Server\UpdateManager($this->db);
|
||||||
$autorun = $this->container->get('util.server.updatemanager');
|
$autorun->setUser($this->user);
|
||||||
$autorun->run();
|
$autorun->run();
|
||||||
|
|
||||||
header('Location: ' . psm_build_url(array(
|
header('Location: ' . psm_build_url(array(
|
||||||
|
@ -53,4 +49,5 @@ class UpdateController extends AbstractController
|
||||||
), true, false));
|
), true, false));
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,5 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP Server Monitor
|
* PHP Server Monitor
|
||||||
* Monitor your servers and websites.
|
* Monitor your servers and websites.
|
||||||
|
@ -19,30 +18,25 @@
|
||||||
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* @package phpservermon
|
* @package phpservermon
|
||||||
* @author Pepijn Over <pep@mailbox.org>
|
* @author Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
|
* @copyright Copyright (c) 2008-2014 Pepijn Over <pep@neanderthal-technology.com>
|
||||||
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
* @version Release: @package_version@
|
* @version Release: @package_version@
|
||||||
* @link http://www.phpservermonitor.org/
|
* @link http://www.phpservermonitor.org/
|
||||||
* @since phpservermon 3.0
|
* @since phpservermon 3.0
|
||||||
**/
|
**/
|
||||||
|
|
||||||
namespace psm\Module\Install;
|
namespace psm\Module\Server;
|
||||||
|
|
||||||
use psm\Module\ModuleInterface;
|
use psm\Module\ModuleInterface;
|
||||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
|
||||||
|
|
||||||
class InstallModule implements ModuleInterface
|
class ServerModule implements ModuleInterface {
|
||||||
{
|
public function getControllers() {
|
||||||
|
|
||||||
public function load(ContainerBuilder $container)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getControllers()
|
|
||||||
{
|
|
||||||
return array(
|
return array(
|
||||||
'install' => __NAMESPACE__ . '\Controller\InstallController',
|
'server' => __NAMESPACE__ . '\Controller\ServerController',
|
||||||
|
'log' => __NAMESPACE__ . '\Controller\LogController',
|
||||||
|
'status' => __NAMESPACE__ . '\Controller\StatusController',
|
||||||
|
'update' => __NAMESPACE__ . '\Controller\UpdateController',
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,51 +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@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
|
|
||||||
**/
|
|
||||||
|
|
||||||
namespace psm\Module\Server;
|
|
||||||
|
|
||||||
use psm\Module\ModuleInterface;
|
|
||||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
|
||||||
|
|
||||||
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',
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,176 @@
|
||||||
|
<?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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,188 +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@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();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,134 @@
|
||||||
|
<?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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,209 +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@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');
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,356 @@
|
||||||
|
<?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
Loading…
Reference in New Issue