Os scripts enviados com o cFos PNet podem mostrar como se implementam funções de servidor com Javascript. Eles foram projetados para serem usados via scripting do navegador pelo lado do cliente, como jQuery. Por convenção, scripts do lado do servidor usam a extensão .jss enquanto scripts do lado do cliente usam a extensão .js. Isto é, cFos PNet *executa* arquivos .jss, enquanto envia arquivos .js para o navegador.
Você pode usar script debugging com o Visual studio ou Visual Web Developer. Para o script debugging você necessita de uma versão do Visual studio ou Visual Web Developer com suporte a debugging remoto, ie. Visual studio Professional Edition. Para habilitar script debugging, defina a chave enable_script_debugging=1 na seção [param] do arquivo GLOBAL.INI na pasta c:\programdata\cFos\cFosPNet .
Se você não tiver um script debugger instalado, defina isto em 0. Senão scripts podem travar em algumas máquinas. Você também pode carregar cfospnet.exe com a linha de comando -enable_script_debugging ou -esd para habilitar script debugging no início do programa.
Na pasta pub existe uma sub-pasta users com uma sub-pasta para cada usuário que detém uma conta no servidor cFos PNet. A senha do usuário e outros dados de perfil estão armazenadas numa lista de hash, chamada de PROFILE.TXT. Isto permite acessos rápidos e em cache para a autenticação HTTP incorporada no cFos PNet. Na pasta pública também existe uma sub-pasta www com uma sub-pasta para cada usuário. Esta pasta contém arquivos baixáveis desse usuário. O script file_op.jss também permite ao usuário fazer o upload de arquivo àquela pasta.
Os scripts realizam autenticação de acordo com as respectivas configurações .htaccess. Para isso necessitará de credenciais de usuário apropriadas para utilizar os diretórios seguintes.
Aqui está uma breve descrição dos scripts. Você deve dar uma olhada no código-fonte para ver como funcionam. | |
makedir2.jss | Se não houver arquivos index.htm ou index.html presentes no diretório requisitado, cFos PNet inicia este script para gerar uma listagem de diretórios. O script usa o FileSystemObject para coletar informações sobre o conteúdo do diretório corrente. Ele então carrega um template XML, analisa-o e gera uma página HTML a partir do conteúdo do diretório e dos snippets fornecidos pelo XML. Para mudar o visual ou a funcionalidade da listagem de diretórios, modifique o template XML. O arquivo resultante HTML tem links para arquivos básicos de manutenção nele. Como administrador, você pode logar usando autenticação HTTP e renomear, deletar arquivos e pastas, fazer upload de arquivos bem como criar novas pastas. Isto é suportado pelo jQuery no lado do cliente, que é basicamente usado para enviar convenientemente requisições Ajax para o cFos PNet. O script do lado do servidor file_op.jss realiza a necessária autenticação HTTP e lida com operações de arquivo. |
file_op.jss | Realiza operações de arquivo de acordo com a autenticação acima. Operações de arquivo são rename, delete, mkdir para criar uma pasta e realizar uploads. Uploads tipicamente necessitam de autenticação, porque o navegador sempre envia primeiro o arquivo inteiro subido para o servidor e depois pega a informação de autenticação, então ele enviaria o arquivo duas vezes. Para dar ao navegador informações de autenticação primeiro, o script file_op.jss suporta uma operação de upload "pre-flight". O navegador, usando uma requisição ajax, pede ao servidor a resposta de autenticação HTTP (401) e então automaticamente usa-a para o upload de fato. Upload é lidado pela função upload.jss, que usa o objeto de arquivo do cFos PNet's para permitir o upload de arquivos com um tamanho arbitrário. |
user_op.jss | Realiza funções básicas de administração de usuário: create, delete, reset password e list. O usuário admin é necessário para autenticação. |
list_op.jss | Já que a lista de hash tem uma importante tarefa no cFos PNet, list_op.jss provê operações de lista básicas para requisições Ajax. A mesma esquemática de autenticação como descrita acima é realizada. Isto é: Dependendo do local do script, o usuário - para qual a autenticação é requisitada - é escolhido. A autenticação é feita definindo a diretiva PNet_limitPut em .htaccess. list_op.jss oferece as seguintes operações: get Pega uma lista de valores na lista de hash. set Define uma lista de chaves para uma lista de valores. save Salva um instantâneo no disco. erase Apaga uma lista de chaves. clear Apaga todas as chaves. remove Deleta a lista da memória / disco. size Retorna o tamanho da lista. list Lista todos os elementos na lista de hash. O Ajax em dyndns.htm faz uso dessas operações para instalar as informações de configuração DynDNS. |
dyndns.jss | Realiza o registro ou desregistro do DynDNS, usando os dados de configuração na lista de hash dyndns.txt na pasta privada. Pode ser usado no início do servidor e em seu encerramento (ver capítulo 1). |
get_connections.jss | Usado para exibir as conexões HTTP atuais. HTTP é feito via TCP. Para agilizar as requisições HTTP, os navegadores tentam reusar as conexões TCP para requisições HTTP. A requisição HTTP efetiva contém apenas uma breve mensagem e uma resposta. Depois disso, em alguns segundos o navegador fecha a conexão TCP. Então você pode ver um usuário apenas por um breve período. Se a autenticação for bem-sucedida, o nome do usuário também é retornado com o endereço IP do usuário. |
stretch.jss | Pela razão de que é sempre um fardo para o webmaster redimensionar imagens para o formato usado na página web, nós implementamos um pequeno script, que usa o objeto de imagem do cFos PNet (GDI+). Ele usa um arquivo e um parâmetro de w (largura) e h (altura) no query string da URL. Se suas imagens são de um tamanho arbitrário, recomenda-se usar apenas um parâmetro para preservar o aspect ratio da imagem. makedir2.jss usa links para este script para exibir imagens de miniatura armazenadas na pasta atual. |
utils.jss | Coleção de funções de utilitários para simplificar scripting do lado do servidor. Oferece a seguinte funcionalidade: - empacota o objeto web server e suas funções. - Extende o objeto String Javascript com algumas funções úteis. - Realiza avaliações de parâmetros de script tanto do query string quanto do "form data" usado com POST. - Carrega, salva e envia (via mail) pequenos arquivos. - datas rfc 1123 como usadas em cookies. - cookies. - Uma simples função de transformação XML. Se você usar o cFos PNet para projetos maiores, talvez queira empacotar unidades funcionais em módulos, ao invés de um simples arquivo de script. cFos PNet oferece suporte para a especificação em módulos da iniciativa common.js . |