Instalación de ThunderCache 3.1 paralelo a Mikrotik

Publicado en 'Redes Inalámbricas' por joemg6, 8 Ago 2011.





  1. luistec

    luistec Miembro frecuente

    Registro:
    5 Mar 2012
    Mensajes:
    206
    Likes:
    19
    Temas:
    0




    Fiajte si esta bien tu contraseña y pass para que se conecte al Mikrotik tambien si le diste permisos a la carpeta chmod 777 /var/www/thunder/* porque hice la prueba en el Address List, Hotsopt y el PPPoe esta funcionando y sobre la imagen actualiza la base de datos como publico joemg.
     


  2. willysantana

    willysantana Miembro frecuente

    Registro:
    15 Abr 2012
    Mensajes:
    189
    Likes:
    7
    Temas:
    5
    funciona.

    gracias amigo joemg.

    amigo tengo un server con 4gb de ram cual seria el valor de [cache men] squid.conf
     
    Última edición: 10 Ago 2012
  3. joemg6

    joemg6 Miembro maestro

    Registro:
    5 May 2010
    Mensajes:
    455
    Likes:
    198
    Temas:
    4
    Edición de plugins thundercache 3.1.2

    Creo que es necesario este tutorial para así 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 muetra 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)

    [​IMG]

    Como vemos en la imagen el dominio del servidor es "speedtest.movistar.com" y la extención es "jpg"

    Para editar plugin descargar el siguiente archivo donde contiene los archivos necesarios para compilar, tambien hay códigos de fuente
    http://www.joemg.host56.com/pl/pluginmaker.zip

    Luego lo descomprimimos y lo movemos por ej. a la carpeta /etc/thunder/
    Código:
    wget [URL]http://www.joemg.host56.com/pl/pluginmaker.zip[/URL]
    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
    Código:
    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

    [​IMG]

    Luego pasamos a compilar el código de fuente con los siguientes comandos (todo esto por terminal).
    Código:
    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 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
    [​IMG]


    En varios casos solo es necesario modificar este código de fuente ahí paso a detallar las partes a modificar.
    Código:
    #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.*\[COLOR=Red].movistar[/COLOR]\[COLOR=Red].com[/COLOR]\[COLOR=Red].pe.[/COLOR]*\[COLOR=Blue].jpg[/COLOR]
    
    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("[COLOR=Red].movistar.com.pe/[/COLOR]") != string::npos) and (url.find("[COLOR=Blue].jpg[/COLOR]") != string::npos) 
        ) {
            
            r.file = get_filename(url);
            if (!r.file.empty()) {
                r.match = true;
                r.domain = "[COLOR=Lime]speedtest[/COLOR]";
            } 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.

    PD. 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.

    Como un bonus el código de fuente de softnix.
    Código:
    #include <iostream>
    #include <cstring>
    #include <vector>
    #include "../utils.cpp"
    // use this line to compile
    // g++ -I. -fPIC -shared -g -o softnix.com.so softnix.com.cpp
    //regex
    // http.*\.softnyx\.com.*\.xfs
    
    string dominiotxt="softnyx";
    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()-4) + "_" + resultado.at(resultado.size()-3) + "_" + resultado.at(resultado.size()-2) + "_" +resultado.at(resultado.size()-1);           
            } else {
                stringexplode(url, "/", &resultado);
                return resultado.at(resultado.size()-4) + "_" + resultado.at(resultado.size()-3) + "_" + resultado.at(resultado.size()-2) + "_" +resultado.at(resultado.size()-1); ;
            }
    }
    
    extern "C" resposta getmatch(const string url) {
        resposta r;   
    if ( (url.find("/RLS/") != string::npos) 
       ) {
    dominiotxt="softnyx_rakion";
    }
    if ( (url.find("/wls/") != string::npos) 
       ) {
    dominiotxt="softnyx_wolf";
    }
    if ( (url.find("/GLS/") != string::npos) 
       ) {
    dominiotxt="softnyx_gunbound";
    }
    if ( ((url.find(".softnyx.com") != string::npos) )
       ) {
          
           r.file = get_filename(url);
          if (!r.file.empty()) {
             r.match = true;         
             r.domain = dominiotxt;
          } else {
             r.match = false;
          }
       } else {
          r.match = false;
       }
       return r;
    }
    
    [​IMG]

    A practicar y compartamos nuestros plugins, y siempre tratemos de ayudarnos.
     
    Última edición: 10 Ago 2012
    A coraye, JOtiniano, tonyvzla y otras 3 personas les gustó este mensaje.
  4. leandro1979

    leandro1979 Miembro frecuente

    Registro:
    9 Set 2011
    Mensajes:
    63
    Likes:
    4
    Temas:
    0
    Buenos dias
    Joemg intente usar tu tcmdisk.sh para agregar discos a thunder
    pero note que lo que hace es un espejo del discos no distribuye la informacion
    entre discos
    quisiera saber si existe alguna forma de hacer como lo hace thunder 7 que puedes ir agregando discos
    a medida que sea necesaria

    por el momento estoy usando raid pero el inconveniente esque tienes que tener todos los discos
    iguales y solo lo puedes hacer una vez no puedes agregar mas discos para seguir almacenando
    si alguien conoce alguna forma de ir agregando discos a medida que se necesite por favor publivarla
    ya que seria de muchisima ayuda
    no se como adjuntar archivos le voy a enviar el archivo de raid a dgonzaleznet para que el lo adjunte
    lo unico que tienes que hacer es antes de correr el script usar este comando

    apt-get install mdadm

    en la pantalla de pregunta solo poner enter

    saludos
    leandro
     
  5. joemg6

    joemg6 Miembro maestro

    Registro:
    5 May 2010
    Mensajes:
    455
    Likes:
    198
    Temas:
    4
    Se va a publicar esa implementación está todavía en pruebas pero este caso será necesario tener un disco duro solo para sistema y los demás para caché y así se pueden aumentar si es que se quiere, en el script tcmdisk.sh solo es para casos en que se quiera tener el cache en un disco duro aparte de mayor capacidad así si en caso de que el sistema se averíe solo se hace backup al mysql y se instala de nuevo el disco de sistema, luego se integra el disco caché y así no perdemos el caché guardado.
    Asignale un 20 a 25 % del total de memoria RAM que tengas y monitorea como te va.
     
    Última edición: 10 Ago 2012
  6. dgonzaleznet

    dgonzaleznet Miembro maestro

    Registro:
    24 Oct 2011
    Mensajes:
    406
    Likes:
    41
    Temas:
    18

    Este es el código que me envió Leandro, lo comparto con ustedes para que lo implementen



    #!/bin/bash

    #COMANDOS
    SH="/bin/sh"
    RDEV="/usr/sbin/rdev"
    SED="/bin/sed"
    AWK="/usr/bin/awk"
    HEAD="/usr/bin/head"
    GREP="/bin/grep"
    DD="/bin/dd"
    MDADM="/sbin/mdadm"
    CAT="/bin/cat"
    MKFS="/sbin/mkfs.ext4"
    WC="/usr/bin/wc"

    echo "##############################################################"
    echo "## ##"
    echo "## THUNDERCACHE RAID MAKER ##"
    echo "## ##"
    echo "##############################################################"
    HD_SISTEMA=`$RDEV | $SED 's/[0-9]//g' | $AWK '{print $1}' | $HEAD -n1`
    echo ""
    echo "S.O HARD DISK [ $HD_SISTEMA ]"
    echo ""
    echo "OTHERS:"
    echo ""
    HDS=`ls /dev/sd* | $SED '/[0-9]/d' | $GREP -v $HD_SISTEMA`
    start=1
    for i in $HDS
    do
    echo "DISK [$start]: $i"
    start=`expr $start + 1`
    done

    echo ""
    echo -n "CREATE RAID USING ALL THIS OTHER DISKS? [y/n]: "
    read C

    if [ $C = "y" ] ; then

    echo ""
    echo "PREPARING....."
    echo ""

    for j in $HDS
    do
    echo " PREPARING DISK: [ $j ]"
    echo ""
    $DD if=/dev/zero of=$j bs=1M count=1
    done

    start=`expr $start - 1`
    echo "TOTAL OF DISKS THAT WILL FORM THE ARRAY: [ $start ]"
    echo "PREPARING RAID.."
    AM=`$CAT /proc/mdstat | grep "active" | awk '{ print $1 }'`
    for a in $AM
    do
    $MDADM --stop /dev/$a
    done
    $MDADM --create /dev/md0 --level=0 -f --raid-devices=$start $HDS &&
    $CAT /proc/mdstat &&
    $MKFS -v -m .1 -b 4096 -E stride=32,stripe-width=64 /dev/md0 &&
    $MDADM --examine --scan >> /etc/mdadm/mdadm.conf
    FSTAB_FLAG=`$CAT /etc/fstab | $GREP /dev/md0 | $GREP -v grep | $WC -l`
    if [ $FSTAB_FLAG -eq 0 ] ; then
    echo "/dev/md0 /thunder ext4 noatime,async,nosuid 0 0" >> /etc/fstab
    fi
    mount /dev/md0
    MNT=`mount | grep "/dev/md0" | grep -v grep | wc -l`
    if [ $MNT -eq 0 ]; then
    $SED -i '\/dev\/md0/d' /etc/fstab
    echo ""
    echo "ERROR - COULD NOT CREATE THE RAID 0 ARRAY!!"
    echo ""
    else
    echo ""
    echo "DONE!!! PLEASE, RESTART YOUR SERVER!!!"
    echo ""
    fi
    else

    echo "CANCELLED !!!"
    echo ""

    fi

    lo copian en un archivo en su thunder, hace un chmod 777 nombrearchivo y luego lo ejecutan con ./nombrearchivo

    pilasssss
     
    Última edición: 10 Ago 2012
  7. WIFIXD

    WIFIXD Miembro maestro

    Registro:
    28 Feb 2012
    Mensajes:
    320
    Likes:
    37
    Temas:
    78
    Buenas, una consulta cuando se esta instalando el thunder y un paquete no se instala por demora del servidor , etc como se puede hacer ahi, se tiene que instalar todo denuevo ?? o como se haria en ese caso ?
     
    Última edición: 10 Ago 2012
  8. joemg6

    joemg6 Miembro maestro

    Registro:
    5 May 2010
    Mensajes:
    455
    Likes:
    198
    Temas:
    4
    Tambien tengo ese script lo que hace ese script es montar en la carpeta /thunder los discos duros apartes que el de sistema pero en sistema Raid, el detalle es que tambien no se pueden expandir a más discos.
     
  9. leandro1979

    leandro1979 Miembro frecuente

    Registro:
    9 Set 2011
    Mensajes:
    63
    Likes:
    4
    Temas:
    0
    exactamente el inconveniente de raid esque no se puede seguir aumentando mas discos
    y que todos los discos tienen que ser del mismo volumen
    por eso me parecería una excelente aplicación poder ingresar mas discos a medida que se requiera
    obviamente se destinaría un disco exclusivo para el sistema operativo tal y como se utilizan en todos
    los cache
    saludos
    leandro
     
  10. dgonzaleznet

    dgonzaleznet Miembro maestro

    Registro:
    24 Oct 2011
    Mensajes:
    406
    Likes:
    41
    Temas:
    18
    Y que tal si a ese disco duro que contendría el sistema operativo se le pone un disco duro rigido de esos que son sata3 el thundercache volaría no? la menos tendría un mejor performance
     
  11. WIFIXD

    WIFIXD Miembro maestro

    Registro:
    28 Feb 2012
    Mensajes:
    320
    Likes:
    37
    Temas:
    78
    Porfin logre instalar el thunder , ahora estoy viendo eso de subir archivos para compartir con mis clientes como programas comunes, etc lo subiria.
    En mi thunder tengo que entrar y poner wget http://"pagina de donde va a descargar el archivo " ?? o como se subiria el archivo
     
  12. leandro1979

    leandro1979 Miembro frecuente

    Registro:
    9 Set 2011
    Mensajes:
    63
    Likes:
    4
    Temas:
    0
    como estas
    estoy creando el pluggin de speedtest para mi pais al parecer sale de cache pero no me marca ni hits

    1 3 4 4 6 2 4 4 0 3 . 4 1 8 2 1 1 9 1 7 2 . 16 .1 . 2 T C P _ M I S S / 2 0 0 2 4 5 7 3 6 G E T [ u r l ] h t t p : / / speedtest . hsyns . net / speedtest / random 3 5 0 x 3 5 0 . jpg ? [ / u r l ] - F I R S T _ U P _ P A R E N T / 192. 168 . 10 . 2 image / jpeg


    ######S P E E D T E S T . N E T############
    h t t p .*\ . hsyns \ . net. *\ .jpg

    en que podria equivocarme
    saludos
    leandro

    ----- mensaje añadido, 10-ago-2012 a las 15:02 -----

    supongo que eso agilitaria la busqueda en la base de datos
    mas no el archivo en los discos de almacenamiento
    saludos
    leandro

    ----- mensaje añadido, 10-ago-2012 a las 15:03 -----

    tampoco veo que se crea la carpeta speedtest en thunder
     
  13. joemg6

    joemg6 Miembro maestro

    Registro:
    5 May 2010
    Mensajes:
    455
    Likes:
    198
    Temas:
    4
    El código para el speedtest del servidor hsyns.net Ecuador sería:
    Código:
    #include <iostream>
    #include <cstring>
    #include <vector>
    #include "../utils.cpp"
    
    // use this line to compile
    // g++ -I. -fPIC -shared -g -o hsyns.net.so hsyns.net.cpp
    // regex
    // http.*\[COLOR=Red].hsyns[/COLOR]\[COLOR=Red].net.[/COLOR]*\[COLOR=Red].jpg[/COLOR]
    
    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("[COLOR=Red].hsyns.net/[/COLOR]") != string::npos) and (url.find("[COLOR=Blue].jpg[/COLOR]") != string::npos) 
        ) {
            
            r.file = get_filename(url);
            if (!r.file.empty()) {
                r.match = true;
                r.domain = "[COLOR=Lime]speedtest-ec1[/COLOR]";
            } else {
                r.match = false;
            }
        } else {
            r.match = false;
        }
        return r;
    }
    
    Lo guardas con el nombre hsyns.net.cpp compilas, copias a la carpeta /etc/thunder/plugins/ , le das permiso chmod 777 /etc/thunder/plugins/hsyns.net.so , ingresas su regex
    http.*\.hsyns\.net.*\.jpg
    En el archivo /etc/thunder/thunder.lst o en la opción On-Off plugins del thundeReport, reinicias Thunder y Squid , y pruebas.
    Lo he probado y hace HIT Speedtest del servidor hsyns.net
     
    Última edición: 10 Ago 2012
  14. 4rc4nh3ll

    4rc4nh3ll Miembro frecuente

    Registro:
    23 Nov 2009
    Mensajes:
    139
    Likes:
    6
    Temas:
    8
    Excelente el thunder report, yo lo unico que te pediria seria un plugin para los juegos de softnyx. No se mucho de programacion, mas atras en este post hay un codigo para el plugin que menciono, pero al compilarlo me salta error por todas partes.
     
  15. joemg6

    joemg6 Miembro maestro

    Registro:
    5 May 2010
    Mensajes:
    455
    Likes:
    198
    Temas:
    4
    En realidad es algo sencillo crea un archivo en la carpeta /etc/thunder/thundermaker/plugins/ con el nombre softnix.com.cpp y pegas todo el código que publique, lo guardas, compilas, pones el regex en /etc/thunder/thunder.lst, copias el archivo compilado softnix.com.so a la carpeta /etc/thunder/plugins/, le das permiso, reinicias thunder y squid y listo.
     
    Última edición: 10 Ago 2012
  16. leandro1979

    leandro1979 Miembro frecuente

    Registro:
    9 Set 2011
    Mensajes:
    63
    Likes:
    4
    Temas:
    0
    muchisimas gracias por tu ayuda
    veo que ya marca en el repositoreo de thunder pero cuando hago test
    sigue saliendo la velocidad normal

    otra observacion demora muchisimo en ingresar a la web de thunder (192.168.10.2/thunder)
    esto a que se podria deber y aveces no ingresa

    saludos leandro
     
  17. 4rc4nh3ll

    4rc4nh3ll Miembro frecuente

    Registro:
    23 Nov 2009
    Mensajes:
    139
    Likes:
    6
    Temas:
    8
    Disculpa que te moleste, me podrias pasar el codigo.
    Yo intente hace semanas con este https://www.peruhardware.net/showpost.php?p=2643497&postcount=989
    Pero cuando compilaba me tiraba errores.
     
  18. leandro1979

    leandro1979 Miembro frecuente

    Registro:
    9 Set 2011
    Mensajes:
    63
    Likes:
    4
    Temas:
    0
    como estas
    joemg una pregunta en mi thunder marca
    conexion : 16363
    usuarios : 120

    esto es normal me parece en verdad una exageracion de conexiones
    esto creo que esta causando el retardo al ingreso de thunder
    a que podria deberce tantas conexiones simultaneas

    saludos

    leandro
     
  19. dgonzaleznet

    dgonzaleznet Miembro maestro

    Registro:
    24 Oct 2011
    Mensajes:
    406
    Likes:
    41
    Temas:
    18
    Yo tambien creo lo mismo... porque cuando lo hago por las mañanas cuando casi no tengo gente me demora muy poco en acceder
     
  20. joemg6

    joemg6 Miembro maestro

    Registro:
    5 May 2010
    Mensajes:
    455
    Likes:
    198
    Temas:
    4
    Hice la prueba en un entorno inalambrico y este fue el resultado
    [​IMG]
    En un entorno cableado la velocidad debe ser mayor, a veces tambien el speedtest descarga varios archivos y todos ellos de diferentes tamaños, sería que hagas el test para que tengas en cache todo los tipos de archivos de prueba para que ya no haga la descarga.
    Lo que te muestra ahí son todas las conexiones establecidas y en espera que están al puerto 3128 de squid y el 8080 del thunder, sería que verifiques, porque puede deberse a varias causas por decir si no has protegido el servidor y te estén generando un ataque, o también puede ser que un usuario este con virus.
    Ese código esta mal y también el servidor de softnix que esta en ese código es antiguo, revisa el tema de editar plugins ahí esta el código del softnix.
    https://www.peruhardware.net/showpost.php?p=2715921&postcount=1716
     
Etiquetas: