Making IT simple

Open Source

http D3

The ultimate PICK web server
Download | Get support 

Oservidor http-pick não foi desenvolvido para ser uma solução autônoma para intranets. Essa versão não dispõe de recursos de segurança, nem do envio de arquivos de imagens. O servidor não é seguro se pensarmos que qualquer aplicação mal comportada poderá trava-lo.


No entanto, o servidor http-pick oferece recursos bastante razoáveis para o desenvolvimento rápido de aplicações gráficas, usando apenas o Pick-Basic.


O sistema baseia-se em chamadas a funções C %socket, %accept, %bind, %listen, %read, %write, e %close disponíveis ao basic das versões Pick para Unix. O programa principal, “httpd”, atende as solicitações de softwares que se comuniquem através do protocolo http.



Padrão usado nos exemplos:


Substitua as palavras entre o sinal de menor e maior, pelos valores da sua configuração local:

<host> para o IP do host que hospeda o pick (ex: 173.173.10.4)

<porta> pelo endereço da porta TCP escolhida para escutar as conexões. (ex: 1028)

<recurso> nome do recurso disponibilizado para acesso



Instalação:


  1. Em tcl do account dm baixe o account SAC (não é necessário criar nenhum usuário)

  2. Entre no account sac


Para rodar o serviço http, em tcl digite:

:httpd

ou

:httpd –l<host>:<porta> –d


exemplo:

:httpd –l173.173.10.4:1028



O parâmetro –l173.173.10.4:1028 indica o host local e em que porta o processo “escutará” as solicitações dos browsers. Se omitido, será assumido o endereço IP armazenado no arquivo dm,hosts, lido através do valor presente no atributo 1 do item “localhost” (dict dm,hosts).


O parâmetro –d permite depurar as conexões. Toda requisição feita pelo browser, será mostrada na tela.

Testando o serviço:


Para ativar o serviço, em tcl do account sac digite:

:Httpd


Para testar o serviço digite no campo address do browser . Na tela do browser deverá ser apresentada uma página html como a abaixo:

Clicando-se no hyperlink login aparecerá uma janela solicitando autenticação do usuário. O usuário após identificar-se será encaminhado a sua página padrão (recurso inicial – ver apêndice D).

Como desenvolver uma página de formulário para ser analisada, processada e respondida diretamente do pick ao browser? O conceito é simples e baseia-se na estrutura padrão de uma subrotina pick-basic. A subrotina em questão, será solicitada duas vezes pelo browser. A primeira para definir o formulário que será apresentado pelo browser. A segunda para processar os valores preenchidos pelo usuário e retornar a página de resposta ou de erro.


Como a subrotina identifica em qual instante ela se encontra?


Pseudocódigo:



Subrotina(formulário,resposta,erro)
se formulário<1> = “” então
    definir formulário
senão
    processar dados do formulário
    se houve erro então
        erro = “Mensagem de erro”
    senão
        [gerar página html de resposta | gerar registro de resposta caso haja cenário de resposta]
    fim se
fim se
formulário<11> = modelo html para cenário da página formulário
formulário<12> = modelo html para cenário da página de erro
formulário<13> = modelo html para cenário da página de resposta a um processamento bem sucedido ou um recurso (novo formulário)
formulário<16> = "preserve" - força a preservação de valores nos campos.
retorna


Criando um formulário:

Vá para o account dm (logto dm) e crie a subrotina sform1 no arquivo bp. Compile-a:


Sform1


subroutine(form,parm,erro)
if form<1>=”” then
    form<1> = “Nome do arquivo”:@vm:”Nome do item”
    form<2> = 25:@vm:25
    form<3> = “dm,md,”:@vm:”system-coldstart”
    form<10>= "Apresentacao de Itens":@vm:"Exemplo 1:Arial:3:#550000:#00ffff"
end
return




Associe a subrotina a um recurso:


:up sac,aac002, /teste [ENTER]
tipo
alvo
acesso livre
usuário proprietário
grupo proprietárioReturn


  1. No campo tipo informe: “form” (sem aspas)

  2. No campo alvo informe: “dm,bp, sform1” (sem aspas)

  3. No campo acesso livre informe: “S” (sem aspas)

  4. Tecle Ctrl-X seguido de F (para salvar o registro.


Digite no browser “http://<host>:<porta>/teste “. Se tudo estiver OK, será apresentado na área de trabalho do browser a página de um formulário com os campos “Nome do Arquivo” e “Nome do item”, ambos aceitando 25 caracteres. Também será apresentado como título a frase “Apresentação de itens” e “Exemplo 1”


No exemplo, verificamos que se o atributo 1 do item form (formulário) não contér valor, os campos e o título do formulário serão definidos. O Servidor http analisará a variável form e gerará um formulário html para ser retornado ao browser.


Processando um formulário:

Inclua o código em negrito na rotina sform1.



subroutine(form,parm,erro)
if form<1>=”” then
    form<1> = “nome do arquivo”:@vm:”nome do item”
    form<2> = 25:@vm:25
    form<3> = “dm,md,”:vm:”system-coldstart”
    form<10>= "apresentacao de itens":@vm:"exemplo 1:arial:3:#550000:#00ffff"
end else
    filename=form<3,1>
    itemname=form<3,2>
    open filename to filedata then
        read parm from filedata,itemname then
            parm = “<html><head></head><body>”:parm:”</body></html>”
        end else
            erro = “registro “:itemname:” não encontrado”
        end
    end else
        erro = “arquivo “:filename:” nao encontrado”
    end
end

return


Compile a subrotina. No browser, pressione o botão enviar (do formulário)

Nesse caso, se o atributo 1 do item form contiver algum valor, os dados do formulário deverão ser consistidos e processados. Caso haja algum erro na consistência ou no processamento, será atribuído à variável erro a mensagem que será retornada ao browser. Se não houver erros, uma página html será gerada e atribuída à variável parm



Nota

Existem cinco tipos de campos que podem ser gerados pelo servidor. No atributo 4, pode-se definir a aparência de cada um dos campos. Todo campo (atr 1) que não tenha um multi-valor correspondente no atributo 4 será formatado como caixa de texto padrão. Em nosso exemplo o atr 4 está vazio e portanto todos os campos serão gerados como caixa de texto. Cada tipo de campo deve ser usado para uma situação específica:

Encadeando formulários:

Quando deseja-se que ao processar um formulário, o servidor retorne um outro formulário ao browser, deve-se especificar no campo atr 13 do registro form o recurso cujo alvo seja o formulário escolhido. O atributo 16 de form solicita que o servidor preserve os dados do primeiro formulário para ser utilizado no segundo. O nome dos campos (atr 1) do primeiro formulário será armazenado no atr 17 da matriz dinâmica form e os valores correspondentes no atr 18 de form.

Altere o código do programa sform1 para que se pareça com esse:


dm,bp, sform1:
subroutine(form,parm,erro)
if form<1>=”” then
    form<1> = “nome do arquivo”:@vm:”nome do item”
    form<2> = 25:@vm:25
    form<3> = “dm,md,”:vm:”system-coldstart”
    form<10>= "apresentacao de itens":@vm:"exemplo 1:arial:3:#550000:#00ffff"
end else
    filename=form<3,1>
    itemname=form<3,2>
    open filename to filedata then
        read parm from filedata,itemname then
            parm = “<html><head></head><body>”:parm:”</body></html>”
        end else
            erro = “registro “:itemname:” não encontrado”
        end
    end else
        erro = “arquivo “:filename:” nao encontrado”
    end
end
form<13> = “/teste2”
form<16> = “preserve”
return

Compile a subrotina.


Crie o segundo formulário sform2. A subrotina abaixo (dm,bp, sform2) recebe os dados do formulário sform1 (atr 17 e 18) e inverte a ordem de apresentação dos campos.


dm,bp, sform2:

subroutine(form,parm,erro)
form<1,1>=form<17,2>
form<1,2>=form<17,1>
form<2,1>=25
form<2,2>=25
form<3,1>=form<18,2>
form<3,2>=form<18,1>
return


Associe a subrotina ao recurso /teste2:


:up sac,aac002, /teste2 [ENTER]
0001 tipo
0002 alvo
0003 acesso livre
0004 usuários com acesso ao recurso
0005 grupos com acesso ao recurso


No campo tipo informe: “form” (sem aspas)

No campo alvo informe: “dm,bp, sform2” (sem aspas)

No campo acesso livre informe: “S” (sem aspas)


Salve o item


Tente reenviar os dados. Deverá ser apresentado um formulário com os campos invertidos.

Pode-se definir códigos html como cenário para a página de formulário, de resposta ou de erro. Assim, é possível deixar o site mais atraente e personalizado.


1 - Modelo para página de formulário

Usando um editor como o front-page, crie sua página padrão.

Insira no local destinado ao formulário a palavra form entre chaves. Grave-a com o nome de hform1.html e transfira-a para o arquivo dm,bp, com mesmo nome.


Exemplo da página hform1.html gerada no front-page:

Hform1.html
<html>
<head>
<title>Teste de página</title>
</head>
<body>

Esse é um teste<br>
de inserção de formulário em<br>
uma página html já pronta<br>
O formulário será inserido aqui:
{form}

E a página continuará normalmente....
</body>
</html>


Inclua o código em negrito na rotina sform1 e compile-o:

Subroutine(form,parm,erro)
If form<1>=”” then
    form<1> = “Nome do arquivo”:@vm:”Nome do item”
    form<2> = 25:@vm:25
    form<3> = “dm,md,”:vm:”system-coldstart”
    form<10>= "Apresentacao de Itens":@vm:"Exemplo 1:Arial:3:#550000:#00ffff"
end else
    Filename=form<3,1>
    Itemname=form<3,2>
    open filename to filedata then
        Read parm from filedata,itemname then
            parm = “<html><head></head><body>”:parm:”</body></html>
        end else
            erro = “Registro “:itemname:” não encontrado”
        end
    end else
        Erro = “Arquivo “:filename:” nao encontrado”
    end
end
Form<11> = “dm,bp, hform1.html”
Form<13> = “/teste2”
Form<16> = “Preserve”
return


No browser ao pressionar o botão REFRESH deverá ser apresentado uma página html com nosso formulário inserido em seu contexto.

2 - Modelo para página de resposta ao processamento bem sucedido:

Quando se escolhe uma página modelo para resposta de um processamento bem sucedido, a variável parm não será a própria página html de resposta mas sim uma matriz dinâmica (item), contendo os valores que serão substituídos na página html modelo.


Exemplo da página hresp1.html :

Hresp1.html
<html>
<head>
<title>Teste de página</title>
</head>
<body>
esse é um teste de retorno de valores <br>
Conteúdo do atributo 1 de <i>parm</i><br>{1}<br><br>
Conteúdo do atributo 2 de <i>parm</i><br>{2}
</body>
</html>



Transfira a arquivo acima como um item em dm,bp,


Altere a subrotina sform1 para o código abaixo:

Subroutine(form,parm,erro)
If form<1>=”” then
    form<1> = “Nome do arquivo”:@vm:”Nome do item”
    form<2> = 25:@vm:25
    form<3> = “dm,md,”:vm:”system-coldstart”
    form<10>= "Apresentacao de Itens":@vm:"Exemplo 1:Arial:3:#550000:#00ffff"
end else
    Filename=form<3,1>
    Itemname=form<3,2>
    open filename to filedata then
        Read parm from filedata,itemname then
            parm = “<html><head></head><body>”:parm:”</body></html>
        end else
            erro = “Registro “:itemname:” não encontrado”
        end
    end else
        Erro = “Arquivo “:filename:” nao encontrado”
    end
end
Form<11> = “dm,bp, hform1.html”
form<13>= “dm,bp, hresp1.html
Form<16> = “Preserve”
return



Após pressionar o botão submit, a página html retornada não apresentará mais todos os atributos do registro dm,md, system-coldstart, mas apenas o terceiro e quinto.

3 - Modelo para página de resposta de erro:

Seguindo o mesmo princípio do “modelo para formulário”, a “página de erro” deverá conter a palavra err entre chaves, no local destinado às mensagens de erro. Se a variável err for uma matriz dinâmica, o conteúdo de cada atributo corresponderá a uma linha de texto.


Exemplo da página herro1.html gerada no front-page:


Herro1.html
<html><head><title>Teste de página</title></head><body>
 esse é um teste<br>
 de inserção de mensagens de erro em<br>
 uma página html já pronta<br>
 A mensagem será inserida aqui: {err} <br>
 E a página continuará normalmente....
</body></html>

Transfira o arquivo acima para dm,bp,

Inclua o código em negrito:

Sform1
Subroutine(form,parm,erro)
If form<1>=”” then
  form<1> = “Nome do arquivo”:@vm:”Nome do item”
  form<2> = 25:@vm:25
  form<3> = “dm,md,”:vm:”system-coldstart”
  form<10>= "Apresentacao de Itens":@vm:"Exemplo 1:Arial:3:#550000:#00ffff"
end else
  filename=form<3,1>
  itemname=form<3,2>
  open filename to filedata then
   read i$ from filedata,itemname then
   parm<1> = “Terceiro atributo de “:filename:” “:itemname:” “:i$<3>
   parm<2> = “Quinto atributo de “:filename:” “:itemname:” “:i$<5> end else
   erro = “Registro “:itemname:” não encontrado”
  end
 end else
  erro = “Arquivo “:filename:” nao encontrado”
 end
end
form<11>= “dm,bp, hform1.html”
form<12>= “dm,bp, herro1.html
form<13>= “dm,bp, hresp1.html”
Return

Para executar corretamente a página, pressione o botão REFRESH do browser.


Nota: Informe um arquivo ou item inválido como valor para os campos “Nome do arquivo” ou “Nome do item”

SAC – Sistema de Controle de Acesso.


Administração do dados do sistema:

Através de um site dirigido, é possível ao administrador do SAC, efetuar a inclusão de usuários, grupos e recursos.

Novos usuários poderão requisitar a inclusão através de um formulário de solicitação (recurso /solicitacao). O sistema necessita da disponibilidade de um servidor SMTP (envio de mensagens) para que possa encaminhar por correio eletrônico a requisição do novo usuário ao administrador. Esse, analisará o pedido, e automaticamente enviará a resposta ao solicitante. No caso de uma resposta positiva, o sistema envia via e-mail a identificação para login acompanhado da senha de acesso. A senha é gerada pelo sistema, e nem o administrador tem conhecimento da senha gerada.

1) Formulário de cadastramento de usuários no sistema de controle de acesso:

2) usuário solicitante acessa o site http://<host>:<porta>/solicitacao. O site apresentará o formulário de cadastro, que deverá ser preenchido pelo usuário.

3) Após o envio, os dados serão enviados ao administrador do sistema via e-mail. O endereço do destinatário está arquivado no registro: sac,aacaux, notificacao e o texto enviado sac,aacaux, txtsolicitacao. Esse endereço não representa necessariamente o endereço de e-mail do usuário administrator. Porém, para ter acesso ao formulário de liberação, o usuário deverá ter permissão de administrador (pertencer ao grupo admin).

4) Todo: descrver {página de confirmação de postagem aqui}

5) No e-mail de solicitação, o administrador poderá clicar no hyperlink para proceder com a liberação.

6) Se no campo acesso não for escolhido a opção SIM, não será executado o processo de geração de senha Após a conferência ou alteração dos dados do usuário, o sistema gerará a notificação que será enviada ao usuário. Caso tenha sido gerado uma senha (resposta para campo acesso = SIM) a notificação enviada será o texto sac,aacaux, txtliberacao. Caso a senha não tenha sido gerada, a notificação enviada será o texto sac,aacaux, txtnegação.

Texto para acesso liberado

(sac,aacaux, txtliberacao)


From: notificacao@dominio.com.br

