Edición de plugins Thundercache 3.1.2

Publicado por joemg6, Octubre 27, 2012, 11:38:55 AM

Tema anterior - Siguiente tema

bydaro

Consulta existe la posibilidad de hacer algun plugin tipo maestro?

Por ejemplo todos los archivos *.exe; *.rar; *.zip pero de cualquier sitio.

Que cachee cualquier archivo que bajemos con las extensiones arriba informadas para todo la web, por que sino es muy engorroso crear 1 pluing para cada pagina.

Desde ya muchas gracias.

berny6969

y cuando quieres capturar varias extensiones tienes que hacer un plugin para cada una?

gracias

luistec

Cita de: berny6969 en Marzo 08, 2013, 11:11:00 PM
y cuando quieres capturar varias extensiones tienes que hacer un plugin para cada una?

gracias
Los plugins se hacen de acuerdo a sus dominios, si en ese dominio hay varias extensiones, en el plugin(en algunos casos no es necesario declarar en el codigo de fuente las extenciones) y en el regex se ponen las extenciones que hará cache.

Saludos.

berny6969


kurss

Hola compañeros, llevo varios días visitando este magnifico foro, y me ha sido de gran ayuda.

Tengo que agradecer y felicitar enormemente a esta comunidad por los manuales publicados, y por la ayudan que prestan a todos los usuarios.

Yo estuve probando Thunder 7.1 con licencia ADS, y he de decir que me gusta mas como funciona RaptorCache, seguramente sea por que era una licencia gratuita, pero mi decisión es quedarme con RaptorCache.

Bueno yo soy bastante nuevo en este tema, y quería hacerles una consulta.
Para crear plugin para RaptorCache es exactamente igual que para Thunder?? Incluyendo comandos en consola y demás??

Saludos, y gracias a todos.

feveim

Alguien me ayuda con esto,  inicie la instalacion del pluginmaker.zip del script de Joemg, todo bien asta cuando me toca mover el descomprimido a la carpeta a la carpeta thunder y me sale la noticicacion que no se puede mover  o que esta vacio o no existe

root@proxy:~# mv pluginmaker /etc/thunder/
mv: no se puede mover «pluginmaker» a «/etc/thunder/pluginmaker»: El directorio no está vacío
root@proxy:~#

Saludos

gileade

Hola todo el mundo está muy contento de ver que hay personas con poder del conocimiento es tan grande ayuda, porque aquí en Brasil todos munto editar el cambio de nombre Trueno no anunciar y vender con otro nombre.
   una vez en que estábamos más unidos, pero ahora todo munto piensa sólo en sí mismo por eso estoy feliz de ver a ese foro.

cr1st1an

Cita de: kurss en Marzo 28, 2013, 07:49:20 AM
Hola compañeros, llevo varios días visitando este magnifico foro, y me ha sido de gran ayuda.

Tengo que agradecer y felicitar enormemente a esta comunidad por los manuales publicados, y por la ayudan que prestan a todos los usuarios.

Yo estuve probando Thunder 7.1 con licencia ADS, y he de decir que me gusta mas como funciona RaptorCache, seguramente sea por que era una licencia gratuita, pero mi decisión es quedarme con RaptorCache.

Bueno yo soy bastante nuevo en este tema, y quería hacerles una consulta.
Para crear plugin para RaptorCache es exactamente igual que para Thunder?? Incluyendo comandos en consola y demás??

Saludos, y gracias a todos.


Funciona exactamente igual revisate el manual de como realizar plugins es igual
solo se que no se nada

freedarwuin

Trate de ponerlo y no me funciono me da error no consigue la carpeta

quien me ayuda x teamviewer¡?

cr1st1an

Cita de: freedarwuin en Junio 05, 2013, 09:23:16 AM
Trate de ponerlo y no me funciono me da error no consigue la carpeta

quien me ayuda x teamviewer¡?

yo te puedo ayudar y ver que es lo que te pasa si quieres
solo se que no se nada

freedarwuin

Cita de: joemg6 en Octubre 27, 2012, 11:38:55 AM
Edición de plugins Thundercache 3.1.2

Este es un tutorial para poder crear nuestros plugins de las páginas que deseemos que el thunder haga caché, voy a tratar de ser lo más detallado posible para que los que no tienen conocimientos en esto también lo puedan hacer, ya que una gran parte de los contenidos de las páginas solo requiere una edición de los códigos de fuente, solo requerirá que analicen sus headers y url del contenido.

Como ejemplo voy a tomar la página de movistar, se preguntarán por qué, porque vamos a hacer el plugin del servidor speedtest movistar peru (en caso de otros servidores solo modificar la url)

