Publicado por: bzanelato | Junho 22, 2009

Compilando o PHP4 no Debian Etch/ Lenny

Este documento é referente a instalação e configuração de um servidor que tive que configurar estes dias, o grande problema era que ele precisava ter o php4 compilado com suporte a postgresql e com uma versão atual do Debian, o que dificulta pois nas versões atuais é tudo phphpp5 e etc.

Pacotes

Obrigatoriamente precisamos da vesão 4.3.10 do PHP

http://www.filewatcher.com/m/php-4.3.10.tar.bz2.4026148.0.0.html
deb http://ftp.br.debian.org/debian/ etch main
deb-src http://ftp.br.debian.org/debian/ etch main

Bom, a regra número 1 é não instalar NADA do php pelo apt-get, pois vamos compilar o php,
e somente vamos instalar pelo apt as milhões de bibliotecas necessárias para que ele funcione.

Segue a lista dos pacotes necessários, provavelmente eu vou esquecer de algum mas nada que um apt-cache search
não resolva

apache2
apache2-mpm-worker
apache2-threaded-dev
apache2-utils
apache2.2-common
make
makedev
gcc
gcc-4.1
gcc-4.1-base
libgcc1
g++
g++-4.1
flex
zlib1g
zlib1g-dev
zlibc
libxau-dev
libxau6
libxdmcp-dev
libxdmcp6
libxext-dev
libxext6
libxml++2.6-2
libxml++2.6-dev
libxml2
libxml2-dev
libxpm-dev
libxpm4
libxslt1-dev
libxslt1.1
libmodxslt0
libmodxslt0-dev
libmozjs-dev
libmozjs0d
libjpeg62
libjpeg62-dev
libsablot0
libsablot0-dev
sablotron
libpng12-0
libpng12-dev
libpng3
libjpeg62
libjpeg62-dev
libgdbm3

Adicionais

postgresql-8.1
postgresql-client-8.1
postgresql-client-common
postgresql-common
postgresql-contrib-8.1
libdbd-mysql-perl
libmysqlclient15off
mysql-client-5.0
mysql-common
mysql-server
mysql-server-5.0
libcurl3
libcurl3-dev
libcurl3-openssl-dev
curl

Compilando o PHP 
Depois de descompactar o arquivo, entre no diretório e rode o configure
./configure -with-apxs2=/usr/bin/apxs2 --enable-dbase --with-curl=/usr
--with-pgsql=/usr --with-gettext --enable-ftp --enable-track-vars
--enable-sockets --enable-sigchild --enable-memory-limit=yes --enable-trans-sid
--with-zlib=/usr --with-dom=shared,/usr --enable-wddx --with-xmlrpc
--with-freetype-dir=/usr --with-xpm-dir=/usr --with-jpeg-dir=shared,/usr
--with-png-dir=shared,/usr --with-gd --enable-xslt --with-xslt-sablot
 --with-expat --with-iconv --with-mime-magic

Agora rode o make, make install

make; make install

Copie o php.ini

cp /root/php-4.3.10/php.ini-dist /usr/local/lib/php.ini

Erros / Patches

Teoricamente é facil compilar, mas agora é que vem o problema, apanhei muito e tive até que modificar
algumas bibliotecas em C

Erros que vão acontecer quando compilar o php

    apxs:Error: Activation failed for custom /etc/apache2/httpd.conf file..
    apxs:Error: At least one `LoadModule’ directive already has to exist..
    make: *** [install-sapi] Error

Caso sim, remova o arquivo httpd.conf atual (que é vazio por padrão) e crie um novo arquivo

/etc/apache2/httpd.conf como um link relativo para /etc/apache2/apache2.conf.

    #remove httpd.conf antigo (vazio por padrão no debian/ubuntu).
    sudo rm -rf /etc/apache2/httpd.conf
    #cria link relativo
    sudo ln -s /etc/apache2/apache2.conf /etc/apache2/httpd.conf

Continue:

Abra o arquivo de configuração do apache com o comando:

#abre arquivo de configuração
vi /etc/apache2/apache2.conf

Com o arquivo de configuração do apache2 aberto, execute os seguintes passos:

 1. Procure por “Include /etc/apache2/httpd.conf”, e quando achar,
comente a linha adicionando um “#” antes de Include. Ex: “#Include /etc/apache2/httpd.conf”.

2. Adicione as seguintes linhas ao final do arquivo:
        * LoadModule php4_module /usr/lib/apache2/modules/libphp4.so

AGORA RODE O MAKE NOVAMENTE MAS PROVAVELMENTE VC VAI CAIR NO PROXIMO PROBLEMA

make: *** [ext/xmlrpc/libxmlrpc/xml_element.lo] Error 1

Agora nós temos um erro na biblioteca libxmlrcp, procurando sobre bugs no PHP descobri que o

libxmlrpc NÃO compila perfeitamente na versão 4 do GCC ( Que estou utilizando no Debian 4),

infelizmente o caminho da biblioteca é para o php5 e não para o php4, então nós vamos precisar criar um

patch e modificar algumas bibliotecas e mudar de 0 para NULL.

São 3 arquivos de teremos que mudar : simplestring.c, xml_element.c e xmlrpc_private.h.

Neste arquivo vamos alterar a seguinte linha

vi ext/xmlrpc/libxmlrpc/simplestring.c

Comente a primeira linha e adicione a segunda com o valor NULL

/*#define my_free(thing)  if(thing) {free(thing); thing = 0;}*/
#define my_free(thing)  if(thing) {free(thing); thing = NULL;}
vi ext/xmlrpc/libxmlrpc/xml_element.c

Vamos mudar as seguintes linhas neste arquivo.

Comente a primeira linha e adicione a segunda com o valor NULL

/*#define my_free(thing)  if(thing) {free(thing); thing = 0;}*/
#define my_free(thing)  if(thing) {free(thing); thing = NULL;}

Tambem vamos adicionar um if nesta função no mesmo arquivo, ficando assim :

    Q_Destroy(&root->children);
      Q_Destroy(&root->attrs);
      //my_free((char*)root->name);
      if(root->name) {
      free((char *)root->name);
      root->name=NULL;
       }
      simplestring_free(&root->text);
      my_free(root);
   }
}
vi ext/xmlrpc/libxmlrpc/xmlrpc_private.h

Vamos mudar as seguintes linhas neste arquivo.

Comente a primeira linha e adicione a segunda com o valor NULL

/*#define my_free(thing)  if(thing) {free(thing); thing = 0;}*/
#define my_free(thing)  if(thing) {free(thing); thing = NULL;}

AGORA RODE O MAKE NOVAMENTE

Isto ocorre quando não instalamos um MTA antes de compilar o php,
caso vc tenha feito isto, instale o MTA postfix

apt-get install postfix

e agora ANTES DE RECOMPILAR O PHP NOVAMENTE execute o comando:

make clean

Para testar se a função esta funcionando, crie um info.php desta maneira

<?
phpinfo();
mail(bzanelato@gmail.com", "Assunto NAO SEI", "TESTE DE E-MAIL", "From: bzanelato@gmail.com\nContent-type: text/html; charset=iso-8859-1");
?>
Publicado por: bzanelato | Junho 17, 2009

Mudar todas as senhas de FTP no Plesk

plesk

Bom, hoje tive um problema onde um cliente precisava mudar todas as senhas dos usuarios de FTP do plesk para uma unica senha de uma vez só, eu cheguei a fazer uns 4 scripts , mas no final ficou bem mais simples do que eu imaginava pois o plesk tem uma ferramenta que muda a senha do usuário via shell, bem melhor do que ficar alterando direto no shadow como eu estava fazendo com o script perl anterior, bom, segue o script, espero que ajude:

Versão 1 com uma senha padrão para todos os usuarios :

#!/bin/bash
export PSA_PASSWD=”$(pwgen -s -c1)”
for i in $(mysql -D psa -u admin -p`cat /etc/psa/.psa.shadow` -e ’select login from sys_users;’); do
/usr/local/psa/admin/bin/usermng –set-user-passwd –user=$i; echo “$i: $PSA_PASSWD” >> ftp_passwords;
done
cat /usr/scripts/ftp_passwords | mail -s “FTP PASSWORDS” meuemail@dominio.com
echo “Zerando o Arquivo de Senhas”
echo > /usr/scripts/ftp_passwords
echo “Script finalizado com Sucesso”

Versão 2 com uma senha randomica para cada usuario :

#!/bin/bash

for i in $(mysql -D psa -u admin -p`cat /etc/psa/.psa.shadow` -e ’select login from sys_users;’); do
export PSA_PASSWD=”$(openssl rand 6 -base64)”; /usr/local/psa/admin/bin/usermng –set-user-passwd –user=$i; echo “$i: $PSA_PASSWD” >> ftp_passwords;
done
cat /usr/scripts/ftp_passwords | mail -s “FTP PASSWORDS” meuemail@dominio.com
echo “Zerando o Arquivo de Senhas”
echo > /usr/scripts/ftp_passwords
echo “Script finalizado com Sucesso”

É isso…

bzanelato@gmail.com

Publicado por: bzanelato | Setembro 25, 2008

Pacotão de drivers do notebook HP DV-2760BR para Windows XP

Recebi hoje um e-mail onde nosso amigo Gustavo Godoi, criou um pacote de todos os drivers do notebook DV-2760BR “CHOCOLATE” para windowsXP ! Obrigado Gustavo, a comunidade agradeçe.

“Ultimamente muitas pessoas estão tentando se adaptar com o novo sistema operacional da microsoft, Windows Vista. E quem está passando por isso sabe que não é fácil engoliar algo tão grande e pesado… Como sempre os novos computadores vêm com o produto da microsoft instalado por padrão, e muitos desses novos hardwares não têm drivers disponíveis, no site do próprio fabricante, para o Windows XP; isso acontece principalmente com os notebooks.

Bom, para quem cansou de brincar e está louco pra voltar para o Windows XP tem que gastar muito tempo procurando internet afora drivers para os componentes de sua máquina separadamente, é uma verdadeira luta, procurar os nomes de fabricante, tentar baixar drivers de outras marcas de notebook, e etc…”

Link para o artigo

http://www.webativo.com/?postagem/id/1222298542

Link para fazer o download do pacote

http://rapidshare.com/files/148118747/DRIVERS-Notebook_HP_DV-2760BR.zip.html

 

SENHA : webativo.com

Publicado por: bzanelato | Julho 26, 2007

Mailgraph no FreeBSD

Basicamente,

cd /usr/ports/mail/mailgraph

# com o ports atualizado eu tive que colocar a linha USE_NONDEFAULT_X11BASE=yes, mas com o BSD 5.3..6.0 não

make USE_NONDEFAULT_X11BASE=yes install clean

edite o rc.conf e adicione as linhas

mailgraph_enable=”YES”
mailgraph_pidfile=”/var/db/mailgraph/mailgraph.pid”
mailgraph_flags=”–logfile /var/log/maillog –daemon-rrd=/var/db/mailgraph –ignore-localhost –daemon –rbl-is-spam –daemon-pid=${mailgraph_pidfile}”
mailgraph_user=”root”
mailgraph_group=”wheel”

Adicionei a linha –rbl-is-spam justamente para verificar os spams tambem

Agora inicie o servico

/usr/local/etc/rc.d/mailgraph.sh start

E entre no end:

http://127.0.0.1/cgi-bin/mailgraph.cgi

Bom..é isso..flw pessoas

Bruno Moreira Zanelato

Publicado por: bzanelato | Junho 14, 2007

Limite de Anexo no Squirrelmail

Hoje tivem um problema com um cliente que não consegui anexar mensagens maiores que 5MB no squirrelmail, então descobri que o controle de anexo, é realizado dentro do php.ini. O squirrelmail consulta o arquivo para determinar qual é o tamanho permitido no anexo.

Edite o arquivo php.ini e altere a variavel upload_max_filesize

memory_limit = 20M        ;Quantidade máxima de memória que o PHP pode consumir (8MB).
post_max_size = 8M        ;Tamanho máximo de dados que o POST do PHP aceitará.
upload_max_filesize = 32M  ;Tamanho máximo permitido para tranferência de arquivos.

No caso eu alterei para 32 megas, agora somente reiniciar o apache.

Publicado por: bzanelato | Maio 7, 2007

Relatório de Acesso a VPN ( P.O.G)

Continuando a saga do PASTEL , onde o cliente pede o que quer..na hora que quer..e eu tenho que me virar pra fazer.

Neste caso o cliente queria um relatorio de acesso da sua VPN PPTPD, contendo as seguintes informações:

DATA

HORA

IP-ORIGEM

STATUS

Então, eu fiz este programa abaixo que pega estas informações do /var/log/messages, filtra e gera um html.

#!/bin/bash
set -f

echo Content-type: text/html
echo

data=$(cal | head -1)

echo “<html>”
echo “<head>”
echo “<title> M�s ${data}</title>”
echo “</head>”
echo “<center> Relatorio de acesso VPN<br>M�s ${data}<br><br>”
echo “<table border=8>”

lista=$(cat /var/log/messages | grep pptpd |awk ‘{print $2 ” ” $1 ” ” $3 ” ” $8 ” “$11}’ | egrep -v “call opening|TTY” | sed “s/ /##/g”)
echo “<tr>”
echo “<td>Dia</td><td>Mes</td><td>HORA</td><td>IP</td><td>Status</td>”
echo “</tr>”
for i in $lista
do
dia=`echo $i | awk -F”##” ‘{print $1}’`
mes=`echo $i | awk -F”##” ‘{print $2}’`
hora=`echo $i | awk -F”##” ‘{print $3}’`
IP=`echo $i | awk -F”##” ‘{print $4}’`
Status=`echo $i | awk -F”##” ‘{print $5}’`

