You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
postfixadmin/ADDITIONS/squirrelmail-plugin/functions.inc.php

103 lines
2.8 KiB
PHTML

<?php
/**
* Postfixadmin (http://postfixadmin.sf.net) integration with Squirrelmail.
* See http://squirrelmail-postfixadmin.palepurple.co.uk
* @author David Goodwin and many others
*/
function do_header() {
global $color;
displayPageHeader($color, 'None');
}
function do_footer() {
echo "</body></html>";
}
function _display_password_form() {
bindtextdomain('postfixadmin', SM_PATH . 'plugins/postfixadmin/locale');
textdomain('postfixadmin');
do_header('Postfixadmin Squirrelmail - Login');
echo _('The PostfixAdmin plugin needs your current mailbox password');
echo "<form action='' method='post'>";
echo _('Password for');
echo " " . $_SESSION['username'] . " :";
echo "<input type='password' name='password' value=''>";
echo "<input type='submit' value='" . _('Submit') . "'></form>";
do_footer();
}
/**
* This returns a Zend_XmlRpc_Client instance - unless we can't log you in...
*/
function get_xmlrpc() {
global $CONF;
require_once('Zend/XmlRpc/Client.php');
$client = new Zend_XmlRpc_Client($CONF['xmlrpc_url']);
$http_client = $client->getHttpClient();
$http_client->setCookieJar();
$login_object = $client->getProxy('login');
if(empty($_SESSION['password'])) {
if(empty($_POST['password'])) {
_display_password_form();
exit(0);
}
else {
try {
$success = $login_object->login($_SESSION['username'], $_POST['password']);
}
catch(Exception $e) {
//var_dump($client->getHttpClient()->getLastResponse()->getBody());
error_log("Failed to login to xmlrpc instance - " . $e->getMessage);
die('Failed to login to xmlrpc instance');
}
if($success) {
$_SESSION['password'] = $_POST['password'];
// reload the current page as a GET request.
header("Location: {$_SERVER['REQUEST_URI']}");
exit(0);
}
else {
_display_password_form();
exit(0);
}
}
}
else {
$success = $login_object->login($_SESSION['username'], $_SESSION['password']);
}
if(!$success) {
unset($_SESSION['password']);
die("Invalid details cached... refresh this page and re-enter your mailbox password");
}
return $client;
}
function include_if_exists($filename) {
if(file_exists($filename)) {
include_once($filename);
}
return;
}
global $optmode;
$optmode = 'display';
//
// check_email
// Action: Checks if email is valid and returns TRUE if this is the case.
// Call: check_email (string email)
//
function check_email ($email) {
$return = filter_var('validate_email', $email);
if($return === false) {
return false;
}
return true;
}