par Anne-Laure DELPECH | 12 Nov 2016 | Archives
Cet exemple est mis en ligne pour illustrer l’article Déclarer ses fichiers à la CNIL pour les sites sans aucune activité marchande, qui sont dispensés de déclaration CNIL . Pour les activités faisant l’objet d’une déclaration simplifiée voir les exemples de mentions légales pour une société, et pour une entreprise individuelle.
Attention, je ne garantis pas leur conformité légale. A ma connaissance elles sont conformes aux règles en vigueur au 18 octobre 2016 mais vous devriez consulter un avocat avant de les mettre en ligne.
Je vous autorise à copier tout ou partie de ce texte.
Editeur
|
Ce site internet est édité par :
Prénom NOM, ADRESSE
Tél TEL – MAIL
Directeur de la publication : DIRECTEUR |
Copyrights
|
Droits d’auteur / Copyright : ORGANISME
L’accès au site SITE vous confère un droit d’usage privé et non exclusif de ce site. Le présent site et l’ensemble des éléments qui y sont édités incluant notamment les textes, photographies, illustrations, logos, marques, … sont la propriété de ORGANISME au titre des législations sur les droits d’auteur et de la propriété intellectuelle.
Sauf autorisation expresse du Directeur de la publication, la modification, la reproduction, la représentation et le téléchargement de tout ou partie de ce site, sur quelque support que ce soit, pour un usage autre que privé, sont interdits. |
Hébergement
|
OVH, Siège social : 2 rue Kellermann – 59100 Roubaix – France |
Données personnelles
|
Les données personnelles recueillies à partir de tout formulaire de ce site font l’objet d’un traitement informatique destiné à DIRECTEUR (gérante de l’entreprise) pour répondre aux demandes de contact ou pour envoyer une lettre d’information hebdomadaire.
Conformément à la loi « informatique et libertés » du 6 janvier 1978 modifiée, vous disposez d’un droit d’accès et de rectification aux informations qui vous concernent.
Vous pouvez accéder aux informations vous concernant en vous adressant à : MAIL. Pour en savoir plus, consultez vos droits sur le site de la CNIL. |
Déclaration CNIL
|
Le site SITE fait l’objet d’une dispense de déclaration à la CNIL (Dispense n°7 : Délibération n°2006-138 du 9 mai 2006 décidant de la dispense de déclaration des traitements constitués à des fins d’information ou de communication externe). |
CGV
|
Sans (site non marchand) |
par Anne-Laure DELPECH | 5 Nov 2016 | Archives
Je n’ai plus de VPS Plesk depuis un bout de temps. Je laisse cet article en ligne pour information mais je ne pourrai pas répondre aux questions éventuelles.
Nous avons déjà vu comment transformer un site http en site https dans l’article migration d’un site WordPress en http vers https (SSL). Ici nous allons voir comment faire dans un hébergement Plesk VPS Classic de chez OVH. Il y a de petites différences avec un site d’un hébergement mutualisé OVH.
L’intérêt de passer en https
J’invite tous les anglophones à lire attentivement cet article de Wired. Il explique bien pourquoi tous les propriétaires de site devraient immédiatement chercher à passer leurs sites en https. Mais il va plus loin en montrant l’importance de l’interface utilisateur pour que les internautes comprennent les risques pris lorsqu’ils intéragissent avec un site non crypté. Le témoignage de l’Iranien est particulièrement édifiant.
https://www.wired.com/2016/11/googles-chrome-hackers-flip-webs-security-model/
Obtenir un certificat SSL Let’s encrypt
La documentation de Plesk est incomplète sur ce sujet, mais le processus est très simple.
Il suffit de cliquer sur le lien « Let’s Encrypt » :

Pour les réglages, je coche « inclure www.domaine.com » même si je redirige www sur la version sans préfixe (attention ça n’est pas coché dans la copie d’écran ci-dessous mais il faut le faire) :

Une fois qu’on a cliqué sur « installer », on a au bout de quelques secondes un message en vert disant que le certificat est installé.
Transformer un site en HTTPS
On peut suivre les instructions, à partir de l’étape 2 de l’article initial migration d’un site WordPress en http vers https (SSL).
le contenu à ajouter dans .htaccess fonctionne aussi dans Plesk.
Et maintenant ?
Il faut vérifier que les redirections fonctionnent correctement. Un internaute doit pouvoir taper les url suivantes et être dirigé vers le site https://mon-domaine.com :
- www.mon-domaine.com
- mon-domaine.com
- http://mon-domaine.com
- mon-domaine.com/wp-login.php (ou wp-admin.php)
Une fois ces vérifications faites, ça y est, on a un site moderne et sécurisé.
par Anne-Laure DELPECH | 2 Nov 2016 | Archives
Dans un article précédent (Cron Job sur un hébergement mutualisé OVH), j’ai expliqué comment exécuter un script périodiquement, et automatiquement, dans un hébergement mutualisé OVH pro. Nous allons voir comment le faire sur un serveur mutualisé Plesk (Offre VPS Classic d’OVH).
Documentation Plesk : Planifier des tâches.
Le fichier à exécuter périodiquement
J’utilise le fichier /domicile.mon-domaine.com/cron-suivi-pi.php. Son contenu est semblable à celui de l’article précédent. Ce fichier m’envoie un mail lorsqu’il s’exécute et que certaines conditions sont réunies.
Je l’ai vérifié en plaçant http://domicile.mon-domaine.com/cron-suivi-pi.php dans un navigateur. Il n’y a pas d’erreurs et les « echo » s’affichent sur la page.
Nota : on a intérêt à activer l’affichage des erreurs : en étant administrateur, aller dans paramètres PHP et mettre display_errors sur « on ».
Réglage des tâches planifiées
Dans l’interface Plesk, Sites Web & Domaines > tâches planifiées, on peut régler le fuseau horaire des taches planifiées :

Plesk, tâche planifiée : régler le fuseau horaire
Planifier la tache
C’est incroyablement simple, ça se passe de commentaires !
La seule chose qui peut être compliquée, c’est si on veut planifier « cron style », comme ici. Pour définir l’heure, on peut alors s’aider de ce générateur de commande cron ou cet autre générateur.

Plesk, régler une tâche planifiée (cron)
Vérifier
Dans la liste des tâches planifiées, cliquer sur « exécuter maintenant ».

Plesk, exécuter maintenant un cron
Si tout s’est bien passé : un message sur fond vert dans Plesk et pas de mail d’erreur reçu et le mail prévu s’est envoyé (si les conditions sont réunies).
Et voilà, encore une nouvelle manip dans Plesk qui est maîtrisée ! Pour tout savoir sur la prise en main de Plesk, lire les autres articles de cette série Démarrer avec un hébergement VPS Plesk d’OVH.
par Anne-Laure DELPECH | 2 Nov 2016 | Archives
Ce tutoriel explique comment ajouter des événements dans un agenda Google à partir d’un script PHP sur Raspberry Pi. Le script demande l’autorisation de se connecter à l’agenda puis, une fois l’autorisation accordée, crée des événements sur l’agenda lorsqu’on le souhaite.
Nous avons créé un agenda « Pi Nautilus » dans l’article Raspberry Pi : envoyer des SMS sans 3G et gratuitement. Cet article explique également comment installer PHP sur un Pi si c’est nécessaire.
Nous allons maintenant écrire un programme, en PHP, qui créera automatiquement un événement dans l’agenda Google.
Télécharger le client PHP de l’API Google
Dans ce dépôt GitHub, suivre les instructions « Download the release » :
- cliquer sur le lien ‘the releases’
- dans le chapitre « Downloads », sélectionner un fichier qui a un nom du genre google-api-php-client-[RELEASE_NAME].zip (pour moi google-api-php-client-2.0.3_PHP54.zip)
- extraire le fichier zip
- Copier les fichiers extraits dans un répertoire php-google-api-client (placé dans notre répertoire de travail, pour moi /home/jf/exec).
Paramétrer un projet dans la console Google Api
La principale source d’informations que j’ai utilisé est PHP Quickstart, par Google.
Se connecter à la console Google API.
Créer un projet
Créer un projet, par exemple « Api Google Calendar » (noter le nom choisi)

Créer un projet dans la console Google Api
Activer l’API Google Calendar

Activer l’API Google Calendar
Obtenir des identifiants
Au sein du projet, aller dans le menu « identifiants ». Ne pas cliquer sur la fenêtre « API identifiants » mais aller dans l’onglet « Ecran d’autorisation OAuth ».

Google calendar API : écran d’autorisation OAuth
Maintenant, on peut cliquer sur le bouton « créer des identifiants », on choisit « ID client OAuth » puis « autre ». On lui donne un nom « client Pi calendar » et on crée l’ID :

Google calendar API : ajouter un client
Une fois le client créé, une fenêtre s’affiche avec notre ID client et son code secret. Les copier et les coller dans un document. On voit maintenant une liste des clients créés. Télécharger le fichier JSON en cliquant sur le bouton à droite de la ligne :

Google calendar API : télécharger la clé JSON
La clé doit être placée dans un répertoire /home/jf/exec/certificates et renommée client_secret.json .
On en profite pour créer un répertoire /home/jf/exec/credentials , qui doit être vide.
Vérifier l’organisation du répertoire de travail
Mon répertoire de travail est /home/jf/exec.
A l’intérieur, j’y trouve trois répertoires :
- certificates, qui contient client_secret.json ;
- credentials, qui est vide pour l’instant ;
- php-google-api-client, qui contient la bibliothèque PHP de client de l’API Google, comme dans cette copie d’écran :

Organisation des fichiers pour utiliser l’API Google
Maintenant, on peut créer notre premier script pour intéragir avec notre agenda Google.
Créer un script PHP pour modifier l’agenda
Obtenir l’identifiant de l’agenda à modifier
L’id du calendrier est montrée lorsque je clique sur paramètres (onglet détails) :