En Primer lugar tenemos que detectar la url del contenido, en este ejemplo utilizaremos la herramienta del Navegador Google Chrome que nos muestra las cabeceras de los contenidos esto lo podemos hacer presionando la tecla F12 (también se pueden utilizar otros modos para obtener las cabeceras, ya sea por utilidad de los navegadores, software o el mismo squid).


Como vemos en la imagen el dominio del servidor es "speedtest.movistar.c om" y la extención es "jpg" (en el caso de otro tipo de contenido se busca la extención por ej. flv,mp4 en algunos casos nos muestra flv?, mp4?).

Para editar plugin descargar el siguiente archivo donde contiene los archivos necesarios para compilar, tambien hay códigos de fuente de ejemplo (ya biene integrado en las nuevas instalaciones revisar en "/etc/thunder/")
http://www.joemg.host56.com/pl/pluginmaker.zip

Luego lo descomprimimos y lo movemos por ej. a la carpeta /etc/thunder/

wget http://www.joemg.host56.com/pl/pluginmaker.zip
unzip pluginmaker.zip
mv pluginmaker /etc/thunder/


Luego ingresamos a la carpeta pluginmaker y dentro de esta carpeta hay una carpeta plugins donde estan los códigos de fuente.

cd /etc/thunder/pluginmaker/plugins/


En este caso abrimos archivo movistar.com.cpp (puede ser con cualquier editor de texto) en este ej. Utilizáremos el editor que viene integrado en el WINSCP


Luego pasamos a compilar el código de fuente con los siguientes comandos (todo esto por terminal también se puede hacer con putty).

g++ -I. -fPIC -shared -g -o movistar.com.pe.so movistar.com.pe.cpp


Luego tenemos que agregar el regex correspondiente en el archivo /etc/thunder/thunder.lst (también lo podemos hacer desde ThundeReport) , en este caso declaramos la URL y las extenciones
http.*\.movistar\.com\.pe .*\.jpg

Luego de esto
- Copiamos el plugin a la carpeta /etc/thunder/plugins/ que es la que contiene todo los plugins del thunder.
- Luego damos permisos al plugin compilado
- Para verificar el funcionamiento del plugin reiniciamos el thunder y el squid
- Y por último verificamos si hace Hit el plugin (podemos ver si figura en el Thundereport)

Una captura de este proceso


En varios casos solo es necesario modificar este código de fuente, ahí paso a detallar las partes a modificar.
__________________________________________________________________________________________

#include <iostream>
#include <cstring>
#include <vector>
#include "../utils.cpp"

// use this line to compile
// g++ -I. -fPIC -shared -g -o movistar.com.pe.so movistar.com.pe.cpp
// regex
// http.*\.movistar\.com\.pe.*\.jpg

string get_filename(string url) {
       vector<string> resultado;
       if (url.find("?") != string::npos) {
           stringexplode(url, "?", &resultado);
           stringexplode(resultado.at(resultado.size()-2), "/", &resultado);
           return resultado.at(resultado.size()-1);          
       } else {
           stringexplode(url, "/", &resultado);
           return resultado.at(resultado.size()-1);
       }
}

