TimeTrex Community Edition v16.2.0
This commit is contained in:
123
classes/bounce_handler/Make_statuscodes.php
Normal file
123
classes/bounce_handler/Make_statuscodes.php
Normal file
@ -0,0 +1,123 @@
|
||||
<?php
|
||||
/**
|
||||
* Make status codes file
|
||||
*
|
||||
* Create the include file with all of the latest IANA standards RFC3463 + changes
|
||||
*
|
||||
* PHP version 5
|
||||
*
|
||||
* @category Email
|
||||
* @package BounceHandler
|
||||
* @author Multiple <cfortune@users.noreply.github.com>
|
||||
* @license http://opensource.org/licenses/BSD-2-Clause BSD
|
||||
* @link https://github.com/cfortune/PHP-Bounce-Handler/
|
||||
*/
|
||||
|
||||
$codes_1_url='http://www.iana.org/assignments/smtp-enhanced-status-codes/'.
|
||||
'smtp-enhanced-status-codes-1.csv';
|
||||
$codes_3_url='http://www.iana.org/assignments/smtp-enhanced-status-codes/'.
|
||||
'smtp-enhanced-status-codes-3.csv';
|
||||
|
||||
$nl="\n";
|
||||
|
||||
|
||||
/**
|
||||
* Split a line into sections to avoid going over 80 character limit
|
||||
* whilst preserving PEAR standards.
|
||||
*
|
||||
* @param string $describer Describer line
|
||||
* @param string $line Line to split
|
||||
* @param string $nl New line character(s)
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function splitIt($describer,$line,$nl)
|
||||
{
|
||||
if (strlen($describer.$line)>70) {
|
||||
$line_start = $nl . str_repeat(' ', 7) . '"';
|
||||
$line_continues = '".';
|
||||
print $describer . $nl;
|
||||
print str_repeat(' ', 4) . '= "';
|
||||
$split = chunk_split($line, 72, $line_continues . $line_start);
|
||||
print substr($split, 0, -strlen($line_continues . $line_start));
|
||||
print '";' . $nl . $nl;
|
||||
} else {
|
||||
print $describer.'="'.$line.'";'.$nl;
|
||||
}
|
||||
}
|
||||
print '<?php'.$nl;
|
||||
print '/** '.$nl;
|
||||
print ' * Bounce status codes.'.$nl;
|
||||
print ' *'.$nl;
|
||||
print ' * Auto-generated by Make_statuscodes.php'.$nl;
|
||||
print ' * on '.date('Y-m-d H:i:s').$nl;
|
||||
print ' * From the following URLs:'.$nl;
|
||||
print ' * '.chunk_split($codes_1_url, 75, $nl.' * ').$nl;
|
||||
print ' * '.chunk_split($codes_3_url, 75, $nl.' * ').$nl;
|
||||
print ' *'.$nl;
|
||||
print ' * PHP version 5'.$nl;
|
||||
print ' *'.$nl;
|
||||
print ' * @category Email'.$nl;
|
||||
print ' * @package BounceHandler'.$nl;
|
||||
print ' * @author Multiple <cfortune@users.noreply.github.com>'.$nl;
|
||||
print ' * @license http://opensource.org/licenses/BSD-2-Clause BSD'.$nl;
|
||||
print ' * @link https://github.com/cfortune/PHP-Bounce-Handler/'.$nl;
|
||||
print ' */'.$nl.$nl;
|
||||
|
||||
$fh = fopen($codes_1_url, "r");
|
||||
if ($fh !== false) {
|
||||
$a = fgets($fh); // 1st line is titles
|
||||
while (!feof($fh)) {
|
||||
$a = fgetcsv($fh, 0, ',', '"');
|
||||
if (false===isset($a[0]) || false===isset($a[1])
|
||||
|| false===isset($a[2])
|
||||
) {
|
||||
die('Unable to read CSV line: '.print_r($a, true));
|
||||
}
|
||||
$a[0] = preg_replace('/\..*/', '', $a[0]); // 5.x.x -> 5
|
||||
$a[1] = preg_replace('/\n\s*/', ' ', $a[1]); // remove line breaks
|
||||
$a[1] = preg_replace('/\s\s+/', ' ', $a[1]); // remove double spaces
|
||||
$a[1] = preg_replace('/"/', '\\"', $a[1]); // requote quotes
|
||||
$a[2] = preg_replace('/\n\s*/', ' ', $a[2]); // remove line breaks
|
||||
$a[2] = preg_replace('/\s\s+/', ' ', $a[2]); // remove double spaces
|
||||
$a[2] = preg_replace('/"/', '\\"', $a[2]); // requote quotes
|
||||
print '// '.$a[3].$nl;
|
||||
splitIt('$status_code_classes[\''.$a[0].'\'][\'title\']', $a[1], $nl);
|
||||
splitIt('$status_code_classes[\''.$a[0].'\'][\'descr\']', $a[2], $nl);
|
||||
|
||||
}
|
||||
fclose($fh);
|
||||
}
|
||||
print "\n";
|
||||
|
||||
|
||||
// X.7.17,Mailbox owner has changed,5XX,"This status code is
|
||||
// returned when a message is
|
||||
// received with a Require-Recipient-Valid-Since
|
||||
// field or RRVS extension and the receiving
|
||||
// system is able to determine that the intended
|
||||
// recipient mailbox has not been under
|
||||
// continuous ownership since the specified date.",
|
||||
// [RFC-ietf-appsawg-rrvs-header-field-10] (Standards Track),M. Kucherawy,IESG
|
||||
|
||||
|
||||
$fh = fopen($codes_3_url, "r");
|
||||
if ($fh !== false) {
|
||||
$a = fgets($fh); // 1st line is titles
|
||||
while (!feof($fh)) {
|
||||
$a = fgetcsv($fh, 0, ',', '"');
|
||||
$a[0] = preg_replace('/^X./i', '', $a[0]); // X.5.0 -> 5.0
|
||||
$a[1] = preg_replace('/\n\s*/', ' ', $a[1]); // remove line breaks
|
||||
$a[1] = preg_replace('/\s\s+/', ' ', $a[1]); // remove double spaces
|
||||
$a[1] = preg_replace('/"/', '\\"', $a[1]); // requote quotes
|
||||
$a[3] = preg_replace('/\n\s*/', ' ', $a[3]); // remove line breaks
|
||||
$a[3] = preg_replace('/\s\s+/', ' ', $a[3]); // remove double spaces
|
||||
$a[3] = preg_replace('/"/', '\\"', $a[3]); // requote quotes
|
||||
|
||||
print '// '.$a[4].$nl;
|
||||
splitIt('$status_code_subclasses[\''.$a[0].'\'][\'title\']', $a[1], $nl);
|
||||
splitIt('$status_code_subclasses[\''.$a[0].'\'][\'descr\']', $a[3], $nl);
|
||||
|
||||
}
|
||||
fclose($fh);
|
||||
}
|
Reference in New Issue
Block a user