Rune Jensen wrote:
> On Apr 20, 9:36 am, Philip Nunnegaard <
nunnenos...@hitsurf.dk> wrote:
>
>> Det er ikke mit indtryk at almindelige webhoteller tilbyder den slags.
>> Så for os almindelige dødelige ikke-nørder bliver det hele bare
>> gætterier og en masse skud i tågen med spredehagl.
>
> Stig har en kopi af den logging-funktion, som vi brugte, og som jeg
> iøvrigt har brugt selv siden. Ca. 15 linjer i ASP, hvis jeg ikke
> husker helt galt.
Njah.. lidt mere end 15 linier ;-)
Her er ASP koden til 1. level, som nemt kan omsættes til PHP:
...................................
<!--#include virtual="/include_files/md5.inc.asp"--><%
Dim woprDkIpTable
Dim woprIpRquestTest
Dim woprIpRquest
Dim woprRequestMethod
Dim woprRequestHost
Dim woprReferrer
Dim woprURL
Dim woprURIQuery
Dim woprUseragent
Dim woprHTTPAccept
Dim woprHTTPAcceptEnc
Dim woprHTTPConnection
Dim woprHTTPProtocol
Dim woprHTTPAcceptLang
Dim woprHTTPAcceptChar
Dim woprHTTPProxy
woprDkIpTable =
",57,62,77,78,80,81,82,83,84,85,86,87,89,90,91,129,130,131,141,147,149,152,155,159,171,192,193,194,195,212,213,217,"
woprIpRquest = Request.Servervariables("REMOTE_ADDR")
woprRequestMethod = Request.Servervariables("REQUEST_METHOD")
woprRequestHost = Request.Servervariables("HTTP_HOST")
woprReferrer = Request.Servervariables("HTTP_REFERER")
woprURL = Request.Servervariables("URL")
woprURIQuery = Request.Servervariables("QUERY_STRING")
woprUseragent = Request.Servervariables("HTTP_USER_AGENT")
woprHTTPAccept = Request.Servervariables("HTTP_ACCEPT")
woprHTTPAcceptEnc = Request.Servervariables("HTTP_ACCEPT_ENCODING") '
even lynx accepts gzip
woprHTTPConnection = Request.Servervariables("HTTP_CONNECTION")
woprHTTPProtocol = Request.Servervariables("SERVER_PROTOCOL")
woprHTTPAcceptLang = Request.Servervariables("HTTP_ACCEPT_LANGUAGE")
woprHTTPAcceptChar = Request.Servervariables("HTTP_ACCEPT_CHARSET")
woprHTTPProxy = Request.Servervariables("HTTP_PROXY_CONNECTION")
' IIS bruger blanke, dog '-' ved blank entry
LogThisEntry
if woprRequestMethod = "GET" and inStr(woprURIQuery,"http%3A%2F%2F") > 0
and not OneOfOurSelves then
woprRequestHost = "
http://wopr.lir.dk" + woprURL
if woprURIQuery <> "" then woprRequestHost = woprRequestHost + "?" +
woprURIQuery
Response.Status = "302 Moved Temporarily"
Response.AddHeader "Location",woprRequestHost
%><head><title>Object moved</title></head><body><h1>Object
Moved</h1>This object may be found <a href="<%
= woprRequestHost %>">here</a>.</body><%
Response.End
end if
if left(woprRequestHost,4) = "www." then
woprRequestHost = "http://" +
Right(woprRequestHost,len(woprRequestHost)-4) + woprURL
if woprURIQuery <> "" then woprRequestHost = woprRequestHost + "?" +
Server.URLEncode(woprURIQuery)
Response.Status = "301 Moved Permanently"
Response.AddHeader "Location",woprRequestHost
%><head><title>Object moved</title></head><body><h1>Object
Moved</h1>This object may be found <a href="<%
= woprRequestHost %>">here</a>.</body><%
Response.End
end if
if woprRequestMethod <> "POST" and woprRequestMethod <> "GET" then
Response.End
if not OneOfTheGoodGuys and not OneOfOurSelves then
woprIpRquestTest = "," + Left(woprIpRquest,inStr(woprIpRquest,".") -
1) + ","
if inStr(woprDkIpTable,woprIpRquestTest) < 1 then
' Response.Status = "404 Go play somewhere else, not here - IP " +
woprIpRquest
' Response.Write "Sorry, no ebtry found "
woprRequestMethod = "MOVE"
LogThisEntry
'-------------- testing start
woprRequestHost = "
http://wopr.lir.dk" + woprURL
if woprURIQuery <> "" then woprRequestHost = "?" +
Server.URLEncode(woprURIQuery)
Response.Status = "302 Moved Temporarily"
Response.AddHeader "Location",woprRequestHost
%><head><title>Object moved</title></head><body><h1>Object
Moved</h1>This object may be found <a href="<%
= woprRequestHost %>">here</a>.</body><%
'-------------- testing end
Response.End
end if
' We only want post requests from our own site.
if woprRequestMethod = "QPOST" then
if inStr(woprReferrer,"http://"+woprRequestHost) < 1 then
Response.Status = "404 Go play somewhere else, not here - POST"
Response.Write "Sorry, you seem to make some intrusion attempt"
woprRequestMethod = "NACK2"
LogThisEntry
Response.End
end if
end if
' If get, we only want URI part from our own site, needs to think about
every page
if woprRequestMethod = "qGET" then
if ( woprURIQuery <> "" ) and inStr(woprURIQuery,"xoomer") < 1 then
if inStr(woprReferrer,"http://"+woprRequestHost) < 1 then
Response.Status = "404 Go play somewhere else, not here -
GET"
Response.Write "Sorry, you seem to make some referring spam"
woprRequestMethod = "NACK3"
LogThisEntry
Response.End
end if
end if
end if
end if
'******************* Subroutines Start
**********************************************
Sub LogThisEntry
if OneOfOurSelves then exit sub
Dim Logfile
Dim LogDelimiter
Dim LogfileName
LogfileName = cStr(Year (now())) + "." + Right(cStr(100 + Month
(Now())),2) + "." + Right(cStr(100 + Day (Now()) ),2)
LogfileName = Server.Mappath("/logfiles/") + "/" + LogfileName +
".logfile.txt"
LogDelimiter = " "
set Logfile =
Server.Createobject("Scripting.FilesystemObject").Opentextfile(LogfileName,
8, true)
Logfile.WriteLine _
FormatDateTime(Now(),vbGeneralDate) + LogDelimiter + _
woprIpRquest + LogDelimiter + _
woprRequestMethod + LogDelimiter + _
fLog (woprURL) + LogDelimiter + _
fLog (woprURIQuery) + LogDelimiter + _
fLog (woprRequestHost) + LogDelimiter + _
fLog (woprReferrer) + LogDelimiter + _
fLog (woprUseragent) + LogDelimiter + _
fLog (woprHTTPAccept) + LogDelimiter + _
fLog (woprHTTPAcceptEnc) + LogDelimiter + _
fLog (woprHTTPConnection) + LogDelimiter + _
fLog (woprHTTPProtocol) + LogDelimiter + _
fLog (woprHTTPAcceptLang) + LogDelimiter + _
fLog (woprHTTPAcceptChar) + LogDelimiter + _
fLog (woprHTTPProxy)
End Sub
'******************* Subroutines End
**********************************************
'******************* Functions Start
**********************************************
Function fLog ( lEntry ) ' format log entry
if lEntry = "" then
fLog = "-"
else
fLog = Replace(lEntry," ","+")
end if
end Function
'--------------------------------------------------------------------------------------
Function OneOfTheGoodGuys
OneOfTheGoodGuys = true
' W3s validator
if inStr(woprUseragent,"W3C_Validator") > 0 then OneOfTheGoodGuys = true
if inStr(woprUseragent,"W3C_CSS_Validator") > 0 then OneOfTheGoodGuys =
true
if inStr(woprUseragent,"J2ME/MIDP") > 0 then OneOfTheGoodGuys = true '
Opera mini
if inStr(woprUseragent,"
help.yahoo.com/help/us/ysearch/slurp") > 0 then
OneOfTheGoodGuys = true
if inStr(woprUseragent,"Google") > 0 then OneOfTheGoodGuys = true
if left(woprIpRquest,5) = "65.55" then OneOfTheGoodGuys = true ' msn
if woprIpRquest = "66.114.197.254" then OneOfTheGoodGuys = true '
honeypot
end Function
'--------------------------------------------------------------------------------------
Function OneOfOurSelves
OneOfOurSelves = false
if woprIpRquest = "80.72.152.132" or woprIpRquest = "90.184.112.219" then
OneOfOurSelves = true
end Function
'******************* Functions End
**********************************************
%>