steffen: server/kolab-resource-handlers/kolab-resource-handlers/resmgr kolabfilter.php, 1.26.2.5, 1.26.2.6 misc.php, 1.4, 1.4.2.1
cvs at intevation.de
cvs at intevation.de
Sun May 21 14:09:20 CEST 2006
Author: steffen
Update of /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/resmgr
In directory doto:/tmp/cvs-serv19623/kolab-resource-handlers/resmgr
Modified Files:
Tag: kolab_2_0_branch
kolabfilter.php misc.php
Log Message:
Fix for Issue1245 (folded headers)
Index: kolabfilter.php
===================================================================
RCS file: /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/resmgr/Attic/kolabfilter.php,v
retrieving revision 1.26.2.5
retrieving revision 1.26.2.6
diff -u -d -r1.26.2.5 -r1.26.2.6
--- kolabfilter.php 18 May 2006 11:13:36 -0000 1.26.2.5
+++ kolabfilter.php 21 May 2006 12:09:18 -0000 1.26.2.6
@@ -71,11 +71,15 @@
// Temp file for storing the message
$tmpfname = tempnam( TMPDIR, 'IN.' );
$tmpf = fopen($tmpfname, "w");
+if( !$tmpf ) {
+ myLog("Error: Could not open $tempfname for writing: ".php_error(), RM_LOG_ERROR);
+ exit(EX_TEMPFAIL);
+}
// Cleanup function
function cleanup() {
global $tmpfname;
- file_exists($tmpfname) && unlink($tmpfname);
+ //file_exists($tmpfname) && unlink($tmpfname);
}
register_shutdown_function( 'cleanup' );
@@ -131,8 +135,6 @@
$senderdom = substr(strrchr($sender, '@'), 1);
foreach( $domains as $domain ) {
if( $params['verify_subdomains'] ) {
- //myLog( "Checking if ".substr($senderdom, -strlen($domain)-1)." == .$domain", RM_LOG_DEBUG );
- //myLog( "Checking if ".substr($fromdom, -strlen($domain)-1)." == .$domain", RM_LOG_DEBUG );
if( $client_addr != '127.0.0.1' &&
($senderdom == $domain ||
$fromdom == $domain ||
@@ -179,8 +181,6 @@
.", client_address=$client_address", RM_LOG_DEBUG);
$ical = false;
-$add_headers = array();
-$headers_done = false;
$from = false;
$subject = false;
$senderok = true;
@@ -188,8 +188,9 @@
define( RM_STATE_READING_HEADER, 1 );
define( RM_STATE_READING_FROM, 2 );
-define( RM_STATE_READING_SENDER, 3 );
-define( RM_STATE_READING_BODY, 4 );
+define( RM_STATE_READING_SUBJECT,3 );
+define( RM_STATE_READING_SENDER, 4 );
+define( RM_STATE_READING_BODY, 5 );
$state = RM_STATE_READING_HEADER;
@@ -228,6 +229,7 @@
$state = RM_STATE_READING_FROM;
} else if( eregi( '^Subject: (.*)', $line, $regs ) ) {
$subject = $regs[1];
+ $state = RM_STATE_READING_SUBJECT;
} else if( eregi( '^Content-Type: text/calendar', $line ) ) {
myLog("Found iCal data in message", RM_LOG_DEBUG);
$ical = true;
@@ -239,6 +241,9 @@
case RM_STATE_READING_SENDER:
$from .= $line;
break;
+ case RM_STATE_READING_SUBJECT:
+ $subject .= $line;
+ break;
}
}
if( fwrite($tmpf, $buffer) === false ) {
@@ -276,6 +281,11 @@
//$outputtime->start();
$tmpf = fopen($tmpfname,"r");
+if( !$tmpf ) {
+ myLog("Error: Could not open $tempfname for reading: ".php_error(), RM_LOG_ERROR);
+ exit(EX_TEMPFAIL);
+}
+
$smtp = new KolabSMTP( 'localhost', 10026 );
if( PEAR::isError( $smtp ) ) {
fwrite(STDOUT, $error->getMessage().", code ".$error->getCode()."\n");
@@ -288,30 +298,36 @@
else exit(EX_UNAVAILABLE);
}
-$headers_done = false;
-while (!feof($tmpf) && !$headers_done) {
+$state = RM_STATE_READING_HEADER;
+while (!feof($tmpf) && $state != RM_STATE_READING_BODY) {
$buffer = fgets($tmpf, 8192);
- if( !$headers_done && $rewrittenfrom && eregi( '^From: (.*)', $buffer ) ) {
- if( PEAR::isError($error = $smtp->data( $rewrittenfrom )) ) {
- fwrite(STDOUT, $error->getMessage().", code ".$error->getCode()."\n");
- if( $error->getCode() < 500 ) exit(EX_TEMPFAIL);
- else exit(EX_UNAVAILABLE);
- }
- continue;
- }
- if( !$headers_done && rtrim( $buffer, "\r\n" ) == '' ) {
- $headers_done = true;
- foreach( $add_headers as $h ) {
- if( PEAR::isError($error = $smtp->data( "$h\r\n" )) ) {
- fwrite(STDOUT, $error->getMessage().", code ".$error->getCode()."\n");
+ if( $rewrittenfrom ) {
+ if( eregi( '^From: (.*)', $buffer ) ) {
+ if( PEAR::isError($error = $smtp->data( $rewrittenfrom )) ) {
+ $str = $error->getMessage().", code ".$error->getCode();
+ myLog($str,RM_LOG_DEBUG);
+ fwrite(STDOUT, $str."\n");
if( $error->getCode() < 500 ) exit(EX_TEMPFAIL);
else exit(EX_UNAVAILABLE);
}
+ $state = RM_STATE_READING_FROM;
+ continue;
+ } else if( $state == RM_STATE_READING_FROM &&
+ ($buffer[0] == ' ' || $buffer[0] == "\t" ) ) {
+ // Folded From header, ignore
+ continue;
}
}
- //myLog("Calling smtp->data( ".rtrim($buffer)." )", RM_LOG_DEBUG);
+ if( $buffer[0] != ' ' && $buffer[0] != "\t" ) {
+ $state = RM_STATE_READING_HEADER;
+ }
+ if( rtrim( $buffer, "\r\n" ) == '' ) {
+ $state = RM_STATE_READING_BODY;
+ }
if( PEAR::isError($error = $smtp->data( $buffer )) ) {
- fwrite(STDOUT, $error->getMessage().", code ".$error->getCode()."\n");
+ $str = $error->getMessage().", code ".$error->getCode();
+ myLog($str,RM_LOG_DEBUG);
+ fwrite(STDOUT, $str."\n");
if( $error->getCode() < 500 ) exit(EX_TEMPFAIL);
else exit(EX_UNAVAILABLE);
}
@@ -334,7 +350,6 @@
}
};
-//myLog("Calling smtp->end()", RM_LOG_DEBUG);
$smtp->end();
//$outputtime->stop();
myLog("Kolabfilter successfully completed", RM_LOG_DEBUG);
Index: misc.php
===================================================================
RCS file: /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/resmgr/misc.php,v
retrieving revision 1.4
retrieving revision 1.4.2.1
diff -u -d -r1.4 -r1.4.2.1
--- misc.php 2 Apr 2005 02:47:34 -0000 1.4
+++ misc.php 21 May 2006 12:09:18 -0000 1.4.2.1
@@ -187,4 +187,4 @@
return $ret;
}
-?>
\ No newline at end of file
+?>
More information about the commits
mailing list