#!/usr/bin/php [ 'FOLDER' => '<%= node[:planet][:dump][:xml_directory] %>/'.$_YEAR.'/', 'REGEX' => '/^(planet|changesets|discussions)\-\d{6}(\-nolt)?\.osm\.(bz2|gz)$/', 'DIR_PREFIX' => 'planet/'.$_YEAR.'/' ], "history_bz2" => [ 'FOLDER' => '<%= node[:planet][:dump][:xml_history_directory] %>/'.$_YEAR.'/', 'REGEX' => '/^(history)\-\d{6}(\-nolt)?\.osm\.(bz2|gz)$/', 'DIR_PREFIX' => 'planet/full-history/'.$_YEAR.'/' ], "planet_pbf" => [ 'FOLDER' => '<%= node[:planet][:dump][:pbf_directory] %>/', 'REGEX' => '/^(planet)\-\d{6}(\-nolt)?\.osm\.pbf$/', 'DIR_PREFIX' => 'pbf/' ], "history_pbf" => [ 'FOLDER' => '<%= node[:planet][:dump][:pbf_history_directory] %>/', 'REGEX' => '/^(history)\-\d{6}(\-nolt)?\.osm\.pbf$/', 'DIR_PREFIX' => 'pbf/full-history/' ] ]; $_PLANET_HTACCESS = realpath('<%= node[:planet][:dump][:xml_directory] %>/..').'/.htaccess'; function _MIRROR_FILE_SIZE($url) { $ch = @curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_NOBODY, TRUE); curl_setopt($ch, CURLOPT_VERBOSE, FALSE); $curl_response = @curl_exec($ch); $curl_result = curl_getinfo($ch); if ($curl_result['http_code']!='200') return FALSE; return ($curl_result['download_content_length']); } if (!is_writable($_PLANET_HTACCESS)) die('File '.$_PLANET_HTACCESS.' is not writable by current user.'."\n"); $htaccess_contents = file_get_contents($_PLANET_HTACCESS); $htaccess_handle = fopen($_PLANET_HTACCESS, 'a'); foreach ($_FOLDERS as $FOLDER) { $_PLANET_FOLDER = $FOLDER["FOLDER"]; $_PLANET_REGEX = $FOLDER["REGEX"]; if (!(is_dir($_PLANET_FOLDER))) { continue; } if ($dh = opendir($_PLANET_FOLDER)) { while (($file = readdir($dh)) !== false ) { if (preg_match($_PLANET_REGEX, $file)) { $file_slashed = $FOLDER['DIR_PREFIX'].str_replace(array('.','-'), array('\.','\-'), $file); if (strpos($htaccess_contents, $file_slashed) === false) { $file_size = filesize($_PLANET_FOLDER.$file); sleep(rand(2,5)); $file_mirror_size = _MIRROR_FILE_SIZE($_MIRROR.$FOLDER['DIR_PREFIX'].$file); if ($file_size==$file_mirror_size) { echo 'Adding: '.$file."\n"; fwrite($htaccess_handle, 'RewriteRule'."\t". '^('.$file_slashed.')$'."\t".$_MIRROR.'$1'."\t".'[R,L]'."\n"); } } } } closedir($dh); } } fclose($htaccess_handle);