#!/usr/bin/php rowCount()) { $obj=new sql_cache_entry($r->fetch(PDO::FETCH_ASSOC)); if ($obj->file != $file) unlink(CACHE."/$obj->file"); } else { $obj=new sql_cache_entry(); $obj->type=$type; $obj->key=$key; } $obj->file=$file; $obj->write(); } return true; } return false; } function update_cache_ftp($url) { $args=array('-c', '--timeout=20'); $pattern=substr($url, strrpos($url, '/')+1); $url=substr($url, 0, strlen($url)-strlen($pattern)-1); if (strpos($url, '/') === false) { $server=$url; $sdir=null; } else { list($server, $sdir)=explode('/', $url, 2); } if (strpos($server, '@') === false) { $user='anonymous'; $pass='ingenue@soc.dev.gentoo.org'; } else { list($user, $server)=explode('@', $server); if (strpos($user, ':') === false) { $pass='ingenue@soc.dev.gentoo.org'; $args[]=escapeshellarg("--password=$pass"); } else list($user, $pass)=explode(':', $user, 2); $args[]=escapeshellarg("--user=$user"); } if (strpos($server, ':') === false) $port=21; else list($server, $port)=explode(':', $server); echo "Connecting to $server:$port..."; $ftp=ftp_connect($server, $port, 20); if (!$ftp) return false; // Timeout=20 echo "done\n"; echo "Logging in as $user..."; $r=ftp_login($ftp, $user, $pass); if (!$r) return false; echo "done\n"; echo "Changing dir to /$sdir..."; $r=ftp_chdir($ftp, '/'.$sdir); if (!$r) return false; echo "done\n"; echo "Getting list of files..."; $list=ftp_nlist($ftp, '.'); echo "done\n"; $newest=null; $newest_id=null; foreach ($list as $file) { if (!preg_match("/^$pattern$/", $file, $match)) continue; if (isset($match[1])) { if ($match[1] > $newest_id) { $newest_id=$match[1]; $newest=$file; } } else { $mtime=ftp_mdtm($ftp, $file); if ($mtime > $newest_id) { $newest=$file; $newest_id=$mtime; } } } if ($newest === null) { echo "No files matched pattern\n"; return; } $mtime=ftp_mdtm($ftp, $newest); $size=ftp_size($ftp, $newest); ftp_close($ftp); $args[]=escapeshellarg('--directory-prefix='.TMPDIR); $args[]="ftp://$server/$sdir/$newest"; $cmd='wget '.implode(' ', $args); return array($cmd, $newest, $mtime, $size); } require_once(dirname(__FILE__).'/shared/include/includes.php'); // __DIR__ 5.3.0 require_once(SHARED.'/include/dbinit.php'); $file=fopen(CACHE.'/conf', 'r'); for ($line=fgets($file, 10240); !feof($file); $line=fgets($file, 10240)) { $line=trim($line); if (!$line || substr($line, 0, 1) == '#') continue; $array=explode("\t", $line); foreach ($array as &$val) { if (strlen($val) == 0 || strtolower($val) == 'null') $val=null; } for ($i=0; $i < 5; $i++) { if (call_user_func_array('update_cache', $array)) break; echo "Failed... sleep 5\n"; sleep(5); } } ?>