Compilando o MSN-Proxy no CentOS/Red Hat 5

Este artigo descreve como compilar o programa MSN-Proxy na distribuição CentOS (ou Red Hat) 5, apresentando uma solução para uma incompatibilidade entre a versão da biblioteca Libevent disponível na distribuição e a necessária para a compilação do proxy.

[ Hits: 17.977 ]

Por: Edson Marquezani Filho em 29/04/2010


Introdução



O MSN-Proxy é um proxy para os protocolos do mensageiro instantâneo MSN/Live Messenger da Microsoft, que permite o monitoramento e arquivamento das conversas, além de outras funções de controle como bloqueio de contatos, transferência de arquivos, vídeo-conferência etc. É desenvolvido por brasileiros e escrito em linguagem C, o que o torna ágil e leve, e sua compilação e instalação são bastante simples, exigindo alguns poucos passos. Tornou-se já há algum tempo popular entre os administradores de sistemas que desejam ter esse recurso de controle/monitoramento em suas redes, mostrando-se estável e eficiente no desempenho de suas funções.

Este artigo aborda um cenário particular de instalação desse programa - no qual o administrador se depara com um problema no momento da compilação - e propõe uma solução para esse impasse, sem que se comprometa a integridade do sistema GNU/Linux utilizado.

Não é objetivo deste artigo descrever todo o processo de instalação e configuração do programa, uma vez que a respeito desse tópico já existe uma grande quantidade de guias disponíveis na Internet, e a documentação contida no próprio pacote já é clara e suficiente para esse fim.

Este documento é para aqueles que desejam instalar o MSN-Proxy em um ambiente GNU/Linux CentOS/Red Hat 5 e que certamente depararam-se com um empecilho no momento da compilação.

O problema e a solução

O MSN-Proxy requer, além das bibliotecas C padrão disponibilizadas pela Glibc, apenas duas outras: a biblioteca de cliente MySQL (Libmysqlclient) e outra para tratamento de eventos, a Libevent. Uma vez que o programa será compilado na sistema hospedeiro, é necessário, além das versões binárias dessas bibliotecas, ter também a versão desenvolvimento de cada uma, que contém os cabeçalhos necessários à compilação.

A distribuição CentOS/Red Hat dispõe de pacotes oficiais para ambas as bibliotecas, em suas versões binárias e de desenvolvimento, porém a versão disponível para a Libevent é a 1.1. A compilação do MSN-Proxy com essa versão falha devido à ausência de uma função, que só está disponível em versões mais recentes dela.

Uma solução possível para esse problema seria recorrer a pacotes compatíveis não-oficiais da Libevent e atualizar o sistema com eles. Porém, esse procedimento quebra as dependências de um outro pacote importante, o nfs-utils, que contém as ferramentas básicas de montagem de sistemas de arquivos NFS, e que exige especificamente aquela versão da biblioteca, não aceitando alguma mais recente.

Sendo assim, para utilizar um pacote de versão mais recente da Libevent seria necessário abrir mão das ferramentas NFS ou manter (à força) pacotes com dependências quebradas no sistema, duas opções não desejáveis para um servidor de produção.

A melhor solução portanto é instalar separadamente uma versão mais recente da Libevent e compilar o MSN-Proxy com ela, que será o único a utilizá-la. Isso resolve o problema do programa e ao mesmo tempo mantém a versão oficial da distribuição, sem interferir no funcionamento e consistência de outros programas ou pacotes que vierem a utilizá-la.

Ambiente de trabalho

Todo o procedimento que será descrito aqui foi testado e validado em dois ambientes GNU/Linux: um de produção, rodando Red Hat 5.4 e outro em laboratório, rodando CentOS 5.4, ambos em versão para a arquitetura x86_64 e, na ocasião, totalmente atualizados. Assume-se aqui uma instalação mínima desses sistemas, e qualquer outro pacote necessário ao processo será explicitamente mencionado.

Obs.: Embora tenha-se usado um sistema 64 bits, todos os passos devem ser plenamente aplicáveis também à versão de 32 bits (x86) dos sistemas CentOS/Red Hat, exceto quando mencionado o contrário.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Compilação
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Introdução ao Gambas2 (parte 2)

Como instalar o SopCast e sua interface QT no Linux

NetOffice - Sistema de gerenciamento de projetos

Fedora 12 - instalação e uso

Torne-se um DJ usando Linux

  
Comentários
[1] Comentário enviado por dastyler em 29/04/2010 - 08:07h

Olá Edson,

Lembro que certa vez instalei o MSN_proxy no fedora e precisei lançar mão de procedimentos semelhantes para a instalação do MSN-Proxy devido ao memso problema, mas não consegui postar a solução aqui como voce fez.
Bom artigo!!

[]´s

[2] Comentário enviado por arc em 29/04/2010 - 11:19h

Gosto muito do msn-proxy, mas tive que tirar da minha rede pois temos vendedores aqui com muitos(+ de 800) contatos. Ai o msn fica caindo toda hora, fiz testes com as versões em desenvolvimento mesmo assim não ficou bom. Alguem usa ele com + de 800 contatos e nao tem problemas???? Caso tenham por favor me digam o que fizeram para funcionar direito.

[3] Comentário enviado por manoserpa em 30/04/2010 - 09:09h

Bom dia.

Arc, eu uso ele a pouco tempo e algumas máquinas ficam caindo mesmo, não sei qual o motivo, eu estou utilizando o Emesene nessas máquina (inclusive na minha), funciona sem problemas.

Aproveitando o embalo...

Eu estou visualizando as conversas direto na base do MySQL, quando eu clico no nome do contato pelo navegador não abre a janela com a conversa dele, alguém sabe o que fazer para ler as conversas numa interface mais amigável.

Valeu.

[4] Comentário enviado por arc em 30/04/2010 - 09:27h

Manoserpa você esta usando a versão 0.7 ou é do trunk???? 0.7 interface web funciona mas fica lenta, ja no trunk ainda nao ta funcionando

[5] Comentário enviado por manoserpa em 30/04/2010 - 09:57h

Eu uso a 0.6, tive problema com a interface lenta mas resolvi com um script em php que encontrei na net, na verdade as conversas ficam por um tempo tempo lá na página, mas depois elas somem e ficam gravadas no banco, daí eu vejo direto na base.

A 0.7 deu erro de conexão aqui.

[6] Comentário enviado por dastyler em 30/04/2010 - 10:00h

tentaram indexar a base de dados o MSn-Proxy?
Tive os mesmos problemas de voces, e ao indexar a base de dados melhorou muito o acesso.
minha dica postada aqui no VOL: http://www.vivaolinux.com.br/dica/Acelerando-a-velocidade-de-conexao-das-paginas-do-MSNProxy/


[]´s


[7] Comentário enviado por dastyler em 30/04/2010 - 10:03h

Um detalhe importante: as confs do php.ini (relacionadas a desempenho)e apache também são importantes, bem como o hardware utilizado na maquina.

[]´s

[8] Comentário enviado por manoserpa em 30/04/2010 - 10:54h

Bom dia dastyler.

Com isso resolvo o meu problema para visualizar os logs?

Valeu.

[9] Comentário enviado por rafael.gumiero em 30/04/2010 - 15:53h

Estava tendo alguns problemas na hora de visualizar as conversas mais observei que tinha um bug quanto a isso e achei uma solução para visualização.Quem precisar me avisa que passo o procedimento e tenho realizado algumas implementações na interface do msn-proxy, quando terminar disponibilizo para o pessoal.

Rafael Gumiero
isctecnologia.com.br

[10] Comentário enviado por manoserpa em 30/04/2010 - 15:57h

Boa tarde Rafael.

Se puderes passar por e-mail eu agradeço.

manoserpa@gmail.com

Valeu.

[11] Comentário enviado por top_designer em 01/05/2010 - 14:30h

Boa Tarde, Rafael

Poderia passar para meu e-mail, tambem.. Obrigado.

thiago@cdznet.com.br


Abcs.


[12] Comentário enviado por 4l3x4ndr3 em 23/09/2010 - 17:48h

Muito bom seu artigo, mas não tive a certeza se funciona.
Devido a várias tentantivas, já estou com o msn-proxy instalado, mas precisaria desistalar ele para fazer da maneira como vc descreve.
Como posso desistala-lo?

Obrigado

[13] Comentário enviado por edsonmarquezani em 23/09/2010 - 17:56h

Creio que você pode compilar novamente e instalar normalmente, que a versão anterior será sobrescrita.

[14] Comentário enviado por lpossamai em 29/10/2010 - 14:27h

Boa tarde.
Realizei a instalação do MSN-PROXY no centos 5.5 64 Bits.
Editei o Makefile.. Compilei.. compilei o libevent...
configurei o mysql
os arquivos de configurações..

Inicio o msn-proxy com o comando msn-proxy -b -i &

ele me mostra a seguinte tela:

[root@xxxxxxx msnproxy]# info: reading config file [/usr/local/etc/msn-proxy/msn-proxy.conf]
msn-proxy release : msn-proxy-0.7a [$Id: msn-proxy.h 112 2009-03-15 17:30:28Z loos-br $]
config file : /usr/local/etc/msn-proxy/msn-proxy.conf
default ns host : messenger.hotmail.com
default ns port : 1863
listen host : 0.0.0.0
listen port : 1863
backlog : 10
max clients : 10
max ctl clients : 10
port range begin : 25000
port range end : 30000
ctl read timeout : 5
client read timeout : 600
client write timeout : 60
server read timeout : 600
server write timeout : 60
client connect timeout: 180

ACLs
connect : ALLOW
log messages : YES
save_contacts : YES

listen on [0.0.0.0:1863]

Porém, quando dou um NMAP 127.0.0.1 não vejo o protocolo msn na porta 1863 iniciado.
Ai, não capta as mensagens..

Alguma sugestão?

Obrigado.

[15] Comentário enviado por wesllay em 31/05/2011 - 16:26h

Está aparecendo isso no tela do msn-proxy gostaria de saber como resolver:

Notice: Undefined index: in /usr/share/msnproxy/user.inc.php on line 167
suporte ()

Notice: Undefined index: in /usr/share/msnproxy/user.inc.php on line 167
manutencao ()

Notice: Undefined index: in /usr/share/msnproxy/user.inc.php on line 167
faturamento ()

Notice: Undefined index: in /usr/share/msnproxy/user.inc.php on line 167
finceiro ()

[16] Comentário enviado por Estival em 26/12/2012 - 16:35h

Erro na compilação do msn-proxy, estou usando o libevent 1.4 e msn-proxy 0.7
Lembrando que fiz as alterações solicitadas no Makefile.
Meu Linux é Fedora Core 11 x86_64

#make
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c msn-proxy.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c server.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c sb.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c command.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c config.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c net-io.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c client.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c syslog.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c ns.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c mysql.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c sql.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c protocol.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c check-cmd.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c contacts.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c msg.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c p2p.c
p2p.c: In function âp2p_ack_packetâ:
p2p.c:74: warning: format â%lldâ expects type âlong long intâ, but argument 2 has type â__int64_tâ
p2p.c:74: warning: format â%lldâ expects type âlong long intâ, but argument 3 has type â__int64_tâ
p2p.c: In function âmsg_read_p2p_headerâ:
p2p.c:152: warning: suggest parentheses around operand of â!â or change â&â to â&&â or â!â to â~â
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c user.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c string.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c io.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c sig.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c fmt.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c xml.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c ctl.c
cc -o msn-proxy msn-proxy.o server.o sb.o command.o config.o net-io.o client.o syslog.o ns.o mysql.o sql.o protocol.o check-cmd.o contacts.o msg.o p2p.o user.o string.o io.o sig.o fmt.o xml.o ctl.o -L/usr/local/lib -L/usr/local/lib64/libevent-1.4.13/lib -levent -L/usr/lib64/mysql:/var/lib/mysql -lmysqlclient
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status
make: *** [msn-proxy] Error 1


Estival...

[17] Comentário enviado por edsonmarquezani em 26/12/2012 - 17:21h

Mas veja que o erro é referente à lib mysqlclient, não à libevent. Dê uma olhada se no Fedora 11 o parâmetro correto é mesmo -lmysqlclient e se você tem a lib (binário dela) instalado.


Contribuir com comentário