Os scripts disponibilizados com o cFos PNet podem mostrar como implementar funções de servidor com JavaScript. Foram desenhados para serem utilizados com scripting de browser do lado do cliente, como jQuery. Por convenção, scripts do lado do servidor usam a extensão .jss, enquanto que os scripts do lado do cliente usam a extensão .js. Ou seja, o cFos PNet *executa* ficheiros .jss, e envia ficheiros .js para o browser.
Pode utilizar depuração de script com Visual studio ou Visual Web Developer. Para a depuração necessita de uma versão do Visual studio ou Visual Web Developer com suporte para depuração remota, ou seja, o Visual Studio Professional Edition. Para permitir a depuração de script, defina a chave enable_script_debugging=1 na secção [param] do ficheiro GLOBAL.INI na pasta c:\programdata\cFos\cFosPNet.
Se não tem um depurador de script instalado, defina a chave para "0". Caso contrário, os scripts podem encravar em algumas máquinas. Também pode carregar o programa cfospnet.exe com a opção de linha de comandos -enable_script_debugging ou -esd para ativar a depuração de script para este início de programa.
Dentro da pasta pub encontra-se a sub-pasta users com uma sub-pasta para cada utilizador que tenha uma conta no seu servidor cFos PNet. A palavra passe ou outros dados opcionais de perfil são guardados numa hash list de nome PROFILE.TXT. Isto permite acessos rápidos e armazenados em cache pela autenticação HTTP incluída com o cFos PNet. Dentro da pasta pública também se encontra a sub-pasta www com uma sub-pasta para cada utilizador. Esta pasta pode conter ficheiros para download desse utilizador. O script file_op.jss também permite ao utilizador carregar ficheiros para esta pasta.
Os scripts realizam a autenticação de acordo com as definições do respetivo ficheiro .htaccess. Pelo que necessita de credenciais de utilizador para o utilizador a quem a pasta pertence.
Eis uma curta descrição dos scripts. Deverá ver o código fonte, para perceber como funcionam. | |
makedir2.jss | Se os ficheiros index.htm ou index.html estiverem presentes na pasta pedida, o cFos PNet inicia este script para gerar uma listagem da pasta. O script utiliza o FileSystemObject para recolher informação sobre o conteúdo da pasta atual. Em seguida, carrega um ficheiro XML modelo, analisa-o, e gera uma página HTML a partir do conteúdo da pasta e dos snippets providenciados pelo ficheiro XML. Para alterar o aspeto ou funcionalidade da listagem da pasta, modifique o modelo XML. O ficheiro HTML final inclui links para manutenção básica de ficheiros. Enquanto administrador, pode fazer login utilizando a autenticação HTML e mudar o nome ou apagar ficheiros ou pastas, carregar ficheiros e criar novas pastas. Isto é suportado pelo jQuery do lado do cliente, que é na prática usado para convenientemente enviar pedidos Ajax ao cFos PNet. O script do lado do servidor (file_op.jss) leva a cabo a autenticação HTTP necessária e controla as operações com os ficheiros. |
file_op.jss | Executa operações com ficheiros de acordo com a autenticação acima. As operações com ficheiros são rename (mudar o nome), delete (apagar), mkdir para criar uma pasta e carregar ficheiros. O carregamento de ficheiros por norma necessita de autenticação. Uma vez que o browser envia o ficheiro completo para o servidor antes de receber a informação de autenticação, isto levaria a que o ficheiro fosse enviado duas vezes. Para enviar a informação de autenticação ao browser primeiro, o script file_op.jss suporta uma operação prévia ao upload. O browser, utilizando um pedido Ajax, pede ao servidor a resposta à autenticação HTTP (401) e usa-a automaticamente para o upload real. O upload é gerido por uma função em upload.jss, que usa o objeto de ficheiro do cFos PNet's para permitir o upload de ficheiros com um tamanho arbitrário. |
user_op.jss | Executa funções básicas de administração de utilizadores: create (criar), delete (apagar), reset password (alterar palavra-passe) e list (listar). O utilizador "admin" é necessário para autenticação. |
list_op.jss | Uma vez que a lista hash desempenha um papel importante no cFos PNet, o script list_op.jss disponibiliza uma lista básica de operações disponíveis para pedidos Ajax. É seguido o mesmo esquema de autenticação descrito acima. Ou seja, dependendo da localização do script, é escolhido o utilizador cuja autenticação é necessária. A autenticação é feita de acordo com as diretivas dos respetivos ficheiros .htaccess. O script list_op.jss disponibiliza as seguintes operações: get Obtém uma lista de valores na lista hash. set Liga uma lista de chaves a uma lista de valores. save Guarda uma snapshot. erase Elimina uma lista de chaves. clear Elimina todas as chaves. remove Elimina a lista da memória/disco. size Informa sobre o tamanho da lista. list Lista todos os elementos na lista de hash. O Ajax da página dyndns.htm faz uso destas operações para definir a informação de configuração do DynDNS. |
dyndns.jss | Executa registos e cancelamentos de registo DynDNS, utilizando os dados de configuração na lista de hash dyndns.txt no ficheiro privado. Pode ser utilizada no início e encerramento do servidor (ver Chapter 1). |
get_connections.jss | Utilizado para exibir as ligações HTTP atuais. O pedido HTTP é feito via TCP. Para acelerar os pedidos HTTP, os browsers tentam reutilizar ligações TCP para pedidos HTTP. O pedido HTTP é apenas uma pequena mensagem e uma resposta. Após alguns segundos, o browser fecha todas as ligações TCP. Assim, pode ver um utilizador apenas por um curto período de tempo. Se a autenticação for bem sucedida, também é exibido o nome do utilizador e o seu endereço de IP. |
stretch.jss | Uma vez que é sempre um grande encargo para o web master redimensionar as imagens para o formato utilizado na página, foi implementado um pequeno script que utiliza o objeto de imagem do cFos PNet (GDI+). Usa como parâmetros na string de consulta do URL um nome de ficheiro e uma w (largura) e h (altura). Se as suas imagents tiverem um tamanho arbitrário, deverá apenas utilizar um parâmetro para preservar as proporções da imagem. O script makedir2.jss usa ligações a este script para exibir miniaturas das imagens armazenadas na pasta corrente. |
utils.jss | Coleção de funções utilitárias para simplificar o scripting do lado do servidor. Oferece as seguintes funcionalidades: - embrulhar o objeto do servidor web e as suas funções. - estender o objeto JavaScript String com algumas funções úteis. - executar a avaliação de parâmetros de script, tanto da string de consulta como dos dados de formulário usados com POST. - carregar, gravar e enviar (via mail) ficheiros pequenos. - datas rfc 1123 conforme usadas em cookies. - cookies. - uma função de transformação XML simples. Se usaro cFos PNet para projetos maiores, poderá querer empacotar unidades funcionais em módulos, em vez de um ficheiro de script simples incluído. O cFos PNet oferece suporte à especificação de módulo da iniciativa common.js. |