Creación y edición de plugins para BFWCache por GoodPosting

Creación y edición de plugins para BFWCache por GoodPosting

Mensagempor nclaria » Sex Set 07, 2012 9:17 pm

Imagem

Buenas chicos de BFW,

Voy a intentar dejar aqui otra contribución mas para el foro y el proyecto BFW. Se trata de un tutorial básico para mostrar como editar o crear un plugin para bfwcache 2.0 .

Les adelanto que no soy programador y que ustedes no necesitan ser programadores para poder ayudar.. El lenguaje de programación es C . Es obvio que si alguno de ustedes sabe programación, le va a resultar mucho mas fácil resolver problemas y crear plugins inéditos.

Toda ayuda será bien venida y el primer conejillo de indias de prueba, deberá ser la propia persona que editará o creará el plugin. Después de ver los resultados teóricos en los informes y los prácticos en la navegación, ahí si será recomendado publicar el código del plugin en el tema bfwcache development: http://www.brazilfw.com.br/forum/viewtopic.php?f=12&t=83337
sólo recuerde utilizar el tag Code y coloque el código.

Estaré editando este tutorial dentro de lo posible y de acuerdo con el desempeño del personal, lo finalizo.

:o!

vamos por pasos:

1 - Instale la última versión estable de bfw 3.x. 64 bits de preferencia la 3.0.257 en este caso, (25-06-2012), (al momento de la traducción 3.0.258).
obs.: puede instalarla en una VM (máquina virtual) o PC real.

2 - Después que las conecciones lógicas estén debidamente configuradas e internet funcionando en el servidor, abra su webadmin haga click en Addons / Administrar / Instalar. Busque el BT (BuildTree) en la lista cliquee en Instalar. obs.: apague el monitor, el se va a dormir. jejejeje va a demorar un poco para bajar todo el BT.

3 - Baje el código fuente de bfwcache. http://www.brazilfw.com.br/downloads/addons/bfw3.x/sources/bfwcache/bfwcache-2.0.tar.gz ...depués usted puede descomprimir ese archivo dentro de un directorio cualquiera o bien cree uno. Cree un directorio llamado TESTE dentro de /partition/brazilfw-3.x-build y deje el contenido ahi adentro. Si quiere, usted puede descomprimir a través de windows, pero el comando para descomprimir (o extraer) en linux es extract .

obs.: muchas cosas pueden ser hechas con el mouse, fuera de la terminal. Entonces, si no le gusta, o no está acostumbrado a usar la terminal, sólo tiene que instalar y configurar el WinSCP en su máquina con windows: http://ufpr.dl.sourceforge.net/project/winscp/WinSCP/5.0.7%20beta/winscp507setup.exe

4 - Entre a su servidor por SSH (instale y configure el Putty para eso http://the.earth.li/~sgtatham/putty/0.62/x86/putty.exe). Vaya al directorio donde está instalado el BT. Ejemplo: /partition/brazilfw-3.x-build

5 - Digite en la terminal: ./setdevel.sh para iniciar el BT

6 - Instale el Notepad++ http://download.tuxfamily.org/notepadplus/6.1.3/npp.6.1.3.Installer.exe . despues abra su WinSCP y configure el notepad++ para que sea su editor. Vaya a Options / Preferences / Editors y cliquee en Add ...busque el notepad++ en el directorio de su windows y apunte el .exe . Después déjelo en la parte superior de la lista haciendo click en ARRIBA y ABAJO. A partir de ahora todo archivo que usted abra via SCP será abierto en notepad++ .

7 - Con el BT de BFW 3.x iniciada, en su SCP abierto y conectado al servidor BFW, vaya a el directorio TESTE (citado antes) e ingrese en la fuente de BFWCache. Entre al directorio de plugins (generalmete /partition/brazilfw-3.x-build/teste/bfwcache-2.0/bfwcache/plugins) y comience su trabajo de edición o de creación.

Los archivos están com extensión .cpp . haga click en ellos! esos son los plugins en formato "editable" para que usted pueda usarlos como ejemplo en la fabricación de otro plugin o así mismo editar el código abierto, corrigiendo plugins con problemas.

Ejemplo: En el caso que una url en el código fuera .baixaki.com.br y el sitio cambia a .baixaki.net ; usted puede hacer el cambio necesario, guarda y recompila el plugin enseguida. Después de recompilado, haga el test navegando, bajando algo o viendo el informe para saber si su edición fué acertada.

8 - Con el plugin editado y guardado, vamos a la compilación:
Dejé el ejemplo de como compilar el plugin microsoft.com. Solo debe cambiarlo por el plugin de su interés.
Con el BT (ambiente de desarrollo) iniciado por usted, sólo tiene que escribir o pegar uno de los siguientes comandos en el terminal abierto a través del Putty (o directo en el teclado del servidor).

Para que no se pierdan, primero ingrese al directorio de los plugins con el comando CD ...digite cd TESTE ,después cd bfwcache-2.0 y asi sucesivamente hasta llegar al directorio antes mencionado:
/partition/brazilfw-3.x-build/teste/bfwcache-2.0/bfwcache/plugins

para compilar en 64 bits: g++ $BUILD64 -I. -fPIC -shared -g -o microsoft.com.so microsoft.com.cpp
para compilar en 32 bits: g++ $BUILD32 -I. -fPIC -shared -g -o microsoft.com.so microsoft.com.cpp

Después de haber compilado el plugin con uno de los comandos anteriores, tendrá un archivo con extensión .so que es el plugin que necesitamos. El mismo estará en el directorio en que usted haya ejecutado el comando (/partition/brazilfw-3.x-build/teste/bfwcache-2.0/bfwcache/plugins) y el deberá ser copiado al directorio LIB, que es el directorio en donde se encuentran los plugins del BFWCache.: /lib/bfwcache

Esto se puede hacer a través del teclado del terminal o con el ratón, a través de SCP. Deje que su creatividad fluya y sabrá que camino es más rápido o más fácil.
obs.: En el caso que no vea el plugin con la extensión .so en medio de los editables (con entensión .cpp) , en el SCP, puede actualizar la vista tecleando Ctrl+R o haciendo click en el botón Refresh.

9 - Después de copiar el plugin al directorio LIB, no debe olvidar ejecutar el comando CHMOD, dando permisos de ejecución al plugin. Esto puede ser hecho también a través del SCP, haciendo click con el botón derecho del mouse sobre el plugin y eligiendo Properties (propriedades), digitando en seguida el valor 0755 .

10 - Ahora debe dar stop y start al BFWCache (o restart) para cargar el nuevo plugin. A partir de allí comience los test de dicho plugin, navegando, bajando y monitoreando los reportes.

11 - Si reinicia el servidor, perderá el plugin que acaba de copiar al directorio LIB. Para que esto no ocurra, debe usar el comando PACKAGE BFWCACHE para mantener las modificaciones definitivamente.

Conn BFWCache parado (stop) vaya al directorio /partition y escriba el comando package bfwcache . Listo! ahora via SCP puede copiar el nuevo paquete bfwcache.bfw (o .bfw64) para su PC y después escriba el comando MT en la terminal para entonces copiar el nuevo paquete al directorio MNT de su servidor.

en este caso se reemplaza el paquete actual y no se olvide de reiniciar el bfwcache para continuar con las pruebas. Después, fuera del directorio MNT, escriba UMT en la terminal para ocultar nuevamente el contenido del directorio.

obs.: En el caso de un plugin nuevo, deberá ser creada una linea nueva en bfwcache.acl

siga el modelo:
Código: Selecionar todos
#Uol videos
http.*\.uol\.com\.br.*(\.mp4|\.flv)


el directorio de bfwcache.acl es :
/etc/brazilfw/bfwcache

Después de editado y guardado el archivo bfwcache.acl debe guardarse permanentemente cone l comando BACKUP . sus configuraciones entran en funcionamiento después de recargar squid.

Para que nadie se pierda. En la creación de nuevo plugin, recuerde dejar comentado arriba en el código del plugin, los parámetros regex (expresión regular). Así el próximo que quiera compilar su plugin, sabrá que debe colocar en el archivo bfwcache.acl .

Como el profesor Bruno dice: El gran secreto no es compilar el plugin, sino descubrir los secretos de los sitios y servidores de internet.
Para empezar a conversar se puede ver el LOG del squid en /partition/squid y ver las direcciones almacenadas.

También hay programas disponibles en internet que ayudan a mostrar el código fuente, url, encabezados, etc . . . existe una extensión (complemento) para Firefox que muestra encabezados y url's. :o!



Sigue como ejemplo el plugin uol:
Código: Selecionar todos
/*
 * (c) Copyright 2012 Goodposting. Some Rights Reserved.
 * @autor Goodposting. use http.*\.uol\.com\.br.*(\.mp4|\.flv) no bfwcache.acl
 */

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

using namespace std;

// use this line to compile 64
// g++ $BUILD64 -I. -fPIC -shared -g -o uol.com.br.so uol.com.br.cpp 

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 get_match(const string url) {
    resposta r;

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



Bien, ese es el contenido del archivo uol.com.br.cpp . Usted puede copiar este codigo, crear un archivo de texto nuevo, pegar y guardar y después cambiar la extensión de .txt a .cpp . Asi de simple.
Mire el código...
r.domain = "uol";

uol es el nombre que aparecerá en el informe del bfwcache. Entonces, puede colocar lo que quiera ahi en lugar de uol. Si quiere poner su nombre, aparecerá su nombre. Asi de simple.

Vea este otro....
if ( (url.find(".uol.com.br/") != string::npos)

.uol.com.br es la url que deberá ser buscada por bfwcache. Después de eso, todo lo que precisa cachear, va a ser indicado en la línea de expresión regular (regex), ubicada en bfwcache.acl . En este caso, si quiere cachear nuestro foro BFW, basta cambiar el .uol.com.br/ por .brazilfw.com.br/forum/ ...después, en bfwcache.acl , deberá crear su línea (regex) siguiendo el modelo que ya fué citado en este tutorial.
El modelo:
Código: Selecionar todos
#Uol videos
http.*\.uol\.com\.br.*(\.mp4|\.flv)


Quedaría así:
Código: Selecionar todos
#Fórum BFW
http.*\.brazilfw\.com\.br.*(\.jpg|\.gif|\.png)


En este caso, dejé un ejemplo real de como crear un plugin nuevo (siguiendo el modelo de uno existente) que hace caché de imagenes de nuestro foro BFW.

Tomando ese plugin uol como un MODELO funcional y básico, podrá crear otros plugins de su interés. Para esto, solo necesita cambiar lo que aparece en el informe o reporte, la url de su interés y demás datos suyos de autoría y la línea regex.

Vean este código tambiém:
//use esta línea para compilar en 64bits
// g++ $BUILD64 -I. -fPIC -shared -g -o uol.com.br.so uol.com.br.cpp


Este es el comienzo del código y es apenas un comentario del autor. Usted como autor o editor, también puede dejar sus comentarios para el próximo que lo fuera a compilar. Tenga en cuenta que las lineas, uol.com.br.so y uol.com.br.cpp son los nombres de los archivos.

No hay problema cierto?

Quedaría así:
//use esta línea para compilar en 64bits
// g++ $BUILD64 -I. -fPIC -shared -g -o brazilfw.com.br.so brazilfw.com.br.cpp


Ahora, masticado queda así:
Código: Selecionar todos
/*
* (c) Copyright 2012 Goodposting. Some Rights Reserved.
* @autor Goodposting. use http.*\.brazilfw\.com\.br.*(\.jpg|\.gif|\.png) no bfwcache.acl
*/

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

using namespace std;

// use this line to compile 64
// g++ $BUILD64 -I. -fPIC -shared -g -o brazilfw.com.br.so brazilfw.com.br.cpp

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 get_match(const string url) {
    resposta r;

   if ( (url.find(".brazilfw.com.br/forum/") != string::npos)
   ) {
     
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "brazilfw";
      } else {
         r.match = false;
      }
   } else {
      r.match = false;
   }
   return r;
}

Después...
Imagem
Y el reporte:
Imagem
Creo que eso es todo.
Más o menos una receta de pastel. :mrgreen:
abrasos a todos.
!+

Traducción realizada del tutorial de Goodposting el día 07/09/2012
Cualquier diferencia o error con el original sitado al pié, por favor infónmenme por MP.
Fuente:
http://www.brazilfw.com.br/forum/viewtopic.php?f=91&t=83971
Avatar do usuário
nclaria
BFW Moderator
BFW Beneméritos
BFW Documenter
BFW Manager
 
Mensagens: 1283
Registrado em: Sex Set 03, 2010 12:13 am
Localização: Santa Fe, Argentina
BrazilFW Box: Maquina Física
CPU Intel I7 4790K
Memoria 16Gb / 7 links
Solid Drive Kingston 240 GB
BFW 3.0.262 64 bits
Servicios Activos Squid QOS
No Addons

Re: Creación y edición de plugins para BFWCache por GoodPost

Mensagempor Mascotmobile » Sex Set 07, 2012 11:17 pm

..:: Eu sou a lembrança daqueles que lembram de mim. ::..
Avatar do usuário
Mascotmobile
BFW Beneméritos
 
Mensagens: 493
Registrado em: Seg Out 12, 2009 1:17 pm
Localização: São Paulo - SP
BrazilFW Box: .


Voltar para BrazilFW 3.x

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron