BFW Cache Development  [INACTIVE]

Here we are going to discuss the future of BrazilFW. It's the right place to request a new feature.

BFW Cache Development

Postby brunovescovi » Tue May 01, 2012 4:43 pm

Boa tarde, pessoal.

Este é o tópico reservado para tratarmos do desenvolvimento do BFW Cache como equipe.

O objetivo é que possamos todos estudar uma forma de ajustar o funcionamento do cache nos diversos sites de maior uso hoje, principalmente o ajuste do youtube.

O source completo e um pequeno guia de compilação estão no caminho abaixo:
http://www.brazilfw.com.br/downloads/addons/bfw3.x/sources/bfwcache/

Ressalto a importância de que esse source não pode ser disponibilizado no fórum para uso em produção. Ou seja, o source é apenas para desenvolvimento e testes daqueles que desejam auxiliar no desenvolvimento do BFW Cache.

Como se trata de um addon homologado pela equipe BFW, o local para discutirmos questões que envolvam o source, bem como alterações e sugestões de mudança no source, será unicamente este tópico. Dessa forma, deixamos o fórum atual de acompanhamento do BFW Cache apenas para tratar da versão que estiver oficial homologada pelo projeto, e este tópico de desenvolvimento vai tratar apenas das questões de programação.

O source atual vai sofrer alterações até a data de lançamento oficial da versão 2.0, portanto não é permitida a criação de links (internos ou externos) para download do source modificado. Toda e qualquer alteração no source deve ser disponibilizada para todos em forma de script dentro deste tópico, com as devidas instruções.

Devemos lembrar que o source dos addons dentro do projeto é sob a licença de software livre, sendo assim, as alterações no source devem disponibilizadas como tal. Não desejamos que os colegas que tiverem acesso aos fontes se tornem pedra de tropeço para o projeto, dificultando o desenvolvimento por não compartilharem conhecimento.

Nosso alvo é ajuntarmos forças para alcançarmos uma solução livre e eficiente de cache, aliado ao já aprovado BFW que já conhecemos há mais tempo.

Um abraço a todos e mãos à obra. :o!
"Amor não é um sentimento. Amor é uma decisão de fazer o melhor possível para Deus e para o seu próximo."
User avatar
brunovescovi
BFW Coordinator
Add-on Developers
Moderators
Documenters
Donors
 
Posts: 3550
Joined: Tue Jun 29, 2010 7:27 pm
Location: Guarapari - ES
BrazilFW box: BFW 3.0.261 64 bits
Intel Celeron D CPU 430 @ 1.80GHz
4 GB DDR3 - HD 500 GB SATA
Squid - QOS - MACxIP - eBackup
Mysql - phpMyAdmin - TcpTrack

Re: BFW Cache Development

Postby williamsio » Tue May 01, 2012 8:23 pm

Code: Select all
#include <iostream>
#include <cstring>
#include <vector>
#include "../utils.cpp"

using namespace std;

string get_imageid(string url,resposta &output){
   vector<string> resultado,valor;
   string range ="";
   string retorna = "";
   string cmtest  = "";
   string idv = "";
   SearchReplace(url,"?","&");
   stringexplode(url, "/", &resultado);
   if (resultado.size() > 1){
      url = resultado.at(1);
      resultado.clear();
      stringexplode(url, "&", &resultado);
      for (int i=0; i <= resultado.size()-1;i++){
         valor.clear();
         stringexplode(resultado.at(i), "=", &valor);
         // si el Url del video tiene range es un video seccionado y se hace cache con youtubepart
         if ((valor.at(0) == "range"))  {
            retorna = "hit"; // cache hit solo para videos de pedacitos
            range = valor.at(1);
         }
       if (valor.at(0) == "cm2" && valor.at(1)=="0")
         {
         cmtest = "part";
         }
         if (valor.at(0) == "id" || valor.at(0) == "video_id") {
         idv=valor.at(1);
         }
      }
      if (retorna == "hit"){
         retorna  = idv+"_"+range;
       output.domain = "youtubepart";
      } else if (cmtest != "part")
     {
         retorna = idv;
       output.domain = "youtube";
      }
   }   
   return retorna;
}

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

   r.file = get_imageid(url,r);
   if ( !r.file.empty() and
   ((url.find(".googlevideo.com") != string::npos) or (url.find(".youtube.com") != string::npos) or
   (regex_match("74\\.125\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)", url) != "")) and
   (url.find("videoplayback") != string::npos) and
   (url.find("begin=") == string::npos)) {
     r.match = true;
     if (r.domain == "youtubepart"){
      r.file += ".cachepart";}
    else
      {r.file += ".flv";}
   } else {
     r.match = false;
   }
   return r;
}


Youtube mas completo publique el compilado en el foro de peru hardware por si alguno lo quiere bajar ya compilado
bajo la premisa de que youtube ahora esta usando un tamaño estandar para partir los videos y lo esta haciendo cada vez mas frecuentemente.

hagan los test correspondientes y si alguno sabe programar ayude a optimizar y perfeccionar este codigo
williamsio
 

Re: BFW Cache Development

Postby williamsio » Tue May 01, 2012 8:26 pm

Code: Select all
#include <iostream>
#include <cstring>
#include <vector>
#include "../utils.cpp"

// use this line to compile
// g++ -I. -fPIC -shared -g -o goear.com.so goar.cpp
// regex http.*\.goear\.com .*\.mp3

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("sphotos.ak.fbcdn.net/") != string::npos)  and (url.find(".jpg") != string::npos) and (url.find("s320x320/") != string::npos))
   {   
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "facebooks";
      } else {
         r.match = false;
      }
   }
   else if ( (url.find("sphotos.ak.fbcdn.net/") != string::npos)  and (url.find(".jpg") != string::npos) and (url.find("s320x320/") == string::npos))
   {   
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "facebookg";
      } else {
         r.match = false;
      }
   }
   else if ( (url.find("video.ak.fbcdn.net/") != string::npos)  and (url.find(".mp4") != string::npos))
   {   
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "facebookv";
      } else {
         r.match = false;
      }
   }
   else {
      r.match = false;
   }
   return r;
}


Codigo de plugin de facebook el cual va diferenciar las diferentes resoluciones de las fotos, hay que completarlo para que haga cache a los videos de fb
williamsio
 

Re: BFW Cache Development

Postby williamsio » Tue May 01, 2012 8:29 pm

Code: Select all
#include <iostream>
#include <cstring>
#include <vector>
#include "../utils.cpp"

// use this line to compile
// g++ -m32 -I. -fPIC -shared -g -o goear.com.so goear.cpp
// caso1 : http://www.goear.com/plimiter.php?f=467943f
// caso0 : http://live3.goear.com/listen/cf26f9b93d1985367df073acd8e1e26d/4f91a0e0/sst4/mp3files/10042008/c266c6a6c0feee51cf6d5fe8691f02d5.mp3

// regex http.*\.goear\.com .*\.mp3

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

extern "C" resposta getmatch(const string url) {
    resposta r;   
   
   if ( (url.find("live3.goear.com/") != string::npos)  and (url.find("mp3files/") != string::npos) and (url.find(".mp3") != string::npos) ) {
     
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "goear";
      } else {
         r.match = false;
      }
   }
   else if ( (url.find("goear.com/") != string::npos)  and (url.find("plimiter.php") != string::npos))
   {
      r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "goearPl";
       r.file += ".mp3";
      } else {
         r.match = false;
      }
   }
   else
   {
      r.match = false;
   }
   return r;
}


Plugin de Goear, el cual almacena sin problemas los files sueltos mas tiene problemas con los que estan en las playlists
williamsio
 

Re: BFW Cache Development

Postby williamsio » Tue May 01, 2012 8:31 pm

Code: Select all
// g++ -I. -fPIC -shared -g -o goear.com.so goear.com.cpp
#include <iostream>
#include <cstring>
#include <vector>
#include "../utils.cpp"

// use this line to compile
// g++ -m32 -I. -fPIC -shared -g -o cnet.com.so cnet.com.cpp
// Ejemplo : http://software-files-a.cnet.com/s/software/12/48/61/57/ccsetup317.exe?token=1335013775_590770cd5220cfe2e7d06ad9d4556b54&lop=link&ptype=3001&ontid=18512&siteId=4&edId=3&spi=88e83e80c485220e07b74f1e810938b4&pid=12486157&psid=10315544&&fileName=ccsetup317.exe
// regex http.*\.software-files-a\.cnet\.com.*(\.exe|\.iso|\.torrent|\.zip|\.rar|\.tar)

string get_filename(string url) {
   vector<string> resultado;
   string retorna = "";
   stringexplode(url, "/", &resultado);
   if (resultado.size() > 1){
      url = resultado.at(resultado.size()-1);
     //url = ccsetup317.exe?token=1335013775_590770cd5220cfe2e7d06ad9d4556b54&lop=link&ptype=3001&ontid=18512&siteId=4&edId=3&spi=88e83e80c485220e07b74f1e810938b4&pid=12486157&psid=10315544&&fileName=ccsetup317.exe
       SearchReplace(url,"?","&");
     //url = ccsetup317.exe&token=1335013775_590770cd5220cfe2e7d06ad9d4556b54&lop=link&ptype=3001&ontid=18512&siteId=4&edId=3&spi=88e83e80c485220e07b74f1e810938b4&pid=12486157&psid=10315544&&fileName=ccsetup317.exe
     resultado.clear();
      stringexplode(url, "&", &resultado);
      if (resultado.size() > 1){
     retorna  = resultado.at(0);
     }
      else {
      retorna = "";
      }
   }   
   return retorna;
}

extern "C" resposta getmatch(const string url) {
    resposta r;   
   
   if ( (url.find("software-files-a.cnet.com/") != string::npos)  and (url.find("software/") != string::npos) and (
   (url.find(".exe") != string::npos) or
   (url.find(".iso") != string::npos) or
   (url.find(".torrent") != string::npos) or
   (url.find(".zip") != string::npos) or
   (url.find(".rar") != string::npos) or
   (url.find(".tar") != string::npos)     
   ) ) {
     
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "download.com";
      } else {
         r.match = false;
      }
   }
   else
   {
      r.match = false;
   }
   return r;
}


plugin Download.com
williamsio
 

Re: BFW Cache Development

Postby williamsio » Tue May 01, 2012 8:32 pm

Code: Select all
#include <iostream>
#include <cstring>
#include <vector>
#include "../utils.cpp"

// use this line to compile
// g++ -I. -fPIC -shared -g -o fulltono.com.so fulltono.com.cpp
// Regex http.*\.fulltono\.com.*(\ .ftm|\.sdk)


extern "C" resposta getmatch(const string url) {
vector<string> resultado;
resposta r;

if (url.find(".fulltono.com/") != string::npos)
{
stringexplode(url, "/", &resultado);
r.file = resultado.at (resultado.size()-1);
if (!r.file.empty()) {
r.match = true;
r.domain = "fulltono";
} else {
r.match = false;
}
} else {
r.match = false;
}
return r;
}


plugin fulltono.com ("se comporta raro una ayuda aqui seria muy apreciada")
williamsio
 

Re: BFW Cache Development

Postby williamsio » Tue May 01, 2012 8:37 pm

stare posteando los cambios del core, lo mas pronto pueda compilar el core y hacer mis test gracias por el codigo :D
williamsio
 

Re: BFW Cache Development

Postby brunovescovi » Tue May 01, 2012 9:41 pm

Boa noite, pessoal.

Willian, antes de qualquer outra coisa, muito obrigado pela participação e parabéns pelos códigos de plugins. :aplause:
Vou compilar e disponibilizar os links para o pessoal.

Gostaria que ressaltar três coisas:

:arrow: Primeiro:
williamsio wrote:
Code: Select all
r.file += ".williamsio";}
Tomei a liberdade de mudar essa parte para algo menos pessoal. Ficou assim:
Code: Select all
r.file += ".cachepart";}
Se você não aprovar, é só dizer.:o!

:arrow: Segundo:
williamsio wrote:extern "C" resposta getmatch(const string url) {
Nos plugins do TC 3.1 e BFW Cache 1.0 o nome da função é getmatch. Mas no BFW Cache 2.0 o nome chamado pelo core é get_match. Essa mudança foi proposital para iniciar a separação do BFW Cache do TC 3.1 definitivamente, pois pretendemos alterar o core para imbutir plugins nele, então a incompatibilidade é uma questão de tempo. Ficou resolvido numa enquete entre a equipe de Beta Testers que essa seria uma boa alteração para fazermos logo.
Sendo assim, esse source dos plugins funcionará para as versões 1.0 do BFW Cache e para o TC 3.1, mas para o BFW Cache 2.0 o nome da função principal deve ser get_match ao invés de getmatch. O source disponibilizado já está nesse novo padrão.

:arrow: Terceiro:
Se possível e se não for pedir muito, coloque também as linhas respectivas do bfwcache.acl para os plugins novos. :o!


Mais uma vez obrigado por tudo. :aplause:
Se quiser conversar sobre as alterações no core, fique à vontade para me adicionar ao seu MSN ou me mandar emails, ou aqui mesmo neste tópico. :o!
Quem mais tiver idéias e soluções, esse tópico é para isso mesmo.

Um abraço.
"Amor não é um sentimento. Amor é uma decisão de fazer o melhor possível para Deus e para o seu próximo."
User avatar
brunovescovi
BFW Coordinator
Add-on Developers
Moderators
Documenters
Donors
 
Posts: 3550
Joined: Tue Jun 29, 2010 7:27 pm
Location: Guarapari - ES
BrazilFW box: BFW 3.0.261 64 bits
Intel Celeron D CPU 430 @ 1.80GHz
4 GB DDR3 - HD 500 GB SATA
Squid - QOS - MACxIP - eBackup
Mysql - phpMyAdmin - TcpTrack

Re: BFW Cache Development

Postby brunovescovi » Tue May 01, 2012 10:12 pm

Boa noite, pessoal.

brunovescovi wrote::arrow: Terceiro:
Se possível e se não for pedir muito, coloque também as linhas respectivas do bfwcache.acl para os plugins novos. :o!
Desculpe. Agora notei que você já colocou o regex de cada plugins dentro do source como exemplo. Ok. :o!


Tem uns detalhes no plugin do facebook:

:arrow:
williamsio wrote:
Code: Select all
// use this line to compile
// g++ -I. -fPIC -shared -g -o goear.com.so goar.cpp
// regex http.*\.goear\.com .*\.mp3
Está com o cabeçalho de comentários de outro plugin.

:arrow:
williamsio wrote:
Code: Select all
   if ( (url.find("sphotos.ak.fbcdn.net/") != string::npos)  and (url.find(".jpg") != string::npos) and (url.find("s320x320/") != string::npos))
   {   
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "facebooks";
      } else {
         r.match = false;
      }
   }
   else if ( (url.find("sphotos.ak.fbcdn.net/") != string::npos)  and (url.find(".jpg") != string::npos) and (url.find("s320x320/") == string::npos))
   {   
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "facebookg";
      } else {
         r.match = false;
      }
   }
Os dois testes acima procuram por testes idênticos. Imagino que no segundo teste deveria ser outra resolução ao invés de s320x320/.

:arrow:
williamsio wrote:
Code: Select all
         r.domain = "facebooks";
....
         r.domain = "facebookg";
....
         r.domain = "facebookv";
Que tal se criássemos pastas separadas para cada tipo de download dentro do facebook? Parecido com o que temos no orkut, ficaria assim, por exemplo:
Code: Select all
         r.domain = "facebook/smile";
....
         r.domain = "facebook/big";
....
         r.domain = "facebook/video";



O que acha? Por favor, gostaria de saber qual sua opinião sobre isso que falei.

Um abraço.
"Amor não é um sentimento. Amor é uma decisão de fazer o melhor possível para Deus e para o seu próximo."
User avatar
brunovescovi
BFW Coordinator
Add-on Developers
Moderators
Documenters
Donors
 
Posts: 3550
Joined: Tue Jun 29, 2010 7:27 pm
Location: Guarapari - ES
BrazilFW box: BFW 3.0.261 64 bits
Intel Celeron D CPU 430 @ 1.80GHz
4 GB DDR3 - HD 500 GB SATA
Squid - QOS - MACxIP - eBackup
Mysql - phpMyAdmin - TcpTrack

Re: BFW Cache Development

Postby williamsio » Wed May 02, 2012 12:22 pm

hola bruno leere los fuentes durante el dia te estoy escriviendo mas tarde gracias por publicar el code :mrgreen: :aplause:
williamsio
 

Re: BFW Cache Development

Postby Lord » Wed May 02, 2012 12:25 pm

una pregunta esto permitiria tener un brazil solo para cache??
Los acentos se omiten deliveradamente para evitar problemas de codificacion en la pagina... LOL
User avatar
Lord
BFW Supreme Master
 
Posts: 2211
Joined: Wed Apr 04, 2007 11:01 am

Re: BFW Cache Development

Postby brunovescovi » Wed May 02, 2012 12:58 pm

Boa tarde, pessoal.

Lord wrote:una pregunta esto permitiria tener un brazil solo para cache??
Sim. Pode-se deixar um servidor só para cache, se desejado.
É necessário que ele esteja em linha com o próximo servidor, ou recebendo o fluxo redirecionado de outro servidor.

Pode-se até ter um outro servidor com squid redirecionando o cache extra para um BFW só com BFW Cache instalado.
As possibilidades são muitas, mas sempre que possível eu prefiro deixar tudo numa só máquina. :o!

Um abraço.
"Amor não é um sentimento. Amor é uma decisão de fazer o melhor possível para Deus e para o seu próximo."
User avatar
brunovescovi
BFW Coordinator
Add-on Developers
Moderators
Documenters
Donors
 
Posts: 3550
Joined: Tue Jun 29, 2010 7:27 pm
Location: Guarapari - ES
BrazilFW box: BFW 3.0.261 64 bits
Intel Celeron D CPU 430 @ 1.80GHz
4 GB DDR3 - HD 500 GB SATA
Squid - QOS - MACxIP - eBackup
Mysql - phpMyAdmin - TcpTrack

Re: BFW Cache Development

Postby dj_igor » Wed May 02, 2012 3:43 pm

Não sou do development mas caso eu possa ajudar em algo aqui estou

BFW 64 bits rodando em produção em um pequeno provedor com 40 clientes.
Panda Network
3.0.257 - 64 bits
AMD Athlon(tm) II X4 640 Processor @ (4x) 3.015 GHz
8 GB DDR3(em breve 16gb)
HD 500gb SATA2
Add-ons: Check System, Mysar,bandwidthD, Luscacache(incomum)
User avatar
dj_igor
BFW Participative
 
Posts: 171
Joined: Mon Mar 05, 2012 2:17 pm
BrazilFW box: Panda Network

Re: BFW Cache Development

Postby williamsio » Wed May 02, 2012 4:09 pm

Changes detected:
Primero que nada eh notado que estan trabajando intensamente en el scrip y en la interface pero ningun cambio por el lado del nucleo.
este es mi log de cambios corrijanme si estoy en algun error, y comencemos desde ese punto.

Conectiontobrowser.cpp
Bfwcache:
Line 195: header += "Via: 1.0 BFWCache";
Thunder:
Line 195: header += "Via: 1.0 Thunder";
connectiontohttp2.cpp
Múltiples cambios para usar diferente tipo de base de datos, el cambio más importante viene por parte de la eliminación del código que posiblemente podía usarcé para hacer url rewriter, además se elimino el comentario con insulto
Se cambia la forma de cargar plugins
Antes: plugin_t plugin = (plugin_t) dlsym(handle, "get_match");
Ahora:
plugin_t plugin = (plugin_t) dlsym(handle, "getmatch");
Utils.cpp
Se retiran las funciones
Getfilepath
url2host
base64_encode

Ningun cambio significativo en los plugins, exepto por youtube :o!
:o! :o!
si todo eso es correcto podemos comenzar por separar cada dominio en tablas diferentes que dice bruno?
williamsio
 

Re: BFW Cache Development

Postby brunovescovi » Wed May 02, 2012 4:41 pm

Boa tarde, pessoal.

williamsio wrote:Changes detected:
Primero que nada eh notado que estan trabajando intensamente en el scrip y en la interface pero ningun cambio por el lado del nucleo.
este es mi log de cambios corrijanme si estoy en algun error, y comencemos desde ese punto.
Exato. O source do core não foi muito alterado, porque estive trabalhando na interface e correção do uso do processador por meio de script externo. Também no banco de dados e relatórios.

williamsio wrote:Conectiontobrowser.cpp
Bfwcache:
Line 195: header += "Via: 1.0 BFWCache";
Thunder:
Line 195: header += "Via: 1.0 Thunder";
Não somente nesse arquivo, mas toda referência ao nome Thunder foi substituída por BFW Cache. Foi feito um por um, para não comprometer o código. Inclusive esse "Via: 1.0 BFWCache" precisa ser alterado para "Via: 2.0 BFW Cache", mas de qualquer forma essa informação não aparece no terminal. :mrgreen:

