Salve pessoal,
Vou tentar deixar aqui mais uma contribuição
pro fórum. 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.
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:
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 Vescovi 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í.
segue como exemplo o plugin uol:
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:
ficaria assim:
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:
e o relatório:
acho que é isso.
fiz mais ou menos uma receita de bolo.
abraço a todos.
Vou tentar deixar aqui mais uma contribuição
pro fórum. 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.
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:
#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 Vescovi 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í.
segue como exemplo o plugin uol:
- Código:
/*
* (c) Copyright 2012 Goodposting. Some Rights Reserved.
* @autor Goodposting. use http.*\.uol\.com\.br.*(\.mp4|\.flv) no bfwcache.acl
*/
#include
#include
#include
#include
#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 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:
#Uol videos
http.*\.uol\.com\.br.*(\.mp4|\.flv)
ficaria assim:
- Código:
#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:
/*
* (c) Copyright 2012 Goodposting. Some Rights Reserved.
* @autor Goodposting. use http.*\.brazilfw\.com\.br.*(\.jpg|\.gif|\.png) no bfwcache.acl
*/
#include
#include
#include
#include
#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 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;
}
e o relatório:
acho que é isso.
fiz mais ou menos uma receita de bolo.
abraço a todos.