The SSH host key has changed on 8 April, 2022 to this one: SHA256:573uTBSeh74kvOo0HJXi5ijdzRm8me27suzNEDlGyrQ
1
0
Fork 0

Some updates

master
Gergely Polonkai (W00d5t0ck) 10 years ago
parent 80376ff566
commit 61d0399828
  1. 12
      README.md
  2. 56
      gnokiiSMSBackend.php
  3. 8
      src/SmsGateway/Auth/DatabaseAuth.php
  4. 4
      src/SmsGateway/AuthInterface
  5. 8
      src/SmsGateway/Backend/DatabaseBackend.php
  6. 16
      src/SmsGateway/Sender/GnokiiSender.php
  7. 10
      src/SmsGateway/SenderInterface.php

@ -6,7 +6,11 @@ SmsGateway is a JSON-RPC based SMS Gateway.
Features
--------
* Sender interfaces
* Multiple SMS sending interfaces. Currently only Gnokii is supported, but
with SenderInterface, anyone can write a new one.
* Database backends
* Senders to support SMS sending as many ways as possible
* Currently only Gnokii is supported, but with SenderInterface, anyone can
write a new one.
* Authentication backends for authentication purposes
* DatabaseAuth for a PDO based backend
* NullAuth to accept everyone without a password
* Logger backends for audit and message logging
* DatabaseLogger for PDO based logging

@ -1,56 +0,0 @@
<?php
require_once 'smsBackend.php';
class gnokiiSMSBackend implements smsBackend
{
protected $gnokii_path = '/usr/bin/gnokii';
public function __construct($gnokii_path = null)
{
if ($gnokii_path !== null)
{
$this->gnokii_path = $gnokii_path;
}
if (!is_executable($this->gnokii_path))
{
throw new Exception('Gnokii executable not found (should be at ' . $this->gnokii_path . ')');
}
}
/**
* sendSMS() Sends an SMS message to the given recipient
*
* @param String $recipient
* @param String $message
* @return Boolean
*/
public function sendSMS($recipient, $message)
{
$descriptors = array(
0 => array('pipe', 'r'),
1 => array('pipe', 'w'),
2 => array('pipe', 'w'),
);
$cmd = escapeshellcmd($this->gnokii_path) . ' --sendsms ' . escapeshellarg($recipient);
$process = proc_open($cmd, $descriptors, $pipes);
if (is_resource($process))
{
fwrite($pipes[0], $message);
fclose($pipes[0]);
$stdout = stream_get_contents($pipes[1]);
$stderr = stream_get_contents($pipes[2]);
$return_value = proc_close($process);
if ($return_value != 0)
{
throw new Exception('Unable to send SMS: ' . $stderr . '; ' . $stdout);
}
}
else
{
throw new Exception('Unable to send SMS: cannot start gnokii');
}
}
}

@ -0,0 +1,8 @@
<?php
namespace SmsGateway\Backend;
use SmsGateway\AuthInterface;
class DatabaseAuth implements AuthInterface
{
}

@ -1,6 +1,6 @@
<?php
namespace SmsGateway;
interface BackendInterface
interface AuthInterface
{
}
}

@ -1,8 +0,0 @@
<?php
namespace SmsGateway\Backend;
use SmsGateway\BackendInterface;
class DatabaseBackend implements BackendInterface
{
}

@ -5,4 +5,18 @@ use SmsGateway\SenderInterface;
class GnokiiSender implements SenderInterface
{
}
private $gnokiiPath;
public function __construct($gnokiiPath)
{
$this->gnokiiPath = $gnokiiPath;
if (!is_executable($this->gnokiiPath)) {
throw new \Exception('Specified Gnokii executable is not executable by me!');
}
public function send($recipient, $message)
{
return true;
}
}

@ -3,4 +3,12 @@ namespace SmsGateway;
interface SenderInterface
{
}
/**
*
* @param string $recipient
* @param string $message
* @return boolean true upon success. On error, throws exceptions.
* @throws Exception Upon sending error. Gnokii output will be
* stored in $e->message
public function send($recipient, $message);
}

Loading…
Cancel
Save