Changeset 99
- Timestamp:
- 09.12.2006 21:14:16 (2 years ago)
- Files:
-
- trunk/devel/FuzzyOcr.pm (modified) (2 diffs)
- trunk/devel/FuzzyOcr/Config.pm (modified) (13 diffs)
- trunk/devel/FuzzyOcr/Hashing.pm (modified) (5 diffs)
- trunk/devel/FuzzyOcr/Logging.pm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/devel/FuzzyOcr.pm
r98 r99 308 308 309 309 IMAGE: 310 my $haserr; 310 311 foreach my $filename (keys %imgfiles) { 311 312 my $pic = $imgfiles{$filename}; … … 324 325 325 326 #Open ERRORLOG 326 my$haserr = $Mail::SpamAssassin::Logger::LOG_SA{level} == 3;327 $haserr = $Mail::SpamAssassin::Logger::LOG_SA{level} == 3; 327 328 328 329 if ($haserr) { trunk/devel/FuzzyOcr/Config.pm
r95 r99 7 7 use FuzzyOcr::Preprocessor; 8 8 use Mail::SpamAssassin::Logger; 9 10 use Fcntl qw(O_RDWR O_CREAT); 9 11 10 12 use base 'Exporter'; … … 28 30 get_wordlist 29 31 get_mysql_ddb 32 get_db_ref 33 set_db_ref 30 34 read_words 31 35 /; … … 33 37 use constant HAS_DBI => eval { require DBI; }; 34 38 use constant HAS_DBD_MYSQL => eval { require DBD::mysql; }; 35 use constant HAS_MLDBM => eval { require MLDBM; };39 use constant HAS_MLDBM => eval { require MLDBM; require MLDBM::Sync; }; 36 40 use constant HAS_DB_FILE => eval { require DB_File; }; 37 41 use constant HAS_STORABLE => eval { require Storable; }; … … 49 53 our $tmpdir; 50 54 our @tmpdirs; 55 our $dbref; 51 56 52 57 our @bin_utils = qw/gifsicle … … 141 146 sub get_thresholds { 142 147 return \%Threshold; 148 } 149 150 sub set_db_ref { 151 $dbref = shift; 152 } 153 154 sub get_db_ref { 155 return $dbref; 143 156 } 144 157 … … 616 629 $conf->{focr_enable_image_hashing} = 0; 617 630 errorlog("Disable Image Hashing"); 618 errorlog("Missing MLDBM ") unless HAS_MLDBM;631 errorlog("Missing MLDBM and/or MLDBM::Sync") unless HAS_MLDBM; 619 632 errorlog("Missing DB_File") unless HAS_DB_FILE; 620 633 errorlog("Missing Storable") unless HAS_STORABLE; … … 624 637 use DBI; 625 638 use MLDBM qw(DB_File Storable); 639 use MLDBM::Sync; 626 640 if ($conf->{focr_enable_image_hashing} == 2 and -r $conf->{focr_digest_db}) { 627 my %DB; my $dbm; my $ err = 0;641 my %DB; my $dbm; my $sdbm; my $err = 0; 628 642 my $now = time - ($conf->{focr_db_max_days}*86400); 629 tie %DB, 'MLDBM', $conf->{focr_db_hash} or $err++;643 $sdbm = tie %DB, 'MLDBM::Sync', $conf->{focr_db_hash} or $err++; 630 644 if ($err) { 631 645 errorlog("Could not open \"$conf->{focr_db_hash}\""); 632 646 } else { 647 $sdbm->Lock; 633 648 my $hash = 0; 634 649 infolog("Expiring records prior to: ".scalar(localtime($now))); … … 662 677 $hash = scalar(keys %DB); 663 678 infolog("<$hash> Known BAD Image Hashes Available"); 679 $sdbm->UnLock; 664 680 untie %DB; 665 681 } 666 682 $err = 0; 667 tie %DB, 'MLDBM', $conf->{focr_db_safe} or $err++;683 $sdbm = tie %DB, 'MLDBM::Sync', $conf->{focr_db_safe} or $err++; 668 684 if ($err) { 669 685 errorlog("Could not open \"$conf->{focr_db_safe}\""); 670 686 } else { 687 $sdbm->Lock; 671 688 my $hash = 0; 672 689 foreach my $k (keys %DB) { … … 681 698 $hash = scalar(keys %DB); 682 699 infolog("<$hash> Known GOOD Image Hashes Available"); 700 $sdbm->UnLock; 683 701 untie %DB; 684 702 } … … 688 706 my $tab = $conf->{focr_mysql_hash}; 689 707 my $file = $conf->{focr_db_hash}; 690 my %DB; my $dbm; my $ err = 0;691 tie %DB, 'MLDBM', $file or $err++;708 my %DB; my $dbm; my $sdbm; my $err = 0; 709 $sdbm = tie %DB, 'MLDBM::Sync', $file or $err++; 692 710 if ($err) { 693 711 errorlog("Could not open \"$file\""); 694 712 } else { 713 $sdbm->ReadLock; 695 714 foreach my $k (keys %DB) { 696 715 my $dbm = $DB{$k}; … … 718 737 } 719 738 } 739 $sdbm->UnLock; 720 740 untie %DB; 721 741 infolog("Stored [$err] Hashes in $db.$tab") if $err>0; … … 724 744 $file = $conf->{focr_db_safe}; 725 745 $err = 0; 726 tie %DB, 'MLDBM', $file or $err++;746 $sdbm = tie %DB, 'MLDBM::Sync', $file or $err++; 727 747 if ($err) { 728 748 errorlog("Could not open \"$file\""); 729 749 } else { 750 $sdbm->ReadLock; 730 751 foreach my $k (keys %DB) { 731 752 my $dbm = $DB{$k}; … … 753 774 } 754 775 } 776 $sdbm->UnLock; 755 777 untie %DB; 756 778 infolog("Stored [$err] Hashes in $db.$tab") if $err>0; trunk/devel/FuzzyOcr/Hashing.pm
r75 r99 142 142 elsif ($conf->{focr_enable_image_hashing} == 2) { 143 143 use MLDBM qw(DB_File Storable); 144 my %DB = (); my $dbm; 145 tie %DB, 'MLDBM', $dbfile, O_RDWR or $ret++; 144 use MLDBM::Sync; 145 my %DB = (); my $dbm; my $sdbm; 146 $sdbm = tie %DB, 'MLDBM::Sync', $dbfile, O_RDWR or $ret++; 146 147 if ($ret>0) { 147 148 warnlog("No Image Hash database found at \"$dbfile\", or permissions wrong."); 148 149 return (0,''); 149 150 } 151 $sdbm->Lock; 150 152 if (defined $DB{$key}) { 151 153 $dbm = $DB{$key}; … … 188 190 $DB{$key} = $dbm; 189 191 } 192 $sdbm->UnLock; 190 193 untie %DB; 191 194 return ($ret,$dinfo); … … 272 275 elsif ($conf->{focr_enable_image_hashing} == 2) { 273 276 use MLDBM qw(DB_File Storable); 277 use MLDBM::Sync; 274 278 my $dbfile = $_[2] || $conf->{focr_db_hash}; 275 my %DB = (); 276 tie %DB, 'MLDBM', $dbfile or $ret++;279 my %DB = (); my $sdbm; 280 $sdbm = tie %DB, 'MLDBM::Sync', $dbfile or $ret++; 277 281 if ($ret>0) { 278 282 warnlog("Unable to open/create Image Hash database at \"$dbfile\", check permissions."); 279 283 return; 280 284 } 285 $sdbm->Lock; 281 286 infolog("Adding Hash to \"$dbfile\" with score \"$score\""); 282 287 my ($img,$key) = split('::',$digest,2); … … 294 299 $DB{$key} = $dbm; 295 300 } 301 $sdbm->UnLock; 296 302 untie %DB; 297 303 } … … 310 316 seek( DB, 0, 2 ); 311 317 print DB "${score}::${digest}\n"; 312 flock( DB, LOCK_UN );313 318 close(DB); 314 319 } trunk/devel/FuzzyOcr/Logging.pm
r93 r99 22 22 seek( LOGFILE, 0, 2 ); 23 23 print LOGFILE "$time [$$] $logtext\n"; 24 flock( LOGFILE, LOCK_UN );25 24 close LOGFILE; 26 25 }
