Português
chinês
Fox Pages Server (FPS) é um servidor HTTP, HTTPS e FastCGI multithread para Visual FoxPro.
Com o Fox Pages Server você pode desenvolver, depurar e distribuir conteúdo e aplicativos da Web usando o Visual FoxPro.
O Fox Pages Server não permite que o código do Visual FoxPro seja executado na Internet. Por isso é necessário conhecer a linguagem e as ferramentas de desenvolvimento para internet que serão utilizadas, por exemplo: HTML, CSS, Javascript, JQuery, Dojo etc.
O Fox Pages Server pode ser usado em combinação com a plataforma boa. Dessa forma, você pode criar aplicativos Web sem nenhum conhecimento de uma linguagem de desenvolvimento web. O Fox Pages Server se comunica com o BOA.
Microsoft Visual FoxPro 9.0
O Fox Pages Server é distribuído em dois modos: modo de desenvolvimento e modo de distribuição.
Neste modo o servidor funciona por padrão em singlethread, de modo que é possível utilizar o Visual FoxPro para o desenvolvimento de páginas FXP. O modo de desenvolvimento requer o Visual FoxPro instalado.
Neste modo, o servidor trabalha em multithread, proporcionando extremo ganho de processamento. O modo de distribuição requer o tempo de execução do Visual FoxPro instalado.
Nos modos de desenvolvimento e distribuição, qualquer erro é registrado em tabelas na pasta LOGS permitindo a detecção e rastreamento de erros.
Não tente executar o procedimento de instalação nos modos de desenvolvimento e implantação no mesmo computador. Se for necessário, execute o arquivo install.bat em modo de distribuição, pois ele registrará os componentes e também criará o Serviço Windows. Configure o modo de desenvolvimento para usar um IP ou porta diferente do modo de distribuição.
A depuração do Visual FoxPro só funcionará no modo de desenvolvimento porque é impossível exibir qualquer interface quando o código é executado em uma DLL multithread. Qualquer tentativa irá gerar erros ou congelar o thread.
Não é recomendado deixar os arquivos .HTML com seu .FXP compilado na mesma pasta do servidor, eles poderão ser baixados caso a extensão seja alterada no navegador.
Fox Pages usa a porta 80 como padrão para HTTP, portanto antes de iniciar é necessário parar qualquer serviço que esteja usando a porta 80 (IIS, Apache, etc.) ou alterar a porta usada no programa HTTP.PRG localizado na pasta SERVERS em no modo, ou no campo PORT da tabela SERVERS.DBF localizada na pasta DATA em modo de distribuição.
Outros protocolos seguem o mesmo procedimento.
O banco de dados FPS.DBC localizado na pasta DATA armazena a configuração dos servidores. A documentação das tabelas e seus respectivos campos pode ser encontrada no arquivo FPS.HTML. A relação entre as tabelas pode ser visualizada na imagem FPS.JPG.
Os servidores são responsáveis pelas conexões dos clientes (IE, Chrome, Firefox, etc) e servidores (NGinX, etc).
Cada servidor é executado em um thread separado e pode, dependendo da configuração do número IP, escutar na mesma porta. Em caso de conflitos de números IP e portas o primeiro servidor configurado receberá as conexões.
Configure os servidores incluindo, modificando ou excluindo registros na tabela SERVERS.DBF.
Cada protocolo padroniza uma porta específica:
FastCGI é normalmente usado na comunicação entre servidores, não existe porta padrão.
Os sites estabelecem uma relação entre um HOSTNAME (ex: www.example.com) com a pasta onde estão localizados os arquivos do site (ex: c:sitesexample), e configura sua página inicial (ex: index.fxp, index.php, index .html, etc.).
Configure os sites adicionando, modificando ou excluindo registros na tabela SITES.DBF.
Se o campo HOSTNAME for preenchido com "*" todos os HOSTNAMES estarão relacionados à mesma pasta.
Nesta mesma tabela configuramos os redirecionamentos preenchendo o campo REDIRECT com o endereço completo do redirecionamento. Este recurso é muito útil quando precisamos, por exemplo, redirecionar conexões não seguras (HTTP) para um servidor seguro (HTTPS), isso é feito por exemplo preenchendo o campo REDIRECIONAR do site www.example.com do servidor inseguro (HTTP) com "https://www.example.com", o endereço do site seguro (HTTPS).
Gateways são usados para enviar solicitações para outras ferramentas de desenvolvimento. PHP foi o único testado até agora, enquanto qualquer ferramenta que suporte FastCGI deve ser compatível.
Configure os gateways incluindo, modificando ou excluindo registros na tabela GATEWAYS.DBF.
O único protocolo suportado é FastCGI.
Os Gateways funcionam de forma semelhante aos Sites, estabelecendo uma relação entre um HOSTNAME (ex: www.example.com) com a pasta onde estão localizados os arquivos do site (ex: c:sitesexample). A diferença está no fato de que o conteúdo do campo URI (ex. “.php”) deve estar contido no URI da requisição para que este seja enviado ao gateway.
Com base nesses critérios, o Fox Pages Server transforma a solicitação HTTP em uma solicitação FastCGI e a envia ao servidor configurado. A resposta FastCGI é então transformada em uma resposta HTTP e enviada ao cliente.
As solicitações que não atenderem aos critérios serão processadas pelo servidor HTTP, portanto para cada Gateway deverá ser configurado um Site.
Nem todas as pastas e arquivos contidos em um site devem estar acessíveis. Bancos de dados, tabelas e programas são alguns exemplos.
Fox Pages Server possui o sistema de controle de acesso que permite acesso autorizado ou bloqueio total das pastas do site.
O controle de acesso é configurado adicionando, modificando ou excluindo registros das tabelas REALMS.DBF, USERS.DBF e REALMUSER.DBF
A tabela REALM.DBF define as configurações de acesso para as pastas do site.
A tabela USERS.DBF define os usuários que terão acesso às pastas.
A tabela REALMUSER.DBF lista usuários com pastas.
É um mecanismo de navegador que impede que uma origem (domínio) acesse recursos de uma fonte distinta (outro domínio) sem autorização.
Configure autorizações adicionando, modificando ou excluindo registros na tabela CORS.DBF.
Insira o site que concederá a autorização no campo SITE. Este campo está relacionado à tabela SITES.DBF.
Informe a origem (domínio autorizado) no campo ORIGEM, caso esteja preenchido com “*” será permitida qualquer origem.
Informe o recurso no campo URI, caso esteja preenchido com "*" qualquer recusa será permitida.
Os campos GET, POST, PUT, DELETE, HEAD e OPTIONS determinam quais métodos são permitidos.
O campo HEADER deve ser preenchido com os cabeçalhos HTTP permitidos. Devem ser delimitados por vírgula seguida de espaço.
O Fox Pages Server pode ser configurado para ser usado através de outros servidores web usando o protocolo FastCGI.
O arquivo nginx.conf localizado na pasta NGINX é um modelo de configuração para o servidor NGinX. Copie este arquivo para a pasta CONF onde o NGinX está instalado e configure o parâmetro ROOT com o caminho completo da pasta de arquivos do site.
Para configurar o Fox Pages Server para utilizar o protocolo FastCGI, preencha o campo TYPE da tabela SERVERS.DBF com "FCGI".
Como todas as informações necessárias ao processamento da solicitação devem ser fornecidas pelo servidor web, não há necessidade de configuração de sites, gateways ou segurança.
Após a inicialização do servidor, use qualquer navegador digitando o endereço do servidor configurado (por exemplo, http://localhost, https://localhost).
Para entrar no site de demonstração existem duas contas, uma para o cliente e outra para o representante.
A conta do cliente acessa a área do cliente. Para acessar utilize o e-mail [email protected] e a senha 123456.
A conta do representante inicia uma solicitação de registro de cliente e pedido. Para acessar utilize o e-mail [email protected] e a senha 123456.
Uma página dinâmica usa uma linguagem de programação do lado do servidor no desenvolvimento de um site ou aplicativo de Internet.
O Fox Server Pages possibilita o desenvolvimento destas páginas utilizando os recursos de páginas estáticas de desenvolvimento (ex. HTML, CSS, Javascript) com recursos de programação do Visual Fox Pro (ex. linguagem de programação console, banco de dados).
No Fox Pages Server, uma página HTML é convertida em um arquivo de programa PRG e compilada em um arquivo FXP compilado, de modo que o processamento da página é extremamente rápido e não tem as limitações de usar outro intérprete.
No processo de compilação apenas o código entre as tags <FPS>
e </FPS>
será processado, o restante será enviado como conteúdo estático.
Um exemplo de conteúdo estático.
<HTML>
Hello World
</HTML>
Resultado:
Olá mundo
Um exemplo de programa com conteúdo estático devido às tags <FPS>
e </FPS>
ausentes.
<HTML>
for nCounter = 1 to 3
Hello World
next
</HTML>
Resultado:
para lnCounter = 1 a 3
Olá mundo
próximo
Um exemplo utilizando as tags <t>
e <e>
, elas são responsáveis pelo envio de textos e expressões estáticas.
<HTML>
<FPS>
cWorld = "World"
for nCounter = 1 to 3
<t>Hello </t><e>cWorld</e><br>
next
</FPS>
</HTML>
Resultado:
Olá mundo
Olá mundo
Olá mundo
Um exemplo usando outra programação combinada de tags HTML. Toda linha iniciada com uma tag HTML ou pela tag <t>
é enviada.
<HTML>
<FPS>
<b>Begin</b><br><br>
cWorld = "World"
for nCounter = 1 to 3
<b><t>Hello </t><e>cWorld</e></b><br>
next
<br>
<t>End</t>
</FPS>
</HTML>
Resultado:
Começar
Olá mundo
Olá mundo
Olá mundo
Fim
REST (Representational State Transfer) é um estilo arquitetural que defende que as aplicações Web devem usar HTTP conforme originalmente pretendido, onde as solicitações GET, PUT, POST e DELETE devem ser usadas para consulta, alteração, criação e exclusão, respectivamente.
O Fox Pages Server processa uma solicitação como REST sempre que o cabeçalho Accept for "application/json" ou "application/xml".
Mais detalhes podem ser encontrados no aplicativo disponível no site de demonstração ao fazer login com a conta do representante.
Com Fox Pages Server você pode construir uma API REST para atender as solicitações da plataforma BOA. Você pode criar um aplicativo Web completo no Visual Foxpro. O Fox Server Pages responderá às solicitações enviadas pelo BOA. Os dados enviados entre Fox Server Pages e BOA são strings JSON fáceis de entender.
Depois de configurar suas páginas do Visual Fox, você pode testar o poder dessa combinação. Inicie a demonstração em https://www.BOA-platform.com ou por este link direto: http://demo.boa-platform.com. Quando a tela de login aparecer, você pode usar o seguinte:
Usuário: en
Senha: en01
URL do servidor API: http://localhost/boa. Este é o seu servidor Fox Pages local.
Consulte a pasta demo/boa para obter o exemplo de código-fonte.
Para suporte ao protocolo FastCGI, o processamento das propriedades dos objetos Request e Response foi alterado.
Na versão 2.0 os cabeçalhos com hífens (ex: Accept-Encoding) tiveram o hífen removido (ex: AcceptEnconding). Na versão 3.0 esses hífens foram alterados para sublinhados (por exemplo, Accept_Encoding).
Fox Pages Server é um software gratuito e de código aberto. A licença está localizada no arquivo LICENSE.
O componente utilizado para as conexões é o Socketwrench da empresa Catalyst Development Corporation (www.sockettools.com).
Este componente é distribuído nas versões gratuita e comercial. A versão gratuita não suporta conexões seguras (SSL/TLS).
A versão de desenvolvimento do Fox Pages Server está configurada para usar a versão gratuita do SocketWrench. Esta será uma limitação apenas se for necessário o uso de conexões seguras no ambiente de desenvolvimento.
Para usar a versão comercial do SocketWrench você deve adquirir uma licença, pois o Fox Pages Server não inclui esta licença.
A configuração da versão utilizada, gratuita ou comercial, ou a versão do SocketWrench, está localizada no arquivo FOXPAGES.H da pasta CORE, conforme segue:
// CHAVE DE SOQUETE
#DEFINE USEFREEVERSION
#DEFINE CSWSOCK_CONTROL "SocketTools.SocketWrench.6"
//SocketWrench8
//#DEFINE CSWSOCK_CONTROL "SocketTools.SocketWrench.8"
//#DEFINE CSWSOCK_LICENSE_KEY "INSIRA SUA LICENÇA DE TEMPO DE EXECUÇÃO AQUI"
//SocketWrench9
//#DEFINE CSWSOCK_CONTROL "SocketTools.SocketWrench.9"
//#DEFINE CSWSOCK_LICENSE_KEY "INSIRA SUA LICENÇA DE TEMPO DE EXECUÇÃO AQUI"
Você precisa recompilar o projeto depois de alterar essas configurações.
Multithreading - VFP2C32T.FLL - Christian Ehlscheid
Compressão - VFPCompressão - Craig Boyd
Criptografia - VFPEncryption - Craig Boyd
Analisador JSON - versão modificada da biblioteca - Craig Boyd
Sockets - Socketwrench - Desenvolvimento de Catalisador
Se este projeto for útil para você, considere uma doação.