Subject: Solicitacao de Acesso


Caro zoqui - zoqui@operamail.com



A solicitacao de senha para acesso a

nossos servidores foi aceita.


As informacoes necessarias para seu login sao:


ID: zoqui

Senha: 037202


Mantenha a senha sobre sigilo. As operacoes realizadas, sob esse login/senha serao atribuidas ao responsavel pelo

login.

Texto para acesso negado

(sac,aacaux, txtnegacao)


From: notificacao@dominio.com.br

Subject: Solicitacao de Acesso


Caro zoqui - zoqui@operamail.com



A solicitacao de senha para acesso a

nossos servidores foi negada.


Motivo: olha meu caro, nao vai dar.


Em caso de duvidas envie um e-mail para

zoqui@operamail.com.br


Obrigado



Apêndice A - Descrição da estrutura da variável form.


FORM

  • Atr 1 Nome do campo1 ] nome do campo 2 ] nome do campo 3 ...
  • Atr 2 Tamanho campo 1] tamanho campo 2 ] tamanho campo 3...
  • Atr 3 Valor do campo 1]valor do campo 2 ] valor campo 3..
  • Atr 4 Tipo do campo 1] tipo do campo 2] tipo do campo 3...
  • Atr 5 ao 7 Reservado para futuras implementações nas rotinas de controle de campo
  • Atr 8 Nome de variável 1] nome de variável 2] nome de variável 3
  • Atr 9 Valor da variável 1]valor da variável 2]valor da variável 3
  • Atr 10 Título linha 1] titulo linha 2] título linha 3:fonte:tamanho:cor letra:cor fundo
  • Atr 11 Página html modelo para o formulário
  • Atr 12 Página html modelo para retorno de erro
  • Atr 13 Página html modelo para retorno da resposta ou Subrotina do próximo formulário
  • Atr 14 Variáveis Definidas pelo browser
  • Atr 15 Valor das variaveis definidas pelo browser
  • Atr 16 String “preserv” - Se presente, preservará o conteúdo dos campos do formulário preenchido para uso no próximo formulário encadeado.
  • Atr 17 Nome do campo1 ] nome do campo 2 ] nome do campo 3 ...(PRESEVADO}
  • Atr 18 Valor do campo 1]valor do campo 2 ] valor campo 3.. (PRESEVADO)


