Archive for 'Roundcube'

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\")" ;

Roundcube 0.1 Stable Release

Na végre! Több mint két év után végre megjelent a népszerű opensource webmail kliens első stabil verziója is. Sajnálatos, hogy ilyen lassan halad a fejlesztés :( A Roundcube 0.1 Stable Release innen letölthető. A nagy januári fenyegetések ellenére még megy php4 alatt is, de azt igérik ez az utolsó..
Nagy újdonság, hogy van hozzá installer, mely segítségével az alapvető konfigurációs beállításokat elvégezhetjük config file piszkálás nélkül. Raktak bele egy php ellenőrző részt is, mely a megfelelő modulok és direktívák meglétét illetve helyességét ellenőrzi. Én kihagytam a telepítést, mert reflex szerűen a konfig fájlt kezdtem el buherálni és észre sem vettem, hogy van ilyen lehetőség :)

Kellemes meglepetés volt, hogy az új verzió tartalmaz “olvasott/olvasatlan levél kapcsolót”, ami szvsz nagyon hiányzott. Html levél írásakor ezentúl a csatolt képeinket beszúrhatjuk a levél szövegébe is.  Továbbá beépítették a “levél olvasásának visszaigazolása” lehetőséget is, melyet normál kliensekből ismerhetünk.  És persze egy rakás kisebb-nagyobb hiba javítása is megtörtént a stable verzió kiadása elött.

Egy apró hibát már javítottam: a magyar localization messages.inc fájl kódolása Latin 1, ezt UTF-8-ra változtatva az ajaxos üzenetablak karakterproblémái megszűnnek.

RoundCube 0.1 RC2 Jelszómódosítás

Megjelent az első RoundCube 0.1 Stable Release. Ez a segédlet a RoundCube 0.1 RC2 verziójához készült. Az új tutorialt itt találod: RoundCube 0.1 Stable Jelszómódosító panel készítése.
Ebben a segédletben némi forráskód módosítással képessé tesszük a RoundCube 0.1 RC2 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 354. sor után beilleszteni:

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

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

$OUTPUT->add_handlers(array('userprefs'=>'rcmail_user_prefs_form','itentitieslist' =>'rcmail_identities_list','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:

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

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

281. sor: 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);
}

955. 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\")" ;