Forum

Visa obesvarade inlägg | Visa aktiva trådar



Ny tråd Svara på tråd  [ 43 inlägg ]  Gå till sida 1, 2, 3  Nästa
Eniros nya kartor i GC Live 
Författare Meddelande
Geocachare
Användarvisningsbild

Blev medlem: fre sep 05, 2008 13:40
Inlägg: 617
Inlägg Eniros nya kartor i GC Live
EDIT: Använd denna URL-istället:
Kod:
http://map.eniro.com/geowebcache/service/gmaps?layers=map&zoom=[INVZ]&x=[X]&y=[Y]&format=image/png

så funkar det out-of-the-box. Och God Jul förresten. :)



De som har kikat på Eniros nya kartor(ej satellit/flygfoto) har säkert lagt märke till att de har höjdkurvor, sankmarker, stigar m.m. inritat.

Det är dock inte allt, de är också uppdelade i 256x256 bitar som stämmer exakt med den indelning och zoomnivåer som Google Maps använder. Det enda som skiljer är y-koordinaten som verkar inverterad. Jag har hittat ett sätt komma runt detta problem med y-koordinaten och på så vis använda dessa kartor i Geocaching Live och jag kan konstatera att det ser riktigt, riktigt bra ut.

Först och främst behöver man ett php-skript som justerar y-koordinaten. Sen behöver man en website att lägga skriptet på. Nedan är två skript varav båda fungerar i PC-klienten av GC-live (användbart för att generera offlinekartor) men bara det sista fungerar i J2ME-versionen.

Variant 1:
Kod:
<?
  header("Location:http://map.eniro.com/geowebcache/service/tms1.0.0/map/".$_GET['z']."/".$_GET['x']."/".(pow(2,$_GET['z'])-1-$_GET['y']).".png");
  die();
?>

Denna variant bör ge ganska liten belastning på den server som hostar skriptet eftersom den bara dirigerar om GC live till rätt sida hos Eniro.

Variant 2:
Kod:
<?
  header("Content-type: image/png");
  $temp = file("http://map.eniro.com/geowebcache/service/tms1.0.0/map/".$_GET['z']."/".$_GET['x']."/".(pow(2,$_GET['z'])-1-$_GET['y']).".png");
  foreach ($temp as $temp2)
  {
    echo $temp2;
  }
  die();
?>

Denna variant läser hela bildfilen från Eniro och återger den sedan för GC live och detta generar så klart en del trafik både till och från servern som hostar skriptet.

Sitt skript når man sedan från GC-live genom en URL liknande denna (OBS! bara ett exempel):
http://din.website/eniro.php?x=[X]&y=[Y]&z=[INVZ]

Någon PHP- och http-guru kanske kan fler trix så det kanske går att få det att funka i j2me-versionen av GC-live utan en massa dataskyfflande?

_________________
"Most people can't bear to sit in church for an hour on Sundays. How are they supposed to live somewhere very similar to it for eternity?" - Mark Twain


Senast redigerad av kallt_kaffe mån dec 21, 2009 10:31, redigerad totalt 2 gånger.



lör dec 19, 2009 13:29
Profil
Geocachare
Användarvisningsbild

Blev medlem: ons feb 11, 2009 16:32
Inlägg: 134
Ort: Bor i Falun, Studerar i Alfta med lägenhet.
Inlägg Re: Eniros nya kartor i GC Live
fint jag provar detta nu lägger du upp informationen på gcbook.se också?

_________________
Bild
Jag cachar med en Nokia N86. Programvara på denna: Garmin Mobile XT
Karta: Friluftkartan PRO svealand


lör dec 19, 2009 15:23
Profil WWW
Geocachare
Användarvisningsbild

Blev medlem: fre sep 05, 2008 13:40
Inlägg: 617
Inlägg Re: Eniros nya kartor i GC Live
Jag nöjer mig med att lägga upp informationen här...

Exempel på skillanden mellan Google Maps och Eniro:

BildBild

_________________
"Most people can't bear to sit in church for an hour on Sundays. How are they supposed to live somewhere very similar to it for eternity?" - Mark Twain


lör dec 19, 2009 16:59
Profil
Geocachare
Användarvisningsbild

