If it has a plug, it's IT stuff

Sep 24 2008   12:36PM GMT

[TLBAT] Intranet: the download_special.asp

alessandro.panzetta Alessandro Panzetta Profile: alessandro.panzetta

So we’re finally at the “interesting” stuff: the page that checks if a user is allowed or not to download a certain package.

As in previous posts in order to allow a user to download a certain file he/she must be a member of a given group; e.g. we want to restrict the downloads of MySoftware.exe and make this available only to the members of the grp_MySoftware group. We defined then in our database that this file has the following entry:

PackageDesc = “My beautiful software 1.0”

PackageName = “MySoftware.exe”

PackageType = “Special”

NeededGroup = “grp_MySoftware”

The code that you find below will check if the user that is visiting the page is part of the grp_MySoftware group and, if successful, build the download link by redirecting him/her to the closest distribution point. Example http://192.168.xxx.1/files/MySoftware.exe where xxx is the subnet of the client visiting the page.

So now let’s see the code and remember to change the MyDomain = “contoso” to your domain name (E.g. if you have mycompany.com just type mycompany).

The code that follows is self-explanatory so just…read it and check the commented lines!


<!– #include file=”adovbs.inc” –>






Dim MyDomain


FILE = Request.querystring(“file”)

USERID = Request.querystring(“UserName”)

MyDomain = “contoso”

Dim Licensed

Set cnnSearch = Server.CreateObject(“ADODB.Connection”)

cnnSearch.Open “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” & Server.Mappath(“db/downloads.mdb”) & “;”

strSQL2 = “SELECT Packages.NeededGroup FROM Packages WHERE (((Packages.PackageName)='” & FILE & “‘)) GROUP BY Packages.NeededGroup;”

Set rstSearch2 = cnnSearch.Execute(strSQL2)

Do While Not rstSearch2.EOF

   NEEDED_GROUP= rstSearch2.Fields(“NeededGroup”).Value



Call CheckGroup

Sub CheckGroup

Set objDictionary = CreateObject(“Scripting.Dictionary”)

set User = GetObject(“WinNT://” & MyDomain & “/” + USERID)

For Each Prop In User.groups

    if instr(Prop.Name,right(NEEDED_GROUP,3)) > 0 then

        Licensed = True

    end if


End Sub

if Licensed = True then

Call GimmePack(FILE)


    Call RequestPack(NEEDED_GROUP, FILE)

End if

‘ *** Get the visitor’s subnet

CLIENT_IP = Request.ServerVariables(“REMOTE_ADDR”)

SUBNET0 = Split(CLIENT_IP,”.”)

‘ *** Check the distribution point for the given subnet

strSQL = “SELECT Sites.Subnet, Sites.Distrib_Point FROM Sites WHERE (((Sites.Subnet)='” & SUBNET0(2) & “‘)) GROUP BY Sites.Subnet, Sites.Distrib_Point;”

Set rstSearch = cnnSearch.Execute(strSQL)

Do While Not rstSearch.EOF

    Session(“SOURCE”) = rstSearch.Fields(“Distrib_Point”).Value



‘ *** Create the download link and redirect the by using the REFRESH metatag so the package automatically starts downloading

Sub GimmePack(FILE)


    response.write “<html><head><META http-equiv=’refresh’ content=’3;URL=” & DOWNLOAD_LINK & “‘><title>Download page for ” & FILE & “</title></head><body>”

    response.write “<center><FONT FACE=TAHOMA SIZE=2 COLOR=#006699>You are registered to download <b>” & FILE & “</b></FONT><br>”

    response.write “<FONT FACE=TAHOMA SIZE=2 COLOR=#006699>Your download should start in few seconds, if this doesn’t happen, click <a href=” & DOWNLOAD_LINK & “>HERE</a></b> to download the file</FONT><center>”


End Sub

Sub LogHit

    CLIENT_IP = Request.ServerVariables(“REMOTE_ADDR”)


    DB_CONNECTIONSTRING = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” & Server.Mappath(“db/hits.mdb”) & “;”

    Dim objRecordset

    Set objRecordset = Server.CreateObject(“ADODB.Recordset”)

    strSQL = “SELECT * FROM downloads;”

    objRecordset.Open strSQL, DB_CONNECTIONSTRING, adOpenKeyset, adLockPessimistic, adCmdText


    objRecordset.Fields(“Package”) = FILE

    objRecordset.Fields(“UserName”) = USERID

    objRecordset.Fields(“IP_ADDR”) = CLIENT_IP

    objRecordset.Fields(“Date”) = Date



    Set objRecordset = Nothing

End Sub


    Response.Redirect “request_package.asp?UserName=” & UCase(USERID) & “?Group=” & NEEDED_GROUP & “?File=” & FILE & ” ”

‘    Session.Abandon

End Sub

%><head><title>..:: Download Center ::..</title></head>

‘======END CODE======

 Comment on this Post

There was an error processing your information. Please try again later.
Thanks. We'll let you know when a new response is added.
Send me notifications when other members comment.

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Forgot Password

No problem! Submit your e-mail address below. We'll send you an e-mail containing your password.

Your password has been sent to:

Share this item with your network: