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: <ssc...@us...> - 2003-03-11 08:08:10
|
Update of /cvsroot/popfile/engine/Classifier In directory sc8-pr-cvs1:/tmp/cvs-serv22115 Modified Files: Tag: v0/18/1 MailParse.pm Log Message: fix colorized display of quoted-printable HTML (699098) Index: MailParse.pm =================================================================== RCS file: /cvsroot/popfile/engine/Classifier/MailParse.pm,v retrieving revision 1.91 retrieving revision 1.91.2.1 diff -C2 -d -r1.91 -r1.91.2.1 *** MailParse.pm 27 Feb 2003 09:49:38 -0000 1.91 --- MailParse.pm 11 Mar 2003 08:08:00 -0000 1.91.2.1 *************** *** 799,805 **** --- 799,814 ---- $self->{ut} = ''; } + + #Escape some HTML characters to ensure display in HTML UI $splitline =~ s/</</g; $splitline =~ s/>/>/g; + + if ( $encoding =~ /quoted\-printable/i ) { + $splitline =~ s/=3C/</g; + $splitline =~ s/=3E/>/g; + } + + $splitline =~ s/\t/ /g; $self->{ut} .= $splitline; *************** *** 1057,1061 **** $colorized =~ s/(\r\n\r\n|\r\r|\n\n)/__BREAK____BREAK__/g; $colorized =~ s/[\r\n]+/__BREAK__/g; ! $colorized =~ s/__BREAK__/<br \/>/g; return $colorized; --- 1066,1070 ---- $colorized =~ s/(\r\n\r\n|\r\r|\n\n)/__BREAK____BREAK__/g; $colorized =~ s/[\r\n]+/__BREAK__/g; ! $colorized =~ s/__BREAK__/<br \/>\r\n/g; return $colorized; |
From: <ssc...@us...> - 2003-03-10 07:59:26
|
Update of /cvsroot/popfile/engine/Classifier In directory sc8-pr-cvs1:/tmp/cvs-serv19556 Modified Files: MailParse.pm Log Message: fix colorized display of quoted-printable HTML (699098) Index: MailParse.pm =================================================================== RCS file: /cvsroot/popfile/engine/Classifier/MailParse.pm,v retrieving revision 1.95 retrieving revision 1.96 diff -C2 -d -r1.95 -r1.96 *** MailParse.pm 5 Mar 2003 22:49:03 -0000 1.95 --- MailParse.pm 10 Mar 2003 07:59:23 -0000 1.96 *************** *** 799,802 **** --- 799,809 ---- $splitline =~ s/</</g; $splitline =~ s/>/>/g; + + #TODO: regress patch to 0.18.1 + if ( $encoding =~ /quoted\-printable/i ) { + $splitline =~ s/=3C/</g; + $splitline =~ s/=3E/>/g; + } + $splitline =~ s/\t/ /g; $self->{ut__} .= $splitline; |
From: <jgr...@us...> - 2003-03-09 20:40:18
|
Update of /cvsroot/popfile/engine/languages In directory sc8-pr-cvs1:/tmp/cvs-serv27933 Modified Files: Deutsch.msg Log Message: Update to German translation Index: Deutsch.msg =================================================================== RCS file: /cvsroot/popfile/engine/languages/Deutsch.msg,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** Deutsch.msg 23 Feb 2003 21:06:25 -0000 1.10 --- Deutsch.msg 9 Mar 2003 20:40:10 -0000 1.11 *************** *** 1,231 **** ! # Copyright (c) 2001-2003 John Graham-Cumming ! ! # Identify the language and character set used for the interface ! LanguageCode de ! LanguageCharset ISO-8859-1 ! ! # This is used to get the appropriate subdirectory for the manual ! ManualLanguage de ! ! # Common words that are used on their own all over the interface ! Apply Anwenden ! On Ein ! Off Aus ! TurnOn Einschalten ! TurnOff Ausschalten ! Add Hinzufügen ! Remove Entfernen ! Previous Zurück ! Next Weiter ! From Absender ! Subject Betreff ! Classification Einstufung ! Reclassify Neu einstufen ! Undo widerrufen ! Close Schließen ! Find Suchen ! Filter Filter ! Yes Ja ! No Nein ! ChangeToYes Ändern in Ja ! ChangeToNo Ändern in Nein ! Bucket Kategorie ! Magnet Magnet ! Delete Löschen ! Create Erstellen ! To Empfänger ! Total Insgesamt ! Rename Umbenennen ! Frequency Häufigkeit ! Probability Wahrscheinlichkeit ! Score Auswertung ! Lookup Nachschlagen ! ! # The header and footer that appear on every UI page ! Header_Title POPFile Kontrollzentrum ! Header_Shutdown Herunterfahren ! Header_History Verlauf ! Header_Buckets Kategorie ! Header_Configuration Konfiguration ! Header_Advanced Erweitert ! Header_Security Sicherheit ! Header_Magnets Magnete ! ! Footer_HomePage POPFile Homepage ! Footer_Manual Handbuch ! Footer_Forums Foren ! Footer_FeedMe Spenden ! Footer_RequestFeature Funktionalität vorschlagen ! Footer_MailingList Mailing Liste ! ! Configuration_Error1 Das Trennzeichen muß ein einzelnes Zeichen sein. ! Configuration_Error2 Der Port für das Kontrollzentrum muß zwischen 1 und 65535 liegen. ! Configuration_Error3 Der POP3 Port muß zwischen 1 und 65535 liegen. ! Configuration_Error4 Die Seitengröße muß zwischen 1 und 1000 liegen. ! Configuration_Error5 Die Anzahl der Tage im Verlauf muß zwischen 1 und 366 liegen. ! Configuration_Error6 Der TCP Timeout muß zwischen 10 und 300 liegen. ! Configuration_POP3Port POP3 Port ! Configuration_POP3Update Neuer POP3 Port: %s; Diese Änderung wird erst nach einem Neustart von POPFile wirksam. ! Configuration_Separator Trennzeichen ! Configuration_SepUpdate Neues Trennzeichen: %s ! Configuration_UI Web Port für Kontrollzentrum ! Configuration_UIUpdate Neuer Web Port für Kontrollzentrum: %s; Dieser Änderung wird erst nach einem Neustart von POPFile wirksam. ! Configuration_History Anzahl Emails pro Seite ! Configuration_HistoryUpdate Neue Anzahl Emails pro Seite: %s ! Configuration_Days Emails x Tage im Verlauf speichern ! Configuration_DaysUpdate Emails werden nun %s im Verlauf gespeichert ! Configuration_UserInterface Benutzeroberfläche ! Configuration_Skins Skins ! Configuration_SkinsChoose Skin auswählen ! Configuration_Language Sprache ! Configuration_LanguageChoose Sprache auswählen ! Configuration_ListenPorts Porteinstellungen ! Configuration_HistoryView Verlaufsansicht ! Configuration_TCPTimeout TCP Verbindungstimeout ! Configuration_TCPTimeoutSecs TCP Verbindungstimeout in Sekunden ! Configuration_TCPTimeoutUpdate Neuer TCP Verbidungstimeout: %s ! Configuration_ClassificationInsertion Einstufung anzeigen ! Configuration_SubjectLine Betreff-Zeile ändern ! Configuration_XTCInsertion X-Text-Classification einfügen ! Configuration_XPLInsertion X-POPFile-Link einfügen ! Configuration_Logging Protokollierung ! Configuration_None Keine Ausgabe ! Configuration_ToScreen Auf den Bildschirm ! Configuration_ToFile In eine Datei ! Configuration_ToScreenFile Bildschirm und Datei ! Configuration_LoggerOutput Protokoll ausgeben ! Configuration_GeneralSkins Skins ! Configuration_SmallSkins Small Skins ! Configuration_TinySkins Tiny Skins ! ! Advanced_Error1 '%s' ist bereits in der Liste der ignorierten Wörter ! Advanced_Error2 Ignorierte Wörtern können nur alphanumerische, ., _, -, oder @ Zeichen enthalten ! Advanced_Error3 '%s' zu den ignorierten Wörtern hinzugefügt ! Advanced_Error4 '%s' ist nicht in der Liste der ignorierten Wörter ! Advanced_Error5 '%s' von der Liste der ignorierten Wörter entfernt ! Advanced_StopWords Ignorierte Wörter ! Advanced_Message1 POPFile ignoriert die folgenden, häufig verwendeten Wörter: ! Advanced_AddWord Wort hinzufügen ! Advanced_RemoveWord Wort löschen ! ! History_Filter (zeige nur Kategorie <font color="%s">%s</font>) ! History_Search (gesuchter Absender/Betreff: %s) ! History_Title Letzte Nachrichten ! History_Jump zu Nachricht gehen ! History_ShowAll Alle anzeigen ! History_ShouldBe Sollte sein ! History_NoFrom kein Absender angegeben ! History_NoSubject kein Betreff ! History_ClassifyAs eingestuft als ! History_MagnetUsed Magnet benutzt ! History_ChangedTo Geändert: <font color="%s">%s ! History_Already Bereits neu eingestuft als <font color="%s">%s</font> ! History_RemoveAll Alle entfernen ! History_RemovePage Diese Seite entfernen ! History_Remove Um Einträge im Verlauf zu löschen, klicken Sie auf ! History_SearchMessage Nach Absender/Betreff suchen ! History_NoMessages keine Nachrichten ! History_ShowMagnet Magnetisiert ! History_Magnet (zeige nur durch Magnet eingestufte Nachrichten) ! History_ResetSearch Zurücksetzen ! ! Password_Title Paßwort ! Password_Enter Paßwort eingeben ! Password_Go Anmelden ! Password_Error1 Falsches Paßwort ! ! Security_Error1 Der sichere Port muß zwischen 1 und 65535 liegen. ! Security_Stealth Stealth Modus/Serverbetrieb ! Security_NoStealthMode Nein (Stealth Modus) ! Security_ExplainStats (Wenn Sie diese Funktion einschalten, sendet POPFile täglich die drei folgenden Werte an ein Skript auf www.usethesource.com: bc (Anzahl von Ihnen eingerichteter Kategorien), mc (Anzahl von POPFile eingestufter Nachrichten) und ec (Anzahl der Einstufungsfehler). Diese werden in einer Datei gespeichert und benutzt, um öffentliche Statistiken darüber zu erstellen, wie POPFile genutzt wird und wie gut es dabei funktioniert. Die Daten werden etwa 5 Tage auf dem Server gespeichert und dann gelöscht. Zuordnungen zwischen IP-Adressen und statistischen Daten werden nicht gespeichert.) ! Security_ExplainUpdate (Wenn Sie diese Funktion einschalten, sendet POPFile täglich die drei folgenden Werte an ein Skript auf www.usethesource.com: ma (die Hauptversionsnummer der POPFile-Installation), mi (die Nebenversionsnummer der POPFile-Installation) und bn (die build-Nummer der POPFile-Installation). POPFile erhält die Antwort in Form einer Grafik, die am Kopf einer Seite erscheint, wenn eine neue Version verfügbar ist. Die Daten werden etwa 5 Tage auf dem Server gespeichert und dann gelöscht. Zuordnungen zwischen IP-Adressen und statistischen Daten werden nicht gespeichert.) ! Security_PasswordTitle Paßwort für Benutzeroberfläche ! Security_Password Paßwort ! Security_PasswordUpdate Neues Paßwort: %s ! Security_AUTHTitle gesicherte Kennwortauthentizierung/AUTH ! Security_SecureServer gesicherter Server ! Security_SecureServerUpdate Neuer gesicherter Server: %s; Diese Änderung wird erst nach einem Neustart von POPFile wirksam. ! Security_SecurePort gesicherter Port ! Security_SecurePortUpdate Neuer gesicherter Port %s; Diese Änderung wird erst nach einem Neustart von POPFile wirksam. ! Security_POP3 POP3 Verbindungen von fremden Rechnern erlauben (erfordert Neustart von POPFile) ! Security_UI HTTP (Benutzeroberfläche) Verbindungen von fremden Rechnern erlauben (erfordert Neustart von POPFile) ! Security_UpdateTitle Automatisch auf Updates prüfen ! Security_Update Täglich nach POPFile Updates suchen ! Security_StatsTitle Statistik Report ! Security_Stats Täglich Statistiken senden ! ! Magnet_Error1 Magnet '%s' existiert bereits in Kategorie '%s' ! Magnet_Error2 Neuer Magnet '%s' kollidiert mit Magnet '%s' in Kategorie '%s' und könnte unklare Ergebnisse verursachen. Magnet wurde nicht unzugefügt. ! Magnet_Error3 Erstelle neuen Magnet '%s' in Kategorie '%s' ! Magnet_CurrentMagnets Aktuelle Magnete ! Magnet_Message1 Die folgenden Magnete ordnen neue Post zwingend in eine angegebene Kategorie ein. ! Magnet_CreateNew Neuen Magnet erstellen ! Magnet_Explanation Drei Typen von Magneten sind verfügbar: <ul><li>Absenderadresse oder -name:</b> z.B.: ha...@fi..., um eine bestimmte Adresse zu erfassen, <br />firma.de, um jeden zu erfassen, der von firma.de sendet, <br />Hans Mustermann, um eine bestimmte Person zu erfassen; Hans erfaßt jeden Hans</li><li><b>Empfängeradresse oder -name:</b> Wie beim Absender-Magnet nur für die Empfängeradresse in der Email.</li><li><b>Wörter im Betreff:</b> z.B.: "Hallo", um alle Nachrichten mit "Hallo" im Betreff zu erfassen</li></ul> ! Magnet_MagnetType Typ des Magnets ! Magnet_Value Wert ! Magnet_Always Immer dieser Kategorie zuordnen ! ! Bucket_Error1 Kategorienamen können nur Kleinbuchstaben von a bis z, - oder _ enthalten ! Bucket_Error2 Kategoriename %s existiert bereits ! Bucket_Error3 Kategorie %s erstellt ! Bucket_Error4 Bitte geben Sie ein nicht-leeres Wort ein ! Bucket_Error5 Kategorie %s in %s umbenannt ! Bucket_Error6 Kategorie %s gelöscht ! Bucket_Title Zusammenfassung ! Bucket_BucketName Kategoriename ! Bucket_WordCount Wortanzahl ! Bucket_WordCounts Wortanzahl ! Bucket_UniqueWords verschiedene Wörter ! Bucket_SubjectModification Betreff ändern ! Bucket_ChangeColor Farbe ändern ! Bucket_NotEnoughData Nicht genügend Daten ! Bucket_ClassificationAccuracy Genauigkeit ! Bucket_EmailsClassified Emails klassifiziert ! Bucket_EmailsClassifiedUpper Emails klassifiziert ! Bucket_ClassificationErrors Einstufungsfehler ! Bucket_Accuracy Genauigkeit ! Bucket_ClassificationCount Anzahl Einstufungen ! Bucket_ResetStatistics Statistiken zurücksetzen ! Bucket_LastReset Läuft seit ! Bucket_CurrentColor Derzeitige Farbe von %s ist %s ! Bucket_SetColorTo Setze Farbe von %s auf %s ! Bucket_Maintenance Verwaltung ! Bucket_CreateBucket Erstelle Kategorie ! Bucket_DeleteBucket Lösche Kategorie ! Bucket_RenameBucket Benenne Kategorie um ! Bucket_Lookup Nachschlagen ! Bucket_LookupMessage Wort in Kategorie nachschlagen ! Bucket_LookupMessage2 Ergebnis für ! Bucket_LookupMostLikely <b>%s</b> erscheint am wahrscheinlichsten in <font color="%s">%s</font> ! Bucket_DoesNotAppear <p><b>%s</b> erscheint in keiner Kategorie ! Bucket_DisabledGlobally Global deaktiviert ! Bucket_To in ! Bucket_Quarantine Quarantäne ! ! SingleBucket_Title Details für %s ! SingleBucket_WordCount Anzahl Worte in dieser Kategorie ! SingleBucket_TotalWordCount Anzahl Worte insgesamt ! SingleBucket_Percentage Anteil an der Gesamtzahl ! SingleBucket_WordTable Worttabelle für %s ! SingleBucket_Message1 Mit (*) gekennzeichnete Wörter wurden in dieser POPFile Sitzung zur Sortierung benutzt. Klicken Sie auf ein beliebiges Wort, um die Wahrscheinlichkeit seines Erscheinens für alle Kategorien anzusehen. ! SingleBucket_Unique %s verschiedene ! ! Session_Title POPFile Sitzung abgelaufen ! Session_Error Ihre POPFile-Sitzung ist abgelaufen. Dies könnte dadurch verursacht worden sein, daß Sie POPFile neu gestartet haben, das Kontrollzentrum aber noch im Browser geöffnet war. Bitte klicken Sie auf einen der oben angezeigten Verweise, um mit der Benutzung von POPFile weitermachen zu können. ! ! Header_MenuSummary This table is the navigation menu which allows access to each of the different pages of the control center. ! History_MainTableSummary This table shows the sender and subject of recently received messages and allows them to be reviewed and reclassified. Clicking on the subject line will show the full message text, along with information about why it was classified as it was. The 'Should be' column allows you to specify which bucket the message belongs in, or to undo that change. The 'Delete' column allows you to delete specific messages from the history if you don't need them anymore. ! History_OpenMessageSummary This table contains the full text of an email message, with the words that are used for classification highlighted according to the bucket that was most relevant for each. ! Bucket_MainTableSummary This table provides an overview of the classification buckets. Each row shows the bucket name, the word count total for that bucket, the actual number of individual words in each bucket, whether the email's subject line will be modified when it gets classified to that bucket, whether to quarantine the messages received in that bucket, and a table to pick the color used in displaying anything related to that bucket in the control center. ! Bucket_StatisticsTableSummary This table provides three sets of statistics on the overall performance of PopFile. The first is how accurate its classification is, the second is how many emails have been classified, and to which buckets, and the third is how many words are in each bucket, and what their relative percentages are. ! Bucket_MaintenanceTableSummary This table contains forms that allow you to create, delete or rename buckets, and to lookup a word in all of the buckets to see its relative probabilities. ! Bucket_AccuracyChartSummary This table graphically represents the accuracy of the email classification. ! Bucket_BarChartSummary This table graphically represents a percentage allocation for each of the different buckets. It is used for both number of emails classified, and total word counts. ! Bucket_LookupResultsSummary This table shows the probabilities associated with any given word of the corpus. For each bucket, it shows the frequency that that word occurs, the probability that it will occur in that bucket, and the overall effect on the score of the bucket if that word exists in an email. ! Bucket_WordListTableSummary This table provides a listing of all the words for a particular bucket, organized by common first letter for each row. ! Magnet_MainTableSummary This table shows the list of magnets that are used to automatically classify email according to fixed rules. Each row shows how the magnet is defined, what bucket it is intended for, and a button to delete the magnet. ! Configuration_MainTableSummary This table contains a number of forms to allow you to control the configuration of PopFile. ! Configuration_InsertionTableSummary This table contains buttons that determine whether or not certain modifications are made to the headers or subject line of the email before it is passed on to the email client. ! Security_MainTableSummary This table provides sets of controls that affect the security of the overall configuration of PopFile, whether it should automatically check for updates to the program, and whether statistics about PopFile's performance should be sent to the central datastore of the program's author for general information. ! Advanced_MainTableSummary This table provides a list of words that PopFile ignores when classifying email due to their relative frequency in email in general. They are organized per row according to the first letter of the words. ! --- 1,231 ---- ! # Copyright (c) 2001-2003 John Graham-Cumming ! ! # Identify the language and character set used for the interface ! LanguageCode de ! LanguageCharset ISO-8859-1 ! ! # This is used to get the appropriate subdirectory for the manual ! ManualLanguage de ! ! # Common words that are used on their own all over the interface ! Apply Anwenden ! On Ein ! Off Aus ! TurnOn Einschalten ! TurnOff Ausschalten ! Add Hinzufügen ! Remove Entfernen ! Previous Zurück ! Next Weiter ! From Absender ! Subject Betreff ! Classification Einstufung ! Reclassify Neu einstufen ! Undo widerrufen ! Close Schließen ! Find Suchen ! Filter Filter ! Yes Ja ! No Nein ! ChangeToYes Ändern in Ja ! ChangeToNo Ändern in Nein ! Bucket Kategorie ! Magnet Magnet ! Delete Löschen ! Create Erstellen ! To Empfänger ! Total Insgesamt ! Rename Umbenennen ! Frequency Häufigkeit ! Probability Wahrscheinlichkeit ! Score Auswertung ! Lookup Nachschlagen ! ! # The header and footer that appear on every UI page ! Header_Title POPFile Kontrollzentrum ! Header_Shutdown Herunterfahren ! Header_History Verlauf ! Header_Buckets Kategorie ! Header_Configuration Konfiguration ! Header_Advanced Erweitert ! Header_Security Sicherheit ! Header_Magnets Magnete ! ! Footer_HomePage POPFile Homepage ! Footer_Manual Handbuch ! Footer_Forums Foren ! Footer_FeedMe Spenden ! Footer_RequestFeature Funktionalität vorschlagen ! Footer_MailingList Mailing Liste ! ! Configuration_Error1 Das Trennzeichen muß ein einzelnes Zeichen sein. ! Configuration_Error2 Der Port für das Kontrollzentrum muß zwischen 1 und 65535 liegen. ! Configuration_Error3 Der POP3 Port muß zwischen 1 und 65535 liegen. ! Configuration_Error4 Die Seitengröße muß zwischen 1 und 1000 liegen. ! Configuration_Error5 Die Anzahl der Tage im Verlauf muß zwischen 1 und 366 liegen. ! Configuration_Error6 Der TCP Timeout muß zwischen 10 und 300 liegen. ! Configuration_POP3Port POP3 Port ! Configuration_POP3Update Neuer POP3 Port: %s; Diese Änderung wird erst nach einem Neustart von POPFile wirksam. ! Configuration_Separator Trennzeichen ! Configuration_SepUpdate Neues Trennzeichen: %s ! Configuration_UI Web Port für Kontrollzentrum ! Configuration_UIUpdate Neuer Web Port für Kontrollzentrum: %s; Dieser Änderung wird erst nach einem Neustart von POPFile wirksam. ! Configuration_History Anzahl Emails pro Seite ! Configuration_HistoryUpdate Neue Anzahl Emails pro Seite: %s ! Configuration_Days Emails x Tage im Verlauf speichern ! Configuration_DaysUpdate Emails werden nun %s im Verlauf gespeichert ! Configuration_UserInterface Benutzeroberfläche ! Configuration_Skins Skins ! Configuration_SkinsChoose Skin auswählen ! Configuration_Language Sprache ! Configuration_LanguageChoose Sprache auswählen ! Configuration_ListenPorts Porteinstellungen ! Configuration_HistoryView Verlaufsansicht ! Configuration_TCPTimeout TCP Verbindungstimeout ! Configuration_TCPTimeoutSecs TCP Verbindungstimeout in Sekunden ! Configuration_TCPTimeoutUpdate Neuer TCP Verbidungstimeout: %s ! Configuration_ClassificationInsertion Einstufung anzeigen ! Configuration_SubjectLine Betreff-Zeile ändern ! Configuration_XTCInsertion X-Text-Classification einfügen ! Configuration_XPLInsertion X-POPFile-Link einfügen ! Configuration_Logging Protokollierung ! Configuration_None Keine Ausgabe ! Configuration_ToScreen Auf den Bildschirm ! Configuration_ToFile In eine Datei ! Configuration_ToScreenFile Bildschirm und Datei ! Configuration_LoggerOutput Protokoll ausgeben ! Configuration_GeneralSkins Skins ! Configuration_SmallSkins kleine Skins ! Configuration_TinySkins sehr kleine Skins ! ! Advanced_Error1 '%s' ist bereits in der Liste der ignorierten Wörter ! Advanced_Error2 Ignorierte Wörtern können nur alphanumerische, ., _, -, oder @ Zeichen enthalten ! Advanced_Error3 '%s' zu den ignorierten Wörtern hinzugefügt ! Advanced_Error4 '%s' ist nicht in der Liste der ignorierten Wörter ! Advanced_Error5 '%s' von der Liste der ignorierten Wörter entfernt ! Advanced_StopWords Ignorierte Wörter ! Advanced_Message1 POPFile ignoriert die folgenden, häufig verwendeten Wörter: ! Advanced_AddWord Wort hinzufügen ! Advanced_RemoveWord Wort löschen ! ! History_Filter (zeige nur Kategorie <font color="%s">%s</font>) ! History_Search (gesuchter Absender/Betreff: %s) ! History_Title Letzte Nachrichten ! History_Jump zu Nachricht gehen ! History_ShowAll Alle anzeigen ! History_ShouldBe Sollte sein ! History_NoFrom kein Absender angegeben ! History_NoSubject kein Betreff ! History_ClassifyAs eingestuft als ! History_MagnetUsed Magnet benutzt ! History_ChangedTo Geändert: <font color="%s">%s ! History_Already Bereits neu eingestuft als <font color="%s">%s</font> ! History_RemoveAll Alle entfernen ! History_RemovePage Diese Seite entfernen ! History_Remove Um Einträge im Verlauf zu löschen, klicken Sie auf ! History_SearchMessage Nach Absender/Betreff suchen ! History_NoMessages keine Nachrichten ! History_ShowMagnet magnetisiert ! History_Magnet (zeige nur durch Magnet eingestufte Nachrichten) ! History_ResetSearch Zurücksetzen ! ! Password_Title Paßwort ! Password_Enter Paßwort eingeben ! Password_Go Anmelden ! Password_Error1 Falsches Paßwort ! ! Security_Error1 Der sichere Port muß zwischen 1 und 65535 liegen. ! Security_Stealth Stealth Modus/Serverbetrieb ! Security_NoStealthMode Nein (Stealth Modus) ! Security_ExplainStats (Wenn Sie diese Funktion einschalten, sendet POPFile täglich die drei folgenden Werte an ein Skript auf www.usethesource.com: bc (Anzahl von Ihnen eingerichteter Kategorien), mc (Anzahl von POPFile eingestufter Nachrichten) und ec (Anzahl der Einstufungsfehler). Diese werden in einer Datei gespeichert und benutzt, um öffentliche Statistiken darüber zu erstellen, wie POPFile genutzt wird und wie gut es dabei funktioniert. Die Daten werden etwa 5 Tage auf dem Server gespeichert und dann gelöscht. Zuordnungen zwischen IP-Adressen und statistischen Daten werden nicht gespeichert.) ! Security_ExplainUpdate (Wenn Sie diese Funktion einschalten, sendet POPFile täglich die drei folgenden Werte an ein Skript auf www.usethesource.com: ma (die Hauptversionsnummer der POPFile-Installation), mi (die Nebenversionsnummer der POPFile-Installation) und bn (die build-Nummer der POPFile-Installation). POPFile erhält die Antwort in Form einer Grafik, die am Kopf einer Seite erscheint, wenn eine neue Version verfügbar ist. Die Daten werden etwa 5 Tage auf dem Server gespeichert und dann gelöscht. Zuordnungen zwischen IP-Adressen und statistischen Daten werden nicht gespeichert.) ! Security_PasswordTitle Paßwort für Benutzeroberfläche ! Security_Password Paßwort ! Security_PasswordUpdate Neues Paßwort: %s ! Security_AUTHTitle gesicherte Kennwortauthentizierung/AUTH ! Security_SecureServer gesicherter Server ! Security_SecureServerUpdate Neuer gesicherter Server: %s; Diese Änderung wird erst nach einem Neustart von POPFile wirksam. ! Security_SecurePort gesicherter Port ! Security_SecurePortUpdate Neuer gesicherter Port %s; Diese Änderung wird erst nach einem Neustart von POPFile wirksam. ! Security_POP3 POP3 Verbindungen von fremden Rechnern erlauben (erfordert Neustart von POPFile) ! Security_UI HTTP (Benutzeroberfläche) Verbindungen von fremden Rechnern erlauben (erfordert Neustart von POPFile) ! Security_UpdateTitle Automatisch auf Updates prüfen ! Security_Update Täglich nach POPFile Updates suchen ! Security_StatsTitle Statistik Report ! Security_Stats Täglich Statistiken senden ! ! Magnet_Error1 Magnet '%s' existiert bereits in Kategorie '%s' ! Magnet_Error2 Neuer Magnet '%s' kollidiert mit Magnet '%s' in Kategorie '%s' und könnte unklare Ergebnisse verursachen. Magnet wurde nicht unzugefügt. ! Magnet_Error3 Erstelle neuen Magnet '%s' in Kategorie '%s' ! Magnet_CurrentMagnets Aktuelle Magnete ! Magnet_Message1 Die folgenden Magnete ordnen neue Post zwingend in eine angegebene Kategorie ein. ! Magnet_CreateNew Neuen Magnet erstellen ! Magnet_Explanation Drei Typen von Magneten sind verfügbar: <ul><li>Absenderadresse oder -name:</b> z.B.: ha...@fi..., um eine bestimmte Adresse zu erfassen, <br />firma.de, um jeden zu erfassen, der von firma.de sendet, <br />Hans Mustermann, um eine bestimmte Person zu erfassen; Hans erfaßt jeden Hans</li><li><b>Empfängeradresse oder -name:</b> Wie beim Absender-Magnet nur für die Empfängeradresse in der Email.</li><li><b>Wörter im Betreff:</b> z.B.: "Hallo", um alle Nachrichten mit "Hallo" im Betreff zu erfassen</li></ul> ! Magnet_MagnetType Typ des Magnets ! Magnet_Value Wert ! Magnet_Always Immer dieser Kategorie zuordnen ! ! Bucket_Error1 Kategorienamen können nur Kleinbuchstaben von a bis z, - oder _ enthalten ! Bucket_Error2 Kategoriename %s existiert bereits ! Bucket_Error3 Kategorie %s erstellt ! Bucket_Error4 Bitte geben Sie ein nicht-leeres Wort ein ! Bucket_Error5 Kategorie %s in %s umbenannt ! Bucket_Error6 Kategorie %s gelöscht ! Bucket_Title Zusammenfassung ! Bucket_BucketName Kategoriename ! Bucket_WordCount Wortanzahl ! Bucket_WordCounts Wortanzahl ! Bucket_UniqueWords verschiedene Wörter ! Bucket_SubjectModification Betreff ändern ! Bucket_ChangeColor Farbe ändern ! Bucket_NotEnoughData Nicht genügend Daten ! Bucket_ClassificationAccuracy Genauigkeit ! Bucket_EmailsClassified Emails klassifiziert ! Bucket_EmailsClassifiedUpper Emails klassifiziert ! Bucket_ClassificationErrors Einstufungsfehler ! Bucket_Accuracy Genauigkeit ! Bucket_ClassificationCount Anzahl Einstufungen ! Bucket_ResetStatistics Statistiken zurücksetzen ! Bucket_LastReset Läuft seit ! Bucket_CurrentColor Derzeitige Farbe von %s ist %s ! Bucket_SetColorTo Setze Farbe von %s auf %s ! Bucket_Maintenance Verwaltung ! Bucket_CreateBucket Erstelle Kategorie ! Bucket_DeleteBucket Lösche Kategorie ! Bucket_RenameBucket Benenne Kategorie um ! Bucket_Lookup Nachschlagen ! Bucket_LookupMessage Wort in Kategorie nachschlagen ! Bucket_LookupMessage2 Ergebnis für ! Bucket_LookupMostLikely <b>%s</b> erscheint am wahrscheinlichsten in <font color="%s">%s</font> ! Bucket_DoesNotAppear <p><b>%s</b> erscheint in keiner Kategorie ! Bucket_DisabledGlobally Global deaktiviert ! Bucket_To in ! Bucket_Quarantine Quarantäne ! ! SingleBucket_Title Details für %s ! SingleBucket_WordCount Anzahl Worte in dieser Kategorie ! SingleBucket_TotalWordCount Anzahl Worte insgesamt ! SingleBucket_Percentage Anteil an der Gesamtzahl ! SingleBucket_WordTable Worttabelle für %s ! SingleBucket_Message1 Mit (*) gekennzeichnete Wörter wurden in dieser POPFile Sitzung zur Sortierung benutzt. Klicken Sie auf ein beliebiges Wort, um die Wahrscheinlichkeit seines Erscheinens für alle Kategorien anzusehen. ! SingleBucket_Unique %s verschiedene ! ! Session_Title POPFile Sitzung abgelaufen ! Session_Error Ihre POPFile-Sitzung ist abgelaufen. Dies könnte dadurch verursacht worden sein, daß Sie POPFile neu gestartet haben, das Kontrollzentrum aber noch im Browser geöffnet war. Bitte klicken Sie auf einen der oben angezeigten Verweise, um mit der Benutzung von POPFile weitermachen zu können. ! ! Header_MenuSummary Diese Tabelle ist das Navigationsmenü, das Zugang zu den einzelnen Bereichen des Kontrollzentrums bietet. ! History_MainTableSummary Diese Tabelle zeigt Absender und Betreff der letzten empfangenen Nachrichten an und ermöglicht es, diese durchzusehen und zu reklassifizieren. Ein Klick auf den Betreff zeigt die vollständige Nachricht an sowie Details, warum diese so und nicht anders klassifiziert wurde. Die Spalte "Sollte sein" ermöglicht es, anzugeben, in welche Kategorie die Nachricht gehört bzw. entsprechende Änderungen rückgängig zu machen. Die Spalte "Delete" ermöglicht es, einzelne Nachrichten aus dem Verlauf zu löschen, falls Sie diese nicht mehr benötigen. ! History_OpenMessageSummary Diese Tabelle enthält den kompletten Text einer Email. Die Wörter sind entsprechend der Kategorie eingefärbt, in die sie am wahrscheinlichsten passen. ! Bucket_MainTableSummary Diese Tabelle bietet einen Überblick über die einzelnen Kategorien. Jede Reihe zeigt Name, Gesamtzahl der Wörter und die Anzahl verschiedener Wörter pro Kategorie an, ob die Betreff-Zeile der Email bei der Klassifizierung geändert wird, ob die Nachrichten dieser Kategorie in Quarantäne gestellt werden sollen, sowie eine Tabelle zur Auswahl einer Farbe, in der alle zu dieser Kategorie gehörenden Elemente im Kontrollzentrum dargestellt werden sollen. ! Bucket_StatisticsTableSummary Diese Tabelle zeigt drei verschiedene Statistiken bezüglich POPFiles Gesamtleistung an. Die erste: Wie fehlerfrei ist die Einordnung in die entsprechenden Kategorien? Die zweite: Wie viele Emails wurden analysiert und wie wurden sie eingeordnet? Die dritte: Wie viele Wörter gehören zu jeder Kategorie und wie hoch ist der Prozentsatz zur Gesamtzahl? ! Bucket_MaintenanceTableSummary Diese Tabelle enthält Formulare zum Erstellen, Löschen und Umbenennen von Kategorien und um die relative Wahrscheinlichkeit der Wörter in jeder einzelnen Kategorie nachzuschlagen. ! Bucket_AccuracyChartSummary Diese Tabelle stellt die Genauigkeit der Email Sortierung grafisch dar. ! Bucket_BarChartSummary Diese Tabelle stellt einen Prozentanteil grafisch dar. Sie wird sowohl für die Anzahl der eingestuften Emails als auch für die Gesamtzahl der Wörter genutzt. ! Bucket_LookupResultsSummary Diese Tabelle stellt die Wahrscheinlichkeiten bezüglich jedes angegebenen Wortes dar. Für jede Kategorie wird folgendes angezeigt: Die Häufigkeit, mit der das Wort auftritt, die Wahrscheinlichkeit, daß es in dieser Kategorie auftritt und die Auswirkungen auf die Punktzahl der Kategorie insgesamt, falls das Wort in der Email auftaucht. ! Bucket_WordListTableSummary Diese Tabelle bietet eine Liste aller Wörter einer bestimmten Kategorie - reihenweise sortiert nach dem ersten Buchstaben. ! Magnet_MainTableSummary Diese Tabelle zeigt eine Liste der Magnete an, die dazu benutzt werden, um Emails automatisch nach festen Kriterien zu sortieren. Jede Reihe zeigt an, wie der Magnet definiert ist, in welche Kategorie er einsortiert und eine Schaltfläche, um den Magnet zu löschen. ! Configuration_MainTableSummary Diese Tabelle enthält einige Formulare zur Konfiguration von POPFile. ! Configuration_InsertionTableSummary Diese Tabelle enthält Schaltflächen zur Konfiguration, ob bestimmte Änderungen an Kopfzeilen oder Betreff der Email gemacht werden sollen, bevor diese an das Email Programm weitergegeben wird. ! Security_MainTableSummary Diese Tabelle bietet Einstellungsmöglichkeiten, die die Sicherheit von POPFile insgesamt betreffen, ob es automatisch auf neue Versionen prüfen soll oder ob Statistiken über die Leistung von POPFile an eine zentrale Datenbank zwecks der Erstellung von Gesamtstatistiken geschickt werden sollen. ! Advanced_MainTableSummary Diese Tabelle enthält eine Liste von Wörtern, die POPFile ignoriert, wenn es eine Email analysiert. Dies betrifft Wörter, die besonders häufig in Emails auftauchen. Diese sind reihenweise alphabetisch nach dem ersten Buchstaben sortiert. ! |
From: <sta...@us...> - 2003-03-09 15:53:44
|
Update of /cvsroot/popfile/engine/languages In directory sc8-pr-cvs1:/tmp/cvs-serv19495 Modified Files: Português do Brasil.msg Log Message: fixed 2 emailed file errors: an extra > char, and a changed accent char Index: Português do Brasil.msg =================================================================== RCS file: /cvsroot/popfile/engine/languages/Português do Brasil.msg,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** Português do Brasil.msg 5 Mar 2003 22:46:54 -0000 1.9 --- Português do Brasil.msg 9 Mar 2003 15:53:41 -0000 1.10 *************** *** 18,22 **** Previous Anterior Next Próximo ! >From De Subject Assunto Classification Classificação --- 18,22 ---- Previous Anterior Next Próximo ! From De Subject Assunto Classification Classificação *************** *** 102,106 **** Advanced_Error2 Palavras ignoradas podem somente conter caracteres alfanuméricos, ., _, -, ou @ Advanced_Error3 '%s' adicionado na lista de Palavras Ignoradas ! Advanced_Error4 '%s' não estã na lista de Palavras Ignoradas Advanced_Error5 '%s' removido da lista de Palavras Ignoradas Advanced_StopWords Palavras Ignoradas --- 102,106 ---- Advanced_Error2 Palavras ignoradas podem somente conter caracteres alfanuméricos, ., _, -, ou @ Advanced_Error3 '%s' adicionado na lista de Palavras Ignoradas ! Advanced_Error4 '%s' não está na lista de Palavras Ignoradas Advanced_Error5 '%s' removido da lista de Palavras Ignoradas Advanced_StopWords Palavras Ignoradas |
From: <jgr...@us...> - 2003-03-08 00:51:54
|
Update of /cvsroot/popfile/engine/Proxy In directory sc8-pr-cvs1:/tmp/cvs-serv11857/Proxy Modified Files: POP3.pm Log Message: Moved the set up of timeeout, mcount and ecount to Configuration.pm where they belong since they are globals and were being set up in POP3 Index: POP3.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -d -r1.48 -r1.49 *** POP3.pm 6 Mar 2003 23:10:19 -0000 1.48 --- POP3.pm 8 Mar 2003 00:51:50 -0000 1.49 *************** *** 62,68 **** $self->config_( 'secure_port', 110 ); - # The default timeout in seconds for POP3 commands - $self->global_config_( 'timeout', 60 ); - # Only accept connections from the local machine for POP3 $self->config_( 'local', 1 ); --- 62,65 ---- *************** *** 70,77 **** # Whether to do classification on TOP as well $self->config_( 'toptoo', 0 ); - - # Start with no messages downloaded and no error - $self->global_config_( 'mcount', 0 ); - $self->global_config_( 'ecount', 0 ); # The separator within the POP3 username is : --- 67,70 ---- |
From: <jgr...@us...> - 2003-03-08 00:51:53
|
Update of /cvsroot/popfile/engine/POPFile In directory sc8-pr-cvs1:/tmp/cvs-serv11857/POPFile Modified Files: Configuration.pm Log Message: Moved the set up of timeeout, mcount and ecount to Configuration.pm where they belong since they are globals and were being set up in POP3 Index: Configuration.pm =================================================================== RCS file: /cvsroot/popfile/engine/POPFile/Configuration.pm,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** Configuration.pm 8 Mar 2003 00:50:27 -0000 1.14 --- Configuration.pm 8 Mar 2003 00:51:50 -0000 1.15 *************** *** 82,85 **** --- 82,88 ---- $self->global_config_( 'ecount', 0 ); + # The default timeout in seconds for POP3 commands + $self->global_config_( 'timeout', 60 ); + # Subject modification (global setting is on) $self->global_config_( 'subject', 1 ); |
From: <jgr...@us...> - 2003-03-08 00:50:30
|
Update of /cvsroot/popfile/engine/POPFile In directory sc8-pr-cvs1:/tmp/cvs-serv11405/POPFile Modified Files: Configuration.pm Log Message: Could not resist making a comment even clearer after a forum post by Sam Index: Configuration.pm =================================================================== RCS file: /cvsroot/popfile/engine/POPFile/Configuration.pm,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** Configuration.pm 7 Mar 2003 13:33:12 -0000 1.13 --- Configuration.pm 8 Mar 2003 00:50:27 -0000 1.14 *************** *** 68,74 **** --- 68,85 ---- # message_count is a local counter within that download, for sorting # purposes must sort on download_count and then message_count + # + # download_count is incremented every time POPFile forks to + # start a session for downloading messages (see Proxy::Proxy::service + # for details) $self->global_config_( 'download_count', 0 ); + # We keep track of the total number of messages downloaded (the mcount) + # and the total number of classification errors made (ecount) which is + # actually the number of times a message is reclassified in the UI + + $self->global_config_( 'mcount', 0 ); + $self->global_config_( 'ecount', 0 ); + # Subject modification (global setting is on) $self->global_config_( 'subject', 1 ); *************** *** 77,81 **** $self->global_config_( 'xtc', 1 ); ! # Adding the X-POPFile-Link is no $self->global_config_( 'xpl', 1 ); --- 88,92 ---- $self->global_config_( 'xtc', 1 ); ! # Adding the X-POPFile-Link is on $self->global_config_( 'xpl', 1 ); |
From: <jgr...@us...> - 2003-03-07 13:33:17
|
Update of /cvsroot/popfile/engine/POPFile In directory sc8-pr-cvs1:/tmp/cvs-serv27350/POPFile Modified Files: Configuration.pm Log Message: Fixed problems in the upgrade list for configuration parameters because download_count is now global and there was an error in corpus Index: Configuration.pm =================================================================== RCS file: /cvsroot/popfile/engine/POPFile/Configuration.pm,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** Configuration.pm 6 Mar 2003 21:25:54 -0000 1.12 --- Configuration.pm 7 Mar 2003 13:33:12 -0000 1.13 *************** *** 187,191 **** # Parameters that are now handled by Classifier::Bayes ! 'corpus', 'bayes_corpus corpus', 'unclassified_probability', 'bayes_unclassified_probability', --- 187,191 ---- # Parameters that are now handled by Classifier::Bayes ! 'corpus', 'bayes_corpus', 'unclassified_probability', 'bayes_unclassified_probability', *************** *** 204,207 **** --- 204,208 ---- 'xpl', 'GLOBAL_xpl', 'xtc', 'GLOBAL_xtc', + 'download_count', 'GLOBAL_download_count', # Parameters that are now handled by POPFile::Logger *************** *** 211,215 **** # Parameters that are now handled by Proxy::POP3 - 'download_count', 'pop3_download_count', 'localpop', 'pop3_local', 'port', 'pop3_port', --- 212,215 ---- |
From: <ssc...@us...> - 2003-03-07 08:32:19
|
Update of /cvsroot/popfile/engine/UI In directory sc8-pr-cvs1:/tmp/cvs-serv19043 Modified Files: HTML.pm Log Message: changed main history form to POST (bug 690451 and others) Index: HTML.pm =================================================================== RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v retrieving revision 1.109 retrieving revision 1.110 diff -C2 -d -r1.109 -r1.110 *** HTML.pm 6 Mar 2003 22:08:14 -0000 1.109 --- HTML.pm 7 Mar 2003 08:32:16 -0000 1.110 *************** *** 2717,2721 **** # History page main form ! $body .= "<form id=\"HistoryMainForm\" action=\"/history\" method=\"get\">\n"; $body .= "<input type=\"hidden\" name=\"search\" value=\"$self->{form__}{search}\" />\n"; $body .= "<input type=\"hidden\" name=\"sort\" value=\"$self->{form__}{sort}\" />\n"; --- 2717,2721 ---- # History page main form ! $body .= "<form id=\"HistoryMainForm\" action=\"/history\" method=\"POST\">\n"; $body .= "<input type=\"hidden\" name=\"search\" value=\"$self->{form__}{search}\" />\n"; $body .= "<input type=\"hidden\" name=\"sort\" value=\"$self->{form__}{sort}\" />\n"; |
From: <ssc...@us...> - 2003-03-07 08:31:25
|
Update of /cvsroot/popfile/engine/UI In directory sc8-pr-cvs1:/tmp/cvs-serv18719 Modified Files: Tag: v0/18/1 HTML.pm Log Message: changed main history form to POST (bug 690451 and others) Index: HTML.pm =================================================================== RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v retrieving revision 1.98 retrieving revision 1.98.2.1 diff -C2 -d -r1.98 -r1.98.2.1 *** HTML.pm 28 Feb 2003 00:21:03 -0000 1.98 --- HTML.pm 7 Mar 2003 08:31:20 -0000 1.98.2.1 *************** *** 2846,2850 **** # History page main form ! $body .= "<form id=\"HistoryMainForm\" action=\"/history\" method=\"get\">\n"; $body .= "<input type=\"hidden\" name=\"search\" value=\"$self->{form}{search}\" />\n"; $body .= "<input type=\"hidden\" name=\"sort\" value=\"$self->{form}{sort}\" />\n"; --- 2846,2850 ---- # History page main form ! $body .= "<form id=\"HistoryMainForm\" action=\"/history\" method=\"POST\">\n"; $body .= "<input type=\"hidden\" name=\"search\" value=\"$self->{form}{search}\" />\n"; $body .= "<input type=\"hidden\" name=\"sort\" value=\"$self->{form}{sort}\" />\n"; |
From: <ssc...@us...> - 2003-03-07 02:59:41
|
Update of /cvsroot/popfile/engine/Proxy In directory sc8-pr-cvs1:/tmp/cvs-serv10161 Modified Files: Proxy.pm Log Message: fixed reporting of remaining child processes Index: Proxy.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/Proxy.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Proxy.pm 7 Mar 2003 00:10:15 -0000 1.3 --- Proxy.pm 7 Mar 2003 02:59:38 -0000 1.4 *************** *** 162,166 **** delete $self->{children__}{$kid}; ! $self->log_( "Done with $kid (" . (length(keys %{$self->{children__}})-1) . " to go)" ); } } --- 162,166 ---- delete $self->{children__}{$kid}; ! $self->log_( "Done with $kid (" . scalar(keys %{$self->{children__}}) . " to go)" ); } } |
From: <jgr...@us...> - 2003-03-07 00:10:18
|
Update of /cvsroot/popfile/engine/Proxy In directory sc8-pr-cvs1:/tmp/cvs-serv17778/Proxy Modified Files: Proxy.pm Log Message: Wasn't reporting connection timeout errors correctly Index: Proxy.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/Proxy.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Proxy.pm 6 Mar 2003 23:10:20 -0000 1.2 --- Proxy.pm 7 Mar 2003 00:10:15 -0000 1.3 *************** *** 427,431 **** # An error has occurred reading from the mail server ! $self->tee_( $client, "$self->{connection_timeout_error}$eol" ); return $self->{connection_timeout_error_}; } --- 427,431 ---- # An error has occurred reading from the mail server ! $self->tee_( $client, "$self->{connection_timeout_error_}$eol" ); return $self->{connection_timeout_error_}; } |
From: <jgr...@us...> - 2003-03-06 23:15:29
|
Update of /cvsroot/popfile/engine/Classifier In directory sc8-pr-cvs1:/tmp/cvs-serv1989/Classifier Modified Files: Bayes.pm Log Message: Initialize global config items in one place: Configuration.pm Index: Bayes.pm =================================================================== RCS file: /cvsroot/popfile/engine/Classifier/Bayes.pm,v retrieving revision 1.115 retrieving revision 1.116 diff -C2 -d -r1.115 -r1.116 *** Bayes.pm 5 Mar 2003 21:58:19 -0000 1.115 --- Bayes.pm 6 Mar 2003 22:08:13 -0000 1.116 *************** *** 110,122 **** my ( $self ) = @_; - # Subject modification (global setting is on) - $self->global_config_( 'subject', 1 ); - - # Adding the X-Text-Classification on - $self->global_config_( 'xtc', 1 ); - - # Adding the X-POPFile-Link is no - $self->global_config_( 'xpl', 1 ); - # No default unclassified probability $self->config_( 'unclassified_probability', 0 ); --- 110,113 ---- |
From: <jgr...@us...> - 2003-03-06 23:11:43
|
Update of /cvsroot/popfile/engine/Proxy In directory sc8-pr-cvs1:/tmp/cvs-serv28356/Proxy Modified Files: POP3.pm Proxy.pm SMTP.pm Log Message: Forgot to have the pipe parameter for the SMTP child Index: POP3.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v retrieving revision 1.47 retrieving revision 1.48 diff -C2 -d -r1.47 -r1.48 *** POP3.pm 6 Mar 2003 21:25:54 -0000 1.47 --- POP3.pm 6 Mar 2003 23:10:19 -0000 1.48 *************** *** 328,335 **** if ( $command =~ /QUIT/i ) { if ( $mail ) { ! $self->echo_response_($mail, $client, $command ); close $mail; } else { ! $self->tee_( $client, "+OK goodbye$eol" ); } last; --- 328,335 ---- if ( $command =~ /QUIT/i ) { if ( $mail ) { ! $self->echo_response_( $mail, $client, $command ); close $mail; } else { ! $self->tee_( $client, "+OK goodbye$eol" ); } last; Index: Proxy.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/Proxy.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Proxy.pm 6 Mar 2003 22:39:02 -0000 1.1 --- Proxy.pm 6 Mar 2003 23:10:20 -0000 1.2 *************** *** 52,68 **** # This is the error message returned if the connection at any # time times out while handling a command ! ! $self->{connection_timeout_error_} = ''; # This is the error returned (with the host and port appended) # if contacting the remote server fails ! ! $self->{connection_failed_error_} = ''; # This is a regular expression used by get_response_ to determine # if a response from the remote server is good or not (good being # that the last command succeeded) ! ! $self->{good_response_} = ''; return bless $self, $type; --- 52,68 ---- # This is the error message returned if the connection at any # time times out while handling a command ! # ! # $self->{connection_timeout_error_} = ''; # This is the error returned (with the host and port appended) # if contacting the remote server fails ! # ! # $self->{connection_failed_error_} = ''; # This is a regular expression used by get_response_ to determine # if a response from the remote server is good or not (good being # that the last command succeeded) ! # ! # $self->{good_response_} = ''; return bless $self, $type; Index: SMTP.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/SMTP.pm,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** SMTP.pm 6 Mar 2003 21:30:31 -0000 1.6 --- SMTP.pm 6 Mar 2003 23:10:20 -0000 1.7 *************** *** 83,87 **** sub child__ { ! my ( $self, $client, $download_count ) = @_; # Number of messages downloaded in this session --- 83,87 ---- sub child__ { ! my ( $self, $client, $download_count, $pipe ) = @_; # Number of messages downloaded in this session |
From: <jgr...@us...> - 2003-03-06 23:00:24
|
Update of /cvsroot/popfile/engine/UI In directory sc8-pr-cvs1:/tmp/cvs-serv1989/UI Modified Files: HTML.pm Log Message: Initialize global config items in one place: Configuration.pm Index: HTML.pm =================================================================== RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v retrieving revision 1.108 retrieving revision 1.109 diff -C2 -d -r1.108 -r1.109 *** HTML.pm 5 Mar 2003 21:58:21 -0000 1.108 --- HTML.pm 6 Mar 2003 22:08:14 -0000 1.109 *************** *** 133,139 **** $self->config_( 'local', 1 ); - # The default location for the message files - $self->global_config_( 'msgdir', 'messages/' ); - # Use the default skin $self->config_( 'skin', 'SimplyBlue' ); --- 133,136 ---- |
From: <jgr...@us...> - 2003-03-06 22:58:23
|
Update of /cvsroot/popfile/engine/Proxy In directory sc8-pr-cvs1:/tmp/cvs-serv15083 Added Files: Proxy.pm Log Message: Added the Proxy::Proxy module that does generic text-based Internet protocol proxying --- NEW FILE: Proxy.pm --- package Proxy::Proxy; # --------------------------------------------------------------------------------------------- # # This module implements the base class for all POPFile proxy Modules # # Copyright (c) 2001-2003 John Graham-Cumming # # --------------------------------------------------------------------------------------------- use POPFile::Module; @ISA = ( "POPFile::Module" ); use IO::Handle; use IO::Socket; use IO::Select; # A handy variable containing the value of an EOL for networks my $eol = "\015\012"; use POSIX ":sys_wait_h"; #---------------------------------------------------------------------------- # new # # Class new() function, all real work gets done by initialize and # the things set up here are more for documentation purposes than # anything so that you know that they exists # #---------------------------------------------------------------------------- sub new { my $type = shift; my $self = POPFile::Module->new(); # A reference to the classifier $self->{classifier__} = 0; # List of file handles to read from active children, this # maps the PID for each child to its associated pipe handle $self->{children__} = {}; # Reference to a child() method called to handle a proxy # connection, reference to flush_child_data() method used # to clear out pipes $self->{child_} = 0; $self->{flush_child_data_} = \&flush_child_data_; # This is the error message returned if the connection at any # time times out while handling a command $self->{connection_timeout_error_} = ''; # This is the error returned (with the host and port appended) # if contacting the remote server fails $self->{connection_failed_error_} = ''; # This is a regular expression used by get_response_ to determine # if a response from the remote server is good or not (good being # that the last command succeeded) $self->{good_response_} = ''; return bless $self, $type; } # --------------------------------------------------------------------------------------------- # # start # # Called when all configuration information has been loaded from disk. # # The method should return 1 to indicate that it started correctly, if it returns # 0 then POPFile will abort loading immediately # # --------------------------------------------------------------------------------------------- sub start { my ( $self ) = @_; # Open the socket used to receive request for proxy service $self->{server__} = IO::Socket::INET->new( Proto => 'tcp', $self->config_( 'local' ) == 1 ? (LocalAddr => 'localhost') : (), LocalPort => $self->config_( 'port' ), Listen => SOMAXCONN, Reuse => 1 ); if ( !defined( $self->{server__} ) ) { print <<EOM; \nCouldn't start the $self->name() proxy because POPFile could not bind to the POP3 listen port $self->config_( '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 and the port you specified is less than 1024). EOM return 0; } # 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__} ); return 1; } # --------------------------------------------------------------------------------------------- # # stop # # Called when POPFile is closing down, this is the last method that will get called before # the object is destroyed. There is not return value from stop(). # # --------------------------------------------------------------------------------------------- sub stop { my ( $self ) = @_; # 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__} ) ); for my $kid (keys %{$self->{children__}}) { close $self->{children__}{$kid}; } } # --------------------------------------------------------------------------------------------- # # reaper # # Called when a child process terminates somewhere in POPFile. The object should check # to see if it was one of its children and do any necessary processing by calling waitpid() # on any child handles it has # # There is no return value from this method # # --------------------------------------------------------------------------------------------- sub reaper { my ( $self ) = @_; # Look for children that have completed and then flush the data from their # associated pipe and see if any of our children have data ready to read from their pipes, my @kids = keys %{$self->{children__}}; if ( $#kids >= 0 ) { for my $kid (@kids) { if ( waitpid( $kid, &WNOHANG ) == $kid ) { $self->{flush_child_data_}( $self, $self->{children__}{$kid} ); close $self->{children__}{$kid}; delete $self->{children__}{$kid}; $self->log_( "Done with $kid (" . (length(keys %{$self->{children__}})-1) . " to go)" ); } } } } # --------------------------------------------------------------------------------------------- # # 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 # # $handle The handle of the child's pipe # # --------------------------------------------------------------------------------------------- sub flush_child_data_ { my ( $self, $handle ) = @_; my $stats_changed = 0; while ( &{$self->{pipeready_}}($handle) ) { my $class = <$handle>; if ( defined( $class ) ) { $class =~ s/[\r\n]//g; $self->{classifier__}->set_bucket_parameter( $class, 'count', $self->{classifier__}->get_bucket_parameter( $class, 'count' ) + 1 ); $self->global_config_( 'mcount', $self->global_config_( 'mcount' ) + 1 ); $stats_changed = 1; $self->log_( "Incrementing $class" ); } else { # This is here so that we get in errorneous position where the pipeready # 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->{ui__}->invalidate_history_cache(); $self->{configuration__}->save_configuration(); $self->{classifier__}->write_parameters(); } } # --------------------------------------------------------------------------------------------- # # service # # service() is a called periodically to give the module a chance to do housekeeping work. # # If any problem occurs that requires POPFile to shutdown service() should return 0 and # the top level process will gracefully terminate POPFile including calling all stop() # methods. In normal operation return 1. # # --------------------------------------------------------------------------------------------- sub service { 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_}( $self, $self->{children__}{$kid} ); } # 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_} ) ) { 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->config_( 'local' ) == 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->global_config_( 'download_count', $self->global_config_( '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; } # If we fail to fork, or are in the child process then process this request if ( !defined( $pid ) || ( $pid == 0 ) ) { $self->{child_}( $self, $client, $self->global_config_( 'download_count' ), $pipe ); exit(0) if ( defined( $pid ) ); } } close $client; } } return 1; } # --------------------------------------------------------------------------------------------- # # forked # # This is called when some module forks POPFile and is within the context of the child # process so that this module can close any duplicated file handles that are not needed. # # There is no return value from this method # # --------------------------------------------------------------------------------------------- sub forked { my ( $self ) = @_; close $self->{server__}; for my $kid (keys %{$self->{children__}}) { close $self->{children__}{$kid}; } } # --------------------------------------------------------------------------------------------- # # tee_ # # $socket The stream (created with IO::) to send the string to # $text The text to output # # Sends $text to $socket and sends $text to debug output # # --------------------------------------------------------------------------------------------- sub tee_ { my ( $self, $socket, $text ) = @_; # Send the message to the debug output and then send it to the appropriate socket $self->log_( $text ); print $socket $text if $socket->connected; } # --------------------------------------------------------------------------------------------- # # echo_to_dot_ # # $mail The stream (created with IO::) to send the message to (the remote mail server) # $client The local mail client (created with IO::) that needs the response # # echo all information from the $mail server until a single line with a . is seen # # --------------------------------------------------------------------------------------------- sub echo_to_dot_ { my ( $self, $mail, $client ) = @_; while ( <$mail> ) { # Check for an abort last if ( $self->{alive_} == 0 ); print $client $_; # The termination has to be a single line with exactly a dot on it and nothing # else other than line termination characters. This is vital so that we do # not mistake a line beginning with . as the end of the block last if ( /^\.(\r\n|\r|\n)$/ ); } } # --------------------------------------------------------------------------------------------- # # flush_extra_ - Read extra data from the mail server and send to client, this is to handle # POP servers that just send data when they shouldn't. I've seen one that sends # debug messages! # # Returns the extra data flushed # # $mail The handle of the real mail server # $client The mail client talking to us # $discard If 1 then the extra output is discarded # # --------------------------------------------------------------------------------------------- sub flush_extra_ { my ( $self, $mail, $client, $discard ) = @_; if ( $mail ) { if ( $mail->connected ) { my $selector = new IO::Select( $mail ); my $buf = ''; my $max_length = 8192; while( 1 ) { last unless () = $selector->can_read(0.01); last unless ( my $n = sysread( $mail, $buf, $max_length, length $buf ) ); $self->tee_( $client, $buf ) if ( $discard != 1 ); return $buf; } } } return ''; } # --------------------------------------------------------------------------------------------- # # get_response_ # # $mail The stream (created with IO::) to send the message to (the remote mail server) # $client The local mail client (created with IO::) that needs the response # $command The text of the command to send (we add an EOL) # $error The error string if the response fails # # Send $command to $mail, receives the response and echoes it to the $client and the debug # output. Returns the response # # --------------------------------------------------------------------------------------------- sub get_response_ { my ( $self, $mail, $client, $command, $error ) = @_; unless ( $mail ) { # $mail is undefined - return an error intead of crashing $self->tee_( $client, "$self->{connection_timeout_error_}$eol" ); return $self->{connection_timeout_error_}; } # Send the command (followed by the appropriate EOL) to the mail server $self->tee_( $mail, $command. $eol ); my $response; # Retrieve a single string containing the response if ( $mail->connected ) { my $selector = new IO::Select( $mail ); my ($ready) = $selector->can_read($self->global_config_( 'timeout' )); if ( ( defined( $ready ) ) && ( $ready == $mail ) ) { $response = <$mail>; if ( $response ) { # Echo the response up to the mail client $self->tee_( $client, $response ); return $response; } } # An error has occurred reading from the mail server $self->tee_( $client, "$self->{connection_timeout_error}$eol" ); return $self->{connection_timeout_error_}; } return $response; } # --------------------------------------------------------------------------------------------- # # echo_response_ # # $mail The stream (created with IO::) to send the message to (the remote mail server) # $client The local mail client (created with IO::) that needs the response # $command The text of the command to send (we add an EOL) # # Send $command to $mail, receives the response and echoes it to the $client and the debug # output. Returns true if the response was +OK and false if not # # --------------------------------------------------------------------------------------------- sub echo_response_ { my ( $self, $mail, $client, $command ) = @_; # Determine whether the response began with the string +OK. If it did then return 1 # else return 0 return ( $self->get_response_( $mail, $client, $command ) =~ /$self->{good_response_}/ ); } # --------------------------------------------------------------------------------------------- # # verify_connected_ # # $mail The handle of the real mail server # $client The handle to the mail client # $hostname The host name of the remote server # $port The port # # Check that we are connected to $hostname on port $port putting the open handle in $mail. # Any messages need to be sent to $client # # --------------------------------------------------------------------------------------------- sub verify_connected_ { my ( $self, $mail, $client, $hostname, $port ) = @_; # Check to see if we are already connected return $mail if ( $mail && $mail->connected ); # Connect to the real mail server on the standard port $mail = IO::Socket::INET->new( Proto => "tcp", PeerAddr => $hostname, PeerPort => $port ); # Check that the connect succeeded for the remote server 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->global_config_( 'timeout' )); # Read the response from the real server and say OK 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->global_config_( 'timeout' ) * 100) ) { if ( !$hit_newline ) { $temp_buf = $self->flush_extra_( $mail, $client, 1 ); $hit_newline = ( $temp_buf =~ /[\r\n]/ ); $buf .= $temp_buf; } else { last; } } } $self->log_( "Connection returned: $buf" ); # Clean up junk following a newline for my $i ( 0..4 ) { $self->flush_extra_( $mail, $client, 1 ); } return $mail; } } # Tell the client we failed $self->tee_( $client, "$self->{connection_failed_error_} $hostname:$port$eol" ); return undef; } # GETTERS/SETTERS sub classifier { my ( $self, $value ) = @_; if ( defined( $value ) ) { $self->{classifier__} = $value; } return $self->{classifier__}; } sub ui { my ( $self, $value ) = @_; if ( defined( $value ) ) { $self->{ui__} = $value; } return $self->{ui__}; } 1; |
From: <jgr...@us...> - 2003-03-06 21:30:36
|
Update of /cvsroot/popfile/engine/Proxy In directory sc8-pr-cvs1:/tmp/cvs-serv17787/Proxy Modified Files: SMTP.pm Log Message: Send the classification statistics up to parent from SMTP module Index: SMTP.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/SMTP.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** SMTP.pm 6 Mar 2003 21:25:55 -0000 1.5 --- SMTP.pm 6 Mar 2003 21:30:31 -0000 1.6 *************** *** 139,143 **** if ( $self->echo_response_( $mail, $client, $command ) ) { $count += 1; ! $self->{classifier__}->classify_and_modify( $client, $mail, $download_count, $count, 0, '' ); my $response = <$mail>; $self->tee_( $client, $response ); --- 139,148 ---- if ( $self->echo_response_( $mail, $client, $command ) ) { $count += 1; ! ! my $class = $self->{classifier__}->classify_and_modify( $client, $mail, $download_count, $count, 0, '' ); ! ! # Tell the parent that we just handled a mail ! print $pipe "$class$eol"; ! my $response = <$mail>; $self->tee_( $client, $response ); |
From: <jgr...@us...> - 2003-03-06 21:25:58
|
Update of /cvsroot/popfile/engine/Proxy In directory sc8-pr-cvs1:/tmp/cvs-serv15347/Proxy Modified Files: POP3.pm SMTP.pm Log Message: Enabled SMTP support Index: POP3.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -d -r1.46 -r1.47 *** POP3.pm 5 Mar 2003 21:36:57 -0000 1.46 --- POP3.pm 6 Mar 2003 21:25:54 -0000 1.47 *************** *** 36,41 **** $self->name( 'pop3' ); ! $self->{child_} = \&child__; ! $self->{flush_child_data_} = \&flush_child_data__; return $self; --- 36,43 ---- $self->name( 'pop3' ); ! $self->{child_} = \&child__; ! $self->{connection_timeout_error_} = '-ERR no response from mail server'; ! $self->{connection_failed_error_} = '-ERR can\'t connect to'; ! $self->{good_response_} = '^\+OK'; return $self; *************** *** 73,138 **** $self->global_config_( 'ecount', 0 ); - # This counter is used when creating unique IDs for message stored - # in the history. The history message files have the format - # - # popfile{download_count}={message_count}.msg - # - # Where the download_count is derived from this value and the - # message_count is a local counter within that download, for sorting - # purposes must sort on download_count and then message_count - $self->config_( 'download_count', 0 ); - # The separator within the POP3 username is : $self->config_( 'separator', ':' ); return 1; - } - - # --------------------------------------------------------------------------------------------- - # - # 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 - # - # $handle The handle of the child's pipe - # - # --------------------------------------------------------------------------------------------- - sub flush_child_data__ - { - my ( $self, $handle ) = @_; - - my $stats_changed = 0; - - while ( &{$self->{pipeready_}}($handle) ) - { - my $class = <$handle>; - - if ( defined( $class ) ) { - $class =~ s/[\r\n]//g; - - $self->{classifier__}->set_bucket_parameter( $class, 'count', - $self->{classifier__}->get_bucket_parameter( $class, 'count' ) + 1 ); - $self->global_config_( 'mcount', $self->global_config_( 'mcount' ) + 1 ); - $stats_changed = 1; - - $self->log_( "Incrementing $class" ); - } else { - # This is here so that we get in errorneous position where the pipeready - # 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->{ui__}->invalidate_history_cache(); - $self->{configuration__}->save_configuration(); - $self->{classifier__}->write_parameters(); - } } --- 75,82 ---- Index: SMTP.pm =================================================================== RCS file: /cvsroot/popfile/engine/Proxy/SMTP.pm,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SMTP.pm 3 Mar 2003 15:21:48 -0000 1.4 --- SMTP.pm 6 Mar 2003 21:25:55 -0000 1.5 *************** *** 1,3 **** ! # DISABLED POPFILE LOADABLE MODULE package Proxy::SMTP; --- 1,3 ---- ! # POPFILE LOADABLE MODULE package Proxy::SMTP; *************** *** 28,32 **** { my $type = shift; ! my $self; # Must call bless before attempting to call any methods --- 28,32 ---- { my $type = shift; ! my $self = Proxy::Proxy->new(); # Must call bless before attempting to call any methods *************** *** 36,39 **** --- 36,44 ---- $self->name( 'smtp' ); + $self->{child_} = \&child__; + $self->{connection_timeout_error_} = '554 Transaction failed'; + $self->{connection_failed_error_} = '554 Transaction failed, can\'t connect to'; + $self->{good_response_} = '^[23]'; + return $self; } *************** *** 50,62 **** my ( $self ) = @_; ! # Default ports for SMTP ! $self->{configuration}->{configuration}{smtp_port} = 25; # Where to forward on to ! $self->{configuration}->{configuration}{smtp_chain_server} = ''; ! $self->{configuration}->{configuration}{smtp_chain_port} = 25; # Only accept connections from the local machine for smtp ! $self->{configuration}->{configuration}{smtp} = 1; return 1; --- 55,70 ---- my ( $self ) = @_; ! # Default port for SMTP service ! ! $self->config_( 'port', 25 ); # Where to forward on to ! ! $self->config_( 'chain_server', '' ); ! $self->config_( 'chain_port', 25 ); # Only accept connections from the local machine for smtp ! ! $self->config_( 'local', 1 ); return 1; *************** *** 65,69 **** # --------------------------------------------------------------------------------------------- # ! # child # # The worker method that is called when we get a good connection from a client --- 73,77 ---- # --------------------------------------------------------------------------------------------- # ! # child__ # # The worker method that is called when we get a good connection from a client *************** *** 73,77 **** # # --------------------------------------------------------------------------------------------- ! sub child { my ( $self, $client, $download_count ) = @_; --- 81,85 ---- # # --------------------------------------------------------------------------------------------- ! sub child__ { my ( $self, $client, $download_count ) = @_; *************** *** 84,88 **** # Tell the client that we are ready for commands and identify our version number ! tee( $self, $client, "220 SMTP POPFile (v$self->{configuration}->{major_version}.$self->{configuration}->{minor_version}.$self->{configuration}->{build_version}) server ready$eol" ); # Retrieve commands from the client and process them until the client disconnects or --- 92,96 ---- # Tell the client that we are ready for commands and identify our version number ! $self->tee_( $client, "220 SMTP POPFile (vTODO.TODO.TODO) server ready$eol" ); # Retrieve commands from the client and process them until the client disconnects or *************** *** 96,115 **** $command =~ s/(\015|\012)//g; ! debug( $self, "Command: --$command--" ); ! ! # Check for a possible abort ! last if ( $self->{alive} == 0 ); if ( $command =~ /HELO/ ) { ! if ( $self->{configuration}->{configuration}{smtp_chain_server} ne '' ) { ! if ( $mail = verify_connected( $self, $mail, $client, $self->{configuration}->{configuration}{smtp_chain_server}, $self->{configuration}->{configuration}{smtp_chain_port} ) ) { ! echo_response( $self, $mail, $client, $command ); } else { last; } ! flush_extra( $self, $mail, $client, 0 ); } else { ! tee( $self, $client, "421 service not available$eol" ); } --- 104,120 ---- $command =~ s/(\015|\012)//g; ! $self->log_( "Command: --$command--" ); if ( $command =~ /HELO/ ) { ! if ( $self->config_( 'chain_server' ) ) { ! if ( $mail = $self->verify_connected_( $mail, $client, $self->config_( 'chain_server' ), $self->config_( 'chain_port' ) ) ) { ! $self->echo_response_( $mail, $client, $command ); } else { last; } ! $self->flush_extra_( $mail, $client, 0 ); } else { ! $self->tee_( $client, "421 service not available$eol" ); } *************** *** 124,129 **** ( $command =~ /HELP/i ) || ( $command =~ /RSET/i ) ) { ! echo_response( $self, $mail, $client, $command ); ! flush_extra( $self, $mail, $client, 0 ); next; } --- 129,134 ---- ( $command =~ /HELP/i ) || ( $command =~ /RSET/i ) ) { ! $self->echo_response_( $mail, $client, $command ); ! $self->flush_extra_( $mail, $client, 0 ); next; } *************** *** 132,139 **** # Get the message from the remote server, if there's an error then we're done, but if not then # we echo each line of the message until we hit the . at the end ! if ( echo_response( $self, $mail, $client, $command ) ) { $count += 1; ! $self->{pop3}->classify_and_modify( $self, $mail, $client, $download_count, $count, 0, '' ); ! flush_extra( $self, $mail, $client, 0 ); next; } --- 137,146 ---- # Get the message from the remote server, if there's an error then we're done, but if not then # we echo each line of the message until we hit the . at the end ! if ( $self->echo_response_( $mail, $client, $command ) ) { $count += 1; ! $self->{classifier__}->classify_and_modify( $client, $mail, $download_count, $count, 0, '' ); ! my $response = <$mail>; ! $self->tee_( $client, $response ); ! $self->flush_extra_( $mail, $client, 0 ); next; } *************** *** 145,152 **** if ( $command =~ /QUIT/i ) { if ( $mail ) { ! echo_response( $self, $mail, $client, $command ); close $mail; } else { ! tee( $self, $client, "221 goodbye$eol" ); } last; --- 152,159 ---- if ( $command =~ /QUIT/i ) { if ( $mail ) { ! $self->echo_response_( $mail, $client, $command ); close $mail; } else { ! $self->tee_( $client, "221 goodbye$eol" ); } last; *************** *** 155,163 **** # Don't know what this is so let's just pass it through and hope for the best if ( $mail && $mail->connected ) { ! echo_response( $self, $mail, $client, $command ); ! flush_extra( $self, $mail, $client, 0 ); next; } else { ! tee( $self, $client, "500 unknown command or bad syntax$eol" ); last; } --- 162,170 ---- # Don't know what this is so let's just pass it through and hope for the best if ( $mail && $mail->connected ) { ! $self->echo_response_( $mail, $client, $command ); ! $self->flush_extra_( $mail, $client, 0 ); next; } else { ! $self->tee_( $client, "500 unknown command or bad syntax$eol" ); last; } *************** *** 166,320 **** close $mail if defined( $mail ); close $client; - } - - # --------------------------------------------------------------------------------------------- - # - # get_response - # - # $mail The stream (created with IO::) to send the message to (the remote mail server) - # $client The local mail client (created with IO::) that needs the response - # $command The text of the command to send (we add an EOL) - # - # Send $command to $mail, receives the response and echoes it to the $client and the debug - # output. Returns the response - # - # --------------------------------------------------------------------------------------------- - sub get_response - { - my ( $self, $mail, $client, $command ) = @_; - - unless ( $mail ) { - # $mail is undefined - return an error intead of crashing - tee( $self, $client, "554 Transaction failed$eol" ); - return "554"; - } - - # Send the command (followed by the appropriate EOL) to the mail server - tee( $self, $mail, $command. $eol ); - - my $response; - - # Retrieve a single string containing the response - if ( $mail->connected ) { - $response = <$mail>; - - if ( $response ) { - # Echo the response up to the mail client - tee( $self, $client, $response ); - } else { - # An error has occurred reading from the mail server - tee( $self, $client, "554 Transaction failed$eol" ); - return "554"; - } - } - - return $response; - } - - # --------------------------------------------------------------------------------------------- - # - # echo_response - # - # $mail The stream (created with IO::) to send the message to (the remote mail server) - # $client The local mail client (created with IO::) that needs the response - # $command The text of the command to send (we add an EOL) - # - # Send $command to $mail, receives the response and echoes it to the $client and the debug - # output. Returns true if the response was +OK and false if not - # - # --------------------------------------------------------------------------------------------- - sub echo_response - { - my ( $self, $mail, $client, $command ) = @_; - - # Determine whether the response began with the string +OK. If it did then return 1 - # else return 0 - return ( get_response( $self, $mail, $client, $command ) < 400 ); - } - - # --------------------------------------------------------------------------------------------- - # - # verify_connected - # - # $mail The handle of the real mail server - # $client The handle to the mail client - # $hostname The host name of the remote server - # $port The port - # - # Check that we are connected to $hostname on port $port putting the open handle in $mail. - # Any messages need to be sent to $client - # - # --------------------------------------------------------------------------------------------- - sub verify_connected - { - my ( $self, $mail, $client, $hostname, $port ) = @_; - - # Check to see if we are already connected - return $mail if ( $mail && $mail->connected ); - - # Connect to the real mail server on the standard port - $mail = IO::Socket::INET->new( - Proto => "tcp", - PeerAddr => $hostname, - PeerPort => $port ); - - # Check that the connect succeeded for the remote server - if ( $mail ) { - if ( $mail->connected ) { - # 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 ); - last unless () = $selector->can_read($self->{configuration}->{configuration}{timeout}); - - # Read the response from the real server and say OK - 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; - } - } - - # Tell the client we failed - tee( $self, $client, "554 Transaction failed failed to connect to $hostname:$port$eol" ); - - return undef; - } - - # --------------------------------------------------------------------------------------------- - # - # flush_extra - Read extra data from the mail server and send to client, this is to handle - # POP servers that just send data when they shouldn't. I've seen one that sends - # debug messages! - # - # $mail The handle of the real mail server - # $client The mail client talking to us - # $discard If 1 then the extra output is discarded - # - # --------------------------------------------------------------------------------------------- - sub flush_extra - { - my ( $self, $mail, $client, $discard ) = @_; - - if ( $mail ) { - if ( $mail->connected ) { - my $selector = new IO::Select( $mail ); - my $buf = ''; - my $max_length = 8192; - - while( 1 ) { - last unless () = $selector->can_read(0.01); - last unless ( my $n = sysread( $mail, $buf, $max_length, length $buf ) ); - - tee( $self, $client, $buf ) if ( $discard != 1 ); - } - } - } } --- 173,176 ---- |
From: <jgr...@us...> - 2003-03-06 21:25:58
|
Update of /cvsroot/popfile/engine/POPFile In directory sc8-pr-cvs1:/tmp/cvs-serv15347/POPFile Modified Files: Configuration.pm Log Message: Enabled SMTP support Index: Configuration.pm =================================================================== RCS file: /cvsroot/popfile/engine/POPFile/Configuration.pm,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** Configuration.pm 5 Mar 2003 22:49:04 -0000 1.11 --- Configuration.pm 6 Mar 2003 21:25:54 -0000 1.12 *************** *** 60,63 **** --- 60,86 ---- $self->config_( 'piddir', './' ); + # This counter is used when creating unique IDs for message stored + # in the history. The history message files have the format + # + # popfile{download_count}={message_count}.msg + # + # Where the download_count is derived from this value and the + # message_count is a local counter within that download, for sorting + # purposes must sort on download_count and then message_count + + $self->global_config_( 'download_count', 0 ); + + # Subject modification (global setting is on) + $self->global_config_( 'subject', 1 ); + + # Adding the X-Text-Classification on + $self->global_config_( 'xtc', 1 ); + + # Adding the X-POPFile-Link is no + $self->global_config_( 'xpl', 1 ); + + # The default location for the message files + $self->global_config_( 'msgdir', 'messages/' ); + return 1; } |
From: <jgr...@us...> - 2003-03-05 22:49:08
|
Update of /cvsroot/popfile/engine/Classifier In directory sc8-pr-cvs1:/tmp/cvs-serv32363/Classifier Modified Files: MailParse.pm Log Message: Implemented the automatic upgrade of pre v0.19.0 command line and configuration file parameters Index: MailParse.pm =================================================================== RCS file: /cvsroot/popfile/engine/Classifier/MailParse.pm,v retrieving revision 1.94 retrieving revision 1.95 diff -C2 -d -r1.94 -r1.95 *** MailParse.pm 5 Mar 2003 21:15:32 -0000 1.94 --- MailParse.pm 5 Mar 2003 22:49:03 -0000 1.95 *************** *** 890,894 **** } ! $self->{date} = $argument if ( $header =~ /^Date/i ); # Look for MIME --- 890,894 ---- } ! $self->{date__} = $argument if ( $header =~ /^Date/i ); # Look for MIME |
From: <jgr...@us...> - 2003-03-05 22:49:08
|
Update of /cvsroot/popfile/engine/POPFile In directory sc8-pr-cvs1:/tmp/cvs-serv32363/POPFile Modified Files: Configuration.pm Log Message: Implemented the automatic upgrade of pre v0.19.0 command line and configuration file parameters Index: Configuration.pm =================================================================== RCS file: /cvsroot/popfile/engine/POPFile/Configuration.pm,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** Configuration.pm 5 Mar 2003 21:15:33 -0000 1.10 --- Configuration.pm 5 Mar 2003 22:49:04 -0000 1.11 *************** *** 75,79 **** if ( open PID, '>' . $self->config_( 'piddir' ) . 'popfile.pid' ) { ! print PID "$$\n"; close PID; } --- 75,79 ---- if ( open PID, '>' . $self->config_( 'piddir' ) . 'popfile.pid' ) { ! print PID "$$\n"; close PID; } *************** *** 120,126 **** if ( $ARGV[$i] =~ /^-(.+)$/ ) { ! if ( defined($self->{configuration_parameters__}{$1}) ) { if ( $i < $#ARGV ) { ! $self->{configuration_parameters__}{$1} = $ARGV[$i+1]; $i += 2; } else { --- 120,127 ---- if ( $ARGV[$i] =~ /^-(.+)$/ ) { ! my $parameter = $self->upgrade_parameter__($1); ! if ( defined($self->{configuration_parameters__}{$parameter}) ) { if ( $i < $#ARGV ) { ! $self->{configuration_parameters__}{$parameter} = $ARGV[$i+1]; $i += 2; } else { *************** *** 142,148 **** # --------------------------------------------------------------------------------------------- # # load_configuration # ! # Loads the current configuration of popfile into the configuration hash from a local file. # The format is a very simple set of lines containing a space separated name and value pair # --- 143,229 ---- # --------------------------------------------------------------------------------------------- # + # upgrade_parameter__ + # + # Given a parameter from either command line or from the configuration file return the + # upgraded version (e.g. the old port parameter becomes pop3_port + # + # --------------------------------------------------------------------------------------------- + + sub upgrade_parameter__ + { + my ( $self, $parameter ) = @_; + + # This table maps from the old parameter to the new one, for example the old + # xpl parameter which controls insertion of the X-POPFile-Link header in email + # is now called GLOBAL_xpl and is accessed through POPFile::Module::global_config_ + # The old piddir parameter is now config_piddir and is accessed through either config_ + # if accessed from the config module or through module_config_ from outside + + my %upgrades = ( + + # Parameters that are now handled by Classifier::Bayes + + 'corpus', 'bayes_corpus corpus', + 'unclassified_probability', 'bayes_unclassified_probability', + + # Parameters that are now handled by POPFile::Configuration + + 'piddir', 'config_piddir', + + # Parameters that are now global to POPFile + + 'debug', 'GLOBAL_debug', + 'ecount', 'GLOBAL_ecount', + 'mcount', 'GLOBAL_mcount', + 'msgdir', 'GLOBAL_msgdir', + 'subject', 'GLOBAL_subject', + 'imeout', 'GLOBAL_timeout', + 'xpl', 'GLOBAL_xpl', + 'xtc', 'GLOBAL_xtc', + + # Parameters that are now handled by POPFile::Logger + + 'logdir', 'logger_logdir', + + # Parameters that are now handled by Proxy::POP3 + + 'download_count', 'pop3_download_count', + 'localpop', 'pop3_local', + 'port', 'pop3_port', + 'sport', 'pop3_secure_port', + 'server', 'pop3_secure_server', + 'separator', 'pop3_separator', + 'optoo', 'pop3_toptoo', + + # Parameters that are now handled by UI::HTML + + 'archive', 'ui_archive', + 'archive_classes', 'ui_archive_classes', + 'archive_dir', 'ui_archive_dir', + 'history_days', 'ui_history_days', + 'language', 'ui_language', + 'last_reset', 'ui_last_reset', + 'last_update_check', 'ui_last_update_check', + 'localui', 'ui_local', + 'page_size', 'ui_page_size', + 'password', 'ui_password', + 'send_stats', 'ui_send_stats', + 'skin', 'ui_skin', + 'test_language', 'ui_test_language', + 'update_check', 'ui_update_check' + ); + + if ( defined( $upgrades{$parameter} ) ) { + return $upgrades{$parameter}; + } else { + return $parameter; + } + } + + # --------------------------------------------------------------------------------------------- + # # load_configuration # ! # Loads the current configuration of popfile into the configuration hash from a local file. # The format is a very simple set of lines containing a space separated name and value pair # *************** *** 156,160 **** s/(\015|\012)//g; if ( /(\S+) (.+)/ ) { ! $self->{configuration_parameters__}{$1} = $2; } } --- 237,246 ---- s/(\015|\012)//g; if ( /(\S+) (.+)/ ) { ! my $parameter = $1; ! my $value = $2; ! ! $parameter = $self->upgrade_parameter__($parameter); ! ! $self->{configuration_parameters__}{$parameter} = $value; } } |
From: <sta...@us...> - 2003-03-05 22:46:59
|
Update of /cvsroot/popfile/engine/languages In directory sc8-pr-cvs1:/tmp/cvs-serv31359 Modified Files: Português do Brasil.msg Log Message: brought into sync with English.msg rev. 1.22 by Adriano Gomes Index: Português do Brasil.msg =================================================================== RCS file: /cvsroot/popfile/engine/languages/Português do Brasil.msg,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Português do Brasil.msg 23 Feb 2003 21:06:24 -0000 1.8 --- Português do Brasil.msg 5 Mar 2003 22:46:54 -0000 1.9 *************** *** 18,22 **** Previous Anterior Next Próximo ! From De Subject Assunto Classification Classificação --- 18,22 ---- Previous Anterior Next Próximo ! >From De Subject Assunto Classification Classificação *************** *** 44,59 **** # The header and footer that appear on every UI page Header_Title Centro de Controle POPFile ! Header_Shutdown Desligar Header_History Histórico Header_Buckets Buckets Header_Configuration Configuração Header_Advanced Avançado ! Header_Security Securança Header_Magnets Ímãs Footer_HomePage POPFile Home Page Footer_Manual Manual ! Footer_Forums Forums ! Footer_FeedMe Me Mantenha! Footer_RequestFeature Pedir uma Característica Footer_MailingList Lista de Email --- 44,59 ---- # The header and footer that appear on every UI page Header_Title Centro de Controle POPFile ! Header_Shutdown Desligar o POPFile Header_History Histórico Header_Buckets Buckets Header_Configuration Configuração Header_Advanced Avançado ! Header_Security Segurança Header_Magnets Ímãs Footer_HomePage POPFile Home Page Footer_Manual Manual ! Footer_Forums Fóruns ! Footer_FeedMe Doação Footer_RequestFeature Pedir uma Característica Footer_MailingList Lista de Email *************** *** 73,77 **** Configuration_History Número de emails por página Configuration_HistoryUpdate Alterado o número de emails por página para %s ! Configuration_Days ` Número de dias para manter no histórico Configuration_DaysUpdate Alterado o número de dias para manter no histórico para %s Configuration_UserInterface Interface de Usuário --- 73,77 ---- Configuration_History Número de emails por página Configuration_HistoryUpdate Alterado o número de emails por página para %s ! Configuration_Days Número de dias para manter no histórico Configuration_DaysUpdate Alterado o número de dias para manter no histórico para %s Configuration_UserInterface Interface de Usuário *************** *** 85,92 **** Configuration_TCPTimeoutSecs Tempo limite de conexão TCP em segundos Configuration_TCPTimeoutUpdate Alterado o tempo limite de conexão TCP para %s ! Configuration_ClassificationInsertion Inserção de Classificação Configuration_SubjectLine Modificação de linha de assunto ! Configuration_XTCInsertion Inserção de X-Text-Classification ! Configuration_XPLInsertion Inserção de X-POPFile-Link Configuration_Logging Logging Configuration_None Nada --- 85,92 ---- Configuration_TCPTimeoutSecs Tempo limite de conexão TCP em segundos Configuration_TCPTimeoutUpdate Alterado o tempo limite de conexão TCP para %s ! Configuration_ClassificationInsertion Inserção de Texto no Email Configuration_SubjectLine Modificação de linha de assunto ! Configuration_XTCInsertion Cabeçalho X-Text-Classification ! Configuration_XPLInsertion Cabeçalho X-POPFile-Link Configuration_Logging Logging Configuration_None Nada *************** *** 96,115 **** Configuration_LoggerOutput Saída do Logger Configuration_GeneralSkins Skins ! Configuration_SmallSkins Small Skins ! Configuration_TinySkins Tiny Skins ! Advanced_Error1 '%s' já está na lista de palavras ignoradas Advanced_Error2 Palavras ignoradas podem somente conter caracteres alfanuméricos, ., _, -, ou @ ! Advanced_Error3 '%s' adicionado na lista de palavras ignoradas ! Advanced_Error4 '%s' não estã na lista de palavras ignoradas ! Advanced_Error5 '%s' removido da lista de palavras ignoradas Advanced_StopWords Palavras Ignoradas ! Advanced_Message1 As seguintes palavras são ignoradas de todas as classificações porque ocorrem muito freqüentemente. Advanced_AddWord Adicionar palavra Advanced_RemoveWord Remover palavra History_Filter (apenas mostrando o bucket <font color="%s">%s</font>) ! History_FilterBy Filter By ! History_Search (procurado pelo assunto %s) History_Title Mensagens Recentes History_Jump Ir para a mensagem --- 96,115 ---- Configuration_LoggerOutput Saída do Logger Configuration_GeneralSkins Skins ! Configuration_SmallSkins Skins Pequenos ! Configuration_TinySkins Skins Bem Pequenos ! Advanced_Error1 '%s' já está na lista de Palavras Ignoradas Advanced_Error2 Palavras ignoradas podem somente conter caracteres alfanuméricos, ., _, -, ou @ ! Advanced_Error3 '%s' adicionado na lista de Palavras Ignoradas ! Advanced_Error4 '%s' não estã na lista de Palavras Ignoradas ! Advanced_Error5 '%s' removido da lista de Palavras Ignoradas Advanced_StopWords Palavras Ignoradas ! Advanced_Message1 O POPFile ignora as seguintes palavras freqüentemente usadas: Advanced_AddWord Adicionar palavra Advanced_RemoveWord Remover palavra History_Filter (apenas mostrando o bucket <font color="%s">%s</font>) ! History_FilterBy Filtrar Por ! History_Search (procurado por de/assunto %s) History_Title Mensagens Recentes History_Jump Ir para a mensagem *************** *** 125,132 **** History_RemovePage Remover a Página History_Remove Para remover entradas do histórico clique ! History_SearchMessage Procurar Assunto History_NoMessages Nenhuma mensagem ! History_ShowMagnet Magnetizado History_Magnet (apenas mostrando mensagens classificadas por íma) Password_Title Senha --- 125,133 ---- History_RemovePage Remover a Página History_Remove Para remover entradas do histórico clique ! History_SearchMessage Procurar De/Assunto History_NoMessages Nenhuma mensagem ! History_ShowMagnet magnetizado History_Magnet (apenas mostrando mensagens classificadas por íma) + History_ResetSearch Reset Password_Title Senha *************** *** 137,141 **** Security_Error1 A porta segura deve ser um número entre 1 e 65535 Security_Stealth Modo Stealth/Operação Servidor ! Security_NoStealthMode Nãoo (Modo Stealth) Security_ExplainStats (Com isto ligado o POPFile envia uma vez por dia os seguintes três valores para um script em www.usethesource.com: bc (o número total de buckets que você tem), mc (o número total de mensagens que o POPFile classificou) e ec (o número total de erros de classificação). Isto fica guardado em um arquivo e eu vou usar para publicar algumas estatísticas sobre como as pessoas usam o POPFile e o quão bem ele funciona. Meu servidor web mantém seus arquivos de log por mais ou menos 5 dias e então os deleta; Eu não estou guardando nenhuma conexão entre as estatístcas e os endereços IP de cada um.) Security_ExplainUpdate (Com isto ligado o POPFile envia uma vez por dia os seguintes três valores para um script em www.usethesource.com: ma (o número maior da versão do seu POPFile), mi (o número menor da versão do seu POPFile) and bn (o número do build da sua versão do POPFile). O POPFile recebe uma resposta na forma de um gráfico que aparece no topo da página se uma nova versão estiver disponível. Meu servidor web mantém seus arquivos de log por mais ou menos 5 dias e então os deleta; Eu não estou guardando nenhuma conexão entre as verificações de versão e os endereços IP de cada um.) --- 138,142 ---- Security_Error1 A porta segura deve ser um número entre 1 e 65535 Security_Stealth Modo Stealth/Operação Servidor ! Security_NoStealthMode Não (Modo Stealth) Security_ExplainStats (Com isto ligado o POPFile envia uma vez por dia os seguintes três valores para um script em www.usethesource.com: bc (o número total de buckets que você tem), mc (o número total de mensagens que o POPFile classificou) e ec (o número total de erros de classificação). Isto fica guardado em um arquivo e eu vou usar para publicar algumas estatísticas sobre como as pessoas usam o POPFile e o quão bem ele funciona. Meu servidor web mantém seus arquivos de log por mais ou menos 5 dias e então os deleta; Eu não estou guardando nenhuma conexão entre as estatístcas e os endereços IP de cada um.) Security_ExplainUpdate (Com isto ligado o POPFile envia uma vez por dia os seguintes três valores para um script em www.usethesource.com: ma (o número maior da versão do seu POPFile), mi (o número menor da versão do seu POPFile) and bn (o número do build da sua versão do POPFile). O POPFile recebe uma resposta na forma de um gráfico que aparece no topo da página se uma nova versão estiver disponível. Meu servidor web mantém seus arquivos de log por mais ou menos 5 dias e então os deleta; Eu não estou guardando nenhuma conexão entre as verificações de versão e os endereços IP de cada um.) *************** *** 148,157 **** Security_SecurePort Porta segura Security_SecurePortUpdate Alterada a porta para %s; esta alteração não terá efeito até que você reinicie o POPFile ! Security_POP3 Aceitar conexões POP3 de máquinas remotas ! Security_UI Aceitar conexões HTTP (Interface de Usuário) de máquinas remotas Security_UpdateTitle Verificação Automática de Atualização Security_Update Verificar diariamente atualizações para o POPFile Security_StatsTitle Reportar Estatísticas ! Security_Stats Enviar estatísticas para o John diariamente Magnet_Error1 Ímã '%s' já existe no bucket '%s' --- 149,158 ---- Security_SecurePort Porta segura Security_SecurePortUpdate Alterada a porta para %s; esta alteração não terá efeito até que você reinicie o POPFile ! Security_POP3 Aceitar conexões POP3 de máquinas remotas (requer reiniciar o POPFile) ! Security_UI Aceitar conexões HTTP (Interface de Usuário) de máquinas remotas (requer reiniciar o POPFile) Security_UpdateTitle Verificação Automática de Atualização Security_Update Verificar diariamente atualizações para o POPFile Security_StatsTitle Reportar Estatísticas ! Security_Stats Enviar estatísticas diariamente Magnet_Error1 Ímã '%s' já existe no bucket '%s' *************** *** 161,165 **** Magnet_Message1 Os seguintes ímãs fazem os emails serem sempre classificados no bucket especificado. Magnet_CreateNew Criar Novo Ímã ! Magnet_Explanation Três tipos de íma estão disponíveis: <ul><li>De um endereço ou nome:</b> Por exemplo: ad...@co... para pegar um endereço específico, <br />companhia.com para pegar todo mundo que manda email de companhia.com, <br />Adriano Gomes para pegar uma pessoa específica, Adriano para pegar todos os Adrianos</li><li><b>Para um endereço ou nome:</b> Como um ímã De: mas para o endereço Para: de um email</li><li><b>Palavras no assunto:</b> Por exemplo: olá para pegar todas as mensagens com olá no assunto</li></ul> Magnet_MagnetType Tipo do ímã Magnet_Value Valor --- 162,166 ---- Magnet_Message1 Os seguintes ímãs fazem os emails serem sempre classificados no bucket especificado. Magnet_CreateNew Criar Novo Ímã ! Magnet_Explanation Três tipos de íma estão disponíveis: </b><ul><li><b>De um endereço ou nome:</b> Por exemplo: ad...@co... para pegar um endereço específico, <br />companhia.com para pegar todo mundo que manda email de companhia.com, <br />Adriano Gomes para pegar uma pessoa específica, Adriano para pegar todos os Adrianos</li><li><b>Para um endereço ou nome:</b> Como um ímã De: mas para o endereço Para: de um email</li><li><b>Palavras no assunto:</b> Por exemplo: olá para pegar todas as mensagens com olá no assunto</li></ul> Magnet_MagnetType Tipo do ímã Magnet_Value Valor *************** *** 201,204 **** --- 202,206 ---- Bucket_DisabledGlobally Desabilitado globalmente Bucket_To para + Bucket_Quarantine Quarentena SingleBucket_Title Detalhes para %s *************** *** 207,227 **** SingleBucket_Percentage Percentual do total SingleBucket_WordTable Tabela de Palavras para %s ! SingleBucket_Message1 Palavras com asterico (*) foram usadas para classificação durante esta sessão do POPFile. Clique em qualquer palavra para procurar sua probabilidade para todos os buckets. SingleBucket_Unique %s únicas ! Header_MenuSummary This table is the navigation menu which allows access to each of the different pages of the control center. ! History_MainTableSummary This table shows the sender and subject of recently received messages and allows them to be reviewed and reclassified. Clicking on the subject line will show the full message text, along with information about why it was classified as it was. The 'Should be' column allows you to specify which bucket the message belongs in, or to undo that change. The 'Delete' column allows you to delete specific messages from the history if you don't need them anymore. ! History_OpenMessageSummary This table contains the full text of an email message, with the words that are used for classification highlighted according to the bucket that was most relevant for each. ! Bucket_MainTableSummary This table provides an overview of the classification buckets. Each row shows the bucket name, the word count total for that bucket, the actual number of individual words in each bucket, whether the email's subject line will be modified when it gets classified to that bucket, whether to quarantine the messages received in that bucket, and a table to pick the color used in displaying anything related to that bucket in the control center. ! Bucket_StatisticsTableSummary This table provides three sets of statistics on the overall performance of PopFile. The first is how accurate its classification is, the second is how many emails have been classified, and to which buckets, and the third is how many words are in each bucket, and what their relative percentages are. ! Bucket_MaintenanceTableSummary This table contains forms that allow you to create, delete or rename buckets, and to lookup a word in all of the buckets to see its relative probabilities. ! Bucket_AccuracyChartSummary This table graphically represents the accuracy of the email classification. ! Bucket_BarChartSummary This table graphically represents a percentage allocation for each of the different buckets. It is used for both number of emails classified, and total word counts. ! Bucket_LookupResultsSummary This table shows the probabilities associated with any given word of the corpus. For each bucket, it shows the frequency that that word occurs, the probability that it will occur in that bucket, and the overall effect on the score of the bucket if that word exists in an email. ! Bucket_WordListTableSummary This table provides a listing of all the words for a particular bucket, organized by common first letter for each row. ! Magnet_MainTableSummary This table shows the list of magnets that are used to automatically classify email according to fixed rules. Each row shows how the magnet is defined, what bucket it is intended for, and a button to delete the magnet. ! Configuration_MainTableSummary This table contains a number of forms to allow you to control the configuration of PopFile. ! Configuration_InsertionTableSummary This table contains buttons that determine whether or not certain modifications are made to the headers or subject line of the email before it is passed on to the email client. ! Security_MainTableSummary This table provides sets of controls that affect the security of the overall configuration of PopFile, whether it should automatically check for updates to the program, and whether statistics about PopFile's performance should be sent to the central datastore of the program's author for general information. ! Advanced_MainTableSummary This table provides a list of words that PopFile ignores when classifying email due to their relative frequency in email in general. They are organized per row according to the first letter of the words. --- 209,231 ---- SingleBucket_Percentage Percentual do total SingleBucket_WordTable Tabela de Palavras para %s ! SingleBucket_Message1 Palavras com asterisco (*) foram usadas para classificação durante esta sessão do POPFile. Clique em qualquer palavra para procurar sua probabilidade para todos os buckets. SingleBucket_Unique %s únicas + Session_Title A Sessão do POPFile Expirou + Session_Error Sua sessão do POPFile expirou. Isto pode ter acontecido por iniciar e finalizar o POPFile mas deixar seu navegador web aberto. Por favor clique em um dos links acima para continuar a usar o POPFile ! Header_MenuSummary Esta tabela é o menu de navegação que permite o aceso a cada uma das diferentes páginas do centro de controle. ! History_MainTableSummary Esta tabela mostra o remetente e o assunto das mensagens recentemente recebidas e permite revê-las e reclassificá-las. Clicar na linha de assunto vai mostrar o texto completo da mensagem, juntamente com informação sobre a razão dela ter sido classificada como foi. A coluna 'Deveria ser' permite a você especificar a qual bucket pertence a mensagem, ou desfazer alguma alteração. A coluna 'Deletar' permite deletar mensagens específicas do histórico caso você não precise mais delas. ! History_OpenMessageSummary Esta tabela contém o texto completo de uma mensagem de email, com as palavras que foram usadas para a classificação destacadas de acordo com o bucket que foi o mais relevante. ! Bucket_MainTableSummary Esta tabela provê uma visão geral dos buckets de classificação. Cada linha mostra o nome do bucket, o total da contagem de palavras do bucket, o real número de palavras individuais em cada bucket, se a linha de assunto do email será modificada quando for classificada neste bucket, se as mensagens recebidas neste bucket serão colocadas em quarentena, e uma tabela para escolher a cor usada para mostrar qualquer coisa relacionada ao bucket no centro de controle. ! Bucket_StatisticsTableSummary Esta tabela provê três conjuntos de estatísticas sobre a performance geral do PopFile. O primeiro é sobre quão precisa é a classificação, a segundo é sobre quantos emails foram classificados, e em quais buckets, e a terceira é sobre quantas palavras existem em cada bucket, e quais os percentuais relativos. ! Bucket_MaintenanceTableSummary Esta tabela contém formulários que permitem a você criar, deletar ou renomear buckets, e procurar por alguma palavra em todos os buckets para ver suas probabilidades relativas. ! Bucket_AccuracyChartSummary Esta tabela representa graficamente a precisão da classificação de emails. ! Bucket_BarChartSummary Esta tabela representa graficamente a porcentagem de alocação para cada um dos diferentes buckets. É usada para o número de emails classificados, e contagem total de palavras. ! Bucket_LookupResultsSummary Esta tabela mostra as probabilidades associadas com qualquer palavra do corpo do email. Para cada bucket, mostra a freqüência com que ocorre tal palavra, a probabilidade de ela ocorrer neste bucket, e o efeito geral no score do bucket se tal palavra existir em um email. ! Bucket_WordListTableSummary Esta tabela provê uma listagem de todas as palavras de um bucket em particular, ordenadas pela primeira letra em comum para cada linha. ! Magnet_MainTableSummary Esta tabela mostra a lista de ímãs que são usados para classificar automaticamente emails de acordo com regras fixas. Cada linha mostra como o ímã é definido, para qual bucket é destinado, e um botão para deletar o ímã. ! Configuration_MainTableSummary Esta tabela contém vários formulários que permitem a você controlar a configuração do PopFile. ! Configuration_InsertionTableSummary Esta tabela contém botões que determinam se certas modificações serão feitas nos cabeçalhos ou linhas de assunto do email antes de ele ser repassado para o cliente de email. ! Security_MainTableSummary Esta tabela provê conjuntos de controles que afetam a configuração geral de segurança do PopFile, se ele deverá checar automaticamente por atualizações do programa, e quais estatísticas sobre a performance do PopFile deverão ser enviadas para a central de armazenamento de dados do autor do programa para informação geral. ! Advanced_MainTableSummary Esta tabela provê uma lista de palavras que o PopFile ignora durante a classificação de email em razão de aparecerem freqüentemente em emails em geral. Elas são organizadas por linhas de acordo com a primeira letra das palavras. |
From: <jgr...@us...> - 2003-03-05 21:58:26
|
Update of /cvsroot/popfile/engine/UI In directory sc8-pr-cvs1:/tmp/cvs-serv11237/UI Modified Files: HTML.pm Log Message: Magnets now work Index: HTML.pm =================================================================== RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v retrieving revision 1.107 retrieving revision 1.108 diff -C2 -d -r1.107 -r1.108 *** HTML.pm 5 Mar 2003 21:36:58 -0000 1.107 --- HTML.pm 5 Mar 2003 21:58:21 -0000 1.108 *************** *** 1318,1322 **** my $found = 0; for my $bucket ($self->{classifier__}->get_buckets_with_magnets()) { ! if ( defined($self->{classifier__}->{magnets}{$bucket}{$self->{form__}{type}}{$self->{form__}{text}}) ) { $found = 1; $magnet_message = "<blockquote>\n<div class=\"error02\">\n<b>"; --- 1318,1323 ---- my $found = 0; for my $bucket ($self->{classifier__}->get_buckets_with_magnets()) { ! my %magnets = $self->{classifier__}->get_magnets( $bucket, $self->{form__}{type} ); ! if ( defined( $magnets{$self->{form__}{text}}) ) { $found = 1; $magnet_message = "<blockquote>\n<div class=\"error02\">\n<b>"; *************** *** 1327,1332 **** if ( $found == 0 ) { ! for my $bucket (keys %{$self->{classifier__}->{magnets}}) { ! for my $from (keys %{$self->{classifier__}->{magnets}{$bucket}{$self->{form__}{type}}}) { if ( ( $self->{form__}{text} =~ /\Q$from\E/ ) || ( $from =~ /\Q$self->{form__}{text}\E/ ) ) { $found = 1; --- 1328,1334 ---- if ( $found == 0 ) { ! for my $bucket ($self->{classifier__}->get_buckets_with_magnets()) { ! my %magnets = $self->{classifier__}->get_magnets( $bucket, $self->{form__}{type} ); ! for my $from (keys %magnets) { if ( ( $self->{form__}{text} =~ /\Q$from\E/ ) || ( $from =~ /\Q$self->{form__}{text}\E/ ) ) { $found = 1; *************** *** 1347,1359 **** $self->{form__}{text} =~ s/[ \t]+$//; ! $self->{classifier__}->{magnets}{$self->{form__}{bucket}}{$self->{form__}{type}}{$self->{form__}{text}} = 1; $magnet_message = "<blockquote>" . sprintf( $self->{language__}{Magnet_Error3}, "$self->{form__}{type}: $self->{form__}{text}", $self->{form__}{bucket} ) . "</blockquote>"; - $self->{classifier__}->save_magnets(); } } if ( defined($self->{form__}{dtype}) ) { ! delete $self->{classifier__}->{magnets}{$self->{form__}{bucket}}{$self->{form__}{dtype}}{$self->{form__}{dmagnet}}; ! $self->{classifier__}->save_magnets(); } --- 1349,1359 ---- $self->{form__}{text} =~ s/[ \t]+$//; ! $self->{classifier__}->create_magnet( $self->{form__}{bucket}, $self->{form__}{type}, $self->{form__}{text}); $magnet_message = "<blockquote>" . sprintf( $self->{language__}{Magnet_Error3}, "$self->{form__}{type}: $self->{form__}{text}", $self->{form__}{bucket} ) . "</blockquote>"; } } if ( defined($self->{form__}{dtype}) ) { ! $self->{classifier__}->delete_magnet( $self->{form__}{bucket}, $self->{form__}{dtype}, $self->{form__}{dmagnet}); } *************** *** 1370,1376 **** # magnet listing my $stripe = 0; ! for my $bucket (sort keys %{$self->{classifier__}->{magnets}}) { ! for my $type (sort keys %{$self->{classifier__}->{magnets}{$bucket}}) { ! for my $magnet (sort keys %{$self->{classifier__}->{magnets}{$bucket}{$type}}) { $body .= "<tr "; if ( $stripe ) { --- 1370,1376 ---- # magnet listing my $stripe = 0; ! for my $bucket ($self->{classifier__}->get_buckets_with_magnets()) { ! for my $type ($self->{classifier__}->get_magnet_types_in_bucket($bucket)) { ! for my $magnet ($self->{classifier__}->get_magnets( $bucket, $type)) { $body .= "<tr "; if ( $stripe ) { *************** *** 2897,2901 **** $body .= "<td class=\"top20\" valign=\"top\">\n"; $self->{classifier__}->classify_file($self->global_config_( 'msgdir' ) . "$self->{form__}{view}"); ! $body .= $self->{classifier__}->{scores}; $body .= "</td>\n</tr>\n"; } --- 2897,2901 ---- $body .= "<td class=\"top20\" valign=\"top\">\n"; $self->{classifier__}->classify_file($self->global_config_( 'msgdir' ) . "$self->{form__}{view}"); ! $body .= $self->{classifier__}->{scores__}; $body .= "</td>\n</tr>\n"; } |
From: <jgr...@us...> - 2003-03-05 21:58:24
|
Update of /cvsroot/popfile/engine/Classifier In directory sc8-pr-cvs1:/tmp/cvs-serv11237/Classifier Modified Files: Bayes.pm Log Message: Magnets now work Index: Bayes.pm =================================================================== RCS file: /cvsroot/popfile/engine/Classifier/Bayes.pm,v retrieving revision 1.114 retrieving revision 1.115 diff -C2 -d -r1.114 -r1.115 *** Bayes.pm 5 Mar 2003 21:15:29 -0000 1.114 --- Bayes.pm 5 Mar 2003 21:58:19 -0000 1.115 *************** *** 457,466 **** # --------------------------------------------------------------------------------------------- # ! # save_magnets # # Save all the magnet definitions # # --------------------------------------------------------------------------------------------- ! sub save_magnets { my ($self) = @_; --- 457,466 ---- # --------------------------------------------------------------------------------------------- # ! # save_magnets__ # # Save all the magnet definitions # # --------------------------------------------------------------------------------------------- ! sub save_magnets__ { my ($self) = @_; *************** *** 513,517 **** my $noattype; ! $noattype = $self->{parser__}->{$type}; $noattype =~ s/[@\$]/\./g; --- 513,517 ---- my $noattype; ! $noattype = $self->{parser__}->get_header($type); $noattype =~ s/[@\$]/\./g; *************** *** 1252,1255 **** --- 1252,1256 ---- # # --------------------------------------------------------------------------------------------- + sub echo_to_dot_ { *************** *** 1267,1270 **** --- 1268,1360 ---- last if ( /^\.(\r\n|\r|\n)$/ ); } + } + + # --------------------------------------------------------------------------------------------- + # + # get_buckets_with_magnets + # + # Returns the names of the buckets for which magnets are defined + # + # --------------------------------------------------------------------------------------------- + + sub get_buckets_with_magnets + { + my ( $self ) = @_; + + return sort keys %{$self->{magnets__}}; + } + + # --------------------------------------------------------------------------------------------- + # + # get_magnet_types_in_bucket + # + # Returns the types of the magnetsd in a specific bucket + # + # $bucket The bucket to search for magnets + # + # --------------------------------------------------------------------------------------------- + + sub get_magnet_types_in_bucket + { + my ( $self, $bucket ) = @_; + + return sort keys %{$self->{magnets__}{$bucket}}; + } + + # --------------------------------------------------------------------------------------------- + # + # get_magnets + # + # Returns the magnets of a certain type in a bucket + # + # $bucket The bucket to search for magnets + # + # --------------------------------------------------------------------------------------------- + + sub get_magnets + { + my ( $self, $bucket, $type ) = @_; + + return sort keys %{$self->{magnets__}{$bucket}{$type}}; + } + + # --------------------------------------------------------------------------------------------- + # + # create_magnet + # + # Make a new magnet + # + # $bucket The bucket the magnet belongs in + # $type The magnet type (e.g. from, to or subject) + # $text The text of the magnet + # + # --------------------------------------------------------------------------------------------- + + sub create_magnet + { + my ( $self, $bucket, $type, $text ) = @_; + + $self->{magnets__}{$bucket}{$type}{$text} = 1; + $self->save_magnets__(); + } + + # --------------------------------------------------------------------------------------------- + # + # delete_magnet + # + # Remove a new magnet + # + # $bucket The bucket the magnet belongs in + # $type The magnet type (e.g. from, to or subject) + # $text The text of the magnet + # + # --------------------------------------------------------------------------------------------- + + sub delete_magnet + { + my ( $self, $bucket, $type, $text ) = @_; + + delete $self->{magnets__}{$bucket}{$type}{$text}; + $self->save_magnets__(); } |
From: <jgr...@us...> - 2003-03-05 21:37:02
|
Update of /cvsroot/popfile/engine/UI In directory sc8-pr-cvs1:/tmp/cvs-serv729/UI Modified Files: HTML.pm Log Message: Completed working of the security page Index: HTML.pm =================================================================== RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v retrieving revision 1.106 retrieving revision 1.107 diff -C2 -d -r1.106 -r1.107 *** HTML.pm 5 Mar 2003 21:15:37 -0000 1.106 --- HTML.pm 5 Mar 2003 21:36:58 -0000 1.107 *************** *** 993,998 **** $self->config_( 'password', $self->{form__}{password} ) if ( defined($self->{form__}{password}) ); ! $self->config_( 'server', $self->{form__}{server} ) if ( defined($self->{form__}{server}) ); ! $self->config_( 'local', $self->{form__}{localpop}-1 ) if ( defined($self->{form__}{localpop}) ); $self->config_( 'local', $self->{form__}{localui}-1 ) if ( defined($self->{form__}{localui}) ); $self->config_( 'update_check', $self->{form__}{update_check}-1 ) if ( defined($self->{form__}{update_check}) ); --- 993,998 ---- $self->config_( 'password', $self->{form__}{password} ) if ( defined($self->{form__}{password}) ); ! $self->module_config_( 'pop3', 'secure_server', $self->{form__}{server} ) if ( defined($self->{form__}{server}) ); ! $self->module_config_( 'pop3', 'local', $self->{form__}{localpop}-1 ) if ( defined($self->{form__}{localpop}) ); $self->config_( 'local', $self->{form__}{localui}-1 ) if ( defined($self->{form__}{localui}) ); $self->config_( 'update_check', $self->{form__}{update_check}-1 ) if ( defined($self->{form__}{update_check}) ); *************** *** 1001,1005 **** if ( defined($self->{form__}{sport}) ) { if ( ( $self->{form__}{sport} >= 1 ) && ( $self->{form__}{sport} < 65536 ) ) { ! $self->config_( 'sport', $self->{form__}{sport} ); } else { $port_error = "<blockquote><div class=\"error01\">$self->{language__}{Security_Error1}</div></blockquote>"; --- 1001,1005 ---- if ( defined($self->{form__}{sport}) ) { if ( ( $self->{form__}{sport} >= 1 ) && ( $self->{form__}{sport} < 65536 ) ) { ! $self->module_config_( 'pop3', 'secure_port', $self->{form__}{sport} ); } else { $port_error = "<blockquote><div class=\"error01\">$self->{language__}{Security_Error1}</div></blockquote>"; *************** *** 1018,1022 **** $body .= "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" summary=\"\"><tr><td nowrap=\"nowrap\">\n"; ! if ( $self->config_( 'localpop' ) == 1 ) { $body .= "<form class=\"securitySwitch\" action=\"/security\">\n"; $body .= "<span class=\"securityWidgetStateOff\">$self->{language__}{Security_NoStealthMode}</span>\n"; --- 1018,1022 ---- $body .= "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" summary=\"\"><tr><td nowrap=\"nowrap\">\n"; ! if ( $self->module_config_( 'pop3', 'local' ) == 1 ) { $body .= "<form class=\"securitySwitch\" action=\"/security\">\n"; $body .= "<span class=\"securityWidgetStateOff\">$self->{language__}{Security_NoStealthMode}</span>\n"; *************** *** 1132,1147 **** $body .= "<form action=\"/security\">\n"; $body .= "<label class=\"securityLabel\" for=\"securitySecureServer\">$self->{language__}{Security_SecureServer}:</label><br />\n"; ! $body .= "<input type=\"text\" name=\"server\" id=\"securitySecureServer\" value=\"" . $self->config_( 'server' ) . "\" />\n"; $body .= "<input type=\"submit\" class=\"submit\" name=\"update_server\" value=\"$self->{language__}{Apply}\" />\n"; $body .= "<input type=\"hidden\" name=\"session\" value=\"$self->{session_key__}\" />\n</form>\n"; ! $body .= sprintf( $self->{language__}{Security_SecureServerUpdate}, $self->config_( 'server' ) ) if ( defined($self->{form__}{server}) ); # Secure Port widget $body .= "<form action=\"/security\">\n"; $body .= "<label class=\"securityLabel\" for=\"securitySecurePort\">$self->{language__}{Security_SecurePort}:</label><br />\n"; ! $body .= "<input type=\"text\" name=\"sport\" id=\"securitySecurePort\" value=\"" . $self->config_( 'sport' ) . "\" />\n"; $body .= "<input type=\"submit\" class=\"submit\" name=\"update_sport\" value=\"$self->{language__}{Apply}\" />\n"; $body .= "<input type=\"hidden\" name=\"session\" value=\"$self->{session_key__}\" />\n</form>\n$port_error"; ! $body .= sprintf( $self->{language__}{Security_SecurePortUpdate}, $self->config_( 'sport' ) ) if ( defined($self->{form__}{sport}) ); # end optional widgets placement --- 1132,1147 ---- $body .= "<form action=\"/security\">\n"; $body .= "<label class=\"securityLabel\" for=\"securitySecureServer\">$self->{language__}{Security_SecureServer}:</label><br />\n"; ! $body .= "<input type=\"text\" name=\"server\" id=\"securitySecureServer\" value=\"" . $self->module_config_( 'pop3', 'secure_server' ) . "\" />\n"; $body .= "<input type=\"submit\" class=\"submit\" name=\"update_server\" value=\"$self->{language__}{Apply}\" />\n"; $body .= "<input type=\"hidden\" name=\"session\" value=\"$self->{session_key__}\" />\n</form>\n"; ! $body .= sprintf( $self->{language__}{Security_SecureServerUpdate}, $self->module_config_( 'pop3', 'secure_server' ) ) if ( defined($self->{form__}{server}) ); # Secure Port widget $body .= "<form action=\"/security\">\n"; $body .= "<label class=\"securityLabel\" for=\"securitySecurePort\">$self->{language__}{Security_SecurePort}:</label><br />\n"; ! $body .= "<input type=\"text\" name=\"sport\" id=\"securitySecurePort\" value=\"" . $self->module_config_( 'pop3', 'secure_port' ) . "\" />\n"; $body .= "<input type=\"submit\" class=\"submit\" name=\"update_sport\" value=\"$self->{language__}{Apply}\" />\n"; $body .= "<input type=\"hidden\" name=\"session\" value=\"$self->{session_key__}\" />\n</form>\n$port_error"; ! $body .= sprintf( $self->{language__}{Security_SecurePortUpdate}, $self->module_config_( 'pop3', 'secure_port' ) ) if ( defined($self->{form__}{sport}) ); # end optional widgets placement |