extern "C" resposta getmatch(const string url) {
   resposta r;    

   if ( (url.find(".movistar.com.pe/") != string::npos) and (url.find(".jpg") != string::npos)
    {
       
       r.file = get_filename(url);
       if (!r.file.empty()) {
           r.match = true;
           r.domain = "speedtest";
       } else {
           r.match = false;
       }
   } else {
       r.match = false;
   }
   return r;
}
________________________________________________________________________________________

rojo = nombre de dominio
azul = extenciones
verde = nombre del plugin que se mostrara en el ThundeReport

Al editar también cambiar el nombre del código de fuente por el dominio que corresponda.

Hay casos que se necesita cambiar la programación para que haga Hit pero lo más común es el tipo que se detalló en el ejemplo.


Esta pagina me dura mucho para abrir el javascrpt como solucionar esto?

freedarwuin

Este pluging estara bien realizado

#include <iostream>
#include <cstring>
#include <vector>
#include "../utils.cpp"

// use this line to compile
// g++ -I. -fPIC -shared -g -o mikrotik.com.so www.mikrotik.com
// regex
// http.*\.mikrotik\.com.*\.jpg*\.jpg

string get_filename(string url) {
        vector<string> resultado;
        if (url.find("?") != string::npos) {
            stringexplode(url, "?", &resultado);
            stringexplode(resultado.at(resultado.size()-2), "/", &resultado);
            return resultado.at(resultado.size()-1);           
        } else {
            stringexplode(url, "/", &resultado);
            return resultado.at(resultado.size()-1);
        }
}

extern "C" resposta getmatch(const string url) {
    resposta r;   

    if ( (url.find(".mikrotik.com/") != string::npos) and (url.find(".jpg") != string::npos)
     {
       
        r.file = get_filename(url);
        if (!r.file.empty()) {
            r.match = true;
            r.domain = "Mikrotik";
        } else {
            r.match = false;
        }
    } else {
        r.match = false;
    }
    return r;
}

es un ejemplo del codigo original es para saber si lo entendi..


luego si esta bien en donde importo este codigo

firecold

Cita de: freedarwuin en Junio 07, 2013, 09:19:54 AM
Este pluging estara bien realizado

#include <iostream>
#include <cstring>
#include <vector>
#include "../utils.cpp"

// use this line to compile
// g++ -I. -fPIC -shared -g -o mikrotik.com.so www.mikrotik.com
// regex
// http.*\.mikrotik\.com.*\.jpg*\.jpg

string get_filename(string url) {
        vector<string> resultado;
        if (url.find("?") != string::npos) {
            stringexplode(url, "?", &resultado);
            stringexplode(resultado.at(resultado.size()-2), "/", &resultado);
            return resultado.at(resultado.size()-1);           
        } else {
            stringexplode(url, "/", &resultado);
            return resultado.at(resultado.size()-1);
        }
}

extern "C" resposta getmatch(const string url) {
    resposta r;   

    if ( (url.find(".mikrotik.com/") != string::npos) and (url.find(".jpg") != string::npos)
     {
       
        r.file = get_filename(url);
        if (!r.file.empty()) {
            r.match = true;
            r.domain = "Mikrotik";
        } else {
            r.match = false;
        }
    } else {
        r.match = false;
    }
    return r;
}

es un ejemplo del codigo original es para saber si lo entendi..


luego si esta bien en donde importo este codigo

en esta linea:

// g++ -I. -fPIC -shared -g -o mikrotik.com.so www.mikrotik.com

tienes un pequeño error, tiene que quedar asi:

g++ -I. -fPIC -shared -g -o mikrotik.com.so mikrotik.com.cpp

tambien en esta linea:

http.*\.mikrotik\.com.*\.jpg*\.jpg

tienes que dejarla asi;

http.*\.mikrotik\.com.*(\.jpg|\.png)

y para terminar en:

if ( (url.find(".mikrotik.com/") != string::npos) and (url.find(".jpg") != string::npos)
     {


dejalo asi:

if ( (url.find(".mikrotik.com/") != string::npos)
         ) {


Espero te sirva, Saludos

freedarwuin

Cita de: firecold en Junio 07, 2013, 09:28:47 AM
en esta linea:

// g++ -I. -fPIC -shared -g -o mikrotik.com.so www.mikrotik.com

tienes un pequeño error, tiene que quedar asi:

g++ -I. -fPIC -shared -g -o mikrotik.com.so mikrotik.com.cpp

tambien en esta linea:

http.*\.mikrotik\.com.*\.jpg*\.jpg

tienes que dejarla asi;

http.*\.mikrotik\.com.*(\.jpg|\.png)

y para terminar en:

if ( (url.find(".mikrotik.com/") != string::npos) and (url.find(".jpg") != string::npos)
    {


dejalo asi:

if ( (url.find(".mikrotik.com/") != string::npos)
        ) {


Espero te sirva, Saludos


Amigo trate de verificar me lo puede acomodar es que no entiendo la sintaxis

cr1st1an

tengo una pregunta por que es nesesario reiniciar el thunder cada vez que se agrega un plugin nuevo no fuera mas fácil si solo fuese necesario reiniciar el squid solamente bueno mi curiosidad es esa que me expliquen la razon por la cual es necesario reiniciar
solo se que no se nada

luistec

Cita de: cr1st1an en Junio 11, 2013, 09:10:14 PM
tengo una pregunta por que es nesesario reiniciar el thunder cada vez que se agrega un plugin nuevo no fuera mas fácil si solo fuese necesario reiniciar el squid solamente bueno mi curiosidad es esa que me expliquen la razon por la cual es necesario reiniciar
Es para que se actualicen las listas (regex) y tambien para que el binario los reconosca.

Saludos.

francisco.romero87

estube realizando uns inspeccion de speedtest.net y me genera los siguientes link




coloco en el plugin los que me salen pero nunca cachea en que puedo estar fallando?

firecold

Cita de: francisco.romero87 en Enero 06, 2015, 11:02:56 AM
estube realizando uns inspeccion de speedtest.net y me genera los siguientes link




coloco en el plugin los que me salen pero nunca cachea en que puedo estar fallando?

Que herramienta esta usando amigo, para ver las urls, Saludos