Obtenir l’identifiant d’un agenda Google
A ce stade on a noté les informations suivantes (AAAA est composé de 44 caractères [a-z][0-9], BBBB de 24 caractères [A-Z][a-z][0-9], CCCC 26 caractères [a-z][0-9]) :
| Nom du projet |
Api Google Calendar |
| Nom du produit |
Pi calendars by ALD |
| ID client |
AAAA.apps.googleusercontent.com |
| code secret client |
BBBB |
| ID agenda |
parcours-performance.com_CCCC@group.calendar.google.com |
Ecrire un premier script
J’ai utilisé principalement le script PHP proposé par PHP Quickstart, de Google, ainsi qu’un bout de code trouvé sur la page consacrée à Events: quickAdd.
Attention : si vous utilisez le script PHP proposé dans PHP Quickstart, il faut noter que
le code est prévu pour lire le contenu de l’agenda, pas y écrire.
Si on veut pouvoir accéder en lecture ET écriture, il faut modifier la ligne contenant « define( ‘SCOPES’,… », et remplacer CALENDAR_READONLY par CALENDAR.
Et si on avait déjà obtenu une autorisation quand SCOPES était réglé sur CALENDAR_READONLY, il faut supprimer le fichier JSON dans le répertoire credentials avant de l’éxécuter de nouveau. Sinon, on a une autorisation en lecture seule et on demande l’écriture, ce qui provoque une erreur.
Créer un fichier al-pi-create-google-calendar-event.php dans notre répertoire de travail /home/jf/exec.
Dans ce fichier – en mode encodage UTF8, retours de ligne LINUX – placer le code suivant (remplacer l’id du calendrier par votre id) :
#!/usr/bin/php
<?php
require_once __DIR__ . '/php-google-api-client/vendor/autoload.php';
define('APPLICATION_NAME', 'Pi calendars by ALD');
define('CREDENTIALS_PATH', __DIR__ . '/credentials/calendar-php-quickstart.json');
define('CLIENT_SECRET_PATH', __DIR__ . '/credentials/client_secret.json');
// If modifying these scopes, delete your previously saved credentials
// at __DIR__ . '/credentials/calendar-php-quickstart.json
define('SCOPES', implode(' ', array(
Google_Service_Calendar::CALENDAR) // CALENDAR_READONLY
));
if (php_sapi_name() != 'cli') {
throw new Exception('This application must be run on the command line.');
}
// data for the function
$title = "19.8°C chez Pi Nautilus";
$cal_id = "parcours-performance.com_CCCC@group.calendar.google.com" ;
$create_event = al_pi_create_quick_event( $title, $cal_id ) ;
echo "event ID : " . $create_event . "\r\n" ;
function al_pi_create_quick_event( $title, $cal_id ) {
// Get the API client and construct the service object.
$client = getClient();
$service = new Google_Service_Calendar($client);
// https://developers.google.com/google-apps/calendar/v3/reference/events/quickAdd
$optParams = Array(
'sendNotifications' => true,
);
$createdEvent = $service->events->quickAdd(
$cal_id,
$title,
$optParams
);
return $createdEvent->getId();
}
/**
* Returns an authorized API client.
* @return Google_Client the authorized client object
*/
function getClient() {
$client = new Google_Client();
$client->setApplicationName(APPLICATION_NAME);
$client->setScopes(SCOPES);
$client->setAuthConfig(CLIENT_SECRET_PATH);
$client->setAccessType('offline');
// Load previously authorized credentials from a file.
$credentialsPath = expandHomeDirectory(CREDENTIALS_PATH);
if (file_exists($credentialsPath)) {
$accessToken = json_decode(file_get_contents($credentialsPath), true);
} else {
// Request authorization from the user.
$authUrl = $client->createAuthUrl();
printf("Open the following link in your browser:\n%s\n", $authUrl);
print 'Enter verification code: ';
$authCode = trim(fgets(STDIN));
// Exchange authorization code for an access token.
$accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
// Store the credentials to disk.
if(!file_exists(dirname($credentialsPath))) {
mkdir(dirname($credentialsPath), 0700, true);
}
file_put_contents($credentialsPath, json_encode($accessToken));
printf("Credentials saved to %s\n", $credentialsPath);
}
$client->setAccessToken($accessToken);
// Refresh the token if it's expired.
if ($client->isAccessTokenExpired()) {
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
file_put_contents($credentialsPath, json_encode($client->getAccessToken()));
}
return $client;
}
/**
* Expands the home directory alias '~' to the full path.
* @param string $path the path to expand.
* @return string the expanded path.
*/
function expandHomeDirectory($path) {
$homeDirectory = getenv('HOME');
if (empty($homeDirectory)) {
$homeDirectory = getenv('HOMEDRIVE') . getenv('HOMEPATH');
}
return str_replace('~', realpath($homeDirectory), $path);
}
?>
En SSH, se connecter au Pi (Nautilus pour moi)
ssh root@nautilus
Se placer dans le répertoire de travail puis exécuter le fichier :
cd /home/jf/exec
./al-pi-create-google-calendar-event.php
Un message commençant par « Open the following link in your browser: » s’affiche sur l’écran de notre Pi. On copie le lien et on le colle dans un navigateur. Ca nous renvoie à une page dans laquelle je dois autoriser le partage. On copie le code et on le colle dans l’invite de commande du Pi. Le script sauvegarde notre autorisation dans le répertoire défini (/home/jf/exec/credentials) puis nous communique l’event ID :

Google API : autorisation OAuth en mode ligne de commande
Nous avons été autorisé à interagir avec le calendrier Google et notre premier événement à été créé. A partir de maintenant, nous n’aurons plus besoin d’obtenir de nouveau l’autorisation de l’agenda pour y intervenir.
Et maintenant ?
Maintenant que nous savons comment interagir avec une API Google, on peut en principe faire la même chose avec d’autres API, telles que celle de Google Sheet pour stocker des informations dans un tableur Google.
par Anne-Laure DELPECH | 2 Nov 2016 | Archives
Pour un projet, j’ai besoin d’envoyer des SMS lorsque certaines conditions sont réunies. Les tutoriels sur l’envoi de SMS par Raspberry Pi prévoient l’utilisation d’une clé 3G et une carte SD d’un opérateur mobile pour que le Pi dispose d’un numéro de téléphone mobile et puisse envoyer des SMS.
J’ai finalement trouvé 3 solutions :
- lorsque le destinataire du SMS dispose d’un abonnement FREE, on utilise l’API de notification SMS FREE. C’est la solution la plus simple.
- Sinon, on peut utiliser IFTTT pour envoyer des SMS lorsque certains événements se produisent. Je l’ai fait pendant longtemps. Le gros inconvénient est que IFTTT n’est pas fiable. Il arrive qu’on ne reçoive le SMS que le lendemain. Cà n’est pas acceptable lorsqu’on veut pouvoir alerter.
- Enfin, on peut utiliser un agenda google, y créer un événement dès que les conditions prévues sont réunies. Si on a correctement paramétré l’agenda, il enverra un SMS à un destinataire.
Je présente ici les 3 solutions, avec un script PHP placé sur un Raspberry Pi.
Avant de commencer : installer PHP sur le Raspberry Pi
Pour savoir si PHP est installé :
php -v
Si il n’est pas installé :
apt-get update
apt-get upgrade
sudo apt-get install php5 libapache2-mod-php5 -y
Et si curl n’est pas installé :
apt-get install php5-curl
La solution pour un mobile Free
Cette solution très simple ne fonctionne que pour envoyer un SMS à un téléphone FREE.
Obtenir les identifiants de l’API Free
On suit les instructions de « Nouvelle option « Notifications par SMS » chez Free Mobile » pour activer l’option (gratuite) et obtenir une clé d’identification au service. On note aussi notre identifiant d’utilisateur Free Mobile. On obtient les informations suivantes (fausses évidemment mais ressemblantes) :
| Utilisateur |
12345678 |
| Clé d’Identification |
KZuaj37069LOSn |
Tester l’envoi de SMS via un navigateur
Mettre l’url suivante dans un navigateur internet :
https://smsapi.free-mobile.fr/sendmsg?user=12345678&pass=KZuaj37069LOSn&msg=Bonjour%20Monde%20!
Je reçois un SMS avec « Bonjour Monde ! » comme contenu.
Créer un script PHP pour envoyer le SMS à partir d’un Pi
Créer un fichier test-free-sms.php, avec droits 744 contenant le code suivant :
#!/usr/bin/php
<?php
/* MODIFIER VOS INFORMATIONS ici */
$free_mobile_id = 'YOUR_ID' ;
$free_mobile_key = 'YOUR_KEY' ;
$message = "Bonjour à vous !" ;
$sms_free = al_pi_send_free_mobile_sms( $free_mobile_id, $free_mobile_key, $message ) ;
print_r( $sms_free ) ;
function al_pi_send_free_mobile_sms( $id, $key, $txt) {
/* on doit constituer une url du type
* https://smsapi.free-mobile.fr/sendmsg?user=12345678&pass=KZuaj37069LOSn&msg=Bonjour%20Monde%20!
*/
$url = 'https://smsapi.free-mobile.fr/sendmsg?user=' ;
$url .= $id ;
$url .= '&pass=' ;
$url .= $key ;
$url .= '&msg=' ;
$url .= rawurlencode( $txt ) ;
// envoyer l'url avec une commande CURL
$ch = curl_init( $url ) ;
$timeout = 5;
curl_setopt( $ch, CURLOPT_URL,$url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); // return web page = true
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout ); // time-out on connect
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 120 ); // time-out on response
$data = curl_exec( $ch );
// vérifier que tout s'est bien passé
// http://php.net/manual/fr/function.curl-getinfo.php
if(!curl_errno($ch)) {
$info = curl_getinfo($ch);
print_r( $info ) ;
}
curl_close( $ch );
return $info;
}
Avant d’exécuter le code, placer vos identifiants en haut du code. Puis, dans le Pi, en ligne de commande, exécuter :
./test-free-sms.php
Je reçois un SMS dans lequel le « à » a disparu si j’ai oublié d’encoder le fichier en utf8.
Et le contenu de $sms_free est :
On pourra donc créer un message selon le résultat en ajoutant :
if ( $sms_free['http_code'] === 200 ) {
echo "success \r\n" ;
} else {
echo "echec \r\n" ;
}
Et voilà pour cette solution simple.
La solution avec IFTTT
Pour que les recettes IFTTT fonctionnent, il faut les créer : bouton « create recipe » puis :
- cliquer sur « THIS »
- Choose trigger channel : ‘maker’ (noter la clé de maker)
- Cliquer sur receive a web request
- event name = ‘Pi_Manquant’ puis “create trigger”.
- cliquer sur “THAT”
- Channel ‘Android SMS’ puis cliquer sur “send an SMS” et indiquer le numéro de mobile (avec le code 33 pour la france avant, sans le 0, 33611111111) puis définir les paramètres, en particulier comment utiliser value1, value2 et value3.
Ensuite il « suffit » d’envoyer la requête sous la forme suivante pour que l’événement soit déclenché et la recette IFTTT se réalise !
http://maker.ifttt.com/trigger/Pi_Manquant/with/key/YOUR_KEY?value1=fuel&value2=%22Sunday%2004%2010%202015%2006:20:01%20CEST%22&value3=2400
Noter aussi qu’IFTTT permet de faire plein de choses, comme nous prévenir qu’il va pleuvoir demain ou, plus utile, envoyer un mail lorsque notre mobile reçoit un SMS.
On crée un fichier test-ifttt.php contenant :
#!/usr/bin/php
<?php
/* MODIFIER VOS INFORMATIONS ici */
$maker_channel_key = 'VOTRE_CLE' ;
$event = 'pi_missing' ;
$value1 = "Pi hostname" ;
$value2 = "VALEUR 2" ;
$value3 = "valeur 3" ;
$ifttt = al_pi_send_ifttt( $maker_channel_key, $event, $value1, $value2, $value3 ) ;
if ( $ifttt['http_code'] === 200 ) {
echo "success \r\n" ;
} else {
echo "echec \r\n" ;
}
function al_pi_send_ifttt( $key, $event, $val1, $val2, $val3 ) {
/* on doit constituer une url du type
* http://maker.ifttt.com/trigger/Pi_Manquant/with/key/YOUR_KEY?value1=fuel&value2=%22Sunday%2004%2010%202015%2006:20:01%20CEST%22&value3=2400
*/
// encoder les valeurs
$data = '?value1=' ;
$data .= urlencode( $val1 );
$data .= "&value2='";
$data .= urlencode( $val2 );
$data .= "'&value3=";
$data .= urlencode( $val3 );
// encoder l'url complète
$url = 'http://maker.ifttt.com/trigger/' ;
$url .= rawurlencode( $event ) ;
$url .='/with/key/';
$url .= rawurlencode( $key ) ;
$url .= $data ;
// envoyer l'url avec une commande CURL
$ch = curl_init( $url ) ;
$timeout = 5;
curl_setopt( $ch, CURLOPT_URL,$url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); // return web page = true
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout ); // time-out on connect
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 120 ); // time-out on response
$data = curl_exec( $ch );
// vérifier que tout s'est bien passé
// http://php.net/manual/fr/function.curl-getinfo.php
if(!curl_errno($ch)) {
$info = curl_getinfo($ch);
// print_r( $info ) ;
}
curl_close( $ch );
return $info;
}
Ensuite dans la ligne de commande du Pi :
./test-ifttt.php
Et on déclenche l’événement
Sur ifttt.com, on peut voir le log de chaque « recette ». Par exemple j’ai vu que l’événement Maker Event « pi_missing » s’est bien déclenché. Mais le SMS arrivera quand IFTTT voudra bien… (c’est gratuit, on ne doit pas se plaindre).
Je trouve par contre que IFTTT fonctionne très bien avec la chaîne GMAIL et envoie des mails immédiatement. Mais si on doit envoyer un message à quelqu’un qui n’a pas de forfait de données sur son téléphone, IFTTT peut quand même être utile, même s’il n’est pas fiable.
La solution avec un agenda Google
Créer un calendrier « spécial Pi » sur google agenda
Dans mon agenda Google, dans la barre latérale de gauche, cliquer sur la flèche à droite de « Mes agendas » et choisir « créer un agenda ». Donner un nom à l’agenda (par exemple « Pi Nautilus ») puis « Créer ». L’agenda est maintenant visible sur le côté gauche, dans la liste des agendas.
Modifier les notifications
Cliquer sur la flèche à droite de l’agenda « Pi Nautilus » et choisir « paramètres » puis aller dans l’onglet « modifier les notifications ».