echo “<tr>”
echo “<td>${dia}</td><td>${mes}</td><td>${hora}</td><td>${IP}</td><td>${Status}</td>”
echo “</tr>”
done

echo “</body>”
echo “</html>”

Publicado por: bzanelato | Abril 19, 2007

Verificando se o Relay se encontra “OPEN” no QMAIL

Eu nunca mechi muito com qmail, minha experiência em MTA sempre se resumiu em Postfix, mas esta semana comecei a dar suporte em alguns clientes que utilizam qmail.

O primeiro problema era verificar se o relay estava aberto, pq uam rede da china estava utilizando este MTA para enviar spam, então vou mostrar aqui algumas opções para controlar o relay e somente deixar as redes confiáveis para enviar e-mail.

Adicione as linhas a seu arquivo badrcptto

# vi /var/qmail/control/badrcptto
*%*
*!*
*@*@*

–> Domínio pelo qual o Qmail aceitará Relay

# echo “dominio.com.br” > /var/qmail/control/rcpthosts

–> Domínio onde ele fará Relay Local

# echo “dominio.com.br” > /var/qmail/control/locals

-> Ajustes em quem deve enviar email do seu servidor

vi /service/qmail-smtpd/tcp

:allow
127.:allow,RELAYCLIENT=”"
192.168.20.:allow,RELAYCLIENT=”"
127.0.0.1:allow,RELAYCLIENT=”"
200.x.x.x:allow,RELAYCLIENT=”"

