| 28 |
ini_set ( "memory_limit", "40M"); |
ini_set ( "memory_limit", "40M"); |
| 29 |
#print_R($_SERVER); |
#print_R($_SERVER); |
| 30 |
require "dehs.config.inc"; |
require "dehs.config.inc"; |
| 31 |
|
require "events.class.php"; |
| 32 |
dir_ctrl($dirs); |
dir_ctrl($dirs); |
| 33 |
if (!function_exists('file_get_contents')) { |
if (!function_exists('file_get_contents')) { |
| 34 |
function file_get_contents($filename) { |
function file_get_contents($filename) { |
| 64 |
elseif (in_array("-dl_diffs",$argv) || in_array("-keep_diff",$argv)) dl_diffs($argv[2]); |
elseif (in_array("-dl_diffs",$argv) || in_array("-keep_diff",$argv)) dl_diffs($argv[2]); |
| 65 |
elseif (in_array("-keep_sources",$argv) || in_array("-download_sources",$argv)) download_sources(); |
elseif (in_array("-keep_sources",$argv) || in_array("-download_sources",$argv)) download_sources(); |
| 66 |
elseif (in_array("-db_popcon",$argv)) db_popcon($argv[2]); |
elseif (in_array("-db_popcon",$argv)) db_popcon($argv[2]); |
| 67 |
elseif (in_array("-dl_popcon",$argv) || in_array("-keep_popcon",$argv)) dl_popcon($argv[2]); |
elseif (in_array("-dl_popcon",$argv) || in_array("-keep_popcon",$argv)) dl_popcon(); |
| 68 |
elseif (in_array("-db_upstream",$argv)) db_upstream((!empty($argv[2])?$argv[2]:'%')); |
elseif (in_array("-db_upstream",$argv)) db_upstream((!empty($argv[2])?$argv[2]:'%')); |
| 69 |
elseif (in_array("-update_all",$argv)) update_all(); |
elseif (in_array("-update_all",$argv)) update_all(); |
| 70 |
elseif (in_array("-update_new",$argv)) update_new(); |
elseif (in_array("-update_new",$argv)) update_new(); |
| 185 |
$filename=$dirs['sources_dir'] . "/$dist/$section/Sources.gz"; |
$filename=$dirs['sources_dir'] . "/$dist/$section/Sources.gz"; |
| 186 |
print "\nI'm parsing $dist/$section => Sources.gz\n"; |
print "\nI'm parsing $dist/$section => Sources.gz\n"; |
| 187 |
# 1 Pacchetto - 2 versione - 3 np - 4 Directory - 5 md5 |
# 1 Pacchetto - 2 versione - 3 np - 4 Directory - 5 md5 |
| 188 |
$regexp="/Package:\s($initial.*)[^a]Binary:\s(.+)[^a]Version:\s(\d+:)?(.+)[^a]Priority.+Maintainer:.+<([^>]+)>[^a].+Directory:\s(.+)[^a]Files:.+\s(\S+)\s(\d+)\s" . '\1\S+' . "\.diff\.gz[^a](Uploaders:\s(.+)[^a])?/Ssi"; |
$regexp="/Package:\s($initial.*)[^a]Binary:\s(.+)[^a]Version:\s(\d+:)?(.+)[^a]Priority.+Maintainer:.+<([^>]+)>[^a].+Directory:\s(.+)[^a]Files:.+\s(\S{32})\s(\d+)\s" . '\1\S+' . "\.diff\.gz[^a](Uploaders:\s(.+)[^a])?(Dm-Upload-Allowed:\s(.+)[^a])?(Homepage:\s(.+)[^a])?(Vcs-Browser:\s(.+)[^a])?(Vcs-([A-Z][a-z]+):\s(.+)[^a])?(Checksums-\S+:\s(.+)[^a])?/Ssi"; |
| 189 |
$zp = gzopen($filename, "r") or die_status("Could not open $filename"); |
$zp = gzopen($filename, "r") or die_status("Could not open $filename"); |
| 190 |
$extracted=tempnam("/tmp/", "$dist_$section_Sources"); |
$extracted=tempnam("/tmp/", "$dist_$section_Sources"); |
| 191 |
exec("gzip -c -d $filename > $extracted"); |
exec("gzip -c -d $filename > $extracted"); |
| 208 |
$matches[10]=pg_escape_string($matches[10]); |
$matches[10]=pg_escape_string($matches[10]); |
| 209 |
} |
} |
| 210 |
@pg_exec($db,"INSERT INTO pkgs_atsrc (name,dist) VALUES ('$matches[1]','$dist')") OR die_status("Temp table pkgs_atsrc query error"); |
@pg_exec($db,"INSERT INTO pkgs_atsrc (name,dist) VALUES ('$matches[1]','$dist')") OR die_status("Temp table pkgs_atsrc query error"); |
| 211 |
$rst=@pg_exec($db, "INSERT INTO pkgs (name,version,dversionmangled,maint,dir,md5_atsource,bytes,dist,section,uploaders) VALUES ('$matches[1]','$matches[4]','$matches[4]','$matches[5]','$matches[6]','$matches[7]','$matches[8]','$dist','$section','$matches[10]')"); |
$rst=@pg_exec($db, "INSERT INTO pkgs (name,version,dversionmangled,maint,dir,md5_atsource,bytes,dist,section,uploaders,homepage,vcs_browser,vcs_type,vcs) VALUES ('$matches[1]','$matches[4]','$matches[4]','$matches[5]','$matches[6]','$matches[7]','$matches[8]','$dist','$section','$matches[10]','$matches[14]','$matches[16]','$matches[18]','$matches[19]')"); |
| 212 |
if (!$rst) { |
if (!$rst) { |
| 213 |
$rsql=pg_exec($db, "SELECT pkgs.version FROM pkgs WHERE name='$matches[1]' AND dist='$dist';"); |
$rsql=pg_exec($db, "SELECT pkgs.version FROM pkgs WHERE name='$matches[1]' AND dist='$dist';"); |
| 214 |
$version = $matches[4]; // just for safety |
$version = $matches[4]; // just for safety |
| 219 |
if ($version != $matches[4]) { |
if ($version != $matches[4]) { |
| 220 |
// only update the dversionmangled field if the versions differ |
// only update the dversionmangled field if the versions differ |
| 221 |
$extra = ",dversionmangled='$matches[4]'"; |
$extra = ",dversionmangled='$matches[4]'"; |
| 222 |
|
// and reset wwiz_type |
| 223 |
|
$extra = ",wwiz_type=NULL"; |
| 224 |
} |
} |
| 225 |
$rst=@pg_exec($db, "UPDATE pkgs SET name='$matches[1]',version='$matches[4]'$extra,maint='$matches[5]',dir='$matches[6]',md5_atsource='$matches[7]',bytes='$matches[8]',dist='$dist',section='$section',uploaders='$matches[10]' WHERE name='$matches[1]' AND dist='$dist'") OR die_status("\nDb adding error =>" . pg_last_error() . "\n"); |
$rst=@pg_exec($db, "UPDATE pkgs SET name='$matches[1]',version='$matches[4]'$extra,maint='$matches[5]',dir='$matches[6]',md5_atsource='$matches[7]',bytes='$matches[8]',dist='$dist',section='$section',uploaders='$matches[10]',homepage='$matches[14]',vcs_browser='$matches[16]',vcs_type='$matches[18]',vcs='$matches[19]' WHERE name='$matches[1]' AND dist='$dist'") OR die_status("\nDb adding error =>" . pg_last_error() . "\n"); |
| 226 |
} |
} |
| 227 |
$bin_names=split(",", $matches[2]); |
$bin_names=split(",", $matches[2]); |
| 228 |
foreach ($bin_names as $bin_name) { |
foreach ($bin_names as $bin_name) { |
| 249 |
function db_query($pkg,$dist='%') { |
function db_query($pkg,$dist='%') { |
| 250 |
global $dirs,$dbconn; |
global $dirs,$dbconn; |
| 251 |
$db = pg_pconnect($dbconn ) or die_status(pg_last_error($db)); |
$db = pg_pconnect($dbconn ) or die_status(pg_last_error($db)); |
| 252 |
$rsql=pg_exec($db, "SELECT pkgs.* ,mpop_inst FROM (SELECT name,MAX(binpkgs.pop_inst) AS mpop_inst FROM binpkgs GROUP BY name) |
$rsql=pg_exec($db, "SELECT * FROM pkgs |
| 253 |
AS binpkgs INNER JOIN pkgs ON pkgs.name=binpkgs.name |
WHERE name='$pkg' AND dist LIKE '$dist';"); |
|
WHERE pkgs.name='$pkg' AND dist='$dist';"); |
|
| 254 |
while ($res_array=pg_fetch_array($rsql)) { |
while ($res_array=pg_fetch_array($rsql)) { |
| 255 |
print "Package=> " . $res_array['name'] . "\n"; |
print "Package=> " . $res_array['name'] . "\n"; |
| 256 |
print "Version => " . $res_array['version'] . "\n"; |
print "Version => " . $res_array['version'] . "\n"; |
| 260 |
print "Distribution => " . $res_array['dist'] . "\n"; |
print "Distribution => " . $res_array['dist'] . "\n"; |
| 261 |
print "Section => " . $res_array['section'] . "\n"; |
print "Section => " . $res_array['section'] . "\n"; |
| 262 |
print "KBytes => " . number_format ( $res_array['bytes']/1024, 2, ",",".") . "\n"; |
print "KBytes => " . number_format ( $res_array['bytes']/1024, 2, ",",".") . "\n"; |
| 263 |
print "Pop Inst=>" . $res_array['mpop_inst'] . "\n"; |
print "Pop Inst=>" . $res_array['pop_inst'] . "\n"; |
| 264 |
if ($res_array['watch']) { |
if ($res_array['watch']) { |
| 265 |
$uscan_res=uscan_foo($res_array['name'] ,$res_array['version'],$res_array['watch']); |
$uscan_res=uscan_foo($res_array['name'] ,$res_array['version'],$res_array['watch']); |
| 266 |
print "Version Upstream => " . $uscan_res[0] . "\n"; |
print "Version Upstream => " . $uscan_res['uversion'] . "\n"; |
| 267 |
print "Watch => " . trim($res_array['watch'])."\n"; |
print "Watch => " . trim($res_array['watch'])."\n"; |
| 268 |
print "Watch Warnings => " . $uscan_res[1]; |
print "Watch Warnings => " . $uscan_res['warnings']; |
| 269 |
} |
} |
| 270 |
else print "Watch => Not present" . "\n"; |
else print "Watch => Not present" . "\n"; |
| 271 |
if ($res_array['wwiz_type']) { |
if ($res_array['wwiz_type']) { |
| 272 |
$uscan_res=uscan_foo($res_array['name'] ,$res_array['version'],$res_array['wwiz']); |
$uscan_res=uscan_foo($res_array['name'] ,$res_array['version'],$res_array['wwiz']); |
| 273 |
print "WWiz Upstream => " . $uscan_res[0] . "\n"; |
print "WWiz Upstream => " . $uscan_res['uversion'] . "\n"; |
| 274 |
print "WWiz => " . $res_array['wwiz']."\n"; |
print "WWiz => " . $res_array['wwiz']."\n"; |
| 275 |
print "WWiz Warings => " . $uscan_res[1]; |
print "WWiz Warings => " . $uscan_res['warnings']; |
| 276 |
} |
} |
| 277 |
print "\n"; |
print "\n"; |
| 278 |
} |
} |
| 321 |
# 183dea9ca3c2e35ffd6cf5eee9501c21 2941637 main/binary-i386/Packages.gz |
# 183dea9ca3c2e35ffd6cf5eee9501c21 2941637 main/binary-i386/Packages.gz |
| 322 |
} |
} |
| 323 |
|
|
| 324 |
function vers_conv($debvers) { |
function vers_conv($debvers, $extendedConv = true) { |
| 325 |
// Strip off the epoch |
// Strip off the epoch |
| 326 |
$pos = strpos($debvers, ':'); |
$pos = strpos($debvers, ':'); |
| 327 |
if ( $pos !== FALSE) { |
if ( $pos !== FALSE) { |
| 334 |
$debvers = substr($debvers, 0, $pos); |
$debvers = substr($debvers, 0, $pos); |
| 335 |
} |
} |
| 336 |
|
|
| 337 |
// strip off repacking indicators |
if ($extendedConv) { |
| 338 |
$debvers = preg_replace("/[-.+~]?(ds|dfsg|debian)(.*)/i", "", $debvers); |
// strip off repacking indicators |
| 339 |
|
$debvers = preg_replace("/[-.+~]?(ds|dfsg|debian)(.*)/i", "", $debvers); |
| 340 |
|
} |
| 341 |
|
|
| 342 |
return $debvers; |
return $debvers; |
| 343 |
} |
} |
| 344 |
function check_db() { |
function check_db() { |
| 345 |
global $dirs,$dbconn; |
global $dirs,$dbconn; |
| 346 |
$db = pg_pconnect($dbconn) or die_status(1/*pg_last_notice($db)*/); |
$db = pg_pconnect($dbconn) or die_status(1/*pg_last_notice($db)*/); |
| 347 |
if (!pg_table_exists($db, "pkgs")) { |
if (!pg_table_exists($db, "pkgs")) { |
| 348 |
pg_exec($db, "CREATE TABLE pkgs (id serial PRIMARY KEY,name text,version text, dversionmangled text,maint text, uploaders text, dir text,watch text,md5_diff text,md5_atsource text,bytes numeric,dist text,section text,up_version text,up_changes text, up_url text,watch_warn text,updated bool, keep_changes bool, wwiz text,wwiz_version text, wwiz_type text, lastcheck timestamp, homepage text, vcs_browser text, lastupvsdebsync timestamp)") or die_status('Error creating table pkgs\n'); |
pg_exec($db, "CREATE TABLE pkgs (id serial PRIMARY KEY,name text,version text, dversionmangled text,maint text, uploaders text, dir text,watch text,md5_diff text,md5_atsource text,bytes numeric,dist text,section text,up_version text,up_changes text, up_url text,watch_warn text,updated bool, keep_changes bool, wwiz text,wwiz_version text, wwiz_type text, lastcheck timestamp, homepage text, vcs text, vcs_type text, vcs_browser text, lastupvsdebsync timestamp, pop_inst numeric,pop_vote numeric)") or die_status('Error creating table pkgs\n'); |
| 349 |
pg_exec($db, "CREATE UNIQUE INDEX idxname on pkgs (name,dist)") or die_status('Errore creating index - ' . pg_last_error($db)); |
pg_exec($db, "CREATE UNIQUE INDEX idxname on pkgs (name,dist)") or die_status('Errore creating index - ' . pg_last_error($db)); |
| 350 |
pg_exec($db, "CREATE INDEX checkx on pkgs (lastcheck)") or die_status('Errore creating index - ' . pg_last_error($db)); |
pg_exec($db, "CREATE INDEX checkx on pkgs (lastcheck)") or die_status('Errore creating index - ' . pg_last_error($db)); |
| 351 |
|
pg_exec($db, "CREATE INDEX maintx on pkgs (maint)") or die_status('Errore creating index - ' . pg_last_error($db)); |
| 352 |
$sw=true; |
$sw=true; |
| 353 |
} |
} |
| 354 |
if (!pg_table_exists($db, "binpkgs")) { |
if (!pg_table_exists($db, "binpkgs")) { |
| 357 |
$sw=true; |
$sw=true; |
| 358 |
} |
} |
| 359 |
if (!pg_table_exists($db, "events")) { |
if (!pg_table_exists($db, "events")) { |
| 360 |
pg_exec($db, "CREATE TABLE events (id serial PRIMARY KEY, name text,type text, dist text, stamp timestamp, content text)") or die_status('Error creating table binpkgs\n'); |
pg_exec($db, "CREATE TABLE events (id serial PRIMARY KEY, name text,type text, dist text, stamp timestamp, content text)") or die_status('Error creating table events\n'); |
| 361 |
pg_exec($db, "CREATE UNIQUE INDEX idxevents on events (name,dist)") or die_status('Errore creating index - ' . pg_last_error($db)); |
pg_exec($db, "CREATE UNIQUE INDEX idxevents on events (name,dist,content)") or die_status('Error creating index - ' . pg_last_error($db)); |
| 362 |
pg_exec($db, "CREATE INDEX pkgxeventtype on events (name,type,dist)") or die_status('Errore creating index - ' . pg_last_error($db)); |
pg_exec($db, "CREATE INDEX pkgxeventtype on events (name,type,dist)") or die_status('Error creating index - ' . pg_last_error($db)); |
| 363 |
|
$sw=true; |
| 364 |
|
} |
| 365 |
|
if (!pg_table_exists($db, "stamps")) { |
| 366 |
|
pg_exec($db, "CREATE TABLE stamps (type text PRIMARY KEY, stamp timestamp, pid text)") or die_status('Error creating table stamps\n'); |
| 367 |
$sw=true; |
$sw=true; |
| 368 |
} |
} |
| 369 |
#if (!pg_table_exists($db,"upstream")){ |
#if (!pg_table_exists($db,"upstream")){ |
| 419 |
function db_popcon($initial='') { |
function db_popcon($initial='') { |
| 420 |
global $dirs,$dbconn; |
global $dirs,$dbconn; |
| 421 |
$db = pg_pconnect($dbconn) or die_status(pg_last_error($db)); |
$db = pg_pconnect($dbconn) or die_status(pg_last_error($db)); |
| 422 |
$filename=$dirs[popcon_dir] . "/all-popcon-results.txt.gz"; |
$filename=$dirs[popcon_dir] . "/popcon.db"; |
| 423 |
/* package name vote old recent nofiles*/ |
$popcon_db = dba_open("$filename", 'r-', 'db4'); |
| 424 |
$regexp="/Package:\s($initial\S*)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/iS"; |
|
| 425 |
$zp = gzopen($filename, "r") or die_status("Could not open $filename"); |
$rsql = pg_exec($db, "SELECT name FROM pkgs"); |
| 426 |
$tin=time(); |
|
| 427 |
if(filesize($filename)>20) { |
while ($res_array=pg_fetch_array($rsql)) { |
| 428 |
#pg_exec($db, "BEGIN TRANSACTION") OR die_status("Impossibile iniziare la transazione"); |
$package = $res_array['name']; |
| 429 |
while (!gzeof($zp)) { |
|
| 430 |
$line = gzgets ($zp,4096) ; |
if (!dba_exists('si:' . $package, $popcon_db)) { |
| 431 |
if (preg_match($regexp,$line,$matches)) { |
continue; |
|
$pop_inst = $matches[2] + $matches[3] + $matches[4] + $matches[5]; |
|
|
#print "\rName => $matches[1] Install => $matches[2] Vote => $matches[3]"; |
|
|
@pg_exec($db, "UPDATE binpkgs SET pop_inst='$pop_inst',pop_vote='$matches[2]' WHERE bin_name='$matches[1]'"); |
|
|
/*$processed++; |
|
|
$elapsed_time=time()-$tin; |
|
|
if (($elapsed_time % 20)==0 AND $updtime!=$elapsed_time) { |
|
|
$updtime=$elapsed_time; |
|
|
$wprocessed=$processed-$wprocessed; |
|
|
$avg_time=$wprocessed/20; |
|
|
$wprocessed=$processed; |
|
|
$countdown=(34701- $processed)/$avg_time; |
|
|
$last_time=time(); |
|
|
} |
|
|
print "\rProcessing Popcon: " . date("i:s",$countdown=$countdown-(time()-$last_time)) . " =>" . (34701-$processed) . " Media $avg_time"; |
|
|
$last_time=time();*/ |
|
|
} |
|
| 432 |
} |
} |
| 433 |
#pg_exec($db, "COMMIT") OR die_status("Impossibile commsionare la transazione"); |
|
| 434 |
|
$inst = dba_fetch("si:$package", $popcon_db); |
| 435 |
|
$vote = dba_fetch("sv:$package", $popcon_db); |
| 436 |
|
|
| 437 |
|
@pg_exec($db, "UPDATE pkgs SET pop_inst='$inst',pop_vote='$vote' WHERE name='$package'"); |
| 438 |
} |
} |
| 439 |
|
|
| 440 |
|
dba_close($popcon_db); |
| 441 |
@pg_close($db); |
@pg_close($db); |
| 442 |
} |
} |
| 443 |
function dl_popcon() { |
function dl_popcon() { |
| 444 |
global $dirs,$dbconn; |
global $dirs,$dbconn; |
| 445 |
$localfile=$dirs[popcon_dir] . "/all-popcon-results.txt.gz"; |
|
| 446 |
$remotefile="http://popcon.debian.org/all-popcon-results.txt.gz"; |
$localtempdir=$dirs[popcon_dir] . "/new"; |
| 447 |
@file_put_contents($localfile,file_get_contents($remotefile),'w') or die_status("Errore nello scaricare il file popcon\n"); |
dir_ctrl($localtempdir); |
| 448 |
|
|
| 449 |
|
$localfile=$dirs[popcon_dir] . "/popcon.db"; |
| 450 |
|
$remotefile='http://qa.debian.org/data/popcon/popcon.db'; |
| 451 |
|
|
| 452 |
|
$return = 0; |
| 453 |
|
$output = null; |
| 454 |
|
exec('cd ' . escapeshellarg($localtempdir) . ' && ' . |
| 455 |
|
'/usr/bin/wget -qNc ' . escapeshellarg($remotefile), $output, $return); |
| 456 |
|
|
| 457 |
|
if ($return != 0) { |
| 458 |
|
echo __FUNCTION__ . "wget exited with status $return!\n"; |
| 459 |
|
return false; |
| 460 |
|
} |
| 461 |
|
|
| 462 |
|
return copy($localtempdir . '/popcon.db', $localfile); |
| 463 |
} |
} |
| 464 |
function is_updated ($up_vers,$debian_vers, $dversionAsIs = false) { |
function is_updated ($up_vers,$debian_vers, $dversionAsIs = false) { |
| 465 |
if ($up_vers=='') return 1; |
if ($up_vers=='') return 1; |
| 466 |
|
|
| 467 |
|
$extendedConv = true; |
| 468 |
|
|
| 469 |
if ($up_vers === $debian_vers) $dversionAsIs = true; |
if ($up_vers === $debian_vers) $dversionAsIs = true; |
| 470 |
|
|
| 471 |
passthru("dpkg --compare-versions '".escapeshellarg($up_vers)."' le '" . escapeshellarg($dversionAsIs?$debian_vers:vers_conv($debian_vers)) . "'",$great); |
if (strpos(strtolower($up_vers), 'dfsg') !== false && strpos(strtolower($debian_vers), 'dfsg') !== false) { |
| 472 |
|
$extendedConv = false; |
| 473 |
|
} |
| 474 |
|
|
| 475 |
|
passthru("dpkg --compare-versions ".escapeshellarg($up_vers)." le " . escapeshellarg($dversionAsIs?$debian_vers:vers_conv($debian_vers, $extendedConv)),$great); |
| 476 |
|
|
| 477 |
return (int)!($great); |
return (int)!($great); |
| 478 |
} |
} |
| 500 |
|
|
| 501 |
$uscan_res=uscan_foo($res_array['name'],$res_array['version'],$res_array['watch']); |
$uscan_res=uscan_foo($res_array['name'],$res_array['version'],$res_array['watch']); |
| 502 |
|
|
| 503 |
#print $uscan_res[0] . "\n Name => $res_array[name]\n"; |
#print $uscan_res['uversion'] . "\n Name => $res_array[name]\n"; |
| 504 |
$version = $res_array['version']; |
$version = $res_array['version']; |
| 505 |
$dversionmangled = $res_array['version']; |
$dversionmangled = $res_array['version']; |
| 506 |
$lastupvsdebsync = $res_array['lastupvsdebsync']; |
$lastupvsdebsync = $res_array['lastupvsdebsync']; |
| 507 |
$mangle = true; |
$mangle = true; |
| 508 |
|
|
| 509 |
print "\rVersion=>" . $uscan_res[3]; |
print "\rVersion=>" . $uscan_res['dversion']; |
| 510 |
if ($uscan_res[3]!=null) $version=$uscan_res[3]; |
if ($uscan_res['dversion']!=null) $version=$uscan_res['dversion']; |
| 511 |
if ($uscan_res[5]!=null && $uscan_res[5] != vers_conv($res_array['version'])) { |
if ($uscan_res['dversionmangled']!=null && $uscan_res['dversionmangled'] != vers_conv($res_array['version'])) { |
| 512 |
$dversionmangled=$uscan_res[5]; |
$dversionmangled=$uscan_res['dversionmangled']; |
| 513 |
$mangle = false; |
$mangle = false; |
| 514 |
} |
} |
| 515 |
|
|
| 516 |
$updated = $uscan_res[4]; |
$up_url=iconv("ISO-8859-1","UTF-8",$uscan_res['uurl']); |
| 517 |
|
$up_version=iconv("ISO-8859-1","UTF-8",$uscan_res['uversion']); |
| 518 |
|
|
| 519 |
|
$updated = $uscan_res['updated']; |
| 520 |
|
|
| 521 |
/*if (!$updated)*/ { |
/*if (!$updated)*/ { |
| 522 |
$updated=is_updated($uscan_res[0], $dversionmangled, !$mangle); |
$updated=is_updated($uscan_res['uversion'], $dversionmangled, !$mangle); |
| 523 |
} |
} |
| 524 |
|
|
| 525 |
if (!$updated) { |
if (!$updated) { |
| 526 |
events::newVersion($res_array['name'], $res_array['version'], $uscan_res[0], $res_array['dist']); |
events::newVersion($res_array['name'], $res_array['version'], $uscan_res['uversion'], $res_array['dist'], $up_url); |
| 527 |
} else { |
} else { |
| 528 |
$lastupvsdebsync = sqldate(); |
$lastupvsdebsync = sqldate(); |
| 529 |
} |
} |
| 532 |
$lastupvsdebsync = sqldate(0); |
$lastupvsdebsync = sqldate(0); |
| 533 |
} |
} |
| 534 |
|
|
| 535 |
if ($uscan_res[0]!=$res_array[up_version]) ($keep_changes=1); |
if ($uscan_res['uversion']!=$res_array[up_version]) ($keep_changes=1); |
| 536 |
else $keep_changes=0; |
else $keep_changes=0; |
| 537 |
|
|
|
$up_url=iconv("ISO-8859-1","UTF-8",$uscan_res[2]); |
|
|
$up_version=iconv("ISO-8859-1","UTF-8",$uscan_res[0]); |
|
|
|
|
| 538 |
$watch_warn=''; |
$watch_warn=''; |
| 539 |
if($uscan_res[1] != null) { |
if($uscan_res['warnings'] != null) { |
| 540 |
$watch_warn=pg_escape_string(iconv("ISO-8859-1","UTF-8", $uscan_res[1])); |
$watch_warn=pg_escape_string(iconv("ISO-8859-1","UTF-8", $uscan_res['warnings'])); |
| 541 |
} |
} |
| 542 |
|
|
| 543 |
pg_exec($db, "UPDATE pkgs SET up_version='" . pg_escape_string($up_version) . "', dversionmangled='".pg_escape_string($dversionmangled)."',up_url='" . pg_escape_string($up_url) . "', watch_warn='" . $watch_warn . "',keep_changes='$keep_changes', wwiz_version=NULL, wwiz_type=NULL, wwiz=NULL, updated='$updated', lastcheck=now(), lastupvsdebsync='$lastupvsdebsync' WHERE id=$res_array[id]") or die_status("Error in update pkgs upstream"); |
pg_exec($db, "UPDATE pkgs SET up_version='" . pg_escape_string($up_version) . "', dversionmangled='".pg_escape_string($dversionmangled)."',up_url='" . pg_escape_string($up_url) . "', watch_warn='" . $watch_warn . "',keep_changes='$keep_changes', wwiz_version=NULL, wwiz_type=NULL, wwiz=NULL, updated='$updated', lastcheck=now(), lastupvsdebsync='$lastupvsdebsync' WHERE id=$res_array[id]") or die_status("Error in update pkgs upstream"); |
| 544 |
#print "\rUpdated " . $res_array['name'] . " => $updated Up Version => ". $uscan_res[0]; |
#print "\rUpdated " . $res_array['name'] . " => $updated Up Version => ". $uscan_res['uversion']; |
| 545 |
print "\t Upstream left => " . $tot --; |
print "\t Upstream left => " . $tot --; |
| 546 |
# } |
# } |
| 547 |
# else print "Added ". $res_array['name'] ."\n"; |
# else print "Added ". $res_array['name'] ."\n"; |
| 549 |
|
|
| 550 |
# print "Package=> " . $res_array['name'] . "\n"; |
# print "Package=> " . $res_array['name'] . "\n"; |
| 551 |
# print "Version => " . $res_array['version'] . "\n"; |
# print "Version => " . $res_array['version'] . "\n"; |
| 552 |
# print "Upstream Ver=> " . $uscan_res[0] . "\n"; |
# print "Upstream Ver=> " . $uscan_res['uversion'] . "\n"; |
| 553 |
#print "Watch warings=> " . $uscan_res[1] . "\n"; |
#print "Watch warings=> " . $uscan_res['warnings'] . "\n"; |
| 554 |
# } |
# } |
| 555 |
} |
} |
| 556 |
print "\n"; |
print "\n"; |
| 677 |
if ($warnings=='') $warnings=null; |
if ($warnings=='') $warnings=null; |
| 678 |
if ($deb_mangled_vers=='') $deb_mangled_vers=null; |
if ($deb_mangled_vers=='') $deb_mangled_vers=null; |
| 679 |
|
|
| 680 |
return array($upstream, $warnings, $up_url, $deb_vers, $updated, $deb_mangled_vers); |
$ret = array(); |
| 681 |
|
$ret['uversion'] = $upstream; |
| 682 |
|
$ret['warnings'] = $warnings; |
| 683 |
|
$ret['uurl'] = $up_url; |
| 684 |
|
$ret['dversion'] = $deb_vers; |
| 685 |
|
$ret['dversionmangled'] = $deb_mangled_vers; |
| 686 |
|
$ret['updated'] = $updated; |
| 687 |
|
|
| 688 |
|
return $ret; |
| 689 |
} |
} |
| 690 |
function db_up_error() { |
function db_up_error() { |
| 691 |
global $dbconn; |
global $dbconn; |
| 763 |
|
|
| 764 |
$postWHERE = ''; |
$postWHERE = ''; |
| 765 |
if ($checkStamps) { |
if ($checkStamps) { |
| 766 |
$postWHERE = "AND (lastcheck<='".sqldate(time() - ($minimumAge*24*3600))."' OR lastcheck IS NULL)"; |
$postWHERE = "AND (lastcheck<='".sqldate(time() - ($minimumAge*24*3600))."' OR lastcheck IS NULL)" |
| 767 |
|
. " AND wwiz_type!='no_cright' AND wwiz_type!='notmatch'"; |
| 768 |
} |
} |
| 769 |
|
|
| 770 |
$postORDER = ''; |
$postORDER = ''; |
| 772 |
$postORDER = 'LIMIT ' . $limit; |
$postORDER = 'LIMIT ' . $limit; |
| 773 |
} |
} |
| 774 |
|
|
| 775 |
$sqlstring="SELECT mpop_inst,name,pkgs.version,pkgs.dversionmangled,pkgs.section,pkgs.dist,tot_up_error, tot_avg_error_date, wwiz_version FROM pkgs INNER JOIN |
$sqlstring="SELECT name,version,dversionmangled,section,dist, wwiz_version FROM pkgs |
|
(Select max(pop_inst) as mpop_inst,SUM(up_error) as tot_up_error,AVG(avg_error_date) as tot_avg_error_date,name,dist FROM binpkgs GROUP BY name,dist HAVING max(pop_inst) IS NOT NULL) as binpkgs using(name,dist) |
|
| 776 |
WHERE (watch IS NULL OR watch='') AND name LIKE '$src_name' $postWHERE ORDER BY lastcheck DESC $postORDER"; |
WHERE (watch IS NULL OR watch='') AND name LIKE '$src_name' $postWHERE ORDER BY lastcheck DESC $postORDER"; |
| 777 |
$rsql=pg_exec($db, $sqlstring); |
$rsql=pg_exec($db, $sqlstring); |
| 778 |
|
|
| 856 |
if (empty($generatedWatches)) { |
if (empty($generatedWatches)) { |
| 857 |
$notmatch++; |
$notmatch++; |
| 858 |
$contents=iconv("ISO-8859-1","UTF-8",$contents); |
$contents=iconv("ISO-8859-1","UTF-8",$contents); |
| 859 |
pg_exec($db, "UPDATE pkgs SET wwiz_version=NULL, wwiz='" . pg_escape_string($contents) . "', wwiz_type='notmatch', up_url='', up_changes='',keep_changes='f' where name='" . pg_escape_string($res_array[name]) . "' AND dist='" . $res_array[dist] ."'"); |
pg_exec($db, "UPDATE pkgs SET wwiz_version=NULL, wwiz='" . pg_escape_string($contents) . "', wwiz_type='notmatch', up_url='', up_changes='', lastcheck=now(), keep_changes='f' where name='" . pg_escape_string($res_array[name]) . "' AND dist='" . $res_array[dist] ."'"); |
| 860 |
|
|
| 861 |
} else { |
} else { |
| 862 |
|
|
| 874 |
|
|
| 875 |
$uscan_res=uscan_foo($res_array['name'] ,$res_array['version'],$watch); |
$uscan_res=uscan_foo($res_array['name'] ,$res_array['version'],$watch); |
| 876 |
|
|
| 877 |
if ($uscan_res[0] && levenshtein($uscan_res[0], $res_array['version']) < strlen($res_array['version'])) { |
if ($uscan_res['uversion'] && levenshtein($uscan_res['uversion'], $res_array['version']) < strlen($res_array['version'])) { |
| 878 |
break; |
break; |
| 879 |
} |
} |
| 880 |
} |
} |
| 881 |
|
|
| 882 |
if ($uscan_res[1] && !$uscan_res[0]) { |
if ($uscan_res['warnings'] && !$uscan_res['uversion']) { |
| 883 |
pg_exec($db, "UPDATE pkgs SET wwiz_version=NULL, wwiz='" . pg_escape_string($uscan_res[1]) . "', wwiz_type='error', up_url='', up_changes='', keep_changes='f' where name='" . pg_escape_string($res_array[name]) . "' AND dist='" . $res_array[dist] ."'"); |
pg_exec($db, "UPDATE pkgs SET wwiz_version=NULL, wwiz='" . pg_escape_string($uscan_res['warnings']) . "', wwiz_type='error', up_url='', up_changes='', lastcheck=now(), keep_changes='f' where name='" . pg_escape_string($res_array[name]) . "' AND dist='" . $res_array[dist] ."'"); |
| 884 |
$errors++; |
$errors++; |
| 885 |
} else { |
} else { |
| 886 |
$verok++; |
$verok++; |
| 887 |
if ($uscan_res[0] != $res_array['wwiz_version']) { |
if ($uscan_res['uversion'] != $res_array['wwiz_version']) { |
| 888 |
$keep_changes = 1; |
$keep_changes = 1; |
| 889 |
} else { |
} else { |
| 890 |
$keep_changes = 0; |
$keep_changes = 0; |
| 891 |
} |
} |
| 892 |
|
|
| 893 |
$dversionmangled = $res_array[version]; |
$dversionmangled = $res_array[version]; |
| 894 |
if ($uscan_res[5]!=null && $uscan_res[5] != vers_conv($res_array['version'])) $dversionmangled=$uscan_res[5]; |
if ($uscan_res['dversionmangled']!=null && $uscan_res['dversionmangled'] != vers_conv($res_array['version'])) $dversionmangled=$uscan_res['dversionmangled']; |
| 895 |
|
|
| 896 |
$updated = $uscan_res[4]; |
$updated = $uscan_res['updated']; |
| 897 |
/*if ($updated)*/ { |
/*if ($updated)*/ { |
| 898 |
$updated = is_updated($uscan_res[0], $dversionmangled, $dversionmangled != $uscan_res[5]); |
$updated = is_updated($uscan_res['uversion'], $dversionmangled, $dversionmangled != $uscan_res['dversionmangled']); |
| 899 |
} |
} |
| 900 |
|
|
| 901 |
/*if (!$updated) { |
/*if (!$updated) { |
| 902 |
events::newVersion($res_array['name'], $res_array['version'], $uscan_res[0], $res_array['dist']); |
events::newVersion($res_array['name'], $res_array['version'], $uscan_res['uversion'], $res_array['dist']); |
| 903 |
}*/ |
}*/ |
| 904 |
|
|
| 905 |
pg_exec($db, "UPDATE pkgs SET wwiz='" . pg_escape_string($watch) ."', wwiz_type='watch', wwiz_version='" . pg_escape_string($uscan_res[0]) . "',dversionmangled='".pg_escape_string($dversionmangled)."', up_url='" . pg_escape_string($uscan_res[2]) . "', keep_changes='$keep_changes', updated='$updated', lastcheck=now() where name='" . pg_escape_string($res_array[name]) . "' AND dist='" . $res_array[dist] ."'"); |
pg_exec($db, "UPDATE pkgs SET wwiz='" . pg_escape_string($watch) ."', wwiz_type='watch', wwiz_version='" . pg_escape_string($uscan_res['uversion']) . "',dversionmangled='".pg_escape_string($dversionmangled)."', up_url='" . pg_escape_string($uscan_res['uurl']) . "', keep_changes='$keep_changes', updated='$updated', lastcheck=now() where name='" . pg_escape_string($res_array[name]) . "' AND dist='" . $res_array[dist] ."'"); |
| 906 |
} |
} |
| 907 |
} |
} |
| 908 |
} else { |
} else { |
| 971 |
$intime=gmdate('D, d M Y H:i:s \C\E\S\T',time()+3600*2); |
$intime=gmdate('D, d M Y H:i:s \C\E\S\T',time()+3600*2); |
| 972 |
echo __FUNCTION__ . ' started the ' . $intime . "\n"; |
echo __FUNCTION__ . ' started the ' . $intime . "\n"; |
| 973 |
db_add(); |
db_add(); |
|
dl_popcon(); |
|
|
db_popcon(); |
|
| 974 |
dl_diffs(); |
dl_diffs(); |
| 975 |
db_up_error(); |
db_up_error(); |
| 976 |
db_upstream('%', in_array('all', $timeStamp_basedCheck)); |
db_upstream('%', in_array('all', $timeStamp_basedCheck)); |
| 989 |
$intime=gmdate('D, d M Y H:i:s \C\E\S\T',time()+3600*2); |
$intime=gmdate('D, d M Y H:i:s \C\E\S\T',time()+3600*2); |
| 990 |
echo __FUNCTION__ . ' started the ' . $intime . "\n"; |
echo __FUNCTION__ . ' started the ' . $intime . "\n"; |
| 991 |
db_add(); |
db_add(); |
|
dl_popcon(); |
|
|
db_popcon(); |
|
| 992 |
|
|
| 993 |
global $dbconn; |
global $dbconn; |
| 994 |
check_db(); |
check_db(); |
| 995 |
$db = pg_pconnect($dbconn); |
$db = pg_pconnect($dbconn); |
| 996 |
$sql="SELECT name FROM pkgs WHERE (md5_diff!=md5_atsource or md5_diff is null)"; |
$sql="SELECT name FROM pkgs WHERE (md5_diff!=md5_atsource or md5_diff is null) or (lastcheck is null and watch is not null)"; |
| 997 |
$rsql=pg_exec($db, $sql); |
$rsql=pg_exec($db, $sql); |
| 998 |
$res_array=pg_fetch_all($rsql); |
$res_array=pg_fetch_all($rsql); |
| 999 |
pg_close($db); |
pg_close($db); |
| 1052 |
} else if (is_int($msg) && $status == 1 /* default */) { |
} else if (is_int($msg) && $status == 1 /* default */) { |
| 1053 |
die($msg); |
die($msg); |
| 1054 |
} else { |
} else { |
| 1055 |
echo $msg; |
fwrite(STDERR, $msg); |
| 1056 |
die($status); |
die($status); |
| 1057 |
} |
} |
| 1058 |
} |
} |
| 1059 |
|
|
|
class events |
|
|
{ |
|
|
|
|
|
function DB($db = null) |
|
|
{ |
|
|
static $_db; |
|
|
|
|
|
if ($db === null) { |
|
|
return $_db; |
|
|
} |
|
|
$_db = $db; |
|
|
} |
|
|
|
|
|
function newVersion($sourcePackage, $currentVersion, $newVersion, $distribution, $downloadLink = '') |
|
|
{ |
|
|
global $base, $sendNotifications; |
|
|
|
|
|
if (!$sendNotifications) { |
|
|
return null; |
|
|
} |
|
|
|
|
|
$eventsId = events::_searchEvent(__FUNCTION__, $sourcePackage, $newVersion); |
|
|
|
|
|
if (!empty($eventsId)) { |
|
|
echo "\nSkipping ".__FUNCTION__." event for v$newVersion of $sourcePackage; already sent"; |
|
|
return null; |
|
|
} |
|
|
|
|
|
$tpl = file_get_contents($base . '/tpls/new_version.mail.tpl'); |
|
|
|
|
|
$search = array(); |
|
|
$replace = array(); |
|
|
|
|
|
$search [] = '#PACKAGE#'; |
|
|
$replace[] = $sourcePackage; |
|
|
$search [] = '#DVERSION#'; |
|
|
$replace[] = $currentVersion; |
|
|
$search [] = '#UVERSION#'; |
|
|
$replace[] = $newVersion; |
|
|
$search [] = '#DISTRO#'; |
|
|
$replace[] = $distribution; |
|
|
$search [] = '#LINK#'; |
|
|
$replace[] = $downloadLink; |
|
|
|
|
|
$message = str_replace($search, $replace, $tpl); |
|
|
$subject = events::_extractHeader('subject', $message); |
|
|
$to = events::_extractHeader('to', $message); |
|
|
$bcc = events::_extractHeader('bcc', $message); |
|
|
|
|
|
$extraHeaders = events::_getDefaultExtraHeaders(); |
|
|
$extraHeaders[] = 'X-DEHS-UVERSION: ' . $newVersion; |
|
|
$extraHeaders[] = 'BCC: ' . $bcc; |
|
|
|
|
|
if (!mail($to, $subject, $message, implode("\r\n", $extraHeaders), escapeshellarg($to))) |
|
|
return false; |
|
|
|
|
|
events::_recordEvent(__FUNCTION__, $sourcePackage, $distribution, $newVersion); |
|
|
} |
|
|
|
|
|
function _extractHeader($header, &$message) |
|
|
{ |
|
|
$regex = '/' . preg_quote($header, '/') . ':([ \t]*)(.*)/i'; |
|
|
|
|
|
$matches = array(); |
|
|
|
|
|
if (preg_match($regex, $message, $matches)) { |
|
|
|
|
|
$spacer = $matches[1]; |
|
|
$value = $matches[2]; |
|
|
|
|
|
$message = trim(preg_replace($regex, '', $message)); |
|
|
|
|
|
return $value; |
|
|
|
|
|
} |
|
|
return false; |
|
|
} |
|
|
|
|
|
function _getDefaultExtraHeaders() |
|
|
{ |
|
|
global $notificationsMailFrom; |
|
|
$headers = array(); |
|
|
|
|
|
$headers[] = 'From: ' . $notificationsMailFrom; |
|
|
// $headers[] = 'X-PTS-Approved: sure'; |
|
|
$headers[] = 'X-BY-DEHS: sure'; |
|
|
|
|
|
return $headers; |
|
|
} |
|
|
|
|
|
function _recordEvent($eventType, $packageName, $distribution, $content) |
|
|
{ |
|
|
$db = events::DB(); |
|
|
|
|
|
$eventType = pg_escape_string($eventType); |
|
|
$packageName = pg_escape_string($packageName); |
|
|
$distribution = pg_escape_string($distribution); |
|
|
$content = pg_escape_string($content); |
|
|
|
|
|
pg_exec($db, "INSERT INTO events (name,type,dist,content,stamp) VALUES ('$packageName','$eventType','$distribution','$content',now())") OR die_status("Failed to record event: $packageName|$eventType|$distribution|$content"); |
|
|
} |
|
|
|
|
|
function _searchEvent($eventType, $packageName, $contentSearch, $distribution = '') |
|
|
{ |
|
|
$db = events::DB(); |
|
|
|
|
|
$eventType = pg_escape_string($eventType); |
|
|
$packageName = pg_escape_string($packageName); |
|
|
|
|
|
$result = pg_exec($db, "SELECT id FROM events WHERE name='$packageName' and type='$eventType' ".($distribution? "and dist='$distribution'":'')." and content LIKE '$contentSearch'"); |
|
|
return pg_fetch_all($result); |
|
|
} |
|
|
|
|
|
} |
|
|
|
|
| 1060 |
function sqldate($timestamp=null) { |
function sqldate($timestamp=null) { |
| 1061 |
if ($timestamp===null) $timestamp=time(); |
if ($timestamp===null) $timestamp=time(); |
| 1062 |
return gmdate("Y-m-d H:i:s", $timestamp); |
return gmdate("Y-m-d H:i:s", $timestamp); |