quarta-feira, 8 de dezembro de 2010

SNES C compiler - Download (C + SNES)



One day, surfing the Internet, I found a wonderful thing: someone develop for Windows a C compiler to SNES architecture! In other words, you can to write your games/programs in C language and compile them, the result of this compilation will be a SMC file that you can to play in your Super Nintendo emulator! Or else, if you have a SNES tape recorder (I think few will) you can to record the SMC file in the tape and to play your own game in your Super Nintendo!

I don't know the person or people name that created this compiler, the only reference I have is the site where I downloaded the compiler: http://obsolete.se.

Bear in mind: the compiler is an Windows executable, you can even to write the code in any operacional system, but when you to compile, you have to use a Windows computer (or to emulate Windows) to run the compiler.

Who is interested can to download the compiler in the site that I said or else to download from my google page: snesc download.

In other post I will teach how to use the compiler to do SNES games.


SORRY MY ENGLISH, I'M LEARNING YET!

Compilador C para SNES - Download (C + SNES



Um dia, navegando pela Internet, descobri algo maravilhoso: alguém desenvolveu para Windows um compilador C para a arquitetura SNES! Ou seja, você pode escrever seus jogos/programas na linguagem C e compila-los, o resultado dessa compilação será um arquivo SMC que você pode rodar no seu emulador de Super Nintendo! Ou então se tiver o gravador de fitas de SNES (acho que poucos terão) você pode gravar o SMC na fita e jogar no seu Super Nintendo o seu próprio jogo!

Não sei o nome dessa pessoa ou pessoas que criaram esse compilador, a única referência que tenho é o site que baixei o compilador: http://obsolete.se.

Lembre-se: é um executável para Windows, você até pode escrever o código em qualquer sistema operacional, mas quando for compilar, terá que utilizar um computador Windows (ou emular um) para executar o compilador.

Quem estiver interessado pode baixar o compilador na página que citei que baixei ou então direto da minha página google: snesc download.

Em outro post ensinarei como utilizar esse compilador para fazer jogos.

terça-feira, 7 de dezembro de 2010

dnscmd - script to insert and remove DNS records from your windows 2003 DNS server


== The problem ==

I needed to insert and remove MX records from the DNS server of my job. They are about 40 subdomains that contains MX, it's not an easy task to insert and remove these records manualy. With my friend's help, we made de script listed in this post.

== The solution ==

To use the script, set the variable "BASE" with the path to the base directory where the script is; configure the variable "DOMINIO" with the name of your domain; create a file called "subdominios.txt" in the same directory where the script is. Inside this file, list all the subdomains that you like to change, don't put ".aob.com", only the name of the subdomain. The file have to be like that:

dominio1
dominio2
dominio3

To execute the script, pass the following parameters:
parameter1 = add, to add records to the subdomains listed in subdominios.txt;
delete, to delete.
parameter2 = the name of the destination server of the added MXs.
Ex.1:
script.bat add email.aob.com
This example will add MX records to all subdomains in subdominios.txt with destination to email.aob.com.

Ex.2:
script.bat delete email.aob.com
This example will delete all MX records from the subdomains in subdominios.txt with destination to email.aob.com.


== The script code is listed bellow: ==

@echo off
set BASE=C:\scripts\atualizamx\
set DOMINIO=aob.com

rem add, delete
set comando=%1

rem antispam1,antispam2,...
set servidor=%2

cd %sBase%

if "%1"=="delete" goto delete
if "%1"=="add" goto add
goto fim

:add
FOR /F %%s IN (subdominios.txt) DO (
dnscmd /recordadd %DOMINIO% %%s MX 10 %servidor%
)
goto fim


:delete
FOR /F %%s IN (subdominios.txt) DO (
dnscmd /recorddelete %DOMINIO% %%s MX 10 %servidor% /f
)

:fim

@echo on




Sorry my english, I'm learning yet!

dnscmd - script para inserir e remover registros DNS no seu servidor de dns windows 2003


== O problema ==

Esses dias precisei inserir e remover registros MX no DNS do servidor do meu trabalho. São cerca de 40 subdomínios que contém MX, não é uma tarefa fácil inserir e remover esses registros manualmente. Com a ajuda de um colega, fizemos o script listado nesse post.


== A solução ==

Para utilizar o script, configure a variável "BASE" com o caminho da pasta base onde se encontra o script; configure a variável "DOMINIO" com o nome do seu domínio; crie um arquivo chamado subdominios.txt na mesma pasta onde se encontra o script, dentro desse arquivo liste todos os subdomínios que deseja alterar, não coloque ".aob.com", ou seja, o complemento do dominio, o arquivo deve ser da seguinte forma:

dominio1
dominio2
dominio3

Para rodar o script, passe os seguintes parametros:
parametro1 = add, para adicionar registros aos subdominios listados em subdominios.txt;
delete para fazer a remoção.
parametro2 = nome do servidor destino dos MX adicionados.
Ex.1:
script.bat add email.aob.com
Esse exemplo adicionará registros MX a todos subdomínios do arquivo subdominios.txt com destino em email.aob.com

Ex.2:
script.bat delete email.aob.com
Esse exemplo deletará todos os registros MX de todos subdomínios do arquivo subdominios.txt com destino em email.aob.com.



== O código do script segue abaixo: ==

@echo off
set BASE=C:\scripts\atualizamx\
set DOMINIO=aob.com

rem add, delete
set comando=%1

rem antispam1,antispam2,...
set servidor=%2

cd %sBase%

if "%1"=="delete" goto delete
if "%1"=="add" goto add
goto fim

:add
FOR /F %%s IN (subdominios.txt) DO (
dnscmd /recordadd %DOMINIO% %%s MX 10 %servidor%
)
goto fim


:delete
FOR /F %%s IN (subdominios.txt) DO (
dnscmd /recorddelete %DOMINIO% %%s MX 10 %servidor% /f
)

:fim

@echo on

quinta-feira, 2 de dezembro de 2010

dspace - centos installation


== Prerequisites ==
CentOS-5.5
wget

== Installing JDK ==

Downloading packages. Download from the site http://www.oracle.com/technetwork/java/javase/downloads/index.html, execute the .bin and create the environment variables bellow.

Environment variables (yum didn't do this automaticaly in my instalation)
vim /root/.bash_profile
export JAVA_HOME=/usr/src/jdk1.6.0_22/
export PATH=$PATH:$JAVA_HOME/bin

Also run the following lines
export JAVA_HOME=/usr/src/jdk1.6.0_22/
export PATH=$PATH:$JAVA_HOME/bin


== Installing apache maven ==

Download the packages from "http://maven.apache.org/download.html".
My decompression was done in /usr/src/apache-maven-3.0.1. THIS DIRECTORY CAN TO CHANGE depending the version that you are using, pay attention to the paths bellow, you may have to change them.
Download and decompress the packages:
wget http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.0.1-bin.tar.gz
tar -xzvf apache-maven-3.0.1-bin.tar.gz

Environment variables:
vim /root/.bash_profile
export PATH=$PATH:/usr/src/apache-maven-3.0.1/bin

Also run the following lines:
export PATH=$PATH:/usr/src/apache-maven-3.0.1/bin

Test your configuration
mvn --version


== Installing apache-ant ==

Installation directory
cd /usr/src

You can to download the package from "http://ant.apache.org/bindownload.cgi", however pay attention to the paths names, you may have to change them. I'm downloading the version 1.8.1
Download and decompress the packages in /usr/src:
wget http://mirror.pop-sc.rnp.br/apache//ant/binaries/apache-ant-1.8.1-bin.tar.gz
tar -xzvf apache-ant-1.8.1-bin.tar.gz

Environment variables:
vim /root/.bash_profile
export ANT_HOME=/usr/src/apache-ant-1.8.1/
export PATH=$PATH:$ANT_HOME/bin/

Also run the following lines:
export ANT_HOME=/usr/src/apache-ant-1.8.1/
export PATH=$PATH:$ANT_HOME/bin/

Check if the installation is correct running the following commando, its return must be what's in quotes:
ant -version
"Apache Ant version 1.8.1 compiled on April 30 2010"


== Installing the postgres data base==

Downloading the packages
yum install postgresql84-server postgresql84-libs postgresql84

Starting initial configuration of postgres:
su - postgres
initdb -E utf-8 /var/lib/pgsql/data
exit

Enabling TCP/IP connections by JDBC, just comment the line that has "listen_addresses"
vi /var/lib/pgsql/data/postgresql.conf
.
.
.
#listen_addresses = 'localhost'
.
.
.


Allowing local connections in postgres, add the line "host dspace...":
vi /var/lib/pgsql/data/pg_hba.conf
.
.
.
host dspace dspace 127.0.0.1 255.255.255.255 md5
.
.
.

Restart the service to commit the settings:
/etc/init.d/postgresql restart

Configuring postgres to startup automaticaly:
chkconfig postgresql on

== Installing tomcat ==

Installing the repository that has tomcat for yum:
cd /etc/yum.repos.d/
wget http://www.jpackage.org/jpackage50.repo

Downloading the packages:
yum install tomcat6 tomcat6-webapps tomcat6-admin-webapps --skip-broken

Answer "yes" to the questions about GPG keys:
Importing GPG key 0xC431416D "JPackage Project (JPP Official Keys) " from http://www.jpackage.org/jpackage.asc
Is this ok [y/N]: y

Environment variables:
vim /root/.bash_profile
export TOMCAT_USER=tomcat

Also run the following lines:
export TOMCAT_USER=tomcat

Add the attribute URIEncoding into the server.xml file:
vi /etc/tomcat6/server.xml
.
.
.
<connector port="8080" protocol="HTTP/1.1" connectiontimeout="20000" redirectport="8443" uriencoding="UTF-8">
.
.
.

Remove the tomcat repository. If you want to keep it, jump this line.
rm -f /etc/yum.repos.d/jpackage50.repo

Configuring tomcat to startup automaticaly:
chkconfig tomcat6 on


== Installing perl ==

Downloading the packages
yum install perl

== Installing dspace ==

Download the sources from "http://sourceforge.net/projects/dspace/"
The files were decompressed in "/usr/src/".

Create a database for dspace
createuser -U postgres -d -A -P dspace ; createdb -U dspace -E UNICODE dspace

Execute the package installation command:
cd /usr/src/dspace-1.6.2/dspace
mvn package

Building the packages:
cd /usr/src/dspace-1.6.2/dspace/target/dspace-1.6.2-build.dir/
ant fresh_install

After the execution of the "ant" command, the "dspace" installation will be create in the root directory "/dspace".
Deploy the installation to tomcat:
cp -R /dspace/webapps/* /var/lib/tomcat6/webapps

Create an administrator user for the dspace. Bear in mind: it will ask an e-mail, this e-mail will be your login.
/dspace/bin/create-administrator

Restart the tomcat service
/etc/init.d/tomcat6 restart

Test the dspace installation:
http://YOUR_SERVER_ADDRESS:8080/jspui/

== Possibles errors ==

"Unable to locate the Javac Compiler in: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/../lib/tools.jar"
Do not use only the package "*openjdk*" from yum, it isn't complete. Install the JDK like I teach in "Installing JDK".

"WARNING: error instantiating 'org.apache.juli.ClassLoaderLogManager' referenced by java.util.logging.manager, class not found java.lang.ClassNotFoundException: org.apache.juli.ClassLoaderLogManager not found"
If you installed the JDK like I teached in "Installing JDK", complete the installation (only if necessary) with "yum" command. Some packages may be missing.
yum install java-1.6.0-openjdk.x86_64

"org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections."
This happens because the postgres connection. Check if the service is running or if the login and password are correct, as well the IP, selinux rules, firewall rules, etc...

"The program package-cleanup is found in the yum-utils package"
Resolve the dependencies:
yum install yum-utils


SORRY MY ENGLISH, I'M LEARNING YET!

dspace - instalação no centos


== Pré-requisitos ==
CentOS-5.5
wget

== Instalando JDK ==

Baixando pacotes. Baixe do site: http://www.oracle.com/technetwork/java/javase/downloads/index.html, execute o .bin e crie as variaveis de ambiente abaixo

Configurando variáveis de ambiente (o yum não fez automático na minha instalação)
vim /root/.bash_profile
export JAVA_HOME=/usr/src/jdk1.6.0_22/
export PATH=$PATH:$JAVA_HOME/bin

Execute também as linhas abaixo
export JAVA_HOME=/usr/src/jdk1.6.0_22/
export PATH=$PATH:$JAVA_HOME/bin

== Instalando apache maven ==

Baixar pacotes de "http://maven.apache.org/download.html".
A descompactação foi realizada no diretório /usr/src/apache-maven-3.0.1. ESSE DIRETÓRIO PODE MUDAR de acordo com a versão que baixar, fique atento nos caminhos que irei informar abaixo, você pode ter que mudá-los.
Baixando e descompacte os pacotes:
wget http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.0.1-bin.tar.gz
tar -xzvf apache-maven-3.0.1-bin.tar.gz

Configurando variáveis de ambiente:
vim /root/.bash_profile
export PATH=$PATH:/usr/src/apache-maven-3.0.1/bin

Execute também a linha abaixo
export PATH=$PATH:/usr/src/apache-maven-3.0.1/bin

Teste a configuração com o comando abaixo
mvn --version

== Instalando apache-ant ==

Diretorio de instalação
cd /usr/src

Você pode baixar o pacote que quiser em "http://ant.apache.org/bindownload.cgi", porém preste atenção nos nomes dos caminhos que podem mudar de acordo com a versão que baixar. Abaixo adotaremos 1 versão.
Baixe e descompacte o pacote em /usr/src:
wget http://mirror.pop-sc.rnp.br/apache//ant/binaries/apache-ant-1.8.1-bin.tar.gz
tar -xzvf apache-ant-1.8.1-bin.tar.gz

Colocando pasta bin do apache-ant no path do centos e definindo variável de ambiente com o home do apache ant
vim /root/.bash_profile
export ANT_HOME=/usr/src/apache-ant-1.8.1/
export PATH=$PATH:$ANT_HOME/bin/

Execute também
export ANT_HOME=/usr/src/apache-ant-1.8.1/
export PATH=$PATH:$ANT_HOME/bin/

Verifique se a instalação está correta executando o comando abaixo, o retorno deve ser os que está entre aspas:
ant -version
"Apache Ant version 1.8.1 compiled on April 30 2010"


== Instalando banco de dados postgres ==

Baixando pacotes
yum install postgresql84-server postgresql84-libs postgresql84

Configuração inicial do postgres
su - postgres
initdb -E utf-8 /var/lib/pgsql/data
exit

Habilitando conexões TCP/IP pelo JDBC, comente a linha que contém a declaração "listen_addresses"
vi /var/lib/pgsql/data/postgresql.conf
.
.
.
#listen_addresses = 'localhost'
.
.
.

Permitindo conexões locais no postgres, adicione a linha "host dspace..."
vi /var/lib/pgsql/data/pg_hba.conf
.
.
.
host dspace dspace 127.0.0.1 255.255.255.255 md5
.
.
.

Reinicie o serviço para efetivar as configurações
/etc/init.d/postgresql restart

Forçando postgres a iniciar automaticamente
chkconfig postgresql on

== Instalando tomcat ==

Instalando repositório que possui o tomcat para yum
cd /etc/yum.repos.d/
wget http://www.jpackage.org/jpackage50.repo

Baixando pacotes
yum install tomcat6 tomcat6-webapps tomcat6-admin-webapps --skip-broken

Responda "yes" às perguntas sobre chaves:
Importing GPG key 0xC431416D "JPackage Project (JPP Official Keys) " from http://www.jpackage.org/jpackage.asc
Is this ok [y/N]: y

Crie uma variável de ambiente com o usuário tomcat para que o dspace possa utilizá-lo
vim /root/.bash_profile
export TOMCAT_USER=tomcat

Execute também
export TOMCAT_USER=tomcat

Adicione o atributo URIEncoding no arquivo server.xml
vi /etc/tomcat6/server.xml
.
.
.
<connector port="8080" protocol="HTTP/1.1" connectiontimeout="20000" redirectport="8443" uriencoding="UTF-8">
.
.
.

Remova o repositório utilizado para baixar o tomcat. Caso deseja mante-lo, pule essa linha.
rm -f /etc/yum.repos.d/jpackage50.repo

Forçando tomcat a iniciar automaticamente
chkconfig tomcat6 on


== Instalando perl ==

Baixando pacotes
yum install perl

== Instalando dspace ==

Baixe os fontes em "http://sourceforge.net/projects/dspace/"
Os arquivos foram descompactados em "/usr/src/"

Crie um banco de dados dspace
createuser -U postgres -d -A -P dspace ; createdb -U dspace -E UNICODE dspace

Executar comando de instalação dos pacotes
cd /usr/src/dspace-1.6.2/dspace
mvn package

Construindo pacotes
cd /usr/src/dspace-1.6.2/dspace/target/dspace-1.6.2-build.dir/
ant fresh_install

Após a execução do comando "ant", a instalação do "dspace" será criada no diretório raiz "/dspace".
Distribua essa instalação para o tomcat:
cp -R /dspace/webapps/* /var/lib/tomcat6/webapps

Criando usuário administrador, será pedido um e-mail, esse e-mail será seu login.
/dspace/bin/create-administrator

Reinicie o serviço tomcat
/etc/init.d/tomcat6 restart

Teste o funcionamento do dspace:
http://ENDERECO_DO_SEU_SERVIDOR:8080/jspui/

== Possíveis erros ==

"Unable to locate the Javac Compiler in: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/../lib/tools.jar"
Não utilize somente o pacote "*openjdk*" do yum, pois ele não é completo. Instale o JDK da maneira que ensino no tópico "Instalando jdk".

"WARNING: error instantiating 'org.apache.juli.ClassLoaderLogManager' referenced by java.util.logging.manager, class not found java.lang.ClassNotFoundException: org.apache.juli.ClassLoaderLogManager not found"
Caso tenha instalado o JDK da maneira que ensino em "Instalando jdk" e mesmo assim esteja recebendo a mensagem acima, complemente a instalação com o comando "yum" para baixar alguns pacotes que ainda podem estar faltando.
yum install java-1.6.0-openjdk.x86_64

"org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections."
Esse problema é relativo à conexão com o postgres. Verifique se o serviço está funcionando ou se o login e senha estão corretos, bem como endereço IP, selinux, firewall, entre outros.

"The program package-cleanup is found in the yum-utils package"
Resolva a dependência:
yum install yum-utils

quarta-feira, 1 de dezembro de 2010

asterisk - instalação no centos

Passo a passo retirado de "http://www.asterisk.org/downloads/yum"
Baixe a máquina virtual que utilizei para fazer esse tutorial clicando aqui: asterisk-vm.
Essa máquina já está com uma configuração básica que fiz seguindo o tutorial do link http://phplinuxandthelike.wordpress.com/2007/09/04/basic-asterisk-configuration/
Para utiliza-la, inicie a máquina e configure os sip-phones com os logins e senhas contidos em /etc/asterisk/sip.conf.


== Instalação do asterisk ==

- adicione no arquivo "/etc/yum.repos.d/centos-asterisk.repo" as seguinte linhas:

[asterisk-tested]
name=CentOS-$releasever - Asterisk - Tested
baseurl=http://packages.asterisk.org/centos/$releasever/tested/$basearch/
enabled=0
gpgcheck=0
#gpgkey=http://packages.asterisk.org/RPM-GPG-KEY-Digium

[asterisk-current]
name=CentOS-$releasever - Asterisk - Current
baseurl=http://packages.asterisk.org/centos/$releasever/current/$basearch/
enabled=1
gpgcheck=0
#gpgkey=http://packages.asterisk.org/RPM-GPG-KEY-Digium

- adicione no arquivo "/etc/yum.repos.d/centos-digium.repo" as seguinte linhas:

[digium-tested]
name=CentOS-$releasever - Digium - Tested
baseurl=http://packages.digium.com/centos/$releasever/tested/$basearch/
enabled=0
gpgcheck=0
#gpgkey=http://packages.digium.com/RPM-GPG-KEY-Digium

[digium-current]
name=CentOS-$releasever - Digium - Current
baseurl=http://packages.digium.com/centos/$releasever/current/$basearch/
enabled=1
gpgcheck=0
#gpgkey=http://packages.digium.com/RPM-GPG-KEY-Digium


- Atualize o yum

yum update


- Instale o asterisk e suas dependencias

yum install asterisk16 asterisk16-configs asterisk16-voicemail dahdi-linux dahdi


- Teste a instalação do asterisk

asterisk -vvvgci

domingo, 28 de novembro de 2010

The Gift of The Magi (lego)- english post


From O Henry's book.


This animation is a result from an english work. Its objective was to read the O Henry's book "The Gift of the Magi" and to choose one among the 5 stories to make an apresentation. So, I decided to make an animation where the members of the group did the voiceovers.

I'm learning to animate in Blender yet, so, sorry about some mistakes in the movie.
And sorry our english, we are learning yet!

Portuguese subtitles: http://www.youtube.com/watch?v=tlDsZXBkzXI



English subtitles: http://www.youtube.com/watch?v=BLYc2EFoR1M

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;

terça-feira, 20 de julho de 2010

Windows cannot access the specified device, path, or file. You may not have the appropriate permissions to access the item

[Causa]
Esse problema aconteceu comigo ao mover um arquivo executável por compatilhamento de pasta. Tinha um servidor A que precisava de instalar o pgAdmin, então compartilhei uma pasta em A e acessei da minha máquina desktop. Então, copiei o pgAdmin para o servidor A. Porém, devido a configurações de segurança do windows server 2003, quando tentei executar o pgAdmin em A, ele me deu a seguinte mensagem: "Windows cannot access the specified device, path, or file. You may not have the appropriate permissions to access the item".

[Solução]
Clique em cima do executável com a tecla direita do mouse, vá em propriedades. Lá, você notará que existe um botão no canto inferir direito chamado "Unblock" com o seguinte comentario: "This file came from another computer and might be blocked to help protect this computer". Clique em "Unblock", a partir desse momento você poderá executar seu executável normalmente.

quarta-feira, 7 de julho de 2010

Instalando postgres 8.4 + tcl + tk no centos 5.5 x86_64

-------------------------------------------------------------------------------
Instalando postgres 8.4 + tcl + tk no centos 5.5 x86_64
-------------------------------------------------------------------------------
[Informações]

Maquina: VMWare esxi 4.0
Sistema: Centos 5.5 x86_64
Postgres: 8.4

-------------------------------------------------------------------------------
[Procedimento de instalação do postgres]

- instalando servidor postgres e bibliotecas:
yum install postgresql84-server postgresql84-libs postgresql84

- configurando inicio do postgres:
# su - postgres
# initdb -E utf-8 /var/lib/pgsql/data

- configurando permissões para nossas redes:
# vim /var/lib/pgsql/data/pg_hba.conf
...
host all all 172.20.6.0/23 md5
host all all 172.20.2.0/23 md5
host all all 172.20.10.0/23 md5
...

- habilitando serviço para escutar externamente:
# vim /var/lib/pgsql/data/postgresql.conf
...
listen_addresses = '*'
...

- iniciando serviço:
# /etc/init.d/postgresql restart

- forçando postgresql iniciar automaticamente durante o boot:
# chkconfig postgresql on

- criando usuario administrador:
# su - postgres
# createuser -P
Enter name of role to add: super
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) y

-------------------------------------------------------------------------------
[Procedimento de instalação do tcl/tk]

- instalando tcl e tk:
# yum install tcl tk postgresql84-pltcl.x86_64


- ativando linguagem em um banco de dados:
# createlang -U postgres pltcl NOME_DO_BANCO_DE_DADOS

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

- ao executar "createlang -U postgres pltcl NOME_DO_BANCO_DE_DADOS" o seguinte erro retorna:
createlang: language installation failed: ERROR: could not access file "$libdir/pltcl": No such file or directory
Esse erro pode ocorrer caso o pacote "postgresql84-pltcl.x86_64" não seja instalado.

-------------------------------------------------------------------------------

sexta-feira, 2 de julho de 2010

Instalando httpd + php 5.2 no centos 5.5

-------------------------------------------------------------------------------
Instalando httpd + php 5.2 no centos 5.5
-------------------------------------------------------------------------------
[Informações]

Maquina: VMWare esxi 4.0
Sistema: Centos 5.5

-------------------------------------------------------------------------------
[Procedimento de instalação]

- instalando repositorio que possui o php 5.2:
# rpm -ivh http://software.virtualmin.com/bleed/centos/5/x86_64/virtualmin-bleed-release-1.0-1.rhel.noarch.rpm

- pegando arquivo de autenticação do repositorio:
# rpm -import http://software.virtualmin.com/lib/RPM-GPG-KEY-virtualmin

- instalando httpd e php:
# yum install httpd php

- forçando httpd iniciar automaticamente durante o boot:
# chkconfig httpd on

- iniciando serviço:
# /etc/init.d/httpd start

-------------------------------------------------------------------------------

sexta-feira, 18 de junho de 2010

Como desligar um servidor esxi com 15 servidores virtuais rodando

Precisamos desligar um servidor esxi com 15 servidores virtuais rodando, o que fazer?

Algo muito fácil:

- Logue no servidor esxi com o "vsphere client";
- Dê "pause" em todas as 15 maquinas;
- Na raiz do servidor esxi, vá na aba "Summary", em baixo da tela clique; em "Enter Maintenance Mode";
- Com o servidor em "Maintenance Mode", clique em "Shutdown";
- Depois que tudo for feito e o servidor for ligado novamente, você perceberá que as maquinas continuam pausadas. Retire o servidor do "Maintenance Mode" e "despause" novamente todas as maquinas.

De um modo geral, o "Maintenance Mode" serve para preservar o estado pausado das maquinas quando o servidor esxi é desligado. O que não ocorre se o modo não for ativado, todas as maquinas são "brutalmente" desligadas e vão para o status stop.

Outra maneira é entrar em cada máquina virtual e desligar o sistema, porém é um processo bem mais demorado.

segunda-feira, 24 de maio de 2010

apache2 com ssl, como habilitar?

É necessário que o serivdor tenha um certificado, você pode utilizar um certificado já existente ou então criar um desde o início.
O procedimento abaixo ensina como configurar o SSL criando um certificado desde o início. Caso já tenha um certificado, altere a linha "SSLCertificateFile /etc/apache2/apache.pem".


[Procedimento]

- apt-get install openssl ssl-cert

- openssl req $@ -new -x509 -days 3650 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem

- chmod 600 /etc/apache2/apache.pem

- adicionar "Listen 443" em "/etc/apache2/ports.conf"

- a2enmod ssl

- adicionar linhas no arquivo "/etc/apache2/sites-available/default":
NameVirtualHost *:443
NameVirtualHost *:80

- exemplo de virtualhost:
<VirtualHost sitessl.com.br:443>
NameVirtualHost sitessl.com.br:443
ServerAdmin sitessl@com.br
DocumentRoot /var/www/sitessl/home/www
ServerName sitessl.com.br
ErrorLog /var/www/apache-siteslogs/sitessl-error
CustomLog /var/www/apache-siteslogs/sitessl-access common

SSLEngine on
SSLCertificateFile /etc/apache2/apache.pem
</VirtualHost>

- /etc/init.d/apache2 restart

sexta-feira, 14 de maio de 2010

Linux - como montar diretório /var em outro disco?

As vezes o diretório /var cresce demasiadamente devido a logs de programas. Por isso surge a necessidade de separá-lo em outro disco. Mas como fazer isso se nosso servidor já está em produção há algum tempo?

Nesse exemplo, estamos utilizando máquinas virtuais VMware esxi, porém a ideia pode ser usada para máquinas físicas também.

-------------------------------------------------------
[Passo 1: adicionando disco]

- Ao adicionar o novo disco, o servidor deve ser reiniciado para que o mesmo seja reconhecido, infelizmente o servidor terá algum tempo de indisponibilidade.

- Após a reinicialização, digite o comando "fdisk -l" para ver qual device corresponde ao novo disco. A saída é semelhante a seguir:
...
Disk /dev/sdb: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
..

Nota: adicionei um disco de 34GB, logo, sei que /dev/sdb só pode ser ele.

-------------------------------------------------------
[Passo 2: particionando e formatando disco]

- O novo disco deve ser particionado, utilize o comando "fdisk":
# fdisk /dev/sdb

- No menu do comando fdisk, digite "n" para criar uma nova partição, e digite "w" para gravar as alterações.

- Após particionado, o device "/dev/sdb1" será criado, o mesmo deve ser formatado. Utilizo o sistema de arquivos "ext3" para formatar discos linux:
# mkfs.ext3 /dev/sdb1

-------------------------------------------------------
[Passo 3: preparando novo disco para receber arquivos /var]

- Após formatarmos o novo disco, devemos monta-lo para certificar que o mesmo esteja vazio. Utilize o comando "mount":
# mount /dev/sdb1 /mnt

- Abra a pasta /mnt com o comando "cd":
# cd /mnt

- Perceba que geralmente a pasta "lost+found" é criada após formatar o disco, apague tudo com o comando "rm":
# rm -r /mnt/*

-------------------------------------------------------
[Passo 4: copiando arquivos de /var para /dev/sdb1]

- Como o novo disco "/dev/sdb1" está montado em "/mnt", basta copiarmos o conteúdo de "/var" para "/mnt" com o comando "cp":
# cp -rdp --preserve=context /var/* /mnt

Nota: por quê "-rdp --preserve=context"? R.: "r" faz cópia de diretórios; "d" mantém links; "p" mantém permissões; "--preserve=context" mantém o contexto do selinux caso a distribuição possua ele habilitado.

-------------------------------------------------------
[Passo 5: elegendo /dev/sdb1 como novo /var]

- Após a cópia, os arquivos de "/var" podem ser apagados. Em nosso caso, somente renomearemos para manter backup. Utilize o comando "mv":
# mv /var /var.original

- Crie uma nova pasta "/var" para servir como ponto de montagem do dispositivo "/dev/sdb1". Utilize o comando "mkdir":
# mkdir /var

- Edite o arquivo "/etc/fstab" para que o dispositivo "/dev/sdb1" seja montado automaticamente em "/var". Utilize um editor de sua preferência e adicione a seguinte linha (sem ...):
...
/dev/sdb1 /var ext3 defaults 0 0
...

- Desmonte "/mnt" com o comando "umount":
# umount /mnt

- Teste o novo ponto de montagem com o comando "mount":
# mount /var

-------------------------------------------------------
[Passo 6: SOMENTE PARA SISTEMAS COM SELINUX]

- Em sistemas com selinux, no passo 5 quando criamos a nova pasta "/var", essa não possui permissões relativas ao /var original. Veja essa diferença com o comando "ls":
# ls -Z

- Para que as permissões selinux sejam restauradas no novo "/var", execute o comando "restorecon":
# restorecon /var

- A partir desse passo, tudo deve funcionar corretamente. Se quiser, reinicie o servidor para testar.

terça-feira, 11 de maio de 2010

centos + httpd + php + pgsql + selinux: Unable to connect to PostgreSQL server: could not connect to server: Permission denied

Uma forma de resolver esse problema é desativar o selinux somente para o httpd.
Execute o seguinte comando:

# setsebool -P httpd_can_network_connect_db=1

segunda-feira, 10 de maio de 2010

remote desktop - mstsc - credentials - Como retirar mensagem de Credentials?

A seguinte mensagem aparece toda vez que tento logar remotamente em um servidor. Quero desabilita-la, o que faço?

"Enter your credentials for 'SERVIDOR' these credentials will be used when you connect to the remote computer"

Esse "problema" acontece no RDP 6.0, para desabilitar, adicione a seguinte linha ao arquivo de configuração do remote desktop, geralmente se encontra em "Meus Documentos", oculto com o nome "default.rdp":
...
enablecredsspsupport:i:0
...

quarta-feira, 10 de fevereiro de 2010

sudoers + Como proibir usuário de executar alguns comandos?

Preciso dar permissão de administrador para o usuário "usradm" do grupo "admin", porém não quero que ele tenha o direito de mudar senhas com o comando "/usr/bin/passwd", logar como root com o comando "/bin/su" e alterar as configurações pelo "/usr/sbin/visudo".
Para fazer isso, precisamos editar o arquivo "/etc/sudoers" com o comando "visudo":

# visudo

Ir na seguinte linha:

.
.
.
%admin ALL=(ALL) ALL
.
.
.

E altera-la para:

.
.
.
%admin ALL=(ALL) ALL, !/usr/bin/passwd, !/usr/sbin/visudo, !/bin/su
.
.
.

A última palavra ALL indica que todos os comandos são permitidos aos usuários pertencentes ao grupo "admin". Porém, o ponto de exclamação "!" nega os comandos listados.
Ao logar com o usuário "usradm", faça um teste, as seguintes mensagens aparecerão:
...
usradm@srv1:~$ sudo su
Sorry, user usradm is not allowed to execute '/bin/su' as root on srv1.
usradm@srv1:~$ sudo visudo
Sorry, user usradm is not allowed to execute '/usr/sbin/visudo' as root on srv1.
usradm@srv1:~$ sudo passwd
Sorry, user usradm is not allowed to execute '/usr/bin/passwd' as root on srv1.
...

quinta-feira, 4 de fevereiro de 2010

Squid + como retirar a última linha das páginas de erro que exibe data hora e informações sobre o squid?

O squid por padrão imprime a data, hora e sua versão na última linha das páginas de erro.
Podemos retirar somente a exibição da versão pela seguinte variável do arquivo "/etc/squid.conf":
.
.
.
httpd_suppress_version_string on
.
.
.

Porém a última linha continuará sendo exibida. Não sei se existe, mas não achei como retira-la pelo squid.conf, somente fazendo um script. O script explicarei logo abaixo.

Meu squid está configurado para Portugues:
.
.
.
error_directory /usr/share/squid/errors/Portuguese
.
.
.

Executo o script abaixo para inserir uma string no final de cada arquivo de erro dizendo para comentar tudo que tiver "%h (%s)" que é a nossa linha!


for ARQUIVO in /usr/share/squid/errors/Portuguese/*; do echo -e '\n\n<clear="all">\n<hr noshade size=1>\n<!-- %h (%s) -->' >> $ARQUIVO; done;

Ao executar o script, recarregue o squid:
# /etc/init.d/squid reload

E veja o resultado, embora o nome do host e o nome "squid" estejam aparecendo comentados no código fonte de cada página de erro, a data, hora e versão não aparecem mais!

terça-feira, 2 de fevereiro de 2010

TCL TK + como ativar uma nova linguagem em um banco de dados postgres?

Recentemente precisei instalar a linguagem TCL TK no postgres ubuntu. Facilmente com o apt-get consegui baixar os pacotes:

# apt-get install tcl tk

Porém, para que o postgres reconheça os pacotes é necessário executar uma comando: createlang.
Quebrei a cabeça um pouquinho até descobrir que o comando deve ser executado pelo o usuário "postgres" do linux! Então ao logar no servidor postgres, provavelmente como "root", lembre-se de mudar para o usuário "postgres" para executar o comando de criação de linguagens, como ilustram os comandos abaixo:

# su postgres
$ createlang -U postgres pltcl NOME_DO_BANCO_DE_DADOS

segunda-feira, 1 de fevereiro de 2010

SSH Como restringir acesso de usuários do AllowUsers para logar somente de uma rede

Recentemente precisei dar acesso ssh ao usuário "ujoao". Então fui no arquivo "/etc/ssh/sshd_config" e na declaração "AllowUsers" adicionei o "ujoao". Porém, quero que "ujoao" só acesse meu servidor de dentro da minha rede "10.1.1.0/24", de qualquer outro lugar ele não terá permissão. Como fazer isso?
Penando na Internet descobri que simplesmente devemos fazer o que segue abaixo:

===================
- abrir o arquivo "/etc/ssh/sshd_config"
- em "AllowUsers" devemos adicionar "ujoao@10.1.1.*"
===================

Simples não? Pois é, mas foi difícil achar isso.

sexta-feira, 29 de janeiro de 2010

Wish + Interpretador de comandos do linux para criação de janelas em interface gráfica

Um dia fiz um concurso e na prova caiu a pergunta: "Para que serve o comando wish?".
Chutei e acertei! Estou escrevendo esse artigo pois não acho muito pela Internet a explicação sobre esse comando, somente o man, que também não explica muito sobre sua funcionalidade.


[O que é o Wish]
Wish é um comando para criação de janelas para seus scripts feito em bash. Na verdade, o wish é um interpretador de comandos TCL/TK. Se quer saber como utilizar o wish, pesquise sobre TCL/TK, se pesquisar somente sobre o wish não encontrará muita coisa.


[TCL e TK]
TCL é uma linguagem de programação e o TK é um conjunto de funções gráficas para o TCL (criação de botões, labels, select, ...).


[Exemplo de aplicação]
Recentemente tive o seguinte problema: "rdesktop - Como utiliza-lo com interface gráfica?"
Utilizo muito o rdesktop para logar nos servidores Windows. O ruim é que esse é um programa de linha de comando, queria que ele fosse ativado com um clique em um ícone, mas como informar o endereço do servidor que quero logar? Se simplesmente fizer um script que chama o rdesktop não vai dar certo pois você precisa do parâmetro 1 que é o nome do servidor:
===
Script 1 - rdesktop em linha de comando
===
#!/bin/bash
rdesktop ${1}


Eis que surge o wish. Ao executar o script abaixo, uma janela com um input text aparecerá, informe o nome do servidor que queira logar que o rdesktop entrará em ação:
===
Script 2 - rdesktop com interface gráfica
===
#!/usr/bin/wish
#titulo da janela
wm title . "RDW - Nome do servidor"
#tamanho da janela
#larguraXaltura+x+y
#100000 faz ficar colado em baixo
wm geometry . 300x50+200+10000
#criando input text, nomeando variavel inputText e focando cursor do teclado nele
grid [entry .inputText -textvar inputText -just left] -ipadx 50 -rowspan 100
focus .inputText
#associando teclas ao input text e respectivas acoes
bind .inputText RDesktop
bind .inputText Sair

#########
# Funcoes
#########
proc RDesktop {} {
exec rdesktop -u usuario -d dominio -g 90% $::inputText &
exit
}

proc Sair {} {
exit 0
}


[Download]
Baixe o "Script 2 - rdesktop com interface gráfica" clicando em rdw-publico.sh.

quarta-feira, 27 de janeiro de 2010

Capslock no rdesktop do ubuntu não funciona

Comente a linha que inibe o Caps_lock no arquivo /usr/share/rdesktop/keymaps/common:

.
.
.
# COMENTE A LINHA ABAIXO PARA NÃO INIBIR O CAPSLOCK
#Caps_Lock 0x0 inhibit
.
.
.