diff --git a/config/site/list.php b/config/site/list.php
new file mode 100644
index 0000000000..33381c9764
--- /dev/null
+++ b/config/site/list.php
@@ -0,0 +1,172 @@
+
+
OsmAnd Local Indexes List
+
+
+Osmand Local Indexes List
+
+file = $file;
+ $this->mtime = $mtime;
+ $this->date = $date;
+ $this->size = $size;
+ $this->description = $description;
+ }
+
+ static function cmp_string($a, $b)
+ {
+ $al = strtolower($a);
+ $bl = strtolower($b);
+ if ($al == $bl) {
+ return 0;
+ }
+ return ($al > $bl) ? +1 : -1;
+ }
+
+ /* This is the static comparing function: */
+ static function cmp_file($a, $b)
+ {
+ return Download::cmp_string($a->file,$b->file);
+ }
+
+
+ static function cmp_description($a, $b)
+ {
+ return Download::cmp_string($a->description,$b->description);
+ }
+
+ static function cmp_date($a, $b)
+ {
+ return Download::cmp_int(strtotime($a->date),strtotime($b->date));
+ }
+
+
+ static function cmp_size($a, $b)
+ {
+ return Download::cmp_int($a->size,$b->size);
+ }
+
+
+ static function cmp_int($a, $b)
+ {
+ if ($a > $b) {
+ return 1;
+ } else {
+ return -1;
+ }
+ }
+
+}
+
+
+ //echo "Searching dir";
+ // Open a known directory, and proceed to read its contents
+ $dir='indexes/';
+ $localFileName='local_list.xml';
+ if (is_dir($dir)) {
+ if (filemtime($dir) > filemtime($localFileName)) {
+ //echo "Recreating local_list.xml";
+ if ($dh = opendir($dir)) {
+ $output = new DOMDocument();
+ $output->formatOutput = true;
+
+ $outputIndexes = $output->createElement( "local_list" );
+ //$outputIndexes->setAttribute('mapversion','1');
+ $output->appendChild( $outputIndexes );
+
+ $zip = new ZipArchive();
+ while (($file = readdir($dh)) !== false) {
+ $filename = $dir . $file ; //"./test112.zip";
+ //print("processing file:" . $filename . "\n");
+ if ($zip->open($filename,ZIPARCHIVE::CHECKCONS)!==TRUE) {
+ // echo exit("cannot open <$filename>\n");
+ // print($filename . " cannot open as zip\n");
+ continue;
+ }
+ $indexName=$file;
+
+ $description = $zip->getCommentIndex(0);
+ $stat = $zip->statIndex( 0 );
+ $date= date('d.m.Y',$stat['mtime']);
+ $size= number_format((filesize($filename) / (1024.0*1024.0)), 1, '.', '');
+ $zip->close();
+ $a[] = new Download($file,$stat['mtime'],$date,$size,$description);
+
+ $out = $output->createElement("file");
+ $out -> setAttribute("file", $file);
+ $out -> setAttribute("mtime", $stat['mtime']);
+ $out -> setAttribute("date", $date);
+ $out -> setAttribute("size", $size);
+ $out -> setAttribute("description", $description);
+ $outputIndexes->appendChild($out);
+ }
+ closedir($dh);
+ //echo "Writing to file";
+ $output->save($localFileName);
+ }
+ } else {
+ //read the file
+ //echo "Reading local_list.xml";
+ $local = new DomDocument();
+ $local->load($localFileName);
+ $xpath = new DOMXpath($local);
+ $res = $xpath->query("//*[name() = 'file']");
+ if($res && $res->length > 0) {
+ foreach($res as $node) {
+ $a[] = new Download(
+ $node->getAttribute("file"),
+ $node->getAttribute("mtime"),
+ $node->getAttribute("date"),
+ $node->getAttribute("size"),
+ $node->getAttribute("description"));
+ }
+ }
+
+ }
+ } else {
+ print($dir . " not a directory!\n");
+ }
+
+$sortby = $_GET['sortby'];
+$d = $_GET['d'];
+if (!isset($sortby)) {
+ $sortby = "cmp_file";
+}
+if (!isset($d)) {
+ $d = 1;
+}
+
+usort($a, array("Download",$sortby) );
+$d=$d*1;
+if ($d == -1) {
+ $a = array_reverse($a);
+}
+$d = $d*-1;
+
+ echo "File | ".
+ "Date | ".
+ "Size | ".
+ "Description |
";
+foreach ($a as $item) {
+ echo "file\">".$item->file."".
+ " | ".$item->date.
+ " | ".$item->size.
+ " | ".$item->description.
+ " |
";
+}
+
+?>
+
+
+