|
@@ -1,5 +1,5 @@
|
|
<?php
|
|
<?php
|
|
-
|
|
|
|
|
|
+
|
|
/* $Id$ */
|
|
/* $Id$ */
|
|
|
|
|
|
if (defined('strings_php'))
|
|
if (defined('strings_php'))
|
|
@@ -55,8 +55,8 @@
|
|
if ($pos >= strlen($haystack))
|
|
if ($pos >= strlen($haystack))
|
|
return -1;
|
|
return -1;
|
|
$pos++;
|
|
$pos++;
|
|
- }
|
|
|
|
- return $pos;
|
|
|
|
|
|
+ }
|
|
|
|
+ return $pos;
|
|
}
|
|
}
|
|
|
|
|
|
// Wraps text at $wrap characters
|
|
// Wraps text at $wrap characters
|
|
@@ -75,7 +75,7 @@
|
|
|
|
|
|
$i = 0;
|
|
$i = 0;
|
|
$line = $beginning_spaces;
|
|
$line = $beginning_spaces;
|
|
-
|
|
|
|
|
|
+
|
|
while ($i < count($words)) {
|
|
while ($i < count($words)) {
|
|
// Force one word to be on a line (minimum)
|
|
// Force one word to be on a line (minimum)
|
|
$line .= $words[$i];
|
|
$line .= $words[$i];
|
|
@@ -83,7 +83,7 @@
|
|
if (isset($words[$i + 1]))
|
|
if (isset($words[$i + 1]))
|
|
$line_len += strlen($words[$i + 1]);
|
|
$line_len += strlen($words[$i + 1]);
|
|
$i ++;
|
|
$i ++;
|
|
-
|
|
|
|
|
|
+
|
|
// Add more words (as long as they fit)
|
|
// Add more words (as long as they fit)
|
|
while ($line_len < $wrap && $i < count($words)) {
|
|
while ($line_len < $wrap && $i < count($words)) {
|
|
$line .= ' ' . $words[$i];
|
|
$line .= ' ' . $words[$i];
|
|
@@ -93,20 +93,20 @@
|
|
else
|
|
else
|
|
$line_len += 1;
|
|
$line_len += 1;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
// Skip spaces if they are the first thing on a continued line
|
|
// Skip spaces if they are the first thing on a continued line
|
|
while (!isset($words[$i]) && $i < count($words)) {
|
|
while (!isset($words[$i]) && $i < count($words)) {
|
|
$i ++;
|
|
$i ++;
|
|
}
|
|
}
|
|
|
|
|
|
- // Go to the next line if we have more to process
|
|
|
|
|
|
+ // Go to the next line if we have more to process
|
|
if ($i < count($words)) {
|
|
if ($i < count($words)) {
|
|
$line .= "\n" . $beginning_spaces;
|
|
$line .= "\n" . $beginning_spaces;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+
|
|
// Does the opposite of sqWordWrap()
|
|
// Does the opposite of sqWordWrap()
|
|
function sqUnWordWrap(&$body)
|
|
function sqUnWordWrap(&$body)
|
|
{
|
|
{
|
|
@@ -138,7 +138,7 @@
|
|
}
|
|
}
|
|
$body .= "\n";
|
|
$body .= "\n";
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
|
|
|
|
/** Returns an array of email addresses **/
|
|
/** Returns an array of email addresses **/
|
|
/* Be cautious of "user@host.com" */
|
|
/* Be cautious of "user@host.com" */
|
|
@@ -165,7 +165,11 @@
|
|
} else {
|
|
} else {
|
|
$to_line = '';
|
|
$to_line = '';
|
|
}
|
|
}
|
|
- return $to_line;
|
|
|
|
|
|
+
|
|
|
|
+ if( substr( $to_line, -1 ) == ',' )
|
|
|
|
+ $to_line = substr( $to_line, 0, strlen( $to_line ) - 1 );
|
|
|
|
+
|
|
|
|
+ return( $to_line );
|
|
}
|
|
}
|
|
|
|
|
|
function translateText(&$body, $wrap_at, $charset) {
|
|
function translateText(&$body, $wrap_at, $charset) {
|
|
@@ -173,19 +177,19 @@
|
|
global $color; // color theme
|
|
global $color; // color theme
|
|
|
|
|
|
require_once('../functions/url_parser.php');
|
|
require_once('../functions/url_parser.php');
|
|
-
|
|
|
|
|
|
+
|
|
$body_ary = explode("\n", $body);
|
|
$body_ary = explode("\n", $body);
|
|
$PriorQuotes = 0;
|
|
$PriorQuotes = 0;
|
|
for ($i=0; $i < count($body_ary); $i++) {
|
|
for ($i=0; $i < count($body_ary); $i++) {
|
|
$line = $body_ary[$i];
|
|
$line = $body_ary[$i];
|
|
if (strlen($line) - 2 >= $wrap_at) {
|
|
if (strlen($line) - 2 >= $wrap_at) {
|
|
- sqWordWrap($line, $wrap_at);
|
|
|
|
|
|
+ sqWordWrap($line, $wrap_at);
|
|
}
|
|
}
|
|
$line = charset_decode($charset, $line);
|
|
$line = charset_decode($charset, $line);
|
|
$line = str_replace("\t", ' ', $line);
|
|
$line = str_replace("\t", ' ', $line);
|
|
-
|
|
|
|
|
|
+
|
|
parseUrl ($line);
|
|
parseUrl ($line);
|
|
-
|
|
|
|
|
|
+
|
|
$Quotes = 0;
|
|
$Quotes = 0;
|
|
$pos = 0;
|
|
$pos = 0;
|
|
while (1)
|
|
while (1)
|
|
@@ -204,7 +208,7 @@
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
if ($Quotes > 1) {
|
|
if ($Quotes > 1) {
|
|
if (! isset($color[14]))
|
|
if (! isset($color[14]))
|
|
$color[14] = '#FF0000';
|
|
$color[14] = '#FF0000';
|
|
@@ -236,19 +240,19 @@
|
|
function get_location () {
|
|
function get_location () {
|
|
# This determines the location to forward to relative
|
|
# This determines the location to forward to relative
|
|
# to your server. If this doesnt work correctly for
|
|
# to your server. If this doesnt work correctly for
|
|
- # you (although it should), you can remove all this
|
|
|
|
|
|
+ # you (although it should), you can remove all this
|
|
# code except the last two lines, and change the header()
|
|
# code except the last two lines, and change the header()
|
|
# function to look something like this, customized to
|
|
# function to look something like this, customized to
|
|
# the location of SquirrelMail on your server:
|
|
# the location of SquirrelMail on your server:
|
|
#
|
|
#
|
|
# http://www.myhost.com/squirrelmail/src/login.php
|
|
# http://www.myhost.com/squirrelmail/src/login.php
|
|
-
|
|
|
|
|
|
+
|
|
global $PHP_SELF, $SERVER_NAME, $HTTP_HOST, $SERVER_PORT,
|
|
global $PHP_SELF, $SERVER_NAME, $HTTP_HOST, $SERVER_PORT,
|
|
$HTTP_SERVER_VARS;
|
|
$HTTP_SERVER_VARS;
|
|
|
|
|
|
// Get the path
|
|
// Get the path
|
|
$path = substr($PHP_SELF, 0, strrpos($PHP_SELF, '/'));
|
|
$path = substr($PHP_SELF, 0, strrpos($PHP_SELF, '/'));
|
|
-
|
|
|
|
|
|
+
|
|
// Check if this is a HTTPS or regular HTTP request
|
|
// Check if this is a HTTPS or regular HTTP request
|
|
$proto = 'http://';
|
|
$proto = 'http://';
|
|
// If you have 'SSLOptions +StdEnvVars' in your apache config
|
|
// If you have 'SSLOptions +StdEnvVars' in your apache config
|
|
@@ -261,7 +265,7 @@
|
|
$HTTP_SERVER_VARS['SERVER_PORT'] == 443)) {
|
|
$HTTP_SERVER_VARS['SERVER_PORT'] == 443)) {
|
|
$proto = 'https://';
|
|
$proto = 'https://';
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
// Get the hostname from the Host header or server config.
|
|
// Get the hostname from the Host header or server config.
|
|
$host = '';
|
|
$host = '';
|
|
if (isset($HTTP_HOST) && !empty($HTTP_HOST))
|
|
if (isset($HTTP_HOST) && !empty($HTTP_HOST))
|
|
@@ -272,7 +276,7 @@
|
|
{
|
|
{
|
|
$host = $SERVER_NAME;
|
|
$host = $SERVER_NAME;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
$port = '';
|
|
$port = '';
|
|
if (! strstr($host, ':'))
|
|
if (! strstr($host, ':'))
|
|
{
|
|
{
|
|
@@ -283,14 +287,14 @@
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
if ($host)
|
|
if ($host)
|
|
return $proto . $host . $port . $path;
|
|
return $proto . $host . $port . $path;
|
|
|
|
|
|
// Fallback is to omit the server name and use a relative URI,
|
|
// Fallback is to omit the server name and use a relative URI,
|
|
// although this is not RFC 2616 compliant.
|
|
// although this is not RFC 2616 compliant.
|
|
- return $path;
|
|
|
|
- }
|
|
|
|
|
|
+ return $path;
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
// These functions are used to encrypt the passowrd before it is
|
|
// These functions are used to encrypt the passowrd before it is
|
|
@@ -326,7 +330,7 @@
|
|
// if mt_getrandmax() does not return a 2^n - 1 number,
|
|
// if mt_getrandmax() does not return a 2^n - 1 number,
|
|
// this might not work well. This uses $Max as a bitmask.
|
|
// this might not work well. This uses $Max as a bitmask.
|
|
$Max = mt_getrandmax();
|
|
$Max = mt_getrandmax();
|
|
-
|
|
|
|
|
|
+
|
|
if (! is_int($Val))
|
|
if (! is_int($Val))
|
|
{
|
|
{
|
|
if (function_exists('crc32'))
|
|
if (function_exists('crc32'))
|
|
@@ -363,8 +367,8 @@
|
|
|
|
|
|
mt_srand(($Val ^ mt_rand(0, $Max)) & $Max);
|
|
mt_srand(($Val ^ mt_rand(0, $Max)) & $Max);
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+
|
|
// This function initializes the random number generator fairly well.
|
|
// This function initializes the random number generator fairly well.
|
|
// It also only initializes it once, so you don't accidentally get
|
|
// It also only initializes it once, so you don't accidentally get
|
|
// the same 'random' numbers twice in one session.
|
|
// the same 'random' numbers twice in one session.
|
|
@@ -372,14 +376,14 @@
|
|
{
|
|
{
|
|
global $REMOTE_PORT, $REMOTE_ADDR, $UNIQUE_ID;
|
|
global $REMOTE_PORT, $REMOTE_ADDR, $UNIQUE_ID;
|
|
static $randomized;
|
|
static $randomized;
|
|
-
|
|
|
|
|
|
+
|
|
if ($randomized)
|
|
if ($randomized)
|
|
return;
|
|
return;
|
|
-
|
|
|
|
- // Global
|
|
|
|
|
|
+
|
|
|
|
+ // Global
|
|
sq_mt_seed((int)((double) microtime() * 1000000));
|
|
sq_mt_seed((int)((double) microtime() * 1000000));
|
|
sq_mt_seed(md5($REMOTE_PORT . $REMOTE_ADDR . getmypid()));
|
|
sq_mt_seed(md5($REMOTE_PORT . $REMOTE_ADDR . getmypid()));
|
|
-
|
|
|
|
|
|
+
|
|
// getrusage
|
|
// getrusage
|
|
if (function_exists('getrusage')) {
|
|
if (function_exists('getrusage')) {
|
|
// Avoid warnings with Win32
|
|
// Avoid warnings with Win32
|
|
@@ -394,13 +398,13 @@
|
|
sq_mt_seed(md5($Str));
|
|
sq_mt_seed(md5($Str));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
// Apache-specific
|
|
// Apache-specific
|
|
sq_mt_seed(md5($UNIQUE_ID));
|
|
sq_mt_seed(md5($UNIQUE_ID));
|
|
-
|
|
|
|
|
|
+
|
|
$randomized = 1;
|
|
$randomized = 1;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
function OneTimePadCreate ($length=100) {
|
|
function OneTimePadCreate ($length=100) {
|
|
sq_mt_randomize();
|
|
sq_mt_randomize();
|
|
|
|
|
|
@@ -426,13 +430,13 @@
|
|
$vmajor = strval($regs[1]);
|
|
$vmajor = strval($regs[1]);
|
|
$vminor = strval($regs[2]);
|
|
$vminor = strval($regs[2]);
|
|
$vrel = $regs[3];
|
|
$vrel = $regs[3];
|
|
- if($vrel[0] == ".")
|
|
|
|
|
|
+ if($vrel[0] == ".")
|
|
$vrel = strval(substr($vrel, 1));
|
|
$vrel = strval(substr($vrel, 1));
|
|
- if($vrel[0] == 'b' || $vrel[0] == 'B')
|
|
|
|
|
|
+ if($vrel[0] == 'b' || $vrel[0] == 'B')
|
|
$vrel = - strval(substr($vrel, 1));
|
|
$vrel = - strval(substr($vrel, 1));
|
|
- if($vrel[0] == 'r' || $vrel[0] == 'R')
|
|
|
|
|
|
+ if($vrel[0] == 'r' || $vrel[0] == 'R')
|
|
$vrel = - strval(substr($vrel, 2))/10;
|
|
$vrel = - strval(substr($vrel, 2))/10;
|
|
-
|
|
|
|
|
|
+
|
|
// Compare major version
|
|
// Compare major version
|
|
if($vmajor < $major) return false;
|
|
if($vmajor < $major) return false;
|
|
if($vmajor > $major) return true;
|
|
if($vmajor > $major) return true;
|
|
@@ -440,7 +444,7 @@
|
|
// Major is the same. Compare minor
|
|
// Major is the same. Compare minor
|
|
if($vminor < $minor) return false;
|
|
if($vminor < $minor) return false;
|
|
if($vminor > $minor) return true;
|
|
if($vminor > $minor) return true;
|
|
-
|
|
|
|
|
|
+
|
|
// Major and minor is the same as the required one.
|
|
// Major and minor is the same as the required one.
|
|
// Compare release
|
|
// Compare release
|
|
if($vrel >= 0 && $release >= 0) { // Neither are beta
|
|
if($vrel >= 0 && $release >= 0) { // Neither are beta
|
|
@@ -452,22 +456,22 @@
|
|
} else { // Both are beta
|
|
} else { // Both are beta
|
|
if($vrel > $release) return false;
|
|
if($vrel > $release) return false;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/* Returns a string showing the size of the message/attachment */
|
|
/* Returns a string showing the size of the message/attachment */
|
|
function show_readable_size($bytes)
|
|
function show_readable_size($bytes)
|
|
{
|
|
{
|
|
$bytes /= 1024;
|
|
$bytes /= 1024;
|
|
$type = 'k';
|
|
$type = 'k';
|
|
-
|
|
|
|
|
|
+
|
|
if ($bytes / 1024 > 1)
|
|
if ($bytes / 1024 > 1)
|
|
{
|
|
{
|
|
$bytes /= 1024;
|
|
$bytes /= 1024;
|
|
$type = 'm';
|
|
$type = 'm';
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
if ($bytes < 10)
|
|
if ($bytes < 10)
|
|
{
|
|
{
|
|
$bytes *= 10;
|
|
$bytes *= 10;
|
|
@@ -476,7 +480,7 @@
|
|
}
|
|
}
|
|
else
|
|
else
|
|
settype($bytes, 'integer');
|
|
settype($bytes, 'integer');
|
|
-
|
|
|
|
|
|
+
|
|
return $bytes . '<small> ' . $type . '</small>';
|
|
return $bytes . '<small> ' . $type . '</small>';
|
|
}
|
|
}
|
|
|
|
|
|
@@ -487,7 +491,7 @@
|
|
* 2 = add uppercase A-Z to $chars
|
|
* 2 = add uppercase A-Z to $chars
|
|
* 4 = add numbers 0-9 to $chars
|
|
* 4 = add numbers 0-9 to $chars
|
|
*/
|
|
*/
|
|
-
|
|
|
|
|
|
+
|
|
function GenerateRandomString($size, $chars, $flags = 0)
|
|
function GenerateRandomString($size, $chars, $flags = 0)
|
|
{
|
|
{
|
|
if ($flags & 0x1)
|
|
if ($flags & 0x1)
|
|
@@ -496,20 +500,20 @@
|
|
$chars .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
$chars .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
if ($flags & 0x4)
|
|
if ($flags & 0x4)
|
|
$chars .= '0123456789';
|
|
$chars .= '0123456789';
|
|
-
|
|
|
|
|
|
+
|
|
if ($size < 1 || strlen($chars) < 1)
|
|
if ($size < 1 || strlen($chars) < 1)
|
|
return '';
|
|
return '';
|
|
-
|
|
|
|
|
|
+
|
|
sq_mt_randomize(); // Initialize the random number generator
|
|
sq_mt_randomize(); // Initialize the random number generator
|
|
-
|
|
|
|
|
|
+
|
|
$String = "";
|
|
$String = "";
|
|
while (strlen($String) < $size) {
|
|
while (strlen($String) < $size) {
|
|
$String .= $chars[mt_rand(0, strlen($chars))];
|
|
$String .= $chars[mt_rand(0, strlen($chars))];
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
return $String;
|
|
return $String;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
function quoteIMAP($str)
|
|
function quoteIMAP($str)
|
|
{
|
|
{
|
|
return ereg_replace('(["\\])', '\\\\1', $str);
|
|
return ereg_replace('(["\\])', '\\\\1', $str);
|