J’essaie de toujours créer des chemins relatifs, pour éviter de devoir modifier des documents si leur racine change.
Pour lire les données de mon Pi sur un site web en PHP, j’avais besoin de trouver automatiquement l’url du site, avec son protocole http ou https selon les cas.
Je me suis inspirée de PHP Document Root, Path and URL detection.
Dans un fichier php, il suffit de placer le code suivant pour savoir à quoi chaque élément correspond :
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.
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).
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.
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é.
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é.
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).
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.
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.
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).
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]) :
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.
Commentaires récents