GeoLocation and IP Reputation Query
Problem this snippet solves:
Usage:
**http**://VS_IP/**geo?**{IPv4_TO_TEST | IPv6_TO_TEST}
Examples:
http://10.100.89.100/geo?8.8.8.8
http://10.100.89.100/geo?199.19.105.220
http://10.100.89.100/geo?2a02:DB8::45
How to use this snippet:
iRule Source
https://github.com/ArtiomL/f5networks/tree/master/irules/geo-query
Sample Output
IP: 199.19.105.220 GeoLocation Data Continent: NA Country: US State: Texas ISP: Network operations center inc. Org: Volumedrive IP Reputation: Scanners Proxy
Code :
#!iRule
# F5 Networks - iRule: GeoLocation and IP Reputation Query
# https://github.com/ArtiomL/f5networks
# Artiom Lichtenstein
# v1.7, 21/07/2016
#
# Usage:
# http://VS_IP/geo?{IPv4_TO_TEST | IPv6_TO_TEST}
#
# Examples:
# http://10.100.89.100/geo?8.8.8.8
# http://10.100.89.100/geo?199.19.105.220
# http://10.100.89.100/geo?2a02:DB8::45
when HTTP_REQUEST {
if { [HTTP::uri] starts_with "/geo" } {
set str_GEO_RESPONSE "Please Enter IPv4 / IPv6 Address:"
set str_IP_ADDR [substr [HTTP::uri] 5]
if { ![catch {IP::addr $str_IP_ADDR mask 255.255.255.255}] } {
log local0.info "IP: $str_IP_ADDR"
set str_GEO_RESPONSE "IP: $str_IP_ADDR
GeoLocation Data"
array set arr_GEO_DATA {
aContinent 0
bCountry 0
cState 0
dCity 0
eZIP 0
fArea_Code 0
gLatitude 0
hLongitude 0
iISP 0
jOrg 0
}
set lst_SORTED_ARR [lsort [array names arr_GEO_DATA]]
foreach i $lst_SORTED_ARR {
set str_GEO_FIELD [substr $i 1]
set arr_GEO_DATA($i) [whereis $str_IP_ADDR [string tolower $str_GEO_FIELD]]
if { ([string length $arr_GEO_DATA($i)]) && ($arr_GEO_DATA($i) ne "0") } {
set str_GEO_RESPONSE [concat $str_GEO_RESPONSE "
$str_GEO_FIELD:" [string toupper $arr_GEO_DATA($i) 0 0]]
log local0.info "$str_GEO_FIELD: $arr_GEO_DATA($i)"
}
}
set lst_IP_REP [IP::reputation $str_IP_ADDR]
if { [llength $lst_IP_REP] == 0 } { set lst_IP_REP "Good" }
else {
log local0.info "IP Reputation: $lst_IP_REP"
set lst_IP_REP [concat "" $lst_IP_REP ""]
}
set str_GEO_RESPONSE [concat $str_GEO_RESPONSE "
IP Reputation:" $lst_IP_REP]
}
HTTP::respond 200 content [subst {
F5 GeoLocation
$str_GEO_RESPONSE
}]
}
}Tested this on version:
12.0Published Mar 17, 2015
Version 1.0Artiom_Lichtens
Historic F5 Account
Joined April 14, 2008
Artiom_Lichtens
Historic F5 Account
Joined April 14, 2008
No CommentsBe the first to comment