Criação e Edição de plugins para BFWCache!!!

Tutoriais BrazilFW 3.x em Português

Criação e Edição de plugins para BFWCache!!!

Mensagempor goodposting » Seg Jun 25, 2012 9:41 am

Imagem

Salve galera BFW,

Vou tentar deixar aqui mais uma contribuição pro fórum e projeto BFW. Trata-se do tutorial básico pra mostrar como editar ou criar um plugin pro bfwcache 2.0 .

Adianto que não sou programador e que vocês não são obrigados a serem programadores para ajudar. A linguagem de programação é a C . É claro que se alguém souber programação vai ficar muito mais fácil resolver problemas e criar plugins inéditos.

Toda ajuda será bem vinda e a primeira cobáia de testes deverá ser a própria pessoa que irá editar ou criar o plugin. Após ver resultados teóricos nos relatórios e práticos na navegação, aí sim será recomendado postar o código do plugin lá no bfwcache development: http://www.brazilfw.com.br/forum/viewtopic.php?f=12&t=83337
só utilizar a tag Code e colar o código.

Estarei editando esse tutorial dentro do possível e de acordo com o desempenho do pessoal eu finalizo.

:o!

vamos aos passos:

1 - Instale a ultima versão estável do bfw 3.x. 64 bits a preferência é da 3.0.257 nesse caso. (25-06-2012) obs.: pode instalar na VM (máquina virtual) ou PC real.

2 - Depois das conexões lógicas devidamente configuradas e a internet funcionando no servidor, abra seu webadmin e clique em Addons / Gerenciar / Instalar. Procure a BT (BuildTree) na lista e clique em Instalar. obs.: desligue o monitor e vá dormir. rsrsr vai demorar um pouco para baixar toda a BT.

3 - Baixe o source do bfwcache. http://www.brazilfw.com.br/downloads/addons/bfw3.x/sources/bfwcache/bfwcache-2.0.tar.gz ...depois você pode descompactar esse arquivo dentro de uma pasta qualquer ou crie uma. Crie uma pasta chamada TESTE dentro do /partition/brazilfw-3.x-build e deixe o conteúdo la dentro. se quiser, você pode descompactar pelo windows, mas o comando para descompactar (ou extrair) no linux é o extract .

obs.: muita coisa pode ser feita com o mouse, fora do terminal. então se você não gosta (ou não está acostumado) do terminal, basta instalar e configurar o WinSCP no seu PC com windows: http://ufpr.dl.sourceforge.net/project/winscp/WinSCP/5.0.7%20beta/winscp507setup.exe

4 - Entre no seu servidor pelo SSH (instale e configure o Putty para isso http://the.earth.li/~sgtatham/putty/0.62/x86/putty.exe). vá ao diretório onde está instalada a BT. exemplo: /partition/brazilfw-3.x-build

5 - Digite no terminal: ./setdevel.sh para iniciar a BT

6 - Instale o Notepad++ http://download.tuxfamily.org/notepadplus/6.1.3/npp.6.1.3.Installer.exe . depois abra o seu WinSCP e configure o notepad++ pra ser o seu editor. vá em Options / Preferences / Editors e clique em Add ...procure o notepad++ nas pastas do seu windows e aponte o .exe . depois deixe ele no topo da lista clicando em UP ou Down. a partir de agora todo arquivo que você for abrir via SCP será aberto no notepad++ .

7 - Com a BT do BFW 3.x iniciada, no seu SCP aberto e conectado a seu servidor bfw, vá na sua pasta TESTE (citada acima) e entre no source do bfwcache. entre na pasta dos plugins (geralmente /partition/brazilfw-3.x-build/teste/bfwcache-2.0/bfwcache/plugins) e comece seu trabalho de edição ou criação.

os arquivos estão com extensão .cpp . clique neles! esses são os plugins em formato "editável" para você usar como exemplo na fabricação de outro plugin ou até mesmo editar o código aberto, consertando plugins com problema.

exemplo: caso uma url no código esteja .baixaki.com.br e o site mudou para .baixaki.net ,então você faz a mudança devida, salva e recompila o plugin em seguida. depois de recompilado, você faz o teste navegando, baixando algo e vendo o relatório para ver se deu certo sua edição.

8 - Com o plugin editado e salvo por você, vamos a compilação:
deixei exemplo de como compilar o plugin microsoft.com. aí é só trocar pelo plugin do seu interesse.
com a BT (ambiente de desenvolvimento) iniciada por você é só digitar ou colar um dos comandos abaixo no terminal aberto via Putty (ou direto no teclado do servidor).

antes, para você não ficar perdido, você deverá entrar no diretório dos plugins com o comando CD ...digite cd TESTE ,depois cd bfwcache-2.0 e por aí vai... até chegar no diretório que já citei antes:
/partition/brazilfw-3.x-build/teste/bfwcache-2.0/bfwcache/plugins

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

após ter compilado o plugin com um dos comandos acima, você terá um arquivo com a extensão .so que é o plugin que precisamos. o mesmo estará no diretório em que você aplicou o comando (/partition/brazilfw-3.x-build/teste/bfwcache-2.0/bfwcache/plugins) e ele deverá ser copiado para pasta LIB, que é o diretório onde se encontra os plugins do bfwcache: /lib/bfwcache

isso pode ser feito via teclado no terminal ou mesmo com o mouse, via SCP. deixe sua criatividade fluir e saberá qual o caminho mais rápido ou fácil.
obs.: caso você não esteja vendo o plugin com a extensão .so em meio aos editáveis (com entensão .cpp) , lá no SCP, você pode atualizar a pasta teclando Ctrl+R ou clicando no botão Refresh.

9 - Depois do plugin copiado para pasta LIB você NÃO pode se esquecer de usar o CHMOD, dando permissão para execução do plugin. isso pode ser feito também via SCP, clicando com o botão direito do mouse sobre o plugin e clicando em Properties (propriedades), digitando em seguida o valor 0755 .

10 - Agora você precisa dar um stop e um start no bfwcache (ou restart) para carregar o novo plugin. a partir daí você começa os testes em cima desse plugin. navegando, baixando e monitorando o relatório.

11 - Se você reiniciar o servidor agora, irá perder o plugin que acabou de copiar para pasta LIB. então terá que usar o comando PACKAGE BFWCACHE para manter as suas mudanças definitivamente.

com o bfwcache parado (stop) vá ao diretório /partition e digite o comando package bfwcache . pronto! agora você via SCP pode copiar o novo pacote bfwcache.bfw (ou .bfw64) para seu PC e depois digite o comando MT no terminal para então copiar o novo pacote para a pasta MNT do seu servidor.

nesse caso você substitui o pacote atual e não esquece de iniciar novamente seu bfwcache para continuar os testes. depois, com você fora da pasta MNT, digite UMT no terminal para ocultar novamente o conteúdo da pasta.

obs.: no caso de plugin novo, deverá ser criada nova linha no bfwcache.acl

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


o diretório do bfwcache.acl é :
/etc/brazilfw/bfwcache

depois de editado e salvo, o arquivo bfwcache.acl deve ser salvo também permanentemente com o comando BACKUP . suas configuraçãoes entram em vigor depois de um reload no squid.

para ninguém ficar perdido, na criação de novo plugin, procurem deixar comentado no código do plugin, o regex que deixei como modelo acima. assim o próximo que for compilar seu plugin, saberá o que terá que colocar no arquivo bfwcache.acl .

como o professor Bruno já disse, o grande segredo não é compilar plugin, mas sim descobrir os segredos dos sites e servidores na internet.
para começar a conversa, você pode abrir o LOG do seu squid lá em /partition/squid e começar a vasculhar os endereços armazenados.

também existem programas disponíveis na internet que ajudam e mostram código fonte, url, cabeçalhos, etc... existe uma extensão (complemento) para o Firefox que mostra cabeçalhos e url's. é por aí. :o!



segue como exemplo o 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;
}



bom, esse é o conteúdo do arquivo uol.com.br.cpp . você pode copiar esse código, abrir um arquivo de texto novo, colar, salvar e depois renomear a extensão de .txt para .cpp . simples assim.
olhem o código...
r.domain = "uol";

uol é o nome que irá aparecer no relatório do bfwcache. então, você pode colocar o que quiser aí no lugar desse uol. se colocar seu nome vai aparecer seu nome. simples assim.

olhem esse outro....
if ( (url.find(".uol.com.br/") != string::npos)

.uol.com.br é a url que deverá ser procurada pelo bfwcache. depois disso, tudo que você quer ou precisa fazer cache, vai ser indicado na sua linha regex, lá no bfwcache.acl . nesse caso, se você precisar fazer cache do nosso fórum BFW, basta trocar o .uol.com.br/ por .brazilfw.com.br/forum/ ...depois, no bfwcache.acl ,você irá montar sua linha (regex) seguindo o modelo que já foi citado nesse tutorial.
o modelo:
Código: Selecionar todos
#Uol videos
http.*\.uol\.com\.br.*(\.mp4|\.flv)


ficaria assim:
Código: Selecionar todos
#Fórum BFW
http.*\.brazilfw\.com\.br.*(\.jpg|\.gif|\.png)


nesse caso, deixei um exemplo real de como criar um plugin novo (seguindo um modelo existente) que faz cache de imagens do nosso fórum BFW.

tomando esse plugin uol como um MODELO funcional e básico, você poderá usar ele para criar outros plugins de seu interesse. para isso, basta ir mudando o que irá aparecer no relatório, a url de seu interesse e demais dados seus de autoria e linha regex.

vejam esse código aqui também:
// use this line to compile 64
// g++ $BUILD64 -I. -fPIC -shared -g -o uol.com.br.so uol.com.br.cpp


isso fica no início do código e é apenas um comentário do autor. você como autor ou editor, pode também fazer seus comentários para o próximo que for compilar. reparem que na linha, o uol.com.br.so e o uol.com.br.cpp são os nomes dos arquivos.

nada demais não é?

ficaria assim:
//usem essa linha para compilar em 64bits
// g++ $BUILD64 -I. -fPIC -shared -g -o brazilfw.com.br.so brazilfw.com.br.cpp


agora, mastigado fica assim:
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;
}

depois...
Imagem
e o relatório:
Imagem
acho que é isso.
fiz mais ou menos uma receita de bolo. :mrgreen:
abraço a todos.
!+

Imagem
Haga clic aquí: :arrow: Creación y edición de plugins para BFWCache por GoodPosting
Avatar do usuário
goodposting
BFW Beneméritos
 
Mensagens: 1623
Registrado em: Qua Jan 04, 2006 11:53 pm
Localização: ES - Brasil
BrazilFW Box: Phenom X-6 1100T, 32GB DDR3 kingston, 480 GB SSD Corsair sata 3, ECS Black series A890gxma, 7 ETH's gigabit, fonte corsair 500w - BFW 261 64 bits = Squid nativo, QoS, Ip x mac, Subredes e EPM 2.0

Voltar para BrazilFW 3.x

Quem está online

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