Workaround para o modulo do PedroTeixeira/Correios

Um amigo me relatou no dia de ontem (1/12/2012) que o retorno das informações do frete dos correios estavam retornando a mesma mensagem: Houve um erro inesperado, por favor entre em contato. Erro ao calcular o prazo, teste novamente mais tarde.(Cod. 99).

 

Mensagem de retorno dos Correios.

Continue lendo

PHP-CGI query string parameters vulnerabitily

Uma massa de emails que lotou o espaço em disco do HD de um dos servidores da empresa em qual trabalho foi o que motivou esse post. Na verdade o fim do espaço em disco me levou a encontrar um BUG no PHP-CGI 5.2.6 que levava a execução de código arbitrário a partir dos parâmetros de linha de comando. Ou seja com o comando

http://localhost/index.php?-s

Você obtém o conteúdo do código PHP. Isso é muito bizarro!

1. O que estava acontecendo?

Uma massa de emails de spam estavam sendo enviados como sendo da Fedex, identificamos esses emails e paramos o Postfix. No momento em que paramos, observamos a crescente fila de email e o decrescente espaço em disco.

Localizamos o foco da invasão, um dos sites que administramos estava com permissão na pasta e nos arquivos de usuário e grupo para o www-data. E o spammer havia criado um arquivo chamado pagenews.php e umas variações de w98089n.php (w[0-9]{1,8}n.php, mais ou menos isso).
Continue lendo

Adicionando campos customizados ao Customer no Magento

Adicionar um novo atributo(attribute) customizado(custom) para o cliente(custormer) no Magento nunca foi tão fácil, mas tenho que admitir que apanhei um pouco pra chegar nesse resultado final.

Basicamente o gostaria de fazer era adicionar um campo customizado ao customer do Magento e exibi-lo tanto no admin, quanto na página de registro e na página de informações do usuário o "Minha conta" (my account).

No exemplo que fiz aqui adicionei um campo customizado chamado CPF e o defini como obrigatório. A primeira parte desse código adiciona o atributo "cpf" ao cliente, ou seja cliente vai ter um atributo a mais. Além de nome, sobrenome ... e outras diversas informações, vai ter também o CPF.

Continue lendo

Resetando a senha do ADMIN no Magento

Começo esse post declarando que o conhecimento aqui divulgado é fruto do meu esquecimento da senha do admin da minha instalação local do Magento.

Esse passo a passo serve não só para mudar a senha do admin como a de qualquer outro usuário administrador. Nas versões mais novas do Magento é possível determinar um nome de usuário para representar o admin, ou seja, meu usuário administrador pode ser thiagosantos. Por tanto esteje atendo ao seu nome do usuário administrador! Para esse post vou admitir que o meu usuário administrador é o admin.

  1. UPDATE xxx_admin_user SET password=CONCAT(MD5('HHsenha'), ':HH')
  2. WHERE username='admin';

Continue lendo

Guia rápido de conversão e criação de certificados

Esse é um guia rápido de referência para a conversão de certificados e a criação de certificados. Todos os comandos para a conversão ou a criação foram feitos no shell do Linux, a distro que usei foi o Gentoo. Continue lendo

Magento – coleção de produtos / catalog/product_collection

Em casos bem comuns trabalhando com ecommerce temos a necessidade em alguns momentos de ter em mãos uma lista de certos produtos. Sejam esses produtos de uma certa categoria, ou tageados com certas palavras chaves ou dentro de uma faixa de valor.

O Magento trata essa lista de produtos como uma coleção de produtos, que possui um modelo próprio para tratar isso, criando uma interface simpática ao desenvolvedor para criar complexas consultas SQL. Há duas formas de acessar essa interface do "Product Collection" usando o modelo do catalog/product ou acessando diretamente o recurso do modelo , resource model, o catalog/product_collection. Se você der uma olhada na classe Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection, encontrado pelo caminho core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Collection.php, é possível ver todos os métodos disponíveis e como eles são implementados.
Continue lendo

Exportando e importando dados do mySQL por linha de comando

A motivação que me fez criar esse post partiu de um dos itens de um teste que bolamos aqui na empresa para uma vaga de SysAdmin Linux. A partir do momento em que alguns candidatos a vaga encontravam alguma dificuldade para restaurar um dump do mySQL por linha de comando (sendo não ser obrigatório por linha de comando).

Nesta página temos as sessões:

  1. Basicamente fazendo o dump do mySQL
  2. Restaurando um banco mySQL
  3. Atenção as setas!

Burlando o LinkSave

Há algo mais chato e entediante do que querer fazer um download e ser forçado a esperar 40 segundos ou cadastrar o seu celular para poder fazer o download?

É assim que funciona o LinkSave, mas existem inúmeros.

O código abaixo é só para o LinkSave e deve ser digitado na sua barra de endereço.

javascript:segundos=0;contador();void(0);

E o botão lá embaixo funciona mágicamente sem ter que cadastrar nada e nem esperar um século, se alguem quiser explicações do código comenta ai.

Abraço

Alterando o arquivo index com .htaccess

Um ponto no Apache que é muito útil é o .htaccess. Que são configurações do próprio Apache que podem ser usadas em diretórios para sobrescrever as configuração padrão.
Quando você navega em um site, que usa o Apache, e não define o arquivo que quer acessar (como por exemplo: http://thiagosantos.com/blog/ ao invés de http://thiagosantos.com/blog/index.php) o Apache procura pelo arquivo padrão do diretório.
Se requisitarmos a URL http://thiagosantos.com/blog/ o Apache vai procurar pelo arquivo padrão para essa pasta que nesse caso é o arquivo index.php, logo acessar http://thiagosantos.com/blog/http://thiagosantos.com/blog/index.php dá no mesmo.
Normalmente o Apache está configurado da seguinte forma:
DirectoryIndex index.html index.php index.htm default.htm