| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <?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;
- /*if (!is_dir ($favicons_dir)) {
- if (!mkdir ($favicons_dir, 0755, true)) {
- header('Location: ' . $url);
- return false;
- }
- }*/
- $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;
- }
- if (isset($_SERVER['PATH_INFO'])) {
- $id = substr($_SERVER['PATH_INFO'], 1);
- } elseif (isset($_SERVER['QUERY_STRING'])) {
- $id = $_SERVER['QUERY_STRING'];
- } else {
- $id = '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);
- }
|