* @copyright 2004-2007 The SquirrelMail Project Team, Alexandros Vellis
* @package plugins
* @subpackage avelsieve
* @obsolete
*/
/** Includes */
include_once(SM_PATH . 'plugins/avelsieve/include/managesieve.lib.php');
include_once(SM_PATH . 'plugins/avelsieve/include/support.inc.php');
include_once(SM_PATH . 'plugins/avelsieve/config/config.php');
/**
* This function initializes the avelsieve environment. Basically, it makes
* sure that there is a valid sieve_capability array.
*
* An instance of the $sieve handle is placed in the global scope.
*
* Important: If a valid rules array is needed, then avelsieve_getrules()
* should be used.
*
* @param object $sieve Sieve class connection handler.
* @return void
* @obsolete
*/
function avelsieve_initialize(&$sieve) {
sqgetGlobalVar('sieve_capabilities', $sieve_capabilities, SQ_SESSION);
sqgetGlobalVar('rules', $rules, SQ_SESSION);
if(!is_object($sieve)) {
sqgetGlobalVar('key', $key, SQ_COOKIE);
sqgetGlobalVar('onetimepad', $onetimepad, SQ_SESSION);
sqgetGlobalVar('authz', $authz, SQ_SESSION);
global $imapServerAddress, $username, $avelsieve_imapproxymode, $avelsieve_cyrusadmins_map, $sieveport,
$avelsieve_imapproxyserv, $sieve_preferred_sasl_mech;
/* Need the cleartext password to login to timsieved */
$acctpass = OneTimePadDecrypt($key, $onetimepad);
if(isset($authz)) {
$imap_server = sqimap_get_user_server ($imapServerAddress, $authz);
} else {
$imap_server = sqimap_get_user_server ($imapServerAddress, $username);
if ($avelsieve_imapproxymode == true) { /* Need to do mapping so as to connect directly to server */
$imap_server = $avelsieve_imapproxyserv[$imap_server];
}
}
if(isset($authz)) {
if(isset($avelsieve_cyrusadmins_map[$username])) {
$bind_username = $avelsieve_cyrusadmins_map[$username];
} else {
$bind_username = $username;
}
$sieve=new sieve($imap_server, $sieveport, $bind_username, $acctpass, $authz, $sieve_preferred_sasl_mech);
} else {
$sieve=new sieve($imap_server, $sieveport, $username, $acctpass, $username, $sieve_preferred_sasl_mech);
}
avelsieve_login($sieve);
}
}
/**
* Login to SIEVE server. Also saves the capabilities in Session.
*
* @param object $sieve Sieve class connection handler.
* @return boolean
* @obsolete
*/
function avelsieve_login(&$sieve) {
global $sieve_capabilities, $imapServerAddress, $sieve_loggedin;
if(is_object($sieve) && isset($sieve_loggedin)) {
return true;
}
if ($sieve->sieve_login()){ /* User has logged on */
if(!isset($sieve_capabilities)) {
$sieve_capabilities = $sieve->sieve_get_capability();
$_SESSION['sieve_capabilities'] = $sieve_capabilities;
}
$sieve_loggedin = true;
return true;
} else {
$errormsg = _("Could not log on to timsieved daemon on your IMAP server") .
" " . $sieve->host.':'.$sieve->port.'.
';
if(!empty($sieve->error)) {
$errormsg .= _("Error Encountered:") . ' ' . $sieve->error . '';
}
$errormsg .= _("Please contact your administrator.");
if(AVELSIEVE_DEBUG == 1) {
print "
(Debug Mode). Login failed. Capabilities:\n"; print_r($sieve_capabilities); if(!empty($sieve->error)) { print "\nError Message returned:\n"; print_r($sieve->error); } print ''; } print_errormsg($errormsg); exit; } } /** * Get scripts list from SIEVE server. * @obsolete */ function avelsieve_listscripts($sieve) { $scripts = array(); if($sieve->sieve_listscripts()) { if(is_array($sieve->response)){ $i = 0; foreach($sieve->response as $line){ $scripts[$i] = $line; $i++; } } } return $scripts; } /** * Get rules from specified script of Sieve server * * @param object $sieve Sieve class connection handler. * @param string $scriptname * @param array $scriptinfo * @return array * @obsolete */ function avelsieve_getrules(&$sieve, $scriptname = 'phpscript', &$rules, &$scriptinfo) { global $imapServerAddress; sqgetGlobalVar('sieve_capabilities', $sieve_capabilities, SQ_SESSION); $rules = array(); $scriptinfo = array(); if(!isset($sieve_capabilities)) { avelsieve_initialize($sieve); } if(!is_object($sieve)) { avelsieve_login($sieve); } $scripts = avelsieve_listscripts($sieve); if(!in_array($scriptname, $scripts)) { /* No avelsieve script. */ return false; } /* Get actual script from Sieve server. */ unset($sieve->response); $sievescript = ''; if($sieve->sieve_getscript($scriptname)){ foreach($sieve->response as $line){ $sievescript .= $line; } } else { $prev = sq_bindtextdomain ('avelsieve', SM_PATH . 'plugins/avelsieve/locale'); textdomain ('avelsieve'); $errormsg = _("Could not get SIEVE script from your IMAP server"); $errormsg .= " " . $imapServerAddress.".
'; $errormsg .= _("Unable to load script to server."); $errormsg .= '
'; if(isset($sieve->error_raw)) { $errormsg .= '';
$errormsg .= _("Server responded with:");
$errormsg .= '
';
if (is_array($sieve->error_raw)) {
foreach($sieve->error_raw as $error_raw) {
$errormsg .= $error_raw . "
";
}
} else {
$errormsg .= $sieve->error_raw . "
";
}
$errormsg .= _("Please contact your administrator.");
/* The following serves for viewing the script that
* tried to be uploaded, for debugging purposes. */
if(AVELSIEVE_DEBUG == 1) {
$errormsg .= '
(Debug mode)
avelsieve bug
Script
that probably is buggy follows.
Please
copy/paste it, together with the error message above, and email it to avel@users.sourceforge.net.
' . $newscript. "