h1

DEUS SEJA LOUVADO

Outubro 21, 2009

Viva o Estado laico!
h1

Unidades de medida

Outubro 10, 2009
  • Unidade de medida de masculinidade: os centímetros do seu pênis.
  • Unidade de medida de feminilidade: os centímetros do seu salto.
h1

Na contramão

Outubro 4, 2009

“… olhou no retrovisor e avistou uma placa meio apagada com a inscrição “Cuidado. Você está na contramão“.
Imediatamente fez o retorno e bateu de frente com um caminhão.”

h1

Faroeste Caboclo animado

Setembro 3, 2009

Como fã da Legião e decoradordeletrasdemúsicasdedezminutos (aham, minha mãe reclama quando invento de cantar esta música no banho, que faz ele demorar muito), gostei muito desta animação que o Amaral do Peixe Aquático fez da música Faroeste Caboclo.

Via: Pipoca de Bits

h1

Com que hospedagem eu vou?

Agosto 31, 2009

É, estes dias atrás registrei um domínio para onde pretendo migrar este blog (estou há quanto tempo prometendo isso? Um ano?). Só não sei que serviço de hospedagem escolher. Vários conhecidos meus usam o Dreamhost e dizem ser muito bom. Para mim ele é excelente, pois tem exatamente tudo que eu preciso, como acesso via ssh remoto. O problema é o preço. Não da “mensalidade” (algo em torno de 10 dólares, ou 20 halls/mês), mas da taxa de instalação inicial, 50 doletas. Me falta coragem para tanto. O que? Estudante não ganha salário não, meu fío :-)

Mas por enquanto deixa assim. Quem souber de um serviço legal com suporte a PHP5, mysql5, ssh, integração do servidor web com serviços como svn, git, etc. (tá, é frescura, atualmente não preciso de nada disso :-)), me dá um toque.

O nome é tudo. Por isso nem pensei em registrar um domínio que lembrasse meu nome. Como leandrosantiago.com.br já está registrado para um chará meu, pensei, na esperança de que Carlos Drummond de Andrade não se levante do túmulo para me processar, em utilizar parte do título de um poema que gosto muito, O ‘poema de sete faces’, mesmo não sendo lá muito fã de poesias.

SeteFaces.org (por enquanto, está sendo redirecionado para cá, e pelo jeito vai continuar assim por um bom tempo).

Isso é tudo por enquanto. Muitas idéias pipocam nesta minha mente perturbada mas ultimamente tenho estado sem muito tempo para escrever. Mas um dia este tempo chega. Só não esperem sentados que suas bundas doerão.

h1

Linux darling

Agosto 31, 2009
Imagens das antigas, lá de 2001.

Fonte: Joy of Tech
h1

CGI: Obter parâmetros da url pelo bash

Julho 8, 2009

Eu nem deveria estar aqui escrevendo. Na verdade estou até o pescoço de coisas a fazer, mesmo já estando de férias…

Mas como fazia tempo que não postava algo relacionado ao Linux e como ultimamente estou muito envolvido com desenvolvimento para web (formulários! malditos formulários! rs), passei a pesquisar sobre coisas relacionadas a isso.

Quando se fala em desenvolver páginas dinâmicas, todo mundo pensa logo em PHP e Asp.NET, Ruby, Java, etc. Talvez estas sejam muito indicadas para isso, mas nada impede que você use a sua linguagem favorita. Quer criar páginas e só sabe programar em C? Ou só em Pascal? Ou só em shell-script (bash, zsn, csh, ksh, etc., etc., etc.)? Pois você pode sim :-)

Falei com um colega meu que em teoria você pode escrever páginas em qualquer linguagem e ele achou que eu estava louco. Tive que mostrar na prática. Mas em teoria é fácil de entender, já que só o que o servidor web faz é enviar textos para a saída padrão, no caso, o navegador do usuário, e aí este encarrega-se de montar o HTML. Assim qualquer linguagem de programação capaz de enviar dados para a saída padrão (stdout) pode ser utilizada para escrever páginas.

A resposta é CGI. Não vou falar muito sobre a coisa, já que pouco sei. Mas se quiser saber, dê uma pesquisada no Google.

Neste texto falo sobre como obter os parâmetros passados na url das páginas (via método GET), quando for um script em shell. Aqui uso o bash, mas você pode obter melhor desempenho com o dash ou o zsh. Costume de usar o bash mesmo :-)

É muito provável que alguém já use esta técnica, mas como nunca li nada a respeito e achei que esta maneira ficou interessante, decido compartilhar com meus coleguinhas de internet :-)

Primeiro é bom notar que num cgi em bash, a variável que guarda os parâmetros da url é a $QUERY_STRING. Ela é bem crua e deve ser tratada. Seu formato é “var1=valor1&var2=valor2″ e assim em diante.

De início de comversa, vamos criar uma função que faz este tratamento. Ela se chamará extraiparams. Podemos até criar uma “biblioteca” com as funções que utilizamos com frequência. Eu costumo fazer isto :-)

extraiparams() {
local IFS=”&”
for i in $QUERY_STRING; do
eval $i
done
}

Esta é a primeira versão de nossa função. Ela funciona, mas tem várias falhas de segurança. O que ela faz exatamente?
IFS é uma variável que no bash define o separador de campos. Assim, quando a definimos como “&”, estamos dizendo que cada “coisa” limitada por este caractere será um elemento. No caso, um elemento do laço for. Assim, se  $QUERY_STRING for “var1=valor1&var2=valor2″, teremos duas iterações do for com o i valendo “var1=valor1″ e “var2=valor2″.

