Avatar billede ingeman Seniormester
29. februar 2004 - 15:38 Der er 59 kommentarer og
2 løsninger

Kan man skrive fra asp til IIS 5.0

I IIS 5.0 under Directory security - IP address and name restriction - kan man sætte ip begrænsning hvem der har adgang til
web severen. Kan man fra ASP få love til at skrive de ip begrænsninger ind ?
Avatar billede nmh Nybegynder
29. februar 2004 - 17:28 #1
Du kan aflæse IP-adressen og du kan så have en liste af tilladte adresser. Afvis alle andre.
Du vil også kunne beskytte en side ved hjælp af ntfs-rettigheder.
En bruger vil så blive afkrævet et brugernavn og adgangskode for at komme videre.

Request.Servervariables("REMOTE_HOST")
Response.Write Request.ServerVariables("REMOTE_ADDR")

http://www.webmasterworld.com/forum47/41.htm
http://www.tconsult.com/developer/ip.asp
http://www.developerfusion.com/show/1626/
http://www.15seconds.com/issue/981104.htm
Avatar billede The Real Yoda Juniormester
29. februar 2004 - 18:17 #2
ja, det er muligt at connecte til IIS5.0 som serverObject.. og derved kan du styre den helt via ASP ..
Avatar billede ingeman Seniormester
01. marts 2004 - 19:14 #3
Hvordan ?
Avatar billede The Real Yoda Juniormester
01. marts 2004 - 21:36 #4
Set objIIS = GetObject("IIS://localhost/W3SVC")
Set objServer = objIIS.Create("IIsWebServer",16)
Avatar billede ingeman Seniormester
02. marts 2004 - 18:22 #5
Hvordan skal det se ud hvis man vil lave ip adgangs begrænsning ?
Avatar billede The Real Yoda Juniormester
02. marts 2004 - 18:59 #6
Avatar billede The Real Yoda Juniormester
02. marts 2004 - 19:00 #7
You can use the IPGrant property of the IIsIPSecurity (ADSI) object to edit lists of IP addresses, in an array, that are not allowed access to the server.


Syntax

SecObj. IPGrant = "IPAddress,SubnetMask"

varIPGrant = SecObj. IPGrant


Parameters


SecObj
An IIS ADSI Object of type IIsIPSecurity.
IPAddress
A specific IP address that you want to grant access to the server.
SubnetMask
The subnet mask for the specified IP address.

Code Example


<%


' Remember to enable Integrated Windows authentication and


' disable Anonymous Access, or you will get a Server 500 error.


Dim SecObj


Dim MyIPSec


Dim IPList


' Get the IIS object that holds the info for the default site.


' This could be any site root/vdir, or IIS://LocalHost/W3SVC for global


' properties.


Set SecObj = GetObject("IIS://LocalHost/W3SVC/1/Root")


' Get the IIsIPSecurity object.


Set MyIPSec = SecObj.IPSecurity


' Make sure GrantByDefault=FALSE or your changes will not count.


If (TRUE = MyIPSec.GrantByDefault) Then


Response.Write


"<BR>GrantByDefault was not FALSE. Setting to FALSE.<BR>"


MyIPSec.GrantByDefault = FALSE


End If


' Get the Grant list as an array, and add your newly allowed IP address


IPList = MyIPSec.IPGrant


Redim IPList (Ubound(IPList)+1)


IPList (Ubound(IPList)) = "123.0.0.1,255.255.255.0"


' Set the new lists back in the metabase in two stages, and then set


' the metabase.


MyIPSec.IPGrant = IPList


SecObj.IPSecurity = MyIPSec


SecObj.Setinfo


Response.Write "The IPRestriction has been set<BR>"


%>
Avatar billede ingeman Seniormester
05. marts 2004 - 20:07 #8
Jeg får den her error

error '80070003'

Set SecObj = GetObject("IIS://LocalHost/W3SVC/1/Root")

Har det noget med den her at gøre ?
Avatar billede The Real Yoda Juniormester
06. marts 2004 - 19:31 #9
Du skal huske at ovenstående script skal køres som administrator på serveren og ik som almindelig IUSR
Avatar billede ingeman Seniormester
07. marts 2004 - 10:06 #10
Set SecObj = GetObject("IIS://LocalHost/W3SVC/1/Root")

Den her varierer den - eller skal der stå som du har skrevet ?
Jeg kører som administrator.
Min min webside på computeren ligger under en folder som hedder web-bedsted.
Avatar billede ingeman Seniormester
07. marts 2004 - 11:07 #11
' Get the IIS object that holds the info for the default site.
Hvor på serveren ligger det ? sti ?
Avatar billede The Real Yoda Juniormester
07. marts 2004 - 12:26 #12
kører du på en windows 2000 server ? .. eller noget andet ?
Avatar billede ingeman Seniormester
07. marts 2004 - 12:50 #13
windows 2000 server
Avatar billede The Real Yoda Juniormester
07. marts 2004 - 12:55 #14
ok.. så skal du oprette et nyt website til denne side. . og det website skal du sætte til at logge ind med administrator i stedet for iusr
Avatar billede ingeman Seniormester
07. marts 2004 - 13:01 #15
Den web side jeg har oprettet er oprettet med web side oprators: administrators
Avatar billede The Real Yoda Juniormester
07. marts 2004 - 13:06 #16
det er ik nok..

Du skal ind i properties, Directory security, EDIT anonumous access, Edit anonumous account, og der skal du taste administrator username og password
Avatar billede ingeman Seniormester
07. marts 2004 - 13:39 #17
error '80070003'
i den her linie
Set SecObj = GetObject("IIS://LocalHost/W3SVC/1/Root")
Avatar billede The Real Yoda Juniormester
07. marts 2004 - 13:42 #18
ja, men det er fordi scriptet skal være administrator.. på den måde jeg forklarede,...
Avatar billede ingeman Seniormester
07. marts 2004 - 13:43 #19
Jeg har gjort det
Du skal ind i properties, Directory security, EDIT anonumous access, Edit anonumous account, og der skal du taste administrator username og password
Men får fejlen
error '80070003'
Avatar billede The Real Yoda Juniormester
07. marts 2004 - 13:48 #20
prøv at fjerne "/root" så ..
Avatar billede ingeman Seniormester
07. marts 2004 - 13:51 #21
gør ingen ændring
Avatar billede The Real Yoda Juniormester
07. marts 2004 - 14:02 #22
mærkeligt..
Avatar billede ingeman Seniormester
07. marts 2004 - 16:31 #23
IIS://LocalHost/W3SVC/1/Root

Hvor ligger det her på computeren ?
Avatar billede The Real Yoda Juniormester
07. marts 2004 - 16:38 #24
tror det er lidt i stil med logfilen.. men tror det er en virtuel mappe
Avatar billede ingeman Seniormester
07. marts 2004 - 16:40 #25
Set SecObj = GetObject("IIS://LocalHost/W3SVC/1/Root")
Jeg mener at serveren ikke er istand til at finde opjected ?
Avatar billede The Real Yoda Juniormester
07. marts 2004 - 16:46 #26
brug den øverste jeg skrev..
Avatar billede ingeman Seniormester
08. marts 2004 - 19:12 #27
Ja Ok - Jeg er gået lidt død i den her ? -
Avatar billede ingeman Seniormester
08. marts 2004 - 19:14 #28
Jeg mangler måske hvad der skal gøres helt fra bunden ?
Avatar billede The Real Yoda Juniormester
08. marts 2004 - 21:30 #29
prøv at gå ind på det link jeg skrev.. og læs om det..

det skulle gerne hjælpe lidt på det :-)
Avatar billede The Real Yoda Juniormester
08. marts 2004 - 21:31 #30
men hvorfor er det lige du vil kunne skrive ip halløjet der.. jeg mener er det ik hurtigere bare at gøre det i iis.. så er det klaret
Avatar billede ingeman Seniormester
09. marts 2004 - 20:40 #31
Jeg har nu fået det til at køre fra asp koden - det var noget med rettigheder der
manglede - men hvordan hvis man har flere web sider kørende på samme server - hvor kan man sikre sig at det er den rigtige man skriver til ?
Avatar billede The Real Yoda Juniormester
09. marts 2004 - 20:45 #32
det er med det nummer efter w3svc

det er det der bestemmer hvad "site nummer" du skriver til ..
Avatar billede ingeman Seniormester
09. marts 2004 - 21:22 #33
Hvor kan man se hvilke site nummer man er på ?
Avatar billede ingeman Seniormester
09. marts 2004 - 21:23 #34
Hvor kan man hente hvilke site nummer man er på ?
Avatar billede The Real Yoda Juniormester
09. marts 2004 - 22:06 #35
du kan se det på logfilen.. den har nemlig samme nummer..
Avatar billede ingeman Seniormester
10. marts 2004 - 19:07 #36
Hvad hedder logfilen ?
Avatar billede ingeman Seniormester
10. marts 2004 - 19:07 #37
Hvordan skal koden se ud hvis man skal fjerne en ip ?
Avatar billede The Real Yoda Juniormester
10. marts 2004 - 19:19 #38
Set SecObj = GetObject("IIS://LocalHost/W3SVC/1/Root")
Set MyIPSec = SecObj.IPSecurity
If (FALSE = MyIPSec.GrantByDefault) Then
MyIPSec.GrantByDefault = TRUE
IPList = MyIPSec.IPDeny
Redim IPList (Ubound(IPList)+1)
IPList (Ubound(IPList)) = "I.P.NR.1,I.P.NR.2"
MyIPSec.IPDeny = IPList
SecObj.IPSecurity = MyIPSec
SecObj.Setinfo
Avatar billede ingeman Seniormester
10. marts 2004 - 19:32 #39
Hvor ligger logfilen ? - Hvad hedder den ?
Avatar billede The Real Yoda Juniormester
10. marts 2004 - 19:45 #40
når du klikker egenskaber på det enkelte hotel, kan du se egenskaber for logfilen.. og der står nummeret i et eksempel..
Avatar billede ingeman Seniormester
10. marts 2004 - 20:05 #41
Der ikke noget nummer i egenskaber for websitet ?
Avatar billede ingeman Seniormester
10. marts 2004 - 20:07 #42
Hvordan får man nummeret fra websitet  returneret til  asp ?
Avatar billede The Real Yoda Juniormester
10. marts 2004 - 20:14 #43
det kan jeg ik lige huske men det kan du læse dig frem til på det microsoft link jeg sendte dig..
Avatar billede ingeman Seniormester
13. marts 2004 - 22:10 #44
Jeg oplever at koden kun erstater den eksisterende ip - den skulle jo tilføje nye -
de som stod i forvejen skulle forblive urørt ?
Avatar billede ingeman Seniormester
13. marts 2004 - 22:11 #45
' Remember to enable Integrated Windows authentication and
        ' disable Anonymous Access, or you will get a Server 500 error.

        Dim SecObj, MyIPSec, IPList

        ' Get the IIS object that holds the info for the default site.
        ' This could be any site root/vdir, or IIS://LocalHost/W3SVC for global
        ' properties.

        Set SecObj = GetObject("IIS://LocalHost/W3SVC/1/Root")

        ' Get the IIsIPSecurity object.

        Set MyIPSec = SecObj.IPSecurity

        ' Make sure GrantByDefault=FALSE or your changes will not count.

        If (TRUE = MyIPSec.GrantByDefault) Then
            MyIPSec.GrantByDefault = FALSE
        End If

        ' Get the Grant list as an array, and add your newly allowed IP address

        IPList = MyIPSec.IPGrant

        Redim IPList (Ubound(IPList)+1)

        IPList (Ubound(IPList)) = PrivateIP

        ' Set the new lists back in the metabase in two stages, and then set
        ' the metabase.

        MyIPSec.IPGrant = IPList
        SecObj.IPSecurity = MyIPSec
        SecObj.Setinfo

        Set SecObj = nothing
        Set MyIPSec = nothing
Avatar billede The Real Yoda Juniormester
13. marts 2004 - 22:17 #46
Ok.. det kan du jo så evt løse ved selv at have en liste over dem som skal tilføjes og så bare tilføje hele listen hver gang..

skal ik lige kunne sige hvorfor den gør det sådan da denne løsning skulle virke..
Avatar billede ingeman Seniormester
13. marts 2004 - 22:47 #47
Hvordan får man udskrivet indholdet af IPList ?
Avatar billede The Real Yoda Juniormester
14. marts 2004 - 02:21 #48
IPList = MyIPSec.IPGrant

for t= 0 to ubound(IPList)
response.write "IP: "&IPList(t)&"<br>"
next
Avatar billede ingeman Seniormester
14. marts 2004 - 09:25 #49
For at tilføje ser det ud til at man skal erstatte

Redim IPList (Ubound(IPList)+1)

med

Redim Preserve  IPList (Ubound(IPList)+1)
Avatar billede The Real Yoda Juniormester
14. marts 2004 - 12:26 #50
der kan man bare se.. har ik selv rodet med ip begrænsningen..
Avatar billede ingeman Seniormester
14. marts 2004 - 13:15 #51
Hvordan får man nummeret fra websitet  returneret til  asp ? - jeg har ikke kunnet finde noget på det ?
Avatar billede The Real Yoda Juniormester
14. marts 2004 - 13:20 #52
det eneste jeg har der kan det.. er noget slamkode som jeg ik lige har fået rydtet op i endnu..

så det kan godt være det er lidt u-overskueligt..

computer="localhost"
webname="testsite.dk"
ArgComputers = Array("LocalHost")
ArgWebSites = webname
ArgNum = 0
for compIndex = 0 to UBound(ArgComputers)
    set foundSite = findWeb(ArgComputers(compIndex), ArgWebSites)
    if isObject(foundSite) then
        response.write "  Web Site Number = "&foundSite.Name
        response.write "  Web Site Description = "&foundSite.ServerComment
        aBinding=foundSite.ServerBindings
        if (IsArray(aBinding)) then
            if aBinding(0) = "" then
                binding = Null
            else
                binding = getBinding(aBinding(0))
            end if
        else
            if aBinding = "" then
                binding = Null
            else
                binding = getBinding(aBinding)
            end if
        end if
        if (IsArray(binding)) then
            response.write "    Hostname = "&binding(2)
            response.write "    Port = "&binding(1)
            response.write "    IP Address = "&binding(2)
        end if
    else
        Trace "No matching web found."
    end if
next
function getBinding(bindstr)

    Dim one, two, ia, ip, hn
   
    one=Instr(bindstr,":")
    two=Instr((one+1),bindstr,":")
   
    ia=Mid(bindstr,1,(one-1))
    ip=Mid(bindstr,(one+1),((two-one)-1))
    hn=Mid(bindstr,(two+1))
   
    getBinding=Array(ia,ip,hn)
end function

Function findWeb(computer, webname)
    On Error Resume Next

    Dim websvc, site
    dim webinfo
    Dim aBinding, binding

    set websvc = GetObject("IIS://"&computer&"/W3svc")
    if (Err <> 0) then
        exit function
    end if
    ' First try to open the webname.
    set site = websvc.GetObject("IIsWebServer", webname)
    if (Err = 0) and (not isNull(site)) then
        if (site.class = "IIsWebServer") then
            ' Here we found a site that is a web server.
            set findWeb = site
            exit function
        end if
    end if
    err.clear
    for each site in websvc
        if site.class = "IIsWebServer" then
            '
            ' First, check to see if the ServerComment
            ' matches
            '
            If site.ServerComment = webname Then
                set findWeb = site
                exit function
            End If
            aBinding=site.ServerBindings
            if (IsArray(aBinding)) then
                if aBinding(0) = "" then
                    binding = Null
                else
                    binding = getBinding(aBinding(0))
                end if
            else
                if aBinding = "" then
                    binding = Null
                else
                    binding = getBinding(aBinding)
                end if
            end if
            if IsArray(binding) then
                if (binding(2) = webname) or (binding(0) = webname) then
                    set findWeb = site
                    exit function
                End If
            end if
        end if
    next
end function
set sjov= findweb(computer,webname)
response.write site %>
Avatar billede ingeman Seniormester
14. marts 2004 - 16:58 #53
Ja det må jeg erkende at jeg ikke kan få til at virke !
Avatar billede The Real Yoda Juniormester
14. marts 2004 - 18:31 #54
i starten af scriptet er det eneste du skal ændre.. webname...

og så skal det bare køres med samme rettigheder som det andet script..

så skulle det gerne skrive  sitenummeret ud...
Avatar billede ingeman Seniormester
14. marts 2004 - 18:37 #55
Websitet har ikke noget navn kun et ip nummer
Avatar billede The Real Yoda Juniormester
14. marts 2004 - 18:44 #56
Den må da have et navn som den svarer på ?.. altså et domæne..

ellers  må du oprette domæner som du kan søge på ..

det behøver jo ik være registrerede domæner.. bare nogen du bruger internt..
Avatar billede ingeman Seniormester
14. marts 2004 - 19:15 #57
Jeg kalder mit site med http://ipnr
Avatar billede ingeman Seniormester
14. marts 2004 - 19:17 #58
Jeg bruger ikke domæn.
Avatar billede ingeman Seniormester
14. marts 2004 - 20:16 #59
sådan skal det se ud

    Dim websvc, site
    dim webinfo
    Dim aBinding, binding

    set websvc = GetObject("IIS://localhost/W3svc")
    for each site in websvc
      if site.class = "IIsWebServer" then
        Response.Write site.ServerComment & " = " & site.Name & "<br>"
      end if
    next
Avatar billede ingeman Seniormester
14. marts 2004 - 20:19 #60
Tak for hjælpen - vi klaret alt - undtagen det sidste som jeg fandt til anden side.
Du fortjener bestemt points.
Avatar billede The Real Yoda Juniormester
14. marts 2004 - 22:32 #61
tak skal du ha...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester