Configurando MSN transport no Ejabberd

Como disse a um tempo atrás abandonei o msn, por N razões principalmente pela redundancia dos contatos nas redes msn e jabber. Mas como levei um pé na bunda passei a xavecar as minas pelo computador, e todas elas usam MSN …. Outro fato pentelho é os conflitos do GTalk com o Jabber o que me faz pensar se não seria uma boa manter o MSN e apagar todos os GTalks do meu roster

Resolvi então habilitar o MSN transports no meu Jabber, assim não fico incomodado por fazer um login a mais toda vez 🙂 Instalei no meu EJabberd no fedora, entre hacks e feridos o negócio ta indo bem, segue o tutorial assumindo que seu Ejabberd está configurado e funcionando:

Primeiro passo, vamos instalar as dependências :


yum install python-twisted pyOpenSSL

Agora baixe o source :


wget http://delx.net.au/projects/pymsnt/tarballs/pymsnt-0.11.3.tar.gz

Copie o config-example.xml para config.xml e configure :

  • A chave ‘jid’ deve ser configurado com o ID que vc quer para sua rede, nescessário para que que o servidor Jabber reconheça o MSN, por exemplo: msn.host.com’.
  • A chave ‘host’ deve ser um domínio ou endereço de IP PÚBLICO de onde o transport MSN está rodando. Isso é fundamental para transferência de arquivos!
  • A chave ‘mainServer’ deve ter o domínio ou endereço de IP PÚBLICO do servidor Jabber.
    Exemplo: ‘127.0.0.1’.
  • O conteúdo da chave ‘secret’ deve “bater” com a senha secreta que vamos configurar no Jabber, trata-se de uma senha que só o servidor Jabber deve saber.

Agora basta configurar o Ejabberd , adicione a seguinte linha no arquivo /etc/ejabberd/ejabberd.cfg :

{5347, ejabberd_service, [{host, "msn.host.com",
[{password, "secret"}]}]},

Agora basta reiniciar o serviço e rodar o script ./PyMSNt 🙂 Legal né ? Agora vá no seu cliente Jabber, faça um “discover services”, cadastre sua senha MSN e seja feliz :):):)

Eu não fui feliz, o meu não funcionou, apresentava o seguinte erro :

Failed to connect to MSN servers: [Failure instance: Traceback (failure
with no frames): : Timeout]

Pra corrigir tive que alterar o código do protocolo msn implementado na biblioteca em src/
legacy/msn/msn.py :


de MSN_PROTOCOL_VERSION = "MSNP11 CVR0"

para

MSN_PROTOCOL_VERSION = "MSNP11"


Agora sim, funcionou 🙂

Storage ZFS em FreeBSD

Mais uma saga se inicia, a configuração de um servidor de dados rodando FreeBSD e ZFS. Faz tanto tempo que não uso FreeBSD que esqueci quase todos os macetes, mas pelo menos completei a instalação sem qualquer problema.

Aqui tenho uma máquina com 3 discos, um deles é IDE e possui 80GB de capacidade, os outros dois são SATA e tem 320 GB cada. A brincadeira é instalar o FreeBSD e montar uma partição gigante unindo os três discos , algo parecido com um split.


Logo de cara vi que não tenho bash instalado, CSH é um lixinho, e para instalar o BASH preciso de rede, então esse é o primeiro passo . Para ver quais placas de rede estão plugadas ao sistema use :


ifconfig

Dessa forma descobri que minha placa é vr0, como uso DHCP usei o seguinte comando para configurar minha rede :


dhclient vr0

Feito isso vamos instalar o bash 🙂 No FreeBSD temos duas formas de instalar os programas, via ports e via pacotes binários. A oferta de pacotes via ports é mais abundante e flexivel, já os pacotes binários são mais rápidos de se obter. Como eu quero apenas o BASH vou usar o ports.

Usar o ports é fácil, se você sabe o nome do que procura use o :

whereis bash

Se não sabe vá em /usr/ports, e escolha a categoria do software que procuras, e dentro de cada um desses diretórios tem um diretório com o nome dos softwares, e o bash fica em /usr/ports/shells/bash. Uma vez dentro do diretório do bash basta dar o comando :


make && make install

Depois é só usar o comando chsh pra mudar o shell é se livrar do lixo do csh. 🙂

A parte boa é que o ZFS já vem com o FreeBSD, a ruim é que o suporte é experimental, nem sempre experimental quer dizer ruim… Mas só vou descobrir com o tempo heheh. No meu caso eu quero usar o resto do HD de 80 GB , e os dois HDs sata, para realizar essa mágica com o ZFS basta usar os comandos :


zpool create storage ad0s3 ad4 ad6

No meu caso tive que repetir o comando por causa de um warning dado pelo time do FreeBSD avisando que o ZFS ainda não está totalmente implementado. Mas aqui funcionou, totalizando 680 GB espalhados por dois discos e uma partição. E o sistema já montou o pool em /storage automaticamente.
Configuração do ZFS é isso mesmo, fazem LVM e raid parecerem piadas de mal gosto.

