quarta-feira, 24 de novembro de 2010

The Gift of The Magi (lego)


Do Livro de O Henry.

Essa animação foi resultado de um trabalho de inglês cujo assunto era ler o livro "The Gift of the Magi" de O Henry e escolher dentre as 5 estórias contidas no livro uma para fazer apresentação. Decidi então, fazer uma animação para contar a estória onde os integrantes do grupo faziam as dublagens.

Ainda estou aprendendo a animar no Blender, então, me desculpem por alguns erros existentes no filme.
E desculpem o nosso inglês, estamos aprendendo ainda!


Legendas em português: http://www.youtube.com/watch?v=tlDsZXBkzXI



Legendas em inglês: http://www.youtube.com/watch?v=BLYc2EFoR1M

diff - como exibir somente as linhas alteradas

Precisei do comando diff para comparar o arquivo origem.txt e destino.txt. Porém, precisava que o comando só me retornasse as linhas novas do arquivo origem.txt (linhas que existem em origem.txt e não existem em destino.txt). Pesquisando na internet não consegui achar algo que fazia exatamente o que queria, todos faziam pipe com outros comandos. Pelo man, consegui achar, mas não foi fácil. Por isso, estou colocando a solução que encontrei aqui:

diff --old-line-format=%L --unchanged-line-format= origem.txt destino.txt

"--old-line-format=%L" diz que quero exibir todas as linhas do arquivo old (origem.txt)
"--unchanged-line-format=" diz que quero exibir vazio em todas as linhas não alteradas.

Exemplo:
[origem.txt]
aaa
bbb
ccc
eee
fff

[destino.txt]
aaa
bbb
ccc

Ao executar o comando, o seguinte resultado será impresso:
eee
fff

segunda-feira, 22 de novembro de 2010

Recuperar e-mail rejeitado como spam no amavis

Caso ocorra de alguém não receber um e-mail, podemos pesquisar nos logs do maillog para saber se o amavis filtrou o e-mail como spam. Para facilitar essa busca, o script abaixo pode nos ajudar. Ele busca em todos os arquivos /var/log/maillog* a ocorrência da dupla "emailOrigem" "emailDestino" e retorna seus respectivos arquivos spam contidos em /var/virusmails (caso existam). Salve o script abaixo em um arquivo com permissão de execução e execute da seguinte forma:

script EMAIL_ORIGEM EMAIL_DESTINO

#!/bin/bash

###
# Script para recuperar um spam contido em /var/virusmail
#
# param1 remetente do e-mail perdido
# param2 destinatario do e-mail perdido
#
# @author Andre Oshiro Barcelos
# @version 20101122
###

# constantes
MAILLOG="/var/log/maillog"
SPAMDIR="/var/virusmails"

# recebendo variaveis
remetente="$1"
destinatario="$2"

#validando variaveis
if [ ! -n "$remetente" ]; then
echo -n "Informe o remetente: "
read remetente
fi

if [ ! -n "$destinatario" ]; then
echo -n "Informe o destinatario: "
read destinatario
fi

#main
#pesquisando:
# filtrando todos os registros que contem o remetente e
# filtrando todos os registros que contem o destinatario e
# pega a string que precede a palavra 'quarantine: '
aQuarentine=(`cat "$MAILLOG"* | grep 'quarantine' | grep "$remetente" 2> /dev/null | grep "$destinatario" 2> /dev/null | sed 's/.*quarantine: \([[:alnum:]\.+=-]*\),.*/\1/'`)

#se nao foi encontrado
if [ ! -n "$aQuarentine" ]; then
echo "ERRO: a dupla nao foi encontrada em quarentena"
exit 1
fi

echo "A dupla foi encontrada no(s) seguinte(s) spam(s) em quarentena: "
for i in "${aQuarentine[@]}"
do
echo "$SPAMDIR/$i"
done

sexta-feira, 29 de outubro de 2010

Instalando phpmotion no centos 5.5 64bits

-------------------------------------------------------------------------------
Instalando phpmotion no centos 5.5 64bits
-------------------------------------------------------------------------------
[Informações]

Maquina: VMWare esxi 4.0
Sistema: Centos 5.5 x86_64

-------------------------------------------------------------------------------
[Instalando dependências]