williamsio wrote:connectiontohttp2.cpp
Múltiples cambios para usar diferente tipo de base de datos, el cambio más importante viene por parte de la eliminación del código que posiblemente podía usarcé para hacer url rewriter, además se elimino el comentario con insulto
Se cambia la forma de cargar plugins
Antes: plugin_t plugin = (plugin_t) dlsym(handle, "get_match");
Ahora:
plugin_t plugin = (plugin_t) dlsym(handle, "getmatch");
Exato. Eliminei a segunda parte do tratamento de url, eliminei alguns comentários e troquei a função que chama os plugins para gerar incompatibilidade com a versão anterior do BFW Cache 1.0 e TC 3.1.
Também no connectiontohttp2.cpp adaptei as chamadas do banco de dados porque retirei algumas colunas da tabela principal.

williamsio wrote:Utils.cpp
Se retiran las funciones
Getfilepath
url2host
base64_encode
Essas funções eu retirei porque não encontrei uso para elas em todo o código. Ainda precisamos revisar o source todo a procura de mais funções inúteis.

:arrow: Com exceção do que você já falou, foram alteradas algumas configurações padrão nos arquivos default.h, params.h e params.cpp. Se eu alterei mais coisas eu posso verificar depois.

Vamos continuar conversando para ver o que podemos alterar primeiro. :o!
Só acho que seria bom continuarmos com o source do bfwcache 2.0 que está no repositório, e não voltarmos ao source do TC 3.1.

Um abraço.
"Amor não é um sentimento. Amor é uma decisão de fazer o melhor possível para Deus e para o seu próximo."
User avatar
brunovescovi
BFW Coordinator
Add-on Developers
Moderators
Documenters
Donors
 
Posts: 3550
Joined: Tue Jun 29, 2010 7:27 pm
Location: Guarapari - ES
BrazilFW box: BFW 3.0.261 64 bits
Intel Celeron D CPU 430 @ 1.80GHz
4 GB DDR3 - HD 500 GB SATA
Squid - QOS - MACxIP - eBackup
Mysql - phpMyAdmin - TcpTrack

Re: BFW Cache Development

Postby gerardonoh » Thu May 03, 2012 11:15 am

brunovescovi wrote:Boa tarde, pessoal.

Lord wrote:una pregunta esto permitiria tener un brazil solo para cache??
Sim. Pode-se deixar um servidor só para cache, se desejado.
É necessário que ele esteja em linha com o próximo servidor, ou recebendo o fluxo redirecionado de outro servidor.

Pode-se até ter um outro servidor com squid redirecionando o cache extra para um BFW só com BFW Cache instalado.
As possibilidades são muitas, mas sempre que possível eu prefiro deixar tudo numa só máquina. :o!

Um abraço.


anexo plugin esmas.com por lo general lo usa televisa.com.mx se puede adaptar para lo videos hd pero hay que tener cuidado ya que ub capitulo de una serie o novela mide 2gb cuando se trata del dominio tvolucion.com
para cachear tvolucion sustituir "media.esmas.com" por "tvolucion.com" guardarlo como tvolucion.com.cpp, si lo quieren ver por dominios separados para ve que cache de cada uno sustituir tambien r.domain = "esmas"; por r.domain = "tvolucion"; y ya aparecera en el reporte por separado los 2 dominios y los videos cacheados
plugin esmas.com.cpp:
Code: Select all
#include <iostream>
#include <cstring>
#include <vector>
#include "../utils.cpp"
// bfwcache.acl
//para esmas.com http.*\.esmas\.com.*(\.flv|\.mp4)
//para tvolucionhttp.*\.tvolucion\.com.*(\.flv|\.mp4)
// use this line to compile
// g++ -I. -fPIC -shared -g -o esmas.com.so esmas.com.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("media.esmas.com/") != string::npos) and
        ((url.find(".mp4") != string::npos) or (url.find(".flv") != string::npos))
   ) {
      
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "esmas";
      } else {
         r.match = false;
      }
   } else {
      r.match = false;
   }
   return r;
}

Sigamos creciendo los plugins este solo funciona para bfwcache 2.0 por la observacion ya echa por brunovescovi. probado y funcionando
User avatar
gerardonoh
BFW Participative
 
Posts: 143
Joined: Thu Sep 22, 2011 2:35 am
BrazilFW box: P4 D-core 4gb
500 gb Hd
brazilfw : 3.0.261 64 Bits
dansguardian, X-YouTube-Edu-Filter
Implementado: Univesidad para 250-300 usuarios
3 adsl-Load Balancing

Re: BFW Cache Development

Postby brunovescovi » Fri May 04, 2012 2:00 pm

Boa tarde, pessoal.

Segundo o código do Willian, compilei o plugin do youtube e estou usando há três dias.
Me parece que ele está fazendo cache de tudo o que eu abri até agora.

Como me pareceu bem funcional, então vou deixar aqui para quem quiser baixar e testar para essa nova versão do BFW Cache 2.0.
Lembrando que aqui é para desenvolvimento, então quem for baixar, saiba que esses plugins são serem usados no BFW Cache 2.0 compilado por sua conta e risco.
O objetivo é quem estiver desenvolvendo, testar o mesmo plugin, e encontrando falhas, deixar os relatos aqui juntamente com a solução.
Os plugins do youtube para BFW cache 2.0 estão aqui:

Plugin do Youtube para BFW Cache 2.0 32 bits em desenvolvimento
=> http://www.brazilfw.com.br/users/brunovescovi/addons/3.0/bfwcache/2.0/youtube.com.so

Plugin do Youtube para BFW Cache 2.0 64 bits em desenvolvimento
=> http://www.brazilfw.com.br/users/brunovescovi/addons/3.0-64/bfwcache/2.0/youtube.com.so

Source dos plugins acima:
Code: Select all
#include <iostream>
#include <cstring>
#include <vector>
#include "../utils.cpp"

using namespace std;

string get_imageid(string url,resposta &output){
   vector<string> resultado,valor;
   string range ="";
   string retorna = "";
   string cmtest  = "";
   string idv = "";
   SearchReplace(url,"?","&");
   stringexplode(url, "/", &resultado);
   if (resultado.size() > 1){
     url = resultado.at(1);
     resultado.clear();
     stringexplode(url, "&", &resultado);
     for (int i=0; i <= resultado.size()-1;i++){
       valor.clear();
       stringexplode(resultado.at(i), "=", &valor);
       // si el Url del video tiene range es un video seccionado y se hace cache con youtubepart
       if ((valor.at(0) == "range"))  {
         retorna = "hit"; // cache hit solo para videos de pedacitos
         range = valor.at(1);
       }
      if (valor.at(0) == "cm2" && valor.at(1)=="0")
       {
       cmtest = "part";
       }
       if (valor.at(0) == "id" || valor.at(0) == "video_id") {
       idv=valor.at(1);
       }
     }
     if (retorna == "hit"){
       retorna  = idv+"_"+range;
      output.domain = "youtubepart";
     } else if (cmtest != "part")
    {
       retorna = idv;
      output.domain = "youtube";
     }
   }   
   return retorna;
}

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

   r.file = get_imageid(url,r);
   if ( !r.file.empty() and
   ((url.find(".googlevideo.com") != string::npos) or (url.find(".youtube.com") != string::npos) or
   (regex_match("74\\.125\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)", url) != "")) and
   (url.find("videoplayback") != string::npos) and
   (url.find("begin=") == string::npos)) {
    r.match = true;
    if (r.domain == "youtubepart"){
     r.file += ".cachepart";}
   else
     {r.file += ".flv";}
   } else {
    r.match = false;
   }
   return r;
}


Dúvidas referentes ao desenvolvimento são tratadas aqui mesmo nesse tópico.
Dúvidas referentes ao uso do addon são tratadas no tópico de acompanhamento, mas só para a versão 1.0 que é a homologada.

Um abraço.
"Amor não é um sentimento. Amor é uma decisão de fazer o melhor possível para Deus e para o seu próximo."
User avatar
brunovescovi
BFW Coordinator
Add-on Developers
Moderators
Documenters
Donors
 
Posts: 3550
Joined: Tue Jun 29, 2010 7:27 pm
Location: Guarapari - ES
BrazilFW box: BFW 3.0.261 64 bits
Intel Celeron D CPU 430 @ 1.80GHz
4 GB DDR3 - HD 500 GB SATA
Squid - QOS - MACxIP - eBackup
Mysql - phpMyAdmin - TcpTrack

Re: BFW Cache Development /facebook

Postby gerardonoh » Sat May 05, 2012 2:40 pm

Facebook probando y funcionando con subdiviciones en el cacheo para imagens pequeñas (small) / grandes (photos) / perfiles / videos (mp4)
Image
Imagen aumentada
http://4.bp.blogspot.com/-X2ElY4pi0oI/T6V5Ep0XTZI/AAAAAAAAAAM/OWfpXgfVH38/s1600/facebook.png
Gracias.
Atte Gerardo Noh
User avatar
gerardonoh
BFW Participative
 
Posts: 143
Joined: Thu Sep 22, 2011 2:35 am
BrazilFW box: P4 D-core 4gb
500 gb Hd
brazilfw : 3.0.261 64 Bits
dansguardian, X-YouTube-Edu-Filter
Implementado: Univesidad para 250-300 usuarios
3 adsl-Load Balancing

Re: BFW Cache Development

Postby brunovescovi » Sat May 05, 2012 5:41 pm

Boa tarde, pessoal.

gerardonoh wrote:Facebook probando y funcionando con subdiviciones en el cacheo para imagens pequeñas (small) / grandes (photos) / perfiles / videos (mp4)
Onde está o source desse plugin? :o!
Eu estava fazendo umas adaptações no source do plugin do facebook que o willian colocou aqui para nomear as divisões, mas ainda não testei. Se esse seu já está testado, posso colocar o seu logo. Mas preciso dos fontes, até porque esse tópico é para isso. :mrgreen:

Um abraço.
"Amor não é um sentimento. Amor é uma decisão de fazer o melhor possível para Deus e para o seu próximo."
User avatar
brunovescovi
BFW Coordinator
Add-on Developers
Moderators
Documenters
Donors
 
Posts: 3550
Joined: Tue Jun 29, 2010 7:27 pm
Location: Guarapari - ES
BrazilFW box: BFW 3.0.261 64 bits
Intel Celeron D CPU 430 @ 1.80GHz
4 GB DDR3 - HD 500 GB SATA
Squid - QOS - MACxIP - eBackup
Mysql - phpMyAdmin - TcpTrack

Re: BFW Cache Development

Postby goodposting » Sat May 05, 2012 5:50 pm

segue código fonte do meu primeiro plugin. eset antivírus.

Code: Select all
/*
 * Criado por Osmano807 <osmano807@gmail.com>
 * Editado/Consertado por Goodposting.
 * Use http.*\.eset\.com.*(\.nup) no bfwcache.acl
 * Vida longa ao BFW!
 */

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

using namespace std;

// use this line to compile
// g++ -I. -fPIC -shared -g -o eset.com.so eset.com.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(".eset.com/") != string::npos)
   ) {
      
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "eset";
      } else {
         r.match = false;
      }
   } else {
      r.match = false;
   }
   return r;
}



:o!
Last edited by goodposting on Fri Jun 08, 2012 9:56 am, edited 3 times in total.
User avatar
goodposting
Team BrazilFW
Donors
 
Posts: 1535
Joined: Wed Jan 04, 2006 11:53 pm
Location: 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

Re: BFW Cache Development

Postby goodposting » Sat May 05, 2012 8:45 pm

plugin editado 06/11/12

baixa os updates .mar e tb os .exe normais...

...servidor do firefox aqui no Brasil... muito útil pra evitar o problema de sumir objeto do cache do squid com gerenciadores de download.
não sei se esse plugin irá servir pra outros países. terá q ser testado.

segue o código fonte:
Code: Select all
/*
 * Criado por Goodposting.
 * Use http.*\.ufpr\.br/releases/.*(\.exe|\.mar) no bfwcache.acl
 * Vida longa ao BFW!
 */

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

using namespace std;

// use this line to compile
// g++ -I. -fPIC -shared -g -o ufpr.br.so ufpr.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("download.cdn.mozilla.net") != string::npos)
   ) {
      
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "mozilla";
      } else {
         r.match = false;
      }
   } else {
      r.match = false;
   }
   return r;
}

Last edited by goodposting on Tue Nov 06, 2012 6:48 pm, edited 3 times in total.
User avatar
goodposting
Team BrazilFW
Donors
 
Posts: 1535
Joined: Wed Jan 04, 2006 11:53 pm
Location: 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

Re: BFW Cache Development

Postby goodposting » Sat May 05, 2012 10:57 pm

fiz mais dois q acho muito útil em qualquer rede:

macromedia e adobe.com
com isso, é feito cache do flashplayer, seus updates e download pelo site entre outras coisas da adobe. :o!

segue o codigo fonte dos dois plugins...
Code: Select all
/*
 * Criado por Goodposting.
 * Use http.*\.macromedia\.com.*(\.exe|\.z|\.cab|\.rar|\.zip|\.msi|\.msp|\.upd|\.aup) no bfwcache.acl
 * Vida longa ao BFW!
 */

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

using namespace std;

// use this line to compile
// g++ -I. -fPIC -shared -g -o macromedia.com.so macromedia.com.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(".macromedia.com/") != string::npos)
   ) {
      
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "macromedia";
      } else {
         r.match = false;
      }
   } else {
      r.match = false;
   }
   return r;
}



e o adobe:
Code: Select all
/*
 * Criado por Goodposting.
 * Use http.*\.adobe\.com.*(\.exe|\.z|\.cab|\.rar|\.zip|\.msi|\.msp|\.upd|\.aup) no bfwcache.acl
 * Vida longa ao BFW!
 */

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

using namespace std;

