Pitombera’s Weblog

Just another weblog

Msn-proxy no FreeBSD e Linux

Publicado por pitombera em Dezembro 4, 2007

Introdução

O msn-proxy é um proxy transparente leve para clientes do msn messenger. Suporta todos os protocolos ativos ( todos clientes ). Controla quem e como o msn messenger é usado em sua rede. Cheio de recursos.

O texto acima é uma tradução da descrição escrita pelo autor no site do projeto.

O msn-proxy possui recursos como: Bloqueio de usuário, controle da lista de amigos dos usuários, log de conversação, aviso em chat sobre o monitoramento, bloqueio de transferência de arquivos, entre outros.

Ambiente Testado

Freebsd 7.0 Beta 3:

  • gcc version 4.2.1 20070719
  • MySQL version 5.0.45
  • libevent version 1.3d
  • Apache version 2.0.61
  • PHP version 4.4.7

Slackware 11:

  • gcc version 3.4.6
  • MySql version 5.0.24a
  • libevent version 1.3d/1.3b
  • Apache version 1.3.37
  • PHP version 5.2.5

Instalação

LibEvent:

FreeBSD:

# cd /usr/ports/devel/libevent/

# make install clean

Linux:

# wget -c ‘http://monkey.org/~provos/libevent-1.3d.tar.gz

# tar -zxvf libevent-1.3d.tar.gz

# cd libevent-1.3d/

# ./configure && make && make install

ou

# wget -c ‘http://lp.slackwaresupport.com/Slackware-11.0/martijn/libevent-1.3b-i486-1McD.tgz

# installpkg libevent-1.3b-i486-1McD.tgz

msn-proxy:

Linux/FreeBSD:

# wget -c ‘http://internap.dl.sourceforge.net/sourceforge/msn-proxy/msn-proxy-0.5.tar.gz

# tar -zxvf msn-proxy-0.5.tar.gz

# cd msn-proxy

# make¹

# make install

¹ O FreeBSD por usar o gcc4 foi necessário editar o arquivo Makefile e mudar a CCFLAGS, o processo é simples, apenas comentar( adicionar o # do inicio da linha) o CCFLAGS do gcc3 na linha 13 e descomentar( retirar o # do inicio da linha) o CCFLAGS do gcc4 na linha 17.

Configurando

Primeiro arquivo a ser configurado é o /usr/local/etc/msn-proxy/mysql/conf, é nesse arquivo que ficam os dados para a conexão entre o msn-proxy e o banco mysql.

Sintaxe:

(Host ou Socket)|(Port)|(usuario)|(senha)|(bando de dados)

Padrão:

/tmp/mysql.sock|0|msn-proxy|secret|msn-proxy

Após isso iremos criar o banco do dados e criar o usuário para o msn-proxy.

MySQL:

> create database `msn-proxy¹`;
> grant all privileges on `msn-proxy¹`.* to `msn-proxy²`@localhost identified by ’secret³‘;
> flush privileges;

¹ Banco de dados
² Usuário
³ Senha

Após ter feito os passos anteriores, iremos rodar pela primeira vez o msn-proxy que irá criar as tabelas no banco.

# /usr/local/bin/msn-proxy

Se tudo ocorrer bem terá a seguinte mensagem:

PUBLIC ACCESS on /usr/local/etc/msn-proxy/mysql/conf should be removed !!!¹
fail to read mysql config (check defaults table)²

¹Avisa que o arquivo está com acessos demais.
² Não há host default configurado na tabela.

Retirar acesso público do arquivo de configuração:

# chmod 600 /usr/local/etc/msn-proxy/mysql/conf

Inserindo ip real do servidor proxy na tabela do mysql:

MySQL:

> insert into defaults (internal_host) values (‘192.168.0.1¹‘);

¹192.168.0.1 deve ser o ip real.

Feita as alterações o seu msn-proxy está configurado e pronto para receber conexões.

# /usr/local/bin/msn-proxy &

Interface Web

Junto ao source do msn-proxy acompanha o diretório ‘php’ que é um utilário web para a configuração e gerenciamento do seu msn-proxy.

Edite o arquivo mysql.inc.php e edite as variavéis $host,$user,$pass,$db,$port de acordo com os dados usados no servidor mysql, após a edição, copie o diretório php para sua pasta web e sete as restrições de acesso necessárias, saiba como aqui.

Port Forwarding

É necessário fazer um redirecionamento das conexões vindas de sua rede, para que o proxy funcione de forma transparente.

Linux:

# iptables -t nat -I PREROUTING -i eth0¹ -p tcp –dport 1863 -j REDIRECT –to-port 1863

FreeBSD:

ipfw

ipfw add X¹ fwd 127.0.0.1,1863 ip from any to any dst-port 1863 src-ip 192.168.0.0/24²

¹Número da rega no ipfw

²Faixa de Rede Local

pf.conf

rdr on vr0¹ inet proto tcp from any to any port 1863 -> 127.0.0.1 port 1863

¹Interface de rede local.

Conclusão

Chegamos ao fim do artigo, espero ter conseguido transmitir de forma mais clara possivél os passos usados por mim para a instalação desse exceletente software.

Se mesmo após instalado e configurado seu msn-proxy não inciar, teste rodar com a opção ‘-d’(debug) para maiores informações do seu problema.

Em caso de dúvida não temam em perguntar.

Links

http://sourceforge.net/projects/msn-proxy/

http://www.mysql.com/

http://httpd.apache.org/

http://monkey.org/~provos/libevent/

http://www.linuxpackages.net/

http://focalinux.cipsga.org.br/

http://get.live.com/messenger/overview

Autor

Diego Pitombeira dos Prazeres a.k.a pitombera

70 Respostas para “Msn-proxy no FreeBSD e Linux”

  1. André Losnak disse

    ;)

  2. Ruy_Go disse

    Velho muito bom mesmo, foi lindo aqui, amanha ja testo ele na real =D

  3. maicon disse

    boa tarde
    Quando vou iniciar o msn-proxy gera este erro
    # /usr/local/bin/msn-proxy
    Erro – /usr/local/bin/msn-proxy: error while loading shared libraries: libevent-1.3e.so.1: cannot open shared object file: No such file or directory

    Locate libevent-1.3e.so.1.0.3
    /usr/local/lib/libevent-1.3e.so.1
    /usr/local/lib/libevent-1.3e.so.1.0.3

  4. maicon atualiza as libs do sistema simplesmente com: ldconfig
    Caso não resolva da uma verificada no arquivo /etc/ld.so.config e veja se tem /usr/local/lib… caso não tenha adicione, salve e saia… e rode novamente o ldconfig.

    apocalipse@irc.freenode.net #slackware-br #linuxajuda

  5. maicon disse

    Cleison Monteiro muito obrigado pela dica

  6. maicon disse

    desculpa eu novamente
    Agora ele nao localiza a base
    [root]# /usr/local/bin/msn-proxy
    cannot init database
    - mysql -u root -p
    Criar o banco
    - create database `msn-proxy`;
    - grant all privileges on `msn-proxy`.* to `msn-proxy`@localhost identified by ’secret’;
    - flush privileges;
    Muito obrigado mesmo pela ajuda, pessoas como vc que fazem o linux ser oque é

  7. Não tenho como verificar ao certo onde estou o lugar da base pois estou de férias…
    O principio é o seguinte… quando você configura seu “banco” corretamente é só rodar o msn-proxy que ele faz o resto…
    Configurar o banco seria criar o banco, criar user, dar privilégios e configurar todas essas infos no seu arquivo conf que segundo o nosso tutorial fica em /usr/local/etc/msn-proxy/mysql/conf
    Quando acontecer isso que aconteceu com você é pelo simples fato dele não conectar no banco e criar as tables para poder rodar o msn-proxy.
    Da uma olhada em todos os dir do source e procure por um arquivo envolvendo o nome mysql (não sei dizer no momento o nome correto pois estou longe desse mundo por enquanto :) )… dentro desse arquivo você vai ver 4-5 files que são chamados para criar as tables… abra um por um para cópiar as tables e fazer seu banco na mão mesmo… o nome de cada table é o nome de cada arquivo e os linhas dessa determinada table está dentro do arquivo correspondente…

    Espero sucesso e qualquer coisa grite…
    Atenciosamente:
    apocalipse@irc.freenode.net #slackware-br #linuxajuda

  8. andré disse

    Tambem estou com o mesmo problema
    eu criei as tabelas na mão pelo webmin e ocorre o mesmo erro
    gofo:/usr/sbin# msn-proxy
    cannot init database

    gofo:/usr/sbin# msn-proxy &
    [1] 7073
    gofo:/usr/sbin# cannot init database

  9. Murilo Gois disse

    Brother, vc já conseguiu fazer este msn-proxy rodar em paralelo com um outro proxy? Ex: minha empresa ja possui um proxy, quero colocar uma outra maquina com este msn-proxy e direcionar todo fluxo de msn para ela, sem mexer na minha estrutura original. Sabe se é possível?

  10. andré
    Confere a conf do msn-proxy. No caso do nosso artigo está em /usr/local/etc/msn-proxy/mysql/conf, verifica se está tudo certinho com o nome do banco, usuário e senha.

    Murilo
    Dá sim de boa. Você teria apenas que jogar todo o tráfego que vier na porta 1863 do msn para esse novo servidor.

  11. Murilo Gois disse

    Segue a regra que esta sendo utilizada

    /sbin/ipfw add 14 fwd 172.16.2.127,1863 tcp from 172.16.2.0/24 to any dst-port 1863 via rl0

    essa regra esta no firewall mais infelizmente ele nao direciona o trafego para o ip 172.16.2.127… mais as regras giram os ponteiros.. dizendo que esta direcionando todo o trafego…

  12. maicon disse

    boa noite
    o msn-proxy nao inicia
    criae as tabelas a mao no banco mas mesmo assim nao inicia

    /usr/local/bin/msn-proxy
    cannot init database

  13. maicon disse

    o erro evolui
    [root@up mysql]# /usr/local/bin/msn-proxy -d
    fail to read mysql config (check defaults table)

    o problema de antes era o /var/lib/mysql/mysql.sock na linha do conf

  14. maicon disse

    muito obrigado a todos
    funcionou!!!!!!!!!
    agora é só configurar

  15. Ismael disse

    boa noite, estou com o problema para iniciar o msn-proxy, está dando o problema: cannot init database [3] 1127.

    o conf do msn-proxy por padrão ja vem: (Host ou Socket)|(Port)|(usuario)|(senha)|(bando de dados) /tmp/mysql.sock|0|msn-proxy|secret|msn-proxy. Neste conf o que devo alterar?

  16. Ricardo disse

    Estou tentando instalar o msn-proxy no Fedora 8, editei o Makefile e alterei as linhas assim:
    # Linux (most)
    MYSQLINC=/usr/local/include
    MYSQLLIB=/usr/local/mysql/lib/mysql

    Mas ao tentar rodar o make recebo o seguinte erro:

    cc -g -Wall -Wno-pointer-sign -O2 -pipe -I/usr/local/include -I/usr/local/include -fno-builtin-log -c msn-proxy.c
    In file included from ns-data.h:24,
    from user.h:31,
    from ns.h:24,
    from msn-proxy.c:26:
    client.h:27:19: error: event.h: Arquivo ou diretório não encontrado
    In file included from ns-data.h:24,
    from user.h:31,
    from ns.h:24,
    from msn-proxy.c:26:
    client.h:36: error: field ‘read’ has incomplete type
    client.h:37: error: field ‘write’ has incomplete type
    client.h:38: error: field ‘listen’ has incomplete type
    In file included from ns-data.h:25,
    from user.h:31,
    from ns.h:24,
    from msn-proxy.c:26:
    server.h:37: error: field ‘read’ has incomplete type
    server.h:38: error: field ‘write’ has incomplete type
    In file included from user.h:32,
    from ns.h:24,
    from msn-proxy.c:26:
    sb-data.h:44: error: field ‘listen’ has incomplete type
    msn-proxy.c: In function ‘main’:
    msn-proxy.c:70: error: storage size of ‘ev’ isn’t known
    msn-proxy.c:167: warning: implicit declaration of function ‘event_init’
    msn-proxy.c:174: warning: implicit declaration of function ‘event_set’
    msn-proxy.c:174: error: ‘EV_READ’ undeclared (first use in this function)
    msn-proxy.c:174: error: (Each undeclared identifier is reported only once
    msn-proxy.c:174: error: for each function it appears in.)
    msn-proxy.c:174: error: ‘EV_PERSIST’ undeclared (first use in this function)
    msn-proxy.c:175: warning: implicit declaration of function ‘event_add’
    msn-proxy.c:177: warning: implicit declaration of function ‘event_dispatch’
    msn-proxy.c:70: warning: unused variable ‘ev’
    make: ** [msn-proxy.o] Erro 1

    O que posso fazer para solucionar esse problema?

  17. Ricardo disse

    Estou tentando instalar o msn-proxy no Fedora 8, editei o Makefile e alterei as linhas assim:
    # Linux (most)
    MYSQLINC=/usr/local/include
    MYSQLLIB=/usr/local/mysql/lib/mysql

    Mas ao tentar rodar o make recebo o seguinte erro:

    cc -g -Wall -Wno-pointer-sign -O2 -pipe -I/usr/local/include -I/usr/local/include -fno-builtin-log -c msn-proxy.c
    In file included from ns-data.h:24,
    from user.h:31,
    from ns.h:24,
    from msn-proxy.c:26:
    client.h:27:19: error: event.h: Arquivo ou diretório não encontrado
    In file included from ns-data.h:24,
    from user.h:31,
    from ns.h:24,
    from msn-proxy.c:26:
    client.h:36: error: field ‘read’ has incomplete type
    client.h:37: error: field ‘write’ has incomplete type
    client.h:38: error: field ‘listen’ has incomplete type
    In file included from ns-data.h:25,
    from user.h:31,
    from ns.h:24,
    from msn-proxy.c:26:
    server.h:37: error: field ‘read’ has incomplete type
    server.h:38: error: field ‘write’ has incomplete type
    In file included from user.h:32,
    from ns.h:24,
    from msn-proxy.c:26:
    sb-data.h:44: error: field ‘listen’ has incomplete type
    msn-proxy.c: In function ‘main’:
    msn-proxy.c:70: error: storage size of ‘ev’ isn’t known
    msn-proxy.c:167: warning: implicit declaration of function ‘event_init’
    msn-proxy.c:174: warning: implicit declaration of function ‘event_set’
    msn-proxy.c:174: error: ‘EV_READ’ undeclared (first use in this function)
    msn-proxy.c:174: error: (Each undeclared identifier is reported only once
    msn-proxy.c:174: error: for each function it appears in.)
    msn-proxy.c:174: error: ‘EV_PERSIST’ undeclared (first use in this function)
    msn-proxy.c:175: warning: implicit declaration of function ‘event_add’
    msn-proxy.c:177: warning: implicit declaration of function ‘event_dispatch’
    msn-proxy.c:70: warning: unused variable ‘ev’
    make: ** [msn-proxy.o] Erro 1

    O que posso fazer para solucionar esse problema?

  18. maicon disse

    sim altera para
    /var/lib/mysql/mysql.sock|0|msn-proxy|secret|msn-proxy

  19. Adalberto disse

    Olá amigo .. primeiramente parabéns pelo tutorial, está bem didático e simples. Em segundo gostaria de saber se vc já testou esse msn-proxy numa máquina rodando squid, se tem alguma conf diferente, ou algo do tipo. Obrigado e inté. = ]

  20. Ismael disse

    Caras, me ajudem por favor!

    Não consigo sair do erro “cannot init database”

    Estou instalando no slackware 11. Tenho o mysql com apache e php todos funcionando diretinho, mais não entendo porque não conecta com o banco do msn-proxy. Já criei as tabalas na mão tambem e nada.
    meu conf esta assim: /var/lib/mysql/mysql.sock|0|msn-proxy|secret|msn-proxy
    crie a base com mesmo nomes, senhas e usuario. mas não conecta
    alguem pode me ajudar?

  21. Ismael disse

    conseguir rodar o msn-proxy!!!, o problema era que tinha feito as tabelas com alguns nomes errado.

    Só que agora depois de redirecionar não aparace ninguem conectado. joguei a regra: iptables -t nat -I PREROUTING -i eth0 -p tcp –dport 1863 -j REDIRECT –to-port 1863.

    O que posso está fazendo de errado?

    É excelente tutorial muito bem explicado, apenas sou inexperiente no mundo do linux, se pode ajudar algum, fiz minha instalação no slackware 11.

  22. pitombera disse

    Bem, primeiramente desculpa a todos que deixaram comentários e não foram respondidos.

    Ricardo: Aparentemente o problema é com a libevent, após compilar dê um ldconfig se não funcionar veja onde estão os arquivos dela e tenta corrigir no Makefile.

    Adalberto: Sim, testei o msn-proxy em uma máquina( FreeBSD ) usando squid e não tive problemas quanto aos redirecionamentos de trafego, como a rede testada foi uma rede doméstica eu não criei ACL’s no squid para barrar webmessengers ou uma conexão vinda diretamente do ‘Msn Client’. O ideal é que seja feito em conjunto msn-proxy + regras no proxy.

    Espero ter esclarecido.

    []’s

  23. douglas disse

    Ola boa noite..
    muito bom o tutorial, mas estou com um probleminha, ja refiz a instalacao, mas continua.
    Fiz a alteracao no arquivo /etc/ld.so.conf onde consta:
    /usr/local/lib/libevent-1.3d.so.1

    o erro que ocorre:
    /usr/local/bin/msn-proxy: error while loading shared libraries: libevent-1.3d.so.1: cannot open shared object file: No such file or directory

    distro debian

    abraços e obrigado

  24. Lucas disse

    Alguem pode me ajudar quando vou instalar o libevent da o seguinte erro:

    ./configure && make && make install
    checking for a BSD-compatible install… /usr/bin/install -c
    checking whether build environment is sane… yes
    checking for gawk… gawk
    checking whether make sets $(MAKE)… no
    checking whether to enable maintainer-specific portions of Makefiles… no
    checking for gcc… no
    checking for cc… no
    checking for cl.exe… no
    configure: error: no acceptable C compiler found in $PATH
    See `config.log’ for more details.

    O SO é o Suse Linux

    Alguem tem alguma dica?

  25. Douglas Fabiano Specht disse

    Pessoal estava com o seguinte erro:

    make: ** Aviso: O arquivo `Makefile’ está com a hora 3e+03 adiantada
    cc -g -Wall -Wno-pointer-sign -O2 -pipe -I/usr/local/include -I/usr/local/include -fno-builtin-log -c msn-proxy.c
    In file included from config.h:29,
    from net-io.h:27,
    from msn-proxy.c:30:
    mysql.h:48:25: error: mysql/mysql.h: Arquivo ou diretório não encontrado
    In file included from config.h:29,
    from net-io.h:27,
    from msn-proxy.c:30:
    mysql.h:64: error: expected specifier-qualifier-list before âMYSQLâ
    mysql.h:75: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before âdb_fetch_rowâ
    mysql.h:76: error: expected â)â before â*â token
    mysql.h:77: error: expected â)â before â*â token
    mysql.h:78: error: expected â)â before â*â token
    mysql.h:79: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before â*â token
    mysql.h:81: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before â*â token
    make: ** [msn-proxy.o] Erro 1
    servidor:/opt/msn/msn-proxy#

    foi resolvido fazendo um apt-get install -f libmysqlclient15-dev

  26. Douglas Fabiano Specht disse

    estou tentando colocar para executar automaticamente o msn-proxy quando reinicia a maquina.
    eu tenho um script inicializa.sh onde tenho alguns comando que reiniciam alguns programas automaticamente.
    Ocorre que o comando /usr/local/bin/msn-proxy & nao obedece ao reiniciar a maquina.

    meu script

    #!/bin/bash
    /home/firewall
    /home/imsniff_0.03/src/imsniff eth1 &
    /usr/local/bin/msn-proxy &

    somente este ultimo nao carrega
    alguem pode me ajudar??

  27. Claudio disse

    turma to este erro, ja tetei tudo que sabia para resolver mais quando copilo da este erro abaixo.

    uso o fedora 8
    alguem pode me ajudar ?

    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 -L/usr/lib/mysql -levent -L -lmysqlclient
    mysql.o: In function `db_close’:
    /tmp/msn-proxy/mysql.c:290: undefined reference to `mysql_close’
    mysql.o: In function `db_error’:
    /tmp/msn-proxy/mysql.c:207: undefined reference to `mysql_error’
    mysql.o: In function `db_query2′:
    /tmp/msn-proxy/mysql.c:138: undefined reference to `mysql_real_query’
    mysql.o: In function `db_create_all’:
    /tmp/msn-proxy/mysql.c:161: undefined reference to `mysql_errno’
    mysql.o: In function `db_query’:
    /tmp/msn-proxy/mysql.c:122: undefined reference to `mysql_real_query’
    mysql.o: In function `db_escape’:
    /tmp/msn-proxy/mysql.c:108: undefined reference to `mysql_real_escape_string’
    mysql.o: In function `db_free’:
    /tmp/msn-proxy/mysql.c:88: undefined reference to `mysql_free_result’
    mysql.o: In function `db_init’:
    /tmp/msn-proxy/mysql.c:264: undefined reference to `mysql_init’
    /tmp/msn-proxy/mysql.c:264: undefined reference to `mysql_init’
    /tmp/msn-proxy/mysql.c:269: undefined reference to `mysql_real_connect’
    /tmp/msn-proxy/mysql.c:280: undefined reference to `mysql_options’
    mysql.o: In function `db_query’:
    /tmp/msn-proxy/mysql.c:126: undefined reference to `mysql_store_result’
    mysql.o: In function `db_last_id’:
    /tmp/msn-proxy/mysql.c:79: undefined reference to `mysql_insert_id’
    mysql.o: In function `db_affected_rows’:
    /tmp/msn-proxy/mysql.c:71: undefined reference to `mysql_affected_rows’
    mysql.o: In function `db_count’:
    /tmp/msn-proxy/mysql.c:63: undefined reference to `mysql_num_rows’
    mysql.o: In function `db_fetch_row’:
    /tmp/msn-proxy/mysql.c:55: undefined reference to `mysql_fetch_row’
    collect2: ld returned 1 exit status

  28. Marcelo disse

    Bem interessante! Teste no freebsd 6.3 STABLE e rolou blzinha! Somente os bloqueios que hora funcionam hora nao funcionam.

  29. pitombera disse

    Douglas: use o strace pra verificar onde ele está indo buscar a lib. Ex.: strace /usr/local/bin/msn-proxy. Recompilar novamente o msn-proxy pode ser uma solução também.

    Lucas: configure: error: no acceptable C compiler found in $PATH.
    Bem, isso indica que você não tem as ferramentas necessárias para compilar o source, tente procurar a solução específica para sua distrib, eu particularmente nunca usei Suse.
    O caminho é mais ou menos esse( segue link abaixo )
    http://www.linuxforums.org/forum/suse-linux-help/11784-configure-error-no-acceptable-c-compiler-found-path.html

    Douglas Fabiano Specht: Tenta inicializar com um ‘/usr/local/bin/msn-proxy > /var/log/msn.log &’ e ver o porque de não inicializar, no meu caso o msn-proxy estava inicializando antes do mysql e deve ser o seu problema também.

    []’s

  30. Fabricio cardoso disse

    Pessoal
    Bom dia

    Estou subindo esse proxy , fiz exatamente o tuto, mas parei na parte de criar a configuração default no mysql

    At first run, msn-proxy will check and create the mysql tables, after that
    insert the default configuration (with your real proxy ip):

    > insert into defaults (internal_host) values (‘192.168.0.1′);

    Veja o erro.

    insert into defaults (internal_host) values (‘192.168.0.2′);
    ERROR 1046 (3D000): No database selected

    Onde 192.168.0.2 é o ip do meu proxy.
    Verifiquei que poderia ser que eu não estivesse na database certa, no caso
    `msn-proxy`, mas eu estou sim.

    Caso alguém possa me ajudar

    Fabricio Cardoso

  31. Naudy Fernando Cnei II disse

    Olá Diego, tudo bem?
    Parabéns pelo artigo curto e muito didático.
    Reailizei a instalação aqui no meu servidor, mas infelizmente não consigo conexão via socks do msn-proxy.

    Quando eu mando testar a conexão com socks no cliente MSN ele me retorna uma mensagem:

    impossível conectar(0)…

    no debug do msn-proxy no servidor, ele retorna a seguinte mensagem:

    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
    port range begin : 25000
    port range end : 30000
    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

    debug: connection from [192.168.1.10]
    debug: fail to read ns server command
    debug: connection from [192.168.1.10]
    debug: fail to read ns server command

    Existe alguma condiguração extra que devo fazer?
    Ja troquei a url do servidor de autenticação no arquivo

    /usr/local/msn-proxy/msn-proxy.conf

    mas não adiantou.

    Será que pode me ajudar?

    Grande abraço

  32. Rodrigo Arauo disse

    Olá. Estou com Slackware 12. Instalei tudo ok sem problemas. Mas não estou sabendo usar a parde de bloquear contatos! Funciona? Podem me dar uma dica.

  33. Ederson disse

    Olá, estou tendo o mesmo erro do Ricardo para compilar o msn-proxy. Uso um Conectiva 10.
    Acho que o problema são as variáveis que tenho que editar no Makefile, a MYSQLINC deixei = /usr/lib/mysql e a MYSQLINC=/var/lib/mysql.
    Procurei pelo sistema onde poderia estar esses diretórios, mas não achei nada além desse /usr/lib/mysql e do /var/lib/mysql.

    Preciso de uma ajuda. Quais diretórios eu indico no Makefile?

    Obrigado.

  34. Adriano disse

    Olá!
    Estou com o mesmo problema do Douglas, a diferença é que minha versão é a libevent-1.4.so.2.0.0. Fiz exatamente o que diz abaixo e recebo várias linhas de erro como estas ao executar o ldconfig:

    ldconfig: is not a know library type
    ldconfig: is not a know library type
    ldconfig: 9?=>u{tt is not a know library type
    e várias linhas mudando o inicio mas repetindo este erro no final: … is not a know library type


    Fiz a alteracao no arquivo /etc/ld.so.conf onde consta:
    /usr/local/lib/libevent-1.3d.so.1

    o erro que ocorre:
    /usr/local/bin/msn-proxy: error while loading shared libraries: libevent-1.3d.so.1: cannot open shared object file: No such file or directory

    distro debian

    abraços e obrigado

  35. Adriano disse

    Ah, só um detalhe: segui as dicas acima e não deu certo. Modifiquei meu Makefile da seguinte forma:

    # FreeBSD
    #MYSQLINC=…
    #MYSQLLIB=…

    #linux (most)
    MYSQLINC=/usr/lib/mysql
    MYSQLLIB=/var/lib/mysql/mysql (local das libs SQL no meu Debian 4 rc3)
    … e o erro continua: msn-proxy: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory

    Minha libevent está instalada em:
    /usr/local/lib
    Ao adicionar o caminho no /etc/ld.so.conf dá o erro mencionado na menssagem anterior.

    NÃO SEI MAS O QUE FAZER… Preciso de ajuda!

  36. Andrei Luiz Sbruzzi disse

    Olá, estou com o seguinte problema, conforme comentário do
    pitonbeira ao Douglas Fabiano Specht: Tenta inicializar com um
    ‘/usr/local/bin/msn-proxy > /var/log/msn.log &’
    e ver o porque de não inicializar, no meu caso o msn-proxy estava inicializando antes do mysql e deve ser o seu problema também.

    O msn-proxy está iniciando antes do mysql, existe alguma forma de fazer com que ele inicie somente após o banco? Instalamos via Lampp, ele é quem chamamos para inicializar os serviços do banco.

    Segue o script que utilizamos para inicialização:

    #!/bin/bash
    /home/firewall
    /home/imsniff_0.03/src/imsniff eth1 &
    /opt/lampp/lampp start
    /usr/local/bin/msn-proxy >> /var/log/msn.log &

    Msg de log (msn.log):
    cannot init database

    Abraços

  37. Andrei Luiz Sbruzzi disse

    Referente ao problema citado por eu mesmo.
    Acrescentei a seguinte linha para iniciar o msn-proxy no script de inicialização:

    Original:

    #!/bin/bash
    /home/firewall
    /home/imsniff_0.03/src/imsniff eth1 &
    /opt/lampp/lampp start
    /usr/local/bin/msn-proxy >> /var/log/msn.log &

    Alterado
    #!/bin/bash
    /home/firewall
    /home/imsniff_0.03/src/imsniff eth1 &
    /opt/lampp/lampp start
    sleep 60 && /usr/local/bin/msn-proxy >> /var/log/msn.log &

    Usando o comando sleep para 60s o sistema aguarda os 60s para ai sim iniciar o msn-proxy. Tempo necessário para subir o MySQL.

    Espero ter ajudado com essa dica!

    Abraços

  38. Henrique Machado disse

    Olá.
    Eu consegui rodá-lo beleza.
    Mas me tira uma dúvida:
    Quando você disse que com ele é possível “controlar a lista de amigos dos usuários”, quer dizer que eu posso especificar com qual pessoa será possível conversar e com qual não?

    Grato

  39. Marcelo disse

    O problema que encontrei foi com o PHP:

    Fatal error: Call to undefined function mysql_connect() in /var/www/php/mysql.inc.php on line 28

    Meu conf está assim:

    caminho que funcionou no Debian”
    $user = “marcelo”;
    $pass = “marcelo”;
    $db = “msn-proxy”;
    $port = 3306;

    $mysql = mysql_connect($host, $user, $pass);
    if (!$mysql) {
    die(‘fail to connect to mysql\n’);
    }

    if (!mysql_select_db($db, $mysql)) {
    die(‘can\’t select db\n’);
    }

    ?>

    Alguém tem idéia?

    Grato

    Marcelo

  40. Marcelo disse

    cortou uma linha…

    $host = “/var/run/mysqld/mysqld.sock”;

    “caminho que funcionou no Debian”

  41. Olá Diego,

    Parabéns pelo tutorial funciona redondo e sem problemas.

    Boa didática e clareza de conceitos.

    Estou trabalhando em implementar outros protocolos neste serviço tais como ICQ, YAHOO, AIM, GROUPWISE e outros.

    Gostaria de saber se você observou algum problema no MSN-PROXY com grandes quantidades de usuários conectados de ( de 500 para cima).

    Em alguns ambientes com grandes quantidades de conexão percebo atraso nas entregas de mensagens. Quando removido o serviço e a regra de firewall ele parece funcionar normalmente. Aumentei o valor de max clients de acordo com o número de clientes, mas penso que seja necessário uma implementação de fork de processos, onde se pode fazer uma implementação de criação de processos filhos para um pool de conexões, tal como vemos no apache2. Todavia deixe-me saber se você ou os demais colegas já observaram algo similar, antes de sair quebrando a cabeça.

    Um grande abraço a todos.

  42. Robson disse

    Estou com o mesmo problema do Naudy Fernando Cnei II !!!!!!!

    nao to conseguindo fazer funcionar junto com o MEU PROXY AUTENTICADO rodando na porta 3128,
    Uso o FreeBSD 6.02, tenho Proxy Autenticado rodando na porta 3128 e Firewall IPFW, dai apresenta o mesmo erro do Naudy Fernando Cnei II .

    Alguem poderia ajudar , alguem Howtoo que explique como instalar com Proxy Autenticado e com IPFW.

    Aguardo !! VLW

  43. vanderson disse

    Pessoal instalei tudo, conecto no msn usando o msn-proxy, aparece até os logs no servidor, mas no endereço “http://192.168.200.1/msn-proxy” não aparece ninguem conectado, está muito estranho. Eu não teria que adicionar os usuários
    para eles poderem conectar? Onde faço isso?

    Agradeço qualquer ajudo.

  44. Paulo Vieira disse

    Boa noite a todos.

    Estou tentando compilar conforme o artigo do nosso amigo Diego, mas esta me dando o seguinte erro:

    cc -g -Wall -Wno-pointer-sign -O2 -pipe -I/usr/local/include -I/usr/local/include -fno-builtin-log -c mysql.c
    mysql.c: In function âdb_initâ:
    mysql.c:280: error: âMYSQL_OPT_RECONNECTâ undeclared (first use in this function)
    mysql.c:280: error: (Each undeclared identifier is reported only once
    mysql.c:280: error: for each function it appears in.)
    make: ** [mysql.o] Erro 1

    Caso alguém possa me ajudar eu fico grato desde já.

    Paulo J. Vieira

  45. Vagner disse

    Ja vi a pergunta acima, porem nada da resposta, mas vou persistir. Tenho o msn-proxy compilado instalado as tabelas foram criadas ele acessa as tabelas mas na parte web nao vejo os usuarios, tenho o seguinte no log gerado com a opçao -d:

    ACLs
    connect : ALLOW
    log messages : YES
    save_contacts : YES

    debug: connection from [10.1.1.2]
    debug: client_pre_cmd command blocked: email@hotmail.com
    payload: [(null)]

    Vagner Salazar

  46. Vagner disse

    Ja vi a pergunta acima, porem nada da resposta, mas vou persistir. Tenho o msn-proxy compilado instalado as tabelas foram criadas ele acessa as tabelas mas na parte web nao vejo os usuarios, tenho o seguinte no log gerado com a opçao -d:

    ACLs
    connect : ALLOW
    log messages : YES
    save_contacts : YES

    debug: connection from [10.1.1.2]
    debug: client_pre_cmd command blocked: email@hotmail.com
    payload: [(null)]
    debug: ns client pre command not accepted

    Vagner Salazar

  47. kaue disse

    Alguem montou um Daemon pra ele?

    Só preciso saber onde ficar armazenado o PID desse kra

    Abraços!

  48. kaue disse

    #!/bin/bash

    # +————————–+
    # | SCRIPT DE INICIALIZACAO |
    # +————————–+
    # | MSN PROXY – PROVIDER BY |
    # | -Plan IT Tecnologia |
    # | -Compile with: |
    # | +- Libevent + gcc |
    # | -Compile By: |
    # | +- Kaue Mendes |
    # +————————–+
    # | script under rights from |
    # | GPL – General Public Lice|
    # | nse. |
    # +————————–+
    #
    # PLAN IT TECNOLOGIA E INFORMACAO

    #ARMAZENA O LOCAL ONDE ESTAO O EXECUTAVEL DO MSN-PROXY
    MSNDIRBIN=/usr/local/bin
    DAEMON=/usr/local/etc/msn-proxy/pid/daemon.pid

    #——-script de start—————————#

    function start() {

    echo -ne “\e[31;1mIniciando Msn-Proxy:\e[m"
    #EXECUTA E FORCA PRA BACKGROUND
    $MSNDIRBIN/msn-proxy &
    echo -ne " [ \e[32;1mOK\e[m ]\n”
    }

    #——-script de stop—————————-#

    function stop() {

    echo -ne “\e[31;1mParando Msn-proxy:\e[m"
    # APAGA ARQUIVO GERADO PARA ARMZENAR O PID DO PROCESSO (ANTIGO)
    echo " " > $DAEMON
    # ARMAZENA NOVAMENTE NO ARQUIVO DAEMON O PID DO MSN-PROXY
    pgrep msn-proxy > $DAEMON
    echo -ne " [ \e[32;1mOK\e[m ]\n”
    # MATA O PID ARMAZENADO NO DAEMON.PID
    kill -9 `cat $DAEMON`
    }

    #VERIFICA SE O ARQUIVO BIN REALMENTE EXISTE SE EXISTE CONTINUA

    if [ -d $MSNDIRBIN ]
    then

    #CASE DE INICALIZACAO DAS FUNCTIONS.

    case $1 in

    start)start ; sleep 2 ;;

    stop)stop ; sleep 2 ;;

    restart)stop ; sleep 2 ; start ; sleep 2 ;;

    *)
    echo -e “\e[33;1mOpcao Desconhecida\e[m”
    echo -e “Usage: msn-proxy {start|stop|restart|status|help|}”
    ;;
    esac

    exit 0

    else

    echo -e “\eErro ao Inicializar Msn-Proxy. Diretorio $MSNDIRBIN nao existe”

    fi

  49. Wendell Almeida disse

    Perfeito.
    Ajudou bastante as dicas.
    Só faltou comentar das configuração no Makefie (indicação das libs mysql e do gcc4).
    Usei o Debian Etch. Instalei a libevent e libmysqlclient da própria distro. Até agora sem problemas.
    Obrigado.

  50. Diego,

    Muito bom, testado no FreeBSD, OpenBSD, Ubuntu e OpenSolaris (após alteração de alguns sources).

    Testado com 70 usuários, me parece funcionar bem. Notei que algumas vezes ele não consegue informar o status de certos usuários, mostrando-os como off-line quando estão on-line. Estou investigando isso com mais detalhes.

    Respondendo ao colega Vagner:

    Verifique se:

    * A regra de iptables está corretamente inserida e se o ip forward está ativado.
    * Verifique se a tabela internal_host contém o endereço IP de sua interface LAN.
    * Verifique se a interface PHP contém os dados corretos no arquivo de configuração de conexão a base de dados. Teste a conectividade com banco com: “mysql -umsn-proxy -Dmsn-proxy -psua_senha”
    * Verifique se você inseriu os privilégios corretos na base de dados.
    * Verifique se você tem a libevent instalada.
    * Pode ser necessário instalar as bibliotecas de compatibilidade (Software legado) no Fedora, porém não estou certa disto. Deixaria esta alternativa por último, pois é muito remota.

    Acho que seria estes os fatores que podes verificar.

  51. J.moro disse

    Ola .. Parabens.. muito bom o tutorial.

    instalei em um free7.0, e nao funciona com o squid auth!
    existe algum truque para funcionar os dois juntos.

    se rodo ele sem o proxy, funciona perfeitamente.

    obrigado
    JMoro

  52. maicon disse

    Boa tarde
    Primeiro queria agradecer a todos pelo espírito opensource
    Estou com um a seguinte situação conecto blz no msn-proxy mas os usuários que esta on-line não aparassem online demora um pouco e eles vão aparecendo,tem alguma configuração para isto .

  53. maicon disse

    Resolvido era o conf do msn-proxy
    ________________________________________________________
    default ns host : messenger.hotmail.com
    default ns port : 1863
    listen host : 0.0.0.0
    listen port : 1863
    backlog : 10
    max clients : 50
    port range begin : 25000
    port range end : 30000
    client read timeout : 600
    client write timeout : 60
    server read timeout : 600
    server write timeout : 60
    client connect timeout: 180

  54. juliano disse

    colocquei rodando no debian liberei as portas altas de conexao , mas alguns clientes msn nao logon em detrminadas horas do dia , tem como ter varios hosts para se realizar a authenticacao e login , não somente messenger.hotmail.com.. ??? se alguem poder ajudar agradeço

  55. Jucimar disse

    Olá, estou com o msn-proxy rodando td certinho. Tenho duas contas de msn muma com 10 contatos e outra com 600 contatos, o q tenho 600 contatos raramente consigo logar passando pelo msn-proxy.

    aí está o erro que aparece com msn-proxy -d
    debug: fail to send command to ns server

    Minha configuraçao está assim:
    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 : 100
    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

    Se alguém tiver alguma dica eu agradeço…

  56. Demys disse

    Boa Noite,

    Estou configurando o msn-proxy diretamente no meu firewall com Fedora 7.
    A principio esta tudo correto, mas não consigo conexão no msn.
    Na página de gerenciamento do msn-proxy fica marcada a hora que tentei me conectar, mas nada de conexão.
    Estou usando esta regra de firewall (proxy transparente):

    iptables -t nat -A PREROUTING -p tcp –dport 1863 -i eth0 -j REDIRECT –to-port 1863

    Meu arquivo de configuração do msn-proxy:

    [root@fireout log]# msn-proxy -v
    info: reading config file [/usr/local/etc/msn-proxy/msn-proxy.conf]
    SQL: (SHOW TABLES)
    SQL: (SELECT connect, save_msg, save_contacts, commands, internal_host FROM defaults LIMIT 1)
    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 : 50
    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: Address already in use
    [root@fireout log]#

    Alguem pode me ajudar?

    Obrigado

  57. pitkk disse

    PARA QUEM USA SLACKWARE TERÁ QUE SER ALTERADO O ARQUIVO /usr/local/etc/msn-proxy/mysql/conf
    PARA /var/run/mysql/mysql.sock|0|msn-proxy|secret|msn-proxy

    DESSE JEITO FUNCIONOU PRÁ MIM.

    ESPERO TER AJUDADO.

  58. pitkk disse

    Olá pessoal, configurei tudo certinho mas os meus usuários estão aparecendo offline na pagina de usuário.

    Se alguém conseguiu colocar ONLINE agradeço desde já a ajuda solidária.

  59. pitkk disse

    Pessoal, caso a linha
    ” iptables -t nat -I PREROUTING -i eth0¹ -p tcp –dport 1863 -j REDIRECT –to-port 1863 ” der algum erro, troque por
    iptables -t nat -I PREROUTING -p tcp –dport 1863 -i eth0 -j REDIRECT –to-port 1863

    No meu caso com slackware deu certo.

  60. Wilson Galafassi disse

    Boa tarde.

    Você conseguiu numa máquina onde rode squid junto fazer efetivamente o bloqueio da transferência de arquivos?
    Eu testei aqui e não obtive sucesso. Alguma sugestão sobre regas para o proxy? Só não consegui fazer funcionar isso. De resto maravilha.
    Abraço,
    Wilson

  61. Sérgio disse

    Bom dia a todos, estou com problema para instalar o msn-proxy, qdo digito make, ele me retorna o seguinte erro
    [root@web msn-proxy]# make
    cc -g -Wall -O2 -pipe -I/usr/include/mysql -I/usr/include/mysql -fno-builtin-log -c mysql.c
    mysql.c: In function `db_init’:
    mysql.c:279: error: `MYSQL_OPT_RECONNECT’ undeclared (first use in this function)
    mysql.c:279: error: (Each undeclared identifier is reported only once
    mysql.c:279: error: for each function it appears in.)
    make: ** [mysql.o] Erro 1

    Uso o conectiva 10, gcc3.3, mysql 4.0, ja tentei de tudo, mais ainda não consegui, se alguém puder me ajudar ficarei muito grato

  62. Carlos Oli disse

    O msn-proxy não está efetivamente bloqueando a transferência de arquivos, alguém pode me ajudar?
    Outra situação, as vezes os usuários não conseguem conectar, apresenta a mensagem:

    debug: connection from [192.168.3.93]
    connected to [messenger.hotmail.com:1863]
    debug: command blocked: USR 107 igor_olicenter@hotmail.com 1444216430.25379157.10112863
    payload: [(null)]
    debug: ns client pre command not accepted
    USR 107 igor_olicenter@hotmail.com 1444216430.25379157.10112863
    payload: [(null)]

  63. dubelon disse

    Parabéns pelo tutorial.

    O msn-proxy rodou corretamente no Fedora 5, onde criei o ambiente de teste, e se mostrou uma ótima ferramenta para gerenciamento do tráfego msn interno. Sem discussões.

    Grato.

  64. Fernando disse

    Estou com o bom e velho problema.. Ja refiz 2 vezes a instalação completa e nada!

    Uso Debian Etch c/ squid3 transparent:3128, firewall ACCEPT.

    root@root# /usr/local/bin/msn-proxy -v
    info: reading config file [/usr/local/etc/msn-proxy/msn-proxy.conf]
    SQL: (SHOW TABLES)
    SQL: (SELECT connect, save_msg, save_contacts, commands, internal_host FROM defaults LIMIT 1)
    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 : 800
    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]
    SQL: (DELETE FROM sb)
    SQL: (UPDATE contacts SET contact_status = ‘OFF’, contact_deny = contact_deny & ~4194304)
    SQL: (UPDATE users SET status = ‘OFF’)

    Se alguem conseguiu resolver.. OOObrigado.

  65. Malcon disse

    Olá a todos,

    Gostaria de saber como faço para apagar as mensagens salvas no banco mysql pelo msn-proxy?

  66. MALCON disse

    E COMO SERIA O COMANDO PARA DELETAR AS MENSAGENS SALVAS PELO MSN-PROXY NO BANCO DE DADOS?

    • pitombera disse

      Este script remove todos os logs ou por usuario, entao, muito cuidado.

      Bash script para limpar os logs

      #!/bin/sh
      #
      # Exemplo para MySQL
      #
      # User do MySQL
      MY_USER=”user”
      # Senha do MySQL
      MY_PASS=”senha”
      # Banco de Dados do msn-proxy
      MY_DB=”msn-proxy”
      # Logs apenas de um usuario
      TARGET=”usario@hotmail.com”

      ## Daqui pra baixo nao mexe
      MYSQLC=$(which mysql)
      [ $MYSQLC = "" ] && exit 1

      if[ $TARGET != "" ]
      then
      DELETE=”DELETE FROM log where email = ‘${TARGET}’”
      else
      DELETE=”DELETE FROM log”
      fi

      $MYSQLC -u ${MY_USER} -p${MY_PASS} ${MY_DB} -e “${DELETE}” && \
      echo “Log deletado com sucesso” || \
      echo “Erro ao deletar log”

      #### FIM ###

      Salve em um arquivo, ex.: del_logmsn.sh
      Execute: sh del_logmsn.sh
      ou
      chmod +x del_logmsn.sh
      ./del_logmsn.sh

      Sempre que precisar limpar os logs de um User especifico mudar a variavel TARGET, caso queira remover todo o log, deixar variavel TARGET em branco: TARGET=”"

      Espero ter ajudado

      []’s

  67. Evandro disse

    Para resolver o MYSQL_OPT_RECONNECT, faça o seguinte:
    1) Abra o mysql.c;
    2) Procure por MYSQL_OPT_RECONNECT;
    3) Altera a variável de MYSQL_OPT_RECONNECT para o número 0 ou 1, de acordo com a necessidade.

    mysql_options(&mysql->mysql, MYSQL_OPT_RECONNECT, &reconnect);
    mysql_options(&mysql->mysql, 1, &reconnect);
    // ou
    mysql_options(&mysql->mysql, 0, &reconnect);

    []’s

Deixe uma resposta

XHTML: Você pode usar estas tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>