- Adicionando repositorios para yum:
# vim /etc/yum.repos.d/dag.repo
.
.
.
[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1
.
.
.
# rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

- Instalando via yum:
# yum install ffmpeg ffmpeg-devel flvtool2 mencoder libogg.x86_64 libvorbis.x86_64 php-gd

-------------------------------------------------------------------------------
[Habilitando phpshield]

- Copiando modulo phpshield para extension_dir do php:
# cp /var/www/html/phpshield/* /usr/lib64/php/modules

- Habilitando no php.ini o modulo /usr/lib64/php/modules/phpshield.5.2.lin:
# vim /etc/php.ini
.
.
.
extension=phpshield.5.2.lin
.
.
.

Nota: Não utilize o caminho completo, somente o nome do modulo mesmo.


-------------------------------------------------------------------------------
[Possiveis erros]

- Ao fazer upload de um video, o seguinte erro aparece no site:
"
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
"

Ou então no log de erro do apache:

"
[Fri Aug 13 09:35:21 2010] [error] [client 172.20.7.0] (13)Permission denied: exec of '/var/www/html/cgi-bin/uu_ini_status.pl' failed, referer: http://video.com/uploader.php
[Fri Aug 13 09:35:21 2010] [error] [client 172.20.7.0] Premature end of script headers: uu_ini_status.pl, referer: http://video1.ufes.br/uploader.php
[Fri Aug 13 09:35:21 2010] [error] [client 172.20.7.0] (13)Permission denied: exec of '/var/www/html/cgi-bin/uu_upload.pl' failed, referer: http://video.com/uploader.php
[Fri Aug 13 09:35:21 2010] [error] [client 172.20.7.0] Premature end of script headers: uu_upload.pl, referer: http://video.com/uploader.php
"

Esse erro ocorre se o usuario "apache", ou o usuário que o servidor web utiliza para acessar os arquivos, estiver sem permissão de execução na pasta cgi-bin. Execute o seguinte comando para resolver:
# chmod -R 774 /var/www/html/cgi-bin


- Links não funcionam:
"
Not Found
The requested URL /albums/load/featured was not found on this server.
"

Em "/etc/httpd/conf/httpd.conf" altere as seguintes linhas para:
.
.
.
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All #nao pode ser none, deve ser All
Order allow,deny
Allow from all
</Directory>
.
.
.

Verifique também se o arquivo .htaccess existe no diretório raiz do site com as declarações de tradução da url.


- Ao fazer upload de video, o seguinte erro é retornado:
"Access Forbidden!"

Em "/etc/httpd/conf/httpd.conf" altere as seguintes linhas para:
.
.
.
<Directory "/var/www/html/cgi-bin">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
.
.
.

- Faz upload do vídeo porém o mesmo não aparece. Deve-se retirar o caminho "/usr/share/ffmpeg" na pagina "/siteadmin/settings_general.php" na variável "Path to ffmpeg".


- "Checking if PHPshield encoded files are working: The results above indicate that there is a problem with PHPShield".
Certifique-se que você executou o comando abaixo:
cp /var/www/html/phpshield/* /usr/lib64/php/modules


- "Error! - Can't connect to MySQL server on 'db.teste.com' (13)"
Durante a instalação você pode receber essa mensagem. Suas configurações podem estar erradas ou então, no meu caso, o selinux pode estar bloqueando. Para habilitar o selinux, consulte o tópico "http://andreob.blogspot.com/2010/10/compilar-regra-no-selinux-para-liberar.html"


- "Error: Missing Dependency: php-common = 5.1.6-27.el5_5.3 is needed by package php-gd-5.1.6-27.el5_5.3.x86_64 (updates)"
Apague a instalação do php-common pois isso pode estar dando algum conflito com os pacotes. Após isso, reinstale os pacotes separadamente.
yum remove php-common
yum install php-gd
yum install php php-cli php-mysql php-pdo php-pgsql


- "Error! - Some files and folders are not CHMOD correctly "
No diretório que as páginas do phpmotion, execute os seguintes comandos para alterar as permissões nas pastas:
chown -R apache.apache ./*
chmod -R 755 uploads
chmod -R 755 classes
chmod -R 755 logs
chmod -R 755 setup
chmod -R 755 pictures
chmod -R 755 temp

- "Not Found The requested URL /cgi-bin/uu_upload.pl was not found on this server."
Infelizmente não consegui descobrir exatamente o que gera esse erro. Mas fiz algo para contornar o problema, crio um link simbolico em /var/www/cgi-bin apontando para o cgi-bin do phpmotion:
ln -s /var/www/html/cgi-bin/ /var/www/cgi-bin
-------------------------------------------------------------------------------

sexta-feira, 1 de outubro de 2010

Compilar regra no selinux para liberar acesso sem utilizar o setenforcing 0 ou setenforcing permissive

Em meu servidor web copiei uma pasta para /var/www/html/expresso. Só que quando abro é retornado o erro "403 Forbidden". Isso é devido ao selinux, devemos compilar uma regra que permita o que está sendo proibido. Para saber o que está sendo proibido, monitore o "/var/log/messages":
tail -f /var/log/messages

Agora, faça novamente a ação que está sendo proibida. Provavelmente será logado no "/var/log/messages" algo semelhante ao abaixo:
Sep 10 11:24:53 MODELO kernel: type=1400 audit(1284128693.063:71): avc: denied { getattr } for pid=17417 comm="httpd" path="/var/www/html/expresso/index.php" dev=sdb1 ino=184145 scontext=root:system_r:httpd_t:s0 tcontext=root:object_r:user_home_t:s0 tclass=file
Sep 10 11:24:53 MODELO kernel: type=1400 audit(1284128693.065:72): avc: denied { getattr } for pid=17417 comm="httpd" path="/var/www/html/expresso/index.php" dev=sdb1 ino=184145 scontext=root:system_r:httpd_t:s0 tcontext=root:object_r:user_home_t:s0 tclass=file

Gere um arquivo temporario com essas mensagens:
vim /tmp/regras
...
Sep 10 11:24:53 MODELO kernel: type=1400 audit(1284128693.063:71): avc: denied { getattr } for pid=17417 comm="httpd" path="/var/www/html/expresso/index.php" dev=sdb1 ino=184145 scontext=root:system_r:httpd_t:s0 tcontext=root:object_r:user_home_t:s0 tclass=file
Sep 10 11:24:53 MODELO kernel: type=1400 audit(1284128693.065:72): avc: denied { getattr } for pid=17417 comm="httpd" path="/var/www/html/expresso/index.php" dev=sdb1 ino=184145 scontext=root:system_r:httpd_t:s0 tcontext=root:object_r:user_home_t:s0 tclass=file
...

Desligue o selinux temporariamente
setenforce 0

Transforme o arquivo de regras na linguagem do selinux
audit2allow -m local -l -i /tmp/regras > /tmp/regras.te

Compile as regras
checkmodule -M -m -o /tmp/regras.mod /tmp/regras.te

Crie um pacote de instalação
semodule_package -o /tmp/regras.pp -m /tmp/regras.mod

Instale as novas regras
semodule -i /tmp/regras.pp

Ligue o selinux novamente
setenforce 1

Monitore novamente o arquivo "/var/log/messages" e faça novamente a ação que estava sendo proibida. Teoricamente se tudo ocorreu bem, seu site abrirá sem maiores problemas.

terça-feira, 31 de agosto de 2010

pg_conect com erro retorna pagina php para download após instalar openssl - pg_connect gera download de pagina php

Após instalar o openssl em meu servidor web notei que ao abrir uma página php que utiliza a função pg_connect, essa página era retornada para download.
No log "/var/log/apache2/error.log" a seguinte mensagem era escrita:

"system library:fopen:Permission denied:bss_file.c:122:fopen('/usr/lib/ssl/openssl.cnf','rb')"

O arquivo "/usr/lib/ssl/openssl.cnf" é um link para "/etc/ssl/openssl.cnf". Por algum motivo o apache não está conseguindo utilzar esse link. Então, copiei o arquivo "/etc/ssl/openssl.cnf" para "/usr/lib/ssl/openssl.cnf" e troquei suas permissões, reiniciei o apache e a partir disso tudo funcionou novamente (veja os comandos abaixo):

cp /etc/ssl/openssl.cnf /usr/lib/ssl/openssl.cnf
chmod 777 /usr/lib/ssl/openssl.cnf
/etc/init.d/apache2 restart

segunda-feira, 30 de agosto de 2010

Ativando autenticação LDAP no wiki do mediawiki

-------------------------------------------------------------------------------
Ativando autenticação LDAP no wiki do mediawiki
-------------------------------------------------------------------------------
[Baixando plugin]
- Plugin baixado em: http://upload.wikimedia.org/ext-dist/LdapAuthentication-MW1.15-r45350.tar.gz
Ou então vá em: http://www.mediawiki.org/wiki/Special:ExtensionDistributor e procure por LdapAuthentication

- Instale o plugin em ./extensions/ do seu site wiki.
Ex.:
./extensions/LdapAuthentication.php
./extensions/LdapAutoAuthentication.php

-------------------------------------------------------------------------------
[Configurando wiki]

###
# restringindo acesso
#
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['read'] = false;
$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['*']['createpage'] = false;
$wgGroupPermissions['*']['createtalk'] = false;
#
###

###
# LDAP
#
require_once( "$IP/extensions/LdapAuthentication.php" );
$wgAuth = new LdapAuthenticationPlugin();

//nomes dos dominios
$wgLDAPDomainNames = array("MEUDOMINIO");

//associando dominio com servidores de dominio
$wgLDAPServerNames = array("MEUDOMINIO"=>"dns1.br dns2.br");

//Criptografia das solicitacoes ldap
$wgLDAPEncryptionType = array("MEUDOMINIO"=>"tsl"); //ou clear caso nao queira criptografia

//Permitir logar localmente
$wgLDAPUseLocal = false;