- - - - - - -
CGI :: Info - Informações sobre o ambiente CGI
Versão 0.86
Com muita frequência, os programas PERL têm informações como o nome do script codificado em sua fonte. De um modo geral, o codificador é ruim, pois pode dificultar a leitura dos programas e reduz a legibilidade e a portabilidade. CGI :: Info tenta remover isso.
Além disso, para ajudar a depuração de scripts, o CGI :: Info tenta fazer coisas sensíveis quando você não está executando o programa em um ambiente CGI.
CGI :: Info também fornece um firewall de aplicativo da web simples. Embora você não deva confiar nele sozinho para fornecer segurança ao seu site, é outra camada e cada pequena ajuda.
use CGI::Info;
my $info = CGI::Info->new();
# ...
Cria um objeto CGI :: Info.
São necessários quatro argumentos opcionais permitem, Logger, espera e upload_dir, que são documentados no método params ().
Pega um syslog de parâmetro opcional, para registrar mensagens no sys :: syslog. Pode ser um booleano ativar/desativar o log no syslog, ou uma referência a um hash a ser dado ao SYS :: Syslog :: SetLogsock.
Tome o Logger de parâmetros opcionais, um objeto que é usado para avisos
Toma cache de parâmetro opcional, um objeto usado para armazenar em cache as pesquisas IP. Este objeto de cache é um objeto que entende as mensagens get () e set (), como um objeto Chi.
Tomar parâmetro opcional max_upload, que é o tamanho máximo do arquivo que você pode fazer upload (-1 sem limite), o padrão é 512MB.
Retorna o nome do script CGI. Isso é útil para postar, evitando assim colocar caminhos codificados em formas
use CGI::Info;
my $info = CGI::Info->new();
my $script_name = $info->script_name();
# ...
print "<form method="POST" action=$script_name name="my_form">n";
Encontra o nome do caminho completo do script.
use CGI::Info;
my $info = CGI::Info->new();
my $fullname = $info->script_path();
my @statb = stat($fullname);
if(@statb) {
my $mtime = localtime $statb[9];
print "Last-Modified: $mtimen";
# TODO: only for HTTP/1.1 connections
# $etag = Digest::MD5::md5_hex($html);
printf "ETag: "%x"n", $statb[9];
}
Retorna o diretório do sistema de arquivos que contém o script.
use CGI::Info;
use File::Spec;
my $info = CGI::Info->new();
print 'HTML files are normally stored in ', $info->script_dir(), '/', File::Spec->updir(), "n";
# or
use lib CGI::Info::script_dir() . '../lib';
Retorne o nome do host do servidor web atual, de acordo com o CGI. Se o nome não puder ser determinado no servidor da Web, o nome do host do sistema será usado como um retorno. Isso pode não ser o mesmo que a máquina em que o script CGI está sendo executado, alguns ISPs e outros sites executam scripts em diferentes máquinas daqueles que fornecem conteúdo estático. Há uma boa chance de que este seja domain_name () preso com 'www' ou 'cGI'.
use CGI::Info;
my $info = CGI::Info->new();
my $host_name = $info->host_name();
my $protocol = $info->protocol();
# ...
print "Thank you for visiting our <A HREF="$protocol://$host_name">Website!</A>";
Domain_Name é o nome do domínio de controle deste site. Geralmente, será semelhante ao host_name, mas não possui os prefixos http: // ou www.
Retorne o URL da máquina executando o script CGI.
Retorna uma referência a uma lista de hash dos argumentos da CGI.
O CGI :: Info ajuda você a testar seu script antes da implantação em um site: se não estiver em um ambiente CGI (por exemplo, o script está sendo testado na linha de comando), os argumentos da linha de comando do programa (uma lista de pares de key = value) são usados, se não houver argumentos da linha de comando, são lidos do DSTDIN como uma lista de linhas de key = Value. Além disso, você pode dar um de--tablet,-search-mecanismo,--mobile e--robot para imitar esses agentes. Por exemplo:
./script.cgi --mobile name=Nigel
Retorna Undef se os parâmetros não puderem ser determinados ou se nenhum foi fornecido.
Se um argumento for dado duas vezes ou mais, os valores serão colocados em uma string separada por vírgula.
O valor de hash retornado pode ser transmitido para o CGI :: Untrant.
Requer quatro parâmetros opcionais: permitir, esperar, logger e upload_dir. Os parâmetros são passados em um hash ou uma referência a um hash. O último é mais eficiente, pois coloca menos na pilha.
Permitir é uma referência a uma lista de hash de parâmetros CGI que você permitirá. O valor para cada entrada é uma expressão regular de valores permitidos para a chave. Um valor undefune significa que qualquer valor será permitido. Os argumentos que não estão na lista são silenciosamente ignorados. Isso é útil para ajudar a bloquear ataques ao seu site.
Espere é uma referência a uma lista de argumentos que você espera ver e transmitir. Os argumentos que não estão na lista são silenciosamente ignorados. Isso é útil para ajudar a bloquear ataques ao seu site. Seu uso é descontinuado, o uso permita. Espere será removido em uma versão posterior.
Upload_dir é uma string que contém um diretório em que os arquivos que estão sendo carregados devem ser armazenados.
Toma o Logger de parâmetros opcionais, um objeto que é usado para avisos e traços. Esse objeto de logger é um objeto que entende mensagens warn () e rastreio (), como um log :: log4perl ou log :: qualquer objeto.
Os argumentos de permitir, esperar, logger e upload_dir também podem ser passados para o construtor.
use CGI::Info;
use CGI::Untaint;
# ...
my $info = CGI::Info->new();
my %params;
if($info->params()) {
%params = %{$info->params()};
}
# ...
foreach(keys %params) {
print "$_ => $params{$_}n";
}
my $u = CGI::Untaint->new(%params);
use CGI::Info;
use CGI::IDS;
# ...
my $info = CGI::Info->new();
my $allowed = {
foo => qr/^d*$/, # foo must be a number, or empty
bar => undef, # bar can be given and be any value
xyzzy => qr/^[ws-]+$/, # must be alphanumeric
# to prevent XSS, and non-empty
# as a sanity check
};
my $paramsref = $info->params(allow => $allowed);
# or
my @expected = ('foo', 'bar');
my $paramsref = $info->params({
expect => @expected,
upload_dir = $info->tmpdir()
});
if(defined($paramsref)) {
my $ids = CGI::IDS->new();
$ids->set_scan_keys(scan_keys => 1);
if($ids->detect_attacks(request => $paramsref) > 0) {
die 'horribly';
}
}
Se a solicitação for uma solicitação XML (ou seja, o tipo de conteúdo da postagem é o texto/xml), o CGI :: Info colocará a solicitação no elemento Params 'xml', assim:
use CGI::Info;
# ...
my $info = CGI::Info->new();
my $paramsref = $info->params(); # See BUGS below
my $xml = $$paramsref{'XML'};
# ... parse and process the XML request in $xml
Obtenha um único parâmetro. Pega um parâmetro de sequência único opcional que é o argumento a ser retornado. Se esse parâmetro não for fornecido param () é um wrapper para params () sem argumentos.
use CGI::Info;
# ...
my $info = CGI::Info->new();
my $bar = $info->param('foo');
Se o parâmetro solicitado não estiver na lista permitida, uma mensagem de erro será lançada:
use CGI::Info;
my $allowed = {
foo => qr/d+/
};
my $xyzzy = $info->params(allow => $allowed);
my $bar = $info->param('bar'); # Gives an error message
Retorna undef se o parâmetro solicitado não foi dado
Retorna um booleano se o site estiver sendo visualizado em um dispositivo móvel, como um telefone inteligente. Todos os tablets são móveis, mas nem todos os dispositivos móveis são tablets.
Retorna um booleano se o site estiver sendo visualizado em um tablet como um iPad.
Retorna os parâmetros como uma string, que é útil para depurar ou gerar teclas para um cache.
Retorna o protocolo de conexão, presumivelmente 'http' ou 'https' ou undef, se não puder ser determinado.
Retorna o nome de um diretório que você pode usar para criar arquivos temporários.
A rotina é preferível a "tmpdir" no arquivo :: spec, já que os programas CGI geralmente estão em execução em servidores compartilhados. Dito isto, o tmpdir voltará ao arquivo :: spec-> tmpdir () se não conseguir encontrar um lugar melhor.
Se o parâmetro 'Padrão' for fornecido, use esse diretório como uma devolução e não o valor no arquivo :: spec-> tmpdir (). Nenhum teste de sanidade é feito; portanto, se você fornecer o valor padrão de '/inexistente', isso será devolvido.
O TMPDIR permite que uma referência das opções sejam aprovadas.
use CGI::Info;
my $info = CGI::Info->new();
my $dir = $info->tmpdir(default => '/var/tmp');
$dir = $info->tmpdir({ default => '/var/tmp' });
# or
my $dir = CGI::Info->tmpdir();
Retorna a raiz do documento. É preferível olhar para o document_root no ambiente, pois também funcionará quando não estivermos em execução como um script CGI, que é útil para depuração de scripts.
Isso pode ser executado como um método de classe ou objeto.
use CGI::Info;
print CGI::Info->rootdir();
Sinônimo de rootdir (), para compatibilidade com o CHI.
Sinônimo de rootdir (), para compatibilidade com o Apache.
Obtém e define o nome de um diretório que você pode usar para armazenar logs.
O visitante é uma pessoa real ou um robô?
use CGI::Info;
my $info = CGI::Info->new();
unless($info->is_robot()) {
# update site visitor statistics
}
O visitante é um mecanismo de pesquisa?
use CGI::Info;
if(CGI::Info->new()->is_search_engine()) {
# display generic information about yourself
} else {
# allow the user to pick and choose something to display
}
Retorna um de 'web', 'pesquisa', 'robot' e 'celular'.
# Code to display a different web page for a browser, search engine and
# smartphone
use Template;
use CGI::Info;
my $info = CGI::Info->new();
my $dir = $info->rootdir() . '/templates/' . $info->browser_type();
my $filename = ref($self);
$filename =~ s/::///g;
$filename = "$dir/$filename.tmpl";
if((!-f $filename) || (!-r $filename)) {
die "Can't open $filename";
}
my $template = Template->new();
$template->process($filename, {}) || die $template->error();
Retorna o valor de um cookie, ou undef se nenhum nome for fornecido, ou o cookie solicitado não estiver no frasco.
Depreciado - use cookie ().
use CGI::Info;
my $i = CGI::Info->new();
my $name = $i->get_cookie(cookie_name => 'name');
print "Your name is $namen";
my $address = $i->get_cookie('address');
print "Your address is $addressn";
Retorna o valor de um cookie, ou undef se nenhum nome for fornecido, ou o cookie solicitado não estiver no frasco. A API é a mesma que "param", substituirá o método "get_cookie" no futuro.
use CGI::Info;
my $name = CGI::Info->new()->cookie('name');
print "Your name is $namen";
Define ou retorna o status do objeto, 200 para OK, caso contrário, um código de erro HTTP
Retorna os avisos que o objeto gerou
Às vezes você não sabe qual é o madeireiro até instanciar a classe. Esta função corrige a situação Catch22.
Método de classe para redefinir a classe. Você deve fazer isso em um ambiente FCGI antes de instantar, mas em nenhum outro lugar.
Nigel Horne, <njh at bandsman.co.uk>
is_tablet () atualmente detecta apenas o iPad e o Windows PCs. As cordas Android não diferem entre tablets e telefones inteligentes.
Por favor, relate quaisquer bugs ou solicitações de recurso para bug-cgi-info at rt.cpan.org , ou através da interface da web em http://rt.cpan.org/noauth/reportbug.html?queue=cgi-info. Serei notificado e você será automaticamente notificado de progresso no seu bug, pois eu fizer alterações.
Params () retorna um ref, o que significa que as rotinas de chamada podem alterar o hash para outras rotinas. Pegue uma cópia local antes de fazer emendas à tabela, se você não quiser que coisas inesperadas aconteçam.
Http :: BrowserDeTect, https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker
Você pode encontrar documentação para este módulo com o comando PerlDoc.
perldoc CGI::Info
Você também pode procurar informações em:
Metacpan
https://metacpan.org/dist/cgi-info
RT: rastreador de solicitação do CPAN
https://rt.cpan.org/noauth/bugs.html?dist=cgi-info
Matriz dos testadores da CPAN
http://matrix.cpantesters.org/?dist=cgi-info
Dependências dos testadores da CPAN
http://deps.cpantesters.org/?module=cgi::info
Copyright 2010-2024 Nigel Horne.
Este programa foi lançado sob a seguinte licença: GPL2