Agora temos que editar alguns arquivos, e devo dizer que o vi que vem no freebsd é um lixo, e se você , assim como eu não quer perder muito tempo compilando o VIM vamos instalar o pacote pronto, o comando é simples:



pkg_add -r vim

Basta substituir o “vim” pelo comando que você quer e tudo vai dar certo… ou não, no meu caso o pacote pronto do VIM exige a instalação completa do xorg, um completo desperdício de disco, já que nem monitor essa máquina via ter.

Para que nosso array de discos monte na incialização do sistema basta executar o comando :


echo 'zfs_enable="YES"' >> /etc/rc.conf

Como disse no início do post ZFS é experimental com o FreeBSD, então ele tem vários bugs já conhecidos, no caso do ZFS o mais grave é um que causa Kernel Panic se houver excesso de I/O, carinhosamente conhecido como “kmem_suballoc” . Pra resolver isso basta adicionar as seguintes linhas no /boot/loader.conf :


vm.kmem_size_max=”512M”
vm.kmem_size=”512M”
vfs.zfs.zil_disable=1

Se colocar mais memória doque seu computador possui ele vai crashar !

Agora é só botar o samba pra exportar o pool e já era ! Se o Mac OSX vier com uma implementação decente do ZFS, e aparentemente vai, o linux vai cair na irrelevância bwa ! ha ! ha ! ha !

Trolagens a parte, vou descrever brevemente porque o ZFS é o melhor sistema de arquivos em qualquer segmento:

  • Ele faz snapshots ! Vai fazer faxina no HD ou vai deixar seu sobrinho mexer no micro ? sem crise ! faz um snapshot e todos seus dados estão automaticamente backupeados !
  • Hd ta acabando, não tem mídia pra fazer backup ? Sem problemas, ativa a flag de compressão de dados e ganhe gigas de espaço sem fazer esforço
  • Precisa de mais partições ou de redimencionar o seu /home ? Sussa, é mais rápido do que ler essa linha
  • Comprou um HD novo ? É só espetar adicionar ao pool de discos e usar, não vai ter trabalho nem pra de particionar muito menos montar o disco novo !!!
  • Quer segurança nos dados, redundancia e velocidade ? Sussa, raidz faz isso pra você, é só ter mais de 2 discos

O único defeito do ZFS é que ele não é licenciado em GPL, então não pode ser incluido no kernel do linux com a mesma facilidade que foi absorvido pelos *BSDs ou OSX … “Linux é livre, ZFS é livre, mas minha licença é melhor que a sua então não vou incorporar seu software” babaquice ? Sim e da grande ! Quem perde ? Todo mundo !

Ponto pra licença BSD.

quota de disco no fedora

Se você é um sysadmin com poucos recursos de hardware, ou é um ditador tirano como eu, implementar quotas de disco no sistema é fundamental para a saúde do sistema. Como sempre vou usar o fedora como base para a instalação e para a sua sorte ele já vem com esse recurso ativado no kernel por padrão. De nada adianta uma distribuição organizada se você quer usar um sistema de arquivos bizarro da árvore do AM, quota só rola legal em sistemas ext2/ext3 , em xfs eu nunca testei, e a implementação de quotas do reiserfs não é software livre.

yum install quota

Existe dois tipos de quota de disco, quota por usuário e quota de grupo, preciso explicar ? Que bom que não. Caso você vá implementar quota por usuário você deve adicionar usrquota ao campo de parâmetros da respectiva linha de sua partição no arquivo /etc/fstab , por exemplo :

/dev/ubda               /                       ext3    defaults,usrquota        1 1
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/ubdb               swap                    swap    defaults        0 0

Caso use quotas por grupo adicione grpquota, simples né ? Feita as modificações você deve remontar a partição :

mount -o remount /

Agora devemos criar o arquivo de controle quotas, como segue no exemplo :

# touch /home/aquota.user
# chmod 600 /home/aquota.user

Caso use quota por grupo use :

# touch /home/aquota.group
# chmod 600 /home/aquota.group

Agora você deve rodar o comando quotacheck -vagum , ele vai reclamar de algumas coisas, mas não leve ele a sério.

Para editar as quotas dos seus users use o edquota -u usuario , então você verá algo desse tipo :

Disk quotas for user (uid 505):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/ubda                        16  300000000  350000000          6        6        0

Soft é a quota flexivel, ela pode ser extendida temporariamente até o limite definido em hard , ou seja durante um certo periodo o usuario pode manter mais arquivos do que o limite imposto , após esse período o usuário perde o direito de escrever no disco, legal né ? Se o usuário for um espertinho e tentar escrever um arquivo maior que o imposto pelo Hard, o sistema bloqueia a escrita.

O tempo em que o usuário pode ficar com a quota estourada é definida pelo comando edquota -t

Feito isso, corra para o abraço, não dos seus usuários, eles vão te odiar.