O msn-proxy é um serviço de proxy transparente para clientes do msn messenger, ele suporta todos os protocolos ativos ( todos clientes ), controla quem e como o msn messenger é usado em sua rede.
O texto acima é uma tradução da descrição escrita pelo autor no site do projeto.
O msn-proxy possui vários recursos tais como : Bloqueio de usuários, bloqueio de contatos, 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.
Pacotes de compilação
Para instalar os pacotes necessários para a compilação do msn-proxy execute o comando abaixo:
#yum install gcc gcc-c++ autoconf automake
Requisitos :
http://monkey.org/~provos/libevent/
https://sourceforge.net/projects/msn-proxy
PHP 4 ou 5
Apache 2
MySQL server 4 ou 5
Libevent - esse pacote deve ser baixado pelo link acima
# yum install httpd php php-mysql mysql-devel mysql-server -y
Tendo todos os pacotes vamos por a mão na massa.
Primeiramente vamos descompactar o pacote libevent
# tar -xvzf libevent-1.4.5-stable.tar.gz
# cd libevent-1.4.5-stable
# ./configure && make
# make install
Depois que você tiver compilado e instalado, entre no arquivo
# vim /etc/ld.so.conf
e adicione as seguintes linhas:
/usr/local/lib
/usr/lib
salve o arquivo e saia.
Depois execute o comando:
# ldconfig
Feito, depois de compilado e instalado vamos agora ao msn-proxy.
Como estamos usando o mysql como base de dados, baixei o pacote com suporte ao mysql;
Vamos agora descompactar o pacote abaixo:
# tar -xvzf msn-proxy-0.6.3-mysql.tar.gz
# cd msn-proxy
Antes de começarmos a compilar o msn-proxy altere o caminho das libs do mysql, segue abaixo os caminhos corretos no centos:
# vim Makefile
MYSQLINC=/usr/local/include
MYSQLLIB=/usr/lib/mysql
Feche e salve o arquivo.
# make
# make install
Os arquivos de configuração do msn-proxy estão localizados em /usr/local/etc/msn-proxy
Confira se seu mysql esta rodando, caso não, execute o comando abaixo:
# service mysqld start
Vamos agora criar a base do msn-proxy executando o comando abaixo, se seu usuário root estiver sem senha ele vai logar normal no banco, senão use
root com senha
# mysql -uroot -psenha
root sem senha
# mysql
> create database `msn-proxy`;
> grant all privileges on `msn-proxy`.* to `msn-proxy`@localhost identified by 'secret';
> flush privileges;
>quit
Ok, base de dados criada!.
Agora vamos entrar na pasta mysql para editar os dados de conexão com o banco:
# cd /usr/local/etc/msn-proxy/mysql
# vim conf
O arquivo deverá ter o seguinte conteúdo
# "host or socketport (zero for socket)userpassdatabase name"
localhost|0|msn-proxy|secret|msn-proxy
Salve o arquivo e feche.
Agora vamos a página de monitoramento das conexões e dialogos feitos pelo daemon do msn-proxy. Mova a pasta php para o diretório raiz do seu apache
# mv php /var/www/html/msn-proxy
Vamos editar o arquivo msn-proxy/php/mysql.inc.php
# vim msn-proxy/php/mysql.inc.php
e altere os dados de conexão
$host = "localhost";
$user = "msn-proxy";
$pass = "secret";
$db = "msn-proxy";
$port = 3306;
Salve e feche o arquivo.
Agora vamos executar o daemon pela primeira vez para fazer a criação das tabelas e inserções iniciais na base;
# msn-proxy
Entre novamente no mysql e insira o ip do servidor
# mysql
# use msn-proxy;
> insert into defaults (internal_host) values ('192.168.0.1');
> quit
Pronto agora vamos colocar o msn-proxy para rodar em background
# msn-proxy -b
Agora vamos criar o pulo do gato, o cara que redireciona todas as conexões do msn para seu firewall
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1863 -j REDIRECT --to-port 1863
Nota: A interface informada na regra acima (eth0) é a interna da rede local.
# MSN
iptables -a INPUT -s 192.168.0.0/24 -p tcp --dport 1863 -j ACCEPT
iptables -a INPUT -s 192.168.0.0/24 -p tcp --dport 25000:30000 -j ACCEPT
Agora basta entrar via web e visualizar as conexões do msn:
http://ip-do-seu-servidor/msn-proxy
Para quem quiser baixar a última versão em desenvolvimento, é só usar o repositório cvs pelo comando abaixo:
# cvs -z3 -d:pserver:anonymous@msn-proxy.cvs.sourceforge.net:/cvsroot/msn-proxy co -P msn-proxy
ou
#
svn co https://msn-proxy.svn.sourceforge.net/svnroot/msn-proxy msn-proxy
Para quem quiser saber mais informações sobre o msn proxy leia o artigo abaixo
Marcelo Torres Abaixo:
http://mundoopensource.blogspot.com/2008/08/controlando-o-uso-do-msn-com-o-msn.html
28 comentários:
Marcos, estou acompanhando o seu tutorial sobre msn-proxy mas não estou conseguindo colocar pra funcionar. Não está criando as tabelas. Tem como dar uma força???
Claro Douglas,
seguinte, as tabelas só são criadas quando você configura o arquivo /usr/local/etc/msn-proxy/mysql/conf
Verifique se voce criou o usuário do banco, se os dados do arquivo conf estão de acordo com o usuário que você criou para a base msn-proxy.
Marcos,
Valeu pelo script, mas acredito que estou com problema no php, pois tenho não consigo conectar com mysql pelo brower??? fail to connect to mysql\n...
Pode me ajudar...
Fabio
Abadi, seu post tá 80% completo, durante o processo de criação de banco, as informações não batem, não é possivel criar um banco com instruções "minusculas", a conexão com o banco num tá completa também, pode revisar pra nós?
Nilson
Olá Nilson tudo bem?
Obrigado pelo comentário.
Realmente existe um problema na sql de criação do banco mas não tem nada a ver com instruções "minusculas" e sim com o tipo de aspas usados para palavras separadas por hífem como msn-proxy. Já fiz a correção. No blog estava postado com aspas simples 'msn-proxy', mas o correto é `msn-proxy`. Quanto aos passos, se puder me dizer onde mais está errado. Acredito esse seja o único problema, pois já instalei em vários servidores usando esses mesmos passos do meu blog e não tive dificuldade alguma.
Abraço Nilson.
Ola Abadi, obrigado pela atenção, tenho pouco conhecimento com banco de dados, a correção das 'aspas', deu certo pra criação do banco, porem veja o erro que é apresentado quando tento dar privilégio:
grant all privileges on `msn-proxy`.* to `msn-proxy`@localhost identified by `secret`;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your M ySQL server version for the right syntax to use near '`secret`' at line 1
Em seguida, na execução do msn-proxy, a mensagem : msn-proxy
msn-proxy: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: N o such file or directory
, ou seja, não encontra essa LIB, mas ela está Lá, poderia nos ajudar?
A propósito, estou usando CentOS!
Abraços
Olá Nilson,
peço que me mande seu email para que eu possa ajudá-lo. Meu email está no perfil.
Abraço.
Boa Tarde,,, Marcos Abadi, enviei um email pra você, minha duvida continua a mesma, se puder ajudar...
Abraços
Nilson Brito
Boa tarde Marcos,
fiz toda a configuração e está funcionando tudo certinho.
O programa grava todas as conversas dos usuários.
Quando vou acessar alguma conversa gravada ele abre normalmente, quando tento acessar outra conversa de outro contato por exemplo, ele fica lento e não mostra, para voltar ao normal tenho que reiniciar o serviço do apache.
O que pode estar acontecendo?
Alguém já passoou por isso?
Olá Breno,
realmente já tive esse problema, mas bastou fechar o browser e abrir novamente que voltou a funcionar, acho que deve ser algum problema na hora de fazer a consulta sql para trazer as conversações. Você está usando qual versão do msn-proxy?
Olá Marcos, estou usando a versão 0.7a.
Na primeira ele abre as conversas salvas, depois se vou abrir a segunda vez fica uma eternidade...
Breno.
[root@servidor msn-proxy-0.7]# make
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 -levent -L/usr/lib/mysql/ -lmysqlclient
server.o: In function `server_sched_write':
/root/msnproxy/msn-proxy-0.7/server.c:122: undefined reference to `event_get_fd'
server.o: In function `server_sched_read':
/root/msnproxy/msn-proxy-0.7/server.c:116: undefined reference to `event_get_fd'
server.o: In function `server_close':
/root/msnproxy/msn-proxy-0.7/server.c:57: undefined reference to `event_get_fd'
/root/msnproxy/msn-proxy-0.7/server.c:61: undefined reference to `event_get_fd'
sb.o: In function `sb_disconnect':
/root/msnproxy/msn-proxy-0.7/sb.c:174: undefined reference to `event_get_fd'
sb.o:/root/msnproxy/msn-proxy-0.7/sb.c:145: more undefined references to `event_get_fd' follow
collect2: ld returned 1 exit status
make: *** [msn-proxy] Error 1
alguem pode me dar um help
caio@caionorder.com
Olá Caio,
pelas mensagens na compilação creio que possa estar faltando instalar o pacote libevent ou ele não está achando os arquivos deste pacote. Qual seu SO?
Ótimo tuto...
me ajudou bastante.
Parabéns, continue assim, contribuindo com a comunidade livre.
Vc falou proxy, é preciso que o servidor faça o controle da rede ??
OU seja todo o tráfego passe por ele para sair da rede interna ??
Olá Berdan, não entendi muito bem sua pergunta, aqui neste tópico estou abordando a instalação do msn-proxy e não de proxy. Qualquer dúvida estou a disposição meu amigo.
Grande abraço.
Marcos, a respeito da página de administração, é possível colocar alguma senha nela para que apenas o administrador de rede consiga fmanipular ???
Olá Berdam,
sim é possível,
faça os seguintes passos abaixo:
obs: esses passos são para quem usa centOS e apache httpd.
# vim /etc/httpd/conf/httpd.conf
encontre no arquivo e adicione o seguinte parametro AllowOverride AuthConfig ficando desta maneira:
Essa diretiva no apache permite você usar autenticação por meio do arquivo .htaccess.
Options FllowSymLinks
AllowOverride AuthConfig
Agora feche o arquivo e saia, vamos ao próximo passo que é criar o arquivo .htaccess, esse arquivo deve ser criado dentro da pasta /var/www/html/msn-proxy.
Agora vamos editá-lo:
# vim /var/www/html/msn-proxy/.htaccess
Adicione o seguinte conteúdo neste arquivo:
AuthType Basic
AuthName "Msn-Proxy"
AuthUserFile /var/www/html/msn-proxy/usuarios.txt
Require valid-user
Salve e feche o arquivo.
Feito isso agora vamos criar um usuário que poderá se autenticar para acessar a página do msn-proxy usando o seguinte comando abaixo:
# htpasswd -c /var/www/html/msn-proxy/usuarios.txt login_do_usuario
Logo será solicitado uma senha, e repita a mesma e pronto, agora é só reiniciar o apache e testar a autenticação tentando abrir a página do msn-proxy.
Abraço.
Blz consegui fazer,muito obrigado, se não fosse pedi muito
A respeito dos comandos iptables no artigo a placa de rede eth0, se refere a placa de rede interna ou externa ??
Olá Berdam, não é pedir muito não, até é uma informação que eu vou colocar, a interface ali especificada no iptables é a interna.
Abraço.
MArcos, configurei aqui e ficou show de bola, a única coisa que está acontecendo é o seguinte, eu coloquei o msn-proxy num script. Quando eu rodo o script pela primeira vez, o msn-proxy funciona normal, na segunda vez ela já n funciona tão bem e não bloqueia os contatos. Existe talvez algum comando para retirar o msn-proxy do background e startar novamente ???
Olá Berdan, no próprio blog tem um exemplo de script de stat/stop, segue link abaixo:
http://marcosabadi.blogspot.com/2008/11/criando-e-colocando-um-scripts-para.html
Olá Marcos, ja utlizo o msn-proxy a algum tempo (implantado com a ajuda do seu tutorial) agora estou com problemas com o msn 2011. Não acessa se passando pelomsn-proxy.
Tem alguma dica??
Obrigado.
Sandro
Olá Sandro,
no site do projeto msn-proxy tem um forum dos desenvolvedores, o msn-proxy trabalha com a assinatura de cada versão de msn para tratar as mensagens, creio que essa nova ainda não esteja incluída na versão do msn-proxy. Mas te aconselho a entrar no forum e tirar suas dúvidas lá.
Grande Abraço.
Amigo, seu tuto salvou minha vida, obrigado!
Grande mestre, consigo liberar os contatos de apenas um dominio por exemplo? Assim, nao quero que os funcionarios utilizem os dominios padroes, @hotmail.com, @msn.com. Quero que aceite conexoes apenas com o dominio da minha empresa. Fazendo com que eles nao utilizem o msn particular..
Grato.
Marcos tudo bom? Me chamo Eduardo e sou bem novato com mysql. Bom, estou com uma dificuldade quando vou executar o comando msn-proxy pela primeira vez... Dá esta mensagem "fail to read mysql config (check defaults table)
" O que pode ser?
Obrigado!
Eduardo Uda
dudusat@hotmail.com
Olá Eduardo,
você tem que criar a tabela defaults, conforme consta no tutorial.
Abração.
Postar um comentário