RoundCube 0.1 Stable Jelszómódosító panel készítése

Az első RoundCube 0.1 Stable Release megjelenése alkalmából aktualizáltam a RoundCube 0.1 RC2 Jelszómódosítás c. tutorialomat:

Ebben a segédletben némi forráskód módosítással képessé tesszük a RoundCube 0.1 Stable webmail kliensünket, hogy rajta keresztül ügyfeleink/felhasználóink megváltoztathassák levelezéshez használt jelszavukat. A segédletben hMailServer az SMTP/IMAP server, de gyakorlatilag minden olyan mail szerverrel működhet, amely mysql adatbázisban tárolja a felhasználók jelszavát. Különbség csak az 3. pontban az SQL UPDATE résznél lesz..

1.Telepítsük fel a hMailServer-t és a Roundcube-ot és hozzuk őket működőképes állapotba.

2. A feltelepített RoundCube mappájában hajtsuk végre a következő módosításokat kedvenc text editorunk segítségével az alábbi fájlokon:

index.php 369. sor után beilleszteni:

if (($_action=='passwd') or ($_action=='save-passwd'))
include('program/steps/settings/passwd.inc');

program/steps/settings/func.inc 255. sor-tól módosítsuk így:

$OUTPUT->add_handlers(array(
'userprefs' => 'rcmail_user_prefs_form',
'identitieslist' => 'rcmail_identities_list',
'itentitieslist' => 'rcmail_identities_list',  // keep this for backward compatibility
'userpasswd'=>'rcmail_passwd_form' ));

program/steps/settings/passwd.inc: letöltés

skins/default/templates/passwd.html: letöltés

skins/default/includes/settingstabs.html tartalmát cseréljük erre: letöltés
program/js/app.js módosításai:

285. sor: módosítás:

case 'settings':
this.enable_command('preferences', 'identities', 'save', 'folders', 'passwd', true);

297. if (this.gui_objects.identitieslist) sor ELÉ:

if (this.env.action=='passwd' || this.env.action=='save-passwd')
{
var input_curpasswd = rcube_find_object('_curpasswd');
var input_newpasswd = rcube_find_object('_newpasswd');
var input_confpasswd = rcube_find_object('_confpasswd');
if (input_curpasswd && input_curpasswd.value=='')
input_curpasswd.focus();
else if (input_confpasswd)
input_confpasswd.focus();
this.enable_command('save-passwd', true);
}

984. sor környéke (az előző módosításoktól függ): case ‘delete-folder’: ……… break; után:

case 'passwd':
this.goto_url('passwd');
break;

case 'save-passwd':
var input_curpasswd = rcube_find_object('_curpasswd');
var input_newpasswd = rcube_find_object('_newpasswd');
var input_confpasswd = rcube_find_object('_confpasswd');
if ((input_newpasswd && input_newpasswd.value=='') && (input_confpasswd && input_confpasswd.value=='') || (input_curpasswd && input_curpasswd.value==''))
{
alert(this.get_label('nopassword'));
input_curpasswd.value='';
input_newpasswd.value='';
input_confpasswd.value='';
input_curpasswd.focus();
}
else if ((input_newpasswd && input_confpasswd) && ( input_newpasswd.value != input_confpasswd.value))
{
alert(this.get_label('passwordinconsistency'));
input_newpasswd.value='';
input_confpasswd.value='';
input_newpasswd.focus();
}
else
this.gui_objects.editform.submit();
break;

program/localization/hu/labels.inc (feltéve ha a config fájlban a nyelvet már átállítottuk magyarra..)

A default nyelvet a main.inc.php-ben lehet beállítani:

$rcmail_config['locale_string'] = 'hu';

Érdemes a többi usereink által igényelt nyelvekhez is elkészíteni a fordításokat és a program/localization/[nyelv]/ mappákban módosítgatni őket.

$labels['changepasswd']  = 'Jelszó változtatás';
$labels['curpasswd']  = 'Jelszó';
$labels['newpasswd']  = 'Új jelszó';
$labels['confpasswd']  = 'Új jelszó megerősítése';

program/localization/hu/messages.inc (ugyan az a szituáció mint a labels.inc esetében)

$messages['nopassword'] = "Írj be egy új jelszót!";
$messages['passwordinconsistency'] = "Az új jelszó és megerősítése nem egyezik.";

3. Miután felkészítettük a felületet, gondoskodjunk az adatbázis beli módosításokról.

Fontos, hogy a roundcube-hoz használt mysql user-nek legyen írási joga is a levelezőszerver adatbázisához.

A létrehozott program/steps/settings/passwd.inc fájlban módosítsuk az SQL UPDATE-et a levelezőszerver adatbázisszerkezetének függényében. A létrehozott fájlban a külső adatbázisból működő hMailServeré van.

$sql_query = " UPDATE  hmailserver.hm_accounts SET accountpassword= md5(\"$newpasswd\") WHERE accountaddress = \"" .  $_SESSION['username']  . "\" AND accountpassword =  md5(\"$curpasswd\")" ;

5 Responses to “RoundCube 0.1 Stable Jelszómódosító panel készítése”

  1. Speedy  on April 13th, 2008

    Van egy kis gondom az md5 titkositással. Az adatbázisban nekem nem md5 ben vannnak a jelszavak hanem ENCRYPT formában vannak titkositva. native DES crypt

    És sajnos a jelszó változtatás nem akar összejönni.

    Köszönöm

  2. peet  on April 22nd, 2008

    Ne md5-el titkosíts az utolsó sorban, ahol md5() fv-eket látsz, hanem DES-el.
    Bocs, hogy csak most de a spamszűrőm kiszűrte a figyelmeztető mailt :/

  3. Tomi  on May 26th, 2008

    Szia Peter,

    sajnos a letolteni valo fajlok hianyoznak (404 error). Tudnad ezeket potolni, vagy mailben elkuldeni nekem?

    Elore is koszonom,
    Tamas

  4. peet  on May 30th, 2008

    Szia Tomi!
    Visszaállítottam backupból, mert valamilyen rejtélyes módon eltűnt az összes 2008-as feltöltés.
    Bocsi a kellemetlenségek miatt.

    P

  5. Tomi  on May 31st, 2008

    Nagyon szepen koszonom. :)


Leave a Reply