Getlib: ramener des bibliotheques & frameworks en local en une ligne [Edité]

Certains se souviennent peut-être de goofi, pour récupérer des google fonts en local; sur la base de ce script, j'ai bricolé une version qui permettra de faire la même chose avec les bibliothèques et frameworks (notamment js) que tout un chacun utilise et dont l'appel participe aux stats de google et consorts à chaque requête sur leur serveur.

Donc, en gros, il suffit de remplacer l'appel du script dans le en ajoutant getlib.php?url= devant.

Ainsi

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

deviendra

<script src="http://monserveur/getlib.php?url=https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Le fichier est récupéré une seule fois et seule la vertsion locale sera renvoyée par la suite.

Au cas où vous voulez que le script récupère une éventuelle mise à jour, il suffit d'ajouter update dans l'url:

<script src="http://monserveur/getlib.php?update&url=https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Getlib vérifiera alors si le fichier distant a changé et le retéléchargera si c'est nécessaire.

Comme avec Goofi, seule l'IP du serveur qui héberge le script est connue du serveur distant, jamais celle du visiteur.

C'est tout! Je n'ai pas testé à fond encore et les erreurs ne sont pas gérées pour le moment, mais ça fonctionne quand même pas mal !

<?php 
# get libs from distant servers to local (& avoid unnecessary requests to servers who can log user's connections)
# ex:  
# https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
# becomes
# getlib.php?url=https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
# if you want to update local file if the distant one changes, just add "update" 
# getlib.php?update&url=https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
# author: warriordudimanche.net
# 
$lib_folder='libs/';
$check_updates=isset($_GET['update']);

if (!empty($_GET['url'])){
    if (!is_dir($lib_folder)){mkdir($lib_folder);}

    $url=strip_tags($_GET['url']);
    define('LOCAL_FILENAME',$lib_folder.basename($url));
    $ext=pathinfo(LOCAL_FILENAME)['extension'];
    //$flag='non';
    if (
        !is_file(LOCAL_FILENAME)
        ||
        ($check_updates && !isSameFile($url))

    ){
        $lib=file_get_contents($url,false,null,0,1000000);
        file_put_contents(LOCAL_FILENAME,$lib);
        $head = array_change_key_case(get_headers($url, TRUE));
        file_put_contents(LOCAL_FILENAME.'.info', $head['last-modified']);
        //$flag='oui';
    }
    if ($ext=='css'){
        $mime='text/css';
    }elseif ($ext=='js'){
        $mime='text/javascript';
    }else{
        $mime=mime_content_type(LOCAL_FILENAME);
    }

    header('Content-Type: '.$mime);
    exit(file_get_contents(LOCAL_FILENAME));
}


function isSameFile($url){
    $head = array_change_key_case(get_headers($url, TRUE));
    $local=file_get_contents(LOCAL_FILENAME.'.info');
    $distant=$head['last-modified'];
    return $distant==$local;
}

getlib.zip le dépôt

Comme toujours,
c'est aux autres de débugger
les scripts que tu commets, heu... commit...
super.
🗦

Et je vais t avouer un truc  j ai même pas honte   C est même ma marque de fabrique  une genre de  Bronco s touch .jpg

T'as perdu une occasion de la fermer !

Quand M.Fion, en septembre dernier, chiait abondamment sur l'inconséquence des médias qui ne s'intéressent aux malversations des politiques que pendant «deux ou trois jours», il ignorait sans doute qu'il serait exaucé par la fée réalité quelques mois plus tard, à ses dépends

Il ne mérite AUCUNE pitié... AUCUNE.

En cadeau bonus, Laura Laune et léa la girafe


Laura Laune - Léa La Girafe par comedycontestfrance

(...)

Goofi: ramener des google fonts en local en une ligne

Ceux qui, avec une ténacité et une abnégation forçant le respect autant que l'admiration, me suivent depuis longtemps se souviennent sans doute de Goofy, un script php permettant de récupérer les fontes de google sous forme de zip prêt à l'emploi...

Ben je trouvais ça encore un peu lourd, sans compter qu'il faut tout le temps modifier le script pour qu'il continue à fonctionner. Par voie de conséquence, j'ai repris l'idée mais en la modifiant quelque peu...

(...)

Trois plugins pour le prix de zéro: c'est Mercredi, c'est cadeau !

Toujours plus loin, toujours plus haut... Sky is the limit. Oui, bon, j'en fais un peu trop, mais les rares qui s'entêtent encore à me lire sont habitués

Donc, aujourd'hui, ce n'est pas un, ce n'est pas deux mais bien trois plugins que je vous propose. D'un coup. Chuis comme ça, généreux ! (si, si, c'est vrai, même que Cyrille Borne le dit )

Il ajoute même de façon tout-à-fait pertinente que ma générosité n'a d'égal que mon aspect bordélique, c'est vous dire l'ampleur !

Bon, plus sérieusement, les trois plugins ne sont que trois versions d'un seul et même script.

Pourquoi en faire trois alors ?

Excellente question, j'y réponds en dessous.

(...)

Fil RSS des articles de cette catégorie