Si on veut définir un autre numéro de téléphone comme destinataire du SMS, on clique sur le lien « configuration du mobile ».
A ce stade, si quelqu’un crée ou modifie un événement, le téléphone défini reçoit un SMS.
On peut créer des événements automatiquement par un programme. Cette solution, dans laquelle un Pi crée un événement, lorsque certaines conditions sont réunies, est expliquée dans l’article Interagir avec L’agenda Google via l’API (OAuth 2.0) .
Et maintenant ?
Vivement que tous les opérateurs de téléphonie mobile fassent comme Free et proposent une API d’envoi de SMS !
par Anne-Laure DELPECH | 30 Oct 2016 | Archives
J’hébergeais sur OVH un site assez simple, qui suit le bon fonctionnement de mes Raspberry Pi. Comme j’ai migré l’hébergement OVH sur un VPS OVH avec Plesk, j’ai également dû déplacer ce site.
J’explique donc ici comment installer un site composé de fichiers php et css dans un hébergement Plesk. Ce site n’a pas de base de données et n’utilise pas de gestionnaire de contenus type WordPress.
Créer un sous-domaine et y transférer les fichiers
J’ai ajouté un sous-domaine dans mon compte Plesk, par exemple domicile.mon-domaine.com.
J’y ai transféré les fichiers de l’hébergement initial en ftp. J’ai placé les fichiers dans un répertoire temporaire ‘temp-al’.
Placer les fichiers au bon endroit
Dans Plesk, tel qu’il est paramétré, les fichiers doivent être rangés comme suit :
- css dans le répertoire domicile.mon-domaine.com/css
- php ou html directement dans domicile.mon-domaine.com/
- favicon.ico à la racine (image 256x256px)
NOTA : mon VPS Plesk étant sous linux, les fichiers doivent tous être avec des fins de ligne en mode linux, et pas windows. Sinon ça ne fonctionne pas.
Donner l’accès au site
Lorsque le sous-domaine a été créé, Plesk y a placé un fichier index.html. Pour que ce soit index.php qui soit exécuté, il suffit de supprimer le fichier index.html.
Et maintenant, dans un navigateur, http://domicile.mon-domaine.com ouvre bien sur un site défini par le contenu de index.php.
Afficher les erreurs
En tant qu’administrateur, on peut modifier les paramètres PHP du sous-domaine et régler « display_error » sur « on ».
Et voilà !
par Anne-Laure DELPECH | 30 Oct 2016 | Archives
Nous allons voir ici comment se connecter en FTP à un hébergement Plesk, avec des outils comme net2ftp ou filezilla. La documentation Plesk (Accès FTP au site Web) est complète, j’indique juste ici quels sont les paramètres de connexion dans net2ftp ou Filezilla.
Utiliser net2ftp
Attention, il ne faut utiliser que des net2ftp sécurisés et fiables, comme ceux qui sont proposés par les hébergements OVH (ou aussi par un hébergement Plesk si on actionne le service).
Les identifiants et mots de passe FTP des hébergements Plesk sont définis comme indiqué dans ce document Plesk. Le serveur est simplement le nom de domaine concerné sans rien devant (domaine1.com par exemple)
Utiliser Filezilla
Voici le paramétrage (plesk-id et le mot de passe ont été définis dans comptes FTP du domaine mon-domaine.com) :

