diff --git a/src/includes/functions.inc.php b/src/includes/functions.inc.php index e6328095..2670a12e 100644 --- a/src/includes/functions.inc.php +++ b/src/includes/functions.inc.php @@ -556,6 +556,9 @@ function psm_build_sms() { case 'smsgw': $sms = new \psm\Txtmsg\Smsgw(); break; + case 'twilio': + $sms = new \psm\Txtmsg\Twilio(); + break; } // copy login information from the config file @@ -786,4 +789,3 @@ class telegram return $this->sendurl(); } } - diff --git a/src/lang/bg_BG.lang.php b/src/lang/bg_BG.lang.php index 6cfb5f80..1b4f4599 100644 --- a/src/lang/bg_BG.lang.php +++ b/src/lang/bg_BG.lang.php @@ -254,7 +254,7 @@ $sm_lang = array( 'email_sent' => 'Тестовия имейл е изпратен успешно.', 'email_error' => 'Възникна грешка при изпращането на тесовия имейл', 'sms_sent' => 'Тестовото SMS съобщение е изпратеното успешно.', - 'sms_error' => 'Възникна грешка при изпращането на тестовия SMS', + 'sms_error' => 'Възникна грешка при изпращането на тестовия SMS. %s', 'sms_error_nomobile' => 'Неуспешно изпращане на тестов SMS: не е намерен валиден телефонен номер във вашия профил.', 'pushover_sent' => 'Pushover тестово известие', 'pushover_error' => 'Възникна грешка при изпращане на тестово Pushover известие: %s', diff --git a/src/lang/cs_CZ.lang.php b/src/lang/cs_CZ.lang.php index a2f5c007..6d721b54 100644 --- a/src/lang/cs_CZ.lang.php +++ b/src/lang/cs_CZ.lang.php @@ -267,7 +267,7 @@ $sm_lang = array( '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', + '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', diff --git a/src/lang/da_DK.lang.php b/src/lang/da_DK.lang.php index 15861c76..efa54f53 100644 --- a/src/lang/da_DK.lang.php +++ b/src/lang/da_DK.lang.php @@ -251,7 +251,7 @@ $sm_lang = array( 'email_sent' => 'E-mail sendt', 'email_error' => 'Fejl ved afsendelse af e-mail', 'sms_sent' => 'Sms sendt', - 'sms_error' => 'Fejl ved afsendelse af SMS', + 'sms_error' => 'Fejl ved afsendelse af SMS. %s', 'sms_error_nomobile' => 'Ikke muligt at sende SMS: Intet gyldigt telefonnummer blev fundet i din profil.', 'pushover_sent' => 'Pushover notifikation blev sendt', 'pushover_error' => 'En fejl opstod under afsendelse af Pushover notifikation: %s', diff --git a/src/lang/de_DE.lang.php b/src/lang/de_DE.lang.php index 1346c86e..818b1876 100644 --- a/src/lang/de_DE.lang.php +++ b/src/lang/de_DE.lang.php @@ -255,7 +255,7 @@ $sm_lang = array( 'email_sent' => 'E-Mail gesendet.', 'email_error' => 'Beim Versand der E-Mail trat ein Fehler auf.', 'sms_sent' => 'SMS-Nachricht gesendet.', - 'sms_error' => 'Beim Versand der SMS-Nachricht trat ein Fehler auf.', + 'sms_error' => 'Beim Versand der SMS-Nachricht trat ein Fehler auf. %s', 'sms_error_nomobile' => 'Versand der SMS-Nachricht nicht möglich: Es wurde keine gültige Telefonnummer in Ihrem Profil hinterlegt.', 'pushover_sent' => 'Pushover-Benachrichtigung versendet', 'pushover_error' => 'Beim Versand der Pushover-Benachrichtigung trat ein Fehler auf: %s', diff --git a/src/lang/en_US.lang.php b/src/lang/en_US.lang.php index b9df5874..68844d61 100644 --- a/src/lang/en_US.lang.php +++ b/src/lang/en_US.lang.php @@ -240,6 +240,7 @@ $sm_lang = array( 'sms_gateway_clicksend' => 'ClickSend', 'sms_gateway_nexmo' => 'Nexmo', 'sms_gateway_smsgw' => 'SMSgw', + 'sms_gateway_twilio' => 'Twilio', 'sms_gateway_username' => 'Gateway username', 'sms_gateway_password' => 'Gateway password', 'sms_from' => 'Sender\'s phone number', @@ -302,7 +303,7 @@ $sm_lang = array( 'email_sent' => 'Email sent', 'email_error' => 'Error in email sending', 'sms_sent' => 'Sms sent', - 'sms_error' => 'Error in sms sending', + 'sms_error' => 'An error has occurred while sending the SMS: %s', 'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.', 'pushover_sent' => 'Pushover notification sent', 'pushover_error' => 'An error has occurred while sending the Pushover notification: %s', @@ -359,4 +360,3 @@ $sm_lang = array( '401_unauthorized_description' => 'You do not have the privileges to view this page.', ), ); - diff --git a/src/lang/es_ES.lang.php b/src/lang/es_ES.lang.php index 76fed0f4..4e1534d3 100644 --- a/src/lang/es_ES.lang.php +++ b/src/lang/es_ES.lang.php @@ -258,7 +258,7 @@ $sm_lang = array( 'email_sent' => 'Email enviado', 'email_error' => 'Error al enviar el email', 'sms_sent' => 'SMS enviado', - 'sms_error' => 'Error al enviar el SMS', + 'sms_error' => 'Error al enviar el SMS. %s', 'sms_error_nomobile' => 'No se puede enviar SMS de prueba: no hay ningún número de teléfono válido en su perfil.', 'pushover_sent' => 'Notificación Pushover enviada', 'pushover_error' => 'Error al enviar la notificación Pushover: %s', diff --git a/src/lang/et_ET.lang.php b/src/lang/et_ET.lang.php index ef6180ff..f2519f73 100644 --- a/src/lang/et_ET.lang.php +++ b/src/lang/et_ET.lang.php @@ -252,7 +252,7 @@ $sm_lang = array( 'email_sent' => 'Email saadetud', 'email_error' => 'Emaili saatmisel esines error', 'sms_sent' => 'Sms saadetud', - 'sms_error' => 'Smsi saatmisel esines error', + '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', diff --git a/src/lang/fa_IR.lang.php b/src/lang/fa_IR.lang.php index 5819147b..70639399 100644 --- a/src/lang/fa_IR.lang.php +++ b/src/lang/fa_IR.lang.php @@ -252,7 +252,7 @@ $sm_lang = array( 'email_sent' => 'ایمیل ارسال شد', 'email_error' => 'خطا در ارسال ایمیل', 'sms_sent' => 'پیامک ارسال شد', - 'sms_error' => 'خطا در ارسال پیامک', + 'sms_error' => '%s خطا در ارسال پیامک', 'sms_error_nomobile' => 'قادر به ارسال پیامک تستی نیستیم: شماره تلفن معتبر در پروفایل شما یافته نشد.', 'pushover_sent' => 'اطلاعیه پوش آور ارسال شد.', 'pushover_error' => 'یک خطا در هنگام ارسال اطلاعیه پوش آور رخ داده است: %s', diff --git a/src/lang/fi_FI.lang.php b/src/lang/fi_FI.lang.php index 7d90e7ec..74f4de41 100644 --- a/src/lang/fi_FI.lang.php +++ b/src/lang/fi_FI.lang.php @@ -252,7 +252,7 @@ $sm_lang = array( '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ä', + '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', diff --git a/src/lang/fr_FR.lang.php b/src/lang/fr_FR.lang.php index c91dcabe..be70cf5d 100644 --- a/src/lang/fr_FR.lang.php +++ b/src/lang/fr_FR.lang.php @@ -256,7 +256,7 @@ $sm_lang = array( 'email_sent' => 'Email envoyé', 'email_error' => 'Erreur lors de l\'envoi de l\'email', 'sms_sent' => 'Sms envoyé', - 'sms_error' => 'Erreur lors de l\'envoi du SMS', + 'sms_error' => 'Erreur lors de l\'envoi du SMS. %s', 'sms_error_nomobile' => 'Impossible d\'envoyer un SMS de test: aucun numéro de téléphone défini dans votre profil.', 'pushover_sent' => 'Notification Pushover envoyée', 'pushover_error' => 'Une erreur s\'est produite lors de l\'envoi de la notification Pushover : %s', diff --git a/src/lang/it_IT.lang.php b/src/lang/it_IT.lang.php index 6f274c33..2396b8dc 100644 --- a/src/lang/it_IT.lang.php +++ b/src/lang/it_IT.lang.php @@ -254,7 +254,7 @@ $sm_lang = array( 'email_sent' => 'Email inviata', 'email_error' => 'Errore in invio Email', 'sms_sent' => 'SMS inviato', - 'sms_error' => 'Errore in invio SMS', + 'sms_error' => 'Errore in invio SMS. %s', 'sms_error_nomobile' => 'Impossibile inviare SMS: nessun numero di telefono valido inserito nel tuo profilo.', 'pushover_sent' => 'Notifica Pushover inviata', 'pushover_error' => 'Riscontrato un errore durante l\'invio della notifica Pushover: %s', diff --git a/src/lang/ja_JP.lang.php b/src/lang/ja_JP.lang.php index a91e337c..4e66fe14 100644 --- a/src/lang/ja_JP.lang.php +++ b/src/lang/ja_JP.lang.php @@ -277,7 +277,7 @@ $sm_lang = array( 'email_sent' => 'メールが送信されました', 'email_error' => 'メールを送信中にエラーが発生しました', 'sms_sent' => 'SMSが送信されました', - 'sms_error' => 'SMSを送信中にエラーが発生しました', + 'sms_error' => 'SMSを送信中にエラーが発生しました %s', 'sms_error_nomobile' => 'テストSMSの送信に失敗: あなたのプロフィールに有効な電話番号がありません', 'pushover_sent' => 'プッシュオーバー通知が送信されました', 'pushover_error' => 'プッシュオーバー通知を送信中にエラーが発生しました: %s', diff --git a/src/lang/ko_KR.lang.php b/src/lang/ko_KR.lang.php index f2a6b956..b04b6348 100644 --- a/src/lang/ko_KR.lang.php +++ b/src/lang/ko_KR.lang.php @@ -254,7 +254,7 @@ $sm_lang = array( 'email_sent' => 'Email sent', 'email_error' => 'Error in email sending', 'sms_sent' => 'Sms sent', - 'sms_error' => 'Error in sms sending', + 'sms_error' => 'Error in sms sending. %s', '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', diff --git a/src/lang/nl_NL.lang.php b/src/lang/nl_NL.lang.php index 5af0392c..fa5852fe 100644 --- a/src/lang/nl_NL.lang.php +++ b/src/lang/nl_NL.lang.php @@ -254,7 +254,7 @@ $sm_lang = array( 'email_sent' => 'Email verzonden', 'email_error' => 'Er is een fout opgetreden tijdens het verzenden', 'sms_sent' => 'SMS verzonden', - 'sms_error' => 'Er is een fout opgetreden tijdens het verzenden', + 'sms_error' => 'Er is een fout opgetreden tijdens het verzenden. %s', 'sms_error_nomobile' => 'Kan test SMS niet verzenden: er is geen telefoonnummer ingevuld in je profiel.', 'pushover_sent' => 'Pushover notificatie verzonden', 'pushover_error' => 'De volgende fout is opgetreden bij het versturen van de Pushover notificatie: %s', diff --git a/src/lang/pl_PL.lang.php b/src/lang/pl_PL.lang.php index 57e90e68..d3e8481a 100644 --- a/src/lang/pl_PL.lang.php +++ b/src/lang/pl_PL.lang.php @@ -254,7 +254,7 @@ $sm_lang = array( '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', + '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.', 'pushover_sent' => 'Powiadomienie Pushover wysłane.', 'pushover_error' => 'Błąd podczas wysyłania powiadomienia Pushover: %s', diff --git a/src/lang/pt_BR.lang.php b/src/lang/pt_BR.lang.php index dcf36e16..c52c487e 100644 --- a/src/lang/pt_BR.lang.php +++ b/src/lang/pt_BR.lang.php @@ -257,7 +257,7 @@ $sm_lang = array( 'email_sent' => 'Email enviado', 'email_error' => 'Erro no envio do email', 'sms_sent' => 'Sms enviado', - 'sms_error' => 'Error no envio do SMS', + 'sms_error' => 'Error no envio do SMS. %s', 'sms_error_nomobile' => 'Não foi possível enviar SMS de teste: nenhum número de telefone válido encontrado em seu perfil.', 'pushover_sent' => 'Notificação Pushover enviada', 'pushover_error' => 'Um erro foi encontrado ao enviar a notificação Pushover: %s', diff --git a/src/lang/ru_RU.lang.php b/src/lang/ru_RU.lang.php index 581f105d..886efb13 100644 --- a/src/lang/ru_RU.lang.php +++ b/src/lang/ru_RU.lang.php @@ -254,7 +254,7 @@ $sm_lang = array( 'email_sent' => 'Сообщение отправлено', 'email_error' => 'Ошибка при отправке сообщения', 'sms_sent' => 'SMS отправлено', - 'sms_error' => 'Ошибка при отправке SMS', + 'sms_error' => 'Ошибка при отправке SMS. %s', 'sms_error_nomobile' => 'Не удалось отправить пробный SMS: действительный телефонный номер не был найден в вашем профиле.', 'pushover_sent' => 'Pushover уведомление отправлено', 'pushover_error' => 'Произошла ошибка во время отправки Pushover уведомления: %s', diff --git a/src/lang/sk_SK.lang.php b/src/lang/sk_SK.lang.php index 388edc8e..40cd4d49 100644 --- a/src/lang/sk_SK.lang.php +++ b/src/lang/sk_SK.lang.php @@ -268,7 +268,7 @@ $sm_lang = array( 'email_sent' => 'E-mail odoslaný', 'email_error' => 'Chyba pri odosielaní e-mailu', 'sms_sent' => 'SMS odoslaná', - 'sms_error' => 'Chyba pri odosielaní SMS', + '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', diff --git a/src/lang/sl_SI.lang.php b/src/lang/sl_SI.lang.php index a63033ac..42e8266d 100644 --- a/src/lang/sl_SI.lang.php +++ b/src/lang/sl_SI.lang.php @@ -249,7 +249,7 @@ $sm_lang = array( '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', + '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', diff --git a/src/lang/sv_SE.lang.php b/src/lang/sv_SE.lang.php index a12888ed..a79e89e1 100644 --- a/src/lang/sv_SE.lang.php +++ b/src/lang/sv_SE.lang.php @@ -253,7 +253,7 @@ $sm_lang = array( 'email_sent' => 'Email skickat', 'email_error' => 'Sändning av email misslyckades', 'sms_sent' => 'Sms skickat', - 'sms_error' => 'Sändning av SMS misslyckades', + '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', diff --git a/src/lang/tr_TR.lang.php b/src/lang/tr_TR.lang.php index eff265e1..43ab1e99 100644 --- a/src/lang/tr_TR.lang.php +++ b/src/lang/tr_TR.lang.php @@ -254,7 +254,7 @@ $sm_lang = array( 'email_sent' => 'E-posta gönderildi', 'email_error' => 'E-posta gönderiminde hata.', 'sms_sent' => 'Sms gönderildi', - 'sms_error' => 'SMS gönderiminde hata', + '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', diff --git a/src/lang/vi_VN.lang.php b/src/lang/vi_VN.lang.php index 92a745d7..dea17622 100644 --- a/src/lang/vi_VN.lang.php +++ b/src/lang/vi_VN.lang.php @@ -249,7 +249,7 @@ $sm_lang = array( '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' => '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', diff --git a/src/lang/zh_CN.lang.php b/src/lang/zh_CN.lang.php index 1931f8df..736def15 100644 --- a/src/lang/zh_CN.lang.php +++ b/src/lang/zh_CN.lang.php @@ -273,7 +273,7 @@ $sm_lang = array( 'email_sent' => '发送邮件', 'email_error' => '发送出错', 'sms_sent' => '发送短信', - 'sms_error' => '短信发送出错', + 'sms_error' => '短信发送出错 %s', 'sms_error_nomobile' => '无法发送短信: 您的账号未设置有效手机号码.', 'pushover_sent' => '发送Pushover通知', 'pushover_error' => 'Pushover通知发送出错: %s', diff --git a/src/psm/Module/Config/Controller/ConfigController.php b/src/psm/Module/Config/Controller/ConfigController.php index c8e77dab..d0d80e2c 100644 --- a/src/psm/Module/Config/Controller/ConfigController.php +++ b/src/psm/Module/Config/Controller/ConfigController.php @@ -247,10 +247,11 @@ class ConfigController extends AbstractController { $this->addMessage(psm_get_lang('config', 'sms_error_nomobile'), 'error'); } else { $sms->addRecipients($user->mobile); - if($sms->sendSMS(psm_get_lang('config', 'test_message'))) { + $result = $sms->sendSMS(psm_get_lang('config', 'test_message')); + if($result === 1) { $this->addMessage(psm_get_lang('config', 'sms_sent'), 'success'); } else { - $this->addMessage(psm_get_lang('config', 'sms_error'), 'error'); + $this->addMessage(sprintf(psm_get_lang('config', 'sms_error'), $result), 'error'); } } } @@ -376,6 +377,7 @@ class ConfigController extends AbstractController { '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_clicksend' => psm_get_lang('config', 'sms_gateway_clicksend'), + 'label_sms_gateway_twilio' => psm_get_lang('config', 'sms_gateway_twilio'), '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'), diff --git a/src/psm/Txtmsg/Twilio.php b/src/psm/Txtmsg/Twilio.php new file mode 100644 index 00000000..04d25832 --- /dev/null +++ b/src/psm/Txtmsg/Twilio.php @@ -0,0 +1,77 @@ +. + * + * @package phpservermon + * @author Tim Zandbergen + * @copyright Copyright (c) 2008-2018 Pepijn Over + * @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3 + * @version Release: @package_version@ + * @link http://www.phpservermonitor.org/ + **/ + +namespace psm\Txtmsg; + +class Twilio extends Core { + + /** + * Send sms using the Twilio API + * https://www.twilio.com/docs/sms/api#send-an-sms-with-the-sms-api + * @var string $message + * @var array $this->recipients + * @var string $recipient + * @var string $this->username + * @var string $this->password + * @var string $this->originator + * @var int $success + * @var string $error + * @return int or string + */ + public function sendSMS($message) { + $success = 1; + $error = ''; + + foreach($this->recipients as $recipient) { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, "https://api.twilio.com/2010-04-01/Accounts/".$this->username."/Messages.json"); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, "From=".urlencode($this->originator)."&Body=".urlencode($message)."&To=".urlencode($recipient)); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_USERPWD, $this->username . ":" . $this->password); + + $headers = array(); + $headers[] = "Content-Type: application/x-www-form-urlencoded"; + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + + $result = curl_exec($ch); + curl_close($ch); + + // When the result string starts with {"code": there is a problem + if (strpos($result, "{\"code\":") === 0) { + $error = $result; + $success = 0; + } + } + if($success == 1){ + return 1; + } + else{ + return $error; + } + } +} diff --git a/src/templates/default/module/config/config.tpl.html b/src/templates/default/module/config/config.tpl.html index 344adbf6..d60eab4c 100644 --- a/src/templates/default/module/config/config.tpl.html +++ b/src/templates/default/module/config/config.tpl.html @@ -202,6 +202,7 @@ +