Arquivo

Posts Tagged ‘cgi’

On the Fly – O Que É?

4 agosto, 2008 8 comentários

On the fly é uma expressão em inglês que têm como significado os termos: dinâmicamente, às pressas, sempre mudando.

Em termos de programação, o On-the-fly significa algo criado, ou modificado dinâmicamente somente quando requisitamos.

Um exemplo de sistema on-the-fly é o validador de códigos em imagem.

Este tipo de validador, gera uma imagem diferente a cada atualização da página. É imprevisível quantas imagens um usuário poderá necessitar até que este entre com um código correto, por isso não faz sentido armazená-las, pois caso contrário, em um grande site, isto facilmente poderia causar uma sobrecarga.

Mas o On-the-fly resolve esta questão! Uma vez que a imagem fora criada, esta permanesse apenas no cache do usuário. Caso este venha a atualizar a página, uma nova imagem é gerada.

Veja funcionando:

[ Validador On-the-Fly


 

Veja o Código Completo:
(validador.cgi)

 #!/usr/bin/perl
use CGI;
use CGI::Carp “fatalsToBrowser”;
use Image::Magick;
###########################################################

$format = “jpeg”; # Formato de saída

$qs = $ENV{QUERY_STRING}; # Pegamos a querystring

## Lemos o buffer
read(STDIN, $buffer, $ENV{‘CONTENT_LENGTH’});
@conteudo2 = split(/&/, $ENV{QUERY_STRING});
foreach $par (@conteudo2) {
        ($campo, $valor) = split(/=/, $par);
        $valor =~ tr/+/ /;
        $valor =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(“C”, hex($1))/eg;
        $QUERY{$campo} = $valor;
}

$cgi=new CGI( ); # Criamos uma instância em CGI

if (!$ENV{QUERY_STRING}){ # Se não há querystring
   &addcookie; # Gera novo cookie
   &form; # Mostra formulário
}elsif($QUERY{cod}){ # Se há querystring
  if ($cgi->cookie(‘codigo’) eq $QUERY{cod}){
   # Se o código digitado corresponde ao código no cookie
   &addcookie; # Gera novo cookie 
   # Se corresponde, mostra correto
   print  “<font color=green><h3>Código correto!</h3></font>”; 
   &form; # Mostra formulário
  }else{  # Senão
   &addcookie; # Gera novo cookie
   print  “<font color=red><h3>Código errado!</h3></font>”; # Mostra errado
   &form; # Mostra formulário
  }

}elsif($QUERY{gerar}){ # Se mandou gerar….

  $rand=$cgi->cookie(‘codigo’); # Pega o numero que irá mostrar
  $novo  = Image::Magick-> new(size=>’100×65′);
  # Cria imagem com as dimensões desejadas
  $imagem = $novo-> Read(‘gradient:#CCCCCC-#EEEEEE’);
  # Lê a imagem e coloca-a em uma variável com um fundo degradê
  $imagem=$novo-> Raise(‘4×4’); # Adiciona um efeito de relevo
  $imagem=$novo->MotionBlur(angle=>60,radius=>8,sigma=>3);
  # Adiciona um efeito de borrar
  $imagem=$novo-> Annotate( font => ‘/home/www/HATTEN.ttf’,# Caminho para fonte
fill        => ‘black’,             # Cor da fonte
                                                 pointsize  => 20,               # Tamanho da fonte
                                                 gravity      => ‘Center’,       # Alinhamento
                                                 text          => $rand,          # Escreve o número
  );

  print “Content-type:image/$format\n\n”;
  # Imprime o cabeçalho com o devido formato
  binmode STDOUT;                                 
  # Converte a saída para binario

  $imagem=$novo->Write( “$format:-” );
  # Mostra a imagem no formato escolhido

}

sub form{
 # Mostra na tela
 print qq|<p>Digite o código:</p>
 <img src=?gerar=num />
 <form method=’get’>
  <input type=text name=’cod’ size=8>
  <input type=submit value=’ok’>
 </form>
 |;
}

sub addcookie{
   $codigo=int rand(100000); # Pega um número qualquer
   $cookie=$cgi->cookie(-name=>’codigo’, # Novo cookie
  -value=>$codigo,                    
  -expires=>’+1m’,                     # Expira em 1 minuto
  -path=>’/’,
   ); 
   print $cgi->header(-cookie=>$cookie);  # Salvamos o cookie
}

CHMOD – O Que É? Como Alterar?

Todo arquivo Perl executável necessita de permissões do servidor para permitir que seus usuários executem o programa. Esta permissão ou restrição que é dada aos arquivos é feita através de um comando Unix denominado de CHMOD.

O CHMOD (change mode) possibilita alteração no modo de um arquivo ou pasta para três tipos de permissões que são estas, leitura, escrita e execução. Mas como fazer isto?

Bem como este é um comando do servidor, geralmente é feito através de um programa FTP.

Neste tutorial usaremos como exemplo o programa CuteFTP para realizar esta tarefa.

Conecte-se ao Servidor

Primeiramente configure os dados para conexão de seu servidor e em seguida, clique em Conectar.
Photobucket

 

Envie o Arquivo

Depois que você enviou seu arquivo Perl, note que ele aparecerá na lista de arquivos do servidor.
Feito isso, clique com o botão direito sobre ele e selecione CHMOD.

Photobucket

Altere o Modo

Aqui em CHMOD você poderá então alterar as permissões de seus arquivos.

Photobucket

Definindo as permissões de execução para globais, ou escrevendo ‘755’ em Manual, seu CGI estará  enfim pronto e configurado.

Obs.: Alguns scripts podem requerer outro valor de CHMOD como 777.
Alguns programas de FTP podem váriar o local da opção CHMOD.

Perl + GD Graphic Library: Instalação

O GD Graphic Library é um módulo gráfico para linguagens como Perl, PHP, etc … que permite ao usuário criar e manipular imagens dinamicamente. Aqui iremos aprender como instalar e utilizar o GD com seus recursos.

Todo interpretador Perl possui sua pasta para módulos. Esta geralmente se encontra sob site/lib onde o Perl foi instalado.

Algumas distribuições possuem por padrão o módulo GD, mas se você estiver usando o ActivePerl talvez necessite instalar o GD manualmente. Se este for o caso, siga estes passos:

No ppm do ActivePerl execute os seguintes comandos para adicionar repositório:

rep add http://theoryx5.uwinnipeg.ca/ppms
rep add http://theoryx5.uwinnipeg.ca/cgi-bin/ppmse…rn:/PPMServer58
rep add http://www.activestate.com/ppmpackages/5.8-windows/

Feito isto, chame o instalador por:

install GD

Isso irá instalar o GD na versão mais recente, caso isso não ocorra, tente executar diretamente estes outros procedimentos:

install http://www.gmod.org/ggb/ppm/GD.ppd
install http://theoryx5.uwinnipeg.ca/ppms/GD.ppd
install http://theoryx5.uwinnipeg.ca/ppmpackages/GD.ppd

Agora que você já possui o GD, poderá instalar outros módulos distribuidos pela CPAN que aumentam a capacidade de criação do GD e serão usados ao longo deste tutorial sobre GD.

Para instalá-los, você deverá sempre respeitar a hierarquia da pasta substituindo :: por /

Exemplo:

GD::Graph::area deverá ser instalado na pasta perl/site/lib/GD/Graph


Perl + GD Graphic Library
[ 1 | 2 | 3 | 4 | 5 | 6 | 7 ]

CGI/Perl no IIS

6 julho, 2008 2 comentários

Para você que utiliza o servidor IIS e deseja executar arquivos CGI PERL, atente-se a este tutorial.

Primeiramente você deve ter instalado o interpretador Perl em seu servidor. Para isso:

  1. Baixe o Interpretador Perl
  2. ActivePerl 5.8


  3. Instalando o ActivePerl
  4. O processo de instalação do ActivePerl não é complicado. Lembre-se de instalar os PPMs 2 e 3.

    Selecione todas as opções da sessão ‘Choose optional setup actions‘.

    Avance até o fim do processo de instalação.


  5. Configurando o IIS para ler .CGI
  6. Até então, o IIS já roda arquivos com extensão .PL

    Agora, para adicionar a extensão .CGI faça o seguinte:

    Pelo XP, clique com o botão direito em Meu computador > Gerenciar > Serviços e aplicativos > Internet Information Services > Sites da Web > Clique com o botão direito em Site da Web Padrão e vá em Propriedades.

    No guia Diretório Base, vá em Configuração > Mapeamentos > Adicionar

    Adicione os seguintes dados:

    Executável: C:perlbinperl.exe “%s” %s
    Extensão: .cgi
    Verbos > Limitar a: GET, HEAD, POST


Pronto! Basta clicar em OK. Agora seu IIS está configurado para rodar tanto ASP como CGI.

Obs.: Para fazer o IIS interpretar arquivos ‘.pl’, basta repetir a etapa nº 3, alterando apenas a extensão para “.pl”

Você já pode adicionar seus arquivos em C:Inetpubwwwroot e rodá-los como no Apache.

Obs.: O IIS deverá ser instalado através do CD do Windows.