Et maintenant
On peut lire d’autres articles de cette série ici : Démarrer avec un hébergement VPS Plesk d’OVH
par Anne-Laure DELPECH | 30 Oct 2016 | Archives
Comme sur un hébergement OVH, il faut sauvegarder régulièrement les bases de données et les fichiers des sites hébergés. Avec un VPS équipé de « Plesk-resellers », il faut également sauvegarder les paramètres liés aux clients, abonnements, packs de service. Nous allons voir comment.
Sauvegarder tout ou partie des données Plesk
Cette partie n’est accessible qu’aux administrateurs du compte Plesk resellers.
Documentation Plesk : Sauvegarder et restaurer les données.
Dans « outils et utilitaires » > « Gestionnaire de sauvegardes », on peut définir les paramètres de sauvagarde, faire des sauvegardes unitaires ou des sauvegardes planifiées.
Qu’est-ce qui est sauvegardé ?
Selon la documentation Plesk Sauvegarder et restaurer les données :
| Contenu de la sauvegarde |
Données incluses |
| Configuration du revendeur |
- Paramètres personnels du revendeur
- Packs de services et abonnements
- Paramètres et configuration du compte client, sites, bases de données, boîtes mails, listes de diffusion
- Certificats SSL
- Informations sur les DNS
|
| Configuration et contenu du revendeur |
Toutes les options ci-dessus, plus :
- Contenu des sites Web
- Contenu des mails
- Contenu des listes de diffusion
- Contenu des bases de données
- Logs et statistiques
- Pages d’erreurs personnalisées
|
Définir les paramètres de sauvegarde
On peut définir un hébérgement OVH (pro ou perso) comme destination des sauvegardes.
Les paramètres sont définis comme suit (on obtient le nom d’hôte, le nom d’utilisateur FTP et son mot de passe dans le compte OVH de l’hébergement cible) :

