From a2fc3441711f038beafd023681f71d7874c5af06 Mon Sep 17 00:00:00 2001 From: Pierre-Lin Bonnemaison Date: Tue, 22 Sep 2015 16:04:41 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20du=20m=C3=A9canisme=20SMS=20STOP=20pour?= =?UTF-8?q?=20bloquer=20les=20SMS.=20Mise=20en=20place=20de=20la=20configu?= =?UTF-8?q?ration=20et=20repercussion=20sur=20les=20scripts=20d'envoi=20et?= =?UTF-8?q?=20de=20reception?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/internalConsole.php | 27 ++++++++++ controllers/settings.php | 42 ++++++++++++++- controllers/smsstop.php | 49 ++++++++++++++++++ createDatabase.sql | 11 +++- templates/internalIncs/nav.php | 3 ++ templates/settings/default.php | 19 +++++++ templates/smsstop/default.php | 91 +++++++++++++++++++++++++++++++++ 7 files changed, 240 insertions(+), 2 deletions(-) create mode 100755 controllers/smsstop.php create mode 100755 templates/smsstop/default.php diff --git a/controllers/internalConsole.php b/controllers/internalConsole.php index a81f383..cd14c54 100755 --- a/controllers/internalConsole.php +++ b/controllers/internalConsole.php @@ -131,9 +131,26 @@ $numbers[] = $contact['number']; } } + + $smsStops = $db->getFromTableWhere('sms_stop'); foreach ($numbers as $number) { + //Si les SMS STOP sont activés, on passe au numéro suivant si le numéro actuelle fait parti des SMS STOP + if (RASPISMS_SETTINGS_SMS_STOP) + { + foreach ($smsStops as $smsStop) + { + if (!($number == $smsStop['number'])) + { + continue; + } + + echo "Un SMS destiné au " . $number . " a été bloqué par SMS STOP\n"; + continue(2); //On passe au numéro suivant ! + } + } + echo " Envoi d'un SMS au " . $number . "\n"; //On ajoute le SMS aux SMS envoyés //Pour plus de précision, on remet la date à jour en réinstanciant l'objet DateTime (et on reformatte la date, bien entendu) @@ -183,6 +200,8 @@ continue; } + echo "Analyse du SMS " . $dir . "\n"; + //On récupère la date du SMS à la seconde près grâce au nom du fichier (Cf. parseSMS.sh) //Il faut mettre la date au format Y-m-d H:i:s $date = substr($dir, 0, 4) . '-' . substr($dir, 4, 2) . '-' . substr($dir, 6, 2) . ' ' . substr($dir, 8, 2) . ':' . substr($dir, 10, 2) . ':' . substr($dir, 12, 2); @@ -217,6 +236,14 @@ $number = internalTools::parsePhone($number); $text = $content_file[1]; + //On gère les SMS STOP + if (trim($text) == 'STOP') + { + echo 'STOP SMS detected ' . $number; + $this->wlog('STOP SMS detected ' . $number); + $db->insertIntoTable('sms_stop', ['number' => $number]); + continue; + } if (!$number) { diff --git a/controllers/settings.php b/controllers/settings.php index b95643c..f79cec8 100755 --- a/controllers/settings.php +++ b/controllers/settings.php @@ -30,7 +30,7 @@ /** * Cette fonction permet de mettre à jour l'activation ou la désactivation du transfer des SMS * @param $csrf : Le jeton CSRF - * @param string $_POST['transfer'] : Le nouveau transfer de l'utilisateur + * @param string $_POST['transfer'] : Le nouveau transfer * @return void; */ public function changeTransfer($csrf) @@ -66,4 +66,44 @@ header('Location: ' . $this->generateUrl('settings')); return true; } + + /** + * Cette fonction permet de mettre à jour l'activation ou la désactivation de SMS-STOP + * @param $csrf : Le jeton CSRF + * @param string $_POST['stop'] : Le nouveau stop + * @return void; + */ + public function changeSmsStop($csrf) + { + //On vérifie que le jeton csrf est bon + if (!internalTools::verifyCSRF($csrf)) + { + $_SESSION['errormessage'] = 'Jeton CSRF invalide !'; + header('Location: ' . $this->generateUrl('settings')); + return false; + } + + //Creation de l'object de base de données + global $db; + + if (!isset($_POST['sms_stop'])) + { + $_SESSION['errormessage'] = 'Vous devez renseigner un valeur'; + header('Location: ' . $this->generateUrl('settings')); + return false; + } + + $stop = (int)$_POST['sms_stop']; + + if (!$db->updateTableWhere('settings', ['value' => $stop], ['name' => 'sms_stop'])) + { + $_SESSION['errormessage'] = 'Impossible de mettre les données à jour.'; + header('Location: ' . $this->generateUrl('settings')); + return false; + } + + $_SESSION['successmessage'] = 'Les données ont été mises à jour.'; + header('Location: ' . $this->generateUrl('settings')); + return true; + } } diff --git a/controllers/smsstop.php b/controllers/smsstop.php new file mode 100755 index 0000000..e690075 --- /dev/null +++ b/controllers/smsstop.php @@ -0,0 +1,49 @@ +showAll(); + } + + /** + * Cette fonction retourne tous les numéros sous sms stop, sous forme d'un tableau permettant l'administration de ces numéros + * @param int $page : La page à consulter. Par défaut 0 + * @return void; + */ + public function showAll($page = 0) + { + //Creation de l'object de base de données + global $db; + + $page = (int)($page < 0 ? $page = 0 : $page); + $limit = 25; + $offset = $limit * $page; + + //Récupération des sms-stop, par paquets de $limit, en ignorant les $offset premiers + $smsStops = $db->getFromTableWhere('sms_stop', [], false, true, $limit, $offset); + + $this->render('smsstop/default', array( + 'smsStops' => $smsStops, + 'page' => $page, + 'limit' => $limit, + 'nbResults' => count($smsStops), + )); + } + } diff --git a/createDatabase.sql b/createDatabase.sql index 9d0d114..31f72a3 100755 --- a/createDatabase.sql +++ b/createDatabase.sql @@ -135,6 +135,15 @@ CREATE TABLE IF NOT EXISTS transfers FOREIGN KEY (id_received) REFERENCES receiveds (id) ON DELETE CASCADE ON UPDATE CASCADE ); +CREATE TABLE IF NOT EXISTS sms_stop +( + id INT NOT NULL AUTO_INCREMENT, + number VARCHAR(12) NOT NULL, + PRIMARY KEY (id), + UNIQUE (number) +); + #On insert les données par défaut dans les settings INSERT INTO settings (name, value) -VALUES ('transfer', '1'); +VALUES ('transfer', '1'), +VALUES ('sms_stop', '1'); diff --git a/templates/internalIncs/nav.php b/templates/internalIncs/nav.php index bd57133..024226d 100755 --- a/templates/internalIncs/nav.php +++ b/templates/internalIncs/nav.php @@ -60,6 +60,9 @@
  • > SMS reçus
  • +
  • > + SMS STOP +
  • > Évènements
  • diff --git a/templates/settings/default.php b/templates/settings/default.php index c0643b0..66b9350 100755 --- a/templates/settings/default.php +++ b/templates/settings/default.php @@ -56,6 +56,25 @@
    +
    +
    +

    Activation de SMS-STOP

    +
    +
    +
    +
    + + +
    +
    + +
    +
    +
    +
    diff --git a/templates/smsstop/default.php b/templates/smsstop/default.php new file mode 100755 index 0000000..bb5c36c --- /dev/null +++ b/templates/smsstop/default.php @@ -0,0 +1,91 @@ +head('SMS STOP - Show All'); +?> +
    +nav('smsstop'); +?> +
    +
    + +
    +
    +

    + Dashboard SMS STOP +

    + +
    +
    + + +
    +
    +
    +
    +

    Liste SMS STOP

    +
    +
    +
    + + + + + + + + + + + + + + + +
    #Numéro
    +
    + +
    +
    +
    +
    +
    +
    +
    + +footer();