| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- require('../constants.php');
- $favicons_dir = DATA_PATH . '/favicons/';
- /* Télécharge le favicon d'un site et le place sur le serveur */
- function download_favicon ($website, $dest) {
- $ok = false;
- $url = 'http://g.etfv.co/' . $website;
- $c = curl_init ($url);
- curl_setopt ($c, CURLOPT_HEADER, false);
- curl_setopt ($c, CURLOPT_RETURNTRANSFER, true);
- curl_setopt ($c, CURLOPT_BINARYTRANSFER, true);
- $imgRaw = curl_exec ($c);
- if (curl_getinfo ($c, CURLINFO_HTTP_CODE) == 200) {
- $file = fopen ($dest, 'w');
- if ($file !== false) {
- fwrite ($file, $imgRaw);
- fclose ($file);
- $ok = true;
- }
- }
- curl_close ($c);
- if (!$ok) {
- header('Location: ' . $url);
- return false;
- }
- return true;
- }
- $id = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '0';
- if (!ctype_xdigit($id)) {
- $id = '0';
- }
- $txt = $favicons_dir . $id . '.txt';
- $ico = $favicons_dir . $id . '.ico';
- $icoMTime = @filemtime($ico);
- $txtMTime = @filemtime($txt);
- if (($icoMTime == false) || ($txtMTime > $icoMTime)) {
- if ($txtMTime == false) {
- header('HTTP/1.1 404 Not Found');
- header('Content-Type: image/gif');
- readfile(PUBLIC_PATH . '/themes/icons/grey.gif'); //TODO: Better 404 favicon
- die();
- }
- $url = file_get_contents($txt);
- if (!download_favicon($url, $ico)) {
- die();
- }
- }
- require(LIB_PATH . '/http-conditional.php');
- header('Content-Type: image/x-icon');
- header('Content-Disposition: inline; filename="' . $id . '.ico"');
- if (!httpConditional($icoMTime, 2592000, 2)) {
- readfile($ico);
- }
|