DICA: Mais de um formulário pode ser especificado no atributo 12 e 13. Separe cada formulário por uma barra invertida “\”:

Exemplo: dm,bp, pagina.html\vendas,bp, pagina.htm\operacoes,bp, resp.html

Porém, apenas um dos formulários será retornado ao browser. Para especificar qual formulário que será retornado, a subrotina deverá retornar na variável de resposta a posição do formulário desejado conforme o formato::

parm = “2\dados....”

Apêndice B – Definição dos tipos de campos


Através do atributo 4 do item form pode-se definir a aparência de cada um dos campos do formulário. A aparência de um campo, está ligada a sua funcionalidade e portanto deve ser usada adequadamente para que tenha sentido.

Tipo de campo

Chave no atr 4

Opção permitida

Exibição

Text

“Text”, “TXT” ou “” (NULO)

“password” ou “pass” ou “pasw”

Entrada de texto padrão. Se especificado a opcao “password”, o texto digitado será exibido representado por “*”

Radio

“Radio” ou “RAD”

Posição

Exibe botões de opção. Serve para seleções mutuamente exclusivas. Se for especificado uma posição, o botão correspondente será previamente marcado.

Checkbox

“checkbox” ou “check” ou “CHK”

Posição,posição,...

Exibe caixa que pode ser marcada para indicar seleção de itens. Permite mais de uma escolha. Se for especificado uma ou mais posições (entre virgulas), as caixas correspondentes serão previamente marcadas

Hidden

“Hidden” ou “HID”


