diff --git a/docs/credits.rst b/docs/credits.rst index 83ee5bf7..e34fee17 100644 --- a/docs/credits.rst +++ b/docs/credits.rst @@ -93,6 +93,10 @@ The following people have contributed to the development of PHP Server Monitor: * Discord webhook support +* Łukasz Szczepański - https://github.com/NixNotCastey + + * PromoSMS gateway + Translators +++++++++++ diff --git a/src/includes/functions.inc.php b/src/includes/functions.inc.php index 59717599..6a70408f 100644 --- a/src/includes/functions.inc.php +++ b/src/includes/functions.inc.php @@ -799,6 +799,9 @@ namespace { case 'smsapi': $sms = new \psm\Txtmsg\SMSAPI(); break; + case 'promosms': + $sms = new \psm\Txtmsg\PromoSMS(); + break; } // copy login information from the config file diff --git a/src/psm/Txtmsg/PromoSMS.php b/src/psm/Txtmsg/PromoSMS.php new file mode 100644 index 00000000..ccb024bb --- /dev/null +++ b/src/psm/Txtmsg/PromoSMS.php @@ -0,0 +1,93 @@ +. + * + * @package phpservermon + * @author Łukasz Szczepański + * @copyright Copyright (c) 2008-2017 Pepijn Over + * @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3 + * @version Release: @package_version@ + * @link http://www.phpservermonitor.org/ + * @since phpservermon 3.5 + **/ + +namespace psm\Txtmsg; + +class PromoSMS extends Core +{ + + /** + * Send sms using the PromoSMS API + * + * @var string $message + * @var string $this->password + * @var array $this->recipients + * @var array $headers + * + * @var resource $curl + * @var string $err + * @var int $success + * @var string $error + * + * @return bool|string + */ + + public function sendSMS($message) + { + $error = ""; + $success = 1; + + $headers = array(); + $headers[] = "Content-Type: application/x-www-form-urlencoded"; + $headers[] = "Accept: text/json"; + $headers[] = 'Authorization: Basic ' . base64_encode($this->username . ':' . $this->password); + + $curl = curl_init(); + curl_setopt_array($curl, array( + CURLOPT_URL => "https://promosms.com/api/rest/v3_2/sms", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_POST => true, + CURLOPT_HTTPHEADER => $headers, + CURLOPT_POSTFIELDS => http_build_query(array( + 'text' => htmlspecialchars($message), + 'type' => 1, + 'recipients' => $this->recipients, + )) + )); + + $result = curl_exec($curl); + $httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE); + $err = curl_errno($curl); + + if ($err != 0 || ($httpcode != '200' && $httpcode != '201' && $httpcode != '202' && $result != "1")) { + $success = 0; + $error = "HTTP_code: " . $httpcode . ".\ncURL error (" . $err . "): " . + curl_strerror($err) . ". Result: " . $result . ""; + } + curl_close($curl); + + if ($success) { + return 1; + } + return $error; + } +} \ No newline at end of file