Blev medlem: sön jun 21, 2009 10:24
Inlägg: 304
Ort: Jönköping
Inlägg Re: Eniros nya kartor i GC Live
Jo viss skillnad. Verkar se riktigt trevligt ut. Går det inte bara ange INVY istället för Y i gc live? Eller finns den möjligheten bara på z-led?

Har inte orkat testa själv då det tar en halv evighet att mata in i min lur. :roll:


sön dec 20, 2009 1:00
Profil
Geocachare
Användarvisningsbild

Blev medlem: fre sep 05, 2008 13:40
Inlägg: 617
Inlägg Re: Eniros nya kartor i GC Live
linsrille skrev:
Jo viss skillnad. Verkar se riktigt trevligt ut. Går det inte bara ange INVY istället för Y i gc live? Eller finns den möjligheten bara på z-led?


Jag testade visserligen bara med PC-klienten men INVY översattes aldrig till några siffror. (kollade anropen med Fiddler2)

Citera:
Har inte orkat testa själv då det tar en halv evighet att mata in i min lur. :roll:

Jag mailar URL:erna till min notify adress (som jag har konfad i telefonen) sen väljer jag att kopiera länken i mailet och klistrar sedan in den i GC Live.

_________________
"Most people can't bear to sit in church for an hour on Sundays. How are they supposed to live somewhere very similar to it for eternity?" - Mark Twain


sön dec 20, 2009 13:23
Profil
Geocachare
Användarvisningsbild

Blev medlem: lör okt 07, 2006 8:12
Inlägg: 1292
Ort: Hufvudstaden Götheborg http://blaufish.wordpress.com/
Inlägg Re: Eniros nya kartor i GC Live
kallt_kaffe skrev:
Variant 1:
Kod:
<?
  header("Location:http://map.eniro.com/geowebcache/service/tms1.0.0/map/".$_GET['z']."/".$_GET['x']."/".(pow(2,$_GET['z'])-1-$_GET['y']).".png");
  die();
?>



Säkerhetsbugg! Den där snutten kan göra saker du inte hade meningen att du skall göra.

Kod:
bool danger = false;
danger |= ! eregi('^[a-zA-Z0-9]+$', $_GET['x']);
danger |= ! eregi('^[a-zA-Z0-9]+$', $_GET['y']);
danger |= ! eregi('^[a-zA-Z0-9]+$', $_GET['z']);
if(danger) die("security must prevail at all cost: data validation error!");


kallt_kaffe skrev:
Variant 2:
Kod:
<?
  header("Content-type: image/png");
  $temp = file("http://map.eniro.com/geowebcache/service/tms1.0.0/map/".$_GET['z']."/".$_GET['x']."/".(pow(2,$_GET['z'])-1-$_GET['y']).".png");
  foreach ($temp as $temp2)
  {
    echo $temp2;
  }
  die();
?>

Denna variant läser hela bildfilen från Eniro och återger den sedan för GC live och detta generar så klart en del trafik både till och från servern som hostar skriptet.


En tanke vore att implementera server-side caching. Till att börja med kan du ju anta att alla x,y,z varianter som finns på disk inte behöver uppdateras.
Förbättring vore att implementera E-tag mot eniro's site. Då kommer trafiken mot dem minska eftersom du oftast inte behöver göra mer än att skicka över det gamla e-tag värdet. Mot klienterna kan du ju skicka vidare e-tag också.

_________________
blaufish.wordpress.com - flickr - picasa - lifestream - väder

You define how you play. How you play defines who you are. .hack//


sön dec 20, 2009 15:38
Profil WWW
Geocachare
Användarvisningsbild

Blev medlem: sön jun 21, 2009 10:24
Inlägg: 304
Ort: Jönköping
Inlägg Re: Eniros nya kartor i GC Live
kallt_kaffe skrev:
linsrille skrev:
Jo viss skillnad. Verkar se riktigt trevligt ut. Går det inte bara ange INVY istället för Y i gc live? Eller finns den möjligheten bara på z-led?


Jag testade visserligen bara med PC-klienten men INVY översattes aldrig till några siffror. (kollade anropen med Fiddler2)

Citera:
Har inte orkat testa själv då det tar en halv evighet att mata in i min lur. :roll:

Jag mailar URL:erna till min notify adress (som jag har konfad i telefonen) sen väljer jag att kopiera länken i mailet och klistrar sedan in den i GC Live.


ok.. bara en spontan tanke med INVY.

Är inte så hightech att jag fixat notify-mail än :lol: men det börjar väl bli dags.


sön dec 20, 2009 18:53
Profil
Geocachare
Användarvisningsbild

Blev medlem: sön feb 18, 2007 21:07
Inlägg: 176
Ort: Mölltorp i Skaraborg
Inlägg Re: Eniros nya kartor i GC Live
kallt_kaffe skrev:

Variant 2:
Kod:
<?
  header("Content-type: image/png");
  $temp = file("http://map.eniro.com/geowebcache/service/tms1.0.0/map/".$_GET['z']."/".$_GET['x']."/".(pow(2,$_GET['z'])-1-$_GET['y']).".png");
  foreach ($temp as $temp2)
  {
    echo $temp2;
  }
  die();
?>

Denna variant läser hela bildfilen från Eniro och återger den sedan för GC live och detta generar så klart en del trafik både till och från servern som hostar skriptet.

Sitt skript når man sedan från GC-live genom en URL liknande denna (OBS! bara ett exempel):
http://din.website/eniro.php?x=[X]&y=[Y]&z=[INVZ]


Funkade kanon på min Nokia N82 =D> Tusen tack. Nu har jag Eniro, Google street och Google sat.

(Såg när jag kollade in en ny rondell i Karlsborg att Googlekartan är mer uppdaterad än Eniro.)
Nu har man ju flera alt. att välja mellan.

_________________
Bild


sön dec 20, 2009 22:19
Profil
Geocachare
Användarvisningsbild

Blev medlem: lör okt 07, 2006 8:12
Inlägg: 1292
Ort: Hufvudstaden Götheborg http://blaufish.wordpress.com/
Inlägg Re: Eniros nya kartor i GC Live
Kod:
<?php
$danger = false;
$danger |= ! eregi('^[a-zA-Z0-9]+$', $_GET['x']);
$danger |= ! eregi('^[a-zA-Z0-9]+$', $_GET['y']);
$danger |= ! eregi('^[a-zA-Z0-9]+$', $_GET['z']);
if($danger) die("security must prevail at all cost: data validation error!");

$url = "http://map.eniro.com/geowebcache/service/tms1.0.0/map/".$_GET['z']."/".$_GET['x']."/".(pow(2,$_GET['z'])-1-$_GET['y']).".png";
$file = 'x'.$_GET['x'].'y'.$_GET['y'].'z'.$_GET['x'].'.png';
$log = 'log.txt';

$opts = array(
  'http'=>array(
    'method'=>"GET",
    'timeout'=>10
    //'header'=>"Accept-language: en\r\n" .
    //          "Cookie: foo=bar\r\n"
  )
);

  if(file_exists($file)) {
     $data = file_get_contents($file);
     file_put_contents($log, "cached!\n", FILE_APPEND);
}
  else {
     file_put_contents($log, "download!\n", FILE_APPEND);    
     $context = stream_context_create($opts);
     $data = file_get_contents($url, FILE_BINARY, $context, 0, 200*1024);
     file_put_contents($log, $http_response_header, FILE_APPEND);
     file_put_contents($file, $data);
     print_r($info, $printr);
          file_put_contents($log, $printr, FILE_APPEND);
  }
  header("Content-type: image/png");
  header('Content-Length: ' . strlen($data) );
  ob_clean();
  flush();
  echo $data;
  die();
?>


och log-filen innehåller t.ex.
Kod:
cached!
download!
HTTP/1.1 200 OKServer: Apache-Coyote/1.1geowebcache-tile-index: [1, 1, 2]Last-Modified: Mon, 14 Dec 2009 20:30:31 GMTContent-Type: image/pngContent-Length: 3665Cache-Control: max-age=2592000Date: Sun, 20 Dec 2009 22:30:31 GMTX-Varnish: 535259032 535209807Age: 384Via: 1.1 varnishConnection: closeX-Cache: HITX-Cache-Hits: 1X-Cache-Host: mapfront07


Ser ut som om man skulle kunna implementera intelligent cachning baserat på Last-Modified och dum cachning baserat på Cache-Control: max-age.

