From 61d039982818127941f200cf825588e852e5018c Mon Sep 17 00:00:00 2001 From: "Gergely Polonkai (W00d5t0ck)" Date: Tue, 25 Sep 2012 19:20:56 +0200 Subject: [PATCH] Some updates --- README.md | 12 ++-- gnokiiSMSBackend.php | 56 ------------------- src/SmsGateway/Auth/DatabaseAuth.php | 8 +++ .../{BackendInterface.php => AuthInterface} | 4 +- src/SmsGateway/Backend/DatabaseBackend.php | 8 --- src/SmsGateway/Sender/GnokiiSender.php | 16 +++++- src/SmsGateway/SenderInterface.php | 10 +++- 7 files changed, 42 insertions(+), 72 deletions(-) delete mode 100644 gnokiiSMSBackend.php create mode 100644 src/SmsGateway/Auth/DatabaseAuth.php rename src/SmsGateway/{BackendInterface.php => AuthInterface} (52%) delete mode 100644 src/SmsGateway/Backend/DatabaseBackend.php diff --git a/README.md b/README.md index 63c8d41..4ddd730 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/gnokiiSMSBackend.php b/gnokiiSMSBackend.php deleted file mode 100644 index 1a8da93..0000000 --- a/gnokiiSMSBackend.php +++ /dev/null @@ -1,56 +0,0 @@ -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'); - } - } -} - diff --git a/src/SmsGateway/Auth/DatabaseAuth.php b/src/SmsGateway/Auth/DatabaseAuth.php new file mode 100644 index 0000000..c03ec50 --- /dev/null +++ b/src/SmsGateway/Auth/DatabaseAuth.php @@ -0,0 +1,8 @@ +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; + } +} diff --git a/src/SmsGateway/SenderInterface.php b/src/SmsGateway/SenderInterface.php index c21a301..df4bf3f 100644 --- a/src/SmsGateway/SenderInterface.php +++ b/src/SmsGateway/SenderInterface.php @@ -3,4 +3,12 @@ namespace SmsGateway; interface SenderInterface { -} \ No newline at end of file + /** + * + * @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); +}