// use this line to compile
// g++ -I. -fPIC -shared -g -o adobe.com.so adobe.com.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(".adobe.com/") != string::npos)
   ) {
      
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "adobe";
      } else {
         r.match = false;
      }
   } else {
      r.match = false;
   }
   return r;
}

User avatar
goodposting
Team BrazilFW
Donors
 
Posts: 1535
Joined: Wed Jan 04, 2006 11:53 pm
Location: 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

Re: BFW Cache Development

Postby goodposting » Sun May 06, 2012 12:23 am

mais um! srsrsrs

vídeos do uol pra galera... :o!

:aplause: parabéns ao professor brunovescovi que me ensinou a fazer plugins!
Code: Select all
/*
 * Criado por Goodposting.
 * Use http.*\.uol\.com\.br.*(\.mp4|\.flv) no bfwcache.acl
 * Vida longa ao BFW!
 */

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

using namespace std;

// use this line to compile
// g++ -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;
}

User avatar
goodposting
Team BrazilFW
Donors
 
Posts: 1535
Joined: Wed Jan 04, 2006 11:53 pm
Location: 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

Re: BFW Cache Development -facebook

Postby gerardonoh » Sun May 06, 2012 12:08 pm

brunovescovi wrote:Boa tarde, pessoal.

gerardonoh wrote:Facebook probando y funcionando con subdiviciones en el cacheo para imagens pequeñas (small) / grandes (photos) / perfiles / videos (mp4)
Onde está o source desse plugin? :o!
Eu estava fazendo umas adaptações no source do plugin do facebook que o willian colocou aqui para nomear as divisões, mas ainda não testei. Se esse seu já está testado, posso colocar o seu logo. Mas preciso dos fontes, até porque esse tópico é para isso. :mrgreen:

Um abraço.

ok se los pongo aki no es el de willian es uno general pero vi que querian subdividirlo y lo subdividi para que no cache todas las imagene de facebook solo las que dicen que quieren subdividir:
Plugin facebook:

Code: Select all
#include <iostream>
#include <cstring>
#include <vector>
#include "../utils.cpp"
//http://profile.ak.fbcdn.net/hprofile-ak-snc4/573997_713851300_1827527938_s.jpg
//acl  http.*\.fbcdn\.net.*(\.jpg|\.mp4)
// use this line to compile
// g++ -I. -fPIC -shared -g -o fbcdn.net.so fbcdn.net.cpp
string dominiotxt="facebook";
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("sphotos") != string::npos) and (url.find("s320x320/") == string::npos))
   ) {
dominiotxt="facebook/photos";
}
if ( (url.find("profile") != string::npos)
   ) {
dominiotxt="facebook/profile";
}
if ( ((url.find("sphotos") != string::npos) and (url.find("s320x320/")!= string::npos))
   ) {
dominiotxt="facebook/small";
}
if ( (url.find("video") != string::npos)
   ) {
dominiotxt="facebook/video";
}
   if ( ((url.find("video.ak.fbcdn.net") != string::npos) or (url.find("photos.ak.fbcdn.net") != string::npos) or (url.find("profile.ak.fbcdn.net") != string::npos) or (url.find("sphotos.ak.fbcdn.net") != string::npos))
   ) {
      
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         //r.domain = "facebook";
                          r.domain = dominiotxt;
      } else {
         r.match = false;
      }
   } else {
      r.match = false;
   }
   return r;
}


:D
Last edited by ghost on Sun May 06, 2012 7:29 pm, edited 1 time in total.
Reason: Agregada etiqueta CODE
User avatar
gerardonoh
BFW Participative
 
Posts: 143
Joined: Thu Sep 22, 2011 2:35 am
BrazilFW box: P4 D-core 4gb
500 gb Hd
brazilfw : 3.0.261 64 Bits
dansguardian, X-YouTube-Edu-Filter
Implementado: Univesidad para 250-300 usuarios
3 adsl-Load Balancing

Re: BFW Cache Development

Postby goodposting » Sun May 06, 2012 11:46 pm

obrigado gerardonoh !

:o! beleza!

mais um para lista de plugins!
User avatar
goodposting
Team BrazilFW
Donors
 
Posts: 1535
Joined: Wed Jan 04, 2006 11:53 pm
Location: 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

Re: BFW Cache Development

Postby EDCOSMOS » Tue May 08, 2012 9:40 am

Alguem já usou o programa Bywifi e o acelerador de videos do DAP para carregar os videos rapidamente realmente carrega 5x mais rápidos os videos, são muito uteis esses programas mas infelizmente não há versões desses programas em linux a idéia seria descobrir como eles fazem para carregar os videos rapidamente e ve se é possivel implementar no bfwcache acredito tambem que a eficiencia desses programas esta perto do fim já que houve mudanças no youtube e outros sites de video
User avatar
EDCOSMOS
BFW Participative
 
Posts: 194
Joined: Fri May 18, 2007 6:18 pm

Re: BFW Cache Development

Postby brunovescovi » Tue May 08, 2012 10:27 am

Bom dia, pessoal.

EDCOSMOS wrote:Alguem já usou o programa Bywifi e o acelerador de videos do DAP para carregar os videos rapidamente realmente carrega 5x mais rápidos os videos, são muito uteis esses programas mas infelizmente não há versões desses programas em linux a idéia seria descobrir como eles fazem para carregar os videos rapidamente e ve se é possivel implementar no bfwcache acredito tambem que a eficiencia desses programas esta perto do fim já que houve mudanças no youtube e outros sites de video
Edcosmos, dei uma olhada naqueles links que você me passou, e vi que o código é fechado. Sendo assim, mesmo que o sistema faça milagres no Windows, não há uma versão para linux, o que nos distancia ainda mais de podermos aproveitar o código para o BFW.

Se alguém tiver novidades sobre aceleradores open source para linux, podemos trazer para o BFW no geral, mesmo para quem não usa BFW Cache.
Minha opinião é que não existe acelerador de download, o que pode existir é algum sistema que aproveita melhor o link com divisão do download em partes e em várias conexões. Se for isso, ainda assim teria que ser estudado o impacto que isso causaria no servidor como um todo.

De qualquer forma, o que estou falando é só especulação, porque sem os fontes não dá para bater o martelo sobre o método usado por esse programa. :o!

Um abraço.
"Amor não é um sentimento. Amor é uma decisão de fazer o melhor possível para Deus e para o seu próximo."
User avatar
brunovescovi
BFW Coordinator
Add-on Developers
Moderators
Documenters
Donors
 
Posts: 3550
Joined: Tue Jun 29, 2010 7:27 pm
Location: Guarapari - ES
BrazilFW box: BFW 3.0.261 64 bits
Intel Celeron D CPU 430 @ 1.80GHz
4 GB DDR3 - HD 500 GB SATA
Squid - QOS - MACxIP - eBackup
Mysql - phpMyAdmin - TcpTrack

Re: BFW Cache Development -youtube bfwcache 2.0 64 bits

Postby gerardonoh » Tue May 08, 2012 1:31 pm

Youtube la gran mayoria de videos segmentados
Image

http://brazilfw-plugins-ang.blogspot.mx/p/youtube-test-bfwcache-20-64-bits.html

Atte GNP.

Plugin.

