You can subscribe to this list here.
2003 |
Jan
|
Feb
(160) |
Mar
(119) |
Apr
(111) |
May
(118) |
Jun
(101) |
Jul
(304) |
Aug
(113) |
Sep
(140) |
Oct
(137) |
Nov
(87) |
Dec
(122) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(78) |
Feb
(125) |
Mar
(131) |
Apr
(59) |
May
(121) |
Jun
(166) |
Jul
(150) |
Aug
(137) |
Sep
(73) |
Oct
(58) |
Nov
(27) |
Dec
(60) |
2005 |
Jan
(131) |
Feb
(84) |
Mar
(36) |
Apr
(8) |
May
(28) |
Jun
(20) |
Jul
(10) |
Aug
(72) |
Sep
(76) |
Oct
(34) |
Nov
(3) |
Dec
(29) |
2006 |
Jan
(13) |
Feb
(92) |
Mar
(7) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(4) |
Aug
(17) |
Sep
(5) |
Oct
(2) |
Nov
(8) |
Dec
(12) |
2007 |
Jan
(28) |
Feb
(15) |
Mar
|
Apr
|
May
(8) |
Jun
(4) |
Jul
(5) |
Aug
(8) |
Sep
(20) |
Oct
(38) |
Nov
(65) |
Dec
(92) |
2008 |
Jan
(21) |
Feb
(56) |
Mar
(27) |
Apr
(174) |
May
(25) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: naoki i. <am...@us...> - 2008-04-30 14:41:46
|
Update of /cvsroot/popfile/engine/Classifier In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30027/Classifier Modified Files: Bayes.pm Log Message: Change Log 1. Message count, False positive count and False negative count are not copied when cloning user Classifier/Bayes.pm 2. Users page cannot be accessed in the single user mode UI/HTML.pm 3. Fixed a bug that malformed cookies would crash POPFile UI/HTTP.pm 4. Tests for multiuser mode 5. Tests for cookies 6. Tests for redirection 7. Tests for status messages tests/TestHTML.tst Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS TestHistory PASS TestHTML PASS TestHTTP PASS TestIMAP PASS TestInsertScript PASS * TestLogger PASS TestMailParse PASS TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 PASS TestProxy PASS TestWordMangle PASS TestXMLRPC PASS * : TODO : needs to add tests for multi user support Index: Bayes.pm =================================================================== RCS file: /cvsroot/popfile/engine/Classifier/Bayes.pm,v retrieving revision 1.370 retrieving revision 1.371 diff -C2 -d -r1.370 -r1.371 *** Bayes.pm 28 Apr 2008 11:17:42 -0000 1.370 --- Bayes.pm 30 Apr 2008 14:41:49 -0000 1.371 *************** *** 3634,3638 **** $h->finish; ! # Clone buckets (optional) $h = $self->db_()->prepare( # PROFILE BLOCK START --- 3634,3638 ---- $h->finish; ! # Clone buckets $h = $self->db_()->prepare( # PROFILE BLOCK START *************** *** 3671,3677 **** $h = $self->db_()->prepare( # PROFILE BLOCK START ! "select bucketid, btid, val from buckets, bucket_params where userid = ? and ! buckets.id = bucket_params.bucketid;" ); # PROFILE BLOCK STOP $h->execute( $clid ); --- 3671,3678 ---- $h = $self->db_()->prepare( # PROFILE BLOCK START ! "select bucketid, btid, val from buckets, bucket_params, bucket_template where userid = ? and ! buckets.id = bucket_params.bucketid and ! bucket_template.name not in ( 'fncount', 'fpcount','count' );" ); # PROFILE BLOCK STOP $h->execute( $clid ); |
From: naoki i. <am...@us...> - 2008-04-30 14:41:46
|
Update of /cvsroot/popfile/engine/UI In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30027/UI Modified Files: HTML.pm HTTP.pm Log Message: Change Log 1. Message count, False positive count and False negative count are not copied when cloning user Classifier/Bayes.pm 2. Users page cannot be accessed in the single user mode UI/HTML.pm 3. Fixed a bug that malformed cookies would crash POPFile UI/HTTP.pm 4. Tests for multiuser mode 5. Tests for cookies 6. Tests for redirection 7. Tests for status messages tests/TestHTML.tst Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS TestHistory PASS TestHTML PASS TestHTTP PASS TestIMAP PASS TestInsertScript PASS * TestLogger PASS TestMailParse PASS TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 PASS TestProxy PASS TestWordMangle PASS TestXMLRPC PASS * : TODO : needs to add tests for multi user support Index: HTML.pm =================================================================== RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v retrieving revision 1.393 retrieving revision 1.394 diff -C2 -d -r1.393 -r1.394 *** HTML.pm 28 Apr 2008 11:17:43 -0000 1.393 --- HTML.pm 30 Apr 2008 14:41:49 -0000 1.394 *************** *** 310,313 **** --- 310,314 ---- if ( !defined( $checksum ) ) { + $self->log_( 0, "Invalid cookie received, had no checksum" ); return undef; } *************** *** 782,785 **** --- 783,792 ---- } + # In the single user mode, remove the users URLs + + if ( $self->global_config_( 'single_user' ) ) { + delete $url_table{'/users'}; + } + # Any of the standard pages can be found in the url_table, the # other pages are probably files on disk *************** *** 1128,1132 **** $self->global_config_( 'language', $language ); ! $self->cache_language_for_user( $language, 'global' ); } --- 1135,1139 ---- $self->global_config_( 'language', $language ); ! $self->cache_global_language( $language ); } Index: HTTP.pm =================================================================== RCS file: /cvsroot/popfile/engine/UI/HTTP.pm,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** HTTP.pm 25 Apr 2008 16:26:27 -0000 1.41 --- HTTP.pm 30 Apr 2008 14:41:49 -0000 1.42 *************** *** 316,324 **** $cookie =~ /popfile=([^\r\n]+)/; ! if ( defined( $1 ) ) { ! return $self->{crypto__}->decrypt( decode_base64( $1 ) ); ! } else { ! return ''; } } --- 316,328 ---- $cookie =~ /popfile=([^\r\n]+)/; ! if ( defined( $1 ) && ( length( $1 ) eq 216 ) ) { ! my $decoded_cookie = decode_base64( $1 ); ! if ( $decoded_cookie =~ /^Salted__(.{8})/ ) { ! # print "Decrypted : ", $self->{crypto__}->decrypt( $decoded_cookie ), "\n"; ! return $self->{crypto__}->decrypt( $decoded_cookie ); ! } } + + return ''; } |
From: naoki i. <am...@us...> - 2008-04-30 14:41:46
|
Update of /cvsroot/popfile/engine/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30027/tests Modified Files: TestHTML.script TestHTML.tst Log Message: Change Log 1. Message count, False positive count and False negative count are not copied when cloning user Classifier/Bayes.pm 2. Users page cannot be accessed in the single user mode UI/HTML.pm 3. Fixed a bug that malformed cookies would crash POPFile UI/HTTP.pm 4. Tests for multiuser mode 5. Tests for cookies 6. Tests for redirection 7. Tests for status messages tests/TestHTML.tst Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS TestHistory PASS TestHTML PASS TestHTTP PASS TestIMAP PASS TestInsertScript PASS * TestLogger PASS TestMailParse PASS TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 PASS TestProxy PASS TestWordMangle PASS TestXMLRPC PASS * : TODO : needs to add tests for multi user support Index: TestHTML.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestHTML.tst,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** TestHTML.tst 28 Apr 2008 11:48:59 -0000 1.41 --- TestHTML.tst 30 Apr 2008 14:41:49 -0000 1.42 *************** *** 296,301 **** $dwriter->autoflush(1); - use LWP::Simple; use LWP::UserAgent; use URI::URL; use String::Interpolate; --- 296,301 ---- $dwriter->autoflush(1); use LWP::UserAgent; + use HTTP::Cookies; use URI::URL; use String::Interpolate; *************** *** 305,308 **** --- 305,314 ---- my %h = ( port => \$port ); + # Cookies + + my $cookie_jar = HTTP::Cookies->new(file => 'TestHTML_cookie', autosave => 1); + $cookie_jar->clear; + $ua->cookie_jar($cookie_jar); + my $in = new String::Interpolate %h; *************** *** 357,367 **** if ( defined( $request ) ) { my $response = $ua->request( $request ); - @forms = HTML::Form->parse( $response ); if ( $response->code == 302 ) { ! $content = get(url("http://127.0.0.1:$port" . $response->headers->header('Location'))); ! @forms = HTML::Form->parse( $content, "http://127.0.0.1:$port" ); } else { test_assert_equal( $response->code, 200, "From script line $line_number" ); $content = $response->content; } $content =~ s/^[\t ]+//gm; --- 363,377 ---- if ( defined( $request ) ) { my $response = $ua->request( $request ); if ( $response->code == 302 ) { ! # print " REDIRECTED to ", $response->headers->header('Location'), " at line $line_number\n"; ! $request = HTTP::Request->new( 'GET', "http://127.0.0.1:$port" . $response->headers->header('Location') ); ! $response = $ua->request( $request ); ! $content = $response->content; ! @forms = HTML::Form->parse( $response ); ! # print $content; } else { test_assert_equal( $response->code, 200, "From script line $line_number" ); $content = $response->content; + @forms = HTML::Form->parse( $response ); } $content =~ s/^[\t ]+//gm; *************** *** 486,495 **** if ( defined( $request ) ) { my $response = $ua->request( $request ); ! $content = $response->content; $content =~ s/^[\t ]+//gm; $content =~ s/[\t ]+$//gm; while ( ( $content =~ s/\n\n/\n/gs ) > 0 ) { } - @forms = HTML::Form->parse( $response ); } next; --- 496,515 ---- if ( defined( $request ) ) { my $response = $ua->request( $request ); ! if ( $response->code == 302 ) { ! # print " REDIRECTED to ", $response->headers->header('Location'), " at line $line_number\n"; ! $request = HTTP::Request->new( 'GET', "http://127.0.0.1:$port" . $response->headers->header('Location') ); ! $response = $ua->request( $request ); ! $content = $response->content; ! @forms = HTML::Form->parse( $response ); ! # print $content; ! } else { ! test_assert_equal( $response->code, 200, "From script line $line_number" ); ! $content = $response->content; ! @forms = HTML::Form->parse( $response ); ! } $content =~ s/^[\t ]+//gm; $content =~ s/[\t ]+$//gm; while ( ( $content =~ s/\n\n/\n/gs ) > 0 ) { } } next; *************** *** 600,603 **** --- 620,631 ---- } + if ( $line =~ /^SETCOOKIE +(.*)$/ ) { + # print " Current cookie : ", $ua->cookie_jar->as_string, "\n"; + $cookie_jar->set_cookie( 0, 'popfile', $1, '/', '127.0.0.1', undef, undef, undef, undef, 1 ); + # $ua->cookie_jar->set_cookie( 1, 'popfile', $1, '/', 'http://127.0.0.1' ); + # print " Changed cookie : ", $ua->cookie_jar->as_string, "\n"; + next; + } + if ( $line =~ /[^ \t\r\n]/ ) { test_assert( 0, "Don't understand line $line_number" ); Index: TestHTML.script =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestHTML.script,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** TestHTML.script 28 Apr 2008 11:17:43 -0000 1.40 --- TestHTML.script 30 Apr 2008 14:41:49 -0000 1.41 *************** *** 72,75 **** --- 72,77 ---- MATCH <link rel="icon" href="favicon.ico"> + MATCH <a class="shutdownLink" href="/shutdown">Shutdown POPFile</a> + # Common MIDDLE parts (i.e. the tabs) *************** *** 85,88 **** --- 87,93 ---- [...1103 lines suppressed...] ! MATCH Recent Messages ! ! SETINPUT old_password secret ! SETINPUT new_password ! SETINPUT confirm_password ! CLICK change_password ! MATCH New password has been set ! ! SETINPUT old_password wrongpassword ! CLICK change_password ! MATCH The old password entered is incorrect ! SETINPUT old_password ! SETINPUT new_password secret ! SETINPUT confirm_password wrongconfirmpassword ! CLICK change_password ! MATCH The new password must by identical in the New and Confirm New boxes ! # Check shutdown operation |
From: Manni H. <man...@us...> - 2008-04-29 12:41:28
|
Update of /cvsroot/popfile/windows/languages In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21248 Modified Files: Tag: b0_22_2 German-pfi.nsh Log Message: Translate "Tray" Index: German-pfi.nsh =================================================================== RCS file: /cvsroot/popfile/windows/languages/German-pfi.nsh,v retrieving revision 1.48.4.8 retrieving revision 1.48.4.9 diff -C2 -d -r1.48.4.8 -r1.48.4.9 *** German-pfi.nsh 21 Apr 2008 14:12:47 -0000 1.48.4.8 --- German-pfi.nsh 29 Apr 2008 12:19:22 -0000 1.48.4.9 *************** *** 933,938 **** !insertmacro PFI_LANG_STRING PFI_LANG_LAUNCH_IO_DOSBOX "POPFile starten (in einem Fenster)" !insertmacro PFI_LANG_STRING PFI_LANG_LAUNCH_IO_BCKGRND "POPFile im Hintergrund starten (kein Fenster anzeigen)" ! !insertmacro PFI_LANG_STRING PFI_LANG_LAUNCH_IO_NOICON "POPFile starten (das Symbol im System-Tray nicht anzeigen)" ! !insertmacro PFI_LANG_STRING PFI_LANG_LAUNCH_IO_TRAYICON "POPFile mit Symbol im System-Tray starten" !insertmacro PFI_LANG_STRING PFI_LANG_LAUNCH_IO_NOTE_1 "Wenn POPFile gestartet wurde, können Sie die Benutzeroberfläche aufrufen, indem" !insertmacro PFI_LANG_STRING PFI_LANG_LAUNCH_IO_NOTE_2 "(a) Sie auf das POPFile-Symbol neben der Uhr doppelklicken oder indem" --- 933,938 ---- !insertmacro PFI_LANG_STRING PFI_LANG_LAUNCH_IO_DOSBOX "POPFile starten (in einem Fenster)" !insertmacro PFI_LANG_STRING PFI_LANG_LAUNCH_IO_BCKGRND "POPFile im Hintergrund starten (kein Fenster anzeigen)" ! !insertmacro PFI_LANG_STRING PFI_LANG_LAUNCH_IO_NOICON "POPFile ohne Symbol im Infobereich starten" ! !insertmacro PFI_LANG_STRING PFI_LANG_LAUNCH_IO_TRAYICON "POPFile mit Symbol im Infobereich starten" !insertmacro PFI_LANG_STRING PFI_LANG_LAUNCH_IO_NOTE_1 "Wenn POPFile gestartet wurde, können Sie die Benutzeroberfläche aufrufen, indem" !insertmacro PFI_LANG_STRING PFI_LANG_LAUNCH_IO_NOTE_2 "(a) Sie auf das POPFile-Symbol neben der Uhr doppelklicken oder indem" |
From: naoki i. <am...@us...> - 2008-04-28 12:14:23
|
Update of /cvsroot/popfile/engine/tests/TestMails In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17323/tests/TestMails Removed Files: TestMailParse029.msg_testpop3_-got.cam Log Message: Removed unwanted file --- TestMailParse029.msg_testpop3_-got.cam DELETED --- |
From: naoki i. <am...@us...> - 2008-04-28 12:05:52
|
Update of /cvsroot/popfile/engine/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13909/tests Modified Files: IMAP_test_server.pl TestBayes.tst TestIMAP.tst Log Message: Fixed some tests to pass Index: TestIMAP.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestIMAP.tst,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** TestIMAP.tst 28 Apr 2008 11:48:59 -0000 1.14 --- TestIMAP.tst 28 Apr 2008 12:05:57 -0000 1.15 *************** *** 1,5 **** # --------------------------------------------------------------------------------------------- # ! # Tests for POP3.pm # # Copyright (c) 2003-2006 John Graham-Cumming --- 1,5 ---- # --------------------------------------------------------------------------------------------- # ! # Tests for IMAP.pm # # Copyright (c) 2003-2006 John Graham-Cumming Index: IMAP_test_server.pl =================================================================== RCS file: /cvsroot/popfile/engine/tests/IMAP_test_server.pl,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** IMAP_test_server.pl 14 Apr 2008 10:09:09 -0000 1.7 --- IMAP_test_server.pl 28 Apr 2008 12:05:57 -0000 1.8 *************** *** 463,468 **** my $new_uid = $uidnext{ $folder }; uid_next( $folder, $uidnext{ $folder }+1 ); ! debug( "Trying to copy TestMailParse$msg.msg to $spool/$folder/$new_uid" ); ! copy "TestMailParse$msg.msg", "$spool/$folder/$new_uid"; } --- 463,468 ---- my $new_uid = $uidnext{ $folder }; uid_next( $folder, $uidnext{ $folder }+1 ); ! debug( "Trying to copy TestMails/TestMailParse$msg.msg to $spool/$folder/$new_uid" ); ! copy "TestMails/TestMailParse$msg.msg", "$spool/$folder/$new_uid"; } Index: TestBayes.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestBayes.tst,v retrieving revision 1.67 retrieving revision 1.68 diff -C2 -d -r1.67 -r1.68 *** TestBayes.tst 28 Apr 2008 11:48:59 -0000 1.67 --- TestBayes.tst 28 Apr 2008 12:05:57 -0000 1.68 *************** *** 1391,1395 **** $b->clear_magnets( $session ); $b->create_magnet( $session, 'gomi', 'subject', chr(0xbe) . chr(0xb5) . chr(0xc2) . chr(0xfa) ); ! test_assert_equal( $b->classify( $session, 'TestNihongo021.msg' ), 'gomi' ); test_assert_equal( $b->magnet_count( $session ), 1 ); --- 1391,1395 ---- $b->clear_magnets( $session ); $b->create_magnet( $session, 'gomi', 'subject', chr(0xbe) . chr(0xb5) . chr(0xc2) . chr(0xfa) ); ! test_assert_equal( $b->classify( $session, 'TestMails/TestNihongo021.msg' ), 'gomi' ); test_assert_equal( $b->magnet_count( $session ), 1 ); *************** *** 1412,1416 **** my %words; ! open WORDS, "<TestNihongo021.wrd"; while ( <WORDS> ) { if ( /(.+) (\d+)/ ) { --- 1412,1416 ---- my %words; ! open WORDS, "<TestMails/TestNihongo021.wrd"; while ( <WORDS> ) { if ( /(.+) (\d+)/ ) { *************** *** 1420,1424 **** close WORDS; ! test_assert( $b->add_message_to_bucket( $session, 'gomi', 'TestNihongo021.msg' ) ); foreach my $word (keys %words) { --- 1420,1424 ---- close WORDS; ! test_assert( $b->add_message_to_bucket( $session, 'gomi', 'TestMails/TestNihongo021.msg' ) ); foreach my $word (keys %words) { *************** *** 1439,1443 **** open CLIENT, ">temp.tmp"; ! open MAIL, "<TestNihongo021.msg"; my ( $class, $slot ) = $b->classify_and_modify( $session, \*MAIL, \*CLIENT, 0, '', 0, 1 ); close CLIENT; --- 1439,1443 ---- open CLIENT, ">temp.tmp"; ! open MAIL, "<TestMails/TestNihongo021.msg"; my ( $class, $slot ) = $b->classify_and_modify( $session, \*MAIL, \*CLIENT, 0, '', 0, 1 ); close CLIENT; *************** *** 1448,1452 **** open TEMP, "<temp.tmp"; ! open MAIL, "<TestNihongo021.qrn"; while ( !eof( MAIL ) && !eof( TEMP ) ) { my $temp = <TEMP>; --- 1448,1452 ---- open TEMP, "<temp.tmp"; ! open MAIL, "<TestMails/TestNihongo021.qrn"; while ( !eof( MAIL ) && !eof( TEMP ) ) { my $temp = <TEMP>; *************** *** 1461,1465 **** # remove_message_from_bucket ! test_assert( $b->remove_message_from_bucket( $session, 'gomi', 'TestNihongo021.msg' ) ); test_assert_equal( $b->get_bucket_word_count( $session, 'gomi' ), 0 ); --- 1461,1465 ---- # remove_message_from_bucket ! test_assert( $b->remove_message_from_bucket( $session, 'gomi', 'TestMails/TestNihongo021.msg' ) ); test_assert_equal( $b->get_bucket_word_count( $session, 'gomi' ), 0 ); |
Update of /cvsroot/popfile/engine/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10483/tests Removed Files: TestMailParse001.cam TestMailParse001.cls TestMailParse001.msg TestMailParse001.wrd TestMailParse002.cam TestMailParse002.cls TestMailParse002.msg TestMailParse002.wrd TestMailParse003.cam TestMailParse003.cls TestMailParse003.msg TestMailParse003.wrd TestMailParse004.cam TestMailParse004.cls TestMailParse004.msg TestMailParse004.wrd TestMailParse005.cam TestMailParse005.cls TestMailParse005.msg TestMailParse005.wrd TestMailParse006.cam TestMailParse006.cls TestMailParse006.msg TestMailParse006.wrd TestMailParse007.cam TestMailParse007.cls TestMailParse007.msg TestMailParse007.wrd TestMailParse008.cam TestMailParse008.cls TestMailParse008.msg TestMailParse008.wrd TestMailParse009.cam TestMailParse009.cls TestMailParse009.msg TestMailParse009.wrd TestMailParse010.cam TestMailParse010.cls TestMailParse010.msg TestMailParse010.wrd TestMailParse011.cam TestMailParse011.cls TestMailParse011.msg TestMailParse011.wrd TestMailParse012.cam TestMailParse012.cls TestMailParse012.msg TestMailParse012.wrd TestMailParse013.cam TestMailParse013.cls TestMailParse013.msg TestMailParse013.wrd TestMailParse014.cam TestMailParse014.cls TestMailParse014.msg TestMailParse014.wrd TestMailParse015.cam TestMailParse015.clr TestMailParse015.cls TestMailParse015.msg TestMailParse015.wrd TestMailParse016.cam TestMailParse016.cls TestMailParse016.msg TestMailParse016.wrd TestMailParse017.cam TestMailParse017.cls TestMailParse017.msg TestMailParse017.wrd TestMailParse018.cam TestMailParse018.cls TestMailParse018.msg TestMailParse018.wrd TestMailParse019.cam TestMailParse019.clr TestMailParse019.cls TestMailParse019.msg TestMailParse019.wrd TestMailParse020.cam TestMailParse020.cls TestMailParse020.msg TestMailParse020.wrd TestMailParse021.cam TestMailParse021.cls TestMailParse021.msg TestMailParse021.wrd TestMailParse022.cam TestMailParse022.cls TestMailParse022.msg TestMailParse022.wrd TestMailParse023.cam TestMailParse023.cls TestMailParse023.msg TestMailParse023.wrd TestMailParse024.cam TestMailParse024.cls TestMailParse024.msg TestMailParse024.wrd TestMailParse025.cam TestMailParse025.cls TestMailParse025.msg TestMailParse025.wrd TestMailParse027.cam TestMailParse027.cls TestMailParse027.msg TestMailParse027.wrd TestMailParse028.cam TestMailParse028.cls TestMailParse028.msg TestMailParse028.wrd TestMailParse029.cam TestMailParse029.cls TestMailParse029.msg TestMailParse029.wrd TestMailParse030.cam TestMailParse030.cls TestMailParse030.msg TestMailParse030.wrd TestMailParse031.cam TestMailParse031.cls TestMailParse031.msg TestMailParse031.wrd TestNihongo001.msg TestNihongo001.wrd TestNihongo002.msg TestNihongo002.wrd TestNihongo003.msg TestNihongo003.wrd TestNihongo004.msg TestNihongo004.wrd TestNihongo005.msg TestNihongo005.wrd TestNihongo006.msg TestNihongo006.wrd TestNihongo007.msg TestNihongo007.wrd TestNihongo008.msg TestNihongo008.wrd TestNihongo009.msg TestNihongo009.wrd TestNihongo010.msg TestNihongo010.wrd TestNihongo011.msg TestNihongo011.wrd TestNihongo012.msg TestNihongo012.wrd TestNihongo013.msg TestNihongo013.wrd TestNihongo014.msg TestNihongo014.wrd TestNihongo015.msg TestNihongo015.wrd TestNihongo016.msg TestNihongo016.wrd TestNihongo017.msg TestNihongo017.wrd TestNihongo018.msg TestNihongo018.wrd TestNihongo019.msg TestNihongo019.wrd TestNihongo020.msg TestNihongo020.wrd TestNihongo021.cam TestNihongo021.cls TestNihongo021.kks TestNihongo021.msg TestNihongo021.qrn TestNihongo021.wrd Log Message: * Clean up the tests directory and move messages and their accompanying .cam, .cls, etc. files to the new subdirectory 'TestMails'. * Change all tests to reflect this change. --- TestNihongo014.msg DELETED --- --- TestNihongo004.msg DELETED --- --- TestNihongo010.msg DELETED --- --- TestMailParse013.cam DELETED --- --- TestMailParse002.cam DELETED --- --- TestMailParse012.wrd DELETED --- --- TestMailParse018.wrd DELETED --- --- TestNihongo002.msg DELETED --- --- TestMailParse011.cam DELETED --- --- TestMailParse014.msg DELETED --- --- TestMailParse009.cls DELETED --- --- TestNihongo009.msg DELETED --- --- TestMailParse004.msg DELETED --- --- TestNihongo016.wrd DELETED --- --- TestMailParse027.msg DELETED --- --- TestMailParse021.cls DELETED --- --- TestMailParse017.wrd DELETED --- --- TestNihongo019.wrd DELETED --- --- TestMailParse005.cam DELETED --- --- TestMailParse015.cls DELETED --- --- TestMailParse015.clr DELETED --- --- TestMailParse012.cam DELETED --- --- TestMailParse027.wrd DELETED --- --- TestNihongo019.msg DELETED --- --- TestMailParse018.msg DELETED --- --- TestMailParse010.cam DELETED --- --- TestMailParse019.cam DELETED --- --- TestNihongo007.msg DELETED --- --- TestMailParse027.cls DELETED --- --- TestNihongo003.msg DELETED --- --- TestMailParse008.msg DELETED --- --- TestMailParse028.wrd DELETED --- --- TestNihongo001.wrd DELETED --- --- TestMailParse008.wrd DELETED --- --- TestNihongo012.msg DELETED --- --- TestMailParse007.cam DELETED --- --- TestMailParse016.cam DELETED --- --- TestMailParse022.cam DELETED --- --- TestMailParse012.msg DELETED --- --- TestMailParse016.msg DELETED --- --- TestNihongo013.msg DELETED --- --- TestMailParse001.cam DELETED --- --- TestMailParse010.wrd DELETED --- --- TestMailParse014.wrd DELETED --- --- TestMailParse002.wrd DELETED --- --- TestMailParse024.msg DELETED --- --- TestMailParse014.cls DELETED --- --- TestMailParse010.cls DELETED --- --- TestMailParse016.cls DELETED --- --- TestNihongo008.wrd DELETED --- --- TestMailParse030.wrd DELETED --- --- TestMailParse020.msg DELETED --- --- TestMailParse001.msg DELETED --- --- TestMailParse007.cls DELETED --- --- TestMailParse025.wrd DELETED --- --- TestNihongo010.wrd DELETED --- --- TestNihongo002.wrd DELETED --- --- TestNihongo008.msg DELETED --- --- TestMailParse025.msg DELETED --- --- TestMailParse010.msg DELETED --- --- TestNihongo017.wrd DELETED --- --- TestMailParse001.wrd DELETED --- --- TestNihongo016.msg DELETED --- --- TestNihongo021.msg DELETED --- --- TestMailParse001.cls DELETED --- --- TestNihongo017.msg DELETED --- --- TestMailParse021.msg DELETED --- --- TestNihongo021.kks DELETED --- --- TestNihongo011.msg DELETED --- --- TestMailParse023.wrd DELETED --- --- TestNihongo007.wrd DELETED --- --- TestMailParse030.msg DELETED --- --- TestNihongo015.msg DELETED --- --- TestMailParse004.cam DELETED --- --- TestMailParse023.cls DELETED --- --- TestMailParse018.cam DELETED --- --- TestMailParse031.cls DELETED --- --- TestMailParse029.cam DELETED --- --- TestNihongo021.cls DELETED --- --- TestMailParse016.wrd DELETED --- --- TestMailParse025.cam DELETED --- --- TestNihongo004.wrd DELETED --- --- TestNihongo013.wrd DELETED --- --- TestMailParse002.msg DELETED --- --- TestNihongo006.wrd DELETED --- --- TestMailParse018.cls DELETED --- --- TestNihongo012.wrd DELETED --- --- TestMailParse015.wrd DELETED --- --- TestMailParse006.msg DELETED --- --- TestMailParse023.msg DELETED --- --- TestMailParse006.cam DELETED --- --- TestNihongo006.msg DELETED --- --- TestMailParse009.wrd DELETED --- --- TestMailParse031.cam DELETED --- --- TestMailParse003.wrd DELETED --- --- TestMailParse015.msg DELETED --- --- TestMailParse024.cls DELETED --- --- TestMailParse022.cls DELETED --- --- TestNihongo021.qrn DELETED --- --- TestMailParse028.cam DELETED --- --- TestMailParse022.msg DELETED --- --- TestMailParse003.msg DELETED --- --- TestMailParse022.wrd DELETED --- --- TestMailParse013.msg DELETED --- --- TestMailParse017.msg DELETED --- --- TestMailParse008.cls DELETED --- --- TestMailParse012.cls DELETED --- --- TestMailParse028.cls DELETED --- --- TestMailParse015.cam DELETED --- --- TestMailParse005.wrd DELETED --- --- TestNihongo021.wrd DELETED --- --- TestMailParse029.cls DELETED --- --- TestMailParse020.cls DELETED --- --- TestMailParse025.cls DELETED --- --- TestNihongo005.wrd DELETED --- --- TestMailParse011.wrd DELETED --- --- TestMailParse005.cls DELETED --- --- TestMailParse029.wrd DELETED --- --- TestMailParse020.wrd DELETED --- --- TestMailParse030.cam DELETED --- --- TestNihongo011.wrd DELETED --- --- TestMailParse003.cam DELETED --- --- TestMailParse007.wrd DELETED --- --- TestMailParse009.msg DELETED --- --- TestNihongo018.wrd DELETED --- --- TestNihongo020.wrd DELETED --- --- TestMailParse024.cam DELETED --- --- TestNihongo001.msg DELETED --- --- TestNihongo014.wrd DELETED --- --- TestMailParse005.msg DELETED --- --- TestNihongo020.msg DELETED --- --- TestMailParse030.cls DELETED --- --- TestMailParse002.cls DELETED --- --- TestMailParse023.cam DELETED --- --- TestNihongo018.msg DELETED --- --- TestMailParse020.cam DELETED --- --- TestMailParse013.cls DELETED --- --- TestMailParse004.wrd DELETED --- --- TestMailParse019.wrd DELETED --- --- TestMailParse007.msg DELETED --- --- TestNihongo021.cam DELETED --- --- TestMailParse017.cls DELETED --- --- TestMailParse021.wrd DELETED --- --- TestMailParse017.cam DELETED --- --- TestMailParse011.msg DELETED --- --- TestMailParse011.cls DELETED --- --- TestMailParse029.msg DELETED --- --- TestMailParse014.cam DELETED --- --- TestNihongo015.wrd DELETED --- --- TestMailParse019.msg DELETED --- --- TestMailParse019.cls DELETED --- --- TestMailParse019.clr DELETED --- --- TestMailParse009.cam DELETED --- --- TestMailParse013.wrd DELETED --- --- TestMailParse028.msg DELETED --- --- TestMailParse021.cam DELETED --- --- TestMailParse006.cls DELETED --- --- TestMailParse003.cls DELETED --- --- TestMailParse008.cam DELETED --- --- TestMailParse006.wrd DELETED --- --- TestNihongo009.wrd DELETED --- --- TestNihongo003.wrd DELETED --- --- TestMailParse031.msg DELETED --- --- TestMailParse004.cls DELETED --- --- TestMailParse027.cam DELETED --- --- TestMailParse031.wrd DELETED --- --- TestMailParse024.wrd DELETED --- --- TestNihongo005.msg DELETED --- |
From: naoki i. <am...@us...> - 2008-04-28 11:49:25
|
Update of /cvsroot/popfile/engine/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7400/tests Modified Files: TestBayes.tst TestBayesScript.tst TestHTML.tst TestIMAP.tst TestInsertScript.tst TestMailParse.tst TestPOP3.tst TestPipeScript.tst Log Message: * Clean up the tests directory and move messages and their accompanying .cam, .cls, etc. files to the new subdirectory 'TestMails'. * Change all tests to reflect this change. Index: TestHTML.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestHTML.tst,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** TestHTML.tst 28 Apr 2008 11:17:43 -0000 1.40 --- TestHTML.tst 28 Apr 2008 11:48:59 -0000 1.41 *************** *** 56,60 **** mkdir 'messages'; ! my @messages = glob 'TestMailParse*.msg'; my $count = 0; --- 56,60 ---- mkdir 'messages'; ! my @messages = glob 'TestMails/TestMailParse*.msg'; my $count = 0; Index: TestInsertScript.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestInsertScript.tst,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** TestInsertScript.tst 9 Apr 2008 17:20:48 -0000 1.9 --- TestInsertScript.tst 28 Apr 2008 11:48:59 -0000 1.10 *************** *** 58,62 **** open STDERR, ">temp.tmp"; ! system("$insert none TestMailParse021.wrd"); close STDERR; $code = ($? >> 8); --- 58,62 ---- open STDERR, ">temp.tmp"; ! system("$insert none TestMails/TestMailParse021.wrd"); close STDERR; $code = ($? >> 8); *************** *** 85,89 **** my %words; ! open WORDS, "<TestMailParse021.wrd"; while ( <WORDS> ) { if ( /(.+) (\d+)/ ) { --- 85,89 ---- my %words; ! open WORDS, "<TestMails/TestMailParse021.wrd"; while ( <WORDS> ) { if ( /(.+) (\d+)/ ) { *************** *** 94,98 **** open STDERR, ">temp.tmp"; ! @stdout =`$insert personal TestMailParse021.msg`; $code = ($? >> 8); close STDERR; --- 94,98 ---- open STDERR, ">temp.tmp"; ! @stdout =`$insert personal TestMails/TestMailParse021.msg`; $code = ($? >> 8); close STDERR; Index: TestPipeScript.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestPipeScript.tst,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** TestPipeScript.tst 20 Feb 2006 02:20:57 -0000 1.9 --- TestPipeScript.tst 28 Apr 2008 11:48:59 -0000 1.10 *************** *** 51,57 **** # Try classifying a message ! my $modify_file = 'TestMailParse021.msg'; ! $code = system( "cat TestMailParse021.msg | $pipe > temp.tmp" ); # Done once to force the bucket upgrade ! $code = system( "cat TestMailParse021.msg | $pipe > temp.tmp" ); test_assert( $code == 0 ); my $output_file = $modify_file; --- 51,57 ---- # Try classifying a message ! my $modify_file = 'TestMails/TestMailParse021.msg'; ! $code = system( "cat TestMails/TestMailParse021.msg | $pipe > temp.tmp" ); # Done once to force the bucket upgrade ! $code = system( "cat TestMails/TestMailParse021.msg | $pipe > temp.tmp" ); test_assert( $code == 0 ); my $output_file = $modify_file; Index: TestIMAP.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestIMAP.tst,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** TestIMAP.tst 10 Apr 2008 15:17:35 -0000 1.13 --- TestIMAP.tst 28 Apr 2008 11:48:59 -0000 1.14 *************** *** 195,199 **** # check that a fresh classification confirms the reclassification ! test_assert_equal( $b->classify( $session, 'TestMailParse007.msg' ), 'personal' ); # Now let's see whether the words in one of the reclassified messages --- 195,199 ---- # check that a fresh classification confirms the reclassification ! test_assert_equal( $b->classify( $session, 'TestMails/TestMailParse007.msg' ), 'personal' ); # Now let's see whether the words in one of the reclassified messages *************** *** 202,206 **** my %words; ! open WORDS, "<TestMailParse013.wrd"; while ( <WORDS> ) { if ( /(.+) (\d+)/ ) { --- 202,206 ---- my %words; ! open WORDS, "<TestMails/TestMailParse013.wrd"; while ( <WORDS> ) { if ( /(.+) (\d+)/ ) { *************** *** 345,349 **** my ( $ok, @msg_lines ) = $client->fetch_message_part( $uid, '' ); test_assert_equal( $ok, 1 ); ! my $filename = "TestMailParse$msg_number.msg"; if ( open my $ORG, '<', $filename ) { my @org_lines = (); --- 345,349 ---- my ( $ok, @msg_lines ) = $client->fetch_message_part( $uid, '' ); test_assert_equal( $ok, 1 ); ! my $filename = "TestMails/TestMailParse$msg_number.msg"; if ( open my $ORG, '<', $filename ) { my @org_lines = (); Index: TestBayesScript.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestBayesScript.tst,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** TestBayesScript.tst 9 Apr 2008 17:20:48 -0000 1.8 --- TestBayesScript.tst 28 Apr 2008 11:48:59 -0000 1.9 *************** *** 68,72 **** my %words; ! open WORDS, "<TestMailParse021.wrd"; while ( <WORDS> ) { if ( /(.+) (\d+)/ ) { --- 68,72 ---- my %words; ! open WORDS, "<TestMails/TestMailParse021.wrd"; while ( <WORDS> ) { if ( /(.+) (\d+)/ ) { *************** *** 76,85 **** close WORDS; ! @stdout = `$bayes TestMailParse021.msg`;# 2> temp.tmp 1> temp2.tmp" ); $code = ($? >> 8); test_assert( $code == 0 ); $line = shift @stdout; ! test_assert_regexp( $line, '`TestMailParse021.msg\' is `spam\'' ); my %output; --- 76,85 ---- close WORDS; ! @stdout = `$bayes TestMails/TestMailParse021.msg`;# 2> temp.tmp 1> temp2.tmp" ); $code = ($? >> 8); test_assert( $code == 0 ); $line = shift @stdout; ! test_assert_regexp( $line, '`TestMails/TestMailParse021.msg\' is `spam\'' ); my %output; Index: TestMailParse.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestMailParse.tst,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -d -r1.48 -r1.49 *** TestMailParse.tst 9 Apr 2008 17:20:48 -0000 1.48 --- TestMailParse.tst 28 Apr 2008 11:48:59 -0000 1.49 *************** *** 332,337 **** $cl->update_tag( "faketag(|", "foo", 1, 0 ); ! # glob the tests directory for files called TestMailParse\d+.msg which consist of messages ! # to be parsed with the resulting values for the words hash in TestMailParse\d+.wrd # Since the [[:alpha:]] regular expression is affected by the system locale, fix the --- 332,337 ---- $cl->update_tag( "faketag(|", "foo", 1, 0 ); ! # glob the tests directory for files called TestMails/TestMailParse\d+.msg which consist of messages ! # to be parsed with the resulting values for the words hash in TestMails/TestMailParse\d+.wrd # Since the [[:alpha:]] regular expression is affected by the system locale, fix the *************** *** 342,346 **** setlocale( LC_CTYPE, 'C' ); ! my @parse_tests = sort glob 'TestMailParse*.msg'; for my $parse_test (@parse_tests) { --- 342,346 ---- setlocale( LC_CTYPE, 'C' ); ! my @parse_tests = sort glob 'TestMails/TestMailParse*.msg'; for my $parse_test (@parse_tests) { *************** *** 381,397 **** # Check that from, to and subject get set correctly when parsing a message ! $cl->parse_file( 'TestMailParse013.msg' ); test_assert_equal( $cl->{from__}, 'RN <rr...@nn...>' ); test_assert_equal( $cl->{to__}, '"Armlet Forum" <arm...@ne...>' ); test_assert_equal( $cl->{subject__}, '(Archive Copy) RE: CW v9 and armlets...' ); ! $cl->parse_file( 'TestMailParse018.msg' ); $cl->{to__} =~ /(\Qbugtracker\E@\Qrltvty.com\E)/; test_assert_equal( $1, 'bug...@rl...' ); ! $cl->parse_file( 'TestMailParse019.msg' ); $cl->{to__} =~ /(\Qbugtracker\E@\Qrltvty.com\E)/; test_assert_equal( $1, 'bug...@rl...' ); # Check that multi-line To: and CC: headers get handled properly ! $cl->parse_file( 'TestMailParse021.msg' ); #$cl->{to__} =~ s/[\r\n]//g; test_assert_equal( $cl->{to__}, 'ds...@ct..., ds...@do..., ds...@di..., ds...@di..., ds...@cr...,<ds...@cy...>, <ds...@do...>, <ds...@db...>, <ds...@cs...>, <ds...@cr...>,<ds...@dr...>, <ds...@cv...>, <ds...@dm...>, <ds...@da...>,<ds...@da...>' ); --- 381,397 ---- # Check that from, to and subject get set correctly when parsing a message ! $cl->parse_file( 'TestMails/TestMailParse013.msg' ); test_assert_equal( $cl->{from__}, 'RN <rr...@nn...>' ); test_assert_equal( $cl->{to__}, '"Armlet Forum" <arm...@ne...>' ); test_assert_equal( $cl->{subject__}, '(Archive Copy) RE: CW v9 and armlets...' ); ! $cl->parse_file( 'TestMails/TestMailParse018.msg' ); $cl->{to__} =~ /(\Qbugtracker\E@\Qrltvty.com\E)/; test_assert_equal( $1, 'bug...@rl...' ); ! $cl->parse_file( 'TestMails/TestMailParse019.msg' ); $cl->{to__} =~ /(\Qbugtracker\E@\Qrltvty.com\E)/; test_assert_equal( $1, 'bug...@rl...' ); # Check that multi-line To: and CC: headers get handled properly ! $cl->parse_file( 'TestMails/TestMailParse021.msg' ); #$cl->{to__} =~ s/[\r\n]//g; test_assert_equal( $cl->{to__}, 'ds...@ct..., ds...@do..., ds...@di..., ds...@di..., ds...@cr...,<ds...@cy...>, <ds...@do...>, <ds...@db...>, <ds...@cs...>, <ds...@cr...>,<ds...@dr...>, <ds...@cv...>, <ds...@dm...>, <ds...@da...>,<ds...@da...>' ); *************** *** 401,405 **** # Test colorization ! my @color_tests = ( 'TestMailParse015.msg', 'TestMailParse019.msg' ); my $b = $POPFile->get_module( 'Classifier/Bayes' ); --- 401,405 ---- # Test colorization ! my @color_tests = ( 'TestMails/TestMailParse015.msg', 'TestMails/TestMailParse019.msg' ); my $b = $POPFile->get_module( 'Classifier/Bayes' ); *************** *** 447,451 **** # test get_header ! $cl->parse_file( 'TestMailParse022.msg' ); test_assert_equal( $cl->get_header( 'from' ), 'te...@te...' ); test_assert_equal( $cl->get_header( 'to' ), 'so...@so...' ); --- 447,451 ---- # test get_header ! $cl->parse_file( 'TestMails/TestMailParse022.msg' ); test_assert_equal( $cl->get_header( 'from' ), 'te...@te...' ); test_assert_equal( $cl->get_header( 'to' ), 'so...@so...' ); *************** *** 479,485 **** # test first20 ! $cl->parse_file( 'TestMailParse022.msg' ); test_assert_equal( $cl->first20(), ' This is the title image tag ALT string' ); ! $cl->parse_file( 'TestMailParse021.msg' ); test_assert_equal( $cl->first20(), ' Take Control of Your Computer With This Top of the Line Software Norton SystemWorks Software Suite Professional Edition Includes Six' ); --- 479,485 ---- # test first20 ! $cl->parse_file( 'TestMails/TestMailParse022.msg' ); test_assert_equal( $cl->first20(), ' This is the title image tag ALT string' ); ! $cl->parse_file( 'TestMails/TestMailParse021.msg' ); test_assert_equal( $cl->first20(), ' Take Control of Your Computer With This Top of the Line Software Norton SystemWorks Software Suite Professional Edition Includes Six' ); Index: TestPOP3.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestPOP3.tst,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** TestPOP3.tst 28 Apr 2008 11:17:43 -0000 1.38 --- TestPOP3.tst 28 Apr 2008 11:48:59 -0000 1.39 *************** *** 675,679 **** my $count = 0; my $size = 0; ! my @messages = sort glob 'TestMailParse*.msg'; for my $i (0..$#messages) { if ( $messages[$i] ne '' ) { --- 675,679 ---- my $count = 0; my $size = 0; ! my @messages = sort glob 'TestMails/TestMailParse*.msg'; for my $i (0..$#messages) { if ( $messages[$i] ne '' ) { *************** *** 790,794 **** $cam =~ s/msg$/cam/; ! test_assert( open RESULT, ">testpop3_$messages[27]-got.cam" ); test_assert( open FILE, "<$cam" ); binmode FILE; --- 790,794 ---- $cam =~ s/msg$/cam/; ! test_assert( open RESULT, ">$messages[27]_testpop3_-got.cam" ); test_assert( open FILE, "<$cam" ); binmode FILE; *************** *** 2176,2180 **** { my ( $client, $apop ) = @_; ! my @messages = sort glob 'TestMailParse*.msg'; my $goslow = 0; my $hang = 0; --- 2176,2180 ---- { my ( $client, $apop ) = @_; ! my @messages = sort glob 'TestMails/TestMailParse*.msg'; my $goslow = 0; my $hang = 0; *************** *** 2294,2298 **** if ( $command =~ /RSET/i ) { ! @messages = sort glob 'TestMailParse*.msg'; print $client "+OK Reset$eol"; next; --- 2294,2298 ---- if ( $command =~ /RSET/i ) { ! @messages = sort glob 'TestMails/TestMailParse*.msg'; print $client "+OK Reset$eol"; next; Index: TestBayes.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestBayes.tst,v retrieving revision 1.66 retrieving revision 1.67 diff -C2 -d -r1.66 -r1.67 *** TestBayes.tst 28 Apr 2008 11:17:43 -0000 1.66 --- TestBayes.tst 28 Apr 2008 11:48:59 -0000 1.67 *************** *** 620,625 **** # get_html_colored_message ! my $html = $b->get_html_colored_message( $session, 'TestMailParse019.msg' ); ! open FILE, "<TestMailParse019.clr"; my $check = <FILE>; close FILE; --- 620,625 ---- # get_html_colored_message ! my $html = $b->get_html_colored_message( $session, 'TestMails/TestMailParse019.msg' ); ! open FILE, "<TestMails/TestMailParse019.clr"; my $check = <FILE>; close FILE; *************** *** 684,688 **** my %words; ! open WORDS, "<TestMailParse021.wrd"; while ( <WORDS> ) { if ( /(.+) (\d+)/ ) { --- 684,688 ---- my %words; ! open WORDS, "<TestMails/TestMailParse021.wrd"; while ( <WORDS> ) { if ( /(.+) (\d+)/ ) { *************** *** 692,696 **** close WORDS; ! test_assert( $b->add_message_to_bucket( $session, 'zeotrope', 'TestMailParse021.msg' ) ); foreach my $word (keys %words) { --- 692,696 ---- close WORDS; ! test_assert( $b->add_message_to_bucket( $session, 'zeotrope', 'TestMails/TestMailParse021.msg' ) ); foreach my $word (keys %words) { *************** *** 698,702 **** } ! test_assert( $b->add_message_to_bucket( $session, 'zeotrope', 'TestMailParse021.msg' ) ); foreach my $word (keys %words) { --- 698,702 ---- } ! test_assert( $b->add_message_to_bucket( $session, 'zeotrope', 'TestMails/TestMailParse021.msg' ) ); foreach my $word (keys %words) { *************** *** 706,711 **** # remove_message_from_bucket ! test_assert( $b->remove_message_from_bucket( $session, 'zeotrope', 'TestMailParse021.msg' ) ); ! test_assert( $b->remove_message_from_bucket( $session, 'zeotrope', 'TestMailParse021.msg' ) ); test_assert_equal( $b->get_bucket_word_count( $session, 'zeotrope' ), 0 ); --- 706,711 ---- # remove_message_from_bucket ! test_assert( $b->remove_message_from_bucket( $session, 'zeotrope', 'TestMails/TestMailParse021.msg' ) ); ! test_assert( $b->remove_message_from_bucket( $session, 'zeotrope', 'TestMails/TestMailParse021.msg' ) ); test_assert_equal( $b->get_bucket_word_count( $session, 'zeotrope' ), 0 ); *************** *** 714,718 **** # add_messages_to_bucket ! test_assert( $b->add_messages_to_bucket( $session, 'zeotrope', ( 'TestMailParse021.msg', 'TestMailParse021.msg' ) ) ); foreach my $word (keys %words) { --- 714,718 ---- # add_messages_to_bucket ! test_assert( $b->add_messages_to_bucket( $session, 'zeotrope', ( 'TestMails/TestMailParse021.msg', 'TestMails/TestMailParse021.msg' ) ) ); foreach my $word (keys %words) { *************** *** 918,922 **** $b->create_magnet( $session, 'zeotrope', 'from', 'cxc...@ya...' ); ! test_assert_equal( $b->classify( $session, 'TestMailParse021.msg' ), 'zeotrope' ); test_assert_equal( $b->{magnet_detail__}, 8 ); test_assert( $b->{magnet_used__} ); --- 918,922 ---- $b->create_magnet( $session, 'zeotrope', 'from', 'cxc...@ya...' ); ! test_assert_equal( $b->classify( $session, 'TestMails/TestMailParse021.msg' ), 'zeotrope' ); test_assert_equal( $b->{magnet_detail__}, 8 ); test_assert( $b->{magnet_used__} ); *************** *** 960,967 **** test_assert_equal( $b->get_sort_value_( $session, 'personal', 'foo' ), log(100/202) ); ! # glob the tests directory for files called TestMailParse\d+.msg which consist of messages ! # to be parsed with the resulting classification in TestMailParse.cls ! my @class_tests = sort glob 'TestMailParse*.msg'; for my $class_test (@class_tests) { --- 960,967 ---- test_assert_equal( $b->get_sort_value_( $session, 'personal', 'foo' ), log(100/202) ); ! # glob the tests directory for files called TestMails/TestMailParse\d+.msg which consist of messages ! # to be parsed with the resulting classification in TestMails/TestMailParse.cls ! my @class_tests = sort glob 'TestMails/TestMailParse*.msg'; for my $class_test (@class_tests) { *************** *** 979,983 **** } ! # glob the tests directory for files called TestMailParse\d+.msg which consist of messages # to be sent through classify_and_modify --- 979,983 ---- } ! # glob the tests directory for files called TestMails/TestMailParse\d+.msg which consist of messages # to be sent through classify_and_modify *************** *** 990,994 **** $b->set_bucket_parameter( $session, 'spam', 'xpl', 1 ); ! my @modify_tests = sort glob 'TestMailParse*.msg'; for my $modify_file (@modify_tests) { --- 990,994 ---- $b->set_bucket_parameter( $session, 'spam', 'xpl', 1 ); ! my @modify_tests = sort glob 'TestMails/TestMailParse*.msg'; for my $modify_file (@modify_tests) { |
From: naoki i. <am...@us...> - 2008-04-28 11:17:38
|
Update of /cvsroot/popfile/engine/Classifier In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27948/Classifier Modified Files: Bayes.pm Log Message: Change Log 1. POP3 proxy no longer returns both '+OK' and '-ERR' when bad account is passed Proxy/POP3.pm 2. POP3S proxy and POP3 proxy share the POP3 accounts Classifier/Bayes.pm 3. Account table is used in the transparent proxy mode too Classifier/Bayes.pm In the transparent proxy mode, if the specified user is not found then POPFile will use the accounts table. 4. Add 'timeout' status message on the Password page 5. Add status messages for changing between Multiuser and Single user modes on the Administration page UI/HTML.pm languages/English.pm languages/Nihongo.pm 6. Add multiuser mode tests tests/TestPOP3.tst 7. Add some tests tests/TestBayes.tst tests for copying magnets and corpus tests for get_magnet_header_and_value 8. Fix TestHTML to pass on MSWin32 tests/TestHTML.tst tests/TestHTML.script 9. Remove an unwanted comment UI/HTML.pm Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS TestHistory PASS TestHTML PASS * TestHTTP PASS TestIMAP PASS TestInsertScript PASS * TestLogger PASS TestMailParse PASS TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 PASS TestProxy PASS TestWordMangle PASS TestXMLRPC PASS * : TODO : needs to add tests for multi user support Index: Bayes.pm =================================================================== RCS file: /cvsroot/popfile/engine/Classifier/Bayes.pm,v retrieving revision 1.369 retrieving revision 1.370 diff -C2 -d -r1.369 -r1.370 *** Bayes.pm 25 Apr 2008 16:26:04 -0000 1.369 --- Bayes.pm 28 Apr 2008 11:17:42 -0000 1.370 *************** *** 1871,1879 **** } # If the this is not the pop3 module then return the administrator # session since there is currently no token matching for non-POP3 # accounts. ! if ( ( $module !~ /^pop3s?|insert$/ ) ) { return $self->get_single_user_session_key(); } --- 1871,1883 ---- } + # If the module is pop3s (POP3 over SSL), treat as pop3 + + $module = 'pop3' if ( $module eq 'pop3s' ); + # If the this is not the pop3 module then return the administrator # session since there is currently no token matching for non-POP3 # accounts. ! if ( ( $module !~ /^pop3|insert$/ ) ) { return $self->get_single_user_session_key(); } *************** *** 1881,1885 **** my $user; ! if ( $module =~ /^pop3s?$/ ) { my ( $server, $username ) = split( /:/, $token ); --- 1885,1889 ---- my $user; ! if ( $module eq 'pop3' ) { my ( $server, $username ) = split( /:/, $token ); *************** *** 1898,1903 **** $user = $self->get_user_id( $session, $username ); ! } else { # Check the token against the associations in the database and --- 1902,1908 ---- $user = $self->get_user_id( $session, $username ); + } ! if ( !defined( $user ) ) { # Check the token against the associations in the database and |
From: naoki i. <am...@us...> - 2008-04-28 11:17:38
|
Update of /cvsroot/popfile/engine/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27948/tests Modified Files: TestBayes.tst TestHTML.script TestHTML.tst TestPOP3.tst Log Message: Change Log 1. POP3 proxy no longer returns both '+OK' and '-ERR' when bad account is passed Proxy/POP3.pm 2. POP3S proxy and POP3 proxy share the POP3 accounts Classifier/Bayes.pm 3. Account table is used in the transparent proxy mode too Classifier/Bayes.pm In the transparent proxy mode, if the specified user is not found then POPFile will use the accounts table. 4. Add 'timeout' status message on the Password page 5. Add status messages for changing between Multiuser and Single user modes on the Administration page UI/HTML.pm languages/English.pm languages/Nihongo.pm 6. Add multiuser mode tests tests/TestPOP3.tst 7. Add some tests tests/TestBayes.tst tests for copying magnets and corpus tests for get_magnet_header_and_value 8. Fix TestHTML to pass on MSWin32 tests/TestHTML.tst tests/TestHTML.script 9. Remove an unwanted comment UI/HTML.pm Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS TestHistory PASS TestHTML PASS * TestHTTP PASS TestIMAP PASS TestInsertScript PASS * TestLogger PASS TestMailParse PASS TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 PASS TestProxy PASS TestWordMangle PASS TestXMLRPC PASS * : TODO : needs to add tests for multi user support Index: TestHTML.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestHTML.tst,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** TestHTML.tst 9 Apr 2008 17:20:48 -0000 1.39 --- TestHTML.tst 28 Apr 2008 11:17:43 -0000 1.40 *************** *** 22,25 **** --- 22,30 ---- # --------------------------------------------------------------------------------------------- + use POSIX qw(locale_h); + + if ( $^O eq 'MSWin32' && setlocale(LC_COLLATE) eq 'Japanese_Japan.932' ) { + setlocale(LC_COLLATE,'C'); + } # Set up the test corpus and use the Test msg and cls files # to create a current history set *************** *** 492,496 **** if ( $line =~ /^MATCH +(.+)$/ ) { ! my $result = test_assert_regexp( $content, "\Q$1\E", "From script line $line_number" ); if ( !$result ) { open HTML, ">testhtml_match$line_number.html"; --- 497,503 ---- if ( $line =~ /^MATCH +(.+)$/ ) { ! my $string = $1; ! $content =~ s/([0-9]\.[0-9]+e[-\+])0([0-9]{2})/$1$2/ if ( $^O eq 'MSWin32' ); ! my $result = test_assert_regexp( $content, "\Q$string\E", "From script line $line_number" ); if ( !$result ) { open HTML, ">testhtml_match$line_number.html"; Index: TestHTML.script =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestHTML.script,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** TestHTML.script 25 Apr 2008 16:26:50 -0000 1.39 --- TestHTML.script 28 Apr 2008 11:17:43 -0000 1.40 *************** *** 559,562 **** --- 559,563 ---- GET /history CLICK clearpage + GET /history NOTMATCH Jump to message MATCH Recent Messages (9) Index: TestPOP3.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestPOP3.tst,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** TestPOP3.tst 25 Apr 2008 16:26:50 -0000 1.37 --- TestPOP3.tst 28 Apr 2008 11:17:43 -0000 1.38 *************** *** 28,31 **** --- 28,32 ---- use IO::Socket; use Digest::MD5; + use strict; unlink 'popfile.db'; *************** *** 406,409 **** --- 407,419 ---- $p->config_('secure_ssl', $old_config_value ); + # create user and account for the multiuser mode tests + + my $session = $b->get_administrator_session_key(); + test_assert( defined( $session ) ); + + my ( $result, $password ) = $b->create_user( $session, 'transparent' ); + test_assert( $b->add_account( $session, 1, 'pop3', '127.0.0.1:gooduser' ) == 1 ); + + $b->release_session_key( $session ); # some tests require this directory to be present *************** *** 541,544 **** --- 551,567 ---- next; } + + if ( $command =~ /__MULTIUSERMODE/ ) { + $p->global_config_( 'single_user', 0 ); + print $uwriter "OK\n"; + next; + } + + if ( $command =~ /__SINGLEUSERMODE/ ) { + $p->global_config_( 'single_user', 1 ); + print $uwriter "OK\n"; + next; + } + } select ( undef, undef, undef, 0.05 ); *************** *** 1991,1994 **** --- 2014,2121 ---- $b->release_session_key( $session ); + # Multiuser mode tests + + print $dwriter "__MULTIUSERMODE :\n"; + $line = <$ureader>; + test_assert_equal( $line, "OK\n" ); + + $client = IO::Socket::INET->new( + Proto => "tcp", + PeerAddr => 'localhost', + PeerPort => $port ); + + test_assert( defined( $client ) ); + + test_assert( $client->connected ); + + $result = <$client>; + test_assert_equal( $result, + "+OK POP3 POPFile (test suite) server ready$eol" ); + + print $client "USER 127.0.0.1:8110:gooduser$eol"; + $result = <$client>; + test_assert_equal( $result, "+OK Welcome gooduser$eol" ); + + print $client "PASS secret$eol"; + $result = <$client>; + test_assert_equal( $result, "+OK Now logged in$eol" ); + + my $cd = 10; + while ( $cd-- ) { + select( undef, undef, undef, 0.1 ); + $mq->service(); + $h->service(); + } + + close $client; + + # transparent proxy + + $client = IO::Socket::INET->new( + Proto => "tcp", + PeerAddr => 'localhost', + PeerPort => $port ); + + test_assert( defined( $client ) ); + + test_assert( $client->connected ); + + $result = <$client>; + test_assert_equal( $result, + "+OK POP3 POPFile (test suite) server ready$eol" ); + + print $client "USER 127.0.0.1:8110:transparent$eol"; + $result = <$client>; + test_assert_equal( $result, "+OK Welcome transparent$eol" ); + + print $client "PASS secret$eol"; + $result = <$client>; + test_assert_equal( $result, "+OK Now logged in$eol" ); + + my $cd = 10; + while ( $cd-- ) { + select( undef, undef, undef, 0.1 ); + $mq->service(); + $h->service(); + } + + close $client; + + # bad account + + $client = IO::Socket::INET->new( + Proto => "tcp", + PeerAddr => 'localhost', + PeerPort => $port ); + + test_assert( defined( $client ) ); + + test_assert( $client->connected ); + + $result = <$client>; + test_assert_equal( $result, + "+OK POP3 POPFile (test suite) server ready$eol" ); + + print $client "USER 127.0.0.1:8110:noaccount$eol"; + $result = <$client>; + test_assert_equal( $result, "+OK Welcome noaccount$eol" ); + + print $client "PASS secret$eol"; + $result = <$client>; + test_assert_equal( $result, "-ERR Unknown account 127.0.0.1:noaccount$eol" ); + + my $cd = 10; + while ( $cd-- ) { + select( undef, undef, undef, 0.1 ); + $mq->service(); + $h->service(); + } + + close $client; + + print $dwriter "__SINGLEUSERMODE :\n"; + $line = <$ureader>; + test_assert_equal( $line, "OK\n" ); + # Send the remote server a special message that makes it die *************** *** 2068,2072 **** if ( $command =~ /^USER (.*)/i ) { ! if ( $1 =~ /(gooduser|goslow|hang|slowlf)/ ) { print $client "+OK Welcome $1$eol"; $goslow = ( $1 =~ /goslow/ ); --- 2195,2199 ---- if ( $command =~ /^USER (.*)/i ) { ! if ( $1 =~ /(gooduser|goslow|hang|slowlf|transparent|noaccount)/ ) { print $client "+OK Welcome $1$eol"; $goslow = ( $1 =~ /goslow/ ); Index: TestBayes.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestBayes.tst,v retrieving revision 1.65 retrieving revision 1.66 diff -C2 -d -r1.65 -r1.66 *** TestBayes.tst 25 Apr 2008 16:26:49 -0000 1.65 --- TestBayes.tst 28 Apr 2008 11:17:43 -0000 1.66 *************** *** 325,328 **** --- 325,329 ---- # create_user with cloning admin + # the magnets and corpus are not copied my ( $success4, $password4 ) = $b->create_user( $session, 'testuser4', 'admin' ); *************** *** 353,357 **** my @buckets1 = sort $b->get_all_buckets( $session ); my @buckets4 = sort $b->get_all_buckets( $session4 ); ! for my $i (0..3) { test_assert_equal( $buckets1[$i], $buckets4[$i] ); --- 354,358 ---- my @buckets1 = sort $b->get_all_buckets( $session ); my @buckets4 = sort $b->get_all_buckets( $session4 ); ! for my $i (0..$#buckets1) { test_assert_equal( $buckets1[$i], $buckets4[$i] ); *************** *** 374,378 **** } ! # word count (corpus does not be copied) test_assert_equal( $b->get_word_count( $session4 ), 0 ); --- 375,379 ---- } ! # word count (corpus is not copied) test_assert_equal( $b->get_word_count( $session4 ), 0 ); *************** *** 385,389 **** $b->release_session_key( $session4 ); ! # TODO : cloning with magnets and corpus option # initialize_users_password --- 386,431 ---- $b->release_session_key( $session4 ); ! # create_user with cloning admin ! # the magnets and corpus are copied ! ! my ( $success5, $password5 ) = $b->create_user( $session, 'testuser5', 'admin', 1, 1 ); ! test_assert_equal( $success5, 0 ); ! test_assert( defined( $password5 ) ); ! test_assert( $password5 ne '' ); ! ! my $id5 = $b->get_user_id( $session, 'testuser5' ); ! test_assert( defined( $id5 ) ); ! ! my $session5 = $b->get_session_key( 'testuser5', $password5 ); ! ! # magnets (magnets are copied) ! ! my @mags1 = $b->get_buckets_with_magnets( $session ); ! my @mags5 = $b->get_buckets_with_magnets( $session5 ); ! test_assert_equal( $#mags1, $#mags5 ); ! for (0..$#mags1) { ! test_assert_equal( $mags1[$_], $mags5[$_] ); ! } ! ! my @types1 = $b->get_magnet_types_in_bucket( $session, 'personal' ); ! my @types5 = $b->get_magnet_types_in_bucket( $session5, 'personal' ); ! test_assert_equal( $#types1, $#types5 ); ! for (0..$#types1) { ! test_assert_equal( $types1[$_], $types5[$_] ); ! } ! ! # word count (corpus is copied) ! ! test_assert_equal( $b->get_word_count( $session5 ), ! $b->get_word_count( $session ) ); ! ! foreach my $bucket (@buckets4) { ! test_assert_equal( $b->get_bucket_word_count( $session5, $bucket ), ! $b->get_bucket_word_count( $session, $bucket ) ); ! test_assert_equal( $b->get_bucket_unique_count( $session5, $bucket ), ! $b->get_bucket_unique_count( $session, $bucket ) ); ! } ! ! $b->release_session_key( $session5 ); # initialize_users_password *************** *** 703,706 **** --- 745,763 ---- #close FILE; + # get_magnet_header_and_value + + my ( $header, $value ) = $b->get_magnet_header_and_value( $session, 1 ); + test_assert( defined( $header ) ); + test_assert_equal( $header, 'Subject' ); + test_assert_equal( $value, 'bar' ); + ( $header, $value ) = $b->get_magnet_header_and_value( $session, 2 ); + test_assert( defined( $header ) ); + test_assert_equal( $header, 'To' ); + test_assert_equal( $value, 'ba...@ba...' ); + ( $header, $value ) = $b->get_magnet_header_and_value( $session, 3 ); + test_assert( defined( $header ) ); + test_assert_equal( $header, 'From' ); + test_assert_equal( $value, 'foo' ); + # create_magnet *************** *** 862,866 **** $b->create_magnet( $session, 'zeotrope', 'from', 'cxc...@ya...' ); test_assert_equal( $b->classify( $session, 'TestMailParse021.msg' ), 'zeotrope' ); ! test_assert_equal( $b->{magnet_detail__}, 5 ); test_assert( $b->{magnet_used__} ); --- 919,923 ---- $b->create_magnet( $session, 'zeotrope', 'from', 'cxc...@ya...' ); test_assert_equal( $b->classify( $session, 'TestMailParse021.msg' ), 'zeotrope' ); ! test_assert_equal( $b->{magnet_detail__}, 8 ); test_assert( $b->{magnet_used__} ); |
From: naoki i. <am...@us...> - 2008-04-28 11:17:38
|
Update of /cvsroot/popfile/engine/languages In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27948/languages Modified Files: English.msg Nihongo.msg Log Message: Change Log 1. POP3 proxy no longer returns both '+OK' and '-ERR' when bad account is passed Proxy/POP3.pm 2. POP3S proxy and POP3 proxy share the POP3 accounts Classifier/Bayes.pm 3. Account table is used in the transparent proxy mode too Classifier/Bayes.pm In the transparent proxy mode, if the specified user is not found then POPFile will use the accounts table. 4. Add 'timeout' status message on the Password page 5. Add status messages for changing between Multiuser and Single user modes on the Administration page UI/HTML.pm languages/English.pm languages/Nihongo.pm 6. Add multiuser mode tests tests/TestPOP3.tst 7. Add some tests tests/TestBayes.tst tests for copying magnets and corpus tests for get_magnet_header_and_value 8. Fix TestHTML to pass on MSWin32 tests/TestHTML.tst tests/TestHTML.script 9. Remove an unwanted comment UI/HTML.pm Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS TestHistory PASS TestHTML PASS * TestHTTP PASS TestIMAP PASS TestInsertScript PASS * TestLogger PASS TestMailParse PASS TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 PASS TestProxy PASS TestWordMangle PASS TestXMLRPC PASS * : TODO : needs to add tests for multi user support Index: Nihongo.msg =================================================================== RCS file: /cvsroot/popfile/engine/languages/Nihongo.msg,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** Nihongo.msg 25 Apr 2008 16:26:30 -0000 1.29 --- Nihongo.msg 28 Apr 2008 11:17:43 -0000 1.30 *************** *** 273,276 **** --- 273,278 ---- Users_Duplicate_Account ¥¢¥«¥¦¥ó¥È¤òÄɲäǤ¤Þ¤»¤ó¤Ç¤·¤¿¡£Ê̤Υ桼¥¶¡¼¤Ë´ØÏ¢¤Å¤±¤é¤ì¤Æ¤¤¤Þ¤¹ Users_Failed_Account ¥¢¥«¥¦¥ó¥È¤òÄɲäǤ¤Þ¤»¤ó¤Ç¤·¤¿¡£ + Users_SingleUserModeOn POPFile ¤Ï¡Ö¥·¥ó¥°¥ë¥æ¡¼¥¶¡¼¥â¡¼¥É¡ÊPOPFile ¥¯¥é¥·¥Ã¥¯¡Ë¡×¤ËÊѹ¹¤µ¤ì¤Þ¤·¤¿¡£POPFile ¤òºÆµ¯Æ°¤¹¤ë¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£ + Users_MultiUserModeOn POPFile ¤Ï¡Ö¥Þ¥ë¥Á¥æ¡¼¥¶¡¼¥â¡¼¥É¡×¤ËÊѹ¹¤µ¤ì¤Þ¤·¤¿¡£POPFile ¤òºÆµ¯Æ°¤¹¤ë¤³¤È¤ò¤ª´«¤á¤·¤Þ¤¹¡£ History_Filter (<font color="%s">%s </font>¥Ð¥±¥Ä¤Î¤ß¤òɽ¼¨) *************** *** 315,318 **** --- 317,321 ---- Password_Error1 ¥Ñ¥¹¥ï¡¼¥É¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹ Password_Error2 ¥æ¡¼¥¶¡¼Ì¾¤Þ¤¿¤Ï¥Ñ¥¹¥ï¡¼¥É¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹ + Password_SessionTimeout POPFile ¤Î¥»¥Ã¥·¥ç¥ó¤Ï»þ´ÖÀÚ¤ì¤Ë¤Ê¤ê¤Þ¤·¤¿ Security_Error1 ǧ¾Ú¥Ý¡¼¥ÈÈÖ¹æ¤Ï 1 ¤«¤é 65535 ¤Þ¤Ç¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ Index: English.msg =================================================================== RCS file: /cvsroot/popfile/engine/languages/English.msg,v retrieving revision 1.116 retrieving revision 1.117 diff -C2 -d -r1.116 -r1.117 *** English.msg 25 Apr 2008 16:26:30 -0000 1.116 --- English.msg 28 Apr 2008 11:17:43 -0000 1.117 *************** *** 271,274 **** --- 271,276 ---- Users_Duplicate_Account Failed to add the account because it is assigned to another user Users_Failed_Account Failed to add the account + Users_SingleUserModeOn POPFile is now in the Single User Mode (POPFile classic). You are recommended to restart POPFile. + Users_MultiUserModeOn POPFile is now in the Multiuser Mode. You are recommended to restart POPFile. History_Filter (just showing bucket <font color="%s">%s</font>) *************** *** 313,316 **** --- 315,319 ---- Password_Error1 Incorrect password Password_Error2 Incorrect user name or password + Password_SessionTimeout POPFile session has been expired because a timeout period passed Security_Error1 The port must be a number between 1 and 65535 |
From: naoki i. <am...@us...> - 2008-04-28 11:17:38
|
Update of /cvsroot/popfile/engine/UI In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27948/UI Modified Files: HTML.pm Log Message: Change Log 1. POP3 proxy no longer returns both '+OK' and '-ERR' when bad account is passed Proxy/POP3.pm 2. POP3S proxy and POP3 proxy share the POP3 accounts Classifier/Bayes.pm 3. Account table is used in the transparent proxy mode too Classifier/Bayes.pm In the transparent proxy mode, if the specified user is not found then POPFile will use the accounts table. 4. Add 'timeout' status message on the Password page 5. Add status messages for changing between Multiuser and Single user modes on the Administration page UI/HTML.pm languages/English.pm languages/Nihongo.pm 6. Add multiuser mode tests tests/TestPOP3.tst 7. Add some tests tests/TestBayes.tst tests for copying magnets and corpus tests for get_magnet_header_and_value 8. Fix TestHTML to pass on MSWin32 tests/TestHTML.tst tests/TestHTML.script 9. Remove an unwanted comment UI/HTML.pm Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS TestHistory PASS TestHTML PASS * TestHTTP PASS TestIMAP PASS TestInsertScript PASS * TestLogger PASS TestMailParse PASS TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 PASS TestProxy PASS TestWordMangle PASS TestXMLRPC PASS * : TODO : needs to add tests for multi user support Index: HTML.pm =================================================================== RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v retrieving revision 1.392 retrieving revision 1.393 diff -C2 -d -r1.392 -r1.393 *** HTML.pm 25 Apr 2008 16:26:27 -0000 1.392 --- HTML.pm 28 Apr 2008 11:17:43 -0000 1.393 *************** *** 364,375 **** return $session; } else { $self->history_()->stop_query( $self->{sessions__}{$session}{q} ); delete $self->{sessions__}{$session}; ! return undef; } } - # Check that the session ID is still valid in the API. - if ( defined( $user ) ) { # $self->{sessions__}{$session}{lastused} = time; --- 364,375 ---- return $session; } else { + # time out + $self->history_()->stop_query( $self->{sessions__}{$session}{q} ); delete $self->{sessions__}{$session}; ! return 'TIMEOUT'; } } if ( defined( $user ) ) { # $self->{sessions__}{$session}{lastused} = time; *************** *** 392,396 **** } else { ! return undef; } } --- 392,396 ---- } else { ! return 'TIMEOUT'; } } *************** *** 487,493 **** --- 487,498 ---- my $session; + my $timeout = 0; if ( $cookie ne '' ) { $session = $self->handle_cookie__( $cookie, $client ); + if ( defined($session) && ( $session eq 'TIMEOUT' ) ) { + $timeout = 1; + $session = undef; + } } *************** *** 656,660 **** my $continue; ! ( $session, $continue ) = $self->password_page( $client, $original_url ); if ( !defined( $continue ) || # PROFILE BLOCK START $continue eq '/password' ) { # PROFILE BLOCK STOP --- 661,665 ---- my $continue; ! ( $session, $continue ) = $self->password_page( $client, $original_url, $timeout ); if ( !defined( $continue ) || # PROFILE BLOCK START $continue eq '/password' ) { # PROFILE BLOCK STOP *************** *** 1248,1252 **** my $single_user_mode_changed = 0; ! # TODO: add status messages # Read the CGI parameters and set the configuration vars accordingly --- 1253,1265 ---- my $single_user_mode_changed = 0; ! # Changed between the Single user mode and Multiuser mode ! ! if ( defined $self->{form_}->{single_user} ) { ! if ( $self->global_config_( 'single_user' ) ) { ! $self->status_message__( $templ, $self->language($session)->{Users_SingleUserModeOn} ); ! } else { ! $self->status_message__( $templ, $self->language($session)->{Users_MultiUserModeOn} ); ! } ! } # Read the CGI parameters and set the configuration vars accordingly *************** *** 1615,1619 **** if ( $single_user_mode_changed ) { ! $self->http_redirect_( $client, "/administration", $session ); return; } --- 1628,1632 ---- if ( $single_user_mode_changed ) { ! $self->http_redirect_( $client, "/administration?single_user=" . $self->global_config_( 'single_user' ), $session ); return; } *************** *** 3874,3877 **** --- 3887,3891 ---- # $client The web browser to send the results to # $url The higher level page the password prompt is to be embedded in + # $timeout 1 if session timeout # # Returns undef if login failed, or a session key value if it succeeded *************** *** 3880,3884 **** sub password_page { ! my ( $self, $client, $url ) = @_; my $session; --- 3894,3898 ---- sub password_page { ! my ( $self, $client, $url, $timeout ) = @_; my $session; *************** *** 3898,3901 **** --- 3912,3919 ---- $templ->param( 'Password_If_SingleUser' => $single_user ); + if ( $timeout ) { + $self->error_message__( $templ, $self->language('GLOBAL')->{Password_SessionTimeout} ); + } + $self->{form_}{username} = 'admin' if ( $single_user ); |
From: naoki i. <am...@us...> - 2008-04-28 11:17:38
|
Update of /cvsroot/popfile/engine/Proxy In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27948/Proxy Modified Files: POP3.pm Log Message: Change Log 1. POP3 proxy no longer returns both '+OK' and '-ERR' when bad account is passed Proxy/POP3.pm 2. POP3S proxy and POP3 proxy share the POP3 accounts Classifier/Bayes.pm 3. Account table is used in the transparent proxy mode too Classifier/Bayes.pm In the transparent proxy mode, if the specified user is not found then POPFile will use the accounts table. 4. Add 'timeout' status message on the Password page 5. Add status messages for changing between Multiuser and Single user modes on the Administration page UI/HTML.pm languages/English.pm languages/Nihongo.pm 6. Add multiuser mode tests tests/TestPOP3.tst 7. Add some tests tests/TestBayes.tst tests for copying magnets and corpus tests for get_magnet_header_and_value 8. Fix TestHTML to pass on MSWin32 tests/TestHTML.tst tests/TestHTML.script 9. Remove an unwanted comment UI/HTML.pm Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS TestHistory PASS TestHTML PASS * TestHTTP PASS TestIMAP PASS TestInsertScript PASS * TestLogger PASS TestMailParse PASS TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 PASS TestProxy PASS TestWordMangle PASS TestXMLRPC PASS * : TODO : needs to add tests for multi user support Index: POP3.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v retrieving revision 1.124 retrieving revision 1.125 diff -C2 -d -r1.124 -r1.125 *** POP3.pm 25 Apr 2008 23:21:47 -0000 1.124 --- POP3.pm 28 Apr 2008 11:17:43 -0000 1.125 *************** *** 351,355 **** # return password ok - $self->tee_( $client, "+OK password ok$eol" ); $session = $self->get_session_key_( $token ); if ( !defined( $session ) ) { --- 351,354 ---- *************** *** 357,367 **** last; } } else { $self->tee_( $client, $response ); } } else { ! my $ok = $self->echo_response_( $mail, $client, $command ); ! last if ( $ok == 2 ); ! if ( $ok == 0 ) { $session = $self->get_session_key_( $token ); if ( !defined( $session ) ) { --- 356,370 ---- last; } + $self->tee_( $client, "+OK password ok$eol" ); } else { $self->tee_( $client, $response ); } } else { ! my ( $response, $ok ) = # PROFILE BLOCK START ! $self->get_response_($mail, $client, ! $command, 0, 1); # PROFILE BLOCK STOP ! if ( ( $ok == 1 ) && ! ( $response =~ /$self->{good_response_}/ ) ) { ! $session = $self->get_session_key_( $token ); if ( !defined( $session ) ) { *************** *** 370,373 **** --- 373,377 ---- } } + $self->tee_( $client, $response ); } next; |
From: Brian S. <xue...@us...> - 2008-04-26 13:35:09
|
Update of /cvsroot/popfile/windows In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16440 Modified Files: Tag: b0_22_2 getparser.nsh Log Message: There's no need to install Text::Kakasi's packing list! Index: getparser.nsh =================================================================== RCS file: /cvsroot/popfile/windows/Attic/getparser.nsh,v retrieving revision 1.1.2.6 retrieving revision 1.1.2.7 diff -C2 -d -r1.1.2.6 -r1.1.2.7 *** getparser.nsh 2 Apr 2008 20:19:42 -0000 1.1.2.6 --- getparser.nsh 26 Apr 2008 13:35:13 -0000 1.1.2.7 *************** *** 232,236 **** SetOutPath "$G_MPLIBDIR\auto\Text\Kakasi" ! File "${C_PERL_DIR}\site\lib\auto\Text\Kakasi\*" !endif --- 232,236 ---- SetOutPath "$G_MPLIBDIR\auto\Text\Kakasi" ! File /x .packlist "${C_PERL_DIR}\site\lib\auto\Text\Kakasi\*" !endif |
From: Brian S. <xue...@us...> - 2008-04-26 13:33:15
|
Update of /cvsroot/popfile/windows In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15696 Modified Files: Tag: b0_22_2 installer.nsi Log Message: Use SOAP-Lite (and associated XMLRPC-Lite) from ActiveState. Index: installer.nsi =================================================================== RCS file: /cvsroot/popfile/windows/installer.nsi,v retrieving revision 1.242.4.28 retrieving revision 1.242.4.29 diff -C2 -d -r1.242.4.28 -r1.242.4.29 *** installer.nsi 25 Apr 2008 13:44:14 -0000 1.242.4.28 --- installer.nsi 26 Apr 2008 13:33:19 -0000 1.242.4.29 *************** *** 1499,1503 **** SetOutPath "$G_MPLIBDIR\SOAP" ! File /r "${C_PERL_DIR}\site\lib\SOAP\*" SetOutPath "$G_MPLIBDIR\Time" --- 1499,1503 ---- SetOutPath "$G_MPLIBDIR\SOAP" ! File /r "${C_PERL_DIR}\lib\SOAP\*" SetOutPath "$G_MPLIBDIR\Time" *************** *** 1511,1515 **** SetOutPath "$G_MPLIBDIR\XMLRPC" ! File /r "${C_PERL_DIR}\site\lib\XMLRPC\*" SetDetailsPrint textonly --- 1511,1515 ---- SetOutPath "$G_MPLIBDIR\XMLRPC" ! File /r "${C_PERL_DIR}\lib\XMLRPC\*" SetDetailsPrint textonly |
From: naoki i. <am...@us...> - 2008-04-25 23:21:43
|
Update of /cvsroot/popfile/engine/Proxy In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21976/Proxy Modified Files: POP3.pm Proxy.pm Log Message: Fixed a bug that accepting concurrent POP3S connections causes an error Index: POP3.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v retrieving revision 1.123 retrieving revision 1.124 diff -C2 -d -r1.123 -r1.124 *** POP3.pm 25 Apr 2008 16:26:19 -0000 1.123 --- POP3.pm 25 Apr 2008 23:21:47 -0000 1.124 *************** *** 342,346 **** $self->log_( 2, "digest='$md5hex'" ); ! my ($response, $ok) = # PROFILE BLOCK START $self->get_response_( $mail, $client, "APOP $self->{apop_user__} $md5hex", 0, 1 ); # PROFILE BLOCK STOP --- 342,346 ---- $self->log_( 2, "digest='$md5hex'" ); ! my ( $response, $ok ) = # PROFILE BLOCK START $self->get_response_( $mail, $client, "APOP $self->{apop_user__} $md5hex", 0, 1 ); # PROFILE BLOCK STOP Index: Proxy.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/Proxy.pm,v retrieving revision 1.66 retrieving revision 1.67 diff -C2 -d -r1.66 -r1.67 *** Proxy.pm 25 Apr 2008 16:26:20 -0000 1.66 --- Proxy.pm 25 Apr 2008 23:21:47 -0000 1.67 *************** *** 272,276 **** } ! close $client; } } --- 272,276 ---- } ! close $client if ( $self->name() ne 'pop3s' ); } } |
Update of /cvsroot/popfile/engine/POPFile In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20326/POPFile Modified Files: Configuration.pm Database.pm History.pm Loader.pm Logger.pm MQ.pm Module.pm Mutex.pm Log Message: Change Log 1. UI and POP3 proxy are now able to be connected via SSL 2. New Proxy module 'Proxy::POP3S' (POP3 over SSL) 3. New global options: GLOBAL_cert_file, GLOBAL_key_file, GLOBAL_ca_file 4. New html options: html_https_enabled, html_https_port 5. Secure cookies are used when accessed to the HTTPS server Proxy/POP3S.pm Proxy/POP3.pm Proxy/Proxy.pm UI/HTML.pm UI/HTTP.pm POPFile/Configuration.pm Classifier/Bayes.pm skins/default/pop3s-configuration-panel.thtml skins/default/pop3s-security-panel.thtml tests/Configuration.tst The new Proxy::POP3S module supports connections via SSL. It has following options: pop3s_enabled Enable(=1)/Disable(=0;default) the module pop3s_force_fork Enable(=1)/Disable(=0) forking pop3s_local Allow(=1)/Disallow(=0) connections from remote pop3s_port POP3S proxy port(default:995) pop3s_socks_port SOCKS proxy port pop3s_socks_server SOCKS proxy server pop3s_welcome_string POP3S proxy welcome string The other POP3 options (e.g. pop3_separator) are same as the Proxy::POP3 module. Here's the new options of the UI::HTML module: html_https_enabled Enable(=1)/Disable(=0;default) the HTTPS server html_https_port HTTPS server port(default:8443) The new global options: GLOBAL_cert_file Location of the certification file of the server GLOBAL_key_file Location of the key file of the server GLOBAL_ca_file Location of the CA file NOTE: I've implemented POP3S and the HTTPS in the different way. I've made a new module Proxy::POP3S for POP3S, but I don't make the module for HTTPS. This is because I think making the new module for HTTPS ( UI:HTTPS ? ) is very hard. BUG: Concurrent POP3S connections cause an error in some environment: SSL3 alert write:fatal:bad record mac 7664:error:1408F119:SSL routines:SSL3_GET_RECORD:decryption failed or bad record mac:s3_pkt.c:424: 6. AUTH PLAIN support Proxy/POP3.pm 7. Supress the verbose status messages on the administration tab 8. Add some status messages (administration tab) UI/HTML.pm UI/XMLRPC.pm Proxy/Proxy.pm Proxy/POP3.pm Proxy/NNTP.pm Proxy/SMTP.pm languages/English.msg languages/Nihongo.msg tests/TestPOP3.tst tests/TestHTML.script 9. The message files are no longer cached by the web browser UI/HTTP.pm 10. if html_allow_javascript == 0, don't disable the radio buttons skins/default/administration-page.thtml skins/default/pop3-security-panel.thtml skins/default/nntp-security-local.thtml skins/default/smtp-security-local.thtml skins/default/xmlrpc-local.thtml 11. Minor updates of the skins skins/smtp-chain-server.thtml skins/smtp-chain-server-port.thtml (merged to the above file) skins/pop3-chain-panel.thtml 12. Source code cleanup UI/HTML.pm UI/HTTP.pm UI/XMLRPC.pm Proxy/POP3.pm Proxy/Proxy.pm Proxy/NNTP.pm Proxy/SMTP.pm Classifier/Bayes.pm Classifier/MailParse.pm POPFile/Configuration.pm POPFile/Database.pm POPFile/History.pm POPFile/Loader.pm POPFile/Logger.pm POPFile/Module.pm POPFile/MQ.pm POPFile/Mutex.pm Add some 'PROFILE BLOCK START' and 'PROFILE BLOCK STOP's. These are used by Devel::TestCoverage to get the correct coverage. 13. Add some tests tests/TestBayes.tst Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS * TestHistory PASS TestHTML PASS * TestHTTP PASS TestIMAP PASS TestInsertScript PASS * TestLogger PASS TestMailParse PASS TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 PASS TestProxy PASS TestWordMangle PASS TestXMLRPC PASS * : TODO : needs to add tests for multi user support Index: History.pm =================================================================== RCS file: /cvsroot/popfile/engine/POPFile/History.pm,v retrieving revision 1.53 retrieving revision 1.54 diff -C2 -d -r1.53 -r1.54 *** History.pm 17 Apr 2008 15:13:04 -0000 1.53 --- History.pm 25 Apr 2008 16:26:17 -0000 1.54 *************** *** 36,41 **** use Digest::MD5 qw( md5_hex ); ! my $fields_slot = 'history.id, hdr_from, hdr_to, hdr_cc, hdr_subject, ! hdr_date, hash, inserted, buckets.name, usedtobe, history.bucketid, magnets.val, size, history.magnetid'; #---------------------------------------------------------------------------- --- 36,42 ---- use Digest::MD5 qw( md5_hex ); ! my $fields_slot = # PROFILE BLOCK START ! 'history.id, hdr_from, hdr_to, hdr_cc, hdr_subject, hdr_date, hash, inserted, ! buckets.name, usedtobe, history.bucketid, magnets.val, size, history.magnetid'; # PROFILE BLOCK STOP #---------------------------------------------------------------------------- *************** *** 255,260 **** $self->db_()->begin_work unless ($in_transaction); ! my $test = $self->db_()->selectrow_arrayref( ! "select id from history where committed = $r limit 1;"); if ( defined( $test ) ) { --- 256,261 ---- $self->db_()->begin_work unless ($in_transaction); ! my $test = $self->db_()->selectrow_arrayref( # PROFILE BLOCK START ! "select id from history where committed = $r limit 1;" ); # PROFILE BLOCK STOP if ( defined( $test ) ) { *************** *** 268,278 **** my $now = time; ! $self->db_()->do( ! "insert into history ( userid, committed, inserted ) values ( $userid, $r, $now );" ); last; } ! my $result = $self->db_()->selectrow_arrayref( ! "select id from history where committed = $r limit 1;"); $self->db_()->commit unless ($in_transaction); --- 269,279 ---- my $now = time; ! $self->db_()->do( # PROFILE BLOCK START ! "insert into history ( userid, committed, inserted ) values ( $userid, $r, $now );" ); # PROFILE BLOCK STOP last; } ! my $result = $self->db_()->selectrow_arrayref( # PROFILE BLOCK START ! "select id from history where committed = $r limit 1;" ); # PROFILE BLOCK STOP $self->db_()->commit unless ($in_transaction); *************** *** 377,382 **** # and update the database ! my $bucketid = $self->classifier_()->get_bucket_id( ! $session, $class ); my $oldbucketid = 0; --- 378,383 ---- # and update the database ! my $bucketid = $self->classifier_()->get_bucket_id( # PROFILE BLOCK START ! $session, $class ); # PROFILE BLOCK STOP my $oldbucketid = 0; *************** *** 386,392 **** } ! $self->db_()->do( "update history set bucketid = $bucketid, ! usedtobe = $oldbucketid ! where id = $slot;" ); $self->force_requery__(); } --- 387,394 ---- } ! $self->db_()->do( # PROFILE BLOCK START ! "update history set bucketid = $bucketid, ! usedtobe = $oldbucketid ! where id = $slot;" ); # PROFILE BLOCK STOP $self->force_requery__(); } *************** *** 410,416 **** my $oldbucketid = $fields[9]; ! $self->db_()->do( "update history set bucketid = $oldbucketid, ! usedtobe = 0 ! where id = $slot;" ); $self->force_requery__(); } --- 412,419 ---- my $oldbucketid = $fields[9]; ! $self->db_()->do( # PROFILE BLOCK START ! "update history set bucketid = $oldbucketid, ! usedtobe = 0 ! where id = $slot;" ); # PROFILE BLOCK STOP $self->force_requery__(); } *************** *** 433,442 **** return undef if ( !defined($userid) ); ! return $self->db_()->selectrow_array( "select $fields_slot from history, buckets, magnets where history.id = $slot and history.userid = $userid and buckets.id = history.bucketid and ! magnets.id = magnetid;" ); } --- 436,445 ---- return undef if ( !defined($userid) ); ! return $self->db_()->selectrow_array( # PROFILE BLOCK START "select $fields_slot from history, buckets, magnets where history.id = $slot and history.userid = $userid and buckets.id = history.bucketid and ! magnets.id = magnetid;" ); # PROFILE BLOCK STOP } *************** *** 458,465 **** return 0 if ( !defined($userid) ); ! my @row = $self->db_()->selectrow_array( "select id from history where history.id = $slot and ! history.userid = $userid;" ); return ( ( @row ) && ( $row[0] == $slot ) ); --- 461,468 ---- return 0 if ( !defined($userid) ); ! my @row = $self->db_()->selectrow_array( # PROFILE BLOCK START "select id from history where history.id = $slot and ! history.userid = $userid;" ); # PROFILE BLOCK STOP return ( ( @row ) && ( $row[0] == $slot ) ); *************** *** 540,546 **** foreach my $h (@sortable) { ! $sort_headers{$h} = $self->classifier_()->{parser__}->decode_string( ! ${$header{$h}}[0] ); $sort_headers{$h} = lc($sort_headers{$h} || ''); $sort_headers{$h} =~ s/[\"<>]//g; --- 543,549 ---- foreach my $h (@sortable) { ! $sort_headers{$h} = # PROFILE BLOCK START $self->classifier_()->{parser__}->decode_string( ! ${$header{$h}}[0] ); # PROFILE BLOCK STOP $sort_headers{$h} = lc($sort_headers{$h} || ''); $sort_headers{$h} =~ s/[\"<>]//g; *************** *** 556,561 **** } ! $sort_headers{$h} = $self->db_()->quote( ! $sort_headers{$h} ); } --- 559,564 ---- } ! $sort_headers{$h} = $self->db_()->quote( # PROFILE BLOCK START ! $sort_headers{$h} ); # PROFILE BLOCK STOP } *************** *** 566,572 **** foreach my $h (@required) { ! ${$header{$h}}[0] = $self->classifier_()->{parser__}->decode_string( ! ${$header{$h}}[0] ); if ( !defined ${$header{$h}}[0] || ${$header{$h}}[0] =~ /^\s*$/ ) { --- 569,575 ---- foreach my $h (@required) { ! ${$header{$h}}[0] = # PROFILE BLOCK START $self->classifier_()->{parser__}->decode_string( ! ${$header{$h}}[0] ); # PROFILE BLOCK STOP if ( !defined ${$header{$h}}[0] || ${$header{$h}}[0] =~ /^\s*$/ ) { *************** *** 597,602 **** # defined) ! my $bucketid = $self->classifier_()->get_bucket_id( ! $session, $bucket ); my $msg_size = -s $file; --- 600,605 ---- # defined) ! my $bucketid = $self->classifier_()->get_bucket_id( # PROFILE BLOCK START ! $session, $bucket ); # PROFILE BLOCK STOP my $msg_size = -s $file; *************** *** 608,612 **** if ( defined( $bucketid ) ) { ! my $result = $self->db_()->do( "update history set hdr_from = ${$header{from}}[0], hdr_to = ${$header{to}}[0], --- 611,615 ---- if ( defined( $bucketid ) ) { ! my $result = $self->db_()->do( # PROFILE BLOCK START "update history set hdr_from = ${$header{from}}[0], hdr_to = ${$header{to}}[0], *************** *** 624,628 **** hash = $hash, size = $msg_size ! where id = $slot;" ); } else { $self->log_( 0, "Couldn't find bucket ID for bucket $bucket when committing $slot" ); --- 627,631 ---- hash = $hash, size = $msg_size ! where id = $slot;" ); # PROFILE BLOCK STOP } else { $self->log_( 0, "Couldn't find bucket ID for bucket $bucket when committing $slot" ); *************** *** 659,672 **** my @b; if ( $cleanup ) { ! @b = $self->db_()->selectrow_array( "select buckets.name from history, buckets where history.bucketid = buckets.id and ! history.id = $slot;" ); } else { ! @b = $self->db_()->selectrow_array( "select buckets.name from history, buckets where history.bucketid = buckets.id and history.userid = $userid and ! history.id = $slot;" ); } --- 662,675 ---- my @b; if ( $cleanup ) { ! @b = $self->db_()->selectrow_array( # PROFILE BLOCK START "select buckets.name from history, buckets where history.bucketid = buckets.id and ! history.id = $slot;" ); # PROFILE BLOCK STOP } else { ! @b = $self->db_()->selectrow_array( # PROFILE BLOCK START "select buckets.name from history, buckets where history.bucketid = buckets.id and history.userid = $userid and ! history.id = $slot;" ); # PROFILE BLOCK STOP } *************** *** 682,687 **** $self->make_directory__( $path ); ! if ( ( $bucket ne 'unclassified' ) && ! ( $bucket ne 'unknown class' ) ) { $path .= "\/" . $bucket; $self->make_directory__( $path ); --- 685,690 ---- $self->make_directory__( $path ); ! if ( ( $bucket ne 'unclassified' ) && # PROFILE BLOCK START ! ( $bucket ne 'unknown class' ) ) { # PROFILE BLOCK STOP $path .= "\/" . $bucket; $self->make_directory__( $path ); *************** *** 691,696 **** # Archive to a random sub-directory of the bucket archive ! my $subdirectory = int( rand( ! $self->config_( 'archive_classes' ) ) ); $path .= "\/" . $subdirectory; $self->make_directory__( $path ); --- 694,699 ---- # Archive to a random sub-directory of the bucket archive ! my $subdirectory = int( rand( # PROFILE BLOCK START ! $self->config_( 'archive_classes' ) ) ); # PROFILE BLOCK STOP $path .= "\/" . $subdirectory; $self->make_directory__( $path ); *************** *** 773,779 **** my $hex_slot = sprintf( '%8.8x', $slot ); ! my $path = $self->get_user_path_( $self->path_join( $self->global_config_( 'msgdir' ), ! substr( $hex_slot, 0, 2 ) . '/' ), 0 ); $self->make_directory__( $path ); --- 776,782 ---- my $hex_slot = sprintf( '%8.8x', $slot ); ! my $path = $self->get_user_path_( # PROFILE BLOCK START $self->path_join( $self->global_config_( 'msgdir' ), ! substr( $hex_slot, 0, 2 ) . '/' ), 0 ); # PROFILE BLOCK STOP $self->make_directory__( $path ); *************** *** 783,788 **** $self->make_directory__( $path ); ! my $file = 'popfile' . ! substr( $hex_slot, 6, 2 ) . '.msg'; return $path . $file; --- 786,791 ---- $self->make_directory__( $path ); ! my $file = 'popfile' . # PROFILE BLOCK START ! substr( $hex_slot, 6, 2 ) . '.msg'; # PROFILE BLOCK STOP return $path . $file; *************** *** 836,841 **** $hash = $self->db_()->quote( $hash ); ! my $result = $self->db_()->selectrow_arrayref( ! "select id from history where hash = $hash limit 1;" ); return defined( $result )?$result->[0]:''; --- 839,844 ---- $hash = $self->db_()->quote( $hash ); ! my $result = $self->db_()->selectrow_arrayref( # PROFILE BLOCK START ! "select id from history where hash = $hash limit 1;" ); # PROFILE BLOCK STOP return defined( $result )?$result->[0]:''; *************** *** 942,948 **** # then do no work here ! if ( defined( $self->{queries__}{$id}{fields} ) && ( $self->{queries__}{$id}{fields} eq ! "$filter:$search:$sort:$not" ) ) { return; } --- 945,951 ---- # then do no work here ! if ( defined( $self->{queries__}{$id}{fields} ) && # PROFILE BLOCK START ( $self->{queries__}{$id}{fields} eq ! "$filter:$search:$sort:$not" ) ) { # PROFILE BLOCK STOP return; } *************** *** 979,989 **** if ( $filter ne '' ) { if ( $filter eq '__filter__magnet' ) { ! $self->{queries__}{$id}{base} .= ! " and history.magnetid $equal 0"; } else { ! my $bucketid = $self->classifier_()->get_bucket_id( ! $self->{queries__}{$id}{session}, $filter ); ! $self->{queries__}{$id}{base} .= ! " and history.bucketid $not_equal $bucketid"; } } --- 982,992 ---- if ( $filter ne '' ) { if ( $filter eq '__filter__magnet' ) { ! $self->{queries__}{$id}{base} .= # PROFILE BLOCK START ! " and history.magnetid $equal 0"; # PROFILE BLOCK STOP } else { ! my $bucketid = $self->classifier_()->get_bucket_id( # PROFILE BLOCK START ! $self->{queries__}{$id}{session}, $filter ); # PROFILE BLOCK STOP ! $self->{queries__}{$id}{base} .= # PROFILE BLOCK START ! " and history.bucketid $not_equal $bucketid"; # PROFILE BLOCK STOP } } *************** *** 1020,1025 **** $count =~ s/XXX/COUNT(*)/; ! $self->{queries__}{$id}{count} = ! $self->db_()->selectrow_arrayref( $count )->[0]; my $select = $self->{queries__}{$id}{base}; --- 1023,1028 ---- $count =~ s/XXX/COUNT(*)/; ! $self->{queries__}{$id}{count} = # PROFILE BLOCK START ! $self->db_()->selectrow_arrayref( $count )->[0]; # PROFILE BLOCK STOP my $select = $self->{queries__}{$id}{base}; *************** *** 1111,1117 **** $self->log_( 2, "Getting $rows rows from database" ); $self->{queries__}{$id}{query}->execute; ! $self->{queries__}{$id}{cache} = $self->{queries__}{$id}{query}->fetchall_arrayref( ! undef, $start + $count - 1 ); $self->{queries__}{$id}{query}->finish; } --- 1114,1120 ---- $self->log_( 2, "Getting $rows rows from database" ); $self->{queries__}{$id}{query}->execute; ! $self->{queries__}{$id}{cache} = # PROFILE BLOCK START $self->{queries__}{$id}{query}->fetchall_arrayref( ! undef, $start + $count - 1 ); # PROFILE BLOCK STOP $self->{queries__}{$id}{query}->finish; } *************** *** 1182,1188 **** # upgrade them by placing them in the database ! my @msgs = sort compare_mf__ glob $self->get_user_path_( $self->path_join( $self->global_config_( 'msgdir' ), ! 'popfile*.msg' ), 0 ); if ( $#msgs != -1 ) { --- 1185,1191 ---- # upgrade them by placing them in the database ! my @msgs = sort compare_mf__ glob $self->get_user_path_( # PROFILE BLOCK START $self->path_join( $self->global_config_( 'msgdir' ), ! 'popfile*.msg' ), 0 ); # PROFILE BLOCK STOP if ( $#msgs != -1 ) { *************** *** 1204,1209 **** # upgraded history will have no magnet information. ! my ( $reclassified, $bucket, $usedtobe, $magnet ) = ! $self->history_read_class__( $msg ); if ( $bucket ne 'unknown_class' ) { --- 1207,1212 ---- # upgraded history will have no magnet information. ! my ( $reclassified, $bucket, $usedtobe, $magnet ) = # PROFILE BLOCK START ! $self->history_read_class__( $msg ); # PROFILE BLOCK STOP if ( $bucket ne 'unknown_class' ) { *************** *** 1223,1229 **** $self->classifier_()->release_session_key( $session ); ! unlink $self->get_user_path_( $self->path_join( $self->global_config_( 'msgdir' ), ! 'history_cache' ), 0 ); } } --- 1226,1232 ---- $self->classifier_()->release_session_key( $session ); ! unlink $self->get_user_path_( # PROFILE BLOCK START $self->path_join( $self->global_config_( 'msgdir' ), ! 'history_cache' ), 0 ); # PROFILE BLOCK STOP } } *************** *** 1258,1263 **** if ( open CLASS, "<$filename" ) { $bucket = <CLASS>; ! if ( defined( $bucket ) && ! ( $bucket =~ /([^ ]+) MAGNET ([^\r\n]+)/ ) ) { $bucket = $1; $magnet = $2; --- 1261,1266 ---- if ( open CLASS, "<$filename" ) { $bucket = <CLASS>; ! if ( defined( $bucket ) && # PROFILE BLOCK START ! ( $bucket =~ /([^ ]+) MAGNET ([^\r\n]+)/ ) ) { # PROFILE BLOCK STOP $bucket = $1; $magnet = $2; *************** *** 1301,1310 **** my @ids; ! my $d = $self->db_()->prepare( "select id from history ! where userid = ? and ! inserted < ?;" ); foreach my $userid ( keys %$users ) { ! my $old = time - $self->user_config_( $userid, 'history_days' ) * ! $seconds_per_day; $d->execute( $userid, $old ); my @row; --- 1304,1314 ---- my @ids; ! my $d = $self->db_()->prepare( # PROFILE BLOCK START ! "select id from history ! where userid = ? and ! inserted < ?;" ); # PROFILE BLOCK STOP foreach my $userid ( keys %$users ) { ! my $old = time - $self->user_config_( $userid, 'history_days' ) * # PROFILE BLOCK START ! $seconds_per_day; # PROFILE BLOCK STOP $d->execute( $userid, $old ); my @row; Index: Configuration.pm =================================================================== RCS file: /cvsroot/popfile/engine/POPFile/Configuration.pm,v retrieving revision 1.65 retrieving revision 1.66 diff -C2 -d -r1.65 -r1.66 *** Configuration.pm 17 Apr 2008 15:13:04 -0000 1.65 --- Configuration.pm 25 Apr 2008 16:26:17 -0000 1.66 *************** *** 158,161 **** --- 158,167 ---- $self->global_config_( 'session_timeout', 1800 ); + # Files used for the incoming SSL connections + + $self->global_config_( 'cert_file', './certs/server-cert.pem' ); + $self->global_config_( 'key_file', './certs/server-key.pem' ); + $self->global_config_( 'ca_file', './certs/ca.pem' ); + # Register for the TICKD message which is sent hourly by the # Logger module. We use this to hourly save the configuration file *************** *** 200,206 **** } ! $self->{pid_file__} = $self->get_user_path( $self->path_join( $self->config_( 'piddir' ), ! 'popfile.pid' ), 0 ) ; if (defined($self->live_check_())) { --- 206,212 ---- } ! $self->{pid_file__} = $self->get_user_path( $self->path_join( # PROFILE BLOCK START $self->config_( 'piddir' ), ! 'popfile.pid' ), 0 ) ; # PROFILE BLOCK STOP if (defined($self->live_check_())) { *************** *** 594,599 **** if (defined($self->{configuration_parameters__}{$parameter})) { ! $self->{configuration_parameters__}{$parameter}{value} = ! $value; } else { $self->{deprecated_parameters__}{$parameter} = $value; --- 600,605 ---- if (defined($self->{configuration_parameters__}{$parameter})) { ! $self->{configuration_parameters__}{$parameter}{value} = # PROFILE BLOCK START ! $value; # PROFILE BLOCK STOP } else { $self->{deprecated_parameters__}{$parameter} = $value; *************** *** 678,684 **** $sandbox = 1 if ( !defined( $sandbox ) ); ! if ( ( $right =~ /^\// ) || ( $right =~ /^[A-Za-z]:[\/\\]/ ) || ! ( $right =~ /\\\\/ ) ) { if ( $sandbox ) { $self->log_( 0, "Attempt to access path $right outside sandbox" ); --- 684,690 ---- $sandbox = 1 if ( !defined( $sandbox ) ); ! if ( ( $right =~ /^\// ) || # PROFILE BLOCK START ( $right =~ /^[A-Za-z]:[\/\\]/ ) || ! ( $right =~ /\\\\/ ) ) { # PROFILE BLOCK STOP if ( $sandbox ) { $self->log_( 0, "Attempt to access path $right outside sandbox" ); Index: Loader.pm =================================================================== RCS file: /cvsroot/popfile/engine/POPFile/Loader.pm,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** Loader.pm 20 Feb 2006 02:01:57 -0000 1.37 --- Loader.pm 25 Apr 2008 16:26:17 -0000 1.38 *************** *** 172,178 **** # Parse just the --verbose command-line option ! GetOptions( "verbose!" => \$self->{debug__}, "shutdown" => \$self->{shutdown__}, ! "quiet" => sub{ $self->{debug__} = 0 } ); } --- 172,178 ---- # Parse just the --verbose command-line option ! GetOptions( "verbose!" => \$self->{debug__}, # PROFILE BLOCK START "shutdown" => \$self->{shutdown__}, ! "quiet" => sub{ $self->{debug__} = 0 } ); # PROFILE BLOCK STOP } Index: Database.pm =================================================================== RCS file: /cvsroot/popfile/engine/POPFile/Database.pm,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** Database.pm 5 Apr 2008 10:32:53 -0000 1.9 --- Database.pm 25 Apr 2008 16:26:17 -0000 1.10 *************** *** 175,182 **** # backup the database by copying it ! if ( ( $self->config_( 'sqlite_tweaks' ) & 2 ) && ! $self->{db_is_sqlite__} ) { if ( !copy( $self->{db_name__}, $self->{db_name__} . ".backup" ) ) { ! $self->log_( 0, "Failed to backup database ".$self->{db_name__} ); } } --- 175,182 ---- # backup the database by copying it ! if ( ( $self->config_( 'sqlite_tweaks' ) & 2 ) && # PROFILE BLOCK START ! $self->{db_is_sqlite__} ) { # PROFILE BLOCK STOP if ( !copy( $self->{db_name__}, $self->{db_name__} . ".backup" ) ) { ! $self->log_( 0, "Failed to backup database ".$self->{db_name__} ); } } *************** *** 198,203 **** my ( $self, $tweak, $state, $db ) = @_; ! if ( $self->{db_is_sqlite__} && ! ( $self->config_( 'sqlite_tweaks' ) & $tweak ) ) { $self->log_( 1, "Performing tweak $tweak to $state" ); --- 198,203 ---- my ( $self, $tweak, $state, $db ) = @_; ! if ( $self->{db_is_sqlite__} && # PROFILE BLOCK START ! ( $self->config_( 'sqlite_tweaks' ) & $tweak ) ) { # PROFILE BLOCK STOP $self->log_( 1, "Performing tweak $tweak to $state" ); *************** *** 350,355 **** foreach my $table (@tables) { if ( $table eq 'popfile' ) { ! my @row = $db->selectrow_array( ! 'select version from popfile;' ); if ( $#row == 0 ) { --- 350,355 ---- foreach my $table (@tables) { if ( $table eq 'popfile' ) { ! my @row = $db->selectrow_array( # PROFILE BLOCK START ! 'select version from popfile;' ); # PROFILE BLOCK STOP if ( $#row == 0 ) { Index: Mutex.pm =================================================================== RCS file: /cvsroot/popfile/engine/POPFile/Mutex.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Mutex.pm 20 Feb 2006 02:01:57 -0000 1.5 --- Mutex.pm 25 Apr 2008 16:26:17 -0000 1.6 *************** *** 53,61 **** # and 0 if it fails. # #---------------------------------------------------------------------------- sub acquire { ! my ( $self, # Reference to this object ! $timeout ) = @_; # Timeout in seconds to wait (undef = infinite) # If acquire() has been called without a matching release() then --- 53,63 ---- # and 0 if it fails. # + # $self Reference to this object + # $timeout Timeout in seconds to wait (undef = infinite) + # #---------------------------------------------------------------------------- sub acquire { ! my ( $self, $timeout ) = @_; # If acquire() has been called without a matching release() then Index: Module.pm =================================================================== RCS file: /cvsroot/popfile/engine/POPFile/Module.pm,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** Module.pm 13 Apr 2008 03:08:09 -0000 1.54 --- Module.pm 25 Apr 2008 16:26:17 -0000 1.55 *************** *** 376,381 **** my ( $package, $file, $line ) = caller; ! $self->logger_()->debug( $level, $self->{name__} . ": $line: " . ! $message ); } --- 376,381 ---- my ( $package, $file, $line ) = caller; ! $self->logger_()->debug( $level, $self->{name__} . ": $line: " . # PROFILE BLOCK START ! $message ); # PROFILE BLOCK STOP } *************** *** 541,549 **** if ( defined( $value ) ) { ! return $self->classifier_()->set_user_parameter_from_id( $user, ! $module . "_" . $name, $value ); } else { ! my ( $val, $def ) = $self->classifier_()->get_user_parameter_from_id( ! $user, $module . "_" . $name ); return $val; } --- 541,549 ---- if ( defined( $value ) ) { ! return $self->classifier_()->set_user_parameter_from_id( $user, # PROFILE BLOCK START ! $module . "_" . $name, $value ); # PROFILE BLOCK STOP } else { ! my ( $val, $def ) = $self->classifier_()->get_user_parameter_from_id( # PROFILE BLOCK START ! $user, $module . "_" . $name ); # PROFILE BLOCK STOP return $val; } Index: MQ.pm =================================================================== RCS file: /cvsroot/popfile/engine/POPFile/MQ.pm,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** MQ.pm 9 Apr 2008 17:20:47 -0000 1.24 --- MQ.pm 25 Apr 2008 16:26:17 -0000 1.25 *************** *** 71,75 **** # Messages are handled in this order. ! my %message_type_list = ( 'CREAT' => 1, 'LOGIN' => 2, --- 71,75 ---- # Messages are handled in this order. ! my %message_type_list = ( # PROFILE BLOCK START 'CREAT' => 1, 'LOGIN' => 2, *************** *** 78,82 **** 'TICKD' => 5, 'RELSE' => 6, ! ); #---------------------------------------------------------------------------- --- 78,82 ---- 'TICKD' => 5, 'RELSE' => 6, ! ); # PROFILE BLOCK STOP #---------------------------------------------------------------------------- *************** *** 136,141 **** # Iterate through all the messages in all the queues ! for my $type ( sort sort_message__ ! keys %{$self->{queue__}} ) { while ( my $ref = shift @{$self->{queue__}{$type}} ) { --- 136,141 ---- # Iterate through all the messages in all the queues ! for my $type ( sort sort_message__ # PROFILE BLOCK START ! keys %{$self->{queue__}} ) { # PROFILE BLOCK STOP while ( my $ref = shift @{$self->{queue__}{$type}} ) { *************** *** 146,151 **** for my $waiter (@{$self->{waiters__}{$type}}) { ! $self->log_( 2, "Delivering message $type ($flat) to " . ! $waiter->name() ); $waiter->deliver( $type, @message ); --- 146,151 ---- for my $waiter (@{$self->{waiters__}{$type}}) { ! $self->log_( 2, "Delivering message $type ($flat) to " . # PROFILE BLOCK START ! $waiter->name() ); # PROFILE BLOCK STOP $waiter->deliver( $type, @message ); Index: Logger.pm =================================================================== RCS file: /cvsroot/popfile/engine/POPFile/Logger.pm,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -d -r1.46 -r1.47 *** Logger.pm 20 Feb 2006 02:01:57 -0000 1.46 --- Logger.pm 25 Apr 2008 16:26:17 -0000 1.47 *************** *** 189,195 **** # sandbox ! $self->{debug_filename__} = $self->get_user_path_( $self->path_join( $self->config_( 'logdir' ), ! "popfile$self->{today__}.log" ), 0 ); } --- 189,195 ---- # sandbox ! $self->{debug_filename__} = $self->get_user_path_( # PROFILE BLOCK START $self->path_join( $self->config_( 'logdir' ), ! "popfile$self->{today__}.log" ), 0 ); # PROFILE BLOCK STOP } *************** *** 237,242 **** } ! if ( ( !defined( $self->config_( 'level' ) ) ) || ! ( $level > $self->config_( 'level' ) ) ) { return; } --- 237,242 ---- } ! if ( ( !defined( $self->config_( 'level' ) ) ) || # PROFILE BLOCK START ! ( $level > $self->config_( 'level' ) ) ) { # PROFILE BLOCK STOP return; } *************** *** 257,262 **** $message =~ s/([\x00-\x1f])/sprintf("[%2.2x]", ord($1))/eg; ! my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = ! localtime; $year += 1900; $mon += 1; --- 257,262 ---- $message =~ s/([\x00-\x1f])/sprintf("[%2.2x]", ord($1))/eg; ! my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = # PROFILE BLOCK START ! localtime; # PROFILE BLOCK STOP $year += 1900; $mon += 1; |
From: naoki i. <am...@us...> - 2008-04-25 16:27:16
|
Update of /cvsroot/popfile/engine/Classifier In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20326/Classifier Modified Files: Bayes.pm MailParse.pm Log Message: Change Log 1. UI and POP3 proxy are now able to be connected via SSL 2. New Proxy module 'Proxy::POP3S' (POP3 over SSL) 3. New global options: GLOBAL_cert_file, GLOBAL_key_file, GLOBAL_ca_file 4. New html options: html_https_enabled, html_https_port 5. Secure cookies are used when accessed to the HTTPS server Proxy/POP3S.pm Proxy/POP3.pm Proxy/Proxy.pm UI/HTML.pm UI/HTTP.pm POPFile/Configuration.pm Classifier/Bayes.pm skins/default/pop3s-configuration-panel.thtml skins/default/pop3s-security-panel.thtml tests/Configuration.tst The new Proxy::POP3S module supports connections via SSL. It has following options: pop3s_enabled Enable(=1)/Disable(=0;default) the module pop3s_force_fork Enable(=1)/Disable(=0) forking pop3s_local Allow(=1)/Disallow(=0) connections from remote pop3s_port POP3S proxy port(default:995) pop3s_socks_port SOCKS proxy port pop3s_socks_server SOCKS proxy server pop3s_welcome_string POP3S proxy welcome string The other POP3 options (e.g. pop3_separator) are same as the Proxy::POP3 module. Here's the new options of the UI::HTML module: html_https_enabled Enable(=1)/Disable(=0;default) the HTTPS server html_https_port HTTPS server port(default:8443) The new global options: GLOBAL_cert_file Location of the certification file of the server GLOBAL_key_file Location of the key file of the server GLOBAL_ca_file Location of the CA file NOTE: I've implemented POP3S and the HTTPS in the different way. I've made a new module Proxy::POP3S for POP3S, but I don't make the module for HTTPS. This is because I think making the new module for HTTPS ( UI:HTTPS ? ) is very hard. BUG: Concurrent POP3S connections cause an error in some environment: SSL3 alert write:fatal:bad record mac 7664:error:1408F119:SSL routines:SSL3_GET_RECORD:decryption failed or bad record mac:s3_pkt.c:424: 6. AUTH PLAIN support Proxy/POP3.pm 7. Supress the verbose status messages on the administration tab 8. Add some status messages (administration tab) UI/HTML.pm UI/XMLRPC.pm Proxy/Proxy.pm Proxy/POP3.pm Proxy/NNTP.pm Proxy/SMTP.pm languages/English.msg languages/Nihongo.msg tests/TestPOP3.tst tests/TestHTML.script 9. The message files are no longer cached by the web browser UI/HTTP.pm 10. if html_allow_javascript == 0, don't disable the radio buttons skins/default/administration-page.thtml skins/default/pop3-security-panel.thtml skins/default/nntp-security-local.thtml skins/default/smtp-security-local.thtml skins/default/xmlrpc-local.thtml 11. Minor updates of the skins skins/smtp-chain-server.thtml skins/smtp-chain-server-port.thtml (merged to the above file) skins/pop3-chain-panel.thtml 12. Source code cleanup UI/HTML.pm UI/HTTP.pm UI/XMLRPC.pm Proxy/POP3.pm Proxy/Proxy.pm Proxy/NNTP.pm Proxy/SMTP.pm Classifier/Bayes.pm Classifier/MailParse.pm POPFile/Configuration.pm POPFile/Database.pm POPFile/History.pm POPFile/Loader.pm POPFile/Logger.pm POPFile/Module.pm POPFile/MQ.pm POPFile/Mutex.pm Add some 'PROFILE BLOCK START' and 'PROFILE BLOCK STOP's. These are used by Devel::TestCoverage to get the correct coverage. 13. Add some tests tests/TestBayes.tst Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS * TestHistory PASS TestHTML PASS * TestHTTP PASS TestIMAP PASS TestInsertScript PASS * TestLogger PASS TestMailParse PASS TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 PASS TestProxy PASS TestWordMangle PASS TestXMLRPC PASS * : TODO : needs to add tests for multi user support Index: Bayes.pm =================================================================== RCS file: /cvsroot/popfile/engine/Classifier/Bayes.pm,v retrieving revision 1.368 retrieving revision 1.369 diff -C2 -d -r1.368 -r1.369 *** Bayes.pm 18 Apr 2008 12:41:49 -0000 1.368 --- Bayes.pm 25 Apr 2008 16:26:04 -0000 1.369 *************** *** 335,345 **** # Windows and using the fork. ! if ( ( $nihongo_parser eq 'kakasi' ) && ( $^O eq 'MSWin32' ) && ! ( ( ( $self->module_config_( 'pop3', 'enabled' ) ) && ! ( $self->module_config_( 'pop3', 'force_fork' ) ) ) || ! ( ( $self->module_config_( 'nntp', 'enabled' ) ) && ! ( $self->module_config_( 'nntp', 'force_fork' ) ) ) || ! ( ( $self->module_config_( 'smtp', 'enabled' ) ) && ! ( $self->module_config_( 'smtp', 'force_fork' ) ) ) ) ) { $self->{parser__}->{need_kakasi_mutex__} = 1; --- 335,347 ---- # Windows and using the fork. ! if ( ( $nihongo_parser eq 'kakasi' ) && ( $^O eq 'MSWin32' ) && # PROFILE BLOCK START ! ( ( ( $self->module_config_( 'pop3', 'enabled' ) ) && ! ( $self->module_config_( 'pop3', 'force_fork' ) ) ) || ! ( ( $self->module_config_( 'pop3s', 'enabled' ) ) && ! ( $self->module_config_( 'pop3s', 'force_fork' ) ) ) || ! ( ( $self->module_config_( 'nntp', 'enabled' ) ) && ! ( $self->module_config_( 'nntp', 'force_fork' ) ) ) || ! ( ( $self->module_config_( 'smtp', 'enabled' ) ) && ! ( $self->module_config_( 'smtp', 'force_fork' ) ) ) ) ) { # PROFILE BLOCK STOP $self->{parser__}->{need_kakasi_mutex__} = 1; *************** *** 460,490 **** if ( $bucket ne $newbucket ) { ! my $count = $self->get_bucket_parameter( ! $session, $newbucket, 'count' ); my $newcount = $count + $c; $newcount = 0 if ( $newcount < 0 ); ! $self->set_bucket_parameter( ! $session, $newbucket, 'count', $newcount ); ! $count = $self->get_bucket_parameter( ! $session, $bucket, 'count' ); $newcount = $count - $c; $newcount = 0 if ( $newcount < 0 ); ! $self->set_bucket_parameter( ! $session, $bucket, 'count', $newcount ); ! my $fncount = $self->get_bucket_parameter( ! $session, $newbucket, 'fncount' ); my $newfncount = $fncount + $c; $newfncount = 0 if ( $newfncount < 0 ); ! $self->set_bucket_parameter( ! $session, $newbucket, 'fncount', $newfncount ); ! my $fpcount = $self->get_bucket_parameter( ! $session, $bucket, 'fpcount' ); my $newfpcount = $fpcount + $c; $newfpcount = 0 if ( $newfpcount < 0 ); ! $self->set_bucket_parameter( ! $session, $bucket, 'fpcount', $newfpcount ); } } --- 462,492 ---- if ( $bucket ne $newbucket ) { ! my $count = $self->get_bucket_parameter( # PROFILE BLOCK START ! $session, $newbucket, 'count' ); # PROFILE BLOCK STOP my $newcount = $count + $c; $newcount = 0 if ( $newcount < 0 ); ! $self->set_bucket_parameter( # PROFILE BLOCK START ! $session, $newbucket, 'count', $newcount ); # PROFILE BLOCK STOP ! $count = $self->get_bucket_parameter( # PROFILE BLOCK START ! $session, $bucket, 'count' ); # PROFILE BLOCK STOP $newcount = $count - $c; $newcount = 0 if ( $newcount < 0 ); ! $self->set_bucket_parameter( # PROFILE BLOCK START ! $session, $bucket, 'count', $newcount ); # PROFILE BLOCK STOP ! my $fncount = $self->get_bucket_parameter( # PROFILE BLOCK START ! $session, $newbucket, 'fncount' ); # PROFILE BLOCK STOP my $newfncount = $fncount + $c; $newfncount = 0 if ( $newfncount < 0 ); ! $self->set_bucket_parameter( # PROFILE BLOCK START ! $session, $newbucket, 'fncount', $newfncount ); # PROFILE BLOCK STOP ! my $fpcount = $self->get_bucket_parameter( # PROFILE BLOCK START ! $session, $bucket, 'fpcount' ); # PROFILE BLOCK STOP my $newfpcount = $fpcount + $c; $newfpcount = 0 if ( $newfpcount < 0 ); ! $self->set_bucket_parameter( # PROFILE BLOCK START ! $session, $bucket, 'fpcount', $newfpcount ); # PROFILE BLOCK STOP } } *************** *** 529,534 **** if ( $prob > $max ) { $max = $prob; ! $color = $self->get_bucket_parameter( $session, $bucket, ! 'color' ); } } --- 531,536 ---- if ( $prob > $max ) { $max = $prob; ! $color = $self->get_bucket_parameter( $session, $bucket, # PROFILE BLOCK START ! 'color' ); # PROFILE BLOCK STOP } } *************** *** 579,584 **** # much slower than this single log with a division in it ! return log( $value / ! $self->get_bucket_word_count( $session, $bucket ) ); } else { return 0; --- 581,586 ---- # much slower than this single log with a division in it ! return log( $value / # PROFILE BLOCK START ! $self->get_bucket_word_count( $session, $bucket ) ); # PROFILE BLOCK STOP } else { return 0; *************** *** 611,616 **** my ( $self, $session, $bucket, $word, $value ) = @_; ! if ( $self->db_put_word_count__( $session, $bucket, ! $word, $value ) == 1 ) { # If we set the word count to zero then clean it up by deleting the --- 613,618 ---- my ( $self, $session, $bucket, $word, $value ) = @_; ! if ( $self->db_put_word_count__( $session, $bucket, # PROFILE BLOCK START ! $word, $value ) == 1 ) { # PROFILE BLOCK STOP # If we set the word count to zero then clean it up by deleting the *************** *** 674,679 **** if ( $total != 0 ) { ! $self->{bucket_start__}{$userid}{$bucket} = log( $total / ! $wc ); } else { $self->{bucket_start__}{$userid}{$bucket} = 0; --- 676,681 ---- if ( $total != 0 ) { ! $self->{bucket_start__}{$userid}{$bucket} = log( $total / # PROFILE BLOCK START ! $wc ); # PROFILE BLOCK STOP } else { $self->{bucket_start__}{$userid}{$bucket} = 0; *************** *** 781,789 **** and matrix.bucketid = ?;' ); # PROFILE BLOCK STOP ! $self->{db_get_user_list__} = $self->db_()->prepare( ! 'select id, name from users order by name;' ); ! $self->{db_get_user_from_account__} = $self->db_()->prepare( ! 'select userid from accounts where account = ?' ); # Get the mapping from parameter names to ids into a local hash --- 783,791 ---- and matrix.bucketid = ?;' ); # PROFILE BLOCK STOP ! $self->{db_get_user_list__} = $self->db_()->prepare( # PROFILE BLOCK START ! 'select id, name from users order by name;' ); # PROFILE BLOCK STOP ! $self->{db_get_user_from_account__} = $self->db_()->prepare( # PROFILE BLOCK START ! 'select userid from accounts where account = ?' ); # PROFILE BLOCK STOP # Get the mapping from parameter names to ids into a local hash *************** *** 947,957 **** $word = $self->db_()->quote($word); ! my $result = $self->db_()->selectrow_arrayref( ! "select words.id from words where words.word = $word limit 1;"); if ( !defined( $result ) ) { $self->db_()->do( "insert into words ( word ) values ( $word );" ); ! $result = $self->db_()->selectrow_arrayref( ! "select words.id from words where words.word = $word limit 1;"); } --- 949,959 ---- $word = $self->db_()->quote($word); ! my $result = $self->db_()->selectrow_arrayref( # PROFILE BLOCK START ! "select words.id from words where words.word = $word limit 1;" ); # PROFILE BLOCK STOP if ( !defined( $result ) ) { $self->db_()->do( "insert into words ( word ) values ( $word );" ); ! $result = $self->db_()->selectrow_arrayref( # PROFILE BLOCK START ! "select words.id from words where words.word = $word limit 1;" ); # PROFILE BLOCK STOP } *************** *** 1238,1243 **** my $value = $self->configuration_()->{deprecated_parameters__}{$parameter}; ! if ( defined($module) && defined($config) && defined($value) && ! defined($self->user_module_config_( 1, $module, $config )) ) { # Upgrade parameters to admin's --- 1240,1245 ---- my $value = $self->configuration_()->{deprecated_parameters__}{$parameter}; ! if ( defined($module) && defined($config) && defined($value) && # PROFILE BLOCK START ! defined($self->user_module_config_( 1, $module, $config )) ) { # PROFILE BLOCK STOP # Upgrade parameters to admin's *************** *** 1568,1577 **** $self->log_( 1, "Generating random octet using $module" ); ! my $random = $self->random_()->generate_random_string( $module, 128, $self->global_config_( 'crypt_strength' ), $self->global_config_( 'crypt_device' ) ! ); my $now = time; return sha256_hex( "$$" . "$random$now" ); --- 1570,1579 ---- $self->log_( 1, "Generating random octet using $module" ); ! my $random = $self->random_()->generate_random_string( # PROFILE BLOCK START $module, 128, $self->global_config_( 'crypt_strength' ), $self->global_config_( 'crypt_device' ) ! ); # PROFILE BLOCK STOP my $now = time; return sha256_hex( "$$" . "$random$now" ); *************** *** 1873,1877 **** # accounts. ! if ( ( $module ne 'pop3' ) && ( $module ne 'insert' ) ) { return $self->get_single_user_session_key(); } --- 1875,1879 ---- # accounts. ! if ( ( $module !~ /^pop3s?|insert$/ ) ) { return $self->get_single_user_session_key(); } *************** *** 1879,1883 **** my $user; ! if ( $module eq 'pop3' ) { my ( $server, $username ) = split( /:/, $token ); --- 1881,1885 ---- my $user; ! if ( $module =~ /^pop3s?$/ ) { my ( $server, $username ) = split( /:/, $token ); *************** *** 1902,1907 **** # figure out which user is being talked about ! my $result = $self->{db_get_user_from_account__}->execute( ! "$module:$token" ); if ( !defined( $result ) ) { $self->log_( 1, "Unknown account $module:$token" ); --- 1904,1909 ---- # figure out which user is being talked about ! my $result = $self->{db_get_user_from_account__}->execute( # PROFILE BLOCK START ! "$module:$token" ); # PROFILE BLOCK STOP if ( !defined( $result ) ) { $self->log_( 1, "Unknown account $module:$token" ); *************** *** 2847,2850 **** --- 2849,2860 ---- print $client $msg_head_before; print $client $msg_head_after; + + # Workaround for Win32 compatibility + + while ( length( $msg_body ) > 16383 ) { + my $msg_body_tmp = substr( $msg_body, 0, 16383 ); + print $client $msg_body_tmp; + $msg_body = substr( $msg_body, 16383 ); + } print $client $msg_body; } *************** *** 2892,2897 **** # append any data we got to the actual temp file ! if ( ( (-s "$msg_file.flush") > 0 ) && ! ( open FLUSH, "<$msg_file.flush" ) ) { binmode FLUSH; if ( open TEMP, ">>$msg_file" ) { --- 2902,2907 ---- # append any data we got to the actual temp file ! if ( ( (-s "$msg_file.flush") > 0 ) && # PROFILE BLOCK START ! ( open FLUSH, "<$msg_file.flush" ) ) { # PROFILE BLOCK STOP binmode FLUSH; if ( open TEMP, ">>$msg_file" ) { *************** *** 2962,2973 **** while ( my ( $slot, $newbucket ) = each %messages ) { $self->log_(2, "Message $slot will be reclassified to $newbucket" ); ! push @{$work{$newbucket}}, ! $self->history_()->get_slot_file( $slot ); my @fields = $self->history_()->get_slot_fields( $slot, $session ); my $bucket = $fields[8]; ! $self->classifier_()->reclassified( ! $session, $bucket, $newbucket, 0 ); ! $self->history_()->change_slot_classification( ! $slot, $newbucket, $session, 0); } --- 2972,2983 ---- while ( my ( $slot, $newbucket ) = each %messages ) { $self->log_(2, "Message $slot will be reclassified to $newbucket" ); ! push @{$work{$newbucket}}, # PROFILE BLOCK START ! $self->history_()->get_slot_file( $slot ); # PROFILE BLOCK STOP my @fields = $self->history_()->get_slot_fields( $slot, $session ); my $bucket = $fields[8]; ! $self->classifier_()->reclassified( # PROFILE BLOCK START ! $session, $bucket, $newbucket, 0 ); # PROFILE BLOCK STOP ! $self->history_()->change_slot_classification( # PROFILE BLOCK START ! $slot, $newbucket, $session, 0); # PROFILE BLOCK STOP } *************** *** 3510,3516 **** # If there is a non-default value for this parameter then return it. ! $self->{db_get_bucket_parameter__}->execute( $self->{db_bucketid__}{$userid}{$bucket}{id}, ! $self->{db_parameterid__}{$parameter} ); my $result = $self->{db_get_bucket_parameter__}->fetchrow_arrayref; --- 3520,3526 ---- # If there is a non-default value for this parameter then return it. ! $self->{db_get_bucket_parameter__}->execute( # PROFILE BLOCK START $self->{db_bucketid__}{$userid}{$bucket}{id}, ! $self->{db_parameterid__}{$parameter} ); # PROFILE BLOCK STOP my $result = $self->{db_get_bucket_parameter__}->fetchrow_arrayref; *************** *** 3575,3580 **** my $quoted_user = $self->db_()->quote( $new_user ); my $quoted_hash = $self->db_()->quote( $password_hash ); ! $self->db_()->do( "insert into users ( name, password ) ! values ( $quoted_user, $quoted_hash );" ); my $id = $self->get_user_id( $session, $new_user ); --- 3585,3591 ---- my $quoted_user = $self->db_()->quote( $new_user ); my $quoted_hash = $self->db_()->quote( $password_hash ); ! $self->db_()->do( # PROFILE BLOCK START ! "insert into users ( name, password ) ! values ( $quoted_user, $quoted_hash );" ); # PROFILE BLOCK STOP my $id = $self->get_user_id( $session, $new_user ); *************** *** 3600,3605 **** # Clone user's parameters ! my $h = $self->db_()->prepare( ! "select utid, val from user_params where userid = ?;" ); $h->execute( $clid ); --- 3611,3616 ---- # Clone user's parameters ! my $h = $self->db_()->prepare( # PROFILE BLOCK START ! "select utid, val from user_params where userid = ?;" ); # PROFILE BLOCK STOP $h->execute( $clid ); *************** *** 3610,3616 **** $h->finish; ! $h = $self->db_()->prepare( "insert into user_params ( userid, utid, val ) ! values ( ?, ?, ? );" ); foreach my $utid (keys %add) { $h->execute( $id, $utid, $add{$utid} ); --- 3621,3627 ---- $h->finish; ! $h = $self->db_()->prepare( # PROFILE BLOCK START "insert into user_params ( userid, utid, val ) ! values ( ?, ?, ? );" ); # PROFILE BLOCK STOP foreach my $utid (keys %add) { $h->execute( $id, $utid, $add{$utid} ); *************** *** 3620,3625 **** # Clone buckets (optional) ! $h = $self->db_()->prepare( ! "select name, pseudo from buckets where userid = ?;" ); $h->execute( $clid ); my %buckets; --- 3631,3636 ---- # Clone buckets (optional) ! $h = $self->db_()->prepare( # PROFILE BLOCK START ! "select name, pseudo from buckets where userid = ?;" ); # PROFILE BLOCK STOP $h->execute( $clid ); my %buckets; *************** *** 3629,3635 **** $h->finish; ! $h = $self->db_()->prepare( "insert into buckets ( userid, name, pseudo ) ! values ( ?, ?, ? );" ); foreach my $name (keys %buckets) { $h->execute( $id, $name, $buckets{$name} ); --- 3640,3646 ---- $h->finish; ! $h = $self->db_()->prepare( # PROFILE BLOCK START "insert into buckets ( userid, name, pseudo ) ! values ( ?, ?, ? );" ); # PROFILE BLOCK STOP foreach my $name (keys %buckets) { $h->execute( $id, $name, $buckets{$name} ); *************** *** 3639,3645 **** # Fetch new bucket ids and cloned bucket ids ! $h = $self->db_()->prepare( "select bucket1.id, bucket2.id from buckets as bucket1, buckets as bucket2 ! where bucket1.userid = $id and bucket1.name = bucket2.name and bucket2.userid = ?;" ); $h->execute( $clid ); --- 3650,3658 ---- # Fetch new bucket ids and cloned bucket ids ! $h = $self->db_()->prepare( # PROFILE BLOCK START "select bucket1.id, bucket2.id from buckets as bucket1, buckets as bucket2 ! where bucket1.userid = $id and ! bucket1.name = bucket2.name and ! bucket2.userid = ?;" ); # PROFILE BLOCK STOP $h->execute( $clid ); *************** *** 3652,3658 **** # Clone bucket parameters ! $h = $self->db_()->prepare( "select bucketid, btid, val from buckets, bucket_params ! where userid = ? and buckets.id = bucket_params.bucketid;" ); $h->execute( $clid ); --- 3665,3672 ---- # Clone bucket parameters ! $h = $self->db_()->prepare( # PROFILE BLOCK START "select bucketid, btid, val from buckets, bucket_params ! where userid = ? and ! buckets.id = bucket_params.bucketid;" ); # PROFILE BLOCK STOP $h->execute( $clid ); *************** *** 3663,3669 **** $h->finish; ! $h = $self->db_()->prepare( "insert into bucket_params ( bucketid, btid, val) ! values ( ?, ?, ? );" ); foreach my $bucketid ( keys %bucket_params ) { foreach my $btid ( keys %{$bucket_params{$bucketid}} ) { --- 3677,3683 ---- $h->finish; ! $h = $self->db_()->prepare( # PROFILE BLOCK START "insert into bucket_params ( bucketid, btid, val) ! values ( ?, ?, ? );" ); # PROFILE BLOCK STOP foreach my $bucketid ( keys %bucket_params ) { foreach my $btid ( keys %{$bucket_params{$bucketid}} ) { *************** *** 3677,3683 **** if ( $copy_magnets ) { ! $h = $self->db_()->prepare( "select magnets.bucketid, magnets.mtid, magnets.val from magnets, buckets ! where magnets.bucketid = buckets.id and buckets.userid = ?;" ); $h->execute( $clid ); --- 3691,3698 ---- if ( $copy_magnets ) { ! $h = $self->db_()->prepare( # PROFILE BLOCK START "select magnets.bucketid, magnets.mtid, magnets.val from magnets, buckets ! where magnets.bucketid = buckets.id and ! buckets.userid = ?;" ); # PROFILE BLOCK STOP $h->execute( $clid ); *************** *** 3688,3694 **** $h->finish; ! $h = $self->db_()->prepare( "insert into magnets ( bucketid, mtid, val ) ! values ( ?, ?, ? );" ); foreach my $bucketid ( keys %magnets ) { foreach my $mtid ( keys %{$magnets{$bucketid}} ) { --- 3703,3709 ---- $h->finish; ! $h = $self->db_()->prepare( # PROFILE BLOCK START "insert into magnets ( bucketid, mtid, val ) ! values ( ?, ?, ? );" ); # PROFILE BLOCK STOP foreach my $bucketid ( keys %magnets ) { foreach my $mtid ( keys %{$magnets{$bucketid}} ) { *************** *** 3703,3709 **** if ( $copy_corpus ) { ! $h = $self->db_()->prepare( "select matrix.bucketid, matrix.wordid, matrix.times from matrix, buckets ! where matrix.bucketid = buckets.id and buckets.userid = ?;" ); $h->execute( $clid ); --- 3718,3725 ---- if ( $copy_corpus ) { ! $h = $self->db_()->prepare( # PROFILE BLOCK START "select matrix.bucketid, matrix.wordid, matrix.times from matrix, buckets ! where matrix.bucketid = buckets.id and ! buckets.userid = ?;" ); # PROFILE BLOCK STOP $h->execute( $clid ); *************** *** 3714,3720 **** $h->finish; ! $h = $self->db_()->prepare( "insert into matrix ( bucketid, wordid, times ) ! values ( ?, ?, ? );" ); foreach my $bucketid ( keys %matrix ) { foreach my $wordid ( keys %{$matrix{$bucketid}} ) { --- 3730,3736 ---- $h->finish; ! $h = $self->db_()->prepare( # PROFILE BLOCK START "insert into matrix ( bucketid, wordid, times ) ! values ( ?, ?, ? );" ); # PROFILE BLOCK STOP foreach my $bucketid ( keys %matrix ) { foreach my $wordid ( keys %{$matrix{$bucketid}} ) { *************** *** 3736,3746 **** # default settings ! $self->db_()->do( "insert into buckets ( name, pseudo, userid ) ! values ( 'unclassified', 1, $id );" ); # Copy the global language setting to the user's language setting ! $self->user_module_config_( $id, 'html', 'language', ! $self->global_config_( 'language' ) ); } --- 3752,3763 ---- # default settings ! $self->db_()->do( # PROFILE BLOCK START ! "insert into buckets ( name, pseudo, userid ) ! values ( 'unclassified', 1, $id );" ); # PROFILE BLOCK STOP # Copy the global language setting to the user's language setting ! $self->user_module_config_( $id, 'html', 'language', # PROFILE BLOCK START ! $self->global_config_( 'language' ) ); # PROFILE BLOCK STOP } *************** *** 4201,4206 **** if ( exists( $self->{cached_user_parameters__}{$user}{$parameter} ) ) { $self->{cache_user_parameters__}{$user}{$parameter}{lastused} = time; ! return ($self->{cached_user_parameters__}{$user}{$parameter}{value}, ! $self->{cached_user_parameters__}{$user}{$parameter}{default}); } --- 4218,4223 ---- if ( exists( $self->{cached_user_parameters__}{$user}{$parameter} ) ) { $self->{cache_user_parameters__}{$user}{$parameter}{lastused} = time; ! return ($self->{cached_user_parameters__}{$user}{$parameter}{value}, # PROFILE BLOCK START ! $self->{cached_user_parameters__}{$user}{$parameter}{default}); # PROFILE BLOCK STOP } *************** *** 4215,4220 **** my $default = 0; if ( !defined( $result ) ) { ! $self->{db_get_user_parameter_default__}->execute( # PROFILE BLOCK START ! $self->{db_user_parameterid__}{$parameter} ); # PROFILE BLOCK STOP $result = $self->{db_get_user_parameter_default__}->fetchrow_arrayref; $default = 1; --- 4232,4237 ---- my $default = 0; if ( !defined( $result ) ) { ! $self->{db_get_user_parameter_default__}->execute( # PROFILE BLOCK START ! $self->{db_user_parameterid__}{$parameter} ); # PROFILE BLOCK STOP $result = $self->{db_get_user_parameter_default__}->fetchrow_arrayref; $default = 1; *************** *** 4222,4231 **** if ( defined( $result ) ) { ! $self->{cached_user_parameters__}{$user}{$parameter}{value} = ! $result->[0]; ! $self->{cached_user_parameters__}{$user}{$parameter}{default} = ! $default; ! $self->{cached_user_parameters__}{$user}{$parameter}{lastused} = ! time; return ( $result->[0], $default ); } else { --- 4239,4248 ---- if ( defined( $result ) ) { ! $self->{cached_user_parameters__}{$user}{$parameter}{value} = # PROFILE BLOCK START ! $result->[0]; # PROFILE BLOCK STOP ! $self->{cached_user_parameters__}{$user}{$parameter}{default} = # PROFILE BLOCK START ! $default; # PROFILE BLOCK STOP ! $self->{cached_user_parameters__}{$user}{$parameter}{lastused} = # PROFILE BLOCK START ! time; # PROFILE BLOCK STOP return ( $result->[0], $default ); } else { *************** *** 4317,4323 **** # Prevent user 1 from stopping being an admin ! if ( ( $user == 1 ) && ( $parameter eq 'GLOBAL_can_admin' ) && ! ( $value != 1 ) ) { return 0; } --- 4334,4340 ---- # Prevent user 1 from stopping being an admin ! if ( ( $user == 1 ) && # PROFILE BLOCK START ( $parameter eq 'GLOBAL_can_admin' ) && ! ( $value != 1 ) ) { # PROFILE BLOCK STOP return 0; } *************** *** 4407,4412 **** $self->{parser__}->{bayes__} = bless $self; ! my $result = $self->{parser__}->parse_file( $file, ! $self->global_config_( 'message_cutoff' ) ); $self->{parser__}->{color__} = ''; --- 4424,4430 ---- $self->{parser__}->{bayes__} = bless $self; ! my $result = $self->{parser__}->parse_file( # PROFILE BLOCK START ! $file, ! $self->global_config_( 'message_cutoff' ) ); # PROFILE BLOCK STOP $self->{parser__}->{color__} = ''; *************** *** 4439,4444 **** $bucket = $self->db_()->quote( $bucket ); ! $self->db_()->do( # PROFILE BLOCK START ! "insert into buckets ( name, pseudo, userid ) values ( $bucket, 0, $userid );" ); # PROFILE BLOCK STOP $self->db_update_cache__( $session ); --- 4457,4463 ---- $bucket = $self->db_()->quote( $bucket ); ! $self->db_()->do( # PROFILE BLOCK START ! "insert into buckets ( name, pseudo, userid ) ! values ( $bucket, 0, $userid );" ); # PROFILE BLOCK STOP $self->db_update_cache__( $session ); *************** *** 4659,4663 **** my $bucketid = $self->{db_bucketid__}{$userid}{$bucket}{id}; ! my $h = $self->db_()->prepare( "select magnet_types.mtype from magnet_types, magnets, buckets where magnet_types.id = magnets.mtid and --- 4678,4682 ---- my $bucketid = $self->{db_bucketid__}{$userid}{$bucket}{id}; ! my $h = $self->db_()->prepare( # PROFILE BLOCK START "select magnet_types.mtype from magnet_types, magnets, buckets where magnet_types.id = magnets.mtid and *************** *** 4665,4669 **** buckets.id = ? group by magnet_types.mtype ! order by magnet_types.mtype;" ); $h->execute( $bucketid ); --- 4684,4688 ---- buckets.id = ? group by magnet_types.mtype ! order by magnet_types.mtype;" ); # PROFILE BLOCK STOP $h->execute( $bucketid ); *************** *** 4742,4751 **** my $bucketid = $self->{db_bucketid__}{$userid}{$bucket}{id}; ! my $h = $self->db_()->prepare( "select magnets.val from magnets, magnet_types where magnets.bucketid = $bucketid and magnets.id != 0 and magnet_types.id = magnets.mtid and ! magnet_types.mtype = ? order by magnets.val;" ); $h->execute( $type ); --- 4761,4770 ---- my $bucketid = $self->{db_bucketid__}{$userid}{$bucket}{id}; ! my $h = $self->db_()->prepare( # PROFILE BLOCK START "select magnets.val from magnets, magnet_types where magnets.bucketid = $bucketid and magnets.id != 0 and magnet_types.id = magnets.mtid and ! magnet_types.mtype = ? order by magnets.val;" ); # PROFILE BLOCK STOP $h->execute( $type ); *************** *** 4778,4784 **** my $bucketid = $self->{db_bucketid__}{$userid}{$bucket}{id}; ! my $result = $self->db_()->selectrow_arrayref( "select magnet_types.id from magnet_types ! where magnet_types.mtype = '$type';" ); my $mtid = $result->[0]; --- 4797,4803 ---- my $bucketid = $self->{db_bucketid__}{$userid}{$bucket}{id}; ! my $result = $self->db_()->selectrow_arrayref( # PROFILE BLOCK START "select magnet_types.id from magnet_types ! where magnet_types.mtype = '$type';" ); # PROFILE BLOCK STOP my $mtid = $result->[0]; *************** *** 4786,4791 **** $text = $self->db_()->quote( $text ); ! $self->db_()->do( "insert into magnets ( bucketid, mtid, val ) ! values ( $bucketid, $mtid, $text );" ); } --- 4805,4811 ---- $text = $self->db_()->quote( $text ); ! $self->db_()->do( # PROFILE BLOCK START ! "insert into magnets ( bucketid, mtid, val ) ! values ( $bucketid, $mtid, $text );" ); # PROFILE BLOCK STOP } *************** *** 4808,4814 **** my %result; ! my $h = $self->db_()->prepare( "select magnet_types.mtype, magnet_types.header ! from magnet_types order by mtype;" ); $h->execute; --- 4828,4834 ---- my %result; ! my $h = $self->db_()->prepare( # PROFILE BLOCK START "select magnet_types.mtype, magnet_types.header ! from magnet_types order by mtype;" ); # PROFILE BLOCK STOP $h->execute; *************** *** 4841,4855 **** my $bucketid = $self->{db_bucketid__}{$userid}{$bucket}{id}; ! my $result = $self->db_()->selectrow_arrayref( "select magnet_types.id from magnet_types ! where magnet_types.mtype = '$type';" ); my $mtid = $result->[0]; $text = $self->db_()->quote( $text ); ! $self->db_()->do( "delete from magnets ! where magnets.bucketid = $bucketid and ! magnets.mtid = $mtid and ! magnets.val = $text;" ); } --- 4861,4876 ---- my $bucketid = $self->{db_bucketid__}{$userid}{$bucket}{id}; ! my $result = $self->db_()->selectrow_arrayref( # PROFILE BLOCK START "select magnet_types.id from magnet_types ! where magnet_types.mtype = '$type';" ); # PROFILE BLOCK STOP my $mtid = $result->[0]; $text = $self->db_()->quote( $text ); ! $self->db_()->do( # PROFILE BLOCK START ! "delete from magnets ! where magnets.bucketid = $bucketid and ! magnets.mtid = $mtid and ! magnets.val = $text;" ); # PROFILE BLOCK STOP } *************** *** 4871,4877 **** return undef if ( !defined( $userid ) ); ! my $m = $self->db_()->prepare( "select magnet_types.header, magnets.val from magnet_types, magnets ! where magnet_types.id = magnets.mtid and magnets.id = ?;" ); $m->execute( $magnetid ); --- 4892,4898 ---- return undef if ( !defined( $userid ) ); ! my $m = $self->db_()->prepare( # PROFILE BLOCK START "select magnet_types.header, magnets.val from magnet_types, magnets ! where magnet_types.id = magnets.mtid and magnets.id = ?;" ); # PROFILE BLOCK STOP $m->execute( $magnetid ); *************** *** 4924,4932 **** return undef if ( !defined( $userid ) ); ! my $result = $self->db_()->selectrow_arrayref( "select count(*) from magnets, buckets where buckets.userid = $userid and magnets.id != 0 and ! magnets.bucketid = buckets.id;" ); if ( defined( $result ) ) { --- 4945,4953 ---- return undef if ( !defined( $userid ) ); ! my $result = $self->db_()->selectrow_arrayref( # PROFILE BLOCK START "select count(*) from magnets, buckets where buckets.userid = $userid and magnets.id != 0 and ! magnets.bucketid = buckets.id;" ); # PROFILE BLOCK STOP if ( defined( $result ) ) { *************** *** 4962,4966 **** # Pass language parameter to add_stopword() ! return $self->{parser__}->{mangle__}->add_stopword( $stopword, $self->global_config_( 'language' ) ); } --- 4983,4988 ---- # Pass language parameter to add_stopword() ! return $self->{parser__}->{mangle__}->add_stopword( # PROFILE BLOCK START ! $stopword, $self->global_config_( 'language' ) ); # PROFILE BLOCK STOP } *************** *** 4978,4982 **** # Pass language parameter to remove_stopword() ! return $self->{parser__}->{mangle__}->remove_stopword( $stopword, $self->global_config_( 'language' ) ); } --- 5000,5005 ---- # Pass language parameter to remove_stopword() ! return $self->{parser__}->{mangle__}->remove_stopword( # PROFILE BLOCK START ! $stopword, $self->global_config_( 'language' ) ); # PROFILE BLOCK STOP } Index: MailParse.pm =================================================================== RCS file: /cvsroot/popfile/engine/Classifier/MailParse.pm,v retrieving revision 1.231 retrieving revision 1.232 diff -C2 -d -r1.231 -r1.232 *** MailParse.pm 5 Apr 2008 16:50:45 -0000 1.231 --- MailParse.pm 25 Apr 2008 16:26:04 -0000 1.232 *************** *** 44,50 **** # These are used for Japanese support ! my %encoding_candidates = ( 'Nihongo' => [ 'cp932', 'euc-jp', '7bit-jis' ] ! ); my $ascii = '[\x00-\x7F]'; # ASCII chars --- 44,50 ---- # These are used for Japanese support ! my %encoding_candidates = ( # PROFILE BLOCK START 'Nihongo' => [ 'cp932', 'euc-jp', '7bit-jis' ] ! ); # PROFILE BLOCK STOP my $ascii = '[\x00-\x7F]'; # ASCII chars *************** *** 79,83 **** my $euc_jp_kanji = '[\xB0-\xF4][\xA1-\xFE](?:[\xB0-\xF4][\xA1-\xFE]|\xA1\xB9)?'; # One or two Kanji characters ! my $euc_jp_word = '(' . $euc_jp_alphanum . '|' . $euc_jp_hiragana . '|' . --- 79,83 ---- my $euc_jp_kanji = '[\xB0-\xF4][\xA1-\xFE](?:[\xB0-\xF4][\xA1-\xFE]|\xA1\xB9)?'; # One or two Kanji characters ! my $euc_jp_word = '(' . # PROFILE BLOCK START $euc_jp_alphanum . '|' . $euc_jp_hiragana . '|' . *************** *** 87,91 **** $euc_jp_symbol . '|' . $ascii . '+|' . ! $three_bytes_euc_jp . ')'; # HTML entity mapping to character codes, this maps things like & --- 87,91 ---- $euc_jp_symbol . '|' . $ascii . '+|' . ! $three_bytes_euc_jp . ')'; # PROFILE BLOCK STOP # HTML entity mapping to character codes, this maps things like & *************** *** 284,293 **** my @buckets = $self->{bayes__}->get_buckets( $self->{color__} ); ! return $self->{bayes__}->get_bucket_color( $self->{color__}, $self->{bayes__}->get_top_bucket__( $self->{color_userid__}, $id, $self->{color_matrix__}, ! \@buckets ) ); } else { return 'black'; --- 284,293 ---- my @buckets = $self->{bayes__}->get_buckets( $self->{color__} ); ! return $self->{bayes__}->get_bucket_color( $self->{color__}, # PROFILE BLOCK START $self->{bayes__}->get_top_bucket__( $self->{color_userid__}, $id, $self->{color_matrix__}, ! \@buckets ) ); # PROFILE BLOCK STOP } else { return 'black'; *************** *** 351,356 **** if ( $self->{htmlfontcolor__} ne '' && $self->{htmlbackcolor__} ne '' ) { ! $self->{htmlcolordistance__} = $self->compute_rgb_distance( ! $self->{htmlfontcolor__}, $self->{htmlbackcolor__} ); } } --- 351,356 ---- if ( $self->{htmlfontcolor__} ne '' && $self->{htmlbackcolor__} ne '' ) { ! $self->{htmlcolordistance__} = $self->compute_rgb_distance( # PROFILE BLOCK START ! $self->{htmlfontcolor__}, $self->{htmlbackcolor__} ); # PROFILE BLOCK STOP } } *************** *** 613,617 **** if ( $self->{lang__} eq 'Korean' || $self->{lang__} eq 'Nihongo' ) { ! $to = ' '; } else { $to = chr($to); --- 613,617 ---- if ( $self->{lang__} eq 'Korean' || $self->{lang__} eq 'Nihongo' ) { ! $to = ' '; } else { $to = chr($to); *************** *** 627,633 **** # Don't decode odd (nonprintable) characters or < >'s. ! if ( ( ( $2 < 255 ) && ( $2 > 63 ) ) || ( $2 == 61 ) || ! ( ( $2 < 60 ) && ( $2 > 31 ) ) ) { my $from = $1; my $to = chr($2); --- 627,633 ---- # Don't decode odd (nonprintable) characters or < >'s. ! if ( ( ( $2 < 255 ) && ( $2 > 63 ) ) || # PROFILE BLOCK START ( $2 == 61 ) || ! ( ( $2 < 60 ) && ( $2 > 31 ) ) ) { # PROFILE BLOCK STOP my $from = $1; my $to = chr($2); *************** *** 637,642 **** $self->{ut__} =~ s/$from/$to/g; print "$from -> $to\n" if $self->{debug__}; ! $self->update_pseudoword( 'html', ! 'numericentity', $encoded, $from ); } } --- 637,642 ---- $self->{ut__} =~ s/$from/$to/g; print "$from -> $to\n" if $self->{debug__}; ! $self->update_pseudoword( 'html', # PROFILE BLOCK START ! 'numericentity', $encoded, $from ); # PROFILE BLOCK STOP } } *************** *** 908,913 **** if ($value =~ /^mailto:/i) { if ( $tag =~ /^a$/ && $value =~ /^mailto:([[:alpha:]0-9\-_\.]+?@([[:alpha:]0-9\-_\.]+?))([>\&\?\:\/\" \t]|$)/i ) { ! update_word( $self, $1, $encoded, 'mailto:', ($3?'[\\\>\&\?\:\/]':$end_quote), '' ); ! add_url( $self, $2, $encoded, '@', ($3?'[\\\&\?\:\/]':$end_quote), '' ); } } else { --- 908,913 ---- if ($value =~ /^mailto:/i) { if ( $tag =~ /^a$/ && $value =~ /^mailto:([[:alpha:]0-9\-_\.]+?@([[:alpha:]0-9\-_\.]+?))([>\&\?\:\/\" \t]|$)/i ) { ! update_word( $self, $1, $encoded, 'mailto:', ($3?'[\\\>\&\?\:\/]':$end_quote), '' ); ! add_url( $self, $2, $encoded, '@', ($3?'[\\\&\?\:\/]':$end_quote), '' ); } } else { *************** *** 926,930 **** add_line($self, $value, $encoded, ''); next; ! } # Tags with working background attributes --- 926,930 ---- add_line($self, $value, $encoded, ''); next; ! } # Tags with working background attributes *************** *** 1501,1506 **** $size_read += length($_); $self->parse_line( $_ ); ! if ( ( $max_size > 0 ) && ! ( $size_read > $max_size ) ) { last; } --- 1501,1506 ---- $size_read += length($_); $self->parse_line( $_ ); ! if ( ( $max_size > 0 ) && # PROFILE BLOCK START ! ( $size_read > $max_size ) ) { # PROFILE BLOCK STOP last; } *************** *** 1783,1788 **** # If we are in a mime document then spot the boundaries ! if ( ( $self->{mime__} ne '' ) && ( $line =~ ! /^\-\-($self->{mime__})(\-\-)?/ ) ) { # approach each mime part with fresh eyes --- 1783,1788 ---- # If we are in a mime document then spot the boundaries ! if ( ( $self->{mime__} ne '' ) && # PROFILE BLOCK START ! ( $line =~ /^\-\-($self->{mime__})(\-\-)?/ ) ) { # PROFILE BLOCK STOP # approach each mime part with fresh eyes *************** *** 1948,1953 **** ($pre, $atom, $charset, $encoding, $value) = ($1, $2, $3, $4, $5); ! $output .= $pre unless ($last_is_encoded && defined($atom) # Per RFC 2047 section 6.2 ! && $pre =~ /^[\t ]+$/); if (defined($atom)) { --- 1948,1953 ---- ($pre, $atom, $charset, $encoding, $value) = ($1, $2, $3, $4, $5); ! $output .= $pre unless ($last_is_encoded && defined($atom) # PROFILE BLOCK START ! && $pre =~ /^[\t ]+$/); # PROFILE BLOCK STOP( Per RFC 2047 section 6.2 ) if (defined($atom)) { *************** *** 2044,2048 **** if ( $argument =~ /=\?([^\r\n\t ]{1,40})\?(Q|B)/i ) { ! update_word( $self, $1, 0, '', '', 'charset' ); } --- 2044,2048 ---- if ( $argument =~ /=\?([^\r\n\t ]{1,40})\?(Q|B)/i ) { ! update_word( $self, $1, 0, '', '', 'charset' ); } *************** *** 2720,2725 **** # Insert white spaces after words. ! $self->{nihongo_parser__}{obj_mecab} ! = MeCab::Tagger->new('-F %M\s -U %M\s -E \n'); } --- 2720,2725 ---- # Insert white spaces after words. ! $self->{nihongo_parser__}{obj_mecab} # PROFILE BLOCK START ! = MeCab::Tagger->new('-F %M\s -U %M\s -E \n'); # PROFILE BLOCK STOP } |
From: naoki i. <am...@us...> - 2008-04-25 16:27:16
|
Update of /cvsroot/popfile/engine/skins/default In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20326/skins/default Modified Files: administration-page.thtml nntp-security-local.thtml pop3-chain-panel.thtml pop3-security-panel.thtml smtp-chain-server.thtml smtp-security-local.thtml xmlrpc-local.thtml Log Message: Change Log 1. UI and POP3 proxy are now able to be connected via SSL 2. New Proxy module 'Proxy::POP3S' (POP3 over SSL) 3. New global options: GLOBAL_cert_file, GLOBAL_key_file, GLOBAL_ca_file 4. New html options: html_https_enabled, html_https_port 5. Secure cookies are used when accessed to the HTTPS server Proxy/POP3S.pm Proxy/POP3.pm Proxy/Proxy.pm UI/HTML.pm UI/HTTP.pm POPFile/Configuration.pm Classifier/Bayes.pm skins/default/pop3s-configuration-panel.thtml skins/default/pop3s-security-panel.thtml tests/Configuration.tst The new Proxy::POP3S module supports connections via SSL. It has following options: pop3s_enabled Enable(=1)/Disable(=0;default) the module pop3s_force_fork Enable(=1)/Disable(=0) forking pop3s_local Allow(=1)/Disallow(=0) connections from remote pop3s_port POP3S proxy port(default:995) pop3s_socks_port SOCKS proxy port pop3s_socks_server SOCKS proxy server pop3s_welcome_string POP3S proxy welcome string The other POP3 options (e.g. pop3_separator) are same as the Proxy::POP3 module. Here's the new options of the UI::HTML module: html_https_enabled Enable(=1)/Disable(=0;default) the HTTPS server html_https_port HTTPS server port(default:8443) The new global options: GLOBAL_cert_file Location of the certification file of the server GLOBAL_key_file Location of the key file of the server GLOBAL_ca_file Location of the CA file NOTE: I've implemented POP3S and the HTTPS in the different way. I've made a new module Proxy::POP3S for POP3S, but I don't make the module for HTTPS. This is because I think making the new module for HTTPS ( UI:HTTPS ? ) is very hard. BUG: Concurrent POP3S connections cause an error in some environment: SSL3 alert write:fatal:bad record mac 7664:error:1408F119:SSL routines:SSL3_GET_RECORD:decryption failed or bad record mac:s3_pkt.c:424: 6. AUTH PLAIN support Proxy/POP3.pm 7. Supress the verbose status messages on the administration tab 8. Add some status messages (administration tab) UI/HTML.pm UI/XMLRPC.pm Proxy/Proxy.pm Proxy/POP3.pm Proxy/NNTP.pm Proxy/SMTP.pm languages/English.msg languages/Nihongo.msg tests/TestPOP3.tst tests/TestHTML.script 9. The message files are no longer cached by the web browser UI/HTTP.pm 10. if html_allow_javascript == 0, don't disable the radio buttons skins/default/administration-page.thtml skins/default/pop3-security-panel.thtml skins/default/nntp-security-local.thtml skins/default/smtp-security-local.thtml skins/default/xmlrpc-local.thtml 11. Minor updates of the skins skins/smtp-chain-server.thtml skins/smtp-chain-server-port.thtml (merged to the above file) skins/pop3-chain-panel.thtml 12. Source code cleanup UI/HTML.pm UI/HTTP.pm UI/XMLRPC.pm Proxy/POP3.pm Proxy/Proxy.pm Proxy/NNTP.pm Proxy/SMTP.pm Classifier/Bayes.pm Classifier/MailParse.pm POPFile/Configuration.pm POPFile/Database.pm POPFile/History.pm POPFile/Loader.pm POPFile/Logger.pm POPFile/Module.pm POPFile/MQ.pm POPFile/Mutex.pm Add some 'PROFILE BLOCK START' and 'PROFILE BLOCK STOP's. These are used by Devel::TestCoverage to get the correct coverage. 13. Add some tests tests/TestBayes.tst Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS * TestHistory PASS TestHTML PASS * TestHTTP PASS TestIMAP PASS TestInsertScript PASS * TestLogger PASS TestMailParse PASS TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 PASS TestProxy PASS TestWordMangle PASS TestXMLRPC PASS * : TODO : needs to add tests for multi user support Index: smtp-security-local.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/smtp-security-local.thtml,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** smtp-security-local.thtml 3 Mar 2006 09:55:49 -0000 1.7 --- smtp-security-local.thtml 25 Apr 2008 16:26:37 -0000 1.8 *************** *** 1,3 **** ! <input type="checkbox" name="serveropt_smtp" id="securityAcceptSMTP" <TMPL_IF NAME="smtp_local_on"><TMPL_ELSE>checked</TMPL_IF> <TMPL_IF NAME="Security_If_Local">disabled</TMPL_IF> /> <label class="administrationLabel" for="securityAcceptSMTP"> <TMPL_VAR NAME="Localize_Security_SMTP"> --- 1,3 ---- ! <input type="checkbox" name="serveropt_smtp" id="securityAcceptSMTP" <TMPL_IF NAME="smtp_local_on"><TMPL_ELSE>checked</TMPL_IF> <TMPL_IF NAME="If_Javascript_OK"><TMPL_IF NAME="Security_If_Local">disabled</TMPL_IF></TMPL_IF> /> <label class="administrationLabel" for="securityAcceptSMTP"> <TMPL_VAR NAME="Localize_Security_SMTP"> Index: pop3-security-panel.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/pop3-security-panel.thtml,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** pop3-security-panel.thtml 3 Mar 2006 09:55:49 -0000 1.11 --- pop3-security-panel.thtml 25 Apr 2008 16:26:37 -0000 1.12 *************** *** 1,3 **** ! <input type="checkbox" name="serveropt_pop3" id="securityAcceptPOP3" <TMPL_IF NAME="POP3_Security_Local"><TMPL_ELSE>checked</TMPL_IF> <TMPL_IF NAME="Security_If_Local">disabled</TMPL_IF> /> <label class="administrationLabel" for="securityAcceptPOP3"> <TMPL_VAR NAME="Localize_Security_POP3"> --- 1,3 ---- ! <input type="checkbox" name="serveropt_pop3" id="securityAcceptPOP3" <TMPL_IF NAME="POP3_Security_Local"><TMPL_ELSE>checked</TMPL_IF> <TMPL_IF NAME="If_Javascript_OK"><TMPL_IF NAME="Security_If_Local">disabled</TMPL_IF></TMPL_IF> /> <label class="administrationLabel" for="securityAcceptPOP3"> <TMPL_VAR NAME="Localize_Security_POP3"> Index: xmlrpc-local.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/xmlrpc-local.thtml,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** xmlrpc-local.thtml 3 Mar 2006 09:55:49 -0000 1.7 --- xmlrpc-local.thtml 25 Apr 2008 16:26:37 -0000 1.8 *************** *** 1,3 **** ! <input type="checkbox" name="serveropt_xmlrpc" id="securityAcceptXMLRPC" <TMPL_IF NAME="XMLRPC_local_on"><TMPL_ELSE>checked</TMPL_IF> <TMPL_IF NAME="Security_If_Local">disabled</TMPL_IF> /> <label class="administrationLabel" for="securityAcceptXMLRPC"> <TMPL_VAR NAME="Localize_Security_XMLRPC"> --- 1,3 ---- ! <input type="checkbox" name="serveropt_xmlrpc" id="securityAcceptXMLRPC" <TMPL_IF NAME="XMLRPC_local_on"><TMPL_ELSE>checked</TMPL_IF> <TMPL_IF NAME="If_Javascript_OK"><TMPL_IF NAME="Security_If_Local">disabled</TMPL_IF></TMPL_IF> /> <label class="administrationLabel" for="securityAcceptXMLRPC"> <TMPL_VAR NAME="Localize_Security_XMLRPC"> Index: pop3-chain-panel.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/pop3-chain-panel.thtml,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** pop3-chain-panel.thtml 17 Apr 2008 15:13:05 -0000 1.11 --- pop3-chain-panel.thtml 25 Apr 2008 16:26:37 -0000 1.12 *************** *** 21,23 **** <br /><br /> <input type="submit" class="submit" name="update_server" value="<TMPL_VAR NAME="Localize_Apply">" /> ! </form> \ No newline at end of file --- 21,24 ---- <br /><br /> <input type="submit" class="submit" name="update_server" value="<TMPL_VAR NAME="Localize_Apply">" /> ! </form> ! <br /> Index: nntp-security-local.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/nntp-security-local.thtml,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** nntp-security-local.thtml 3 Mar 2006 09:55:49 -0000 1.8 --- nntp-security-local.thtml 25 Apr 2008 16:26:37 -0000 1.9 *************** *** 1,3 **** ! <input type="checkbox" name="serveropt_nntp" id="securityAcceptNNTP" <TMPL_IF NAME="nntp_if_local"><TMPL_ELSE>checked</TMPL_IF> <TMPL_IF NAME="Security_If_Local">disabled</TMPL_IF> /> <label class="administrationLabel" for="securityAcceptNNTP"> <TMPL_VAR NAME="Localize_Security_NNTP"> --- 1,3 ---- ! <input type="checkbox" name="serveropt_nntp" id="securityAcceptNNTP" <TMPL_IF NAME="nntp_if_local"><TMPL_ELSE>checked</TMPL_IF> <TMPL_IF NAME="If_Javascript_OK"><TMPL_IF NAME="Security_If_Local">disabled</TMPL_IF></TMPL_IF> /> <label class="administrationLabel" for="securityAcceptNNTP"> <TMPL_VAR NAME="Localize_Security_NNTP"> Index: smtp-chain-server.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/smtp-chain-server.thtml,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** smtp-chain-server.thtml 22 May 2005 11:13:50 -0000 1.5 --- smtp-chain-server.thtml 25 Apr 2008 16:26:37 -0000 1.6 *************** *** 5,8 **** --- 5,17 ---- <br /> <input type="text" name="smtp_chain_server" id="securitySecureSMTPServer" value="<TMPL_VAR NAME="smtp_chain_server">" /> + <br /> + + <label class="securityLabel" for="securitySecureSMTPPort"> + <TMPL_VAR NAME="Localize_Security_SMTPPort">: + </label> + <br /> + <input type="text" name="smtp_chain_server_port" id="securitySecureSMTPPort" value="<TMPL_VAR NAME="smtp_chain_port">" /> + + <br /><br /> <input type="submit" class="submit" name="update_smtp_server" value="<TMPL_VAR NAME="Localize_Apply">" /> </form> Index: administration-page.thtml =================================================================== RCS file: /cvsroot/popfile/engine/skins/default/administration-page.thtml,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** administration-page.thtml 18 Apr 2008 12:41:49 -0000 1.17 --- administration-page.thtml 25 Apr 2008 16:26:37 -0000 1.18 *************** *** 4,7 **** --- 4,8 ---- <script type="text/javascript"> function serverMode(state) { + <TMPL_IF NAME="If_Javascript_OK"> var d = document.forms; for (var i=0; i < d.length; i++) { *************** *** 10,13 **** --- 11,15 ---- d[i].elements[j].disabled = !state; } + </TMPL_IF> return 0; } *************** *** 37,41 **** <br /> <div style="margin-left:1em;" class="adminAcceptRemote"> ! <input type="checkbox" name="serveropt_html" id="securityAcceptHTTP" name="toggle" <TMPL_IF NAME="Security_If_Local">disabled</TMPL_IF> <TMPL_IF NAME="Security_If_Local_html"><TMPL_ELSE>checked="checked"</TMPL_IF>/> <label class="administrationLabel" for="securityAcceptHTTP"> <TMPL_VAR NAME="Localize_Security_UI"> --- 39,43 ---- <br /> <div style="margin-left:1em;" class="adminAcceptRemote"> ! <input type="checkbox" name="serveropt_html" id="securityAcceptHTTP" name="toggle" <TMPL_IF NAME="If_Javascript_OK"><TMPL_IF NAME="Security_If_Local">disabled</TMPL_IF></TMPL_IF> <TMPL_IF NAME="Security_If_Local_html"><TMPL_ELSE>checked="checked"</TMPL_IF>/> <label class="administrationLabel" for="securityAcceptHTTP"> <TMPL_VAR NAME="Localize_Security_UI"> *************** *** 169,172 **** --- 171,188 ---- <br /> + <br /> + <input type="checkbox" id="configUIHTTPS" name="ui_https" value="1" <TMPL_IF NAME="Configuration_UI_HTTPS">checked</TMPL_IF>> + <label class="configurationLabel" for="configUIHTTPS"> + <TMPL_VAR NAME="Localize_Configuration_UIHTTPS"> + </label> + <br /> + <label class="configurationLabel" for="configUIHTTPSPort"> + <TMPL_VAR NAME="Localize_Configuration_UIHTTPSPort">: + </label> + <br /> + <input name="ui_https_port" id="configUIHTTPSPort" type="text" value="<TMPL_VAR NAME="Configuration_UI_HTTPS_Port">" /> + <br /> + + <br /> <label class="configurationLabel" for="configTCPTimeout"> <TMPL_VAR NAME="Localize_Configuration_TCPTimeoutSecs">: |
From: naoki i. <am...@us...> - 2008-04-25 16:27:13
|
Update of /cvsroot/popfile/engine/languages In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20326/languages Modified Files: English.msg Nihongo.msg Log Message: Change Log 1. UI and POP3 proxy are now able to be connected via SSL 2. New Proxy module 'Proxy::POP3S' (POP3 over SSL) 3. New global options: GLOBAL_cert_file, GLOBAL_key_file, GLOBAL_ca_file 4. New html options: html_https_enabled, html_https_port 5. Secure cookies are used when accessed to the HTTPS server Proxy/POP3S.pm Proxy/POP3.pm Proxy/Proxy.pm UI/HTML.pm UI/HTTP.pm POPFile/Configuration.pm Classifier/Bayes.pm skins/default/pop3s-configuration-panel.thtml skins/default/pop3s-security-panel.thtml tests/Configuration.tst The new Proxy::POP3S module supports connections via SSL. It has following options: pop3s_enabled Enable(=1)/Disable(=0;default) the module pop3s_force_fork Enable(=1)/Disable(=0) forking pop3s_local Allow(=1)/Disallow(=0) connections from remote pop3s_port POP3S proxy port(default:995) pop3s_socks_port SOCKS proxy port pop3s_socks_server SOCKS proxy server pop3s_welcome_string POP3S proxy welcome string The other POP3 options (e.g. pop3_separator) are same as the Proxy::POP3 module. Here's the new options of the UI::HTML module: html_https_enabled Enable(=1)/Disable(=0;default) the HTTPS server html_https_port HTTPS server port(default:8443) The new global options: GLOBAL_cert_file Location of the certification file of the server GLOBAL_key_file Location of the key file of the server GLOBAL_ca_file Location of the CA file NOTE: I've implemented POP3S and the HTTPS in the different way. I've made a new module Proxy::POP3S for POP3S, but I don't make the module for HTTPS. This is because I think making the new module for HTTPS ( UI:HTTPS ? ) is very hard. BUG: Concurrent POP3S connections cause an error in some environment: SSL3 alert write:fatal:bad record mac 7664:error:1408F119:SSL routines:SSL3_GET_RECORD:decryption failed or bad record mac:s3_pkt.c:424: 6. AUTH PLAIN support Proxy/POP3.pm 7. Supress the verbose status messages on the administration tab 8. Add some status messages (administration tab) UI/HTML.pm UI/XMLRPC.pm Proxy/Proxy.pm Proxy/POP3.pm Proxy/NNTP.pm Proxy/SMTP.pm languages/English.msg languages/Nihongo.msg tests/TestPOP3.tst tests/TestHTML.script 9. The message files are no longer cached by the web browser UI/HTTP.pm 10. if html_allow_javascript == 0, don't disable the radio buttons skins/default/administration-page.thtml skins/default/pop3-security-panel.thtml skins/default/nntp-security-local.thtml skins/default/smtp-security-local.thtml skins/default/xmlrpc-local.thtml 11. Minor updates of the skins skins/smtp-chain-server.thtml skins/smtp-chain-server-port.thtml (merged to the above file) skins/pop3-chain-panel.thtml 12. Source code cleanup UI/HTML.pm UI/HTTP.pm UI/XMLRPC.pm Proxy/POP3.pm Proxy/Proxy.pm Proxy/NNTP.pm Proxy/SMTP.pm Classifier/Bayes.pm Classifier/MailParse.pm POPFile/Configuration.pm POPFile/Database.pm POPFile/History.pm POPFile/Loader.pm POPFile/Logger.pm POPFile/Module.pm POPFile/MQ.pm POPFile/Mutex.pm Add some 'PROFILE BLOCK START' and 'PROFILE BLOCK STOP's. These are used by Devel::TestCoverage to get the correct coverage. 13. Add some tests tests/TestBayes.tst Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS * TestHistory PASS TestHTML PASS * TestHTTP PASS TestIMAP PASS TestInsertScript PASS * TestLogger PASS TestMailParse PASS TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 PASS TestProxy PASS TestWordMangle PASS TestXMLRPC PASS * : TODO : needs to add tests for multi user support Index: Nihongo.msg =================================================================== RCS file: /cvsroot/popfile/engine/languages/Nihongo.msg,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** Nihongo.msg 18 Apr 2008 12:41:49 -0000 1.28 --- Nihongo.msg 25 Apr 2008 16:26:30 -0000 1.29 *************** *** 123,127 **** Configuration_Error1 ¶èÀÚ¤êʸ»ú¤Ï 1 ʸ»ú¤À¤±¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ Configuration_Error2 ¥æ¡¼¥¶¡¼¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹Íѥݡ¼¥ÈÈÖ¹æ¤Ï 1 ¤«¤é 65535 ¤Þ¤Ç¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ ! Configuration_Error3 POP3 ¥Ý¡¼¥ÈÈÖ¹æ¤Ï 1 ¤«¤é 65535 ¤Þ¤Ç¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ Configuration_Error4 1 ¥Ú¡¼¥¸¤Ëɽ¼¨¤¹¤ë¥á¡¼¥ë¤Î¿ô¤Ï 1 ¤«¤é 1000 ¤Þ¤Ç¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ Configuration_Error5 ÍúÎò¤ò»Ä¤¹Æü¿ô¤Ï 1 ¤«¤é 366 ¤Þ¤Ç¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ --- 123,127 ---- Configuration_Error1 ¶èÀÚ¤êʸ»ú¤Ï 1 ʸ»ú¤À¤±¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ Configuration_Error2 ¥æ¡¼¥¶¡¼¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹Íѥݡ¼¥ÈÈÖ¹æ¤Ï 1 ¤«¤é 65535 ¤Þ¤Ç¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ ! Configuration_Error3 POP3/POP3S ¥Ý¡¼¥ÈÈÖ¹æ¤Ï 1 ¤«¤é 65535 ¤Þ¤Ç¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ Configuration_Error4 1 ¥Ú¡¼¥¸¤Ëɽ¼¨¤¹¤ë¥á¡¼¥ë¤Î¿ô¤Ï 1 ¤«¤é 1000 ¤Þ¤Ç¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ Configuration_Error5 ÍúÎò¤ò»Ä¤¹Æü¿ô¤Ï 1 ¤«¤é 366 ¤Þ¤Ç¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ *************** *** 131,134 **** --- 131,136 ---- Configuration_POP3Port POP3 ¥Ý¡¼¥ÈÈÖ¹æ Configuration_POP3Update POP3 ¥Ý¡¼¥ÈÈÖ¹æ¤ò ¡Ö%s¡×¤ËÊѹ¹¤·¤Þ¤·¤¿¡£¤³¤ÎÊѹ¹¤Ï POPFile ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç͸ú¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ + Configuration_POP3SPort POP3S ¥Ý¡¼¥ÈÈÖ¹æ + Configuration_POP3SUpdate POP3S ¥Ý¡¼¥ÈÈÖ¹æ¤ò ¡Ö%s¡×¤ËÊѹ¹¤·¤Þ¤·¤¿¡£¤³¤ÎÊѹ¹¤Ï POPFile ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç͸ú¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ Configuration_XMLRPCUpdate XML-RPC ¥Ý¡¼¥ÈÈÖ¹æ¤ò ¡Ö%s¡×¤ËÊѹ¹¤·¤Þ¤·¤¿¡£¤³¤ÎÊѹ¹¤Ï POPFile ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç͸ú¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ Configuration_XMLRPCPort XML-RPC ¥Ý¡¼¥ÈÈÖ¹æ *************** *** 138,143 **** --- 140,154 ---- Configuration_NNTPUpdate NNTP ¥Ý¡¼¥ÈÈÖ¹æ¤ò ¡Ö%s¡×¤ËÊѹ¹¤·¤Þ¤·¤¿¡£¤³¤ÎÊѹ¹¤Ï POPFile ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç͸ú¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ Configuration_POPFork POP3 Ʊ»þÀܳ¤Îµö²Ä + Configuration_POP3SFork POP3S Ʊ»þÀܳ¤Îµö²Ä Configuration_SMTPFork SMTP Ʊ»þÀܳ¤Îµö²Ä Configuration_NNTPFork NNTP Ʊ»þÀܳ¤Îµö²Ä + Configuration_POPForkEnabled POP3 ¥×¥í¥¥·¤Ø¤ÎƱ»þÀܳ¤ò¡Ö͸ú¡×¤ËÊѹ¹¤·¤Þ¤·¤¿ + Configuration_POP3SForkEnabled POP3S (POP3 over SSL) ¥×¥í¥¥·¤Ø¤ÎƱ»þÀܳ¤ò¡Ö͸ú¡×¤ËÊѹ¹¤·¤Þ¤·¤¿ + Configuration_SMTPForkEnabled SMTP ¥×¥í¥¥·¤Ø¤ÎƱ»þÀܳ¤ò¡Ö͸ú¡×¤ËÊѹ¹¤·¤Þ¤·¤¿ + Configuration_NNTPForkEnabled NNTP ¥×¥í¥¥·¤Ø¤ÎƱ»þÀܳ¤ò¡Ö͸ú¡×¤ËÊѹ¹¤·¤Þ¤·¤¿ + Configuration_POPForkDisabled POP3 ¥×¥í¥¥·¤Ø¤ÎƱ»þÀܳ¤ò¡Ö̵¸ú¡×¤ËÊѹ¹¤·¤Þ¤·¤¿ + Configuration_POP3SForkDisabled POP3S (POP3 over SSL) ¥×¥í¥¥·¤Ø¤ÎƱ»þÀܳ¤ò¡Ö̵¸ú¡×¤ËÊѹ¹¤·¤Þ¤·¤¿ + Configuration_SMTPForkDisabled SMTP ¥×¥í¥¥·¤Ø¤ÎƱ»þÀܳ¤ò¡Ö̵¸ú¡×¤ËÊѹ¹¤·¤Þ¤·¤¿ + Configuration_NNTPForkDisabled NNTP ¥×¥í¥¥·¤Ø¤ÎƱ»þÀܳ¤ò¡Ö̵¸ú¡×¤ËÊѹ¹¤·¤Þ¤·¤¿ Configuration_POP3Separator POP3 ¥Û¥¹¥È̾¡¢¥Ý¡¼¥ÈÈֹ桢¥æ¡¼¥¶Ì¾¤Î¶èÀÚ¤êʸ»ú Configuration_NNTPSeparator NNTP ¥Û¥¹¥È̾¡¢¥Ý¡¼¥ÈÈֹ桢¥æ¡¼¥¶Ì¾¤Î¶èÀÚ¤êʸ»ú *************** *** 146,149 **** --- 157,166 ---- Configuration_UI ¥æ¡¼¥¶¡¼¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹Íѥݡ¼¥ÈÈÖ¹æ Configuration_UIUpdate ¥æ¡¼¥¶¡¼¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹Íѥݡ¼¥ÈÈÖ¹æ¤ò ¡Ö%s¡×¤ËÊѹ¹¤·¤Þ¤·¤¿¡£¤³¤ÎÊѹ¹¤Ï POPFile ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç͸ú¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ + Configuration_UIHTTPS UI ¤Ø¤Î SSL Àܳ¤ò¼õ¤±Æþ¤ì¤ë + Configuration_UIHTTPSEnabled ¥æ¡¼¥¶¡¼¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹(UI) ¤Ø¤Î SSL Àܳ¤ò¡Ö͸ú¡×¤ËÊѹ¹¤·¤Þ¤·¤¿¡£¤³¤ÎÊѹ¹¤Ï POPFile ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç͸ú¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ + Configuration_UIHTTPSDisabled ¥æ¡¼¥¶¡¼¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹(UI) ¤Ø¤Î SSL Àܳ¤ò¡Ö̵¸ú¡×¤ËÊѹ¹¤·¤Þ¤·¤¿¡£¤³¤ÎÊѹ¹¤Ï POPFile ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç͸ú¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ + Configuration_UIHTTPSPort ¥æ¡¼¥¶¡¼¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¡ÊSSL¡ËÍѥݡ¼¥ÈÈÖ¹æ + Configuration_UIUpdate ¥æ¡¼¥¶¡¼¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹Íѥݡ¼¥ÈÈÖ¹æ¤ò ¡Ö%s¡×¤ËÊѹ¹¤·¤Þ¤·¤¿¡£¤³¤ÎÊѹ¹¤Ï POPFile ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç͸ú¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ + Configuration_UIHTTPSPortUpdate ¥æ¡¼¥¶¡¼¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¡ÊSSL¡ËÍѥݡ¼¥ÈÈÖ¹æ¤ò ¡Ö%s¡×¤ËÊѹ¹¤·¤Þ¤·¤¿¡£¤³¤ÎÊѹ¹¤Ï POPFile ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç͸ú¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ Configuration_History 1 ¥Ú¡¼¥¸¤Ëɽ¼¨¤¹¤ë¥á¡¼¥ë¤Î¿ô Configuration_HistoryUpdate 1 ¥Ú¡¼¥¸¤Ëɽ¼¨¤¹¤ë¥á¡¼¥ë¤Î¿ô¤ò ¡Ö%s¡×¤ËÊѹ¹¤·¤Þ¤·¤¿¡£ *************** *** 155,159 **** Configuration_Language ¸À¸ì Configuration_LanguageChoose ¸À¸ì¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤ ! Configuration_ListenPorts ¥Ý¡¼¥ÈÈÖ¹æ Configuration_HistoryView ÍúÎò Configuration_TCPTimeout TCP ¥³¥Í¥¯¥·¥ç¥ó¥¿¥¤¥à¥¢¥¦¥È --- 172,176 ---- Configuration_Language ¸À¸ì Configuration_LanguageChoose ¸À¸ì¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤ ! Configuration_ListenPorts ¥â¥¸¥å¡¼¥ë¤Î¥ª¥×¥·¥ç¥ó Configuration_HistoryView ÍúÎò Configuration_TCPTimeout TCP ¥³¥Í¥¯¥·¥ç¥ó¥¿¥¤¥à¥¢¥¦¥È *************** *** 322,325 **** --- 339,343 ---- Security_SMTPPortUpdate SMTP ¥Á¥§¡¼¥ó¥Ý¡¼¥ÈÈÖ¹æ¤ò ¡Ö%s¡× ¤ËÊѹ¹¤·¤Þ¤·¤¿¡£¤³¤ÎÊѹ¹¤Ï POPFile ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç͸ú¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ Security_POP3 ¥ê¥â¡¼¥È¥Þ¥·¥ó¤«¤é¤Î POP3 Àܳ¤òǧ¤á¤ë (POPFile ¤ÎºÆµ¯Æ°¤¬É¬Í×) + Security_POP3S ¥ê¥â¡¼¥È¥Þ¥·¥ó¤«¤é¤Î POP3S Àܳ¤òǧ¤á¤ë (POPFile ¤ÎºÆµ¯Æ°¤¬É¬Í×) Security_SMTP ¥ê¥â¡¼¥È¥Þ¥·¥ó¤«¤é¤Î SMTP Àܳ¤òǧ¤á¤ë (POPFile ¤ÎºÆµ¯Æ°¤¬É¬Í×) Security_NNTP ¥ê¥â¡¼¥È¥Þ¥·¥ó¤«¤é¤Î NNTP Àܳ¤òǧ¤á¤ë (POPFile ¤ÎºÆµ¯Æ°¤¬É¬Í×) *************** *** 328,331 **** --- 346,351 ---- Security_StealthModeUpdatePOP3 POPFile POP3 ¥×¥í¥¥· ¤Ï¾¤Î¥Þ¥·¥ó¤«¤é¤ÎÀܳ¤ò¡ÖµñÈݡפ·¤Þ¤¹¡£¤³¤ÎÊѹ¹¤Ï POPFile ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç͸ú¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ Security_ServerModeUpdatePOP3 POPFile POP3 ¥×¥í¥¥· ¤Ï¾¤Î¥Þ¥·¥ó¤«¤é¤ÎÀܳ¤ò¡Öµö²Ä¡×¤·¤Þ¤¹¡£¤³¤ÎÊѹ¹¤Ï POPFile ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç͸ú¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ + Security_StealthModeUpdatePOP3S POPFile POP3S ¥×¥í¥¥· ¤Ï¾¤Î¥Þ¥·¥ó¤«¤é¤ÎÀܳ¤ò¡ÖµñÈݡפ·¤Þ¤¹¡£¤³¤ÎÊѹ¹¤Ï POPFile ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç͸ú¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ + Security_ServerModeUpdatePOP3S POPFile POP3S ¥×¥í¥¥· ¤Ï¾¤Î¥Þ¥·¥ó¤«¤é¤ÎÀܳ¤ò¡Öµö²Ä¡×¤·¤Þ¤¹¡£¤³¤ÎÊѹ¹¤Ï POPFile ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç͸ú¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ Security_StealthModeUpdateSMTP POPFile SMTP ¥×¥í¥¥· ¤Ï¾¤Î¥Þ¥·¥ó¤«¤é¤ÎÀܳ¤ò¡ÖµñÈݡפ·¤Þ¤¹¡£¤³¤ÎÊѹ¹¤Ï POPFile ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç͸ú¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ Security_ServerModeUpdateSMTP POPFile SMTP ¥×¥í¥¥· ¤Ï¾¤Î¥Þ¥·¥ó¤«¤é¤ÎÀܳ¤ò¡Öµö²Ä¡×¤·¤Þ¤¹¡£¤³¤ÎÊѹ¹¤Ï POPFile ¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç͸ú¤Ë¤Ê¤ê¤Þ¤»¤ó¡£ Index: English.msg =================================================================== RCS file: /cvsroot/popfile/engine/languages/English.msg,v retrieving revision 1.115 retrieving revision 1.116 diff -C2 -d -r1.115 -r1.116 *** English.msg 18 Apr 2008 12:41:49 -0000 1.115 --- English.msg 25 Apr 2008 16:26:30 -0000 1.116 *************** *** 122,126 **** Configuration_Error1 The separator character must be a single character Configuration_Error2 The user interface port must be a number between 1 and 65535 ! Configuration_Error3 The POP3 listen port must be a number between 1 and 65535 Configuration_Error4 The page size must be a number between 1 and 1000 Configuration_Error5 The number of days in the history must be a number between 1 and 366 --- 122,126 ---- Configuration_Error1 The separator character must be a single character Configuration_Error2 The user interface port must be a number between 1 and 65535 ! Configuration_Error3 The POP3/POP3S listen port must be a number between 1 and 65535 Configuration_Error4 The page size must be a number between 1 and 1000 Configuration_Error5 The number of days in the history must be a number between 1 and 366 *************** *** 130,133 **** --- 130,135 ---- Configuration_POP3Port POP3 listen port Configuration_POP3Update Updated POP3 port to %s; this change will not take affect until you restart POPFile + Configuration_POP3SPort POP3S listen port + Configuration_POP3SUpdate Updated POP3S (POP3 over SSL) port to %s; this change will not take affect until you restart POPFile Configuration_XMLRPCUpdate Updated XML-RPC port to %s; this change will not take affect until you restart POPFile Configuration_XMLRPCPort XML-RPC listen port *************** *** 137,142 **** --- 139,153 ---- Configuration_NNTPUpdate Updated NNTP port to %s; this change will not take affect until you restart POPFile Configuration_POPFork Allow concurrent POP3 connections + Configuration_POP3SFork Allow concurrent POP3S connections Configuration_SMTPFork Allow concurrent SMTP connections Configuration_NNTPFork Allow concurrent NNTP connections + Configuration_POPForkEnabled Enabled concurrent POP3 connections + Configuration_POP3SForkEnabled Enabled concurrent POP3S (POP3 over SSL) connections + Configuration_SMTPForkEnabled Enabled concurrent SMTP connections + Configuration_NNTPForkEnabled Enabled concurrent NNTP connections + Configuration_POPForkDisabled Disabled concurrent POP3 connections + Configuration_POP3SForkDisabled Disabled concurrent POP3S (POP3 over SSL) connections + Configuration_SMTPForkDisabled Disabled concurrent SMTP connections + Configuration_NNTPForkDisabled Disabled concurrent NNTP connections Configuration_POP3Separator POP3 host:port:user separator character Configuration_NNTPSeparator NNTP host:port:user separator character *************** *** 145,148 **** --- 156,164 ---- Configuration_UI User interface web port Configuration_UIUpdate Updated user interface web port to %s; this change will not take affect until you restart POPFile + Configuration_UIHTTPS Accept incoming SSL connections to the UI + Configuration_UIHTTPSEnabled Enabled incoming SSL connections to the UI; this change will not take affect until you restart POPFile + Configuration_UIHTTPSDisabled Disabled incoming SSL connections to the UI; this change will not take affect until you restart POPFile + Configuration_UIHTTPSPort User interface web (SSL) port + Configuration_UIHTTPSPortUpdate Updated user interface web port (SSL) to %s; this change will not take affect until you restart POPFile Configuration_History Messages per page Configuration_HistoryUpdate Updated number of messages per page to %s *************** *** 321,324 **** --- 337,341 ---- Security_SMTPPortUpdate Updated SMTP chain port to %s; this change will not take affect until you restart POPFile Security_POP3 Accept POP3 connections from remote machines (requires POPFile restart) + Security_POP3S Accept POP3S connections from remote machines (requires POPFile restart) Security_SMTP Accept SMTP connections from remote machines (requires POPFile restart) Security_NNTP Accept NNTP connections from remote machines (requires POPFile restart) *************** *** 327,330 **** --- 344,349 ---- Security_StealthModeUpdatePOP3 POPFile POP3 proxy WON'T be accessed from another machine; this change will not take affect until you restart POPFile Security_ServerModeUpdatePOP3 POPFile POP3 proxy ALLOWS to be accessed from another machine; this change will not take affect until you restart POPFile + Security_StealthModeUpdatePOP3S POPFile POP3S proxy WON'T be accessed from another machine; this change will not take affect until you restart POPFile + Security_ServerModeUpdatePOP3S POPFile POP3S proxy ALLOWS to be accessed from another machine; this change will not take affect until you restart POPFile Security_StealthModeUpdateSMTP POPFile SMTP proxy WON'T be accessed from another machine; this change will not take affect until you restart POPFile Security_ServerModeUpdateSMTP POPFile SMTP proxy ALLOWS to be accessed from another machine; this change will not take affect until you restart POPFile |
From: naoki i. <am...@us...> - 2008-04-25 16:27:12
|
Update of /cvsroot/popfile/engine/Proxy In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20326/Proxy Modified Files: NNTP.pm POP3.pm Proxy.pm SMTP.pm Added Files: POP3S.pm Log Message: Change Log 1. UI and POP3 proxy are now able to be connected via SSL 2. New Proxy module 'Proxy::POP3S' (POP3 over SSL) 3. New global options: GLOBAL_cert_file, GLOBAL_key_file, GLOBAL_ca_file 4. New html options: html_https_enabled, html_https_port 5. Secure cookies are used when accessed to the HTTPS server Proxy/POP3S.pm Proxy/POP3.pm Proxy/Proxy.pm UI/HTML.pm UI/HTTP.pm POPFile/Configuration.pm Classifier/Bayes.pm skins/default/pop3s-configuration-panel.thtml skins/default/pop3s-security-panel.thtml tests/Configuration.tst The new Proxy::POP3S module supports connections via SSL. It has following options: pop3s_enabled Enable(=1)/Disable(=0;default) the module pop3s_force_fork Enable(=1)/Disable(=0) forking pop3s_local Allow(=1)/Disallow(=0) connections from remote pop3s_port POP3S proxy port(default:995) pop3s_socks_port SOCKS proxy port pop3s_socks_server SOCKS proxy server pop3s_welcome_string POP3S proxy welcome string The other POP3 options (e.g. pop3_separator) are same as the Proxy::POP3 module. Here's the new options of the UI::HTML module: html_https_enabled Enable(=1)/Disable(=0;default) the HTTPS server html_https_port HTTPS server port(default:8443) The new global options: GLOBAL_cert_file Location of the certification file of the server GLOBAL_key_file Location of the key file of the server GLOBAL_ca_file Location of the CA file NOTE: I've implemented POP3S and the HTTPS in the different way. I've made a new module Proxy::POP3S for POP3S, but I don't make the module for HTTPS. This is because I think making the new module for HTTPS ( UI:HTTPS ? ) is very hard. BUG: Concurrent POP3S connections cause an error in some environment: SSL3 alert write:fatal:bad record mac 7664:error:1408F119:SSL routines:SSL3_GET_RECORD:decryption failed or bad record mac:s3_pkt.c:424: 6. AUTH PLAIN support Proxy/POP3.pm 7. Supress the verbose status messages on the administration tab 8. Add some status messages (administration tab) UI/HTML.pm UI/XMLRPC.pm Proxy/Proxy.pm Proxy/POP3.pm Proxy/NNTP.pm Proxy/SMTP.pm languages/English.msg languages/Nihongo.msg tests/TestPOP3.tst tests/TestHTML.script 9. The message files are no longer cached by the web browser UI/HTTP.pm 10. if html_allow_javascript == 0, don't disable the radio buttons skins/default/administration-page.thtml skins/default/pop3-security-panel.thtml skins/default/nntp-security-local.thtml skins/default/smtp-security-local.thtml skins/default/xmlrpc-local.thtml 11. Minor updates of the skins skins/smtp-chain-server.thtml skins/smtp-chain-server-port.thtml (merged to the above file) skins/pop3-chain-panel.thtml 12. Source code cleanup UI/HTML.pm UI/HTTP.pm UI/XMLRPC.pm Proxy/POP3.pm Proxy/Proxy.pm Proxy/NNTP.pm Proxy/SMTP.pm Classifier/Bayes.pm Classifier/MailParse.pm POPFile/Configuration.pm POPFile/Database.pm POPFile/History.pm POPFile/Loader.pm POPFile/Logger.pm POPFile/Module.pm POPFile/MQ.pm POPFile/Mutex.pm Add some 'PROFILE BLOCK START' and 'PROFILE BLOCK STOP's. These are used by Devel::TestCoverage to get the correct coverage. 13. Add some tests tests/TestBayes.tst Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS * TestHistory PASS TestHTML PASS * TestHTTP PASS TestIMAP PASS TestInsertScript PASS * TestLogger PASS TestMailParse PASS TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 PASS TestProxy PASS TestWordMangle PASS TestXMLRPC PASS * : TODO : needs to add tests for multi user support Index: POP3.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v retrieving revision 1.122 retrieving revision 1.123 diff -C2 -d -r1.122 -r1.123 *** POP3.pm 18 Apr 2008 12:48:52 -0000 1.122 --- POP3.pm 25 Apr 2008 16:26:19 -0000 1.123 *************** *** 4,7 **** --- 4,8 ---- use Proxy::Proxy; use Digest::MD5; + use MIME::Base64 qw(decode_base64); @ISA = ("Proxy::Proxy"); *************** *** 83,87 **** # Enabled by default ! $self->config_( 'enabled', 1); # By default we don't fork on Windows --- 84,88 ---- # Enabled by default ! $self->config_( 'enabled', 1 ); # By default we don't fork on Windows *************** *** 106,111 **** # The welcome string from the proxy is configurable ! $self->config_( 'welcome_string', ! "POP3 POPFile ($self->{version_}) server ready" ); return $self->SUPER::initialize(); --- 107,112 ---- # The welcome string from the proxy is configurable ! $self->config_( 'welcome_string', # PROFILE BLOCK START ! "POP3 POPFile ($self->{version_}) server ready" ); # PROFILE BLOCK STOP return $self->SUPER::initialize(); *************** *** 189,198 **** # version number ! $self->tee_( $client, "+OK " . $self->config_( 'welcome_string' ) . ! "$eol" ); # Compile some configurable regexp's once ! my $s = $self->config_( 'separator' ); $s =~ s/(\$|\@|\[|\]|\(|\)|\||\?|\*|\.|\^|\+)/\\$1/; --- 190,199 ---- # version number ! $self->tee_( $client, "+OK " . $self->config_( 'welcome_string' ) . # PROFILE BLOCK START ! "$eol" ); # PROFILE BLOCK STOP # Compile some configurable regexp's once ! my $s = $self->module_config_( 'pop3', 'separator' ); $s =~ s/(\$|\@|\[|\]|\(|\)|\||\?|\*|\.|\^|\+)/\\$1/; *************** *** 238,249 **** if ( $command =~ /$transparent/ ) { ! if ( $self->config_( 'secure_server' ) ne '' ) { ! $token = $self->config_( 'secure_server' ). ":$1"; $self->log_( 2, "Set transparent proxy token : '$token'" ); ! if ( $mail = $self->verify_connected_( $mail, $client, ! $self->config_( 'secure_server' ), ! $self->config_( 'secure_port' ), ! $self->config_( 'secure_ssl' ) ) ) { last if ($self->echo_response_($mail, $client, $command) == 2 ); } else { --- 239,250 ---- if ( $command =~ /$transparent/ ) { ! if ( $self->module_config_( 'pop3', 'secure_server' ) ne '' ) { ! $token = $self->module_config_( 'pop3', 'secure_server' ). ":$1"; $self->log_( 2, "Set transparent proxy token : '$token'" ); ! if ( $mail = $self->verify_connected_( $mail, $client, # PROFILE BLOCK START ! $self->module_config_( 'pop3', 'secure_server' ), ! $self->module_config_( 'pop3', 'secure_port' ), ! $self->module_config_( 'pop3', 'secure_ssl' ) ) ) { # PROFILE BLOCK STOP last if ($self->echo_response_($mail, $client, $command) == 2 ); } else { *************** *** 267,272 **** $port = $ssl?995:110 if ( !defined( $port ) ); ! if ( $mail = $self->verify_connected_( $mail, $client, ! $host, $port, $ssl ) ) { if ( defined( $options ) && ( $options =~ /apop/i ) ) { --- 268,273 ---- $port = $ssl?995:110 if ( !defined( $port ) ); ! if ( $mail = $self->verify_connected_( $mail, $client, # PROFILE BLOCK START ! $host, $port, $ssl ) ) { # PROFILE BLOCK STOP if ( defined( $options ) && ( $options =~ /apop/i ) ) { *************** *** 341,349 **** $self->log_( 2, "digest='$md5hex'" ); ! my ($response, $ok) = $self->get_response_( $mail, $client, ! "APOP $self->{apop_user__} $md5hex", 0, 1 ); ! if ( ( $ok == 1 ) && ! ( $response =~ /$self->{good_response_}/ ) ) { # authentication OK, toss the hello response and --- 342,350 ---- $self->log_( 2, "digest='$md5hex'" ); ! my ($response, $ok) = # PROFILE BLOCK START $self->get_response_( $mail, $client, ! "APOP $self->{apop_user__} $md5hex", 0, 1 ); # PROFILE BLOCK STOP ! if ( ( $ok == 1 ) && # PROFILE BLOCK START ! ( $response =~ /$self->{good_response_}/ ) ) { # PROFILE BLOCK STOP # authentication OK, toss the hello response and *************** *** 360,369 **** } } else { ! last if ($self->echo_response_($mail, $client, ! $command) == 2 ); ! $session = $self->get_session_key_( $token ); ! if ( !defined( $session ) ) { ! $self->tee_( $client, "-ERR Unknown account $token$eol" ); ! last; } } --- 361,372 ---- } } else { ! my $ok = $self->echo_response_( $mail, $client, $command ); ! last if ( $ok == 2 ); ! if ( $ok == 0 ) { ! $session = $self->get_session_key_( $token ); ! if ( !defined( $session ) ) { ! $self->tee_( $client, "-ERR Unknown account $token$eol" ); ! last; ! } } } *************** *** 376,381 **** if ( $command =~ /$apop_command/io ) { ! $self->tee_( $client, ! "-ERR APOP not supported between mail client and POPFile.$eol" ); # TODO: Consider implementing a host:port:username:secret --- 379,384 ---- if ( $command =~ /$apop_command/io ) { ! $self->tee_( $client, # PROFILE BLOCK START ! "-ERR APOP not supported between mail client and POPFile.$eol" ); # PROFILE BLOCK STOP # TODO: Consider implementing a host:port:username:secret *************** *** 388,396 **** if ( $command =~ /AUTH ([^ ]+)/ ) { ! if ( $self->config_( 'secure_server' ) ne '' ) { ! if ( $mail = $self->verify_connected_( $mail, $client, ! $self->config_( 'secure_server' ), ! $self->config_( 'secure_port' ), ! $self->config_( 'secure_ssl' ) ) ) { # Loop until we get -ERR or +OK --- 391,413 ---- if ( $command =~ /AUTH ([^ ]+)/ ) { ! if ( $self->module_config_( 'pop3', 'secure_server' ) ne '' ) { ! my $mechanism = $1; ! ! $token = $self->module_config_( 'pop3', 'secure_server' ); ! if ( $self->global_config_( 'single_user' ) != 1 ) { ! if ( $mechanism !~ /^PLAIN$/i ) { ! # TODO : support other mechanisms ! ! # When AUTH command is used, we have to find out who is ! # accessing to POPFile. ! ! $self->tee_( $client, "-ERR AUTH $mechanism is not supported in the multi user mode$eol" ); ! } ! } ! ! if ( $mail = $self->verify_connected_( $mail, $client, # PROFILE BLOCK START ! $self->module_config_( 'pop3', 'secure_server' ), ! $self->module_config_( 'pop3', 'secure_port' ), ! $self->module_config_( 'pop3', 'secure_ssl' ) ) ) { # PROFILE BLOCK STOP # Loop until we get -ERR or +OK *************** *** 402,407 **** --- 419,439 ---- $auth = <$client>; $auth =~ s/(\015|\012)$//g; + + if ( $mechanism =~ /^PLAIN$/i ) { + my ( $authid, $userid, $password ) = + split( "\00", decode_base64( $auth ) ); + $token .= ':' . $userid if ( defined($userid) ); + } + ( $response, $ok ) = $self->get_response_( $mail, $client, $auth ); } + + if ( $response =~ /\+OK/ ) { + $session = $self->get_session_key_( $token ); + if ( !defined( $session ) ) { + $self->tee_( $client, "-ERR Unknown account $token$eol" ); + last; + } + } } else { next; *************** *** 415,423 **** if ( $command =~ /AUTH/ ) { ! if ( $self->config_( 'secure_server' ) ne '' ) { ! if ( $mail = $self->verify_connected_( $mail, $client, ! $self->config_( 'secure_server' ), ! $self->config_( 'secure_port' ), ! $self->config_( 'secure_ssl' ) ) ) { my $response = $self->echo_response_($mail, $client, "AUTH" ); last if ( $response == 2 ); --- 447,455 ---- if ( $command =~ /AUTH/ ) { ! if ( $self->module_config_( 'pop3', 'secure_server' ) ne '' ) { ! if ( $mail = $self->verify_connected_( $mail, $client, # PROFILE BLOCK START ! $self->module_config_( 'pop3', 'secure_server' ), ! $self->module_config_( 'pop3', 'secure_port' ), ! $self->module_config_( 'pop3', 'secure_ssl' ) ) ) { # PROFILE BLOCK STOP my $response = $self->echo_response_($mail, $client, "AUTH" ); last if ( $response == 2 ); *************** *** 498,504 **** if ( $2 ne '99999999' ) { ! if ( $self->config_( 'toptoo' ) == 1 ) { ! my $response = ! $self->echo_response_( $mail, $client, "RETR $count" ); last if ( $response == 2 ); if ( $response == 0 ) { --- 530,536 ---- if ( $2 ne '99999999' ) { ! if ( $self->module_config_( 'pop3', 'toptoo' ) == 1 ) { ! my $response = # PROFILE BLOCK START ! $self->echo_response_( $mail, $client, "RETR $count" ); # PROFILE BLOCK STOP last if ( $response == 2 ); if ( $response == 0 ) { *************** *** 507,513 **** # file for later RETR's ! my ( $class, $slot ) = $self->classifier_()->classify_and_modify( ! $session, $mail, $client, 0, '', 0, 0 ); $downloaded{$count} = $slot; --- 539,545 ---- # file for later RETR's ! my ( $class, $slot ) = # PROFILE BLOCK START $self->classifier_()->classify_and_modify( ! $session, $mail, $client, 0, '', 0, 0 ); # PROFILE BLOCK STOP $downloaded{$count} = $slot; *************** *** 518,524 **** # by the RETR ! $response = $self->echo_response_( $mail, $client, ! $command, 1 ); last if ( $response == 2 ); if ( $response == 0 ) { --- 550,556 ---- # by the RETR ! $response = # PROFILE BLOCK START $self->echo_response_( $mail, $client, ! $command, 1 ); # PROFILE BLOCK STOP last if ( $response == 2 ); if ( $response == 0 ) { *************** *** 527,537 **** # saving, echoing to client ! $self->classifier_()->classify_and_modify( ! $session, $mail, $client, 1, $class, $slot, 1 ); } } } else { ! my $response = ! $self->echo_response_( $mail, $client, $command ); last if ( $response == 2 ); if ( $response == 0 ) { --- 559,569 ---- # saving, echoing to client ! $self->classifier_()->classify_and_modify( # PROFILE BLOCK START ! $session, $mail, $client, 1, $class, $slot, 1 ); # PROFILE BLOCK STOP } } } else { ! my $response = # PROFILE BLOCK START ! $self->echo_response_( $mail, $client, $command ); # PROFILE BLOCK STOP last if ( $response == 2 ); if ( $response == 0 ) { *************** *** 550,558 **** if ( $command =~ /CAPA/i ) { ! if ( $mail || $self->config_( 'secure_server' ) ne '' ) { ! if ( $mail || ( $mail = $self->verify_connected_( $mail, $client, ! $self->config_( 'secure_server' ), ! $self->config_( 'secure_port' ), ! $self->config_( 'secure_ssl' ) ) ) ) { my $response = $self->echo_response_($mail, $client, "CAPA" ); last if ( $response == 2 ); --- 582,590 ---- if ( $command =~ /CAPA/i ) { ! if ( $mail || $self->module_config_( 'pop3', 'secure_server' ) ne '' ) { ! if ( $mail || ( $mail = $self->verify_connected_( $mail, $client, # PROFILE BLOCK START ! $self->module_config_( 'pop3', 'secure_server' ), ! $self->module_config_( 'pop3', 'secure_port' ), ! $self->module_config_( 'pop3', 'secure_ssl' ) ) ) ) { # PROFILE BLOCK STOP my $response = $self->echo_response_($mail, $client, "CAPA" ); last if ( $response == 2 ); *************** *** 601,607 **** my $file; ! if ( defined($downloaded{$count}) && ( $file = $self->history_()->get_slot_file( $downloaded{$count} ) ) && ! (open RETRFILE, "<$file") ) { # act like a network stream --- 633,639 ---- my $file; ! if ( defined($downloaded{$count}) && # PROFILE BLOCK START ( $file = $self->history_()->get_slot_file( $downloaded{$count} ) ) && ! (open RETRFILE, "<$file") ) { # PROFILE BLOCK STOP # act like a network stream *************** *** 619,625 **** # Load the last classification ! my ( $id, $from, $to, $cc, $subject, $date, $hash, $inserted, $bucket, $reclassified ) = ! $self->history_()->get_slot_fields( $downloaded{$count}, $session ); if ( $bucket ne 'unknown class' ) { --- 651,657 ---- # Load the last classification ! my ( $id, $from, $to, $cc, $subject, # PROFILE BLOCK START $date, $hash, $inserted, $bucket, $reclassified ) = ! $self->history_()->get_slot_fields( $downloaded{$count}, $session ); # PROFILE BLOCK STOP if ( $bucket ne 'unknown class' ) { *************** *** 766,772 **** if ( $name eq 'pop3_configuration' ) { if ( defined($$form{pop3_port}) ) { ! if ( ( $$form{pop3_port} =~ /^\d+$/ ) && ( $$form{pop3_port} >= 1 ) && ( $$form{pop3_port} < 65536 ) ) { ! $self->config_( 'port', $$form{pop3_port} ); ! $status_message .= sprintf( $$language{Configuration_POP3Update}, $self->config_( 'port' ) ) . "\n"; } else { $error_message .= $$language{Configuration_Error3} . "\n"; --- 798,810 ---- if ( $name eq 'pop3_configuration' ) { if ( defined($$form{pop3_port}) ) { ! if ( ( $$form{pop3_port} =~ /^\d+$/ ) && # PROFILE BLOCK START ! ( $$form{pop3_port} >= 1 ) && ! ( $$form{pop3_port} < 65536 ) ) { # PROFILE BLOCK STOP ! if ( $self->config_( 'port' ) ne $$form{pop3_port} ) { ! $self->config_( 'port', $$form{pop3_port} ); ! $status_message .= sprintf( # PROFILE BLOCK START ! $$language{Configuration_POP3Update}, ! $self->config_( 'port' ) ) . "\n"; # PROFILE BLOCK STOP ! } } else { $error_message .= $$language{Configuration_Error3} . "\n"; *************** *** 776,781 **** if ( defined($$form{pop3_separator}) ) { if ( length($$form{pop3_separator}) == 1 ) { ! $self->config_( 'separator', $$form{pop3_separator} ); ! $status_message .= sprintf( $$language{Configuration_POP3SepUpdate}, $self->config_( 'separator' ) ) . "\n"; } else { $error_message .= $$language{Configuration_Error1} . "\n"; --- 814,823 ---- if ( defined($$form{pop3_separator}) ) { if ( length($$form{pop3_separator}) == 1 ) { ! if ( $self->config_( 'separator' ) ne $$form{pop3_separator} ) { ! $self->config_( 'separator', $$form{pop3_separator} ); ! $status_message .= sprintf( # PROFILE BLOCK START ! $$language{Configuration_POP3SepUpdate}, ! $self->config_( 'separator' ) ) . "\n"; # PROFILE BLOCK STOP ! } } else { $error_message .= $$language{Configuration_Error1} . "\n"; *************** *** 785,797 **** if ( defined($$form{update_pop3_configuration}) ) { if ( $$form{pop3_force_fork} ) { ! $self->config_( 'force_fork', 1 ); } else { ! $self->config_( 'force_fork', 0 ); } } - $status_message =~ s/\n$// if ( defined( $status_message ) ); - $error_message =~ s/\n$// if ( defined( $error_message) ); - return( $status_message, $error_message ); } --- 827,842 ---- if ( defined($$form{update_pop3_configuration}) ) { if ( $$form{pop3_force_fork} ) { ! if ( $self->config_( 'force_fork' ) ne 1 ) { ! $self->config_( 'force_fork', 1 ); ! $status_message .= $$language{Configuration_POPForkEnabled}; ! } } else { ! if ( $self->config_( 'force_fork' ) ne 0 ) { ! $self->config_( 'force_fork', 0 ); ! $status_message .= $$language{Configuration_POPForkDisabled}; ! } } } return( $status_message, $error_message ); } *************** *** 799,808 **** if ( $name eq 'pop3_security' ) { if ( $$form{serveropt_pop3} ) { ! $self->config_( 'local', 0 ); ! $status_message = $$language{Security_ServerModeUpdatePOP3}; } else { ! $self->config_( 'local', 1 ); ! $status_message = $$language{Security_StealthModeUpdatePOP3}; } --- 844,857 ---- if ( $name eq 'pop3_security' ) { if ( $$form{serveropt_pop3} ) { ! if ( $self->config_( 'local' ) ne 0 ) { ! $self->config_( 'local', 0 ); ! $status_message = $$language{Security_ServerModeUpdatePOP3}; ! } } else { ! if ( $self->config_( 'local' ) ne 1 ) { ! $self->config_( 'local', 1 ); ! $status_message = $$language{Security_StealthModeUpdatePOP3}; ! } } *************** *** 812,823 **** if ( $name eq 'pop3_chain' ) { if ( defined( $$form{server} ) ) { ! $self->config_( 'secure_server', $$form{server} ); ! $status_message .= sprintf( $$language{Security_SecureServerUpdate}, $self->config_( 'secure_server' ) ) . "\n"; } if ( defined($$form{sport}) ) { ! if ( ( $$form{sport} =~ /^\d+$/ ) && ( $$form{sport} >= 1 ) && ( $$form{sport} < 65536 ) ) { ! $self->config_( 'secure_port', $$form{sport} ); ! $status_message .= sprintf( $$language{Security_SecurePortUpdate}, $self->config_( 'secure_port' ) ) . "\n"; } else { $error_message .= $$language{Security_Error1}; --- 861,882 ---- if ( $name eq 'pop3_chain' ) { if ( defined( $$form{server} ) ) { ! if ( $self->config_( 'secure_server' ) ne $$form{server} ) { ! $self->config_( 'secure_server', $$form{server} ); ! $status_message .= sprintf( # PROFILE BLOCK START ! $$language{Security_SecureServerUpdate}, ! $self->config_( 'secure_server' ) ) . "\n"; # PROFILE BLOCK STOP ! } } if ( defined($$form{sport}) ) { ! if ( ( $$form{sport} =~ /^\d+$/ ) && # PROFILE BLOCK START ! ( $$form{sport} >= 1 ) && ! ( $$form{sport} < 65536 ) ) { # PROFILE BLOCK STOP ! if ( $self->config_( 'secure_port' ) ne $$form{sport} ) { ! $self->config_( 'secure_port', $$form{sport} ); ! $status_message .= sprintf( # PROFILE BLOCK START ! $$language{Security_SecurePortUpdate}, ! $self->config_( 'secure_port' ) ) . "\n"; # PROFILE BLOCK STOP ! } } else { $error_message .= $$language{Security_Error1}; *************** *** 827,841 **** if ( defined($$form{update_server}) ) { if ( $$form{sssl} ) { ! $self->config_( 'secure_ssl', 1 ); ! $status_message .= $$language{Security_SecureServerUseSSLOn} . "\n"; } else { ! $self->config_( 'secure_ssl', 0 ); ! $status_message .= $$language{Security_SecureServerUseSSLOff} . "\n"; } } - $status_message =~ s/\n$// if ( defined( $status_message ) ); - $error_message =~ s/\n$// if ( defined( $error_message) ); - return( $status_message, $error_message ); } --- 886,901 ---- if ( defined($$form{update_server}) ) { if ( $$form{sssl} ) { ! if ( $self->config_( 'secure_ssl' ) ne 1 ) { ! $self->config_( 'secure_ssl', 1 ); ! $status_message .= $$language{Security_SecureServerUseSSLOn} . "\n"; ! } } else { ! if ( $self->config_( 'secure_ssl' ) ne 0 ) { ! $self->config_( 'secure_ssl', 0 ); ! $status_message .= $$language{Security_SecureServerUseSSLOff} . "\n"; ! } } } return( $status_message, $error_message ); } *************** *** 844,845 **** --- 904,906 ---- } + 1; Index: NNTP.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/NNTP.pm,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -d -r1.45 -r1.46 *** NNTP.pm 18 Apr 2008 12:41:49 -0000 1.45 --- NNTP.pm 25 Apr 2008 16:26:19 -0000 1.46 *************** *** 95,100 **** # The welcome string from the proxy is configurable ! $self->config_( 'welcome_string', ! "NNTP POPFile ($self->{version_}) server ready" ); if ( !$self->SUPER::initialize() ) { --- 95,100 ---- # The welcome string from the proxy is configurable ! $self->config_( 'welcome_string', # PROFILE BLOCK START ! "NNTP POPFile ($self->{version_}) server ready" ); # PROFILE BLOCK STOP if ( !$self->SUPER::initialize() ) { *************** *** 127,139 **** # item that needs a UI component ! $self->register_configuration_item_( 'configuration', 'nntp_config', 'nntp-configuration.thtml', ! $self ); ! $self->register_configuration_item_( 'security', 'nntp_local', 'nntp-security-local.thtml', ! $self ); if ( $self->config_( 'welcome_string' ) =~ /^NNTP POPFile \(v\d+\.\d+\.\d+\) server ready$/ ) { # PROFILE BLOCK START --- 127,139 ---- # item that needs a UI component ! $self->register_configuration_item_( 'configuration', # PROFILE BLOCK START 'nntp_config', 'nntp-configuration.thtml', ! $self ); # PROFILE BLOCK STOP ! $self->register_configuration_item_( 'security', # PROFILE BLOCK START 'nntp_local', 'nntp-security-local.thtml', ! $self ); # PROFILE BLOCK STOP if ( $self->config_( 'welcome_string' ) =~ /^NNTP POPFile \(v\d+\.\d+\.\d+\) server ready$/ ) { # PROFILE BLOCK START *************** *** 198,203 **** if ( $command =~ /^ *QUIT/i ) { if ( $news ) { ! last if ( $self->echo_response_( $news, $client, $command ) == ! 2 ); close $news; } else { --- 198,203 ---- if ( $command =~ /^ *QUIT/i ) { if ( $news ) { ! last if ( $self->echo_response_( $news, $client, $command ) == # PROFILE BLOCK START ! 2 ); # PROFILE BLOCK STOP close $news; } else { *************** *** 215,220 **** # then be server[:port][/username]) ! my $user_command = '^ *AUTHINFO USER ([^:]+)(:([\d]{1,5}))?(\\' . ! $self->config_( 'separator' ) . '(.+))?'; if ( $command =~ /$user_command/i ) { --- 215,220 ---- # then be server[:port][/username]) ! my $user_command = '^ *AUTHINFO USER ([^:]+)(:([\d]{1,5}))?(\\' . # PROFILE BLOCK START ! $self->config_( 'separator' ) . '(.+))?'; # PROFILE BLOCK STOP if ( $command =~ /$user_command/i ) { *************** *** 227,232 **** if ( $server ne '' ) { ! if ( $news = $self->verify_connected_( $news, $client, ! $server, $port || 119 ) ) { if (defined $username) { --- 227,232 ---- if ( $server ne '' ) { ! if ( $news = $self->verify_connected_( $news, $client, # PROFILE BLOCK START ! $server, $port || 119 ) ) { # PROFILE BLOCK STOP if (defined $username) { *************** *** 236,241 **** # straight to the client ! $self->get_response_( $news, $client, ! 'AUTHINFO USER ' . $username ); $connection_state = "password needed"; } else { --- 236,241 ---- # straight to the client ! $self->get_response_( $news, $client, # PROFILE BLOCK START ! 'AUTHINFO USER ' . $username ); # PROFILE BLOCK STOP $connection_state = "password needed"; } else { *************** *** 250,255 **** } } else { ! $self->tee_( $client, ! "482 Authentication rejected server name not specified in AUTHINFO USER command$eol" ); last; } --- 250,255 ---- } } else { ! $self->tee_( $client, # PROFILE BLOCK START ! "482 Authentication rejected server name not specified in AUTHINFO USER command$eol" ); # PROFILE BLOCK STOP last; } *************** *** 266,271 **** } elsif ( $connection_state eq "password needed" ) { if ($command =~ /^ *AUTHINFO PASS (.*)/i) { ! my ( $response, $ok ) = $self->get_response_( $news, $client, ! $command); if ($response =~ /^281 .*/) { --- 266,271 ---- } elsif ( $connection_state eq "password needed" ) { if ($command =~ /^ *AUTHINFO PASS (.*)/i) { ! my ( $response, $ok ) = $self->get_response_( $news, $client, # PROFILE BLOCK START ! $command); # PROFILE BLOCK STOP if ($response =~ /^281 .*/) { *************** *** 300,311 **** if ( $command =~ /^ *ARTICLE (.*)/i ) { ! my ( $response, $ok ) = $self->get_response_( $news, $client, ! $command); if ( $response =~ /^220 (.*) (.*)$/i) { $count += 1; my ( $class, $history_file ) = ! $self->classifier_()->classify_and_modify( $session, ! $news, $client, 0, '', 0 ); } --- 300,311 ---- if ( $command =~ /^ *ARTICLE (.*)/i ) { ! my ( $response, $ok ) = $self->get_response_( $news, $client, # PROFILE BLOCK START ! $command); # PROFILE BLOCK STOP if ( $response =~ /^220 (.*) (.*)$/i) { $count += 1; my ( $class, $history_file ) = ! $self->classifier_()->classify_and_modify( $session, # PROFILE BLOCK START ! $news, $client, 0, '', 0 ); # PROFILE BLOCK STOP } *************** *** 332,337 **** if ( $ command =~ /^ *(HELP)/i ) { ! my ( $response, $ok ) = $self->get_response_( $news, $client, ! $command); if ( $response =~ /^1\d\d/ ) { $self->echo_to_dot_( $news, $client, 0 ); --- 332,337 ---- if ( $ command =~ /^ *(HELP)/i ) { ! my ( $response, $ok ) = $self->get_response_( $news, $client, # PROFILE BLOCK START ! $command); # PROFILE BLOCK STOP if ( $response =~ /^1\d\d/ ) { $self->echo_to_dot_( $news, $client, 0 ); *************** *** 351,356 **** if ( $command =~ /^ *(IHAVE|POST|XRELPIC)/i ) { ! my ( $response, $ok ) = $self->get_response_( $news, $client, ! $command); # 3xx (300) series response indicates multi-line text --- 351,356 ---- if ( $command =~ /^ *(IHAVE|POST|XRELPIC)/i ) { ! my ( $response, $ok ) = $self->get_response_( $news, $client, # PROFILE BLOCK START ! $command); # PROFILE BLOCK STOP # 3xx (300) series response indicates multi-line text *************** *** 454,473 **** if ( defined $$form{nntp_port} ) { ! if ( ( $$form{nntp_port} =~ /^\d+$/ ) && ( $$form{nntp_port} >= 1 ) && ( $$form{nntp_port} < 65536 ) ) { ! $self->config_( 'port', $$form{nntp_port} ); ! $status = sprintf $$language{Configuration_NNTPUpdate}, $self->config_( 'port' ); ! } else { ! $error = $$language{Configuration_Error3}; ! } } if ( defined $$form{nntp_separator} ) { if ( length($$form{nntp_separator}) == 1 ) { ! $self->config_( 'separator', $$form{nntp_separator} ); ! $status .= "\n" if ( defined( $status ) ); ! $status .= sprintf $$language{Configuration_NNTPSepUpdate}, $self->config_( 'separator' ); } else { ! $error .= "\n" if ( defined( $error ) ); ! $error .= $$language{Configuration_Error1}; } } --- 454,481 ---- if ( defined $$form{nntp_port} ) { ! if ( ( $$form{nntp_port} =~ /^\d+$/ ) && # PROFILE BLOCK START ! ( $$form{nntp_port} >= 1 ) && ! ( $$form{nntp_port} < 65536 ) ) { # PROFILE BLOCK STOP ! if ( $self->config_( 'port' ) ne $$form{nntp_port} ) { ! $self->config_( 'port', $$form{nntp_port} ); ! $status = sprintf( # PROFILE BLOCK START ! $$language{Configuration_NNTPUpdate}, ! $self->config_( 'port' ) ) . "\n"; # PROFILE BLOCK STOP ! } ! } else { ! $error = $$language{Configuration_Error3} . "\n"; ! } } if ( defined $$form{nntp_separator} ) { if ( length($$form{nntp_separator}) == 1 ) { ! if ( $self->config_( 'separator' ) ne $$form{nntp_separator} ) { ! $self->config_( 'separator', $$form{nntp_separator} ); ! $status .= sprintf( # PROFILE BLOCK START ! $$language{Configuration_NNTPSepUpdate}, ! $self->config_( 'separator' ) ) . "\n"; # PROFILE BLOCK STOP ! } } else { ! $error .= $$language{Configuration_Error1} . "\n"; } } *************** *** 475,481 **** if ( defined $$form{update_nntp_configuration} ) { if ( $$form{nntp_force_fork} ) { ! $self->config_( 'force_fork', 1 ); } else { ! $self->config_( 'force_fork', 0 ); } } --- 483,495 ---- if ( defined $$form{update_nntp_configuration} ) { if ( $$form{nntp_force_fork} ) { ! if ( $self->config_( 'force_fork' ) ne 1 ) { ! $self->config_( 'force_fork', 1 ); ! $status .= $$language{Configuration_NNTPForkEnabled}; ! } } else { ! if ( $self->config_( 'force_fork' ) ne 0 ) { ! $self->config_( 'force_fork', 0 ); ! $status .= $$language{Configuration_NNTPForkDisabled}; ! } } } *************** *** 486,494 **** if ( $name eq 'nntp_local' ) { if ( $form->{serveropt_nntp} ) { ! $self->config_( 'local', 0 ); ! $status = $$language{Security_ServerModeUpdateNNTP}; } else { ! $self->config_( 'local', 1 ); ! $status = $$language{Security_StealthModeUpdateNNTP}; } return( $status, $error ); --- 500,512 ---- if ( $name eq 'nntp_local' ) { if ( $form->{serveropt_nntp} ) { ! if ( $self->config_( 'local' ) ne 0 ) { ! $self->config_( 'local', 0 ); ! $status = $$language{Security_ServerModeUpdateNNTP}; ! } } else { ! if ( $self->config_( 'local' ) ne 1 ) { ! $self->config_( 'local', 1 ); ! $status = $$language{Security_StealthModeUpdateNNTP}; ! } } return( $status, $error ); Index: Proxy.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/Proxy.pm,v retrieving revision 1.65 retrieving revision 1.66 diff -C2 -d -r1.65 -r1.66 *** Proxy.pm 16 Nov 2006 19:12:51 -0000 1.65 --- Proxy.pm 25 Apr 2008 16:26:20 -0000 1.66 *************** *** 123,133 **** # Open the socket used to receive request for proxy service ! $self->{server__} = IO::Socket::INET->new( Proto => 'tcp', # PROFILE BLOCK START ($self->config_( 'local' ) || 0) == 1 ? (LocalAddr => 'localhost') : (), LocalPort => $self->config_( 'port' ), Listen => SOMAXCONN, Reuse => 1 ); # PROFILE BLOCK STOP ! ! my $name = $self->name(); if ( !defined( $self->{server__} ) ) { --- 123,146 ---- # Open the socket used to receive request for proxy service ! my $name = $self->name(); ! ! if ( $name eq 'pop3s' ) { ! require IO::Socket::SSL; ! # $IO::Socket::SSL::DEBUG = 4; ! $self->{server__} = IO::Socket::SSL->new( Proto => 'tcp', # PROFILE BLOCK START ($self->config_( 'local' ) || 0) == 1 ? (LocalAddr => 'localhost') : (), LocalPort => $self->config_( 'port' ), Listen => SOMAXCONN, + SSL_cert_file => $self->get_user_path_( $self->global_config_( 'cert_file' ) ), + SSL_key_file => $self->get_user_path_( $self->global_config_( 'key_file' ) ), + SSL_ca_file => $self->get_user_path_( $self->global_config_( 'ca_file' ) ), Reuse => 1 ); # PROFILE BLOCK STOP ! } else { ! $self->{server__} = IO::Socket::INET->new( Proto => 'tcp', # PROFILE BLOCK START ! ($self->config_( 'local' ) || 0) == 1 ? (LocalAddr => 'localhost') : (), ! LocalPort => $self->config_( 'port' ), ! Listen => SOMAXCONN, ! Reuse => 1 ); # PROFILE BLOCK STOP ! } if ( !defined( $self->{server__} ) ) { *************** *** 251,255 **** } } ! } else { pipe my $reader, my $writer; --- 264,268 ---- } } ! } else { pipe my $reader, my $writer; *************** *** 283,287 **** $self->SUPER::forked( $writer ); ! close $self->{server__}; } --- 296,300 ---- $self->SUPER::forked( $writer ); ! close $self->{server__} if ( $self->name() ne 'pop3s' ); } *************** *** 453,457 **** if ( $response =~ /$self->{good_response_}/ ) { return 0; ! } else { return 1; } --- 466,470 ---- if ( $response =~ /$self->{good_response_}/ ) { return 0; ! } else { return 1; } *************** *** 477,484 **** my ( $self, $token ) = @_; ! return $self->classifier_()->get_session_key_from_token( $self->{api_session__}, $self->name(), ! $token ); } --- 490,497 ---- my ( $self, $token ) = @_; ! return $self->classifier_()->get_session_key_from_token( # PROFILE BLOCK START $self->{api_session__}, $self->name(), ! $token ); # PROFILE BLOCK STOP } *************** *** 533,539 **** ConnectAddr => $hostname, ConnectPort => $port ); # PROFILE BLOCK STOP ! $self->log_( 0, "Attempting to connect to socks server at " . $self->config_( 'socks_server' ) . ":" ! . ProxyPort => $self->config_( 'socks_port' ) ); } else { if ( $ssl ) { --- 546,552 ---- ConnectAddr => $hostname, ConnectPort => $port ); # PROFILE BLOCK STOP ! $self->log_( 0, "Attempting to connect to socks server at " # PROFILE BLOCK START . $self->config_( 'socks_server' ) . ":" ! . ProxyPort => $self->config_( 'socks_port' ) ); # PROFILE BLOCK STOP } else { if ( $ssl ) { *************** *** 543,549 **** PeerAddr => $hostname, PeerPort => $port ); # PROFILE BLOCK STOP ! $self->log_( 0, "Attempting to connect to SSL server at " ! . "$hostname:$port" ); ! } else { $mail = IO::Socket::INET->new( # PROFILE BLOCK START --- 556,562 ---- PeerAddr => $hostname, PeerPort => $port ); # PROFILE BLOCK STOP ! $self->log_( 0, "Attempting to connect to SSL server at " # PROFILE BLOCK START ! . "$hostname:$port" ); # PROFILE BLOCK STOP ! } else { $mail = IO::Socket::INET->new( # PROFILE BLOCK START *************** *** 551,556 **** PeerAddr => $hostname, PeerPort => $port ); # PROFILE BLOCK STOP ! $self->log_( 0, "Attempting to connect to POP server at " ! . "$hostname:$port" ); } } --- 564,569 ---- PeerAddr => $hostname, PeerPort => $port ); # PROFILE BLOCK STOP ! $self->log_( 0, "Attempting to connect to POP server at " # PROFILE BLOCK START ! . "$hostname:$port" ); # PROFILE BLOCK STOP } } *************** *** 663,669 **** if ( $name eq $me . "_socks_configuration" ) { if ( defined($$form{"$me" . "_socks_port"}) ) { ! if ( ( $$form{"$me" . "_socks_port"} >= 1 ) && ( $$form{"$me" . "_socks_port"} < 65536 ) ) { ! $self->config_( 'socks_port', $$form{"$me" . "_socks_port"} ); ! $status = sprintf( $$language{Configuration_SOCKSPortUpdate}, $self->config_( 'socks_port' ) ); } else { $error = $$language{Configuration_Error8}; --- 676,688 ---- if ( $name eq $me . "_socks_configuration" ) { if ( defined($$form{"$me" . "_socks_port"}) ) { ! if ( ( $$form{"$me" . "_socks_port"} =~ /^\d+$/ ) && # PROFILE BLOCK START ! ( $$form{"$me" . "_socks_port"} >= 1 ) && ! ( $$form{"$me" . "_socks_port"} < 65536 ) ) { # PROFILE BLOCK STOP ! if ( $self->config_( 'socks_port' ) ne $$form{"$me" . "_socks_port"} ) { ! $self->config_( 'socks_port', $$form{"$me" . "_socks_port"} ); ! $status = sprintf( # PROFILE BLOCK START ! $$language{Configuration_SOCKSPortUpdate}, ! $self->config_( 'socks_port' ) ); # PROFILE BLOCK STOP ! } } else { $error = $$language{Configuration_Error8}; *************** *** 672,678 **** if ( defined($$form{"$me" . "_socks_server"}) ) { ! $self->config_( 'socks_server', $$form{"$me" . "_socks_server"} ); ! $status .= "\n" if (defined $status); ! $status .= sprintf( $$language{Configuration_SOCKSServerUpdate}, $self->config_( 'socks_server' ) ); } } --- 691,701 ---- if ( defined($$form{"$me" . "_socks_server"}) ) { ! if ( $self->config_( 'socks_server' ) ne $$form{"$me" . "_socks_server"} ) { ! $self->config_( 'socks_server', $$form{"$me" . "_socks_server"} ); ! $status .= "\n" if (defined $status); ! $status .= sprintf( # PROFILE BLOCK START ! $$language{Configuration_SOCKSServerUpdate}, ! $self->config_( 'socks_server' ) ); # PROFILE BLOCK STOP ! } } } Index: SMTP.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/SMTP.pm,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -d -r1.46 -r1.47 *** SMTP.pm 18 Apr 2008 12:41:49 -0000 1.46 --- SMTP.pm 25 Apr 2008 16:26:20 -0000 1.47 *************** *** 115,137 **** # item that needs a UI component ! $self->register_configuration_item_( 'configuration', 'smtp_fork_and_port', 'smtp-configuration.thtml', ! $self ); ! $self->register_configuration_item_( 'security', 'smtp_local', 'smtp-security-local.thtml', ! $self ); ! $self->register_configuration_item_( 'chain', 'smtp_server', 'smtp-chain-server.thtml', ! $self ); ! ! $self->register_configuration_item_( 'chain', ! 'smtp_server_port', ! 'smtp-chain-server-port.thtml', ! $self ); if ( $self->config_( 'welcome_string' ) =~ /^SMTP POPFile \(v\d+\.\d+\.\d+\) welcome$/ ) { # PROFILE BLOCK START --- 115,132 ---- # item that needs a UI component ! $self->register_configuration_item_( 'configuration', # PROFILE BLOCK START 'smtp_fork_and_port', 'smtp-configuration.thtml', ! $self ); # PROFILE BLOCK STOP ! $self->register_configuration_item_( 'security', # PROFILE BLOCK START 'smtp_local', 'smtp-security-local.thtml', ! $self ); # PROFILE BLOCK STOP ! $self->register_configuration_item_( 'chain', # PROFILE BLOCK START 'smtp_server', 'smtp-chain-server.thtml', ! $self ); # PROFILE BLOCK STOP if ( $self->config_( 'welcome_string' ) =~ /^SMTP POPFile \(v\d+\.\d+\.\d+\) welcome$/ ) { # PROFILE BLOCK START *************** *** 235,239 **** } ! if ( ( $command =~ /MAIL FROM:/i ) || ( $command =~ /RCPT TO:/i ) || ( $command =~ /VRFY/i ) || --- 230,234 ---- } ! if ( ( $command =~ /MAIL FROM:/i ) || # PROFILE BLOCK START ( $command =~ /RCPT TO:/i ) || ( $command =~ /VRFY/i ) || *************** *** 241,245 **** ( $command =~ /NOOP/i ) || ( $command =~ /HELP/i ) || ! ( $command =~ /RSET/i ) ) { $self->smtp_echo_response_( $mail, $client, $command ); next; --- 236,240 ---- ( $command =~ /NOOP/i ) || ( $command =~ /HELP/i ) || ! ( $command =~ /RSET/i ) ) { # PROFILE BLOCK STOP $self->smtp_echo_response_( $mail, $client, $command ); next; *************** *** 351,357 **** if ( $name eq 'smtp_server' ) { $templ->param( 'smtp_chain_server' => $self->config_( 'chain_server' ) ); - } - - if ( $name eq 'smtp_server_port' ) { $templ->param( 'smtp_chain_port' => $self->config_( 'chain_port' ) ); } --- 346,349 ---- *************** *** 383,399 **** if ( defined($$form{update_smtp_configuration}) ) { if ( $$form{smtp_force_fork} ) { ! $self->config_( 'force_fork', 1 ); } else { ! $self->config_( 'force_fork', 0 ); } } if ( defined($$form{smtp_port}) ) { ! if ( ( $$form{smtp_port} =~ /^\d+$/ ) && ( $$form{smtp_port} >= 1 ) && ( $$form{smtp_port} < 65536 ) ) { ! $self->config_( 'port', $$form{smtp_port} ); ! $status = sprintf( $$language{Configuration_SMTPUpdate}, $self->config_( 'port' ) ); ! } else { $error = $$language{Configuration_Error3}; ! } } return( $status, $error ); --- 375,403 ---- if ( defined($$form{update_smtp_configuration}) ) { if ( $$form{smtp_force_fork} ) { ! if ( $self->config_( 'force_fork' ) ne 1 ) { ! $self->config_( 'force_fork', 1 ); ! $status = $$language{Configuration_SMTPForkEnabled} . "\n"; ! } } else { ! if ( $self->config_( 'force_fork' ) ne 0 ) { ! $self->config_( 'force_fork', 0 ); ! $status = $$language{Configuration_SMTPForkDisabled} . "\n"; ! } } } if ( defined($$form{smtp_port}) ) { ! if ( ( $$form{smtp_port} =~ /^\d+$/ ) && # PROFILE BLOCK START ! ( $$form{smtp_port} >= 1 ) && ! ( $$form{smtp_port} < 65536 ) ) { # PROFILE BLOCK STOP ! if ( $self->config_( 'port' ) ne $$form{smtp_port} ) { ! $self->config_( 'port', $$form{smtp_port} ); ! $status .= sprintf( # PROFILE BLOCK START ! $$language{Configuration_SMTPUpdate}, ! $self->config_( 'port' ) ); # PROFILE BLOCK STOP ! } ! } else { $error = $$language{Configuration_Error3}; ! } } return( $status, $error ); *************** *** 402,410 **** if ( $name eq 'smtp_local' ) { if ( $form->{serveropt_smtp} ) { ! $self->config_( 'local', 0 ); ! $status = $$language{Security_ServerModeUpdateSMTP}; } else { ! $self->config_( 'local', 1 ); ! $status = $$language{Security_StealthModeUpdateSMTP}; } return ( $status, $error ); --- 406,418 ---- if ( $name eq 'smtp_local' ) { if ( $form->{serveropt_smtp} ) { ! if ( $self->config_( 'local' ) ne 0 ) { ! $self->config_( 'local', 0 ); ! $status = $$language{Security_ServerModeUpdateSMTP}; ! } } else { ! if ( $self->config_( 'local' ) ne 1 ) { ! $self->config_( 'local', 1 ); ! $status = $$language{Security_StealthModeUpdateSMTP}; ! } } return ( $status, $error ); *************** *** 413,428 **** if ( $name eq 'smtp_server' ) { if ( defined $$form{smtp_chain_server} ) { ! $self->config_( 'chain_server', $$form{smtp_chain_server} ); ! $status = sprintf( $$language{Security_SMTPServerUpdate}, $self->config_( 'chain_server' ) ); } - return( $status, $error ); - } - if ( $name eq 'smtp_server_port' ) { if ( defined $$form{smtp_chain_server_port} ) { ! if ( ( $$form{smtp_chain_server_port} >= 1 ) && ( $$form{smtp_chain_server_port} < 65536 ) ) { ! $self->config_( 'chain_port', $$form{smtp_chain_server_port} ); ! $status = sprintf( $$language{Security_SMTPPortUpdate}, $self->config_( 'chain_port' ) ) } else { $error = $$language{Security_Error1}; --- 421,443 ---- if ( $name eq 'smtp_server' ) { if ( defined $$form{smtp_chain_server} ) { ! if ( $self->config_( 'chain_server' ) ne $$form{smtp_chain_server} ) { ! $self->config_( 'chain_server', $$form{smtp_chain_server} ); ! $status = sprintf( # PROFILE BLOCK START ! $$language{Security_SMTPServerUpdate}, ! $self->config_( 'chain_server' ) ) . "\n"; # PROFILE BLOCK STOP ! } } if ( defined $$form{smtp_chain_server_port} ) { ! if ( ( $$form{smtp_chain_server_port} =~ /^\d+$/ ) && # PROFILE BLOCK START ! ( $$form{smtp_chain_server_port} >= 1 ) && ! ( $$form{smtp_chain_server_port} < 65536 ) ) { # PROFILE BLOCK STOP ! if ( $self->config_( 'chain_port' ) ne $$form{smtp_chain_server_port} ) { ! $self->config_( 'chain_port', $$form{smtp_chain_server_port} ); ! $status .= sprintf( # PROFILE BLOCK START ! $$language{Security_SMTPPortUpdate}, ! $self->config_( 'chain_port' ) ); # PROFILE BLOCK STOP ! } } else { $error = $$language{Security_Error1}; *************** *** 436,439 **** 1; - - --- 451,452 ---- --- NEW FILE: POP3S.pm --- # POPFILE LOADABLE MODULE 4 package Proxy::POP3S; use Proxy::Proxy; use Proxy::POP3; use Digest::MD5; @ISA = ("Proxy::Proxy"); #@ISA = ("Proxy::POP3"); # ---------------------------------------------------------------------------- # # This module handles proxying the POP3 protocol for POPFile. # # Copyright (c) 2001-2006 John Graham-Cumming # # This file is part of POPFile # # POPFile is free software; you can redistribute it and/or modify it # under the terms of version 2 of the GNU General Public License as # published by the Free Software Foundation. # # POPFile is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNES... [truncated message content] |
From: naoki i. <am...@us...> - 2008-04-25 16:27:07
|
Update of /cvsroot/popfile/engine/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20326/tests Modified Files: TestBayes.tst TestConfiguration.tst TestHTML.script TestPOP3.tst TestProxy.tst Log Message: Change Log 1. UI and POP3 proxy are now able to be connected via SSL 2. New Proxy module 'Proxy::POP3S' (POP3 over SSL) 3. New global options: GLOBAL_cert_file, GLOBAL_key_file, GLOBAL_ca_file 4. New html options: html_https_enabled, html_https_port 5. Secure cookies are used when accessed to the HTTPS server Proxy/POP3S.pm Proxy/POP3.pm Proxy/Proxy.pm UI/HTML.pm UI/HTTP.pm POPFile/Configuration.pm Classifier/Bayes.pm skins/default/pop3s-configuration-panel.thtml skins/default/pop3s-security-panel.thtml tests/Configuration.tst The new Proxy::POP3S module supports connections via SSL. It has following options: pop3s_enabled Enable(=1)/Disable(=0;default) the module pop3s_force_fork Enable(=1)/Disable(=0) forking pop3s_local Allow(=1)/Disallow(=0) connections from remote pop3s_port POP3S proxy port(default:995) pop3s_socks_port SOCKS proxy port pop3s_socks_server SOCKS proxy server pop3s_welcome_string POP3S proxy welcome string The other POP3 options (e.g. pop3_separator) are same as the Proxy::POP3 module. Here's the new options of the UI::HTML module: html_https_enabled Enable(=1)/Disable(=0;default) the HTTPS server html_https_port HTTPS server port(default:8443) The new global options: GLOBAL_cert_file Location of the certification file of the server GLOBAL_key_file Location of the key file of the server GLOBAL_ca_file Location of the CA file NOTE: I've implemented POP3S and the HTTPS in the different way. I've made a new module Proxy::POP3S for POP3S, but I don't make the module for HTTPS. This is because I think making the new module for HTTPS ( UI:HTTPS ? ) is very hard. BUG: Concurrent POP3S connections cause an error in some environment: SSL3 alert write:fatal:bad record mac 7664:error:1408F119:SSL routines:SSL3_GET_RECORD:decryption failed or bad record mac:s3_pkt.c:424: 6. AUTH PLAIN support Proxy/POP3.pm 7. Supress the verbose status messages on the administration tab 8. Add some status messages (administration tab) UI/HTML.pm UI/XMLRPC.pm Proxy/Proxy.pm Proxy/POP3.pm Proxy/NNTP.pm Proxy/SMTP.pm languages/English.msg languages/Nihongo.msg tests/TestPOP3.tst tests/TestHTML.script 9. The message files are no longer cached by the web browser UI/HTTP.pm 10. if html_allow_javascript == 0, don't disable the radio buttons skins/default/administration-page.thtml skins/default/pop3-security-panel.thtml skins/default/nntp-security-local.thtml skins/default/smtp-security-local.thtml skins/default/xmlrpc-local.thtml 11. Minor updates of the skins skins/smtp-chain-server.thtml skins/smtp-chain-server-port.thtml (merged to the above file) skins/pop3-chain-panel.thtml 12. Source code cleanup UI/HTML.pm UI/HTTP.pm UI/XMLRPC.pm Proxy/POP3.pm Proxy/Proxy.pm Proxy/NNTP.pm Proxy/SMTP.pm Classifier/Bayes.pm Classifier/MailParse.pm POPFile/Configuration.pm POPFile/Database.pm POPFile/History.pm POPFile/Loader.pm POPFile/Logger.pm POPFile/Module.pm POPFile/MQ.pm POPFile/Mutex.pm Add some 'PROFILE BLOCK START' and 'PROFILE BLOCK STOP's. These are used by Devel::TestCoverage to get the correct coverage. 13. Add some tests tests/TestBayes.tst Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS * TestHistory PASS TestHTML PASS * TestHTTP PASS TestIMAP PASS TestInsertScript PASS * TestLogger PASS TestMailParse PASS TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 PASS TestProxy PASS TestWordMangle PASS TestXMLRPC PASS * : TODO : needs to add tests for multi user support Index: TestHTML.script =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestHTML.script,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** TestHTML.script 18 Apr 2008 12:41:49 -0000 1.38 --- TestHTML.script 25 Apr 2008 16:26:50 -0000 1.39 *************** *** 803,807 **** MATCH Updated POP3 port to 111; this change will not take affect until you restart POPFile SETSUBMIT pop3_port 0 ! MATCH The POP3 listen port must be a number between 1 and 65535 INPUTIS pop3_port 111 --- 803,807 ---- MATCH Updated POP3 port to 111; this change will not take affect until you restart POPFile SETSUBMIT pop3_port 0 ! MATCH The POP3/POP3S listen port must be a number between 1 and 65535 INPUTIS pop3_port 111 Index: TestPOP3.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestPOP3.tst,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** TestPOP3.tst 17 Apr 2008 15:13:05 -0000 1.36 --- TestPOP3.tst 25 Apr 2008 16:26:50 -0000 1.37 *************** *** 182,187 **** test_assert_equal( scalar( keys( %{$params} ) ), 3 ); test_assert_equal( $templ->param( 'POP3_Configuration_If_Force_Fork' ), ( $p->config_( 'force_fork' ) == 1 ) ); ! test_assert_equal( $templ->param( 'POP3_Configuration_Port' ), $p->config_( 'port' ) ); ! test_assert_equal( $templ->param( 'POP3_Configuration_Separator' ), $p->config_( 'separator' ) ); delete $templ->{params__}; --- 182,187 ---- test_assert_equal( scalar( keys( %{$params} ) ), 3 ); test_assert_equal( $templ->param( 'POP3_Configuration_If_Force_Fork' ), ( $p->config_( 'force_fork' ) == 1 ) ); ! test_assert_equal( $templ->param( 'POP3_Configuration_Port' ), $p->config_( 'port' ) ); ! test_assert_equal( $templ->param( 'POP3_Configuration_Separator' ), $p->config_( 'separator' ) ); delete $templ->{params__}; *************** *** 263,267 **** ($status, $error) = $p->validate_item( 'pop3_configuration', $templ, $language, $form ); ! test_assert_equal( $status, "pop3 port update " . ( $port + 1 ) ); test_assert( !defined( $error ) ); test_assert_equal( $p->config_('port'), $port + 1 ); --- 263,267 ---- ($status, $error) = $p->validate_item( 'pop3_configuration', $templ, $language, $form ); ! test_assert_equal( $status, "pop3 port update " . ( $port + 1 ) . "\n" ); test_assert( !defined( $error ) ); test_assert_equal( $p->config_('port'), $port + 1 ); *************** *** 274,278 **** ($status, $error) = $p->validate_item( 'pop3_configuration', $templ, $language, $form ); ! test_assert_equal( $error, "configuration error 3" ); test_assert( !defined( $status ) ); test_assert_equal( $p->config_( 'port' ), $port ); --- 274,278 ---- ($status, $error) = $p->validate_item( 'pop3_configuration', $templ, $language, $form ); ! test_assert_equal( $error, "configuration error 3\n" ); test_assert( !defined( $status ) ); test_assert_equal( $p->config_( 'port' ), $port ); *************** *** 286,290 **** ($status, $error) = $p->validate_item( 'pop3_configuration', $templ, $language, $form ); ! test_assert_equal( $status, "pop3 separator update '" ); test_assert( !defined( $error ) ); test_assert_equal( $p->config_( 'separator' ), "'" ); --- 286,290 ---- ($status, $error) = $p->validate_item( 'pop3_configuration', $templ, $language, $form ); ! test_assert_equal( $status, "pop3 separator update '\n" ); test_assert( !defined( $error ) ); test_assert_equal( $p->config_( 'separator' ), "'" ); *************** *** 297,301 **** ($status, $error) = $p->validate_item( 'pop3_configuration', $templ, $language, $form ); ! test_assert_equal( $error, "configuration error 1" ); test_assert( !defined( $status ) ); test_assert_equal( $p->config_( 'separator' ), ':' ); --- 297,301 ---- ($status, $error) = $p->validate_item( 'pop3_configuration', $templ, $language, $form ); ! test_assert_equal( $error, "configuration error 1\n" ); test_assert( !defined( $status ) ); test_assert_equal( $p->config_( 'separator' ), ':' ); *************** *** 303,312 **** delete $form->{pop3_separator}; ! test_assert_equal( $p->config_( 'force_fork' ), 0 ); $form->{update_pop3_configuration} = 1; $form->{pop3_force_fork} = 1; ($status, $error) = $p->validate_item( 'pop3_configuration', $templ, $language, $form ); ! test_assert( !defined( $status ) ); test_assert( !defined( $error ) ); test_assert_equal( $p->config_( 'force_fork' ), 1 ); --- 303,314 ---- delete $form->{pop3_separator}; ! test_assert_equal( $p->config_( 'force_fork' ), 0); $form->{update_pop3_configuration} = 1; $form->{pop3_force_fork} = 1; + $language->{'Configuration_POPForkEnabled'} = "use pop3 forking"; + $language->{'Configuration_POPForkDisabled'} = "don't use pop3 forking"; ($status, $error) = $p->validate_item( 'pop3_configuration', $templ, $language, $form ); ! test_assert_equal( $status, "use pop3 forking" ); test_assert( !defined( $error ) ); test_assert_equal( $p->config_( 'force_fork' ), 1 ); *************** *** 319,322 **** --- 321,331 ---- test_assert_equal( $p->config_( 'force_fork' ), 1 ); + $form->{pop3_force_fork} = ''; + + ($status, $error) = $p->validate_item( 'pop3_configuration', $templ, $language, $form ); + test_assert_equal( $status, "don't use pop3 forking" ); + test_assert( !defined($error) ); + test_assert_equal( $p->config_( 'force_fork' ), 0 ); + delete $form->{pop3_force_fork}; delete $form->{update_pop3_configuration}; *************** *** 345,349 **** ($status, $error) = $p->validate_item( 'pop3_chain', $templ, $language, $form ); ! test_assert_equal( $status, "secure server update www.example.com" ); test_assert_equal( defined( $error ), defined( undef ) ); test_assert_equal( $p->config_( 'secure_server' ), 'www.example.com' ); --- 354,358 ---- ($status, $error) = $p->validate_item( 'pop3_chain', $templ, $language, $form ); ! test_assert_equal( $status, "secure server update www.example.com\n" ); test_assert_equal( defined( $error ), defined( undef ) ); test_assert_equal( $p->config_( 'secure_server' ), 'www.example.com' ); *************** *** 358,362 **** ($status, $error) = $p->validate_item( 'pop3_chain', $templ, $language, $form ); ! test_assert_equal( $status, "secure port update 10110" ); test_assert_equal( defined( $error ), defined( undef ) ); test_assert_equal( $p->config_( 'secure_port' ), 10110 ); --- 367,371 ---- ($status, $error) = $p->validate_item( 'pop3_chain', $templ, $language, $form ); ! test_assert_equal( $status, "secure port update 10110\n" ); test_assert_equal( defined( $error ), defined( undef ) ); test_assert_equal( $p->config_( 'secure_port' ), 10110 ); *************** *** 375,385 **** $old_config_value = $p->config_( 'secure_ssl' ); - $form->{update_server} = 1; $form->{sssl} = "1"; $language->{Security_SecureServerUseSSLOn} = "use SSL connections"; $language->{Security_SecureServerUseSSLOff} = "not use SSL connections"; ($status, $error) = $p->validate_item( 'pop3_chain', $templ, $language, $form ); ! test_assert_equal( $status, "use SSL connections" ); test_assert( !defined( $error ) ); test_assert_equal( $p->config_( 'secure_ssl' ), 1 ); --- 384,395 ---- $old_config_value = $p->config_( 'secure_ssl' ); $form->{sssl} = "1"; + $form->{update_server} = 1; + $language->{Security_SecureServerUseSSLOn} = "use SSL connections"; $language->{Security_SecureServerUseSSLOff} = "not use SSL connections"; ($status, $error) = $p->validate_item( 'pop3_chain', $templ, $language, $form ); ! test_assert_equal( $status, "use SSL connections\n" ); test_assert( !defined( $error ) ); test_assert_equal( $p->config_( 'secure_ssl' ), 1 ); *************** *** 388,396 **** ($status, $error) = $p->validate_item( 'pop3_chain', $templ, $language, $form ); ! test_assert_equal( $status, "not use SSL connections" ); test_assert( !defined( $error ) ); test_assert_equal( $p->config_( 'secure_ssl' ), 0 ); ! delete $form->{server}; delete $form->{update_server}; $p->config_('secure_ssl', $old_config_value ); --- 398,406 ---- ($status, $error) = $p->validate_item( 'pop3_chain', $templ, $language, $form ); ! test_assert_equal( $status, "not use SSL connections\n" ); test_assert( !defined( $error ) ); test_assert_equal( $p->config_( 'secure_ssl' ), 0 ); ! delete $form->{sssl}; delete $form->{update_server}; $p->config_('secure_ssl', $old_config_value ); Index: TestConfiguration.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestConfiguration.tst,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** TestConfiguration.tst 17 Apr 2008 15:13:05 -0000 1.26 --- TestConfiguration.tst 25 Apr 2008 16:26:50 -0000 1.27 *************** *** 119,122 **** --- 119,126 ---- open FILE, "<popfile.cfg"; my $line = <FILE>; + test_assert_regexp( $line, 'GLOBAL_ca_file ./certs/ca.pem' ); + $line = <FILE>; + test_assert_regexp( $line, 'GLOBAL_cert_file ./certs/server-cert.pem' ); + $line = <FILE>; test_assert_regexp( $line, 'GLOBAL_crypt_device ' ); $line = <FILE>; *************** *** 125,128 **** --- 129,134 ---- test_assert_regexp( $line, 'GLOBAL_debug 0' ); $line = <FILE>; + test_assert_regexp( $line, 'GLOBAL_key_file ./certs/server-key.pem' ); + $line = <FILE>; test_assert_regexp( $line, 'GLOBAL_language English' ); $line = <FILE>; Index: TestBayes.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestBayes.tst,v retrieving revision 1.64 retrieving revision 1.65 diff -C2 -d -r1.64 -r1.65 *** TestBayes.tst 16 Apr 2008 13:08:05 -0000 1.64 --- TestBayes.tst 25 Apr 2008 16:26:49 -0000 1.65 *************** *** 57,60 **** --- 57,61 ---- my $l = $POPFile->get_module( 'POPFile/Logger' ); + $l->config_( 'level', 1 ); $b->module_config_( 'pop3', 'port', 9110 ); *************** *** 143,152 **** --- 144,159 ---- my $session2 = $b->get_session_key_from_token( $session, 'smtp', 'token' ); test_assert( $b->is_admin_session( $session2 ) ); + $b->release_session_key( $session2 ); $session2 = $b->get_session_key_from_token( $session, 'nntp', 'token' ); test_assert( $b->is_admin_session( $session2 ) ); + $b->release_session_key( $session2 ); $session2 = $b->get_session_key_from_token( $session, 'pop', 'token' ); test_assert( $b->is_admin_session( $session2 ) ); + $b->release_session_key( $session2 ); $session2 = $b->get_session_key_from_token( $session, 'pop3', 'token' ); test_assert( $b->is_admin_session( $session2 ) ); + $b->release_session_key( $session2 ); + + # Multi user mode $b->global_config_( 'single_user', 0 ); *************** *** 154,161 **** --- 161,171 ---- $session2 = $b->get_session_key_from_token( $session, 'smtp', 'token' ); test_assert( $b->is_admin_session( $session2 ) ); + $b->release_session_key( $session2 ); $session2 = $b->get_session_key_from_token( $session, 'nntp', 'token' ); test_assert( $b->is_admin_session( $session2 ) ); + $b->release_session_key( $session2 ); $session2 = $b->get_session_key_from_token( $session, 'pop', 'token' ); test_assert( $b->is_admin_session( $session2 ) ); + $b->release_session_key( $session2 ); $session2 = $b->get_session_key_from_token( $session, 'pop3', 'token' ); test_assert( !defined( $session2 ) ); *************** *** 185,188 **** --- 195,199 ---- $session1 = $b->get_session_key_from_token( $session, 'pop3', 'example.com:testuser' ); test_assert( defined( $session1 ) ); + $b->release_session_key( $session1 ); $session1 = $b->get_session_key_from_token( $session, 'pop3', 'fooz:bar' ); *************** *** 191,194 **** --- 202,206 ---- $session1 = $b->get_session_key_from_token( $session, 'pop3', 'foo:bar' ); test_assert( defined( $session1 ) ); + $b->release_session_key( $session1 ); $b->module_config_( 'pop3', 'secure_server', '' ); *************** *** 279,282 **** --- 291,327 ---- test_assert( !defined($b->get_user_name_from_session( -1 )) ); + # get_current_sessions + + $POPFile->CORE_service(1); + + my $active_sessions = $b->get_current_sessions( $session ); + test_assert( defined($active_sessions) ); + test_assert_equal( $#{$active_sessions}, 1 ); + + foreach my $active_session ( @{$active_sessions} ) { + if ( $active_session->{userid} eq 1 ) { + test_assert_equal( $active_session->{session}, $session ); + } elsif ( $active_session->{userid} eq $id1 ) { + test_assert_equal( $active_session->{session}, $session1 ); + } else { + test_assert( 0 ); + } + test_assert( defined($active_session->{lastused}) ); + } + + # timeout test + + $session2 = $b->get_session_key_from_token( $session, 'smtp', 'token' ); + + $active_sessions = $b->get_current_sessions( $session ); + test_assert_equal( $#{$active_sessions}, 2 ); + + $b->{api_sessions__}{$session2}{lastused} = 0; # expired + $POPFile->CORE_service(1); + $POPFile->CORE_service(1); + + $active_sessions = $b->get_current_sessions( $session ); + test_assert_equal( $#{$active_sessions}, 1 ); + # create_user with cloning admin *************** *** 902,905 **** --- 947,951 ---- while ( <OUTPUT> ) { my $output_line = $_; + next if ( $output_line =~ /^X-POPFile-TimeoutPrevension:/ ); my $cam_line = <CAM> || ''; $output_line =~ s/[\r\n]//g; Index: TestProxy.tst =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestProxy.tst,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** TestProxy.tst 9 Apr 2008 17:20:48 -0000 1.27 --- TestProxy.tst 25 Apr 2008 16:26:50 -0000 1.28 *************** *** 659,662 **** --- 659,663 ---- #$b->stop(); + $POPFile->CORE_stop(); 1; |
From: naoki i. <am...@us...> - 2008-04-25 16:26:53
|
Update of /cvsroot/popfile/engine/UI In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20326/UI Modified Files: HTML.pm HTTP.pm XMLRPC.pm Log Message: Change Log 1. UI and POP3 proxy are now able to be connected via SSL 2. New Proxy module 'Proxy::POP3S' (POP3 over SSL) 3. New global options: GLOBAL_cert_file, GLOBAL_key_file, GLOBAL_ca_file 4. New html options: html_https_enabled, html_https_port 5. Secure cookies are used when accessed to the HTTPS server Proxy/POP3S.pm Proxy/POP3.pm Proxy/Proxy.pm UI/HTML.pm UI/HTTP.pm POPFile/Configuration.pm Classifier/Bayes.pm skins/default/pop3s-configuration-panel.thtml skins/default/pop3s-security-panel.thtml tests/Configuration.tst The new Proxy::POP3S module supports connections via SSL. It has following options: pop3s_enabled Enable(=1)/Disable(=0;default) the module pop3s_force_fork Enable(=1)/Disable(=0) forking pop3s_local Allow(=1)/Disallow(=0) connections from remote pop3s_port POP3S proxy port(default:995) pop3s_socks_port SOCKS proxy port pop3s_socks_server SOCKS proxy server pop3s_welcome_string POP3S proxy welcome string The other POP3 options (e.g. pop3_separator) are same as the Proxy::POP3 module. Here's the new options of the UI::HTML module: html_https_enabled Enable(=1)/Disable(=0;default) the HTTPS server html_https_port HTTPS server port(default:8443) The new global options: GLOBAL_cert_file Location of the certification file of the server GLOBAL_key_file Location of the key file of the server GLOBAL_ca_file Location of the CA file NOTE: I've implemented POP3S and the HTTPS in the different way. I've made a new module Proxy::POP3S for POP3S, but I don't make the module for HTTPS. This is because I think making the new module for HTTPS ( UI:HTTPS ? ) is very hard. BUG: Concurrent POP3S connections cause an error in some environment: SSL3 alert write:fatal:bad record mac 7664:error:1408F119:SSL routines:SSL3_GET_RECORD:decryption failed or bad record mac:s3_pkt.c:424: 6. AUTH PLAIN support Proxy/POP3.pm 7. Supress the verbose status messages on the administration tab 8. Add some status messages (administration tab) UI/HTML.pm UI/XMLRPC.pm Proxy/Proxy.pm Proxy/POP3.pm Proxy/NNTP.pm Proxy/SMTP.pm languages/English.msg languages/Nihongo.msg tests/TestPOP3.tst tests/TestHTML.script 9. The message files are no longer cached by the web browser UI/HTTP.pm 10. if html_allow_javascript == 0, don't disable the radio buttons skins/default/administration-page.thtml skins/default/pop3-security-panel.thtml skins/default/nntp-security-local.thtml skins/default/smtp-security-local.thtml skins/default/xmlrpc-local.thtml 11. Minor updates of the skins skins/smtp-chain-server.thtml skins/smtp-chain-server-port.thtml (merged to the above file) skins/pop3-chain-panel.thtml 12. Source code cleanup UI/HTML.pm UI/HTTP.pm UI/XMLRPC.pm Proxy/POP3.pm Proxy/Proxy.pm Proxy/NNTP.pm Proxy/SMTP.pm Classifier/Bayes.pm Classifier/MailParse.pm POPFile/Configuration.pm POPFile/Database.pm POPFile/History.pm POPFile/Loader.pm POPFile/Logger.pm POPFile/Module.pm POPFile/MQ.pm POPFile/Mutex.pm Add some 'PROFILE BLOCK START' and 'PROFILE BLOCK STOP's. These are used by Devel::TestCoverage to get the correct coverage. 13. Add some tests tests/TestBayes.tst Current state of the test suite: TestBayesScript PASS TestBayes PASS TestConfiguration PASS * TestHistory PASS TestHTML PASS * TestHTTP PASS TestIMAP PASS TestInsertScript PASS * TestLogger PASS TestMailParse PASS TestModule PASS TestMQ PASS TestMutex PASS TestPipeScript PASS TestPOP3 PASS TestProxy PASS TestWordMangle PASS TestXMLRPC PASS * : TODO : needs to add tests for multi user support Index: HTML.pm =================================================================== RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v retrieving revision 1.391 retrieving revision 1.392 diff -C2 -d -r1.391 -r1.392 *** HTML.pm 18 Apr 2008 12:41:49 -0000 1.391 --- HTML.pm 25 Apr 2008 16:26:27 -0000 1.392 *************** *** 71,75 **** my $euc_jp = "(?:$ascii|$two_bytes_euc_jp|$three_bytes_euc_jp)"; ! my %headers_table = ( 'from', 'From', # PROFILE BLOCK START 'to', 'To', 'cc', 'Cc', --- 71,75 ---- my $euc_jp = "(?:$ascii|$two_bytes_euc_jp|$three_bytes_euc_jp)"; ! my %headers_table = ( 'from', 'From', # PROFILE BLOCK START 'to', 'To', [...2428 lines suppressed...] $self->{skin_root} = $root; --- 4045,4049 ---- 'Header_If_SingleUser' => $self->global_config_( 'single_user' ), ! ); # PROFILE BLOCK STOP $self->{skin_root} = $root; *************** *** 4087,4091 **** $count++; next; ! } unless ( !defined($self->{form_}{$field}) || ( $self->{form_}{$field} eq '' ) ) { $formstring .= "$amp" if ($count > 0); --- 4284,4288 ---- $count++; next; ! } unless ( !defined($self->{form_}{$field}) || ( $self->{form_}{$field} eq '' ) ) { $formstring .= "$amp" if ($count > 0); Index: XMLRPC.pm =================================================================== RCS file: /cvsroot/popfile/engine/UI/XMLRPC.pm,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** XMLRPC.pm 18 Apr 2008 12:41:49 -0000 1.24 --- XMLRPC.pm 25 Apr 2008 16:26:27 -0000 1.25 *************** *** 110,122 **** # item that needs a UI component ! $self->register_configuration_item_( 'configuration', 'xmlrpc_port', 'xmlrpc-port.thtml', ! $self ); ! $self->register_configuration_item_( 'security', 'xmlrpc_local', 'xmlrpc-local.thtml', ! $self ); # We use a single XMLRPC::Lite object to handle requests for access to the --- 110,122 ---- # item that needs a UI component ! $self->register_configuration_item_( 'configuration', # PROFILE BLOCK START 'xmlrpc_port', 'xmlrpc-port.thtml', ! $self ); # PROFILE BLOCK STOP ! $self->register_configuration_item_( 'security', # PROFILE BLOCK START 'xmlrpc_local', 'xmlrpc-local.thtml', ! $self ); # PROFILE BLOCK STOP # We use a single XMLRPC::Lite object to handle requests for access to the *************** *** 285,291 **** if ( $name eq 'xmlrpc_port' ) { if ( defined($$form{xmlrpc_port}) ) { ! if ( ( $$form{xmlrpc_port} =~ /^\d+$/ ) && ( $$form{xmlrpc_port} >= 1 ) && ( $$form{xmlrpc_port} < 65536 ) ) { ! $self->config_( 'port', $$form{xmlrpc_port} ); ! $status = sprintf( $$language{Configuration_XMLRPCUpdate}, $self->config_( 'port' ) ); } else { $error = $$language{Configuration_Error7}; --- 285,297 ---- if ( $name eq 'xmlrpc_port' ) { if ( defined($$form{xmlrpc_port}) ) { ! if ( ( $$form{xmlrpc_port} =~ /^\d+$/ ) && # PROFILE BLOCK START ! ( $$form{xmlrpc_port} >= 1 ) && ! ( $$form{xmlrpc_port} < 65536 ) ) { # PROFILE BLOCK STOP ! if ( $self->config_( 'port' ) ne $$form{xmlrpc_port} ) { ! $self->config_( 'port', $$form{xmlrpc_port} ); ! $status = sprintf( # PROFILE BLOCK START ! $$language{Configuration_XMLRPCUpdate}, ! $self->config_( 'port' ) ); # PROFILE BLOCK STOP ! } } else { $error = $$language{Configuration_Error7}; *************** *** 296,305 **** if ( $name eq 'xmlrpc_local' ) { if ( $$form{serveropt_xmlrpc} ) { ! $self->config_( 'local', 0 ); ! $status = $$language{Security_ServerModeUpdateXMLRPC}; } else { ! $self->config_( 'local', 1 ); ! $status = $$language{Security_StealthModeUpdateXMLRPC}; } --- 302,315 ---- if ( $name eq 'xmlrpc_local' ) { if ( $$form{serveropt_xmlrpc} ) { ! if ( $self->config_( 'local' ) ne 0 ) { ! $self->config_( 'local', 0 ); ! $status = $$language{Security_ServerModeUpdateXMLRPC}; ! } } else { ! if ( $self->config_( 'local' ) ne 1 ) { ! $self->config_( 'local', 1 ); ! $status = $$language{Security_StealthModeUpdateXMLRPC}; ! } } Index: HTTP.pm =================================================================== RCS file: /cvsroot/popfile/engine/UI/HTTP.pm,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** HTTP.pm 17 Apr 2008 15:13:05 -0000 1.40 --- HTTP.pm 25 Apr 2008 16:26:27 -0000 1.41 *************** *** 73,77 **** my ( $self ) = @_; ! $self->{server_} = IO::Socket::INET->new( Proto => 'tcp', # PROFILE BLOCK START $self->config_( 'local' ) == 1 ? (LocalAddr => 'localhost') : (), LocalPort => $self->config_( 'port' ), --- 73,90 ---- my ( $self ) = @_; ! if ( $self->config_( 'https_enabled' ) ) { ! require IO::Socket::SSL; ! ! $self->{server_}{https} = IO::Socket::SSL->new( Proto => 'tcp', # PROFILE BLOCK START ! $self->config_( 'local' ) == 1 ? (LocalAddr => 'localhost') : (), ! LocalPort => $self->config_( 'https_port' ), ! Listen => SOMAXCONN, ! SSL_cert_file => $self->get_user_path_( $self->global_config_( 'cert_file' ) ), ! SSL_key_file => $self->get_user_path_( $self->global_config_( 'key_file' ) ), ! SSL_ca_file => $self->get_user_path_( $self->global_config_( 'ca_file' ) ), ! Reuse => 1 ); # PROFILE BLOCK STOP ! } ! ! $self->{server_}{http} = IO::Socket::INET->new( Proto => 'tcp', # PROFILE BLOCK START $self->config_( 'local' ) == 1 ? (LocalAddr => 'localhost') : (), LocalPort => $self->config_( 'port' ), *************** *** 79,89 **** Reuse => 1 ); # PROFILE BLOCK STOP ! if ( !defined( $self->{server_} ) ) { ! my $port = $self->config_( 'port' ); my $name = $self->name(); print STDERR <<EOM; # PROFILE BLOCK START ! \nCouldn't start the $name HTTP interface because POPFile could not bind to the ! HTTP port $port. This could be because there is another service using that port or because you do not have the right privileges on your system (On Unix systems this can happen if you are not root --- 92,112 ---- Reuse => 1 ); # PROFILE BLOCK STOP ! if ( !defined( $self->{server_}{http} ) || # PROFILE BLOCK START ! ( $self->config_( 'https_enabled' ) && ! !defined( $self->{server_}{https} ) ) ) { # PROFILE BLOCK STOP ! my ( $port, $protocol ); ! ! if ( !defined( $self->{server_}{http} ) ) { ! $port = $self->config_( 'port' ); ! $protocol = 'HTTP'; ! } else { ! $port = $self->config_( 'https_port' ); ! $protocol = 'HTTPS'; ! } my $name = $self->name(); print STDERR <<EOM; # PROFILE BLOCK START ! \nCouldn't start the $name $protocol interface because POPFile could not bind to the ! $protocol port $port. This could be because there is another service using that port or because you do not have the right privileges on your system (On Unix systems this can happen if you are not root *************** *** 96,100 **** } ! $self->{selector_} = new IO::Select( $self->{server_} ); # Think of an encryption key for encrypting cookies using Blowfish --- 119,125 ---- } ! foreach my $protocol ( keys %{$self->{server_}} ) { ! $self->{selector_}{$protocol} = new IO::Select( $self->{server_}{$protocol} ); ! } # Think of an encryption key for encrypting cookies using Blowfish *************** *** 103,113 **** $self->log_( 1, "Generating random octet using $module" ); ! my $key = $self->random_()->generate_random_string( $module, 56, $self->global_config_( 'crypt_strength' ), $self->global_config_( 'crypt_devide' ) ! ); ! $self->{crypto__} = new Crypt::CBC( { 'key' => $key, 'cipher' => 'Blowfish', 'padding' => 'standard', --- 128,138 ---- $self->log_( 1, "Generating random octet using $module" ); ! my $key = $self->random_()->generate_random_string( # PROFILE BLOCK START $module, 56, $self->global_config_( 'crypt_strength' ), $self->global_config_( 'crypt_devide' ) ! ); # PROFILE BLOCK STOP ! $self->{crypto__} = new Crypt::CBC( { 'key' => $key, # PROFILE BLOCK START 'cipher' => 'Blowfish', 'padding' => 'standard', *************** *** 115,119 **** 'regenerate_key' => 0, 'salt' => 1, ! 'header' => 'salt', } ); return 1; --- 140,144 ---- 'regenerate_key' => 0, 'salt' => 1, ! 'header' => 'salt', } ); # PROFILE BLOCK STOP return 1; *************** *** 131,135 **** my ( $self ) = @_; ! close $self->{server_} if ( defined( $self->{server_} ) ); $self->SUPER::stop(); --- 156,164 ---- my ( $self ) = @_; ! if ( defined( $self->{server__} ) ) { ! foreach my $protocol ( keys %{$self->{server_}} ) { ! close $self->{server_}{$protocol}; ! } ! } $self->SUPER::stop(); *************** *** 152,230 **** # accept it handle a single request and then exit ! my ( $ready ) = $self->{selector_}->can_read(0); ! # Handle HTTP requests for the UI ! if ( ( defined( $ready ) ) && ( $ready == $self->{server_} ) ) { ! if ( my $client = $self->{server_}->accept() ) { ! # Check that this is a connection from the local machine, ! # if it's not then we drop it immediately without any ! # further processing. We don't want to allow remote users ! # to admin POPFile ! my ( $remote_port, $remote_host ) = sockaddr_in( $client->peername() ); ! if ( ( $self->config_( 'local' ) == 0 ) || # PROFILE BLOCK START ! ( $remote_host eq inet_aton( "127.0.0.1" ) ) ) { # PROFILE BLOCK STOP ! # Read the request line (GET or POST) from the client ! # and if we manage to do that then read the rest of ! # the HTTP headers grabbing the Content-Length and ! # using it to read any form POST content into $content ! $client->autoflush(1); ! if ( ( defined( $client ) ) && ! ( my $request = $self->slurp_( $client ) ) ) { ! my $content_length = 0; ! my $content; ! my $cookie = ''; ! $self->log_( 2, $request ); ! while ( my $line = $self->slurp_( $client ) ) { ! $cookie = $1 if ( $line =~ /Cookie: (.+)/ ); ! $content_length = $1 if ( $line =~ /Content-Length: (\d+)/i ); ! # Discovered that Norton Internet Security was ! # adding HTTP headers of the form ! # ! # ~~~~~~~~~~~~~~: ~~~~~~~~~~~~~ ! # ! # which we were not recognizing as valid ! # (surprise, surprise) and this was messing ! # about our handling of POST data. Changed ! # the end of header identification to any line ! # that does not contain a : ! last if ( $line !~ /:/ ); ! } ! if ( $content_length > 0 ) { ! $content = $self->slurp_buffer_( $client, ! $content_length ); ! $self->log_( 2, $content ); ! } ! # Handle decryption of a cookie header ! $cookie = $self->decrypt_cookie__( $cookie ); ! if ( $request =~ /^(GET|POST) (.*) HTTP\/1\./i ) { ! $code = $self->handle_url( $client, $2, $1, ! $content, $cookie ); ! $self->log_( 2, ! "HTTP handle_url returned code $code\n" ); ! } else { ! $self->http_error_( $client, 500 ); } } - } ! $self->log_( 2, "Close HTTP connection on $client\n" ); ! $self->done_slurp_( $client ); ! close $client; } } --- 181,263 ---- # accept it handle a single request and then exit ! foreach my $protocol ( keys %{$self->{server_}} ) { ! my ( $ready ) = $self->{selector_}{$protocol}->can_read(0); ! # Handle HTTP requests for the UI ! if ( ( defined( $ready ) ) && ( $ready == $self->{server_}{$protocol} ) ) { ! if ( my $client = $self->{server_}{$protocol}->accept() ) { ! # Check that this is a connection from the local machine, ! # if it's not then we drop it immediately without any ! # further processing. We don't want to allow remote users ! # to admin POPFile ! my ( $remote_port, $remote_host ) = sockaddr_in( $client->peername() ); ! if ( ( $self->config_( 'local' ) == 0 ) || # PROFILE BLOCK START ! ( $remote_host eq inet_aton( "127.0.0.1" ) ) ) { # PROFILE BLOCK STOP ! # Read the request line (GET or POST) from the client ! # and if we manage to do that then read the rest of ! # the HTTP headers grabbing the Content-Length and ! # using it to read any form POST content into $content ! $client->autoflush(1); ! if ( ( defined( $client ) ) && # PROFILE BLOCK START ! ( my $request = $self->slurp_( $client ) ) ) { # PROFILE BLOCK STOP ! my $content_length = 0; ! my $content; ! my $cookie = ''; ! $self->log_( 2, $request ); ! while ( my $line = $self->slurp_( $client ) ) { ! $cookie = $1 if ( $line =~ /Cookie: (.+)/ ); ! $content_length = $1 if ( $line =~ /Content-Length: (\d+)/i ); ! # Discovered that Norton Internet Security was ! # adding HTTP headers of the form ! # ! # ~~~~~~~~~~~~~~: ~~~~~~~~~~~~~ ! # ! # which we were not recognizing as valid ! # (surprise, surprise) and this was messing ! # about our handling of POST data. Changed ! # the end of header identification to any line ! # that does not contain a : ! last if ( $line !~ /:/ ); ! } ! if ( $content_length > 0 ) { ! $content = $self->slurp_buffer_( $client, # PROFILE BLOCK START ! $content_length ); # PROFILE BLOCK STOP ! $self->log_( 2, $content ); ! } ! # Handle decryption of a cookie header ! $cookie = $self->decrypt_cookie__( $cookie ); ! ! if ( $request =~ /^(GET|POST) (.*) HTTP\/1\./i ) { ! $code = $self->handle_url( $client, $2, $1, # PROFILE BLOCK START ! $content, $cookie ); # PROFILE BLOCK STOP ! $self->log_( 2, # PROFILE BLOCK START ! "HTTP handle_url returned code $code\n" ); # PROFILE BLOCK STOP ! } else { ! $self->http_error_( $client, 500 ); ! } } } ! $self->log_( 2, "Close HTTP connection on $client\n" ); ! $self->done_slurp_( $client ); ! close $client; ! } } + } *************** *** 245,249 **** $self->SUPER::forked( $writer ); ! close $self->{server_}; } --- 278,284 ---- $self->SUPER::forked( $writer ); ! foreach my $protocol ( keys %{$self->{server_}} ) { ! close $self->{server_}{$protocol}; ! } } *************** *** 263,268 **** my ( $self, $client, $url, $command, $content, $cookie ) = @_; ! return $self->{url_handler_}( $self, $client, $url, $command, ! $content, $cookie ); } --- 298,303 ---- my ( $self, $client, $url, $command, $content, $cookie ) = @_; ! return $self->{url_handler_}( $self, $client, $url, $command, # PROFILE BLOCK START ! $content, $cookie ); # PROFILE BLOCK STOP } *************** *** 427,431 **** $self->log_( 0, "HTTP error $error returned" ); ! my $text="<html><head><title>POPFile Web Server Error $error</title></head> <body> <h1>POPFile Web Server Error $error</h1> --- 462,467 ---- $self->log_( 0, "HTTP error $error returned" ); ! my $text = # PROFILE BLOCK START ! "<html><head><title>POPFile Web Server Error $error</title></head> <body> <h1>POPFile Web Server Error $error</h1> *************** *** 434,438 **** Click <a href=\"/\">here</a> to continue. </body> ! </html>$eol"; $self->log_( 1, $text ); --- 470,474 ---- Click <a href=\"/\">here</a> to continue. </body> ! </html>$eol"; # PROFILE BLOCK STOP $self->log_( 1, $text ); *************** *** 482,487 **** my $header = "HTTP/1.0 200 OK$eol"; $header .= "Content-Type: $type$eol"; ! if ( $file =~ /\.log$/ ) { ! # The log files should not been cached $header .= "Pragma: no-cache$eol"; --- 518,523 ---- my $header = "HTTP/1.0 200 OK$eol"; $header .= "Content-Type: $type$eol"; ! if ( $file =~ /\.log$/ || $file =~ /\.msg$/ ) { ! # The log/message files should not been cached $header .= "Pragma: no-cache$eol"; *************** *** 516,521 **** my @day = ( 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ); ! my @month = ( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', ! 'Sep', 'Oct', 'Nov', 'Dec' ); my $zulu = time; $zulu += 60 * 60 * $hours; --- 552,557 ---- my @day = ( 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ); ! my @month = ( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', # PROFILE BLOCK START ! 'Sep', 'Oct', 'Nov', 'Dec' ); # PROFILE BLOCK STOP my $zulu = time; $zulu += 60 * 60 * $hours; |
From: Brian S. <xue...@us...> - 2008-04-25 13:44:10
|
Update of /cvsroot/popfile/windows In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29710 Modified Files: Tag: b0_22_2 installer-SecPOPFile-body.nsh installer.nsi Log Message: The release notes should be marked as READ-ONLY to prevent them from being modified while they are being displayed (oops!) Index: installer-SecPOPFile-body.nsh =================================================================== RCS file: /cvsroot/popfile/windows/installer-SecPOPFile-body.nsh,v retrieving revision 1.3.2.20 retrieving revision 1.3.2.21 diff -C2 -d -r1.3.2.20 -r1.3.2.21 *** installer-SecPOPFile-body.nsh 8 Feb 2008 14:48:48 -0000 1.3.2.20 --- installer-SecPOPFile-body.nsh 25 Apr 2008 13:44:14 -0000 1.3.2.21 *************** *** 192,195 **** --- 192,196 ---- copy_txt_version: + SetFileAttributes "$G_ROOTDIR\${C_README}" READONLY CopyFiles /SILENT /FILESONLY "$PLUGINSDIR\${C_README}.txt" "$G_ROOTDIR\${C_README}.txt" Index: installer.nsi =================================================================== RCS file: /cvsroot/popfile/windows/installer.nsi,v retrieving revision 1.242.4.27 retrieving revision 1.242.4.28 diff -C2 -d -r1.242.4.27 -r1.242.4.28 *** installer.nsi 18 Apr 2008 22:09:02 -0000 1.242.4.27 --- installer.nsi 25 Apr 2008 13:44:14 -0000 1.242.4.28 *************** *** 1034,1037 **** --- 1034,1038 ---- FileClose ${L_INPUT_FILE_HANDLE} FileClose ${L_OUTPUT_FILE_HANDLE} + SetFileAttributes "$PLUGINSDIR\${C_README}.txt" READONLY Pop ${L_TEMP} |
From: Manni H. <man...@us...> - 2008-04-21 14:12:57
|
Update of /cvsroot/popfile/windows/languages In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8836 Modified Files: Tag: b0_22_2 German-pfi.nsh Log Message: Updated the installer language strings for German Index: German-pfi.nsh =================================================================== RCS file: /cvsroot/popfile/windows/languages/German-pfi.nsh,v retrieving revision 1.48.4.7 retrieving revision 1.48.4.8 diff -C2 -d -r1.48.4.7 -r1.48.4.8 *** German-pfi.nsh 21 Apr 2008 14:09:45 -0000 1.48.4.7 --- German-pfi.nsh 21 Apr 2008 14:12:47 -0000 1.48.4.8 *************** *** 8,12 **** # These strings are grouped according to the page/window and script where they are used # ! # Copyright (c) 2003-2007 John Graham-Cumming # # This file is part of POPFile --- 8,12 ---- # These strings are grouped according to the page/window and script where they are used # ! # Copyright (c) 2003-2008 John Graham-Cumming # # This file is part of POPFile *************** *** 154,158 **** ; Installation Progress Reports displayed above the progress bar [installer.nsi, adduser.nsi] ! !insertmacro PFI_LANG_STRING PFI_LANG_INST_PROG_UPGRADE "Suche evtl. existierende ältere Versionen..." !insertmacro PFI_LANG_STRING PFI_LANG_INST_PROG_SHORT "Erzeuge Verknüpfungen..." !insertmacro PFI_LANG_STRING PFI_LANG_INST_PROG_LANGS "Installiere Sprachdateien..." --- 154,158 ---- ; Installation Progress Reports displayed above the progress bar [installer.nsi, adduser.nsi] ! !insertmacro PFI_LANG_STRING PFI_LANG_INST_PROG_UPGRADE "Suche nach installierten ältere Versionen..." !insertmacro PFI_LANG_STRING PFI_LANG_INST_PROG_SHORT "Erzeuge Verknüpfungen..." !insertmacro PFI_LANG_STRING PFI_LANG_INST_PROG_LANGS "Installiere Sprachdateien..." *************** *** 160,164 **** ; Installation Progress Reports displayed above the progress bar [installer.nsi, adduser.nsi, getssl.nsh] ! !insertmacro PFI_LANG_STRING PFI_LANG_INST_PROG_ENDSEC "Klicken Sie auf Weiter, um fortzufahren" ; Progress Reports displayed above the progress bar when downloading/installing SSL support [addssl.nsi, getssl.nsh] --- 160,164 ---- ; Installation Progress Reports displayed above the progress bar [installer.nsi, adduser.nsi, getssl.nsh] ! !insertmacro PFI_LANG_STRING PFI_LANG_INST_PROG_ENDSEC "Klicken Sie auf 'Weiter', um fortzufahren" ; Progress Reports displayed above the progress bar when downloading/installing SSL support [addssl.nsi, getssl.nsh] *************** *** 272,281 **** !insertmacro PFI_LANG_STRING DESC_SubSecOptional "Zusätzliche POPFile Komponenten (für fortgeschrittene Benutzer)" ! !insertmacro PFI_LANG_STRING DESC_SecIMAP "Installiert das POPFile IMAP Modul" ! !insertmacro PFI_LANG_STRING DESC_SecNNTP "Installiert POPFiles NNTP Proxy" ! !insertmacro PFI_LANG_STRING DESC_SecSMTP "Installiert POPFiles SMTP Proxy" ! !insertmacro PFI_LANG_STRING DESC_SecSOCKS "Installiert zusätzliche Perl Module, die es den POPFile Proxies erlauben, SOCKS zu verwenden" ! !insertmacro PFI_LANG_STRING DESC_SecSSL "Installiert zusätzliche Perl Module, mit deren Hilfe POPFile über eine SSL-gesicherte Verbindung mit dem Mail-Server kommunizieren kann." ! !insertmacro PFI_LANG_STRING DESC_SecXMLRPC "Installiert das POPFile XMLRPC Modul, das Zugriff zum POPFile-API erlaubt, und die benötigten Perl Komponenten" ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- 272,281 ---- !insertmacro PFI_LANG_STRING DESC_SubSecOptional "Zusätzliche POPFile Komponenten (für fortgeschrittene Benutzer)" ! !insertmacro PFI_LANG_STRING DESC_SecIMAP "Installiert das POPFile IMAP-Modul" ! !insertmacro PFI_LANG_STRING DESC_SecNNTP "Installiert POPFiles NNTP-Proxy" ! !insertmacro PFI_LANG_STRING DESC_SecSMTP "Installiert POPFiles SMTP-Proxy" ! !insertmacro PFI_LANG_STRING DESC_SecSOCKS "Installiert zusätzliche Perl-Module, die es den POPFile Proxies erlauben, SOCKS zu verwenden" ! !insertmacro PFI_LANG_STRING DESC_SecSSL "Installiert zusätzliche Perl-Module, mit deren Hilfe POPFile über eine SSL-gesicherte Verbindung mit dem Mail-Server kommunizieren kann." ! !insertmacro PFI_LANG_STRING DESC_SecXMLRPC "Installiert das POPFile XMLRPC-Modul, das Zugriff zum POPFile-API erlaubt, und die benötigten Perl Komponenten" ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *************** *** 286,290 **** !insertmacro PFI_LANG_STRING PFI_LANG_ROOTDIR_TITLE "Wählen Sie ein Verzeichnis für die Programminstallation" ! !insertmacro PFI_LANG_STRING PFI_LANG_ROOTDIR_TEXT_DESTN "Zielverzeichnis für das POPFile-Programm" ; Message box warnings used when verifying the installation folder chosen by user --- 286,290 ---- !insertmacro PFI_LANG_STRING PFI_LANG_ROOTDIR_TITLE "Wählen Sie ein Verzeichnis für die Programminstallation" ! !insertmacro PFI_LANG_STRING PFI_LANG_ROOTDIR_TEXT_DESTN "Zielverzeichnis für die POPFile Programmdateien" ; Message box warnings used when verifying the installation folder chosen by user *************** *** 328,337 **** !insertmacro PFI_LANG_STRING PFI_LANG_SUMMARY_OPTIONLIST "Folgende optionale POPFile Komponenten werden installiert:" !insertmacro PFI_LANG_STRING PFI_LANG_SUMMARY_NONE "(keine)" ! !insertmacro PFI_LANG_STRING PFI_LANG_SUMMARY_IMAP "IMAP Modul" ! !insertmacro PFI_LANG_STRING PFI_LANG_SUMMARY_NNTP "NNTP Proxy" ! !insertmacro PFI_LANG_STRING PFI_LANG_SUMMARY_SMTP "SMTP Proxy" ! !insertmacro PFI_LANG_STRING PFI_LANG_SUMMARY_SOCKS "SOCKS Unterstützung" ! !insertmacro PFI_LANG_STRING PFI_LANG_SUMMARY_SSL "SSL Unterstützung" ! !insertmacro PFI_LANG_STRING PFI_LANG_SUMMARY_XMLRPC "XMLRPC Modul" ; The last line in the summary explains how to change the installation selections --- 328,337 ---- !insertmacro PFI_LANG_STRING PFI_LANG_SUMMARY_OPTIONLIST "Folgende optionale POPFile Komponenten werden installiert:" !insertmacro PFI_LANG_STRING PFI_LANG_SUMMARY_NONE "(keine)" ! !insertmacro PFI_LANG_STRING PFI_LANG_SUMMARY_IMAP "IMAP-Modul" ! !insertmacro PFI_LANG_STRING PFI_LANG_SUMMARY_NNTP "NNTP-Proxy" ! !insertmacro PFI_LANG_STRING PFI_LANG_SUMMARY_SMTP "SMTP-Proxy" ! !insertmacro PFI_LANG_STRING PFI_LANG_SUMMARY_SOCKS "SOCKS-Unterstützung" ! !insertmacro PFI_LANG_STRING PFI_LANG_SUMMARY_SSL "SSL-Unterstützung" ! !insertmacro PFI_LANG_STRING PFI_LANG_SUMMARY_XMLRPC "XMLRPC-Modul" ; The last line in the summary explains how to change the installation selections *************** *** 353,357 **** !insertmacro PFI_LANG_STRING PFI_LANG_INST_PROG_PERL "Installiere Minimal-Perl-Umgebung..." !insertmacro PFI_LANG_STRING PFI_LANG_INST_PROG_SKINS "Installiere Skins..." ! !insertmacro PFI_LANG_STRING PFI_LANG_INST_PROG_XMLRPC "Installiere POPFile XMLRPC Dateien..." ; Message box used to get permission to delete the old minimal Perl before installing the new one --- 353,357 ---- !insertmacro PFI_LANG_STRING PFI_LANG_INST_PROG_PERL "Installiere Minimal-Perl-Umgebung..." !insertmacro PFI_LANG_STRING PFI_LANG_INST_PROG_SKINS "Installiere Skins..." ! !insertmacro PFI_LANG_STRING PFI_LANG_INST_PROG_XMLRPC "Installiere POPFile XMLRPC-Dateien..." ; Message box used to get permission to delete the old minimal Perl before installing the new one *************** *** 401,405 **** ; Page Sub-title displayed when MODIFYING the installation (one of the standard MUI strings is used for the Title) ! !insertmacro PFI_LANG_STRING PFI_LANG_UN_INST_SUBTITLE "Bitte warten Sie einen Moment währen $(^NameDA) auf den neuesten Stand gebracht wird" ; Page Title and Sub-Title shown instead of the default "Uninstallation complete..." page header --- 401,405 ---- ; Page Sub-title displayed when MODIFYING the installation (one of the standard MUI strings is used for the Title) ! !insertmacro PFI_LANG_STRING PFI_LANG_UN_INST_SUBTITLE "Bitte warten Sie einen Moment während $(^NameDA) auf den neuesten Stand gebracht wird" ; Page Title and Sub-Title shown instead of the default "Uninstallation complete..." page header *************** *** 411,415 **** !insertmacro PFI_LANG_STRING PFI_LANG_UN_INST_BAD_TITLE "Hinzufügen/Entfernen abgebrochen" ! !insertmacro PFI_LANG_STRING PFI_LANG_UN_INST_BAD_SUBTITLE "Hinzufügen/Entfernen wurde nicht beendet." ; Uninstall Progress Reports displayed above the progress bar --- 411,415 ---- !insertmacro PFI_LANG_STRING PFI_LANG_UN_INST_BAD_TITLE "Hinzufügen/Entfernen abgebrochen" ! !insertmacro PFI_LANG_STRING PFI_LANG_UN_INST_BAD_SUBTITLE "Hinzufügen/Entfernen wurde nicht abgeschlossen." ; Uninstall Progress Reports displayed above the progress bar *************** *** 421,425 **** ; Uninstall Log Messages ! !insertmacro PFI_LANG_STRING PFI_LANG_UN_LOG_SHUTDOWN "Beende POPFile am Port" !insertmacro PFI_LANG_STRING PFI_LANG_UN_LOG_DELROOTDIR "Alle Dateien im POPFile-Verzeichnis löschen" !insertmacro PFI_LANG_STRING PFI_LANG_UN_LOG_DELROOTERR "Hinweis: Es konnten nicht alle Dateien im POPFile-Verzeichnis gelöscht werden" --- 421,425 ---- ; Uninstall Log Messages ! !insertmacro PFI_LANG_STRING PFI_LANG_UN_LOG_SHUTDOWN "Beende POPFile an Port" !insertmacro PFI_LANG_STRING PFI_LANG_UN_LOG_DELROOTDIR "Alle Dateien im POPFile-Verzeichnis löschen" !insertmacro PFI_LANG_STRING PFI_LANG_UN_LOG_DELROOTERR "Hinweis: Es konnten nicht alle Dateien im POPFile-Verzeichnis gelöscht werden" *************** *** 427,431 **** ; Message Box text strings ! !insertmacro PFI_LANG_STRING PFI_LANG_UN_MBREMDIR_1 "Wollen Sie alle Dateien im POPFile-Verzeichnis löschen?${MB_NL}${MB_NL}$G_ROOTDIR${MB_NL}${MB_NL}(Wenn Sie dort irgendetwas gespeichert haben, was sie behalten möchten, wählen Sie Nein)" ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- 427,431 ---- ; Message Box text strings ! !insertmacro PFI_LANG_STRING PFI_LANG_UN_MBREMDIR_1 "Wollen Sie alle Dateien im POPFile-Verzeichnis löschen?${MB_NL}${MB_NL}$G_ROOTDIR${MB_NL}${MB_NL}(Wenn Sie selbst dort irgendetwas gespeichert haben, was sie behalten möchten, wählen Sie Nein)" ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *************** *** 451,455 **** !insertmacro PFI_LANG_STRING PSS_LANG_LICENSE_SUBHDR "Bitte sehen Sie sich die Lizenzbedingunden an, bevor Sie $(^NameDA) benutzen." ! !insertmacro PFI_LANG_STRING PSS_LANG_LICENSE_BOTTOM "Wenn Sie mit den Bedinungen einverstanden sind, dann kreuzen Sie bitte das Kästchen unten an. Sie müssen die Bedingungen akzeptieren, um $(^NameDA) zu benutzen. $_CLICK" ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- 451,455 ---- !insertmacro PFI_LANG_STRING PSS_LANG_LICENSE_SUBHDR "Bitte sehen Sie sich die Lizenzbedingunden an, bevor Sie $(^NameDA) benutzen." ! !insertmacro PFI_LANG_STRING PSS_LANG_LICENSE_BOTTOM "Wenn Sie mit den Bedingungen einverstanden sind, dann kreuzen Sie bitte das Kästchen unten an. Sie müssen die Bedingungen akzeptieren, um $(^NameDA) zu benutzen. $_CLICK" ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *************** *** 458,463 **** !insertmacro PFI_LANG_STRING PSS_LANG_DESTNDIR_TITLE "Wählen Sie die bestehende POPFile 0.22 (oder höher) Installation" ! !insertmacro PFI_LANG_STRING PSS_LANG_DESTNDIR_SUBTITLE "SSL-Unterstützung solle nur zu einer bestehenden POPFile-Installation hinzugefügt werden" ! !insertmacro PFI_LANG_STRING PSS_LANG_DESTNDIR_TEXT_TOP "Die SSL-Unterstützung muss in den gleichen Ordner installiert werden wie das POPFile Programm${MB_NL}${MB_NL}Die SSL-Unterstützung wird zu dem POPFile Programm hinzugefügt werden, das im folgenden Ordner installiert ist. Um sie in einen anderen Ordner zu installieren, klicken Sie auf 'Auswählen' und wählen Sie den gewünschten Ordner aus. $_CLICK" !insertmacro PFI_LANG_STRING PSS_LANG_DESTNDIR_TEXT_DESTN "Ordner der bestehenden POPFile-Installation (0.22 oder höher)" --- 458,463 ---- !insertmacro PFI_LANG_STRING PSS_LANG_DESTNDIR_TITLE "Wählen Sie die bestehende POPFile 0.22 (oder höher) Installation" ! !insertmacro PFI_LANG_STRING PSS_LANG_DESTNDIR_SUBTITLE "SSL-Unterstützung sollte nur zu einer bestehenden POPFile-Installation hinzugefügt werden" ! !insertmacro PFI_LANG_STRING PSS_LANG_DESTNDIR_TEXT_TOP "Die SSL-Unterstützung muss in den gleichen Ordner installiert werden wie das POPFile Programm${MB_NL}${MB_NL}Die SSL-Unterstützung wird zu den POPFile Programmdateien hinzugefügt werden, das im folgenden Ordner installiert ist. Um sie in einen anderen Ordner zu installieren, klicken Sie auf 'Auswählen' und wählen Sie den gewünschten Ordner aus. $_CLICK" !insertmacro PFI_LANG_STRING PSS_LANG_DESTNDIR_TEXT_DESTN "Ordner der bestehenden POPFile-Installation (0.22 oder höher)" *************** *** 494,498 **** ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! !insertmacro PFI_LANG_STRING PSS_LANG_FINISH_TITLE "Completing the $(^NameDA) Wizard" !insertmacro PFI_LANG_STRING PSS_LANG_FINISH_TEXT "SSL-Unterstützung für POPFile wurde installliert.${IO_NL}${IO_NL}Sie können jetzt POPFile starten und für eine SSL-Verbindung konfigurieren.${IO_NL}${IO_NL}Klicken Sie auf 'Fertigstellen', um den Assistenten zu beenden." --- 494,498 ---- ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! !insertmacro PFI_LANG_STRING PSS_LANG_FINISH_TITLE "Der $(^NameDA) Assistent wird vervollständigt" !insertmacro PFI_LANG_STRING PSS_LANG_FINISH_TEXT "SSL-Unterstützung für POPFile wurde installliert.${IO_NL}${IO_NL}Sie können jetzt POPFile starten und für eine SSL-Verbindung konfigurieren.${IO_NL}${IO_NL}Klicken Sie auf 'Fertigstellen', um den Assistenten zu beenden." *************** *** 683,687 **** !insertmacro PFI_LANG_STRING PFI_LANG_OPTIONS_MBPOP3_A "Der POP3-Port kann nicht übernommen werden. '$G_POP3'." ! !insertmacro PFI_LANG_STRING PFI_LANG_OPTIONS_MBPOP3_B "Der Port muß eine Zahl zwischen 1 und 65535 sein." !insertmacro PFI_LANG_STRING PFI_LANG_OPTIONS_MBPOP3_C "Bitte korrigieren Sie ihre Eingabe für den POP3-Port." --- 683,687 ---- !insertmacro PFI_LANG_STRING PFI_LANG_OPTIONS_MBPOP3_A "Der POP3-Port kann nicht übernommen werden. '$G_POP3'." ! !insertmacro PFI_LANG_STRING PFI_LANG_OPTIONS_MBPOP3_B "Der Port muss eine Zahl zwischen 1 und 65535 sein." !insertmacro PFI_LANG_STRING PFI_LANG_OPTIONS_MBPOP3_C "Bitte korrigieren Sie ihre Eingabe für den POP3-Port." *************** *** 691,695 **** !insertmacro PFI_LANG_STRING PFI_LANG_OPTIONS_MBGUI_A "Der Port für die Benutzeroberfläche kann nicht übernommen werden. '$G_GUI'." ! !insertmacro PFI_LANG_STRING PFI_LANG_OPTIONS_MBGUI_B "Der Port muß eine Zahl zwischen 1 und 65535 sein." !insertmacro PFI_LANG_STRING PFI_LANG_OPTIONS_MBGUI_C "Bitte korrigieren Sie ihre Eingabe für den Port für die Benutzeroberfläche." --- 691,695 ---- !insertmacro PFI_LANG_STRING PFI_LANG_OPTIONS_MBGUI_A "Der Port für die Benutzeroberfläche kann nicht übernommen werden. '$G_GUI'." ! !insertmacro PFI_LANG_STRING PFI_LANG_OPTIONS_MBGUI_B "Der Port muss eine Zahl zwischen 1 und 65535 sein." !insertmacro PFI_LANG_STRING PFI_LANG_OPTIONS_MBGUI_C "Bitte korrigieren Sie ihre Eingabe für den Port für die Benutzeroberfläche." *************** *** 715,720 **** ; starts "admin|admin-lista|..." (which is "admin|list-admin|..." in English) ! !insertmacro PFI_LANG_STRING PFI_LANG_CBP_DEFAULT_BUCKETS "spam|personal|work|other" ! !insertmacro PFI_LANG_STRING PFI_LANG_CBP_SUGGESTED_NAMES "admin|business|computers|family|financial|general|hobby|inbox|junk|list-admin|miscellaneous|not_spam|other|personal|recreation|school|security|shopping|spam|travel|work" ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- 715,720 ---- ; starts "admin|admin-lista|..." (which is "admin|list-admin|..." in English) ! !insertmacro PFI_LANG_STRING PFI_LANG_CBP_DEFAULT_BUCKETS "spam|persoenlich|arbeit|sonstiges" ! !insertmacro PFI_LANG_STRING PFI_LANG_CBP_SUGGESTED_NAMES "admin|geschaeftlich|computer|familie|finanziell|generell|hobby|inbox|muell|list-admin|vermischtes|kein_spam|anderes|persoenlich|freizeit|schule|sicherheit|einkaufen|spam|reisen|arbeit" ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *************** *** 729,733 **** ; Text strings displayed on the custom page ! !insertmacro PFI_LANG_STRING PFI_LANG_CBP_IO_INTRO "Nach der Installation können Sie die Anzahl der Kategorien (und deren Name) ohne Probleme an ihre Bedürfnisse anpassen.${IO_NL}${IO_NL}Kategorienamen bestehen aus Kleinbuchstaben, Ziffern von 0 bis 9, Bindestrich oder Unterstrich." !insertmacro PFI_LANG_STRING PFI_LANG_CBP_IO_CREATE "Erstellen Sie eine neue Kategorie, indem Sie entweder einen Namen aus der Liste wählen oder einen Namen ihrer Wahl eingeben." !insertmacro PFI_LANG_STRING PFI_LANG_CBP_IO_DELETE "Um eine oder mehr Kategorien von der Liste zu löschen, markieren Sie die entsprechenden 'Entfernen' Kästchen und klicken Sie auf 'Weiter'." --- 729,733 ---- ; Text strings displayed on the custom page ! !insertmacro PFI_LANG_STRING PFI_LANG_CBP_IO_INTRO "Nach der Installation können Sie die Anzahl der Kategorien (und deren Name) ohne Probleme an ihre Bedürfnisse anpassen.${IO_NL}${IO_NL}Kategorienamen bestehen aus Kleinbuchstaben, Ziffern von 0 bis 9, Bindestrich oder Unterstrich (keine Umlaute)." !insertmacro PFI_LANG_STRING PFI_LANG_CBP_IO_CREATE "Erstellen Sie eine neue Kategorie, indem Sie entweder einen Namen aus der Liste wählen oder einen Namen ihrer Wahl eingeben." !insertmacro PFI_LANG_STRING PFI_LANG_CBP_IO_DELETE "Um eine oder mehr Kategorien von der Liste zu löschen, markieren Sie die entsprechenden 'Entfernen' Kästchen und klicken Sie auf 'Weiter'." *************** *** 744,748 **** !insertmacro PFI_LANG_STRING PFI_LANG_CBP_IO_MSG_A "Sie müssen keine weiteren Kategorien hinzufügen" ! !insertmacro PFI_LANG_STRING PFI_LANG_CBP_IO_MSG_B "Sie müssen MINDESTENS zwei Kategorien angeben" !insertmacro PFI_LANG_STRING PFI_LANG_CBP_IO_MSG_C "Mindestens eine weitere Kategorie wird benötigt" !insertmacro PFI_LANG_STRING PFI_LANG_CBP_IO_MSG_D "Der Installer kann nicht mehr als $G_PLS_FIELD_1 Kategorien anlegen." --- 744,748 ---- !insertmacro PFI_LANG_STRING PFI_LANG_CBP_IO_MSG_A "Sie müssen keine weiteren Kategorien hinzufügen" ! !insertmacro PFI_LANG_STRING PFI_LANG_CBP_IO_MSG_B "Sie müssen mindestens zwei Kategorien angeben" !insertmacro PFI_LANG_STRING PFI_LANG_CBP_IO_MSG_C "Mindestens eine weitere Kategorie wird benötigt" !insertmacro PFI_LANG_STRING PFI_LANG_CBP_IO_MSG_D "Der Installer kann nicht mehr als $G_PLS_FIELD_1 Kategorien anlegen." *************** *** 767,776 **** !insertmacro PFI_LANG_STRING PFI_LANG_CBP_MBNAMERR_A "Der Name '$G_PLS_FIELD_1' ist ungültig." ! !insertmacro PFI_LANG_STRING PFI_LANG_CBP_MBNAMERR_B "Kategorienamen können nur Kleinbuchstaben von a bis z, Ziffern von 0 bis 9, - oder _ enthalten" !insertmacro PFI_LANG_STRING PFI_LANG_CBP_MBNAMERR_C "Bitte wählen Sie einen anderen Namen für die neue Kategorie." ! !insertmacro PFI_LANG_STRING PFI_LANG_CBP_MBCONTERR_1 "POPFile benötigt MINDESTES ZWEI Kategorien, um ihre Emails klassifizieren zu können." !insertmacro PFI_LANG_STRING PFI_LANG_CBP_MBCONTERR_2 "Bitte geben Sie den Namen einer zu erstellenden Kategorie ein,${MB_NL}${MB_NL}indem Sie entweder einen der Vorschläge aus der Liste auswählen${MB_NL}${MB_NL}oder indem Sie einen Namen Ihrer Wahl eingeben." ! !insertmacro PFI_LANG_STRING PFI_LANG_CBP_MBCONTERR_3 "Sie müssen MINDESTENS ZWEI Kategorien anlegen, bevor Sie die Installation fortsetzen können." ; TempTranslationNote: PFI_LANG_CBP_MBDONE_A = "$G_PLS_FIELD_1 " + PFI_LANG_CBP_MBDONE_1 --- 767,776 ---- !insertmacro PFI_LANG_STRING PFI_LANG_CBP_MBNAMERR_A "Der Name '$G_PLS_FIELD_1' ist ungültig." ! !insertmacro PFI_LANG_STRING PFI_LANG_CBP_MBNAMERR_B "Kategorienamen können nur Kleinbuchstaben von a bis z, Ziffern von 0 bis 9, - oder _ enthalten (keine Umlaute)" !insertmacro PFI_LANG_STRING PFI_LANG_CBP_MBNAMERR_C "Bitte wählen Sie einen anderen Namen für die neue Kategorie." ! !insertmacro PFI_LANG_STRING PFI_LANG_CBP_MBCONTERR_1 "POPFile benötigt mindestens ZWEI Kategorien, um ihre Emails klassifizieren zu können." !insertmacro PFI_LANG_STRING PFI_LANG_CBP_MBCONTERR_2 "Bitte geben Sie den Namen einer zu erstellenden Kategorie ein,${MB_NL}${MB_NL}indem Sie entweder einen der Vorschläge aus der Liste auswählen${MB_NL}${MB_NL}oder indem Sie einen Namen Ihrer Wahl eingeben." ! !insertmacro PFI_LANG_STRING PFI_LANG_CBP_MBCONTERR_3 "Sie müssen mindestens ZWEI Kategorien anlegen, bevor Sie die Installation fortsetzen können." ; TempTranslationNote: PFI_LANG_CBP_MBDONE_A = "$G_PLS_FIELD_1 " + PFI_LANG_CBP_MBDONE_1 *************** *** 800,804 **** !insertmacro PFI_LANG_STRING PFI_LANG_MAILCFG_IO_TEXT_1 "Programme, die mit (*) markiert sind, können automatisch konfiguriert werden - vorausgesetzt, einfache Konten werden verwendet.${IO_NL}${IO_NL}Es wird dringendst empfohlen, Konten, die eine Authentifizierung benötigen, manuell zu konfigurieren." ! !insertmacro PFI_LANG_STRING PFI_LANG_MAILCFG_IO_TEXT_2 "WICHTIG: BEENDEN SIE DIE BETROFFENEN EMAILPROGRAMME JETZT!${IO_NL}${IO_NL}Diese Funktion befindet sich noch in Entwicklung (einige Outlook Konten können z.B. nicht gefunden werden).${IO_NL}${IO_NL}Bitte überprüfen Sie, ob die Neukonfiguration erfolgreich war (bevor Sie das Emailprogramm verwenden)." !insertmacro PFI_LANG_STRING PFI_LANG_MAILCFG_IO_CANCEL "Die Konfiguration wurde vom Benutzer abgebrochen" --- 800,804 ---- !insertmacro PFI_LANG_STRING PFI_LANG_MAILCFG_IO_TEXT_1 "Programme, die mit (*) markiert sind, können automatisch konfiguriert werden - vorausgesetzt, einfache Konten werden verwendet.${IO_NL}${IO_NL}Es wird dringendst empfohlen, Konten, die eine Authentifizierung benötigen, manuell zu konfigurieren." ! !insertmacro PFI_LANG_STRING PFI_LANG_MAILCFG_IO_TEXT_2 "WICHTIG: BEENDEN SIE JETZT DIE BETROFFENEN EMAILPROGRAMME!${IO_NL}${IO_NL}Diese Funktion befindet sich noch in Entwicklung (einige Outlook Konten können z.B. nicht gefunden werden).${IO_NL}${IO_NL}Bitte überprüfen Sie, ob die Neukonfiguration erfolgreich war bevor Sie das Emailprogramm verwenden." !insertmacro PFI_LANG_STRING PFI_LANG_MAILCFG_IO_CANCEL "Die Konfiguration wurde vom Benutzer abgebrochen" *************** *** 866,870 **** !insertmacro PFI_LANG_STRING PFI_LANG_OOECFG_MBUSERNAME "POP3 Benutzername:" !insertmacro PFI_LANG_STRING PFI_LANG_OOECFG_MBOEPORT "POP3 Port:" ! !insertmacro PFI_LANG_STRING PFI_LANG_OOECFG_MBSMTPLOGIN "SMTP Login wird auf '$G_PLS_FIELD_2' gesetzt" !insertmacro PFI_LANG_STRING PFI_LANG_OOECFG_MBOLDVALUE "aktuell" !insertmacro PFI_LANG_STRING PFI_LANG_OOECFG_MBQUESTION "Konto zur Nutzung mit POPFile konfigurieren?" --- 866,870 ---- !insertmacro PFI_LANG_STRING PFI_LANG_OOECFG_MBUSERNAME "POP3 Benutzername:" !insertmacro PFI_LANG_STRING PFI_LANG_OOECFG_MBOEPORT "POP3 Port:" ! !insertmacro PFI_LANG_STRING PFI_LANG_OOECFG_MBSMTPLOGIN "SMTP Benutzername wird auf '$G_PLS_FIELD_2' gesetzt" !insertmacro PFI_LANG_STRING PFI_LANG_OOECFG_MBOLDVALUE "aktuell" !insertmacro PFI_LANG_STRING PFI_LANG_OOECFG_MBQUESTION "Konto zur Nutzung mit POPFile konfigurieren?" *************** *** 952,956 **** ; $G_WINUSERNAME holds the Windows login name of the user running the wizard ! !insertmacro PFI_LANG_STRING PFI_LANG_ADDUSER_FINISH_INFO "POPFile wurde für '$G_WINUSERNAME' eingerichtet.${IO_NL}${IO_NL}Klicken sie auf Finish, um diesen Assistenten zu beenden.." !insertmacro PFI_LANG_STRING PFI_LANG_FINISH_RUN_TEXT "POPFile Benutzeroberfläche" --- 952,956 ---- ; $G_WINUSERNAME holds the Windows login name of the user running the wizard ! !insertmacro PFI_LANG_STRING PFI_LANG_ADDUSER_FINISH_INFO "POPFile wurde für '$G_WINUSERNAME' eingerichtet.${IO_NL}${IO_NL}Klicken sie auf 'Fertigstellen', um diesen Assistenten zu beenden.." !insertmacro PFI_LANG_STRING PFI_LANG_FINISH_RUN_TEXT "POPFile Benutzeroberfläche" *************** *** 975,979 **** !insertmacro PFI_LANG_STRING PFI_LANG_REMOVING_TITLE "Deinstalliere POPFile-Daten für den Benutzer '$G_WINUSERNAME'" ! !insertmacro PFI_LANG_STRING PFI_LANG_REMOVING_SUBTITLE "Bitten werden Sie, während die Konfiguratoinsdateien für diesen Benutzer gelöscht werden." ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- 975,979 ---- !insertmacro PFI_LANG_STRING PFI_LANG_REMOVING_TITLE "Deinstalliere POPFile-Daten für den Benutzer '$G_WINUSERNAME'" ! !insertmacro PFI_LANG_STRING PFI_LANG_REMOVING_SUBTITLE "Bitten warten Sie, während die Konfiguratoinsdateien für diesen Benutzer gelöscht werden." ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *************** *** 1019,1023 **** !insertmacro PFI_LANG_STRING PFI_LANG_UN_MBRERUN_4 "Klicken Sie auf 'Ja', um diese Daten zu behalten (und einen späteren Versuch zu ermöglichen)" ! !insertmacro PFI_LANG_STRING PFI_LANG_UN_MBREMDIR_2 "Wollen Sie alle Dateien im Benutzerdatenverzeichnis löschen?${MB_NL}${MB_NL}$G_USERDIR${MB_NL}${MB_NL}(Wenn Sie irgendetwas erstellt haben, was sie behalten möchten, wählen Sie Nein)" !insertmacro PFI_LANG_STRING PFI_LANG_UN_MBDELMSGS_1 "Möchten Sie alle Dateien aus der Liste der 'Aktuellen Nachrichten' entfernen?" --- 1019,1023 ---- !insertmacro PFI_LANG_STRING PFI_LANG_UN_MBRERUN_4 "Klicken Sie auf 'Ja', um diese Daten zu behalten (und einen späteren Versuch zu ermöglichen)" ! !insertmacro PFI_LANG_STRING PFI_LANG_UN_MBREMDIR_2 "Wollen Sie alle Dateien im Benutzerdatenverzeichnis löschen?${MB_NL}${MB_NL}$G_USERDIR${MB_NL}${MB_NL}(Wenn Sie hier irgendetwas gespeichert haben, was Sie behalten möchten, wählen Sie 'Nein')" !insertmacro PFI_LANG_STRING PFI_LANG_UN_MBDELMSGS_1 "Möchten Sie alle Dateien aus der Liste der 'Aktuellen Nachrichten' entfernen?" *************** *** 1031,1035 **** !insertmacro PFI_LANG_STRING PFI_LANG_CONVERT_TITLE "POPFile Korpus-Konvertierung" ! !insertmacro PFI_LANG_STRING PFI_LANG_CONVERT_SUBTITLE "Der bestehende Korpus muß konvertiert werden, um mit der neuen Version von POPFile verwendet werden zu können." !insertmacro PFI_LANG_STRING PFI_LANG_ENDCONVERT_TITLE "POPFile Korpus-Konvertierung abgeschlossen" --- 1031,1035 ---- !insertmacro PFI_LANG_STRING PFI_LANG_CONVERT_TITLE "POPFile Korpus-Konvertierung" ! !insertmacro PFI_LANG_STRING PFI_LANG_CONVERT_SUBTITLE "Der bestehende Korpus muss konvertiert werden, um mit der neuen Version von POPFile verwendet werden zu können." !insertmacro PFI_LANG_STRING PFI_LANG_ENDCONVERT_TITLE "POPFile Korpus-Konvertierung abgeschlossen" *************** *** 1050,1054 **** !insertmacro PFI_LANG_STRING PFI_LANG_CONVERT_TOTALFILES "Es müssen insgesamt $G_BUCKET_COUNT Dateien konvertiert werden" !insertmacro PFI_LANG_STRING PFI_LANG_CONVERT_PROGRESS_N "Nach $G_ELAPSED_TIME.$G_DECPLACES Minuten müssen noch $G_STILL_TO_DO Dateien konvertiert werden" ! !insertmacro PFI_LANG_STRING PFI_LANG_CONVERT_PROGRESS_1 "Nach $G_ELAPSED_TIME.$G_DECPLACES Minuten muß noch eine Datei konvertiert werden" !insertmacro PFI_LANG_STRING PFI_LANG_CONVERT_SUMMARY "Die Konvertierung dauerte $G_ELAPSED_TIME.$G_DECPLACES Minuten" --- 1050,1054 ---- !insertmacro PFI_LANG_STRING PFI_LANG_CONVERT_TOTALFILES "Es müssen insgesamt $G_BUCKET_COUNT Dateien konvertiert werden" !insertmacro PFI_LANG_STRING PFI_LANG_CONVERT_PROGRESS_N "Nach $G_ELAPSED_TIME.$G_DECPLACES Minuten müssen noch $G_STILL_TO_DO Dateien konvertiert werden" ! !insertmacro PFI_LANG_STRING PFI_LANG_CONVERT_PROGRESS_1 "Nach $G_ELAPSED_TIME.$G_DECPLACES Minuten muss noch eine Datei konvertiert werden" !insertmacro PFI_LANG_STRING PFI_LANG_CONVERT_SUMMARY "Die Konvertierung dauerte $G_ELAPSED_TIME.$G_DECPLACES Minuten" |