Plesk : paramétrage du stockage FTP
Attention, la seule difficulté (que je n’ai résolue qu’après plusieurs échanges avec des techniciens OVH), est que Plesk doit pouvoir écrire sur la « racine » de la cible pour vérifier le bon fonctionnement avant de transférer la sauvegarde.
Donc le champ « répertoire » doit obligatoirement contenir quelque chose et le répertoire défini doit déjà exister dans le compte FTP cible.
Pour une sauvegarde unitaire :
Dans « stocker sous »,
- le stockage FTP proposé est celui qui a été défini dans les paramètres de sauvegarde.
- Je ne me souviens pas si j’ai défini le lieu de stockage du serveur.

Plesk : sauvegarder pour le « revendeur »
Planifier des sauvegardes
Voici les réglages que j’ai fait.

Plesk : planifier des sauvegardes
Sauvegarder le compte et les sites web (client)
Le client a accès à un menu « compte » dans lequel on trouve les boutons « Sauvegarder le compte et les sites Web » et « Sauvegarder les sites Web ».
Documentation Plesk : (Avancé) Sauvegarder et restaurer les sites Web
le fonctionnement est semblable à celui des sauvegardes de l’ensemble de Plesk.
Copier / cloner un site web (client)
Documentation Plesk : Utiliser un site provisoire.
Cette option « copier du site web » est accessible aux clients, selon les réglages de leur abonnement. Attention, cette option ne copie pas la base de données.
Lorsque le client clique sur « copie du site web », il peut choisir ses options :

Plesk : copie de site web
On peut utiliser cette fonction pour copier un site vers un autre (le cloner), mais cet autre est OBLIGATOIREMENT un élément du même domaine. Par exemple si je copie « knowledge.parcours-performance.com , je ne peux le copier que vers parcours-performance.com ou un de ses sous-domaines.
Et maintenant ?
Il reste à vérifier que je parviens à restaurer les données sauvagardées si nécessaire.
Cet article fait partie de la série Démarrer avec un hébergement VPS Plesk d’OVH.
par Anne-Laure DELPECH | 29 Oct 2016 | Archives
A la création d’un site, il est indispensable de vérifier la sécurité et l’indexabilité du site WordPress. C’est également indispensable après le transfert d’un site vers un nouvel hébergement. Cette check_list contient des éléments applicables à tout site WordPress et des actions spécifiques au transfert vers un hébergement d’un VPS Plesk. Cet article fait partie de la série Démarrer avec un hébergement VPS Plesk d’OVH.
Vérification de la sécurité
(1) sécuriser tout ce qui peut l’être avec WordPress Toolkit.
Avec Plesk, on dispose du WordPress Toolkit.

Sécuriser un site avec le WordPress Toolkit de Plesk
Après avoir cliqué sur « analyser la sécurité », je donne l’autorisation de sécuriser tout ce qui ne l’est pas.
Nota : selon cet article sur Devblog.Plesk, les changements ne sont pas faits en modifiant .htaccess (et n’en lit même pas le contenu pour définir le statut de sécurité). C’est la configuration du serveur web qui est modifiée. Toute modification du .htaccess va remplacer la configuration serveur correspondante.
(2) utiliser toutes les fonctionnalités de Sucuri
J’utilise l’extension gratuite « Sucuri Security – Auditing, Malware Scanner and Hardening » pour la sécurité du site. Les modifications qui suivent sont réalisées avec cette extension.
- Exécuter tous les « hardening » proposés sauf « website firewall protection » (pas dans la version gratuite de sucuri) et « error logs » qui « can not be determined ». Attention, je n’ai jamais essayé de voir si Sucuri peut changer correctement le préfixe de base de données. J’ai procédé comme indiqué dans l’article Changer le préfixe de base de données WordPress.
- Dans Settings / Général (ou par une console d’erreur comme Query Monitor), j’ai eu une erreur indiquant que Sucuri n’a plus l’autorisation de stocker les données de Sucuri dans /home/parcoursz/www/wp-content/uploads/sucuri. Au final pour corriger le problème, il suffit de désactiver Sucuri, supprimer les fichiers stockés dans wp-content/uploads/sucuri puis réactiver Sucuri.
(3) Modifier wp-config.php
- Vérifier que Sucuri a ajouté define( ‘DISALLOW_FILE_EDIT’, true ); pour interdire la modification de fichiers à partir du tableau de bord WordPress ;
- En profiter pour ajouter une instruction pour limiter le nombre de versions stockées pour un article ou une page : define( ‘WP_POST_REVISIONS’, 5 );
(4) Ajuster .hataccess
Normalement c’est inutile pour un site monosite. Pour un site multisite, il faudra l’ajuster, mais ce sera l’objet d’un autre article.
Vérification pour le SEO
Après la création d’un site ou son transfert, il faut vérifier quelques points essentiels pour que le site reste correctement indexé par les moteurs de recherche :
(5) Google analytics
(6) Yoast SEO
- Vérifier que les réglages de l’extension sont correctement faits ;
- Vérifier que la connexion à la search console est faite correctement ;
- Si les sitemaps dans google for webmasters ne sont pas récents, les soumettre à nouveau ;
- Dans Google for Webmasters, regarder les erreurs d’exploration et les corriger (redirection) ;
- Dans un site nouvellement créé, on vérifiera aussi que l’on a correctement rempli les extraits SEO pour l’ensemble des contenus.
(7) vitesse du site
- Tester le site avec Google Test My Site puis corriger les défauts éventuels. Ce site teste l’ergonomie sur appareil mobile, la vitesse sur mobile et la vitesse sur ordinateur.
par Anne-Laure DELPECH | 29 Oct 2016 | Archives
Avec WordPress, une bonne pratique de sécurité est d’utiliser un préfixe de base de données différent du préfixe par défaut. Celà complique en effet la tâche d’éventuels pirates.
Le préfixe par défaut de WordPress est « wp_ ». On peut le changer lors de l’installation de WordPress ou plus tard. Nous allons voir dans cet article comment changer le préfixe d’un site existant.
Attention, ce changement nécessite une bonne compréhension du fonctionnement d’une base de données pour WordPress. On peut casser un site internet si on le fait mal.
Il faut sauvegarder la base de données avant tout changement.
Ce tutoriel s’applique aux installation WordPress classiques. Pour une installation multisite, suivre les instructions de cet article de WPmuDev.
Changer le préfixe des tables
Quel préfixe choisir ?
L’idéal est d’utiliser 6 à 10 caractères composés de lettres minuscules ou majuscules et de chiffres, tel que p7fQ25Hg_ ou i9s5c0Fu1P_. Pour le créer, l’idéal est d’utiliser lastpass password generator, en n’oubliant pas d’ajouter « _ » à la fin du préfixe généré.
Avec phpMyAdmin :
- Sauvegarder la base de données ;
- Remplacer le préfixe de table : en sélectionnant toutes les tables (tout cocher) puis « remplacer le préfixe de table ».

WordPress : changer le préfixe de base de données (2)
Et voilà, le préfixe des tables de notre base de données est devenu « newprefix_ ». A ce stade, notre site ne fonctionne plus du tout ! En effet, on n’a pas encore « dit » à WordPress que le préfixe de tables a changé.
Modifier wp-config.php
On édite wp-config.php pour que la ligne :
$table_prefix = 'wp_';
devienne
$table_prefix = 'newprefix_';
Après enregistrement du fichier modifié, les internautes peuvent de nouveau accéder au site. Mais l’accès au tableau de bord reste bloqué.
Changer le préfixe de certains contenus des tables
Le préfixe de table est également utilisé à l’intérieur de certaines tables. C’est le cas de certains contenus du champ option_name de la table « newprefix_options », et du champ meta_key dans la table « newprefix_usermeta ».
Modifier les « option_name » avec l’ancien préfixe
La commande SQL pour afficher les lignes concernées, de la table « newprefix_options » est :
SELECT * FROM `newprefix_options` WHERE `option_name` LIKE '%wp_%'
On peut aussi le faire dans l’interface graphique de phpMyAdmin.
On obtient une liste d’éléments de la table qui contiennent wp_. Mais attention, bon nombre de lignes ne doivent pas être modifiées. Pour le site dont je réalise la modification en écrivant ce tutoriel, j’ai obtenu 78 lignes dans lesquelles ‘option_name’ est « LIKE » ‘wp_’. En fait, la seule à modifier (à la main) est wp_user_roles qui devient newprefix_user_roles .
Modifier les meta_key avec l’ancien préfixe
La commande SQL pour afficher les lignes concernées, de la table « newprefix_usermeta » est :
SELECT * FROM `newprefix_usermeta` WHERE `meta_key` LIKE '%wp_%'
Pour s’y retrouver, on ordonne la colonne « meta_key » puis on modifie, à la main, toutes les entrées pour lesquelles la valeur de « meta_key » commence par wp_. En général on trouve les valeurs suivantes, autant de fois qu’il y a d’utilisateurs enregistrés pour le site :
- wp_capabilities
- wp_dashboard_quick_press_last_post_id
- wp_media_library_mode
- wp_user-settings
- wp_user-settings-time
- wp_user_level
A ce stade, on vérifie que tout va bien en se connectant au tableau de bord du site modifié. Si tout va bien, on arrive à se connecter et on a terminé.
En cas de problèmes
Cet article de WPmuDev, donne quelques pistes si on observe des dysfonctionnements après le changement de préfixe.
Problème n° 1 : pas d’accès au site
Lorsqu’on met l’adresse du site dans un navigateur, on arrive à un écran nous proposant d’installer WordPress !
La solution est de modifier wp-config.php pour que la ligne $table_prefix = ‘newprefix_’; contienne la bonne valeur du nouveau préfixe.
Problème n°2 : les utilisateurs n’ont plus la permission de se connecter au site
Dans ce cas, on a omis de modifier une ou plusieurs entrées de la table « newprefix_usermeta » et certaines valeurs de « meta_key » contiennent toujours le préfixe « wp_ ». Il faut donc vérifier ce que l’on a fait.
Notre problème n’est pas résolu ?
Voir l’article How to Fix “Error Establishing Database Connection” for WordPress. Il arrive en particulier que des extensions mal codées utilisent uniquement le préfixe par défaut « wp_ ». Dans ce cas, elles ne peuvent plus fonctionner une fois le préfixe changé. Pour les identifier, on désactive toutes les extensions puis on les réactive une à une jusqu’à ce que le site casse. Une fois l’extension problématique identifiée, on la supprime. On peut aussi revenir à la copie de la base de données réalisée avant le changement.
Commentaires récents