Permite o armazenamento de variáveis que podem ser usadas para manter o contexto entre formulários subsequentes.

Select

“Select” ou “SEL”

“Multiple:posicao” ou multi:posição,posição”

Cria lista de seleções alternativas. Se especificado a opcao “Multiple” permite que o usuário selecione mais de um item por vez. Se for especificado uma ou mais posições (entre virgulas), os itens serão previamente marcados.

As opções são especificacadas após a definição do tipo, através do sinal de dois-pontos.

Como exemplo, será analisado a confecção de um formulário com 3 campos.


form<1> = “Codigo”:@vm:”apresentacao”:@vm:”incluir”:@vm:”Contem”

form<2> = 10:@vm:35:@vm:14:@vm:35

form<3> = “Axe”:@vm:”50ml”:@sm:”100ml”:@vm:”Sim”:@sm:”Nao”:@vm:”Alcool Etilico”:

@sm:”Agua”:@sm:”Eter”:@sm:”Perfume”:@sm:”Glicerol”

form<4> = “text”:@vm:”checkbox:1,2”:@vm:”radio:2”:@vm:”Select:Multi:1,3”

Os campos que permitem múltipla seleção (select e checkbox) retornará os valores separados em campos subvalorados (separador ASCII 252)


Variável form resultante:

form<1> = Codigo]apresentacao]incluir]Contem

form<2> = 10]35]14]35

form<3> = Axe]50ml\100ml]Nao]Alcool Etilico\Eter


]” = ASCII 253

\” = ASCII 252

Apêndice C – Definição de Recursos


Na versão 1.0 do servidor http, toda requisição feita pelo cliente (browser) era associada a um registro de um arquivo pick. Dessa forma, uma URL válida para acesso ao servidor seria:


http://<host>:<porta>/account,arquivo,/item_id.


Note que desta forma, para que o servidor WEB possa distinguir uma página html de uma subrotina de formulário era necessário a análise do código fonte do registro. Da mesma forma, no modelo acima para se implantar um esquema mínimo de segurança, seria necessário associar as permissões a item ou a arquivo. Um outro problema era a falta de conformidade com o padrão adotado pelos desenvolvedores. Apesar da RFC1945 – (3.2.2 http URL) definir o esquema de localização de recursos de rede via protocolo HTTP como:


http_URL “http:” “//” host [ “:” port ] [ abs_path ]


Para que pudesse, sem a análise do código fonte, ser respeitado o tipo de tratamento que deve ser dado á uma página, a versão 2.0 implementa o conceito de acesso a recurso e não a itens. A URL fornecida ao browser deverá conter um recurso cadastrado e não mais o nome do account,arquivo, onde a página/subrotina alvo se encontra.


Um recurso corresponde a um registro do arquivo sac,aac002,. Sua chave (item_id) deve começar com o caracter “/” seguido do nome do recurso. Não será possível cadastrar recursos sem a precedência do caracter “/”. Pode-se estruturar hierarquicamente os recursos, possibilitando a atribuição de permissão a usuários ou grupos:

Recurso: id: /vendas/regiãoleste/resumo.html

tipo: html

alvo: vendas,html, resumoleste.html

livre: n

usuarios: osmar

maria

grupos: vendasleste


Recurso: id: /vendas/regiaosul/resumo.html

tipo: html

alvo: vendas,html, resumosul.html

livre: n

usuários: maria

grupos: vendassul


Recurso: id: /vendas

tipo: sac

alvo:

livre: n

usuários: maria

grupos: gerenciavendas


No exemplo, o primeiro e o segundo recurso, estão associados a relatórios de vendas específicos de cada região. Usuários que não pertençam ao grupo vendasleste não terão acesso ao recurso /vendas/regiaoleste/resumo.html (exceto Maria e Osmar), e usuários que não pertençam ao grupo vendassul não terão acesso ao recurso /vendas/regiaosul/resumo.html (exceto maria). Porém usuários que pertençam ao grupo gerenciavendas terão acesso a ambos os recursos, pois os mesmos encontram-se abaixo da hierarquia de /vendas. Recursos utilizados apenas para controle de acesso, não necessitam de valor no campo alvo.


Apêndice D – Definição de usuários e grupos de usuários


Para que um recurso protegido (campo livre=N) seja acessado, é necessário efetuarmos o cadastro dos usuários que terão acesso a tal recurso.


Usuários correspondem a registros do arquivo sac,aac001, e grupos a registro do arquivo sac,aac003,

Quando em um usuário é inserido a referência de um grupo inexistente, esse grupo é automaticamente criado no arquivo sac,aac003,. O contrário é verdadeiro: quando em um grupo é inserido a referência de um usuário inexistente, esse usuário é automaticamente criado no arquivo sac,aac001,


O usuário administrator e os grupos admin e usuarios não podem ser apagados, pois são valores padrão para o sistema.


Pode-se utilizar o update processor ou o Sistema de Controle de Acesso (SAC) para inserir um novo usuário ou grupo de usuários.

:up aac001 administrator

Manutencao de Arquivos - Registro: administrator Arquivo: aac001
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+~~~~~~~~~~~~~~~~~~~~~~~~~
^X+F Grava o item e abandona a edicao |
^X+X Abandona a edicao sem gravar o item | ^B Sobe um campo
^X+O Abandona a edicao apagando o item |
^R Liga/Desliga Insercao de caracteres | ^J Esquerda ^K Direita
^L Deleta caracter |
^G Fim do campo | ^N Desce
^P Avanca Pagina |
^V Insere valor como multi-valor |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+~~~~~~~~~~~~~~~~~~~~~~~~~
aac001 'administrator' size = 22
E-mail: zoqui@operamail.com
Empresa: zAoCqMuE
Telefone: 878787878
Contato: administrator
Senha: FFF65BCO
Grupos: usuarios

admin
Recurso inicial /sacadmin

tela de inclusão de usuários através do UP.

Apêndice E – Definição dos arquivos e suas estruturas:


Sac,aac001,

Sac,aac002,

Sac,aac003,

Sac,aacaux,

Txtsolicitacao

Txtliberacao

Txtnegacao


Pendências:


1. Documentação: Falar sobre o sistema sac (controle de acesso e inclusao de novos usuários)

1.1. Documentação: falar sobre os itens do arquivo aacaux (default)

1.2. Documentação: processo de cadastramento de usuário

1.3. documentação: acrescentar tela de cadastro dos usuários

1.4. código: No formulário de liberação de acesso colocar a opção de não liberar.

1.5. código: usuário administrator deve Ter em seu e-mail o texto [notificação] para ser substituído pelo e-mail cadastrado no item sac,aacaux, notificação,

2. Fazer pagina inicial com links

2.1. para a documentação

2.2. acesso aos recursos cadastrados

2.3. cadastro de novo usuário

3. Descrever a estrutura de cada arquivo

3.1. Sac,aac001,

3.2. Sac,aac002,

3.3. Sac,aac003,

3.4. Sac,aacaux, notificacao

3.5. Sac,aacaux, default

3.6. Sac,aacaux, txtnotificacao

3.7. Sac,aacaux, txtsenha

4. Implementar campo Recurso inicial no arquivo aac001

4.1. Implementar no formulário fac002 campo: recurso inicial (selecao do aac002)

5. Criar página de login

6. Criar rotina de empilhamento via socket para processo multi-usuário

7. Verificar e corrigir: ativação default não está funcionando (httpd)

8. Implementar campo tipo SAC no aac002.

9. Definir tipos de alvo nos recursos

9.1. Form – subrotina que retorna parametros para confecção de formulários.

9.2. Html – página html armazenada em arquivo pick

9.3. Sub – subrotina que gera página html como retorno mesmo acionada ativada pelo comando GET. (Para uma subrotina retornar uma página html pronta na variavel RESP, é necessário ativa-la pelo método POST (envio de formulário))

9.4. Sac – Recurso usado apenas para dar permissão a um grupo.