Changeset 4016 in subversion


Ignore:
Timestamp:
Sep 29, 2010 1:23:26 PM (3 years ago)
Author:
alec
Message:
  • Added possibility to display extended error messages (#1486704)
  • Added extended error messages in Poppassd driver (#1486704)
Location:
trunk/plugins/password
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/plugins/password/drivers/poppassd.php

    r2668 r4016  
    66 * Driver to change passwords via Poppassd/Courierpassd 
    77 * 
    8  * @version 1.0 
     8 * @version 1.1 
    99 * @author Philip Weir 
    1010 * 
    1111 */ 
     12 
     13function format_error_result($code, $line) 
     14{ 
     15    if (preg_match('/^\d\d\d\s+(\S.*)\s*$/', $line, $matches)) { 
     16        return array('code' => $code, 'message' => $matches[1]); 
     17    } else { 
     18        return $code; 
     19    } 
     20} 
    1221 
    1322function password_save($curpass, $passwd) 
     
    1726    $poppassd = new Net_Socket(); 
    1827 
    19     if (PEAR::isError($poppassd->connect($rcmail->config->get('password_pop_host'), $rcmail->config->get('password_pop_port'), null))) { 
    20         return PASSWORD_CONNECT_ERROR; 
     28    $result = $poppassd->connect($rcmail->config->get('password_pop_host'), $rcmail->config->get('password_pop_port'), null); 
     29    if (PEAR::isError($result)) { 
     30        return format_error_result(PASSWORD_CONNECT_ERROR, $result->getMessage()); 
    2131    } 
    2232    else { 
     
    2434        if(!preg_match('/^2\d\d/', $result)) { 
    2535            $poppassd->disconnect(); 
    26             return PASSWORD_ERROR; 
     36            return format_error_result(PASSWORD_ERROR, $result); 
    2737        } 
    2838        else { 
     
    3141            if(!preg_match('/^[23]\d\d/', $result) ) { 
    3242                $poppassd->disconnect(); 
    33                 return PASSWORD_CONNECT_ERROR; 
     43                return format_error_result(PASSWORD_CONNECT_ERROR, $result); 
    3444            } 
    3545            else { 
     
    3848                if(!preg_match('/^[23]\d\d/', $result) ) { 
    3949                    $poppassd->disconnect(); 
    40                     return PASSWORD_ERROR; 
     50                    return format_error_result(PASSWORD_ERROR, $result); 
    4151                } 
    4252                else { 
     
    4555                    $poppassd->disconnect(); 
    4656                    if (!preg_match('/^2\d\d/', $result)) 
    47                         return PASSWORD_ERROR; 
     57                        return format_error_result(PASSWORD_ERROR, $result); 
    4858                    else 
    4959                        return PASSWORD_SUCCESS; 
     
    5363    } 
    5464} 
    55  
    56 ?> 
  • trunk/plugins/password/package.xml

    r3955 r4016  
    1616                <active>yes</active> 
    1717        </lead> 
    18         <date>2010-09-10</date> 
    19         <time>09:00:00</time> 
     18        <date>2010-09-29</date> 
     19        <time>19:00:00</time> 
    2020        <version> 
    21                 <release>1.7</release> 
    22                 <api>1.5</api> 
     21                <release>1.8</release> 
     22                <api>1.6</api> 
    2323        </version> 
    2424        <stability> 
     
    2828        <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license> 
    2929        <notes> 
    30 - Added XMail driver 
    31 - Improve security of chpasswd driver using popen instead of exec+echo (#1486987) 
    32 - Added chpass-wrapper.py script to improve security (#1486987) 
     30- Added possibility to display extended error messages (#1486704) 
     31- Added extended error messages in Poppassd driver (#1486704) 
    3332    </notes> 
    3433        <contents> 
     
    154153            </notes> 
    155154        </release> 
    156         </changelog> 
     155        <release> 
     156                <date>2010-09-10</date> 
     157                <time>09:00:00</time> 
     158                <version> 
     159                        <release>1.7</release> 
     160                        <api>1.5</api> 
     161                </version> 
     162                <stability> 
     163                        <release>stable</release> 
     164                        <api>stable</api> 
     165                </stability> 
     166                <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license> 
     167                <notes> 
     168- Added XMail driver 
     169- Improve security of chpasswd driver using popen instead of exec+echo (#1486987) 
     170- Added chpass-wrapper.py script to improve security (#1486987) 
     171            </notes> 
     172            </release> 
     173    </changelog> 
    157174</package> 
  • trunk/plugins/password/password.php

    r3989 r4016  
    66 | @version @package_version@                                                             | 
    77 |                                                                         | 
    8  | Copyright (C) 2009, Roundcube Dev.                                      | 
     8 | Copyright (C) 2009-2010, Roundcube Dev.                                 | 
    99 |                                                                         | 
    1010 | This program is free software; you can redistribute it and/or modify    | 
     
    125125            } 
    126126            // try to save the password 
    127             else if (!($res = $this->_save($curpwd,$newpwd))) { 
     127            else if (!($res = $this->_save($curpwd, $newpwd))) { 
    128128                $rcmail->output->command('display_message', $this->gettext('successfullysaved'), 'confirmation'); 
    129129                $_SESSION['password'] = $rcmail->encrypt($newpwd); 
     
    230230        $result = password_save($curpass, $passwd); 
    231231 
     232        if (is_array($result)) { 
     233            $result  = $result['code']; 
     234            $message = $result['message']; 
     235        } 
     236 
    232237        switch ($result) { 
    233238            case PASSWORD_SUCCESS: 
    234239                return; 
    235240            case PASSWORD_CRYPT_ERROR; 
    236                 return $this->gettext('crypterror'); 
     241                $reason = $this->gettext('crypterror'); 
    237242            case PASSWORD_CONNECT_ERROR; 
    238                 return $this->gettext('connecterror'); 
     243                $reason = $this->gettext('connecterror'); 
    239244            case PASSWORD_ERROR: 
    240245            default: 
    241                 return $this->gettext('internalerror'); 
    242         } 
     246                $reason = $this->gettext('internalerror'); 
     247        } 
     248 
     249        if ($message) { 
     250            $reason .= ' ' . $message; 
     251        } 
     252 
     253        return $reason; 
    243254    }                                      
    244255} 
    245  
    246 ?> 
Note: See TracChangeset for help on using the changeset viewer.