Ajout du mécanisme SMS STOP pour bloquer les SMS. Mise en place de la configuration et repercussion sur les scripts d'envoi et de reception
This commit is contained in:
parent
97e564ba73
commit
a2fc344171
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
/**
|
||||
* Page des SMS STOP
|
||||
*/
|
||||
class smsstop extends Controller
|
||||
{
|
||||
/**
|
||||
* Cette fonction est appelée avant toute les autres :
|
||||
* Elle vérifie que l'utilisateur est bien connecté
|
||||
* @return void;
|
||||
*/
|
||||
public function before()
|
||||
{
|
||||
internalTools::verifyConnect();
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette fonction est alias de showAll()
|
||||
*/
|
||||
public function byDefault()
|
||||
{
|
||||
$this->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),
|
||||
));
|
||||
}
|
||||
}
|
|
@ -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');
|
||||
|
|
|
@ -60,6 +60,9 @@
|
|||
<li <?php echo $page == 'receiveds' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo $this->generateUrl('receiveds'); ?>"><i class="fa fa-fw fa-download"></i> SMS reçus</a>
|
||||
</li>
|
||||
<li <?php echo $page == 'smsstop' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo $this->generateUrl('smsstop'); ?>"><i class="fa fa-fw fa-ban"></i> SMS STOP</a>
|
||||
</li>
|
||||
<li <?php echo $page == 'events' ? 'class="active"' : ''; ?>>
|
||||
<a href="<?php echo $this->generateUrl('events'); ?>"><i class="fa fa-fw fa-clock-o"></i> Évènements</a>
|
||||
</li>
|
||||
|
|
|
@ -56,6 +56,25 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title"><i class="fa fa-ban fa-fw"></i> Activation de SMS-STOP</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form action="<?php echo $this->generateUrl('settings', 'changeSmsStop', [$_SESSION['csrf']]); ?>" method="POST">
|
||||
<div class="form-group">
|
||||
<label>SMS STOP activé : </label>
|
||||
<select name="sms_stop" class="form-control">
|
||||
<option value="0">Non</option>
|
||||
<option value="1" <?php echo RASPISMS_SETTINGS_SMS_STOP ? 'selected' : ''; ?>>Oui</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-success">Mettre à jour les données</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,91 @@
|
|||
<?php
|
||||
//Template dashboard
|
||||
$incs = new internalIncs();
|
||||
$incs->head('SMS STOP - Show All');
|
||||
?>
|
||||
<div id="wrapper">
|
||||
<?php
|
||||
$incs->nav('smsstop');
|
||||
?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<!-- Page Heading -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">
|
||||
Dashboard <small>SMS STOP</small>
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-dashboard"></i> <a href="<?php echo $this->generateUrl('dashboard'); ?>">Dashboard</a>
|
||||
</li>
|
||||
<li class="active">
|
||||
<i class="fa fa-ban"></i> SMS STOP
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.row -->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title"><i class="fa fa-ban fa-fw"></i> Liste SMS STOP</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="table-events">
|
||||
<table class="table table-bordered table-hover table-striped" id="table-sms-stop">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Numéro</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
foreach ($smsStops as $smsStop)
|
||||
{
|
||||
?>
|
||||
<tr>
|
||||
<td><?php secho($smsStop['id']); ?></td>
|
||||
<td><?php secho($smsStop['number']); ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<nav>
|
||||
<ul class="pager">
|
||||
<?php
|
||||
if ($page)
|
||||
{
|
||||
?>
|
||||
<li><a href="<?php echo $this->generateUrl('smsstop', 'showAll', array('page' => $page - 1)); ?>"><span aria-hidden="true">←</span> Précèdents</a></li>
|
||||
<?php
|
||||
}
|
||||
|
||||
$numero_page = 'Page : ' . ($page + 1);
|
||||
secho($numero_page);
|
||||
|
||||
if ($limit == $nbResults)
|
||||
{
|
||||
?>
|
||||
<li><a href="<?php echo $this->generateUrl('smsstop', 'showAll', array('page' => $page + 1)); ?>">Suivants <span aria-hidden="true">→</span></a></li>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
$incs->footer();
|
Loading…
Reference in New Issue