Code: Select all
#include <iostream>
#include <cstring>
#include <vector>
#include "../utils.cpp"

using namespace std;

// use this line to compile
// g++ -I. -fPIC -shared -g -o youtube.com.so youtube.com.cpp
string dominiotxt = "yotubes";
string get_videoid(string url){
   vector<string> resultado,valor;
   string retorna = "";
   string range = "";
        string itag = "";
        string ftm = "";
        string begin = "";
        string cm2 = "";
   SearchReplace(url,"?","&");
   stringexplode(url, "/", &resultado);
   if (resultado.size() > 1){
       url = resultado.at(1);
       resultado.clear();
       stringexplode(url, "&", &resultado);
       for (int i=0; i <= resultado.size()-1;i++){
          valor.clear();
                            
          stringexplode(resultado.at(i), "=", &valor);
                    if (valor.at(0) == "itag") {
             itag =valor.at(1);
         
          }
                    if (valor.at(0) == "range") {
             range =valor.at(1);
         
          }
                    if (valor.at(0) == "ftm") {
             ftm =valor.at(1);
         
          }
         
          if (valor.at(0) == "id" || valor.at(0) == "video_id") {
             retorna  +=valor.at(1);
             //    break;
          }
         

       }
    }   
//Para llevar el roden en el nombre de archivo y hacer el maroy numero de hits ya que el range tiende a variar y el cm2 no indica fragmentacion       
retorna  += itag +=range += ftm;
   return retorna;


EDITADO: Precisa sempre colocar blocos de código usando a tag CODE. :o!
Last edited by brunovescovi on Tue May 08, 2012 1:58 pm, edited 1 time in total.
Reason: Adicionada a tag CODE
User avatar
gerardonoh
BFW Participative
 
Posts: 143
Joined: Thu Sep 22, 2011 2:35 am
BrazilFW box: P4 D-core 4gb
500 gb Hd
brazilfw : 3.0.261 64 Bits
dansguardian, X-YouTube-Edu-Filter
Implementado: Univesidad para 250-300 usuarios
3 adsl-Load Balancing

Re: BFW Cache Development

Postby Lelouch » Tue May 08, 2012 3:05 pm

Launchpad.net (Ubuntu updates)
Code: Select all
#include <iostream>
#include <cstring>
#include <string>
#include <vector>
#include "../utils.cpp"

using namespace std;

// use this line to compile
// g++ -I. -fPIC -shared -g -o launchpad.net.so launchpad.net.cpp
// http.*\.launchpad\.net.*(\.deb|\.tar|\.gz)

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(".launchpad.net/") != string::npos)
   ) {
      
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "launchpad";
      } else {
         r.match = false;
      }
   } else {
      r.match = false;
   }
   return r;
}
Ubuntu.com (Ubuntu updates)
Code: Select all
#include <iostream>
#include <cstring>
#include <string>
#include <vector>
#include "../utils.cpp"

using namespace std;

// use this line to compile
// g++ -I. -fPIC -shared -g -o ubuntu.com.so ubuntu.com.cpp
// http.*\.ubuntu\.com.*(\.deb|\.tar|\.gz)

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(".ubuntu.com/") != string::npos)
   ) {
      
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "ubuntu";
      } else {
         r.match = false;
      }
   } else {
      r.match = false;
   }
   return r;
}
canonical.com (Ubuntu updates)
Code: Select all
#include <iostream>
#include <cstring>
#include <string>
#include <vector>
#include "../utils.cpp"

using namespace std;

// use this line to compile
// g++ -I. -fPIC -shared -g -o canonical.com.so canonical.com.cpp
// http.*\.canonical\.com.*(\.deb|\.tar|\.gz)

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(".canonical.com/") != string::npos)
   ) {
      
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "canonical";
      } else {
         r.match = false;
      }
   } else {
      r.match = false;
   }
   return r;
}
Image
20120516 - Edited: remove .bz2 from acl, because this contain the checksum, must be not cached.
Last edited by Lelouch on Wed May 16, 2012 12:25 pm, edited 1 time in total.
GNU/Linux addict, instead of Linux addict.
Sou, machigatteita no wa ore ja nai! Sekai no hou da!...
Sekai wa kawaru! Kaerareru...

Hangyaku no Rurūshu...

New scheme: BFW3(LB) - BFW3BridgeCache - ArgentoBridgeQoS
User avatar
Lelouch
BFW Advanced
 
Posts: 1325
Joined: Sun Oct 05, 2008 7:39 pm
Location: #!/bin/sh
BrazilFW box: BrazilFW: RAM 3GB, ATHLON X2 5600+, HDD 160GB+120GB, LB: 2Mb+8Mb.
BFW3 BuildTree on GNU/Linux Archlinux 64 bits.

Re: BFW Cache Development -youtube bfwcache 2.0 64 bits

Postby gerardonoh » Tue May 08, 2012 3:16 pm

Ok no me fije va de nuevo y completo:
Code: Select all
#include <iostream>
#include <cstring>
#include <vector>
#include "../utils.cpp"

using namespace std;

// use this line to compile
// g++ -I. -fPIC -shared -g -o youtube.com.so youtube.com.cpp
string dominiotxt = "yotubes";
string get_videoid(string url){
   vector<string> resultado,valor;
   string retorna = "";
   string range = "";
        string itag = "";
        string ftm = "";
        string begin = "";
        string cm2 = "";
   SearchReplace(url,"?","&");
   stringexplode(url, "/", &resultado);
   if (resultado.size() > 1){
       url = resultado.at(1);
       resultado.clear();
       stringexplode(url, "&", &resultado);
       for (int i=0; i <= resultado.size()-1;i++){
          valor.clear();
                            
          stringexplode(resultado.at(i), "=", &valor);
                    if (valor.at(0) == "itag") {
             itag =valor.at(1);
         
          }
                    if (valor.at(0) == "range") {
             range =valor.at(1);
         
          }
                    if (valor.at(0) == "ftm") {
             ftm =valor.at(1);
         
          }
         
          if (valor.at(0) == "id" || valor.at(0) == "video_id") {
             retorna  +=valor.at(1);
             //    break;
          }
         

       }
    }   
        retorna  += itag +=range += ftm;
   return retorna;
      
}
// o regex retorna a parte do texto encontrada na linha
//regex_match(regex,texto);

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

if(url.find("keepalive=yes") != string::npos) {
dominiotxt = "youtube/range";
}else{
dominiotxt = "youtube/completo";     
}
   r.file = get_videoid(url);
if(url.find("noflv=") != string::npos && url.find("ptk=") == string::npos){ //(noflv AND !ptk) => redirecting URL
               r.match = false;
}else{
   if (   !r.file.empty() and
      ((url.find(".googlevideo.com") != string::npos) or (url.find(".youtube.com") != string::npos) or
       (regex_match("74\\.125\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)", url) != "")) and
      (url.find("videoplayback") != string::npos) and
      (url.find("begin") == string::npos) ) {
      r.match = true;
      r.domain = dominiotxt;
      r.file += ".flv";
   } else {
      r.match = false;
      }
     }
   return r;
}

