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: <jgr...@us...> - 2003-02-19 17:31:10
|
Update of /cvsroot/popfile/engine/skins In directory sc8-pr-cvs1:/tmp/cvs-serv14912/skins Modified Files: default.css Log Message: Merge kinematics patch that updates the UI for priority 2 accessibility requirements Index: default.css =================================================================== RCS file: /cvsroot/popfile/engine/skins/default.css,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** default.css 17 Feb 2003 18:57:18 -0000 1.8 --- default.css 19 Feb 2003 17:30:36 -0000 1.9 *************** *** 5,9 **** } ! .shell { background-color: #ededca; border: 3px #cccc99 solid; --- 5,9 ---- } ! .shell, .shellTop { background-color: #ededca; border: 3px #cccc99 solid; *************** *** 61,69 **** } ! table.stabColor01 { border: 1px solid #cccc99; } ! table.stabColor03 { border: 3px solid #cccc99; } --- 61,69 ---- } ! .settingsTable { border: 1px solid #cccc99; } ! .openMessageTable, .lookupResultsTable { border: 3px solid #cccc99; } *************** *** 77,87 **** } ! td.stabColor01 { border: 1px solid #cccc99; } td.naked { ! padding: 0px; ! margin: 0px; border: none } --- 77,87 ---- } ! .settingsPanel { border: 1px solid #cccc99; } td.naked { ! padding: 0px; ! margin: 0px; border: none } *************** *** 101,105 **** color: black; } ! td.accuracy94to100 { background-color: green; --- 101,105 ---- color: black; } ! td.accuracy94to100 { background-color: green; *************** *** 112,116 **** font-size: larger; } ! div.error02 { background-color: transparent; --- 112,116 ---- font-size: larger; } ! div.error02 { background-color: transparent; *************** *** 120,166 **** span.graphFont { font-size: x-small; ! } ! span.historyLabel { font-weight: bold; } ! span.bucketsLabel { font-weight: bold; } ! span.magnetsLabel { font-weight: bold; } ! span.securityLabel { font-weight: bold; } ! span.configurationLabel { font-weight: bold; } ! ! span.advancedLabel { font-weight: bold; } ! ! span.passwordLabel { font-weight: bold; } ! span.sessionLabel { font-weight: bold; } ! td.logo2menuSpace { height: 0.8em; } ! td.footerBody { text-align: center; } ! table.historyWidgetsTop { width: 100%; --- 120,166 ---- span.graphFont { font-size: x-small; ! } ! .historyLabel { font-weight: bold; } ! .bucketsLabel { font-weight: bold; } ! .magnetsLabel { font-weight: bold; } ! .securityLabel { font-weight: bold; } ! .configurationLabel { font-weight: bold; } ! ! .advancedLabel { font-weight: bold; } ! ! .passwordLabel { font-weight: bold; } ! .sessionLabel { font-weight: bold; } ! td.logo2menuSpace { height: 0.8em; } ! td.footerBody { text-align: center; } ! table.historyWidgetsTop { width: 100%; *************** *** 170,174 **** } ! table.historyButtonsBottom { width: 100%; margin-top: 0.6em; --- 170,174 ---- } ! table.historyWidgetsBottom { width: 100%; margin-top: 0.6em; *************** *** 181,184 **** --- 181,193 ---- td.historyNavigatorBottom { text-align: right; + } + + .historyLabel em { + font-weight: bold; + font-style: normal; + } + + .magnetsTable caption { + text-align: left; } |
From: <jgr...@us...> - 2003-02-19 16:20:39
|
Update of /cvsroot/popfile/windows In directory sc8-pr-cvs1:/tmp/cvs-serv30979 Modified Files: Makefile installer.nsi Added Files: ioB.ini Log Message: Modified installer to remove non-English language manuals since they are large; added new automatic configuration of Outlook Express identities; updated Makefile; using latest NSIS package --- NEW FILE: ioB.ini --- [Settings] NumFields=9 NextButtonText=Next > [Field 1] Type=label Text=POPFile has detected an Outlook Express email account and can automatically configure\nit to work with POPFile Left=0 Right=500 Top=0 Bottom=20 [Field 2] Type=checkbox Text=Reconfigure this account to work with POPFile Left=0 Right=300 Top=20 Bottom=40 [Field 3] Type=label Text=Email address: Left=16 Right=300 Top=48 Bottom=64 [Field 4] Type=label Text=POP3 server: Left=16 Right=300 Top=64 Bottom=80 [Field 5] Type=label Text=POP3 username: Left=16 Right=300 Top=80 Bottom=96 [Field 6] Type=label Text=If you uninstall POPFile the original settings will be restored Left=0 Right=500 Top=112 Bottom=132 [Field 7] Type=label Text= Left=96 Right=300 Top=48 Bottom=64 [Field 8] Type=label Text= Left=96 Right=300 Top=64 Bottom=80 [Field 9] Type=label Text= Left=96 Right=300 Top=80 Bottom=96 Index: Makefile =================================================================== RCS file: /cvsroot/popfile/windows/Makefile,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Makefile 3 Feb 2003 00:48:58 -0000 1.7 --- Makefile 19 Feb 2003 16:20:33 -0000 1.8 *************** *** 6,10 **** setup.exe: ../engine/*.pl ../engine/Classifier/*.pm ../engine/skins/*.css ../engine/skins/*.gif ! setup.exe: installer.nsi ioA.ini @../NSIS/makensis.exe /V4 $< --- 6,10 ---- setup.exe: ../engine/*.pl ../engine/Classifier/*.pm ../engine/skins/*.css ../engine/skins/*.gif ! setup.exe: installer.nsi ioA.ini ioB.ini @../NSIS/makensis.exe /V4 $< Index: installer.nsi =================================================================== RCS file: /cvsroot/popfile/windows/installer.nsi,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** installer.nsi 6 Feb 2003 22:24:09 -0000 1.22 --- installer.nsi 19 Feb 2003 16:20:34 -0000 1.23 *************** *** 4,8 **** !define MUI_PRODUCT "POPFile" ! !define MUI_VERSION "0.18.0" !include "${NSISDIR}\Contrib\Modern UI\System.nsh" --- 4,8 ---- !define MUI_PRODUCT "POPFile" ! !define MUI_VERSION "0.18.1" !include "${NSISDIR}\Contrib\Modern UI\System.nsh" *************** *** 25,28 **** --- 25,30 ---- !define LNE $4 !define CMPRE $5 + !define OEID $6 + !define ID $7 ;Language *************** *** 42,45 **** --- 44,48 ---- !insertmacro MUI_PAGECOMMAND_DIRECTORY Page custom SetOptionsPage "Options" + Page custom SetOutlookExpressPage "Configure Outlook Express" !insertmacro MUI_PAGECOMMAND_INSTFILES *************** *** 49,53 **** LangString DESC_SecPerl ${LANG_ENGLISH} "Installs minimal Perl needed by POPFile." LangString DESC_SecSkins ${LANG_ENGLISH} "Installs POPFile skins that allow you to change the look and feel of the POPFile user interface." ! LangString DESC_SecLangs ${LANG_ENGLISH} "Installs non-English language translations of the POPFile UI and manual." ;Folder-selection page --- 52,56 ---- LangString DESC_SecPerl ${LANG_ENGLISH} "Installs minimal Perl needed by POPFile." LangString DESC_SecSkins ${LANG_ENGLISH} "Installs POPFile skins that allow you to change the look and feel of the POPFile user interface." ! LangString DESC_SecLangs ${LANG_ENGLISH} "Installs non-English language versions of the POPFile UI." ;Folder-selection page *************** *** 58,63 **** --- 61,68 ---- ;Only useful for BZIP2 compression ;Use ReserveFile for your own Install Options ini files too! + !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ReserveFile "ioA.ini" + ReserveFile "ioB.ini" Function .onInit *************** *** 98,103 **** skip_gui_set: ! !insertmacro MUI_INSTALLOPTIONS_EXTRACT "ioA.ini" ! FunctionEnd --- 103,110 ---- skip_gui_set: ! InitPluginsDir ! File /oname=$PLUGINSDIR\ioA.ini ioA.ini ! File /oname=$PLUGINSDIR\ioB.ini ioB.ini ! FunctionEnd *************** *** 274,287 **** File "..\engine\languages\*.msg" - SetOutPath $INSTDIR\manual\br - File "..\engine\manual\br\*.html" - SetOutPath $INSTDIR\manual\de - File "..\engine\manual\de\*.html" - File "..\engine\manual\de\*.gif" - SetOutPath $INSTDIR\manual\no - File "..\engine\manual\no\*.html" - SetOutPath $INSTDIR\manual\fr - File "..\engine\manual\fr\*.html" - SectionEnd --- 281,284 ---- *************** *** 311,315 **** !insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 2" "State" ${POP3} !insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 4" "State" ${GUI} ! !insertmacro MUI_INSTALLOPTIONS_DISPLAY "ioA.ini" FunctionEnd --- 308,371 ---- !insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 2" "State" ${POP3} !insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 4" "State" ${GUI} ! ! Push $R0 ! InstallOptions::dialog $PLUGINSDIR\ioA.ini ! Pop $R0 ! FunctionEnd ! ! ; This function is used to reconfigure Outlook Express accounts ! ! Function SetOutlookExpressPage ! ! ; Run through all the identities that are in HKEY_CURRENT_USER\Identities and for ! ; each one that has a Software\Microsoft\Internet Account Manager\Accounts\00000001 entry ! ; display the reconfiguration option if the account has not yet been reconfigured ! ; which we detect by pop3 server name != 127.0.0.1 ! ! IntOp ${OEID} ${OEID} * 0 ; Weird way of making sure that ${OEID} is 0 ! ! ; Get the next identity from the registry ! ! next_id: ! EnumRegKey ${ID} HKCU "Identities" ${OEID} ! StrCmp ${ID} "" finished_oe ! ! ; Now extract the POP3 Server, if this does not exist then this ID is ! ; not configured for mail so move on ! ! StrCpy $R5 "Identities\${ID}\Software\Microsoft\Internet Account Manager\Accounts\00000001" ! ReadRegStr $R6 HKCU $R5 "POP3 Server" ! StrCmp $R6 "" next_id_increment ! StrCmp $R6 "127.0.0.1" next_id_increment ! ! !insertmacro MUI_HEADER_TEXT "Reconfigure Outlook Express" "POPFile can reconfigure Outlook Express for you" ! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 2" "State" "0" ! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 8" "Text" $R6 ! ReadRegStr $R6 HKCU $R5 "SMTP Email Address" ! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 7" "Text" $R6 ! ReadRegStr $R6 HKCU $R5 "POP3 User Name" ! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 9" "Text" $R6 ! Push $R0 ! InstallOptions::dialog $PLUGINSDIR\ioB.ini ! Pop $R0 ! ! StrCmp $R0 "cancel" finished_oe ! StrCmp $R0 "back" finished_oe ! ! !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ioB.ini" "Field 2" "State" ! StrCmp $R5 "1" change_oe next_id_increment ! ! change_oe: ! StrCpy $R5 "Identities\${ID}\Software\Microsoft\Internet Account Manager\Accounts\00000001" ! ReadRegStr $R6 HKCU $R5 "POP3 User Name" ! ReadRegStr $R7 HKCU $R5 "POP3 Server" ! WriteRegStr HKCU $R5 "POP3 User Name" "$R7:$R6" ! WriteRegStr HKCU $R5 "POP3 Server" "127.0.0.1" ! ! next_id_increment: ! IntOp ${OEID} ${OEID} + 1 ! goto next_id ! ! finished_oe: FunctionEnd *************** *** 354,367 **** RMDir $INSTDIR\skins Delete $INSTDIR\manual\en\*.html - Delete $INSTDIR\manual\br\*.html - Delete $INSTDIR\manual\no\*.html - Delete $INSTDIR\manual\fr\*.html - Delete $INSTDIR\manual\de\*.html - Delete $INSTDIR\manual\de\*.gif RMDir $INSTDIR\manual\en - RMDir $INSTDIR\manual\br - RMDir $INSTDIR\manual\no - RMDir $INSTDIR\manual\fr - RMDir $INSTDIR\manual\de Delete $INSTDIR\manual\*.gif RMDir $INSTDIR\manual --- 410,414 ---- |
From: <jgr...@us...> - 2003-02-18 14:50:17
|
Update of /cvsroot/popfile/engine In directory sc8-pr-cvs1:/tmp/cvs-serv20563 Modified Files: bayes.pl Log Message: Turn on classifier debug output in bayes.pl Index: bayes.pl =================================================================== RCS file: /cvsroot/popfile/engine/bayes.pl,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** bayes.pl 11 Feb 2003 18:46:43 -0000 1.14 --- bayes.pl 18 Feb 2003 14:50:10 -0000 1.15 *************** *** 21,25 **** } ! $b->{debug} = 0; $b->{parser}->{debug} = 0; $b->load_word_matrix(); --- 21,25 ---- } ! $b->{debug} = 1; $b->{parser}->{debug} = 0; $b->load_word_matrix(); |
From: <jgr...@us...> - 2003-02-18 14:47:09
|
Update of /cvsroot/popfile/engine/Proxy In directory sc8-pr-cvs1:/tmp/cvs-serv19251/Proxy Modified Files: POP3.pm Log Message: Fix bug 684967 by ensuring that all socket communication is done in binmode and that file writes use \n so that we are strict in using CRLF on the network and flexible in using CR or LF as appropriate file local files depending on the platform POPFile is running on. If we use \n for files that are not binmode then Perl takes care of the appropriate translation; on the other hand we do not want Perl taking care of translation on the network and you use $eol and binmode together Index: POP3.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** POP3.pm 17 Feb 2003 22:43:37 -0000 1.35 --- POP3.pm 18 Feb 2003 14:46:33 -0000 1.36 *************** *** 123,129 **** --- 123,131 ---- # Ensure that the messages subdirectory exists + mkdir( 'messages' ); # Open the socket used to receive request for POP3 service + $self->{server} = IO::Socket::INET->new( Proto => 'tcp', $self->{configuration}->{configuration}{localpop} == 1 ? (LocalAddr => 'localhost') : (), *************** *** 134,137 **** --- 136,140 ---- # This is used to perform select calls on the $server socket so that we can decide when there is # a call waiting an accept it without having to block + $self->{selector} = new IO::Select( $self->{server} ); *************** *** 152,155 **** --- 155,159 ---- # Need to close all the duplicated file handles, this include the POP3 listener # and all the reading ends of pipes to active children + close $self->{server} if ( defined( $self->{server} ) ); *************** *** 182,222 **** # because we deal with the statistics as we go # ! # $kid PID of a child of POP3.pm # # --------------------------------------------------------------------------------------------- sub flush_child_data { ! my ( $self, $kid ) = @_; ! ! my $stats_changed = 0; ! my $handle = $self->{children}{$kid}; ! while ( &{$self->{pipeready}}($handle) ) ! { ! my $class = <$handle>; ! ! if ( defined( $class ) ) { ! $class =~ s/[\r\n]//g; ! $self->{classifier}->{parameters}{$class}{count} += 1; ! $self->{configuration}->{configuration}{mcount} += 1; ! $stats_changed = 1; ! debug( $self, "Incrementing $class for $kid" ); ! } else { ! ! # This is here so that we get in errorneous position where the pipready ! # function is returning that there's data, but there is none, in fact the ! # pipe is dead then we break the cycle here. This was happening to me when ! # I tested POPFile running under cygwin. ! ! last; ! } ! } ! ! if ( $stats_changed ) { ! $self->{configuration}->save_configuration(); ! $self->{classifier}->write_parameters(); ! } } --- 186,226 ---- # because we deal with the statistics as we go # ! # $kid PID of a child of POP3.pm # # --------------------------------------------------------------------------------------------- sub flush_child_data { ! my ( $self, $kid ) = @_; ! ! my $stats_changed = 0; ! my $handle = $self->{children}{$kid}; ! while ( &{$self->{pipeready}}($handle) ) ! { ! my $class = <$handle>; ! ! if ( defined( $class ) ) { ! $class =~ s/[\r\n]//g; ! $self->{classifier}->{parameters}{$class}{count} += 1; ! $self->{configuration}->{configuration}{mcount} += 1; ! $stats_changed = 1; ! debug( $self, "Incrementing $class for $kid" ); ! } else { ! ! # This is here so that we get in errorneous position where the pipready ! # function is returning that there's data, but there is none, in fact the ! # pipe is dead then we break the cycle here. This was happening to me when ! # I tested POPFile running under cygwin. ! ! last; ! } ! } ! ! if ( $stats_changed ) { ! $self->{configuration}->save_configuration(); ! $self->{classifier}->write_parameters(); ! } } *************** *** 242,249 **** for my $kid (@kids) { if ( waitpid( $kid, &WNOHANG ) == $kid ) { ! $self->flush_child_data( $kid ); close $self->{children}{$kid}; delete $self->{children}{$kid}; ! debug( $self, "Done with $kid" ); } --- 246,253 ---- for my $kid (@kids) { if ( waitpid( $kid, &WNOHANG ) == $kid ) { ! $self->flush_child_data( $kid ); close $self->{children}{$kid}; delete $self->{children}{$kid}; ! debug( $self, "Done with $kid" ); } *************** *** 263,272 **** my ( $self ) = @_; ! # See if any of the children have passed up statistics data through their ! # pipes and deal with it now ! ! for my $kid (keys %{$self->{children}}) { ! $self->flush_child_data( $kid ); ! } # Accept a connection from a client trying to use us as the mail server. We service one client at a time --- 267,276 ---- my ( $self ) = @_; ! # See if any of the children have passed up statistics data through their ! # pipes and deal with it now ! ! for my $kid (keys %{$self->{children}}) { ! $self->flush_child_data( $kid ); ! } # Accept a connection from a client trying to use us as the mail server. We service one client at a time *************** *** 277,290 **** --- 281,301 ---- if ( ( defined( $self->{selector}->can_read(0) ) ) && ( $self->{alive} ) ) { 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 act as a proxy for just anyone's email + my ( $remote_port, $remote_host ) = sockaddr_in( $client->peername() ); if ( ( $self->{configuration}->{configuration}{localpop} == 0 ) || ( $remote_host eq inet_aton( "127.0.0.1" ) ) ) { + # Now that we have a good connection to the client fork a subprocess to handle the communication + # and set the socket to binmode so that no CRLF translation goes on + $self->{configuration}->{configuration}{download_count} += 1; my ($pid,$pipe) = &{$self->{forker}}; + binmode( $client ); # If we are in the parent process then push the pipe handle onto the children list + if ( ( defined( $pid ) ) && ( $pid != 0 ) ) { $self->{children}{$pid} = $pipe; *************** *** 292,295 **** --- 303,307 ---- # If we fail to fork, or are in the child process then process this request + if ( !defined( $pid ) || ( $pid == 0 ) ) { child( $self, $client, $self->{configuration}->{configuration}{download_count}, $pipe ); *************** *** 491,502 **** if ( $command =~ /CAPA/i ) { if ( $self->{configuration}->{configuration}{server} ne '' ) { ! if ( $mail = verify_connected( $self, $mail, $client, $self->{configuration}->{configuration}{server}, $self->{configuration}->{configuration}{sport} ) ) { ! echo_to_dot( $self, $mail, $client ) if ( echo_response( $self, $mail, $client, "CAPA" ) ); ! } else { ! last; ! } ! } else { tee( $self, $client, "-ERR No secure server specified$eol" ); ! } flush_extra( $self, $mail, $client, 0 ); --- 503,514 ---- if ( $command =~ /CAPA/i ) { if ( $self->{configuration}->{configuration}{server} ne '' ) { ! if ( $mail = verify_connected( $self, $mail, $client, $self->{configuration}->{configuration}{server}, $self->{configuration}->{configuration}{sport} ) ) { ! echo_to_dot( $self, $mail, $client ) if ( echo_response( $self, $mail, $client, "CAPA" ) ); ! } else { ! last; ! } ! } else { tee( $self, $client, "-ERR No secure server specified$eol" ); ! } flush_extra( $self, $mail, $client, 0 ); *************** *** 735,744 **** --- 747,764 ---- if ( $mail ) { if ( $mail->connected ) { + + # Set binmode on the socket so that no translation of CRLF + # occurs + + binmode( $mail ); + # Wait 10 seconds for a response from the remote server and if # there isn't one then give up trying to connect + my $selector = new IO::Select( $mail ); return undef unless () = $selector->can_read($self->{configuration}->{configuration}{timeout}); # Read the response from the real server and say OK + my $buf = ''; my $max_length = 8192; |
From: <jgr...@us...> - 2003-02-18 14:47:09
|
Update of /cvsroot/popfile/engine/Classifier In directory sc8-pr-cvs1:/tmp/cvs-serv19251/Classifier Modified Files: Bayes.pm Log Message: Fix bug 684967 by ensuring that all socket communication is done in binmode and that file writes use \n so that we are strict in using CRLF on the network and flexible in using CR or LF as appropriate file local files depending on the platform POPFile is running on. If we use \n for files that are not binmode then Perl takes care of the appropriate translation; on the other hand we do not want Perl taking care of translation on the network and you use $eol and binmode together Index: Bayes.pm =================================================================== RCS file: /cvsroot/popfile/engine/Classifier/Bayes.pm,v retrieving revision 1.95 retrieving revision 1.96 diff -C2 -d -r1.95 -r1.96 *** Bayes.pm 14 Feb 2003 16:10:16 -0000 1.95 --- Bayes.pm 18 Feb 2003 14:46:31 -0000 1.96 *************** *** 895,901 **** open CLASS, ">$class_file"; if ( $self->{magnet_used} == 0 ) { ! print CLASS "$classification$eol"; } else { ! print CLASS "$classification MAGNET $self->{magnet_detail}$eol"; } close CLASS; --- 895,901 ---- open CLASS, ">$class_file"; if ( $self->{magnet_used} == 0 ) { ! print CLASS "$classification\n"; } else { ! print CLASS "$classification MAGNET $self->{magnet_detail}\n"; } close CLASS; |
From: <jgr...@us...> - 2003-02-18 14:46:43
|
Update of /cvsroot/popfile/engine/UI In directory sc8-pr-cvs1:/tmp/cvs-serv19251/UI Modified Files: HTML.pm Log Message: Fix bug 684967 by ensuring that all socket communication is done in binmode and that file writes use \n so that we are strict in using CRLF on the network and flexible in using CR or LF as appropriate file local files depending on the platform POPFile is running on. If we use \n for files that are not binmode then Perl takes care of the appropriate translation; on the other hand we do not want Perl taking care of translation on the network and you use $eol and binmode together Index: HTML.pm =================================================================== RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v retrieving revision 1.71 retrieving revision 1.72 diff -C2 -d -r1.71 -r1.72 *** HTML.pm 17 Feb 2003 18:49:00 -0000 1.71 --- HTML.pm 18 Feb 2003 14:46:34 -0000 1.72 *************** *** 2043,2055 **** if ( defined $magnet && $magnet ne '' ) { ! print CLASS "$bucket MAGNET $magnet$eol"; } elsif (defined $reclassified && $reclassified == 1) { ! print CLASS "RECLASSIFIED$eol"; ! print CLASS "$bucket$eol"; if (defined $usedtobe && $usedtobe ne '') { ! print CLASS "$usedtobe$eol"; } } else { ! print CLASS "$bucket$eol"; } } --- 2043,2055 ---- if ( defined $magnet && $magnet ne '' ) { ! print CLASS "$bucket MAGNET $magnet\n"; } elsif (defined $reclassified && $reclassified == 1) { ! print CLASS "RECLASSIFIED\n"; ! print CLASS "$bucket\n"; if (defined $usedtobe && $usedtobe ne '') { ! print CLASS "$usedtobe\n"; } } else { ! print CLASS "$bucket\n"; } } |
From: <jgr...@us...> - 2003-02-18 12:40:11
|
Update of /cvsroot/popfile/engine/Classifier In directory sc8-pr-cvs1:/tmp/cvs-serv29218 Modified Files: MailParse.pm Log Message: Removed use warnings in the mail parser because the MIME::Base64 will complain about bad base 64 messages when (a) there's nothing we can do about it and (b) it happily decodes them anyway Index: MailParse.pm =================================================================== RCS file: /cvsroot/popfile/engine/Classifier/MailParse.pm,v retrieving revision 1.84 retrieving revision 1.85 diff -C2 -d -r1.84 -r1.85 *** MailParse.pm 18 Feb 2003 12:37:27 -0000 1.84 --- MailParse.pm 18 Feb 2003 12:40:08 -0000 1.85 *************** *** 10,14 **** use strict; - use warnings; use locale; use Classifier::WordMangle; --- 10,13 ---- |
From: <jgr...@us...> - 2003-02-18 12:37:30
|
Update of /cvsroot/popfile/engine/Classifier In directory sc8-pr-cvs1:/tmp/cvs-serv28087 Modified Files: MailParse.pm Log Message: Merged pkarlin patch that fixes bug 683379 Index: MailParse.pm =================================================================== RCS file: /cvsroot/popfile/engine/Classifier/MailParse.pm,v retrieving revision 1.83 retrieving revision 1.84 diff -C2 -d -r1.83 -r1.84 *** MailParse.pm 17 Feb 2003 10:07:02 -0000 1.83 --- MailParse.pm 18 Feb 2003 12:37:27 -0000 1.84 *************** *** 164,168 **** } } else { ! $self->{ut} .= "Found in encoded data <font color=\"$color\">$word<\/font>\r\n"; } } else { --- 164,168 ---- } } else { ! $self->{ut} .= "<font color=\"$color\">$word<\/font> "; } } else { *************** *** 920,928 **** if ( ( $mime ne '' ) && ( $line =~ /^\-\-($mime)(\-\-)?/ ) ) { - $colorized .= clear_out_base64( $self ); # approach each mime part with fresh eyes - $encoding = ''; if (!defined $2) { --- 920,927 ---- if ( ( $mime ne '' ) && ( $line =~ /^\-\-($mime)(\-\-)?/ ) ) { # approach each mime part with fresh eyes + $encoding = ''; if (!defined $2) { *************** *** 1049,1060 **** parse_html( $self, $decoded, 1 ); ! if ( $decoded =~ /[^[:alpha:]\-\.]$/ ) { ! if ( $self->{color} ) { ! my $splitline = $self->{base64}; ! $splitline =~ s/([^\r\n]{120})/$1\r\n/g; ! $self->{ut} = $splitline; ! } ! $decoded = ''; if ( $self->{color} ) { --- 1048,1054 ---- parse_html( $self, $decoded, 1 ); ! print "Decoded: " . $decoded . "\n" if ($self->{debug}); ! $self->{ut} = "<b>Found in encoded data:</b> " . $self->{ut} if ( $self->{color} ); if ( $self->{color} ) { *************** *** 1062,1066 **** $colorized = $self->{ut}; $self->{ut} = ''; - } } } --- 1056,1059 ---- |
From: <ssc...@us...> - 2003-02-18 06:25:41
|
Update of /cvsroot/popfile/engine/tests In directory sc8-pr-cvs1:/tmp/cvs-serv11038 Modified Files: TestMailParse019.wrd Log Message: update for unix newlines Index: TestMailParse019.wrd =================================================================== RCS file: /cvsroot/popfile/engine/tests/TestMailParse019.wrd,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestMailParse019.wrd 31 Jan 2003 17:29:31 -0000 1.1 --- TestMailParse019.wrd 18 Feb 2003 06:25:38 -0000 1.2 *************** *** 1,54 **** ! popfile 1 ! to:kc...@re... 1 ! subject:sev 1 ! bu...@dr... 2 ! rtfm.relativity.com 1 ! from:wednesday 1 ! subject:fix 1 ! case 1 ! internet 1 ! to:el...@te... 1 ! blue 1 ! notification 1 ! from:bu...@dr... 1 ! rescuebre 1 ! 12.146.171.10 1 ! keymaster.relativity.com 3 ! postfix 1 ! instead 1 ! relativity.com 5 ! charset:us-ascii 1 ! bugtracker 1 ! drunin.net 2 ! 127.0.0.1 2 ! please 1 ! tepkom 3 ! intercept 1 ! from:drunin.net 1 ! service 1 ! from:january 1 ! error 1 ! run 1 ! subject:confirmed 1 ! version 1 ! email 1 ! msg 1 ! jump 1 ! respond 1 ! microsoft 1 ! to:relativity.com 2 ! view 1 ! dfa 1 ! from:snd 1 ! runs 1 ! exchange 1 ! fixed 1 ! to:bug...@re... 1 ! rtfm 1 ! 63.100.138.144 1 ! warning 1 ! to:tepkom.ru 2 ! subject:dev 1 ! bre 1 ! to:res...@te... 1 ! visual 1 --- 1,118 ---- ! resources 1 ! rtfm.relativity.com 2 ! html:td 48 ! relativity.com 7 ! which 1 ! analysis' 1 ! rescuebre 1 ! cobol 2 ! program 5 ! email 1 ! workaround 1 ! view 1 ! january 1 ! category 1 ! based 2 ! dev 1 ! perform 2 ! description 1 ! analysis 1 ! 12.146.171.10 1 ! wednesday 1 ! start 1 ! rescuewin 1 ! incident 1 ! fixed 1 ! time 1 ! subject:sev 1 ! to:kc...@re... 1 ! to:relativity.com 2 ! case 1 ! microsoft 1 ! medium 1 ! error 4 ! verified 1 ! internal 3 ! set 1 ! subject:confirmed 1 ! when 1 ! changeid 1 ! msg 1 ! severe 1 ! access 1 ! version 2 ! last 1 ! qaid 1 ! external 1 ! release 1 ! build 1 ! keymaster.relativity.com 3 ! instead 1 ! bre 6 ! extracted 1 ! snd 3 ! dll 2 ! to:tepkom.ru 2 ! warning 1 ! from:drunin.net 1 ! paragraph 2 ! exchange 1 ! priority 1 ! test 1 ! ensure 1 ! dfa 1 ! slice 1 ! generated 2 ! bu...@dr... 2 ! vi.relativity.com 1 ! archives 1 ! postfix 1 ! confirmed 1 ! tepkom 3 ! to:el...@te... 1 ! to:bug...@re... 1 ! server 1 ! cbl 1 ! computation 1 ! visual 1 ! correct 1 ! internet 1 ! 63.100.138.144 1 ! drunin.net 2 ! fix 1 ! subject:dev 1 ! jump 1 ! logical 1 ! service 1 ! 127.0.0.1 2 ! resolution 1 ! rtfm 1 ! bugtracker 1 ! project 1 ! same 1 ! elia 3 ! to:res...@te... 1 ! charset:us-ascii 1 ! high 1 ! run 1 ! blue 2 ! verify 1 ! should 1 ! alternative 1 ! call 1 ! option 2 ! popfile 1 ! severity 1 ! subject:fix 1 ! from:bu...@dr... 1 ! consistent 1 ! accept 1 ! assignid 1 ! notification 1 ! please 1 ! structure 2 ! customer 1 ! runs 1 ! respond 1 ! requestid 1 ! intercept 1 |
From: <jgr...@us...> - 2003-02-18 00:43:42
|
Update of /cvsroot/popfile/engine/languages In directory sc8-pr-cvs1:/tmp/cvs-serv23618 Modified Files: Norsk.msg Log Message: Merge Jo Inge Fjellstad patch to update Norwegian UI Index: Norsk.msg =================================================================== RCS file: /cvsroot/popfile/engine/languages/Norsk.msg,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Norsk.msg 18 Feb 2003 00:40:30 -0000 1.3 --- Norsk.msg 18 Feb 2003 00:43:39 -0000 1.4 *************** *** 15,19 **** Previous Forrige Next Neste ! >From Fra Subject Emne Classification Klassifisering --- 15,19 ---- Previous Forrige Next Neste ! From Fra Subject Emne Classification Klassifisering |
From: <jgr...@us...> - 2003-02-18 00:40:33
|
Update of /cvsroot/popfile/engine/languages In directory sc8-pr-cvs1:/tmp/cvs-serv21885 Modified Files: Norsk.msg Log Message: Merge Jo Inge Fjellstad patch to update Norwegian UI Index: Norsk.msg =================================================================== RCS file: /cvsroot/popfile/engine/languages/Norsk.msg,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Norsk.msg 10 Feb 2003 23:00:00 -0000 1.2 --- Norsk.msg 18 Feb 2003 00:40:30 -0000 1.3 *************** *** 15,19 **** Previous Forrige Next Neste ! From Fra Subject Emne Classification Klassifisering --- 15,19 ---- Previous Forrige Next Neste ! >From Fra Subject Emne Classification Klassifisering *************** *** 41,45 **** # The header and footer that appear on every UI page Header_Title POPFile Kontrollsenter ! Header_Shutdown Lukk Header_History Logg Header_Buckets Bøtter --- 41,45 ---- # The header and footer that appear on every UI page Header_Title POPFile Kontrollsenter ! Header_Shutdown Lukk POPFile Header_History Logg Header_Buckets Bøtter *************** *** 113,118 **** History_ClassifyAs klassifisert som History_MagnetUsed Magnet brukt ! History_ChangedTo Bytt til <font color=%s>%s ! History_Already Allerede re-klassifisert som <font color=%s>%s</font> History_RemoveAll Fjern alle History_RemovePage Fjern side --- 113,118 ---- History_ClassifyAs klassifisert som History_MagnetUsed Magnet brukt ! History_ChangedTo Endret til <font color=%s>%s ! History_Already Re-klassifisert som <font color=%s>%s</font> History_RemoveAll Fjern alle History_RemovePage Fjern side |
From: <ssc...@us...> - 2003-02-17 22:43:41
|
Update of /cvsroot/popfile/engine/Proxy In directory sc8-pr-cvs1:/tmp/cvs-serv18823 Modified Files: POP3.pm Log Message: servers are given a timeout period to return a newline on their banners Index: POP3.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** POP3.pm 17 Feb 2003 22:40:06 -0000 1.34 --- POP3.pm 17 Feb 2003 22:43:37 -0000 1.35 *************** *** 743,754 **** my $buf = ''; my $max_length = 8192; ! my $n = sysread( $mail, $buf, $max_length, length $buf ); - debug( $self, "Connection returned: $buf" ); if ( !( $buf =~ /[\r\n]/ ) ) { ! for my $i ( 0..4 ) { ! flush_extra( $self, $mail, $client, 1 ); } } return $mail; } --- 743,772 ---- my $buf = ''; my $max_length = 8192; ! my $n = sysread( $mail, $buf, $max_length, length $buf ); if ( !( $buf =~ /[\r\n]/ ) ) { ! my $hit_newline = 0; ! my $temp_buf; ! ! # Read until timeout or a newline (newline _should_ be immediate) ! ! for my $i ( 0..($self->{configuration}->{configuration}{timeout} * 100) ) { ! if ( !$hit_newline ) { ! $temp_buf = flush_extra( $self, $mail, $client, 1 ); ! $hit_newline = ( $temp_buf =~ /[\r\n]/ ); ! $buf .= $temp_buf; ! } else { ! last; ! } } } + debug( $self, "Connection returned: $buf" ); + + # Clean up junk following a newline + + for my $i ( 0..4 ) { + flush_extra( $self, $mail, $client, 1 ); + } + return $mail; } *************** *** 767,770 **** --- 785,790 ---- # debug messages! # + # Returns the extra data flushed + # # $mail The handle of the real mail server # $client The mail client talking to us *************** *** 787,792 **** --- 807,814 ---- tee( $self, $client, $buf ) if ( $discard != 1 ); + return $buf; } } } + return ''; } |
From: <jgr...@us...> - 2003-02-17 22:40:11
|
Update of /cvsroot/popfile/engine/Proxy In directory sc8-pr-cvs1:/tmp/cvs-serv16699/Proxy Modified Files: POP3.pm Log Message: I removed a comment that didn't need removing to IT'S BACK Index: POP3.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** POP3.pm 17 Feb 2003 22:36:27 -0000 1.33 --- POP3.pm 17 Feb 2003 22:40:06 -0000 1.34 *************** *** 270,274 **** } ! # Accept a connection from a client trying to use us as the mail server. if ( ( defined( $self->{selector}->can_read(0) ) ) && ( $self->{alive} ) ) { --- 270,277 ---- } ! # Accept a connection from a client trying to use us as the mail server. We service one client at a time ! # and all others get queued up to be dealt with later. We check the alive boolean here to make sure we ! # are still allowed to operate. See if there's a connection waiting on the $server by getting the list of ! # handles with data to read, if the handle is the server then we're off. if ( ( defined( $self->{selector}->can_read(0) ) ) && ( $self->{alive} ) ) { |
From: <jgr...@us...> - 2003-02-17 22:36:31
|
Update of /cvsroot/popfile/engine/Proxy In directory sc8-pr-cvs1:/tmp/cvs-serv14797/Proxy Modified Files: POP3.pm Log Message: In the POP3 module only accept one connection per call to service() because some users were complaining about how this spiked the CPU to 100%. This is somewhat of a hack because it would be nice to accept many connections at a time but Windows fork() seems to be greedy and so for the moment I'll go with someone a little Windows specific Index: POP3.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** POP3.pm 17 Feb 2003 22:18:28 -0000 1.32 --- POP3.pm 17 Feb 2003 22:36:27 -0000 1.33 *************** *** 270,280 **** } ! # Accept a connection from a client trying to use us as the mail server. We service one client at a time ! # and all others get queued up to be dealt with later. We check the alive boolean here to make sure we ! # are still allowed to operate. See if there's a connection waiting on the $server by getting the list of ! # handles with data to read, if the handle is the server then we're off. ! # If we have some handles left, accept a connection ! while ( ( defined( $self->{selector}->can_read(0) ) ) && ( $self->{alive} ) ) { 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 --- 270,276 ---- } ! # Accept a connection from a client trying to use us as the mail server. ! if ( ( defined( $self->{selector}->can_read(0) ) ) && ( $self->{alive} ) ) { 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 |
From: <jgr...@us...> - 2003-02-17 22:19:01
|
Update of /cvsroot/popfile/engine In directory sc8-pr-cvs1:/tmp/cvs-serv1781 Modified Files: popfile.pl Log Message: New pipready() helper subroutine in popfile.pl to test in a platform independent way whether a pipe is ready since Windows and non-Windows differ; new Proxy::POP3::flush_child_data routine used to move data out of the child pipes; flush_child_data now called in service and the reaper for POP3 so that we handle pipe data all the time and not just when a child dies; this fixes bug 685032 where when you downloaded a large amount of mail the counter would get messed up because of the pipe seeming to get full; also set autoflush on the pipe writer Index: popfile.pl =================================================================== RCS file: /cvsroot/popfile/engine/popfile.pl,v retrieving revision 1.200 retrieving revision 1.201 diff -C2 -d -r1.200 -r1.201 *** popfile.pl 17 Feb 2003 11:31:56 -0000 1.200 --- popfile.pl 17 Feb 2003 22:18:25 -0000 1.201 *************** *** 37,40 **** --- 37,43 ---- # used as the key for this module in %components # + # pipeready - This is a reference to the pipeready() function in this file that it used + # to determine if a pipe if ready for reading + # # alive - Gets set to 1 when the parent wants to kill all the running sub modules # *************** *** 87,90 **** --- 90,127 ---- # --------------------------------------------------------------------------------------------- # + # pipeready + # + # Returns 1 if there is data available to be read on the passed in pipe handle + # + # $pipe Pipe handle + # + # --------------------------------------------------------------------------------------------- + sub pipeready + { + my ( $pipe ) = @_; + + if ( $on_windows ) { + + # I am NOT doing a select() here because that does not work + # on Perl running on Windows. -s returns the "size" of the file + # (in this case a pipe) and will be non-zero if there is data to read + + return ( ( -s $pipe ) > 0 ); + } else { + + # Here I do a select because we are not running on Windows where + # you can't select() on a pipe + + my $rin = ''; + vec( $rin, fileno( $pipe ), 1 ) = 1; + my $ready = select( $rin, undef, undef, 0.01 ); + return ( $ready > 0 ); + } + } + + + + # --------------------------------------------------------------------------------------------- + # # reaper # *************** *** 145,148 **** --- 182,192 ---- close $reader; + + # Set autoflush on the write handle so that output goes straight through + # to the parent without buffering it until the socket closes + + use IO::Handle; + $writer->autoflush(1); + return (0, $writer); } *************** *** 273,277 **** $components{$type}{$name}->{alive} = 1; ! $components{$type}{$name}->{forker} = \&forker; } } --- 317,322 ---- $components{$type}{$name}->{alive} = 1; ! $components{$type}{$name}->{forker} = \&forker; ! $components{$type}{$name}->{pipeready} = \&pipeready; } } |
From: <jgr...@us...> - 2003-02-17 22:18:35
|
Update of /cvsroot/popfile/engine/Proxy In directory sc8-pr-cvs1:/tmp/cvs-serv1781/Proxy Modified Files: POP3.pm Log Message: New pipready() helper subroutine in popfile.pl to test in a platform independent way whether a pipe is ready since Windows and non-Windows differ; new Proxy::POP3::flush_child_data routine used to move data out of the child pipes; flush_child_data now called in service and the reaper for POP3 so that we handle pipe data all the time and not just when a child dies; this fixes bug 685032 where when you downloaded a large amount of mail the counter would get messed up because of the pipe seeming to get full; also set autoflush on the pipe writer Index: POP3.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** POP3.pm 13 Feb 2003 21:24:17 -0000 1.31 --- POP3.pm 17 Feb 2003 22:18:28 -0000 1.32 *************** *** 175,178 **** --- 175,226 ---- # --------------------------------------------------------------------------------------------- # + # flush_child_data + # + # Called to flush data from the pipe of each child as we go, I did this because there + # appears to be a problem on Windows where the pipe gets a lot of read data in it and + # then causes the child not to be terminated even though we are done. Also this is nice + # because we deal with the statistics as we go + # + # $kid PID of a child of POP3.pm + # + # --------------------------------------------------------------------------------------------- + sub flush_child_data + { + my ( $self, $kid ) = @_; + + my $stats_changed = 0; + my $handle = $self->{children}{$kid}; + + while ( &{$self->{pipeready}}($handle) ) + { + my $class = <$handle>; + + if ( defined( $class ) ) { + $class =~ s/[\r\n]//g; + + $self->{classifier}->{parameters}{$class}{count} += 1; + $self->{configuration}->{configuration}{mcount} += 1; + $stats_changed = 1; + + debug( $self, "Incrementing $class for $kid" ); + } else { + + # This is here so that we get in errorneous position where the pipready + # function is returning that there's data, but there is none, in fact the + # pipe is dead then we break the cycle here. This was happening to me when + # I tested POPFile running under cygwin. + + last; + } + } + + if ( $stats_changed ) { + $self->{configuration}->save_configuration(); + $self->{classifier}->write_parameters(); + } + } + + # --------------------------------------------------------------------------------------------- + # # reaper # *************** *** 192,223 **** if ( $#kids >= 0 ) { - my $stats_changed = 0; - for my $kid (@kids) { if ( waitpid( $kid, &WNOHANG ) == $kid ) { ! my $handle = $self->{children}{$kid}; ! ! while ( <$handle> ) { ! my $class = $_; ! $class =~ s/[\r\n]//g; ! ! $self->{classifier}->{parameters}{$class}{count} += 1; ! $self->{configuration}->{configuration}{mcount} += 1; ! $stats_changed = 1; ! ! debug( $self, "Incrementing $_" ); ! } ! ! debug( $self, "Done with $kid handle $handle" ); ! close $self->{children}{$kid}; delete $self->{children}{$kid}; } } - - if ( $stats_changed ) { - $self->{configuration}->save_configuration(); - $self->{classifier}->write_parameters(); - } } } --- 240,252 ---- if ( $#kids >= 0 ) { for my $kid (@kids) { if ( waitpid( $kid, &WNOHANG ) == $kid ) { ! $self->flush_child_data( $kid ); close $self->{children}{$kid}; delete $self->{children}{$kid}; + + debug( $self, "Done with $kid" ); } } } } *************** *** 233,236 **** --- 262,272 ---- { my ( $self ) = @_; + + # See if any of the children have passed up statistics data through their + # pipes and deal with it now + + for my $kid (keys %{$self->{children}}) { + $self->flush_child_data( $kid ); + } # Accept a connection from a client trying to use us as the mail server. We service one client at a time |
From: <jgr...@us...> - 2003-02-17 22:14:05
|
Update of /cvsroot/popfile/engine/languages In directory sc8-pr-cvs1:/tmp/cvs-serv30583 Modified Files: English.msg Log Message: Altered language of the search message to indicate that it did search from and subject and not just subject; thanks to tomvoss for pointing this out Index: English.msg =================================================================== RCS file: /cvsroot/popfile/engine/languages/English.msg,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** English.msg 17 Feb 2003 17:30:51 -0000 1.15 --- English.msg 17 Feb 2003 22:14:01 -0000 1.16 *************** *** 104,108 **** History_Filter (just showing bucket <font color="%s">%s</font>) ! History_Search (searched for subject %s) History_Title Recent Messages History_Jump Jump to message --- 104,108 ---- History_Filter (just showing bucket <font color="%s">%s</font>) ! History_Search (searched for from/subject %s) History_Title Recent Messages History_Jump Jump to message |