- Password plugin: added poppassd driver

release-0.6
alecpl 16 years ago
parent 70306a4c75
commit 4534ab8771

@ -28,6 +28,7 @@
2. Drivers 2. Drivers
2.1. Database (sql) 2.1. Database (sql)
2.2. Cyrus/SASL (sasl) 2.2. Cyrus/SASL (sasl)
2.3. Poppassd/Courierpassd (poppassd)
3. Driver API 3. Driver API
@ -149,11 +150,18 @@
This could save you some headaches if you are the paranoid type. This could save you some headaches if you are the paranoid type.
2.3. Poppassd/Courierpassd (poppassd)
----------------------------
You can specify which host to connect to via `password_pop_host` and
what port via `password_pop_port`. See config.inc.php file for more info.
3. Driver API 3. Driver API
------------- -------------
Driver file (<driver_name>.php) must define 'password_save' function with Driver file (<driver_name>.php) must define 'password_save' function with
two arguments. First - current password, second - new password. Function two arguments. First - current password, second - new password. Function
may return PASSWORD_SUCCESS on success or PASSWORD_ERROR on any error. may return PASSWORD_SUCCESS on success or any of PASSWORD_CONNECT_ERROR,
PASSWORD_CRYPT_ERROR, PASSWORD_ERROR when driver was unable to change password.
See existing drivers in drivers/ directory for examples. See existing drivers in drivers/ directory for examples.

@ -3,11 +3,11 @@
// Password Plugin options // Password Plugin options
// ----------------------- // -----------------------
// A driver to use for password change. Default: "sql". // A driver to use for password change. Default: "sql".
$rcmail_config['password_driver'] = 'sql'; $rcmail_config['password_driver'] = 'poppassd';
// Determine whether current password is required to change password. // Determine whether current password is required to change password.
// Default: false. // Default: false.
$rcmail_config['password_confirm_current'] = false; $rcmail_config['password_confirm_current'] = true;
// SQL Driver options // SQL Driver options
@ -28,4 +28,13 @@ $rcmail_config['password_db_dsn'] = '';
// Default: "SELECT update_passwd(%c, %u)" // Default: "SELECT update_passwd(%c, %u)"
$rcmail_config['password_query'] = 'SELECT update_passwd(%c, %u)'; $rcmail_config['password_query'] = 'SELECT update_passwd(%c, %u)';
// Poppassd Driver options
// -----------------------
// The host which changes the password
$rcmail_config['password_pop_host'] = 'localhost';
// TCP port used for poppassd connections
$rcmail_config['password_pop_port'] = 106;
?> ?>

@ -0,0 +1,56 @@
<?php
/**
* Poppassd Password Driver
*
* Driver to change passwords via Poppassd/Courierpassd
*
* @version 1.0
* @author Philip Weir
*
*/
function password_save($curpass, $passwd)
{
$rcmail = rcmail::get_instance();
// include('Net/Socket.php');
$poppassd = new Net_Socket();
if (PEAR::isError($poppassd->connect($rcmail->config->get('password_pop_host'), $rcmail->config->get('password_pop_port'), null))) {
return PASSWORD_CONNECT_ERROR;
}
else {
$result = $poppassd->readLine();
if(!preg_match('/^2\d\d/', $result)) {
$poppassd->disconnect();
return PASSWORD_ERROR;
}
else {
$poppassd->writeLine("user ". $_SESSION['username']);
$result = $poppassd->readLine();
if(!preg_match('/^[23]\d\d/', $result) ) {
$poppassd->disconnect();
return PASSWORD_CONNECT_ERROR;
}
else {
$poppassd->writeLine("pass ". $curpass);
$result = $poppassd->readLine();
if(!preg_match('/^[23]\d\d/', $result) ) {
$poppassd->disconnect();
return PASSWORD_ERROR;
}
else {
$poppassd->writeLine("newpass ". $passwd);
$result = $poppassd->readLine();
$poppassd->disconnect();
if (!preg_match('/^2\d\d/', $result))
return PASSWORD_ERROR;
else
return PASSWORD_SUCCESS;
}
}
}
}
}
?>

@ -11,7 +11,8 @@ $messages['nopassword'] = 'Please input new password.';
$messages['nocurpassword'] = 'Please input current password.'; $messages['nocurpassword'] = 'Please input current password.';
$messages['passwordincorrect'] = 'Current password incorrect.'; $messages['passwordincorrect'] = 'Current password incorrect.';
$messages['passwordinconsistency'] = 'Passwords do not match, please try again.'; $messages['passwordinconsistency'] = 'Passwords do not match, please try again.';
$messages['nocryptfunction'] = 'The server is missing a function to encrypt your password.'; $messages['crypterror'] = 'Could not save new password. Encrypt function missing.';
$messages['connecterror'] = 'Could not save new password. Connection error.';
$messages['internalerror'] = 'Could not save new password.'; $messages['internalerror'] = 'Could not save new password.';
?> ?>

@ -11,7 +11,7 @@ $messages['nopassword'] = 'Palun sisesta uus parool.';
$messages['nocurpassword'] = 'Palun sisesta vana parool.'; $messages['nocurpassword'] = 'Palun sisesta vana parool.';
$messages['passwordincorrect'] = 'Vana parool on vale.'; $messages['passwordincorrect'] = 'Vana parool on vale.';
$messages['passwordinconsistency'] = 'Paroolid ei kattu, palun proovi uuesti.'; $messages['passwordinconsistency'] = 'Paroolid ei kattu, palun proovi uuesti.';
$messages['nocryptfunction'] = 'Serveris ei ole parooli krüpteerimiseks vajalikku funktsiooni.'; $messages['crypterror'] = 'Serveris ei ole parooli krüpteerimiseks vajalikku funktsiooni.';
$messages['internalerror'] = 'Uue parooli andmebaasi salvestamine nurjus.'; $messages['internalerror'] = 'Uue parooli andmebaasi salvestamine nurjus.';
?> ?>

@ -11,7 +11,7 @@ $messages['nopassword'] = 'Kérjük adja meg az új jelszót.';
$messages['nocurpassword'] = 'Kérjük adja meg a jelenlegi jelszót.'; $messages['nocurpassword'] = 'Kérjük adja meg a jelenlegi jelszót.';
$messages['passwordincorrect'] = 'Érvénytelen a jelenlegi jelszó.'; $messages['passwordincorrect'] = 'Érvénytelen a jelenlegi jelszó.';
$messages['passwordinconsistency'] = 'A két új jelszó nem egyezik.'; $messages['passwordinconsistency'] = 'A két új jelszó nem egyezik.';
$messages['nocryptfunction'] = 'Hiba történt a kérés feldolgozása során.'; $messages['crypterror'] = 'Hiba történt a kérés feldolgozása során.';
$messages['internalerror'] = 'Hiba történt a kérés feldolgozása során.'; $messages['internalerror'] = 'Hiba történt a kérés feldolgozása során.';
?> ?>

@ -11,7 +11,7 @@ $messages['nopassword'] = 'Vul een wachtwoord in.';
$messages['nocurpassword'] = 'vul het huidige wachtwoord in.'; $messages['nocurpassword'] = 'vul het huidige wachtwoord in.';
$messages['passwordincorrect'] = 'Huidig wachtwoord is onjuist.'; $messages['passwordincorrect'] = 'Huidig wachtwoord is onjuist.';
$messages['passwordinconsistency'] = 'Wachtwoorden komen niet overeen, probeer het opnieuw.'; $messages['passwordinconsistency'] = 'Wachtwoorden komen niet overeen, probeer het opnieuw.';
$messages['nocryptfunction'] = 'De server mist een functie om uw wachtwoord et beveiligen.'; $messages['crypterror'] = 'De server mist een functie om uw wachtwoord et beveiligen.';
$messages['internalerror'] = 'Uw wachtwoord kan niet worden opgeslagen.'; $messages['internalerror'] = 'Uw wachtwoord kan niet worden opgeslagen.';
?> ?>

@ -11,7 +11,8 @@ $messages['nopassword'] = 'Wprowadź nowe hasło.';
$messages['nocurpassword'] = 'Wprowadź aktualne hasło.'; $messages['nocurpassword'] = 'Wprowadź aktualne hasło.';
$messages['passwordincorrect'] = 'Błędne aktualne hasło, spróbuj ponownie.'; $messages['passwordincorrect'] = 'Błędne aktualne hasło, spróbuj ponownie.';
$messages['passwordinconsistency'] = 'Hasła nie pasują, spróbuj ponownie.'; $messages['passwordinconsistency'] = 'Hasła nie pasują, spróbuj ponownie.';
$messages['nocryptfunction'] = 'Nie udało się zapisać nowego hasła. Brak funkcji kodującej.'; $messages['crypterror'] = 'Nie udało się zapisać nowego hasła. Brak funkcji kodującej.';
$messages['connecterror'] = 'Nie udało się zapisać nowego hasła. Błąd połączenia.';
$messages['internalerror'] = 'Nie udało się zapisać nowego hasła.'; $messages['internalerror'] = 'Nie udało się zapisać nowego hasła.';
?> ?>

@ -3,7 +3,7 @@
/* /*
+-------------------------------------------------------------------------+ +-------------------------------------------------------------------------+
| Password Plugin for Roundcube | | Password Plugin for Roundcube |
| Version 1.2 | | Version 1.3 |
| | | |
| Copyright (C) 2009, RoundCube Dev. - Switzerland | | Copyright (C) 2009, RoundCube Dev. - Switzerland |
| | | |
@ -30,6 +30,7 @@
define('PASSWORD_CRYPT_ERROR', 1); define('PASSWORD_CRYPT_ERROR', 1);
define('PASSWORD_ERROR', 2); define('PASSWORD_ERROR', 2);
define('PASSWORD_CONNECT_ERROR', 3);
define('PASSWORD_SUCCESS', 0); define('PASSWORD_SUCCESS', 0);
class password extends rcube_plugin class password extends rcube_plugin
@ -192,7 +193,9 @@ class password extends rcube_plugin
case PASSWORD_SUCCESS: case PASSWORD_SUCCESS:
return; return;
case PASSWORD_CRYPT_ERROR; case PASSWORD_CRYPT_ERROR;
return $this->gettext('nocryptfunction'); return $this->gettext('crypterror');
case PASSWORD_CONNECT_ERROR;
return $this->gettext('connecterror');
case PASSWORD_ERROR: case PASSWORD_ERROR:
default: default:
return $this->gettext('internalerror'); return $this->gettext('internalerror');

Loading…
Cancel
Save