:o!
User avatar
gerardonoh
BFW Participative
 
Posts: 143
Joined: Thu Sep 22, 2011 2:35 am
BrazilFW box: P4 D-core 4gb
500 gb Hd
brazilfw : 3.0.261 64 Bits
dansguardian, X-YouTube-Edu-Filter
Implementado: Univesidad para 250-300 usuarios
3 adsl-Load Balancing

Re: BFW Cache Development

Postby EDCOSMOS » Tue May 08, 2012 7:48 pm

Minha opinião é que não existe acelerador de download, o que pode existir é algum sistema que aproveita melhor o link com divisão do download em partes e em várias conexões. Se for isso, ainda assim teria que ser estudado o impacto que isso causaria no servidor como um todo.
acho que é isso mesmo que eles fazem tipo multicast
User avatar
EDCOSMOS
BFW Participative
 
Posts: 194
Joined: Fri May 18, 2007 6:18 pm

Re: BFW Cache Development

Postby grage95 » Wed May 09, 2012 3:22 am

Plugin google pack
Code: Select all
/*
*plugin partial content google pack
*created by grage95
*example  http://dl.google.com/chrome/install/1025.168_1025.162/chrome_updater.exe
*http://o-o.preferred.pttelkom-bth1.v10.lscache6.c.pack.google.com/edgedl/chrome/install/1025.168/chrome_installer.exe?
* Use ^http.*\.google\.com.*\.(exe|msi|msp|cab) no bfwcache.acl
* Vida longa ao BFW!
*/

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

using namespace std;

// use this line to compile
// g++ -I. -fPIC -shared -g -o google.com.so google.com.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(".google.com/") != string::npos)  and
       ( (url.find(".exe") != string::npos) ||  (url.find(".msp") != string::npos) ||  (url.find(".msi") != string::npos) ||  (url.find(".cab") != string::npos) )
   ) {
     
       r.file = get_filename(url);
      if (!r.file.empty()) {
         r.match = true;
         r.domain = "googlepack";
      } else {
         r.match = false;
      }
   } else {
      r.match = false;
   }
   return r;
}
User avatar
grage95
BFW Curious
 
Posts: 8
Joined: Mon Dec 20, 2010 7:14 pm

Re: BFW Cache Development

Postby goodposting » Thu May 10, 2012 2:54 pm

EDCOSMOS wrote:Alguem já usou o programa Bywifi e o acelerador de videos do DAP para carregar os videos rapidamente realmente carrega 5x mais rápidos os videos, são muito uteis esses programas mas infelizmente não há versões desses programas em linux a idéia seria descobrir como eles fazem para carregar os videos rapidamente e ve se é possivel implementar no bfwcache acredito tambem que a eficiencia desses programas esta perto do fim já que houve mudanças no youtube e outros sites de video


no SCA do marcio pra bfw 2.x, existe um padráo de 10 conexões simultâneas a um objeto. acredito q isso acelera o download do video ou qualquer outra coisa na net.
não sei como isso é feito no bfwcache, mas é ótima idéia.
User avatar
goodposting
Team BrazilFW
Donors
 
Posts: 1535
Joined: Wed Jan 04, 2006 11:53 pm
Location: 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

Re: BFW Cache Development

Postby goodposting » Thu May 10, 2012 2:59 pm

brunovescovi wrote:
Se alguém tiver novidades sobre aceleradores open source para linux,....


no código do SCA tem alguma coisa. vide samurai... rsrsr
User avatar
goodposting
Team BrazilFW
Donors
 
Posts: 1535
Joined: Wed Jan 04, 2006 11:53 pm
Location: 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

Re: BFW Cache Development

Postby goodposting » Thu May 10, 2012 3:02 pm

grage95 wrote:Plugin google pack


rsrsr brigado aí companheiro. mais um!

esse tb vai ser útil, tendo em vista o grande crescimento do chrome.

:o!
User avatar
goodposting
Team BrazilFW
Donors
 
Posts: 1535
Joined: Wed Jan 04, 2006 11:53 pm
Location: 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

Re: BFW Cache Development

Postby Lelouch » Thu May 10, 2012 3:18 pm

goodposting wrote:
grage95 wrote:Plugin google pack


rsrsr brigado aí companheiro. mais um!

esse tb vai ser útil, tendo em vista o grande crescimento do chrome.

:o!

En dl.google.com también serviría colocarle .deb y .rmp :)
GNU/Linux addict, instead of Linux addict.
Sou, machigatteita no wa ore ja nai! Sekai no hou da!...
Sekai wa kawaru! Kaerareru...

Hangyaku no Rurūshu...

New scheme: BFW3(LB) - BFW3BridgeCache - ArgentoBridgeQoS
User avatar
Lelouch
BFW Advanced
 
Posts: 1325
Joined: Sun Oct 05, 2008 7:39 pm
Location: #!/bin/sh
BrazilFW box: BrazilFW: RAM 3GB, ATHLON X2 5600+, HDD 160GB+120GB, LB: 2Mb+8Mb.
BFW3 BuildTree on GNU/Linux Archlinux 64 bits.

Re: BFW Cache Development

Postby goodposting » Thu May 10, 2012 8:00 pm

Lelouch wrote:
goodposting wrote:
grage95 wrote:Plugin google pack


rsrsr brigado aí companheiro. mais um!

esse tb vai ser útil, tendo em vista o grande crescimento do chrome.

:o!

En dl.google.com también serviría colocarle .deb y .rmp :)



ok.
mas as extensões .deb e .rmp são de que programa?
User avatar
goodposting
Team BrazilFW
Donors
 
Posts: 1535
Joined: Wed Jan 04, 2006 11:53 pm
Location: 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

Re: BFW Cache Development

Postby fabiosammy » Sat May 12, 2012 12:56 am

goodposting wrote:ok.
mas as extensões .deb e .rmp são de que programa?


o .deb e o .rpm são extensões para debian e fedora (respectivamente) e derivados... no plugin só ta para o .exe, o Lelouch fala para adicionar também essas 2 extensões no google pack :mrgreen:
Last edited by ghost on Sat May 19, 2012 1:06 pm, edited 1 time in total.
Reason: Nombre personal eliminado a pedido del usuario.
fabiosammy
 

Re: BFW Cache Development

Postby goodposting » Sat May 12, 2012 9:04 am

entendido! :mrgreen:

:o!
User avatar
goodposting
Team BrazilFW
Donors
 
Posts: 1535
Joined: Wed Jan 04, 2006 11:53 pm
Location: 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

Re: BFW Cache Development

Postby EDCOSMOS » Sat May 12, 2012 9:59 pm

no SCA do marcio pra bfw 2.x, existe um padráo de 10 conexões simultâneas a um objeto. acredito q isso acelera o download do video ou qualquer outra coisa na net.
não sei como isso é feito no bfwcache, mas é ótima idéia.


E ai bruno a ideia é viavel?
User avatar
EDCOSMOS
BFW Participative
 
Posts: 194
Joined: Fri May 18, 2007 6:18 pm

Next

Return to Development - The future is here.

Who is online

Users browsing this forum: No registered users and 0 guests