steffen: server/kolab-resource-handlers/kolab-resource-handlers/resmgr kolabfilter.php, 1.26.2.4, 1.26.2.5
cvs at intevation.de
cvs at intevation.de
Thu May 18 13:13:38 CEST 2006
Author: steffen
Update of /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/resmgr
In directory doto:/tmp/cvs-serv1633
Modified Files:
Tag: kolab_2_0_branch
kolabfilter.php
Log Message:
Fix for Issue1243 (from header rewriting). Port to HEAD still pending
Index: kolabfilter.php
===================================================================
RCS file: /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/resmgr/Attic/kolabfilter.php,v
retrieving revision 1.26.2.4
retrieving revision 1.26.2.5
diff -u -d -r1.26.2.4 -r1.26.2.5
--- kolabfilter.php 29 Mar 2006 12:46:12 -0000 1.26.2.4
+++ kolabfilter.php 18 May 2006 11:13:36 -0000 1.26.2.5
@@ -90,10 +90,11 @@
$adrs = imap_rfc822_parse_adrlist($addr, $params['email_domain']);
foreach ($adrs as $adr) {
$adrdom = $adr->host;
- foreach( $domains as $dom ) {
- if( $dom == $adrdom ) return true;
- if( $params['verify_subdomains'] && substr($adrdom, -strlen($dom)-1) == ".$dom" ) return true;
- }
+ if( empty($adrdom) ) continue;
+ foreach( $domains as $dom ) {
+ if( $dom == $adrdom ) return true;
+ if( $params['verify_subdomains'] && substr($adrdom, -strlen($dom)-1) == ".$dom" ) return true;
+ }
}
return false;
}
@@ -184,12 +185,20 @@
$subject = false;
$senderok = true;
$rewrittenfrom = false;
-while (!feof(STDIN) && !$headers_done) {
+
+define( RM_STATE_READING_HEADER, 1 );
+define( RM_STATE_READING_FROM, 2 );
+define( RM_STATE_READING_SENDER, 3 );
+define( RM_STATE_READING_BODY, 4 );
+
+$state = RM_STATE_READING_HEADER;
+
+while (!feof(STDIN) && $state != RM_STATE_READING_BODY) {
$buffer = fgets(STDIN, 8192);
$line = rtrim( $buffer, "\r\n");
if( $line == '' ) {
// Done with headers
- $headers_done = true;
+ $state = RM_STATE_READING_BODY;
if( $from && $params['verify_from_header'] ) {
if( !verify_sender( strtolower($sender), strtolower($from), $client_address) ) {
myLog("$sender and $from differ!", RM_LOG_DEBUG);
@@ -207,15 +216,30 @@
}
}
}
- } else if( !$headers_done && $params['allow_sender_header'] && eregi( '^Sender: (.*)', $line, $regs ) ) {
- $from = $regs[1];
- } else if( !$headers_done && !$from && eregi( '^From: (.*)', $line, $regs ) ) {
- $from = $regs[1];
- } else if( !$headers_done && eregi( '^Subject: (.*)', $line, $regs ) ) {
- $subject = $regs[1];
- } else if( !$headers_done && eregi( '^Content-Type: text/calendar', $line ) ) {
- myLog("Found iCal data in message", RM_LOG_DEBUG);
- $ical = true;
+ } else {
+ if( $line[0] != ' ' && $line[0] != "\t" ) $state = RM_STATE_READING_HEADER;
+ switch( $state ) {
+ case RM_STATE_READING_HEADER:
+ if( $params['allow_sender_header'] && eregi( '^Sender: (.*)', $line, $regs ) ) {
+ $from = $regs[1];
+ $state = RM_STATE_READING_SENDER;
+ } else if( !$from && eregi( '^From: (.*)', $line, $regs ) ) {
+ $from = $regs[1];
+ $state = RM_STATE_READING_FROM;
+ } else if( eregi( '^Subject: (.*)', $line, $regs ) ) {
+ $subject = $regs[1];
+ } else if( eregi( '^Content-Type: text/calendar', $line ) ) {
+ myLog("Found iCal data in message", RM_LOG_DEBUG);
+ $ical = true;
+ }
+ break;
+ case RM_STATE_READING_FROM:
+ $from .= $line;
+ break;
+ case RM_STATE_READING_SENDER:
+ $from .= $line;
+ break;
+ }
}
if( fwrite($tmpf, $buffer) === false ) {
exit(EX_TEMPFAIL);
More information about the commits
mailing list