<?php
// Simple gateway, using the default shared secret
// This simple demo gateway is available here : https://1-2-3-4-5-6.net/smsgateway/
//Import SMSGateway classes into the global namespace
//These must be at the top of your script, not inside a function
use multiOTP\SMSGateway\SMSGateway;
// Some tricks to load the SMSGateway class in different situations
if (!class_exists('multiOTP\SMSGateway\SMSGateway')) {
if (file_exists('../src/SMSGateway.php')) {
// Quick load of SMSGateway without using composer
require_once '../src/SMSGateway.php';
} else {
// Composer autoload
require '../vendor/autoload.php';
}
}
// Create an SMSGateway instance if not done yet, and define the flat-file data folder
if (!isset($smsgateway)) {
$smsgateway = new SMSGateway();
$smsgateway->setDataPath(__DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR);
}
// Detect the URL
$url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://" .$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
// Retrieve some parameters
$command = isset($_GET["m"]) ? "m" : "";
$h = isset($_GET["h"]) ? $_GET["h"] : "";
// Correct the international format of the phone number if needed
$to = isset($_GET["to"]) ? $_GET["to"] : "";
if ("00" == substr($to, 0, 2)) {
$to = "+" . substr($to, 2, strlen($to) -2);
}
// Define a default message if needed
$message = isset($_GET["message"]) ? $_GET["message"] : "Hello World ?";
// Retrieve the device id
$id = isset($_GET["id"]) ? $_GET["id"] : "";
$device_id = $id;
if ((!empty($to)) && empty($device_id)) {
$device_id = substr(md5(uniqid("", true)), 0, 16);
} elseif ((empty($to)) && (!empty($device_id)) && (!file_exists($smsgateway->getDataPath() .$device_id))) {
$device_id = "";
}
// Calculate the device hash based on the secret
$device_h = $smsgateway->calculateAuthenticationHash($device_id);
// Check if device hash is valid for an existing device, otherwise flush the device id
if ((!empty($id)) && ($h != $device_h)) {
$device_id = "";
}
if (("m" == $command) && (!empty($device_id))) {
// Display messages resume for the "m" command
echo "<h1>SMSGateway ".$smsgateway->getVersion()."</h1>";
echo "<h2>New SMS messages received</h2>";
$new_messages_count = 0;
foreach ($smsgateway->readNewMessages($id) as $message) {
echo date("Y-m-d H:i:s", $message['sms_received'] / 1000)." ".$message['from'].": ".$message['content']. "<br />";
$new_messages_count++;
}
if (0 == $new_messages_count) {
echo "none<br />";
}
echo "<h2>All SMS messages received</h2>";
$messages_count = 0;
foreach ($smsgateway->readAllMessages($id) as $message) {
echo date("Y-m-d H:i:s", $message['sms_received'] / 1000)." ".$message['from'].": ".$message['content']. "<br />";
$messages_count++;
}
if (0 == $messages_count) {
echo "none<br />";
}
echo "<h2>All SMS messages sent</h2>";
$sent_messages_count = 0;
foreach ($smsgateway->readAllSentStatus($id) as $message) {
if ("DELIVERED" == $message['status']) {
$pre_status = "<b>";
$post_status = "</b>";
}
echo date("Y-m-d H:i:s", $message['last_update'] / 1000)." ".$message['to']." [" . $pre_status . $message['status']. $post_status . "]: ".$message['content']. "<br />";
$sent_messages_count++;
}
if (0 == $sent_messages_count) {
echo "none<br />";
}
} elseif (empty($device_id)) {
// Display basic usage info
echo "<h1>SMSGateway ".$smsgateway->getVersion()."</h1>";
echo "Please send a first message like this: <b>$url/?to=001234567890&message=Hello+world</b>";
} elseif (!empty($to)) {
// Push the message on the server
$message_id = $smsgateway->sendMessage($device_id, $to, $message);
// Display usage information
echo "<h1>SMSGateway ".$smsgateway->getVersion()."</h1>";
echo "Message '<i>$message</i>' for '$to' with id '<b>$message_id</b>' pushed on the server.";
echo "<br /><br />";
echo "If not done yet, please install the Android SMSGatewayApp available here : <a href=\"https://github.com/medic/cht-gateway/releases/latest\" target=\"blank\">medic-gateway-X.X.X-generic-release.apk</a>";
echo "<br /><br />";
echo "URL to set in the Settings of the Android App: <b>$url/?id=$device_id&h=$device_h</b>";
echo "<br />";
echo "<i>(don't forget to enable polling)</i>";
echo "<br /><br />";
echo "URL to check SMS messages: <b>$url/?id=$device_id&h=$device_h&m</b>";
echo "<br /><br />";
echo "URL to send more SMS messages: <b>$url/?id=$device_id&h=$device_h&to=001234567890&message=Hello+world</b>";
} else {
// Run the API server
$smsgateway->apiServer("secret");
}
|