diff --git a/lam/help/help.inc b/lam/help/help.inc index 0d356cfb3..d4d6e6c5c 100644 --- a/lam/help/help.inc +++ b/lam/help/help.inc @@ -358,10 +358,10 @@ $helpArray = [ "296" => ["Headline" => _("SMS provider"), "Text" => _("Please select the SMS provider that should be used for password and reset link sending.") ], - "297" => ["Headline" => _("SMS API key"), + "297" => ["Headline" => _("API key"), "Text" => _("Please enter the API key of your SMS provider.") ], - "298" => ["Headline" => _("SMS API token"), + "298" => ["Headline" => _("Token"), "Text" => _("Please enter the API token of your SMS provider.") ], "299" => ["Headline" => _("Mobile phone attributes"), diff --git a/lam/lib/config.inc b/lam/lib/config.inc index 422b5f8af..3767df364 100644 --- a/lam/lib/config.inc +++ b/lam/lib/config.inc @@ -2961,7 +2961,7 @@ class LAMCfgMain { public const MAIL_ATTRIBUTE_DEFAULT = 'mail'; public const MAIL_BACKUP_ATTRIBUTE_DEFAULT = 'passwordselfresetbackupmail'; - public const SMS_ATTRIBUTES_DEFAULT = 'mobileTelephoneNumber;mobile;pager'; + public const SMS_ATTRIBUTES_DEFAULT = 'mobileTelephoneNumber;mobile'; /** Default profile */ public $default; diff --git a/lam/lib/plugins/sms/GatewayApiSmsProvider.inc b/lam/lib/plugins/sms/GatewayApiSmsProvider.inc index 6876ca3cb..e69ab2d7c 100644 --- a/lam/lib/plugins/sms/GatewayApiSmsProvider.inc +++ b/lam/lib/plugins/sms/GatewayApiSmsProvider.inc @@ -63,7 +63,7 @@ class GatewayApiSmsProvider implements SmsProvider { ], "message" => $message, "label" => "LAM Pro", - "sender" => "LAM Pro" + "sender" => SmsService::SENDER_NAME ]; $postJson = json_encode($postData); curl_setopt_array($curl, [ @@ -77,7 +77,6 @@ class GatewayApiSmsProvider implements SmsProvider { 'Accept: application/json', ], ]); - logNewMessage(LOG_DEBUG, 'SMS message for: ' . $number); $response = curl_exec($curl); $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); diff --git a/lam/lib/plugins/sms/SmsApiSmsProvider.inc b/lam/lib/plugins/sms/SmsApiSmsProvider.inc index 31a8282ff..a0fbb4bb5 100644 --- a/lam/lib/plugins/sms/SmsApiSmsProvider.inc +++ b/lam/lib/plugins/sms/SmsApiSmsProvider.inc @@ -74,7 +74,6 @@ class SmsApiSms implements SmsProvider { 'Authorization: Bearer ' . $apiToken, ], ]); - logNewMessage(LOG_DEBUG, 'SMS message for: ' . $number); $response = curl_exec($curl); $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); diff --git a/lam/lib/plugins/sms/SmsService.inc b/lam/lib/plugins/sms/SmsService.inc index 97cabec0b..19e024732 100644 --- a/lam/lib/plugins/sms/SmsService.inc +++ b/lam/lib/plugins/sms/SmsService.inc @@ -38,6 +38,11 @@ use LAMException; */ class SmsService { + /** + * Sender name for SMS display. + */ + public const SENDER_NAME = 'LAM Pro'; + /** * Includes all plugin files. */ @@ -90,9 +95,21 @@ class SmsService { throw new LAMException('Provider not found'); } $provider = $providers[$providerId]; + $number = $this->cleanNumber($number); + logNewMessage(LOG_DEBUG, 'SMS message for: ' . $number); $provider->sendSms($message, $number, $apiKey, $apiToken); } + /** + * Cleans any extra characters from the telephone number. + * + * @param string $number number + * @return string cleaned value + */ + private function cleanNumber(string $number): string { + return preg_replace('/[^0-9+]+/', '', $number); + } + } /** diff --git a/lam/lib/plugins/sms/SmsboxSms.inc b/lam/lib/plugins/sms/SmsboxSms.inc new file mode 100644 index 000000000..2db0a0c94 --- /dev/null +++ b/lam/lib/plugins/sms/SmsboxSms.inc @@ -0,0 +1,101 @@ + $number, + "msg" => $message, + 'charset' => 'utf-8', + 'mode' => 'Standard', + 'strategy' => '2' + ]; + curl_setopt_array($curl, [ + CURLOPT_URL => 'https://api.smsbox.pro/1.1/api.php', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => http_build_query($postData), + CURLOPT_HTTPHEADER => [ + 'Content-Type: application/x-www-form-urlencoded', + 'Authorization: App ' . $apiKey, + ], + ]); + $response = curl_exec($curl); + $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); + curl_close($curl); + logNewMessage(LOG_DEBUG, 'SMS gateway response: ' . $response); + if (($httpCode !== 200) || ($response !== 'OK')) { + logNewMessage(LOG_ERR, 'Unable to send SMS: ' . $response); + throw new LAMException(null, ''); + } + } + + /** + * @inheritDoc + */ + public function usesApiToken(): bool { + return false; + } + + /** + * @inheritDoc + */ + public function usesApiKey(): bool { + return true; + } + +} diff --git a/lam/lib/plugins/sms/SweegoSmsProvider.inc b/lam/lib/plugins/sms/SweegoSmsProvider.inc index 597070dec..0b5de4a30 100644 --- a/lam/lib/plugins/sms/SweegoSmsProvider.inc +++ b/lam/lib/plugins/sms/SweegoSmsProvider.inc @@ -86,7 +86,6 @@ class SweegoSms implements SmsProvider { 'Api-Key: ' . $apiKey, ], ]); - logNewMessage(LOG_DEBUG, 'SMS message for: ' . $number); $response = curl_exec($curl); $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); diff --git a/lam/templates/config/mainmanage.php b/lam/templates/config/mainmanage.php index df9632ecc..ad898cced 100644 --- a/lam/templates/config/mainmanage.php +++ b/lam/templates/config/mainmanage.php @@ -768,8 +768,8 @@ if (isset($_POST['submitFormData'])) { $smsProviderSelect->setTableRowsToHide($smsOptionsToHide); $smsProviderSelect->setTableRowsToShow($smsOptionsToShow); $row->add($smsProviderSelect); - $row->add(new htmlResponsiveInputField(_('SMS API key'), 'smsApiKey', $cfg->smsApiKey, '297')); - $row->add(new htmlResponsiveInputField(_('SMS API token'), 'smsApiToken', $cfg->smsToken, '298')); + $row->add(new htmlResponsiveInputField(_('API key'), 'smsApiKey', $cfg->smsApiKey, '297')); + $row->add(new htmlResponsiveInputField(_('Token'), 'smsApiToken', $cfg->smsToken, '298')); $row->add(new htmlResponsiveInputField(_("Mobile phone attributes"), 'smsAttributes', implode(';', $cfg->getSmsAttributes()), '299')); $smsTestButtonRow = new htmlResponsiveRow(); $smsTestButton = new htmlButton('testSms', _('Test settings'));