|
|
|

|

|
Dicas
|

|
ASP - Active Server Page (Miscelâneas)
|
|
 |
Título da Dica: Criação de Directorias Virtuais Através das ASP
|
 |
|
|
Postada em 23/10/2003 por ^HEAVY-METAL^
A criação de directorias virtuais poderá ser bastante util para alguns projectos nos quais a nossa aplicação fornece um "cantinho" para alguem que se registe na nossa Base de Dados. Ora esse mesmo cantinho poderá ser uma directoria virtual, que irá redireccionar, através do nosso IIS, para uma página especifica, com os parametros que quisermos, por exemplo o ID da pessoa ou empresa.
Chega de treta e bute lá!
Antes de mais e devido aos intervenientes, deveremos ter cuidado com a segurança, pois neste exemplo a autenticação não será feita por código, talvez num próximo artigo.
1. Teremos pois que criar um utilizador no nosso sistema (adiante referido como ZEMANEL), pertencente ao grupo dos ADMINISTRADORES, para que se concretize o nosso objectivo.
2. Agora imaginando que teremos a raiz do nosso site em c:\Inetpub\wwwroot, iremos criar uma sub-directoria chamada PROJECTOVIRTUAL na qual apenas o IUSR_nomepc(o "utilizador" do IIS), voçês mesmos e o nosso ZEMANEL terão acesso(total).
3. Agora iremos criar um directorio VIRTUAL (este o unico criado á mão) e que no nosso exemplo chamaremos mesmo VIRTUAL e que estará "direccionado para a nossa directoria PROJECTOVIRTUAL". Neste iremos ás propriedades e, no separador "Autentication methods", só iremos activar o "Integrated Windows Autentication".
Agora passo a descrever o conteudo dos ficheiros pois poderão fazer o download e testar.
Ficheiro: FORM.HTM
Apenas uma página HTML com um FORM e respectivos campos com valores que iremos usar para definir/criar os nossos virtuais; é apenas uma página para melhor identificarmos o que vamos usar. Quando se correr esta página de outro pc será necessária a validação onde iremos colocar o nosso ZEMANEL e respectiva password.
<html> <head> <title>Criação de directórios virtuais</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body bgcolor="#FFFFFF" text="#000000"> <form name="form1" method="post" action="faz_virtual.asp"> <table width="600" border="1" align="center"> <tr> <td colspan="3">Identificação do VIRTUAL:</td> </tr> <tr> <td width="27%">Nome aplicação virtual:</td> <td colspan="2"> <input type="text" id=aplicacao name="Aplicacao" size="30" value="meu_virtual" > atenção aos caracteres proibidos</td> </tr> <tr> <td width="27%">Caminho Fisico</td> <td colspan="2"> <input type="text" name="Path" value="C:\Inetpub\wwwroot\" size="50"> </td> </tr> <tr> <td width="27%">Redireccionamento:</td> <td colspan="2"> <input type="text" name="HttpRedirect" value="http://www.pt4free.net" size="50"> </td> </tr> <tr> <td width="27%">Default Document:</td> <td colspan="2"> <input type="text" name="DefaultDoc" value="Default.asp, Index.asp, Index.htm" size="40"> (separar por virgulas) </td> </tr> <tr> <td width="27%">Direitos:</td> <td width="27%">TRUE</td> <td width="46%">FALSE</td> </tr> <tr> <td width="27%">Script Access</td> <td width="27%"> <input type="radio" name="AccessScript" value="True" checked> </td> <td width="46%"> <input type="radio" name="AccessScript" value="False"> </td> </tr> <tr> <td width="27%">Access Read</td> <td width="27%"> <input type="radio" name="AccessRead" value="True" checked> </td> <td width="46%"> <input type="radio" name="AccessRead" value="False"> </td> </tr> <tr> <td width="27%">EnableDirBrowsing</td> <td width="27%"> <input type="radio" name="EnableDirBrowsing" value="True"> </td> <td width="46%"> <input type="radio" name="EnableDirBrowsing" value="False" checked> </td> </tr> <tr> <td width="27%">EnableDefaultDoc</td> <td width="27%"> <input type="radio" name="EnableDefaultDoc" value="True" checked> </td> <td width="46%"> <input type="radio" name="EnableDefaultDoc" value="False"> </td> </tr> <tr> <td width="27%">DirBrowseShowDate</td> <td width="27%"> <input type="radio" name="DirBrowseShowDate" value="True" checked> </td> <td width="46%"> <input type="radio" name="DirBrowseShowDate" value="False"> </td> </tr> <tr> <td colspan="3">'Haverá muitas mais.... </td> </tr> <tr align="center"> <td colspan="3"> <input type="submit" name="submete" value="Criar..."> </td> </tr> </table> </form> </body> </html>
Ficheiro: FAZ_VIRTUAL.ASP Página que irá trabalhar os valores submetidos pelo form.htm.
<%OPTION EXPLICIT
If Request.ServerVariables("REQUEST_METHOD")="POST" then
Dim fisico, virtual, content Dim vErr, vRoot, vDir, vWebsvc, vClassDef, Propriedades, i, tmpCoisa
'Recolha das variaveis do form para usar na nossa função fisico = Request.Form("Path") virtual = Request.Form("Aplicacao") content = Request.Form("HttpRedirect")
vErr = Cria_virtual(fisico, virtual, content)
If vErr = "" then Response.write "<BR><BR><BR><CENTER>Directoria virtual foi criada com sucesso!!!</CENTER>" call mostra_virtual(virtual) Else Response.Write vErr End if
Else
Response.AddHeader "REFRESH", "0;URL=""form.htm""" Response.End
End if
Function Cria_virtual(dir_fisico, dir_virtual, content_redirect)
On error resume next 'Especificar o default web site Set vRoot = GetObject("IIS://LocalHost/W3SVC/1/Root")
'Criar Virtual Directory 'Param 1 e o nome da class 'Param 2 e o nome do objecto - Ex. "meu_virtual" Set vDir = vRoot.Create("IIsWebVirtualDir",dir_virtual)
With vDir 'Atribuir Propriedades .AccessRead = "true" 'Se quisermos + tarde trabalhar as applications settings então 'temos que ter atenção que o virtual tem de ter o mesmo nome que o approot e appfriendlyname .AppRoot = "/LM/W3SVC/1/Root/" & dir_virtual .AppFriendlyName = dir_virtual 'Caso seja Directoria fisica .Path = dir_fisico 'Caso seja redirect para url .HttpRedirect = content_redirect 'Haverá muitas mais.... .AccessScript = Request.Form("AccessScript") .DefaultDoc = Request.Form("DefaultDoc") .EnableDirBrowsing = Request.Form("EnableDirBrowsing") .EnableDefaultDoc = Request.Form("EnableDefaultDoc") .DirBrowseShowDate = Request.Form("DirBrowseShowDate") End with
'Escreve na Metabase ou devolve o erro If Err.number<> 0 then Cria_virtual = Err.Description Else vDir.SetInfo End if End function
Sub mostra_virtual(virtual)
'Abrimos o Objecto do IIS "WebSite" Set vWebsvc = GetObject("IIS://LocalHost/W3SVC/1")
'Verificação do respectivo através do ServerComment ' ******* SO FUNCIONA SE ESPECIFICARMOS O INDICE DO W3SVC NUM GetObject("IIS://LocalHost/W3SVC/1") Response.Write "Referente ao site = " & vWebsvc.ServerComment & "<br>"
'Vai buscar informação de um VIRTUAL set vRoot = vWebsvc.GetObject("IIsWebVirtualDir", "Root/" & virtual)
'Vai buscar informação da Raiz (Site principal) se quisermos 'set vRoot = vWebsvc.GetObject("IIsWebVirtualDir", "1/Root")
'Aqui recolhemos o "Schema" do IIS para podermos aceder ás suas informações Set vClassDef = GetObject(vRoot.Schema)
'LISTA DAS PROPRIEDADES Propriedades = vClassDef.OptionalProperties
Response.write "<table border=1>" Response.write "<tr><th>LISTA DAS PROPRIEDADES OPCIONAIS</th>" Response.write "<th>Valor Actual</th></tr>"
On error resume next i=1 For Each tmpCoisa in Propriedades Response.Write "<tr><td>("& i & ") " &_ tmpCoisa & "</td><td>" & vRoot.Get(tmpCoisa) & "</td></tr>" i = i + 1 Next
Response.Write "</table>"
'Se correr mal....UPS on error goto 0
End sub %>
T+,
|
|
|
|

|