Outils pour utilisateurs

Outils du site


php:cutycapteur

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

php:cutycapteur [2012-12-09 01:55]
mitsu
php:cutycapteur [2013-02-19 21:28]
Ligne 1: Ligne 1:
-**IMPORTANT: cette idée et le code qui en résulte ont été pondus un samedi soir 23h30 après deux verres d'alcool à 21° en conjoncture avec un certain ennui et seulement 2 heures de code/test. Bref c'est une horreur, mais l'idée à la base n'est pas mauvaise. Soyez libres de développer ça :-)** 
  
- 
-  * machine Debian/Ubuntu 
-    * cutycapt 
-    * xvfb 
-    * php5-cli 
-    * php5-cgi 
- 
- 
-Structure des fichiers: 
- 
-  * / 
-  * /db/ 
-  * /work/ 
-  * /index.php 
-  * /webcapt.run 
- 
-Principe de base: on appelle index.php avec une URL en paramètre GET, index.php passe l'URL via fichier dans /work/ à webcapt, ce dernier génère des captures d'écran PNG et SVG avec cutycapt, renomme selon hash sha1 de l'URL et déplace dans /db/, index.php enfin redirige vers le fichier s'il existe. 
- 
-Intérêt: combiné à un Autoblog, fournir un instantané en image de la page autobloguée (permettant ainsi de sauvegarder le design et extraire d'autres éléments de la page grâce au SVG ouvert dans Inkscape) 
- 
-Bémols: 
- 
-  * ça bouffe pas mal de ressources, la génération de captures d'écran.. d'où le forbidden qui limite les IP pouvant appeler le script 
-  * un entrecroisement PHP/Bash assez moche avec une passation de données ridicule (via nom d'un fichier avec un "for file in *") 
-  * vous en connaissez beaucoup, vous, d'hébergeurs mutualisés qui autorisent exec() ? Niveau sécu c'est assez horrible 
-  * ... 
- 
-====== ** Le code** ====== 
- 
- 
-<file php index.php> 
-<?php 
-if($_SERVER['REMOTE_ADDR'] === '8.8.8.8') { } else { header('HTTP/1.1 403 Forbidden');die('forbidden');} 
-if(isset($_GET['url'])) { } else {header('HTTP/1.1 403 Forbidden');die('no url given');} 
-$request = $_GET['url']; 
-if(isset($_GET['svg'])) { $type="svg";} else {$type="png";} 
-$filename = base64_encode($request); 
-$urlhash = sha1($request); 
-if(file_exists("db/$urlhash.$type")) 
- { header("Location: db/$urlhash.$type");die; } 
-else 
- { 
- file_put_contents("work/$filename", ''); 
- exec('./webcapt'); 
- if(file_exists("db/$urlhash.$type")) 
- { header("Location: db/$urlhash.$type");die; } 
- else {die('error');} 
- } 
-?> 
-</file> 
- 
- 
----- 
- 
-<file bash webcapt.run> 
-#!/bin/bash 
-mkdir -p "work" 
-mkdir -p "db" 
-cd "work/" 
-for file in *; do 
-url=$(echo "$file" | base64 -d); urlhash=$(php -r "echo sha1(\"$url\");") 
-xvfb-run --server-args="-screen 0, 1280x720x24" cutycapt --url=$url --private-browsing=on --user-agent="Mozilla/5.0 (X11; U; Linux x86_64; C) CutyCapt" --header=DNT:1 --min-width=1280 --min-height=720 --out="$file.svg" 
-xvfb-run --server-args="-screen 0, 1280x720x24" cutycapt --url=$url --private-browsing=on --user-agent="Mozilla/5.0 (X11; U; Linux x86_64; C) CutyCapt" --header=DNT:1 --min-width=1280 --min-height=720 --out="$file.png" 
-rm "$file" 
-mv "$file.svg" "../db/$urlhash.svg" 
-mv "$file.png" "../db/$urlhash.png" 
-done 
-</file> 
php/cutycapteur.txt · Dernière modification: 2013-02-19 21:28 (modification externe)