_________________
blaufish.wordpress.com - flickr - picasa - lifestream - väder

You define how you play. How you play defines who you are. .hack//


sön dec 20, 2009 23:35
Profil WWW
Geocachare
Användarvisningsbild

Blev medlem: lör okt 07, 2006 8:12
Inlägg: 1292
Ort: Hufvudstaden Götheborg http://blaufish.wordpress.com/
Inlägg Re: Eniros nya kartor i GC Live
Serverside caching implementerat!

Kod:
<?php
define("MAXSIZE", 200*1024);
define("HTTP_LM", "Last-Modified: ");
define("HTTP_SUCCESS", "HTTP/1.1 200 OK");
define("LAST_MODIFIED_EXTENSION", ".lastmodified.txt" );

$danger = FALSE;
$danger |= ! eregi('^[a-zA-Z0-9]+$', $_GET['x']);
$danger |= ! eregi('^[a-zA-Z0-9]+$', $_GET['y']);
$danger |= ! eregi('^[a-zA-Z0-9]+$', $_GET['z']);
if($danger) die("security must prevail at all cost: data validation error!");

$url = "http://map.eniro.com/geowebcache/service/tms1.0.0/map/".$_GET['z']."/".$_GET['x']."/".(pow(2,$_GET['z'])-1-$_GET['y']).".png";
$file = 'x'.$_GET['x'].'y'.$_GET['y'].'z'.$_GET['x'].'.png';
$log = 'log.txt';

function download($url,$file,$log) {
    if(file_exists($file.LAST_MODIFIED_EXTENSION)) {
       $lastmodified = file_get_contents($file.LAST_MODIFIED_EXTENSION);
    }
   
    $http_headers = '';
    if(isset($lastmodified)) {
       $http_headers .= 'If-Modified-Since: '.$lastmodified . '\r\n';
    }
    $http_opts = array( 'method'=>"GET", 'timeout'=>10, 'header' => $http_headers );
   
   
      $opts = array( 'http'=> $http_opts );
   
          file_put_contents($log, print_r($opts, true)."\n", FILE_APPEND);
   
         $context = stream_context_create($opts);
   $data = @file_get_contents($url, FILE_BINARY, $context, 0, MAXSIZE);
          file_put_contents($log, print_r($http_response_header,true).'\n', FILE_APPEND);
   if($data==FALSE) {      
      return FALSE;
   }

   
   $downloadOK = FALSE;
   $downloadLM = "";
   
   foreach ($http_response_header as $value) {
      if($value==HTTP_SUCCESS) {
         $downloadOK = true;
      }
      else if (substr($value, 0, strlen(HTTP_LM)) == HTTP_LM) {
         $downloadLM = substr($value,strlen(HTTP_LM));
      }         
   }
   
          file_put_contents($log, 'downloadOK:'.$downloadOK.' downloadLM:'.$downloadLM."\n", FILE_APPEND);
   
   if($downloadLM) {
     file_put_contents($file.LAST_MODIFIED_EXTENSION, $downloadLM);
   }
   
   if($downloadOK) {
     file_put_contents($file, $data);
     return $data;
   }
      
   return FALSE;
  }


  $data = download($url,$file,$log);
  if($data==FALSE) {
     file_put_contents($log, "return data from file.\n", FILE_APPEND);
     if(file_exists($file)) {
      file_put_contents($log, "return cached file!\n", FILE_APPEND);
        $data = file_get_contents($file);
     }
     else {
        file_put_contents($log, "ERROR: cached file did not exist!!!.\n", FILE_APPEND);
      die();
     }
  }
  else {
     file_put_contents($log, "return data from download.\n", FILE_APPEND);
  }
 

/*
  else {
     file_put_contents($log, "download!\n", FILE_APPEND);    
     $context = stream_context_create($opts);
     $data = file_get_contents($url, FILE_BINARY, $context, 0, 200*1024);
     file_put_contents($log, $http_response_header, FILE_APPEND);
     file_put_contents($file, $data);
     print_r($info, $printr);
          file_put_contents($log, $printr, FILE_APPEND);
  }
  */
  header("Content-type: image/png");
  header('Content-Length: ' . strlen($data) );
  ob_clean();
  flush();
  echo $data;
  die();
