summaryrefslogtreecommitdiff
path: root/sms/sms.class
diff options
context:
space:
mode:
Diffstat (limited to 'sms/sms.class')
-rw-r--r--sms/sms.class122
1 files changed, 122 insertions, 0 deletions
diff --git a/sms/sms.class b/sms/sms.class
new file mode 100644
index 0000000..6483035
--- /dev/null
+++ b/sms/sms.class
@@ -0,0 +1,122 @@
+<?php
+/*
+** $Id$
+**
+** ITools - the Internet Tools Library
+**
+** Copyright (C) 1995-2003 by the ITools Authors.
+** This program is free software; you can redistribute it and/or
+** modify it under the terms of either the GNU General Public License
+** or the GNU Lesser General Public License, as published by the Free
+** Software Foundation. See http://www.gnu.org/licenses/ for details.
+**
+** sms.class - SMS gateway interface (both ways) using the Minick SMS gateway
+*/
+
+class it_sms
+{
+ /* Public readonly */
+ var $service; /* Service name ("soltime", "superweb", etc.) */
+ var $keyword; /* Short number service keyword ("SOLTIME", "SW", etc.) */
+
+ var $direction; /* "IN": Handy -> it_sms; "OUT": it_sms -> Handy */
+ var $date; /* Date of message sent / received */
+
+ var $number; /* FQPhone number of other party z. B. 0041763901391 */
+ var $message; /* Message text */
+
+ var $result; /* Result of transaction or empty */
+
+ /* Private */
+ var $logfile; /* Log file name or empty for no log */
+
+
+ /* Constructor */
+ function it_sms($service, $keyword, $logfile="XX")
+ {
+ $this->service = $service;
+ $this->keyword = $keyword;
+ $this->logfile = $logfile;
+
+ if ($logfile == "XX")
+ $this->logfile = $_SERVER['DOCUMENT_ROOT']."/../log/sms.log";
+ }
+
+
+ /* Write a log file entry */
+ function log()
+ {
+ if ($this->logfile == "")
+ return;
+
+ $log = date("Y-m-d H:i:s") . " DIR=$this->direction NUMBER=$this->number RESULT=$this->result TEXT=\"$this->message\"";
+ if ($_COOKIE['UID'])
+ $log .= " UID=\"" . $_COOKIE['UID'] . "\"";
+
+ if ($file = fopen($this->logfile, "a"))
+ {
+ fwrite($file, $log . "\n");
+ fclose($file);
+ }
+ }
+
+
+ /* Send an SMS. Returns 1 on success, 0 otherwise. */
+ function send($number, $message)
+ {
+ $this->direction = "OUT";
+ $this->date = date("Y-m-d H:i:s");
+
+ /* Remove all non-digits */
+ $number = ereg_replace('[^+0-9]', '', $number);
+
+ /* Change 076 to 004176 etc. */
+ $this->number = ereg_replace('^0([1-9])', '0041\\1', $number);
+
+ $this->message = $message;
+
+ $url = "http://panther.minick.ch/cgi-bin/$this->service/send?number=$this->number&message=" . urlencode($this->keyword." ".$this->message);
+
+ /* debug("Sending SMS: $url<br>\n"); */
+
+ $result = file($url);
+ $this->result = trim($result[5]); /* "OKAY" or "NOTOK" w/o newline */
+ $this->log();
+
+ if ($this->result == "OKAY")
+ return 1; /* Success */
+
+ return 0; /* Failure */
+ }
+
+
+ /*
+ ** Receive an SMS from HTTP GET request
+ ** Format: number=Absendertelefonnummer, message=SMS-Text, id=xxxxx
+ ** Returns: 1=got a valid message, 0=got invalid garbage, ignore.
+ */
+ function receive($secret="")
+ {
+ $this->direction = "IN";
+ $this->date = date("Y-m-d H:i:s");
+
+ $this->number = $_GET['number'];
+ $this->message = $_GET['message'];
+
+ if ($_GET['id'] == $secret)
+ {
+ $this->result = "OKAY";
+ $this->log();
+ return 1;
+ }
+ else
+ {
+ $this->result = "NOTOK: Bad authentication \"".$_GET['id']."\"";
+ $this->log();
+ $this->number = $this->message = "";
+ return 0;
+ }
+ }
+
+} /* End class it_sms */
+?>