Merge d9557b4115
into 77fac34c54
commit
073cca95dd
|
@ -103,6 +103,25 @@ To specify the base url to your monitor installation, use the "--uri" argument,
|
||||||
|
|
||||||
php status.cron.php --uri="http://www.phpservermonitor.org/mymonitor/"
|
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
|
||||||
|
|
||||||
|
|
||||||
Troubleshooting
|
Troubleshooting
|
||||||
+++++++++++++++
|
+++++++++++++++
|
||||||
|
|
|
@ -221,18 +221,38 @@ function psm_update_conf($key, $value) {
|
||||||
* everything should have been handled when calling this function
|
* everything should have been handled when calling this function
|
||||||
*
|
*
|
||||||
* @param string $server_id
|
* @param string $server_id
|
||||||
|
* @param string $type
|
||||||
* @param string $message
|
* @param string $message
|
||||||
|
*
|
||||||
|
* @return int log_id
|
||||||
*/
|
*/
|
||||||
function psm_add_log($server_id, $type, $message, $user_id = null) {
|
function psm_add_log($server_id, $type, $message) {
|
||||||
global $db;
|
global $db;
|
||||||
|
|
||||||
$db->save(
|
return $db->save(
|
||||||
PSM_DB_PREFIX.'log',
|
PSM_DB_PREFIX.'log',
|
||||||
array(
|
array(
|
||||||
'server_id' => $server_id,
|
'server_id' => $server_id,
|
||||||
'type' => $type,
|
'type' => $type,
|
||||||
'message' => $message,
|
'message' => $message,
|
||||||
'user_id' => ($user_id === null) ? '' : $user_id,
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function just adds a user to the log_users table.
|
||||||
|
*
|
||||||
|
* @param $log_id
|
||||||
|
* @param $user_id
|
||||||
|
*/
|
||||||
|
function psm_add_log_user($log_id, $user_id) {
|
||||||
|
global $db;
|
||||||
|
|
||||||
|
$db->save(
|
||||||
|
PSM_DB_PREFIX . 'log_users',
|
||||||
|
array(
|
||||||
|
'log_id' => $log_id,
|
||||||
|
'user_id' => $user_id,
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -503,6 +523,9 @@ function psm_build_sms() {
|
||||||
case 'nexmo':
|
case 'nexmo':
|
||||||
$sms = new \psm\Txtmsg\Nexmo();
|
$sms = new \psm\Txtmsg\Nexmo();
|
||||||
break;
|
break;
|
||||||
|
case 'freemobilesms':
|
||||||
|
$sms = new \psm\Txtmsg\FreeMobileSMS();
|
||||||
|
break;
|
||||||
case 'octopush':
|
case 'octopush':
|
||||||
$sms = new \psm\Txtmsg\Octopush();
|
$sms = new \psm\Txtmsg\Octopush();
|
||||||
break; }
|
break; }
|
||||||
|
|
|
@ -211,6 +211,7 @@ $sm_lang = array(
|
||||||
'sms_gateway_octopush' => 'Octopush',
|
'sms_gateway_octopush' => 'Octopush',
|
||||||
'sms_gateway_smsit' => 'Smsit',
|
'sms_gateway_smsit' => 'Smsit',
|
||||||
'sms_gateway_freevoipdeal' => 'FreeVoipDeal',
|
'sms_gateway_freevoipdeal' => 'FreeVoipDeal',
|
||||||
|
'sms_gateway_freemobilesms' => 'FreeMobileSMS',
|
||||||
'sms_gateway_nexmo' => 'Nexmo',
|
'sms_gateway_nexmo' => 'Nexmo',
|
||||||
'sms_gateway_username' => 'Gateway username',
|
'sms_gateway_username' => 'Gateway username',
|
||||||
'sms_gateway_password' => 'Gateway password',
|
'sms_gateway_password' => 'Gateway password',
|
||||||
|
|
|
@ -201,6 +201,7 @@ $sm_lang = array(
|
||||||
'sms_gateway_smsit' => 'Smsit',
|
'sms_gateway_smsit' => 'Smsit',
|
||||||
'sms_gateway_freevoipdeal' => 'FreeVoipDeal',
|
'sms_gateway_freevoipdeal' => 'FreeVoipDeal',
|
||||||
'sms_gateway_nexmo' => 'Nexmo',
|
'sms_gateway_nexmo' => 'Nexmo',
|
||||||
|
'sms_gateway_freemobilesms' => 'FreeMobileSMS',
|
||||||
'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',
|
||||||
|
|
|
@ -130,7 +130,7 @@ $sm_lang = array(
|
||||||
'last_check' => 'Laatst gecontroleerd',
|
'last_check' => 'Laatst gecontroleerd',
|
||||||
'last_online' => 'Laatst online',
|
'last_online' => 'Laatst online',
|
||||||
'monitoring' => 'Monitoring',
|
'monitoring' => 'Monitoring',
|
||||||
'no_monitoring' => 'No monitoring',
|
'no_monitoring' => 'Geen monitoring',
|
||||||
'email' => 'Email',
|
'email' => 'Email',
|
||||||
'send_email' => 'Stuur email',
|
'send_email' => 'Stuur email',
|
||||||
'sms' => 'SMS',
|
'sms' => 'SMS',
|
||||||
|
@ -209,7 +209,7 @@ $sm_lang = array(
|
||||||
'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" target="_blank">App registreren</a> via hun website, en daarvan de App API Token hier invullen.',
|
'pushover_api_token_description' => 'Voordat je Pushover kunt gebruiken moet je een <a href="%1$s" target="_blank">App registreren</a> via hun website, en daarvan de App API Token hier invullen.',
|
||||||
'alert_type' => 'Selecteer wanneer je een notificatie wilt',
|
'alert_type' => 'Selecteer wanneer je een notificatie wilt',
|
||||||
'alert_type_description' => '<b>Status change:</b> '.
|
'alert_type_description' => '<b>Status verandert:</b> '.
|
||||||
'Je ontvangt alleen bericht wanneer een server van status verandert. Dus van online -> offline of offline -> online.<br/>'.
|
'Je ontvangt alleen bericht wanneer een server van status verandert. Dus van online -> offline of offline -> online.<br/>'.
|
||||||
'<br /><b>Offline:</b> '.
|
'<br /><b>Offline:</b> '.
|
||||||
'Je ontvangt bericht wanneer een server offline gaat voor de *EERSTE KEER*. Bijvoorbeeld, '.
|
'Je ontvangt bericht wanneer een server offline gaat voor de *EERSTE KEER*. Bijvoorbeeld, '.
|
||||||
|
@ -236,7 +236,7 @@ $sm_lang = array(
|
||||||
'settings_log' => 'Log instellingen',
|
'settings_log' => 'Log instellingen',
|
||||||
'auto_refresh' => 'Auto-refresh',
|
'auto_refresh' => 'Auto-refresh',
|
||||||
'auto_refresh_servers' =>
|
'auto_refresh_servers' =>
|
||||||
'Auto-refresh servers pagina.<br/>'.
|
'Auto-herladen servers pagina.<br/>'.
|
||||||
'<span class="small">'.
|
'<span class="small">'.
|
||||||
'Tijd in seconden, als de tijd 0 is wordt de pagina niet ververst.'.
|
'Tijd in seconden, als de tijd 0 is wordt de pagina niet ververst.'.
|
||||||
'</span>',
|
'</span>',
|
||||||
|
|
|
@ -0,0 +1,299 @@
|
||||||
|
<?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-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' => 'Tiếng Việt',
|
||||||
|
'locale' => array('vi_VN.UTF-8', 'vi_VN', '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="http://www.phpservermonitor.org" target="_blank">http://www.phpservermonitor.org</a>.',
|
||||||
|
'back_to_top' => 'Lên đầu trang',
|
||||||
|
'go_back' => 'Quay lại',
|
||||||
|
'ok' => 'OK',
|
||||||
|
'cancel' => 'Cancel',
|
||||||
|
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
|
||||||
|
'short_day_format' => '%B %e',
|
||||||
|
'long_day_format' => '%B %e, %Y',
|
||||||
|
'yesterday_format' => 'Yesterday at %k:%M',
|
||||||
|
'other_day_format' => '%A at %k:%M',
|
||||||
|
'never' => 'Never',
|
||||||
|
'hours_ago' => '%d 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',
|
||||||
|
),
|
||||||
|
'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/">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) 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',
|
||||||
|
),
|
||||||
|
'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ử',
|
||||||
|
// 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 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_mosms' => 'Mosms',
|
||||||
|
'sms_gateway_mollie' => 'Mollie',
|
||||||
|
'sms_gateway_spryng' => 'Spryng',
|
||||||
|
'sms_gateway_inetworx' => 'Inetworx',
|
||||||
|
'sms_gateway_clickatell' => 'Clickatell',
|
||||||
|
'sms_gateway_textmarketer' => 'Textmarketer',
|
||||||
|
'sms_gateway_smsglobal' => 'SMSGlobal',
|
||||||
|
'sms_gateway_smsit' => 'Smsit',
|
||||||
|
'sms_gateway_username' => 'Gateway username',
|
||||||
|
'sms_gateway_password' => 'Gateway password',
|
||||||
|
'sms_from' => '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/">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">đă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_servers' =>
|
||||||
|
'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>',
|
||||||
|
'seconds' => 'giây',
|
||||||
|
'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',
|
||||||
|
'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',
|
||||||
|
),
|
||||||
|
// for newlines in the email messages use <br/>
|
||||||
|
'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%',
|
||||||
|
'on_email_subject' => 'IMPORTANT: Server \'%LABEL%\' hoạt động',
|
||||||
|
'on_email_body' => "Server '%LABEL%' hoạt động lại:<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:<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.',
|
||||||
|
),
|
||||||
|
);
|
|
@ -322,6 +322,7 @@ class ConfigController extends AbstractController {
|
||||||
'label_sms_gateway_smsglobal' => psm_get_lang('config', 'sms_gateway_smsglobal'),
|
'label_sms_gateway_smsglobal' => psm_get_lang('config', 'sms_gateway_smsglobal'),
|
||||||
'label_sms_gateway_nexmo' => psm_get_lang('config', 'sms_gateway_nexmo'),
|
'label_sms_gateway_nexmo' => psm_get_lang('config', 'sms_gateway_nexmo'),
|
||||||
'label_sms_gateway_octopush' => psm_get_lang('config', 'sms_gateway_octopush'),
|
'label_sms_gateway_octopush' => psm_get_lang('config', 'sms_gateway_octopush'),
|
||||||
|
'label_sms_gateway_freemobilesms' => psm_get_lang('config', 'sms_gateway_freemobilesms'),
|
||||||
'label_sms_gateway_username' => psm_get_lang('config', 'sms_gateway_username'),
|
'label_sms_gateway_username' => psm_get_lang('config', 'sms_gateway_username'),
|
||||||
'label_sms_gateway_password' => psm_get_lang('config', 'sms_gateway_password'),
|
'label_sms_gateway_password' => psm_get_lang('config', 'sms_gateway_password'),
|
||||||
'label_sms_from' => psm_get_lang('config', 'sms_from'),
|
'label_sms_from' => psm_get_lang('config', 'sms_from'),
|
||||||
|
|
|
@ -60,14 +60,6 @@ class LogController extends AbstractServerController {
|
||||||
);
|
);
|
||||||
$log_types = array('status', 'email', 'sms', 'pushover');
|
$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) {
|
foreach($log_types as $key) {
|
||||||
$records = $this->getEntries($key);
|
$records = $this->getEntries($key);
|
||||||
$log_count = count($records);
|
$log_count = count($records);
|
||||||
|
@ -95,15 +87,12 @@ class LogController extends AbstractServerController {
|
||||||
$record['datetime_format'] = psm_date($record['datetime']);
|
$record['datetime_format'] = psm_date($record['datetime']);
|
||||||
|
|
||||||
// fix up user list
|
// fix up user list
|
||||||
if(!empty($record['user_id'])) {
|
$users = $this->getLogUsers($record['log_id']);
|
||||||
|
if(!empty($users)) {
|
||||||
$names = array();
|
$names = array();
|
||||||
$users = explode(',', $record['user_id']);
|
foreach($users as $user) {
|
||||||
foreach($users as $user_id) {
|
$names[] = $user['name'];
|
||||||
if(isset($users_labels[$user_id])) {
|
|
||||||
$names[] = $users_labels[$user_id];
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
sort($names);
|
|
||||||
$record['users'] = implode('<br/>', $names);
|
$record['users'] = implode('<br/>', $names);
|
||||||
$record['user_list'] = implode(' • ', $names);
|
$record['user_list'] = implode(' • ', $names);
|
||||||
}
|
}
|
||||||
|
@ -135,10 +124,10 @@ class LogController extends AbstractServerController {
|
||||||
'`servers`.`ip`, '.
|
'`servers`.`ip`, '.
|
||||||
'`servers`.`port`, '.
|
'`servers`.`port`, '.
|
||||||
'`servers`.`type` AS server_type, '.
|
'`servers`.`type` AS server_type, '.
|
||||||
|
'`log`.`log_id`, '.
|
||||||
'`log`.`type`, '.
|
'`log`.`type`, '.
|
||||||
'`log`.`message`, '.
|
'`log`.`message`, '.
|
||||||
'`log`.`datetime`, '.
|
'`log`.`datetime` '.
|
||||||
'`log`.`user_id` '.
|
|
||||||
'FROM `'.PSM_DB_PREFIX.'log` AS `log` '.
|
'FROM `'.PSM_DB_PREFIX.'log` AS `log` '.
|
||||||
'JOIN `'.PSM_DB_PREFIX.'servers` AS `servers` ON (`servers`.`server_id`=`log`.`server_id`) '.
|
'JOIN `'.PSM_DB_PREFIX.'servers` AS `servers` ON (`servers`.`server_id`=`log`.`server_id`) '.
|
||||||
$sql_join .
|
$sql_join .
|
||||||
|
@ -148,4 +137,22 @@ class LogController extends AbstractServerController {
|
||||||
);
|
);
|
||||||
return $entries;
|
return $entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all the user entries for a specific $log_id
|
||||||
|
*
|
||||||
|
* @param $log_id
|
||||||
|
* @return 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,52 @@
|
||||||
|
<?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 Michiel van der Wulp <michiel@vanderwulp.be>
|
||||||
|
* @copyright Copyright (c) 2008-2015 Pepijn Over <pep@peplab.net>
|
||||||
|
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
|
||||||
|
* @version Release: @package_version@
|
||||||
|
* @link http://www.phpservermonitor.org/
|
||||||
|
**/
|
||||||
|
|
||||||
|
namespace psm\Txtmsg;
|
||||||
|
|
||||||
|
class FreeMobileSMS extends Core {
|
||||||
|
// =========================================================================
|
||||||
|
// [ Fields ]
|
||||||
|
// =========================================================================
|
||||||
|
public $gateway = 1;
|
||||||
|
public $resultcode = null;
|
||||||
|
public $resultmessage = null;
|
||||||
|
public $success = false;
|
||||||
|
public $successcount = 0;
|
||||||
|
|
||||||
|
public function sendSMS($message) {
|
||||||
|
|
||||||
|
$ch = curl_init();
|
||||||
|
curl_setopt($ch, CURLOPT_URL, "https://smsapi.free-mobile.fr/sendmsg?user=$this->username&pass=$this->password&msg=$message");
|
||||||
|
curl_setopt($ch, CURLOPT_HEADER, 0);
|
||||||
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||||
|
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
|
||||||
|
$result = curl_exec($ch);
|
||||||
|
curl_close($ch);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -206,9 +206,13 @@ class Installer {
|
||||||
`type` enum('status','email','sms','pushover') NOT NULL,
|
`type` enum('status','email','sms','pushover') NOT NULL,
|
||||||
`message` varchar(255) NOT NULL,
|
`message` varchar(255) NOT NULL,
|
||||||
`datetime` timestamp NOT NULL default CURRENT_TIMESTAMP,
|
`datetime` timestamp NOT NULL default CURRENT_TIMESTAMP,
|
||||||
`user_id` varchar(255) NOT NULL,
|
|
||||||
PRIMARY KEY (`log_id`)
|
PRIMARY KEY (`log_id`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;",
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;",
|
||||||
|
PSM_DB_PREFIX . 'log_users' => "CREATE TABLE `" . PSM_DB_PREFIX . "log_users` (
|
||||||
|
`log_id` int(11) UNSIGNED NOT NULL ,
|
||||||
|
`user_id` int(11) UNSIGNED NOT NULL ,
|
||||||
|
PRIMARY KEY (`log_id`, `user_id`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;",
|
||||||
PSM_DB_PREFIX . 'servers' => "CREATE TABLE `" . PSM_DB_PREFIX . "servers` (
|
PSM_DB_PREFIX . 'servers' => "CREATE TABLE `" . PSM_DB_PREFIX . "servers` (
|
||||||
`server_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
`server_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
`ip` varchar(500) NOT NULL,
|
`ip` varchar(500) NOT NULL,
|
||||||
|
@ -440,5 +444,29 @@ class Installer {
|
||||||
$queries[] = "ALTER TABLE `" . PSM_DB_PREFIX . "servers` ADD `website_username` varchar(255) NULL, ADD `website_password` varchar(255) NULL AFTER `website_username`;";
|
$queries[] = "ALTER TABLE `" . PSM_DB_PREFIX . "servers` ADD `website_username` varchar(255) NULL, ADD `website_password` varchar(255) NULL AFTER `website_username`;";
|
||||||
|
|
||||||
$this->execSQL($queries);
|
$this->execSQL($queries);
|
||||||
|
|
||||||
|
// Create log_users table
|
||||||
|
$this->execSQL("CREATE TABLE `" . PSM_DB_PREFIX . "log_users` (
|
||||||
|
`log_id` int(11) UNSIGNED NOT NULL ,
|
||||||
|
`user_id` int(11) UNSIGNED NOT NULL ,
|
||||||
|
PRIMARY KEY (`log_id`, `user_id`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;");
|
||||||
|
|
||||||
|
// Migrate the data
|
||||||
|
$logs = $this->db->select(PSM_DB_PREFIX . 'log', null, array('log_id', 'user_id'));
|
||||||
|
foreach ($logs as $log) {
|
||||||
|
// Validation
|
||||||
|
if (empty($log['user_id']) || trim($log['user_id']) == '') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert into new table
|
||||||
|
foreach (explode(',', $log['user_id']) as $user_id) {
|
||||||
|
psm_add_log_user($log['log_id'], $user_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Drop old user_id('s) column
|
||||||
|
$this->execSQL("ALTER TABLE `" . PSM_DB_PREFIX . "log` DROP COLUMN `user_id`;");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -198,8 +198,6 @@ class StatusNotifier {
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
protected function notifyByEmail($users) {
|
protected function notifyByEmail($users) {
|
||||||
$userlist = array();
|
|
||||||
|
|
||||||
// build mail object with some default values
|
// build mail object with some default values
|
||||||
$mail = psm_build_mail();
|
$mail = psm_build_mail();
|
||||||
$mail->Subject = utf8_decode(psm_parse_msg($this->status_new, 'email_subject', $this->server));
|
$mail->Subject = utf8_decode(psm_parse_msg($this->status_new, 'email_subject', $this->server));
|
||||||
|
@ -209,19 +207,21 @@ class StatusNotifier {
|
||||||
$mail->Body = utf8_decode($body);
|
$mail->Body = utf8_decode($body);
|
||||||
$mail->AltBody = str_replace('<br/>', "\n", $body);
|
$mail->AltBody = str_replace('<br/>', "\n", $body);
|
||||||
|
|
||||||
|
if(psm_get_conf('log_email')) {
|
||||||
|
$log_id = psm_add_log($this->server_id, 'email', $body);
|
||||||
|
}
|
||||||
|
|
||||||
// go through empl
|
// go through empl
|
||||||
foreach ($users as $user) {
|
foreach ($users as $user) {
|
||||||
|
if(!empty($log_id)) {
|
||||||
|
psm_add_log_user($log_id, $user['user_id']);
|
||||||
|
}
|
||||||
|
|
||||||
// we sent a seperate email to every single user.
|
// we sent a seperate email to every single user.
|
||||||
$userlist[] = $user['user_id'];
|
|
||||||
$mail->AddAddress($user['email'], $user['name']);
|
$mail->AddAddress($user['email'], $user['name']);
|
||||||
$mail->Send();
|
$mail->Send();
|
||||||
$mail->ClearAddresses();
|
$mail->ClearAddresses();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(psm_get_conf('log_email')) {
|
|
||||||
// save to log
|
|
||||||
psm_add_log($this->server_id, 'email', $body, implode(',', $userlist));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -231,9 +231,21 @@ class StatusNotifier {
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
protected function notifyByPushover($users) {
|
protected function notifyByPushover($users) {
|
||||||
$userlist = array();
|
// Remove users that have no pushover_key
|
||||||
$pushover = psm_build_pushover();
|
foreach($users as $k => $user) {
|
||||||
|
if (trim($user['pushover_key']) == '') {
|
||||||
|
unset($users[$k]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validation
|
||||||
|
if (empty($users)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pushover
|
||||||
|
$message = psm_parse_msg($this->status_new, 'pushover_message', $this->server);
|
||||||
|
$pushover = psm_build_pushover();
|
||||||
if($this->status_new === true) {
|
if($this->status_new === true) {
|
||||||
$pushover->setPriority(0);
|
$pushover->setPriority(0);
|
||||||
} else {
|
} else {
|
||||||
|
@ -241,28 +253,29 @@ class StatusNotifier {
|
||||||
$pushover->setRetry(300); //Used with Priority = 2; Pushover will resend the notification every 60 seconds until the user accepts.
|
$pushover->setRetry(300); //Used with Priority = 2; Pushover will resend the notification every 60 seconds until the user accepts.
|
||||||
$pushover->setExpire(3600); //Used with Priority = 2; Pushover will resend the notification every 60 seconds for 3600 seconds. After that point, it stops sending notifications.
|
$pushover->setExpire(3600); //Used with Priority = 2; Pushover will resend the notification every 60 seconds for 3600 seconds. After that point, it stops sending notifications.
|
||||||
}
|
}
|
||||||
$message = psm_parse_msg($this->status_new, 'pushover_message', $this->server);
|
|
||||||
|
|
||||||
$pushover->setTitle(psm_parse_msg($this->status_new, 'pushover_title', $this->server));
|
$pushover->setTitle(psm_parse_msg($this->status_new, 'pushover_title', $this->server));
|
||||||
$pushover->setMessage(str_replace('<br/>', "\n", $message));
|
$pushover->setMessage(str_replace('<br/>', "\n", $message));
|
||||||
$pushover->setUrl(psm_build_url());
|
$pushover->setUrl(psm_build_url());
|
||||||
$pushover->setUrlTitle(psm_get_lang('system', 'title'));
|
$pushover->setUrlTitle(psm_get_lang('system', 'title'));
|
||||||
|
|
||||||
foreach($users as $user) {
|
// Log
|
||||||
if(trim($user['pushover_key']) == '') {
|
if(psm_get_conf('log_pushover')) {
|
||||||
continue;
|
$log_id = psm_add_log($this->server_id, 'pushover', $message);
|
||||||
}
|
}
|
||||||
$userlist[] = $user['user_id'];
|
|
||||||
|
foreach($users as $user) {
|
||||||
|
// Log
|
||||||
|
if(!empty($log_id)) {
|
||||||
|
psm_add_log_user($log_id, $user['user_id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set recipient + send
|
||||||
$pushover->setUser($user['pushover_key']);
|
$pushover->setUser($user['pushover_key']);
|
||||||
if($user['pushover_device'] != '') {
|
if($user['pushover_device'] != '') {
|
||||||
$pushover->setDevice($user['pushover_device']);
|
$pushover->setDevice($user['pushover_device']);
|
||||||
}
|
}
|
||||||
$pushover->send();
|
$pushover->send();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(psm_get_conf('log_pushover')) {
|
|
||||||
psm_add_log($this->server_id, 'pushover', $message, implode(',', $userlist));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -277,24 +290,26 @@ class StatusNotifier {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// we have to build an userlist for the log table..
|
$message = psm_parse_msg($this->status_new, 'sms', $this->server);
|
||||||
$userlist = array();
|
|
||||||
|
// Log
|
||||||
|
if(psm_get_conf('log_sms')) {
|
||||||
|
$log_id = psm_add_log($this->server_id, 'sms', $message);
|
||||||
|
}
|
||||||
|
|
||||||
// add all users to the recipients list
|
// add all users to the recipients list
|
||||||
foreach ($users as $user) {
|
foreach ($users as $user) {
|
||||||
$userlist[] = $user['user_id'];
|
// Log
|
||||||
$sms->addRecipients($user['mobile']);
|
if(!empty($log_id)) {
|
||||||
|
psm_add_log_user($log_id, $user['user_id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$message = psm_parse_msg($this->status_new, 'sms', $this->server);
|
$sms->addRecipients($user['mobile']);
|
||||||
|
}
|
||||||
|
|
||||||
// Send sms
|
// Send sms
|
||||||
$result = $sms->sendSMS($message);
|
$result = $sms->sendSMS($message);
|
||||||
|
|
||||||
if(psm_get_conf('log_sms')) {
|
|
||||||
// save to log
|
|
||||||
psm_add_log($this->server_id, 'sms', $message, implode(',', $userlist));
|
|
||||||
}
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -145,7 +145,7 @@ class StatusUpdater {
|
||||||
// save response time
|
// save response time
|
||||||
$starttime = microtime(true);
|
$starttime = microtime(true);
|
||||||
|
|
||||||
$fp = fsockopen ($this->server['ip'], $this->server['port'], $errno, $this->error, 10);
|
$fp = @fsockopen ($this->server['ip'], $this->server['port'], $errno, $this->error, 10);
|
||||||
|
|
||||||
$status = ($fp === false) ? false : true;
|
$status = ($fp === false) ? false : true;
|
||||||
$this->rtime = (microtime(true) - $starttime);
|
$this->rtime = (microtime(true) - $starttime);
|
||||||
|
|
|
@ -171,6 +171,7 @@
|
||||||
<option value="smsit" {{ sms_selected_smsit|raw }}>{{ label_sms_gateway_smsit }}</option>
|
<option value="smsit" {{ sms_selected_smsit|raw }}>{{ label_sms_gateway_smsit }}</option>
|
||||||
<option value="freevoipdeal" {{ sms_selected_freevoipdeal|raw }}>{{ label_sms_gateway_freevoipdeal }}</option>
|
<option value="freevoipdeal" {{ sms_selected_freevoipdeal|raw }}>{{ label_sms_gateway_freevoipdeal }}</option>
|
||||||
<option value="octopush" {{ sms_selected_octopush|raw }}>{{ label_sms_gateway_octopush }}</option>
|
<option value="octopush" {{ sms_selected_octopush|raw }}>{{ label_sms_gateway_octopush }}</option>
|
||||||
|
<option value="freemobilesms" {{ sms_selected_freemobilesms|raw }}>{{ label_sms_gateway_freemobilesms }}</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{% import 'main/macros.tpl.html' as macro %}
|
{% import 'main/macros.tpl.html' as macro %}
|
||||||
<form class="form-horizontal well" action="{{ url_save|raw }}" method="post">
|
<form class="form-horizontal well" action="{{ url_save|raw }}" method="post" autocomplete="off">
|
||||||
{{ macro.csrf_input() }}
|
{{ macro.csrf_input() }}
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{ titlemode }}</legend>
|
<legend>{{ titlemode }}</legend>
|
||||||
|
@ -63,7 +63,7 @@
|
||||||
<input type="text" id="pattern" name="pattern" value="{{ edit_value_pattern }}" maxlength="255" data-toggle="tooltip" title="{{ label_pattern_description }}" />
|
<input type="text" id="pattern" name="pattern" value="{{ edit_value_pattern }}" maxlength="255" data-toggle="tooltip" title="{{ label_pattern_description }}" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="control-group types typeWebsite">
|
<div class="control-group">
|
||||||
<label class="control-label" for="warning_threshold">{{ label_warning_threshold }}</label>
|
<label class="control-label" for="warning_threshold">{{ label_warning_threshold }}</label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<input class="input-mini" type="text" id="warning_threshold" name="warning_threshold" value="{{ edit_value_warning_threshold }}" maxlength="5" data-toggle="tooltip" title="{{ label_warning_threshold_description }}" />
|
<input class="input-mini" type="text" id="warning_threshold" name="warning_threshold" value="{{ edit_value_warning_threshold }}" maxlength="5" data-toggle="tooltip" title="{{ label_warning_threshold_description }}" />
|
||||||
|
@ -82,13 +82,13 @@
|
||||||
<div class="control-group types typeWebsite">
|
<div class="control-group types typeWebsite">
|
||||||
<label class="control-label" for="website_username">{{ label_website_username }}</label>
|
<label class="control-label" for="website_username">{{ label_website_username }}</label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<input type="text" id="website_username" name="website_username" value="{{ edit_website_username }}" data-toggle="tooltip" title="{{ label_website_username_description }}" />
|
<input type="text" id="website_username" name="website_username" value="{{ edit_website_username }}" data-toggle="tooltip" title="{{ label_website_username_description }}" autocomplete="off" readonly onfocus="this.removeAttribute('readonly');"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="control-group types typeWebsite">
|
<div class="control-group types typeWebsite">
|
||||||
<label class="control-label" for="website_password">{{ label_website_password }}</label>
|
<label class="control-label" for="website_password">{{ label_website_password }}</label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<input type="password" id="website_password" name="website_password" value="{{ edit_website_password }}" data-toggle="tooltip" title="{{ label_website_password_description }}" />
|
<input type="password" id="website_password" name="website_password" value="{{ edit_website_password }}" data-toggle="tooltip" title="{{ label_website_password_description }}" autocomplete="off" readonly onfocus="this.removeAttribute('readonly');"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
Loading…
Reference in New Issue