Assim basta usar o comando eval, que executa uma string, no caso, atribuições, para termos nossas variáveis definidas. Teremos no final var2 com o conteúdo “valor1″ e var2 com o conteúdo “valor2″. Perfeito. Ou não?

Acontece que o eval é um comando perigoso, pois pode executar não somente atribuições inofensivas, mas também comandos do sistema! Isso dá margem para que uma pessoa mal-intencionada danifique seu computador/servidor.

Vamos então a um melhor tratamento.

O que precisamos obter pela url? Variávels, oras! Qual é então o formato de uma atribução no bash? É variavel=conteúdo, onde o nome da variável deve começar com um caractere alfanumérico ou um caractere underscore (o sublinhado) seguido de uma sequencia de alphanuméricos, underscore ou numérico. Assim filtraremos o que recebemos na url com uma expressão regular bem simples. Aqui uso o grep, mas você pode usar o comando que achar melhor, sed, perl (sim, tenho um colega que usa perl para tudo!) ou o quer que seja.

A expressão para filtrar isso é: ^[[:alpha:]_][[:alnum:]_]*=

Destrinchando isso, significa: qualquer coisa que comece com uma letra ou undesrcore seguido de zero ou mais letras, underscore ou número. Ufa.

Vamos então reescrever nossa função:

extraiparams() {
local IFS=”&”
for i in $QUERY_STRING; do
if grep ‘^[[:alpha:]_][[:alnum:]_]*=’ <<< $i > /dev/null; then
eval $i
fi
done
}

Aqui, antes de executar o eval, verifico se o parâmetro se encaixa no meu padrão. Se encaixar, faz a atribuição. Senão, ignora. O redirecionamento para /dev/null serve para não jogar o conteúdo para o navegador, posi se você fizer isto antes de exibir o cabeçalho “content-type: text/html” seguido de uma linha vazia, vai dar pau no seu script e o servidor acusará erro!

Para usar a função, basta chamá-la sem quanquer parâmetros em qualquer ponto do seu script em cgi.

Podemos incrementá-la para que detecte tentativas de ataque e/ou guarde num array todos os parâmetros válidos (pra que isto seria útil?). Coloco aqui o script completo, como exemplo:

#!/bin/bash

extraiparams() {
local IFS=”&”
for i in $QUERY_STRING; do
if grep ‘^[[:alpha:]_][[:alnum:]_]*=’ <<< $i > /dev/null; then
VALID_PARAMS+=($i)
eval $i
else
INVALID_PARAMS+=($i)
fi
done
}

echo “content-type: text/html”
echo

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

extraiparams

if (( ${#INVALID_PARAMS[@]} > 0 )); then
echo -n “Tentando atacar este servidor com os comandos “
for i in ${INVALID_PARAMS[@]}; do
echo -n ” <b>$i</b>,”
done
echo ” neh?”
fi

echo “<br><br>”

echo Paramametros validos:
echo “<ul>”
for i in ${VALID_PARAMS[@]}; do
echo “<li>$i</li>”
done
echo “</ul>”

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

Executando o script no servidor: http://localhost/~tenchi/cgi-bin/teste1.cgi?i=testa&ls&j=ornintorrinco&rm

E a saída será:

Se quiser saber mais sobre programação em shell-script, recomendo que acesse o site do Júlio Neves e do Aurélio:
http://www.aurelio.net
http://www.julioneves.com

E por hoje é isso pessoal. Eu estava sentindo falta das tais “pitadas nerds” neste blog.

h1

Open source é coisa de comunista

Julho 4, 2009
h1

E em clima de Transformers…

Junho 27, 2009

h1

Ela me pegou de jeito, não tive escapatória

Junho 1, 2009

E eu estava lá na minha. Vivendo minha vida.

Há um mês a conheço, nem dando bola, num evento de informática. De Linux! Todos estes anos estudando Linux finalmente compensaram!

Na verdade foi tudo parte de um plano empregado por uns colegas meus. Eu já desconfiava, mas ontem ela me contou tudo.

Parecerá estranho, mas passei um bom tempo “fugindo” dela, mesmo sem parar de pensar nela… Sonhando todas as noites com ela…

Mas aí um dia não deu jeito mesmo. Ela me pegou de jeito.

Ela é linda, devoradora de livros, baixinha, usa óculos (as vezes), inteligente, engraçada, cheirosa, um pouco chata (tem que ser, senão fica ruim)… Ainda acordo todo dia me perguntando se ela realmente existe ou se é imaginação minha mesmo. Só confirmo minha feliz realidade assim que a encontro.

Isso é assim tão patético? É, mas eu não ligo!

Agora é aguentar a zoação dos três colegas que armaram o tal do plano pra gente se conhecer.

Ela é boa parte do que não sou e somos em grande parte opostos. Ela é viciada em anime japonês, usa o orkut como página inicial, já foi patricinha e adora tirar fotos. Ela adora a lua e sonha em um dia ir até lá (realmente, eu também achei no começo que era brincadeira) :-)

(…)

Ok, este foi um post brega. Me desculpem. Não sou muito bom nisso.

Kelyane, lokita, louquinha, linda, te adoro!