From 196d6652c36dc923a458ae60891d57aa9a0ede16 Mon Sep 17 00:00:00 2001 From: Jonathon Emerson Date: Wed, 24 Jul 2013 23:05:18 -0500 Subject: [PATCH] Added /geolocate for ops. /geolocate to view country, region, and city for an ip address. --- rsc/default.dmf | 26 ++++++++++++++++++++++++++ src/struct/chatter.dm | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) diff --git a/rsc/default.dmf b/rsc/default.dmf index 9b6ffec..4489125 100644 --- a/rsc/default.dmf +++ b/rsc/default.dmf @@ -7993,6 +7993,32 @@ window "help" keep-aspect = false align = top text-wrap = false + elem "label57" + type = LABEL + pos = 363,407 + size = 343x20 + anchor1 = none + anchor2 = none + font-family = "Trebuchet MS,Arial" + font-size = 10 + font-style = "" + text-color = #000000 + background-color = #e9e9e9 + is-visible = true + is-disabled = false + is-transparent = false + is-default = false + border = none + drop-zone = false + right-click = false + saved-params = "" + on-size = "" + text = "/geolocate : geolocation" + image = "" + image-mode = center + keep-aspect = false + align = center + text-wrap = false elem "label56" type = LABEL pos = 363,383 diff --git a/src/struct/chatter.dm b/src/struct/chatter.dm index e2a1012..56a6294 100644 --- a/src/struct/chatter.dm +++ b/src/struct/chatter.dm @@ -961,6 +961,47 @@ mob server_manager.saveHome() + geolocate(target as text) + set hidden = 1 + + if(!target) return + if(!server_manager.home) return + if(!(ckey in server_manager.home.operators)) + server_manager.bot.say("You do not have access to this command.", src) + return + + var/mob/chatter/C + if(ismob(target)) C = target + else C = chatter_manager.getByKey(target) + + if(C && C.client) target = client.address + target = copytext(target, 1, 16) + + var/http[] = world.Export("http://freegeoip.net/json/[target]") + if(!http || !file2text(http["CONTENT"])) + server_manager.bot.say("Failed to geolocate [target].", src) + return + + var + content = file2text(http["CONTENT"]) + list/data + + content = copytext(content, 2, length(content) - 1) + content = textutil.replaceText(content, ":", "=") + content = textutil.replaceText(content, ",", "&") + content = textutil.replaceText(content, "\"", "") + + data = params2list(content) + + if(data && (length(data) > 1) && (("ip" in data) && (data["ip"] == target))) + server_manager.bot.say("The following information was found for [target]:", src) + if(data["country_name"]) server_manager.bot.rawSay("Country: [data["country_name"]]", src) + if(data["region_name"]) server_manager.bot.rawSay("Region: [data["region_name"]]", src) + if(data["city"]) server_manager.bot.rawSay("City: [data["city"]]", src) + if(data["latitude"] && data["longitude"]) server_manager.bot.rawSay("Click here to view on Google Maps.", src) + + else server_manager.bot.say("Failed to geolocate [target].", src) + /* SETTINGS */ setDefaultMisc()