* @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. "