Salve o arquivo, e depois digite “make” para ele gerar o .db novamente

Bom..é isso, o qmail é muito poderoso e existem inúmeras opções, uma boa semana pra todos.

Bruno Moreira Zanelato

bzanelato@gmail.com

Publicado por: bzanelato | Abril 13, 2007

Redirecionamento de Portas “Ipfw” e NATD

Bom..to cansado de fazer isto, mas pra quem não sabe..ta ae a dica:

No rc.conf , habilite o nat

######## HABILITA A TIS PARA FAZER NAT ########
natd_enable=”YES”
natd_interface=”xl0″

natd_flags=”-s -f /etc/natd.conf”

Agora no arquivo /etc/natd.conf

### FTP
redirect_port tcp 192.0.0.5:21 200.204.x.x:21
redirect_port tcp 192.0.0.5:20 200.204.x.x:21
#### TS
redirect_port tcp 192.0.0.5:3389 200.204.x.x:3389
redirect_port udp 192.0.0.5:3389 200.204.x.x:3389

No exemplo..tudo que chegar no ip 200.204.x.x na porta 21 e na porta 3389 ele joga para a maquina 192.0.0.5

Agora no ipfw..vamos liberar as portas

ipfw add 100 allow tcp from any to 200.204.141.141 dst-port 21 in via vr0
ipfw add 101 allow tcp from any to 200.204.141.141 dst-port 20 in via vr0
ipfw add 102 allow tcp from any to 200.204.141.141 dst-port 3389 in via vr0
ipfw add 103 allow udp from any to 200.204.141.141 dst-port 3389 in via vr0

Publicado por: bzanelato | Abril 11, 2007

Liberar um dominio no antispam Spamassassin

Eu não gosto do Spamassassin, acho ele muito pesado, prefiro utilizar postgrey, TMDA, DSPAM etc, mas hoje eu tive que liberar um único dominio do Spamassassin, para que ele não marcasse o e-mail com a flag [SPAM].

No FreeBSD eu fiz desta maneira:

edite o arquivo /usr/local/etc/mail/spamassassin/local.cf

E adicione as flags

white_list from @dominio.com.br

white_list to @dominio1.com.br

vai liberar tudo que vem do dominio.com.br para o dominio1.com.br

Publicado por: bzanelato | Abril 5, 2007

Instalando o ports no OpenBSD 4.0

Segue abaixo a dica para instalar o ports no OpenBSD 4.0

Após o sistema ser instalado, monte o cdrom de instalação do OpenBSD 4.0

# mkdir cdrom
# cd
# mount /dev/cd0a /mnt/cdrom
# cd /mnt/cdrom/
# ls
4.0 OpenBSD40.iso OpenBSD_snapshot.iso boot.catalog
# cd 4.0/
# cp ports.tar.gz /usr/

Depois de copiar o pacote para o /usr vamos descompactar

cd /usr

tar zxvf ports.tar.gz

Agora é só entrar no diretório /usr/ports e procurar o pacote

ex:

make search name=bash

Port: bash-3.1.17
Path: shells/bash
Info: GNU Bourne Again Shell
Maint: Christian Weisgerber <naddy@openbsd.org>
Index: shells
L-deps: iconv.>=4::converters/libiconv intl.>=3:gettext->=0.10.38:devel/gettext
B-deps: gettext->=0.14.5:devel/gettext
R-deps: gettext->=0.10.38:devel/gettext
Archs: any

# cd shells/bash/
# make install clean

Até a proxima pessoal

Bruno Moreira Zanelato

bzanelato@gmail.com

Postagens Antigas »

Categorias