CGILua: geração de scripts para a Web usando Lua

CGILua
Geração de scripts para a Web usando Lua

## API do servidor

A API do servidor (SAPI) é um conjunto de funções que abstrai o servidor Web e o disparador usado. Um disparador de SAPI é o mecanismo que permite a um servidor Web executar e comunicar-se com o CGILua e os aplicativos Web. A SAPI permite a abstração de uma série de detalhes internos, fazendo com que o CGILua seja muito mais portátil, já que transportar o CGILua para uma nova plataforma significa simplesmente escrever um disparador de SAPI para a plataforma de destino.

No momento, o CGILua oferece suporte a Apache, Microsoft IIS, Tomcat e Xavante como servidores Web, e a CGI, FastCGI, mod_lua, ISAPI e servlets como disparadores.

As funções são separadas em dois pacotes: `SAPI.Request` e `SAPI.Response`:

`SAPI.Request.getpostdata ([n])`
  Obtém um bloco de dados de POST. O parâmetro opcional n é o número de bytes para ler (o tamanho de bloco padrão será usado se nenhum parâmetro for informado).
  Retorna o bloco como uma string Lua.
`SAPI.Request.servervariable (string)`
  Obtém o valor de uma variável de ambiente do servidor. O argumento pode ser uma das variáveis CGI definidas, embora nem todos os servidores implementem o conjunto completo de variáveis. O conjunto consiste em:
  - `AUTH_TYPE` - se o servidor suportar autenticação de usuário e o script estiver protegido, este é o método de autenticação específico ao protocolo usado para validar o usuário.
  - `CONTENT_LENGTH` - o tamanho do conteúdo como fornecido pelo cliente.
  - `CONTENT_TYPE` - para consultas que têm informações anexadas, por exemplo, HTTP POST e PUT, este é o tipo de conteúdo dos dados.
  - `GATEWAY_INTERFACE` - a revisão da especificação CGI com a qual esse servidor é compatível. Formato: CGI/revisão
  - `PATH_INFO` - informações adicionais sobre o caminho, conforme fornecidas pelo cliente. Em outras palavras, os scripts podem ser acessados por meio dos respectivos nomes de caminho virtual, seguidos de informações adicionais no final desse caminho. As informações adicionais são enviadas como PATH_INFO. Essas informações devem ser decodificadas pelo servidor se vierem de uma URL antes de serem passadas para o script CGI.
  - `PATH_TRANSLATED` - o servidor fornece uma versão convertida de PATH_INFO, que realiza quaisquer mapeamentos de virtual para físico no caminho.
  - `QUERY_STRING` - as informações inseridas após o "?" na URL que fez referência a esse script. Essas são as informações da consulta e não devem ser decodificadas. Esta variável deve ser sempre definida quando houver informações da consulta, qualquer que seja a decodificação da linha de comando.
  - `REMOTE_ADDR` - o endereço IP do host remoto que faz o pedido.
  - `REMOTE_HOST` - o nome do host que faz o pedido. Se o servidor não tiver essas informações, ele define REMOTE_ADDR e não define esta variável.
  - `REMOTE_IDENT` - se o servidor HTTP oferecer suporte à identificação RFC 931, esta variável será definida com o nome do usuário remoto recuperado do servidor. O uso desta variável deve ser limitado apenas à conexão.
  - `REMOTE_USER` - se o servidor oferecer suporte à autenticação de usuário e o script estiver protegido, este é o nome de usuário com o qual eles foram autenticados.
  - `REQUEST_METHOD` - o método com o qual o pedido foi feito. Para HTTP, isto equivale a "GET", "HEAD", "POST" etc.
  - `SCRIPT_NAME` - um caminho virtual para o script em execução, usado em URLs auto-referentes.
  - `SERVER_NAME` - o nome do host do servidor, o alias do DNS ou o endereço IP como exibido em URLs auto-referentes.
  - `SERVER_PORT` - o número da porta à qual o pedido foi enviado.
  - `SERVER_PROTOCOL` - o nome e a revisão do protocolo de informações com o qual este pedido foi enviado. Formato: protocolo/revisão
  - `SERVER_SOFTWARE` - o nome e a versão do software do servidor Web que responde ao pedido (e executa o gateway). Formato: nome/versão
  Além desses, as linhas do cabeçalho recebidas do cliente, se houver, são colocadas no ambiente com o prefixo `HTTP_` seguido do nome do cabeçalho. Quaisquer caracteres `-` (hífen) no nome do cabeçalho são alterados para caracteres `_` (sublinhado). O servidor pode excluir quaisquer cabeçalhos que já tenha processado, por exemplo, Authorization, Content-type e Content-length. Se necessário, o servidor pode optar por excluir todos ou qualquer um desses cabeçalhos se a inclusão exceder algum limite do ambiente do sistema.
  Retorna uma string.
`SAPI.Response.contenttype (string)`
  Envia o cabeçalho Content-type para o cliente. A string fornecida está na forma "tipo/subtipo". Esta função deve ser chamada antes que qualquer saída seja enviada com o uso de `SAPI.Response.write`.
  Não retorna nada.
`SAPI.Response.errorlog (string)`
  Gera uma saída de erro usando a string fornecida.
  Não retorna nada.
`SAPI.Response.header (header, value)`
  Envia um cabeçalho genérico para o cliente. O primeiro argumento deve ser o nome do cabeçalho, por exemplo, "Set-Cookie". O segundo deve ser o valor. Esta função não deve ser usada em substituição às funções `SAPI.Response.contenttype` ou `SAPI.Response.redirect`.
  Não retorna nada.
`SAPI.Response.redirect (url)`
  Envia o cabeçalho Location para o cliente. A `url` fornecida deve ser uma string.
  Não retorna nada.
`SAPI.Response.write (string)`
  Gera uma saída usando a string fornecida.
  Não retorna nada.

$Id: sapi.html,v 1.3 2005/11/03 18:48:57 carregal Exp $