?>


Kod:
Array
(
    [http] => Array
        (
            [method] => GET
            [timeout] => 10
            [header] =>
        )

)

Array
(
    [0] => HTTP/1.1 200 OK
    [1] => Server: Apache-Coyote/1.1
    [2] => geowebcache-tile-index: [1, 1, 2]
    [3] => Last-Modified: Mon, 14 Dec 2009 20:30:31 GMT
    [4] => Content-Type: image/png
    [5] => Content-Length: 3665
    [6] => Cache-Control: max-age=2592000
    [7] => Date: Mon, 21 Dec 2009 00:04:07 GMT
    [8] => X-Varnish: 535889409 535209807
    [9] => Age: 6000
    [10] => Via: 1.1 varnish
    [11] => Connection: close
    [12] => X-Cache: HIT
    [13] => X-Cache-Hits: 13
    [14] => X-Cache-Host: mapfront07
)
\ndownloadOK:1 downloadLM:Mon, 14 Dec 2009 20:30:31 GMT
return data from download.
Array
(
    [http] => Array
        (
            [method] => GET
            [timeout] => 10
            [header] => If-Modified-Since: Mon, 14 Dec 2009 20:30:31 GMT\r\n
        )

)

Array
(
    [0] => HTTP/1.1 304 Not Modified
    [1] => Date: Mon, 21 Dec 2009 00:04:09 GMT
    [2] => Via: 1.1 varnish
    [3] => X-Varnish: 535889589
    [4] => Last-Modified: Mon, 14 Dec 2009 20:30:31 GMT
    [5] => Connection: close
    [6] => X-Cache: HIT
    [7] => X-Cache-Hits: 14
    [8] => X-Cache-Host: mapfront07
)
\nreturn data from file.
return cached file!


_________________
blaufish.wordpress.com - flickr - picasa - lifestream - väder

You define how you play. How you play defines who you are. .hack//


mån dec 21, 2009 1:06
Profil WWW
Geocachare
Användarvisningsbild

Blev medlem: lör okt 07, 2006 8:12
Inlägg: 1292
Ort: Hufvudstaden Götheborg http://blaufish.wordpress.com/
Inlägg Re: Eniros nya kartor i GC Live
La till Last-modified hantering på kommunikationen mellan GC-Live och servercachen också, så nu är det nog komplett.

Fotnot: börjar just fundera på om man inte kunnat konfigurera upp apache med rewrite-regler och caching för att göra detta. well well, kul att få koda lite.

Kod:
<?php
define("MAXSIZE", 200*1024);
define("HTTP_LM", "Last-Modified: ");
define("HTTP_SUCCESS", "HTTP/1.1 200 OK");
define("LAST_MODIFIED_EXTENSION", ".lastmodified.txt" );

$danger = FALSE;
$danger |= ! eregi('^[a-zA-Z0-9]+$', $_GET['x']);
$danger |= ! eregi('^[a-zA-Z0-9]+$', $_GET['y']);
$danger |= ! eregi('^[a-zA-Z0-9]+$', $_GET['z']);
if($danger) die("security must prevail at all cost: data validation error!");

$url = "http://map.eniro.com/geowebcache/service/tms1.0.0/map/".$_GET['z']."/".$_GET['x']."/".(pow(2,$_GET['z'])-1-$_GET['y']).".png";
$file = 'x'.$_GET['x'].'y'.$_GET['y'].'z'.$_GET['x'].'.png';
$log = 'log.txt';

function download($url,$file,$log) {
    if(file_exists($file.LAST_MODIFIED_EXTENSION)) {
       $lastmodified = file_get_contents($file.LAST_MODIFIED_EXTENSION);
    }
   
    $http_headers = '';
    if(isset($lastmodified)) {
       $http_headers .= 'If-Modified-Since: '.$lastmodified . '\r\n';
    }
    $http_opts = array( 'method'=>"GET", 'timeout'=>10, 'header' => $http_headers );
   
   
      $opts = array( 'http'=> $http_opts );
   
          file_put_contents($log, print_r($opts, true)."\n", FILE_APPEND);
   
         $context = stream_context_create($opts);
   $data = @file_get_contents($url, FILE_BINARY, $context, 0, MAXSIZE);
          file_put_contents($log, print_r($http_response_header,true)."\n", FILE_APPEND);
   if($data==FALSE) {      
      return FALSE;
   }

   
   $downloadOK = FALSE;
   $downloadLM = "";
   
   foreach ($http_response_header as $value) {
      if($value==HTTP_SUCCESS) {
         $downloadOK = true;
      }
      else if (substr($value, 0, strlen(HTTP_LM)) == HTTP_LM) {
         $downloadLM = substr($value,strlen(HTTP_LM));
      }         
   }
   
          file_put_contents($log, 'downloadOK:'.$downloadOK.' downloadLM:'.$downloadLM."\n", FILE_APPEND);
   
   if($downloadLM) {
     file_put_contents($file.LAST_MODIFIED_EXTENSION, $downloadLM);
   }
   
   if($downloadOK) {
     file_put_contents($file, $data);
     return $data;
   }
      
   return FALSE;
  }


  $data = download($url,$file,$log);
  if($data==FALSE) {
     file_put_contents($log, "return data from file.\n", FILE_APPEND);
     if(file_exists($file)) {
      file_put_contents($log, "return cached file!\n", FILE_APPEND);
        $data = file_get_contents($file);
     }
     else {
        file_put_contents($log, "ERROR: cached file did not exist!!!\n", FILE_APPEND);
      die();
     }
  }
  else {
     file_put_contents($log, "return data from download.\n", FILE_APPEND);
  }

  $lastmodified = file_get_contents($file.LAST_MODIFIED_EXTENSION);
  if($lastmodified) {
     header('Last-modified: ' . $lastmodified);
  }
  if (@strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == @strtotime($lastmodified)) {
     file_put_contents($log, "Client allready has latest file. Don't send any data.\n", FILE_APPEND);
     header("HTTP/1.1 304 Not Modified");
     die();
  }
 
  header("Content-type: image/png");
  header('Content-Length: ' . strlen($data) );
  ob_clean();
  flush();
  echo $data;
  die();
?>


log:
Kod:
Array
(
    [http] => Array
        (
            [method] => GET
            [timeout] => 10
            [header] =>
        )

)

Array
(
    [0] => HTTP/1.1 200 OK
    [1] => Server: Apache-Coyote/1.1
    [2] => geowebcache-tile-index: [1, 1, 2]
    [3] => Last-Modified: Mon, 14 Dec 2009 20:30:31 GMT
    [4] => Content-Type: image/png
    [5] => Content-Length: 3665
    [6] => Cache-Control: max-age=2592000
    [7] => Date: Mon, 21 Dec 2009 00:50:57 GMT
    [8] => X-Varnish: 536045850 535209807
    [9] => Age: 8810
    [10] => Via: 1.1 varnish
    [11] => Connection: close
    [12] => X-Cache: HIT
    [13] => X-Cache-Hits: 20
    [14] => X-Cache-Host: mapfront07
)

downloadOK:1 downloadLM:Mon, 14 Dec 2009 20:30:31 GMT
return data from download.
Array
(
    [http] => Array
        (
            [method] => GET
            [timeout] => 10
            [header] => If-Modified-Since: Mon, 14 Dec 2009 20:30:31 GMT\r\n
        )

)

Array
(
    [0] => HTTP/1.1 304 Not Modified
    [1] => Date: Mon, 21 Dec 2009 00:51:02 GMT
    [2] => Via: 1.1 varnish
    [3] => X-Varnish: 536046075
    [4] => Last-Modified: Mon, 14 Dec 2009 20:30:31 GMT
    [5] => Connection: close
    [6] => X-Cache: HIT
    [7] => X-Cache-Hits: 21
    [8] => X-Cache-Host: mapfront07
)

return data from file.
return cached file!
Client allready has latest file. Don't send any data.

_________________
blaufish.wordpress.com - flickr - picasa - lifestream - väder

You define how you play. How you play defines who you are. .hack//


mån dec 21, 2009 1:54
Profil WWW
Geocachare
Användarvisningsbild

