- Password plugin: added poppassd driver
8 files modified
1 files added
| | |
| | | 2. Drivers |
| | | 2.1. Database (sql) |
| | | 2.2. Cyrus/SASL (sasl) |
| | | 2.3. Poppassd/Courierpassd (poppassd) |
| | | 3. Driver API |
| | | |
| | | |
| | |
| | | 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 |
| | | ------------- |
| | | |
| | | Driver file (<driver_name>.php) must define 'password_save' function with |
| | | 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. |
| | | |
| | |
| | | // Password Plugin options |
| | | // ----------------------- |
| | | // 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. |
| | | // Default: false. |
| | | $rcmail_config['password_confirm_current'] = false; |
| | | $rcmail_config['password_confirm_current'] = true; |
| | | |
| | | |
| | | // SQL Driver options |
| | |
| | | // Default: "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; |
| | | |
| | | ?> |
New file |
| | |
| | | <?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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | ?> |
| | |
| | | $messages['nocurpassword'] = 'Please input current password.'; |
| | | $messages['passwordincorrect'] = 'Current password incorrect.'; |
| | | $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['nocurpassword'] = 'Palun sisesta vana parool.'; |
| | | $messages['passwordincorrect'] = 'Vana parool on vale.'; |
| | | $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['nocurpassword'] = 'Kérjük adja meg a jelenlegi jelszót.'; |
| | | $messages['passwordincorrect'] = 'Érvénytelen a jelenlegi jelszó.'; |
| | | $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['nocurpassword'] = 'vul het huidige wachtwoord in.'; |
| | | $messages['passwordincorrect'] = 'Huidig wachtwoord is onjuist.'; |
| | | $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['nocurpassword'] = 'Wprowadź aktualne hasło.'; |
| | | $messages['passwordincorrect'] = 'Błędne aktualne hasło, 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.'; |
| | | |
| | | ?> |
| | |
| | | /* |
| | | +-------------------------------------------------------------------------+ |
| | | | Password Plugin for Roundcube | |
| | | | Version 1.2 | |
| | | | Version 1.3 | |
| | | | | |
| | | | Copyright (C) 2009, RoundCube Dev. - Switzerland | |
| | | | | |
| | |
| | | |
| | | define('PASSWORD_CRYPT_ERROR', 1); |
| | | define('PASSWORD_ERROR', 2); |
| | | define('PASSWORD_CONNECT_ERROR', 3); |
| | | define('PASSWORD_SUCCESS', 0); |
| | | |
| | | class password extends rcube_plugin |
| | |
| | | case PASSWORD_SUCCESS: |
| | | return; |
| | | case PASSWORD_CRYPT_ERROR; |
| | | return $this->gettext('nocryptfunction'); |
| | | return $this->gettext('crypterror'); |
| | | case PASSWORD_CONNECT_ERROR; |
| | | return $this->gettext('connecterror'); |
| | | case PASSWORD_ERROR: |
| | | default: |
| | | return $this->gettext('internalerror'); |