Blev medlem: fre sep 05, 2008 13:40
Inlägg: 617
Inlägg Re: Eniros nya kartor i GC Live
Blaufish skrev:
kallt_kaffe skrev:
Variant 1:
Kod:
<?
  header("Location:http://map.eniro.com/geowebcache/service/tms1.0.0/map/".$_GET['z']."/".$_GET['x']."/".(pow(2,$_GET['z'])-1-$_GET['y']).".png");
  die();
?>



Säkerhetsbugg! Den där snutten kan göra saker du inte hade meningen att du skall göra.


Spännande! Jag är inte bara en glad PHP-amatör utan också en nyfiken filur, iaf när det gäller säkerhetshål...

Fördjupa gärna... Ta det i PM om du inte vill gå offtopic här eller av någon annan anledning inte svara publikt.

_________________
"Most people can't bear to sit in church for an hour on Sundays. How are they supposed to live somewhere very similar to it for eternity?" - Mark Twain


mån dec 21, 2009 8:37
Profil
Geocachare
Användarvisningsbild

Blev medlem: fre sep 05, 2008 13:40
Inlägg: 617
Inlägg Re: Eniros nya kartor i GC Live
Hehe... Ledsen att behöva förstöra kodningsnöjet här men jag gjorde en djupdykning i dokumentationen för tilecache programvaran som Eniro använder och den stöder en mängd format. Bl.a. Google Maps formatet...

Så denna URL löser alla problem och gör alla roliga PHP-hack onödiga:

Kod:
http://map.eniro.com/geowebcache/service/gmaps?layers=map&zoom=[INVZ]&x=[X]&y=[Y]&format=image/png

_________________
"Most people can't bear to sit in church for an hour on Sundays. How are they supposed to live somewhere very similar to it for eternity?" - Mark Twain


mån dec 21, 2009 10:25
Profil
Geocachare
Användarvisningsbild

Blev medlem: fre sep 05, 2008 13:40
Inlägg: 617
Inlägg Re: Eniros nya kartor i GC Live
kallt_kaffe skrev:
Hehe... Ledsen att behöva förstöra kodningsnöjet här men jag gjorde en djupdykning i dokumentationen för tilecache programvaran som Eniro använder och den stöder en mängd format. Bl.a. Google Maps formatet...

Så denna URL löser alla problem och gör alla roliga PHP-hack onödiga:

Kod:
http://map.eniro.com/geowebcache/service/gmaps?layers=map&zoom=[INVZ]&x=[X]&y=[Y]&format=image/png


Jag tror man kan skippa &format=image/png om man vill också så blir det lite mindre att knappa in. Verkar iaf så när jag testar i webbrowsern.

_________________
"Most people can't bear to sit in church for an hour on Sundays. How are they supposed to live somewhere very similar to it for eternity?" - Mark Twain


mån dec 21, 2009 11:57
Profil
Geocachare
Användarvisningsbild

Blev medlem: lör okt 07, 2006 8:12
Inlägg: 1292
Ort: Hufvudstaden Götheborg http://blaufish.wordpress.com/
Inlägg Re: Eniros nya kartor i GC Live
det är främst http://en.wikipedia.org/wiki/HTTP_response_splitting jag avsåg. men mer allmänt; koden lämnade över kontrollen över vad den gjorde till den som anroppade. Radmatningar, &-tecken m.m. skulle ändra beteendet på hur din applikation fungerade.

Generellt sätt skall kod aldrig skrivas så att indatan styr vad som händer. Ett alternativ till indatavalidering vore göra urlencode på parametrarna före användning. Fördelaktigt att göra både-och (security in depth; om första skyddet fallerar så kan skydd två fortfarande skydda oss).

I många fall finns bra API:er för att göra rätt utan att behöva gå ner på en så låg nivå, t.ex. parameteriserade sql frågor. (PHP har historiskt sätt varit dåliga på att ge utvecklarna bra API:er, vilket gjort det lite överrepresenterat när det gäller säkerhetshål. Men de bättrar upp lite sakta men säkert)

_________________
blaufish.wordpress.com - flickr - picasa - lifestream - väder

You define how you play. How you play defines who you are. .hack//


mån dec 21, 2009 12:27
Profil WWW
Visa inlägg nyare än:  Sortera efter  
Ny tråd Svara på tråd  [ 43 inlägg ]  Gå till sida 1, 2, 3  Nästa


Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 3 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori

Sök efter:
Hoppa till: