История изменений
Исправление leave, (текущая версия) :
Да ты, верно, издеваешься. Открываем README и читаем:
Example implementations of an update_passwd function:
- This is for use with a SELECT update_passwd(%o,%c,%u) query
Updates the password only when the old password matches the MD5 password in the database
CREATE FUNCTION update_password (oldpass text, cryptpass text, user text) RETURNS text MODIFIES SQL DATA BEGIN DECLARE currentsalt varchar(20); DECLARE error text; SET error = 'incorrect current password'; SELECT substring_index(substr(user.password,4),_latin1'$',1) INTO currentsalt FROM users WHERE username=user; SELECT '' INTO error FROM users WHERE username=user AND password=ENCRYPT(oldpass,currentsalt); UPDATE users SET password=cryptpass WHERE username=user AND password=ENCRYPT(oldpass,currentsalt); RETURN error; END
Example SQL UPDATEs:
- Crypt text passwords:
- Use a MYSQL crypt function (*nix only) with random 8 character saltUPDATE users SET password=%c WHERE username=%u LIMIT 1
- MD5 stored passwords:UPDATE users SET password=ENCRYPT(%p,concat(_utf8'$1$',right(md5(rand()),8),_utf8'$')) WHERE username=%u LIMIT 1
UPDATE users SET password=MD5(%p) WHERE username=%u AND password=MD5(%o) LIMIT 1
Но знаешь, что самое смешное? Я на 100% уверен, что тебе это не поможет, потому что вместо чтения мануалов по настройке почты ты накликал в ispmgr. Даю подсказку: в дефолтной isp'шной связке postfix+dovecot пароль почтового пользователя вообще не в базе меняется.
Исходная версия leave, :
Да ты, верно, издеваешься. Открываем README и читаем:
Example implementations of an update_passwd function:
- This is for use with LMS (http://lms.org.pl) database and postgres:
CREATE OR REPLACE FUNCTION update_passwd(hash text, account text) RETURNS integer AS $$ DECLARE res integer; BEGIN UPDATE passwd SET password = hash WHERE login = split_part(account, '@', 1) AND domainid = (SELECT id FROM domains WHERE name = split_part(account, '@', 2)) RETURNING id INTO res; RETURN res; END; $$ LANGUAGE plpgsql SECURITY DEFINER;
- This is for use with a SELECT update_passwd(%o,%c,%u) query Updates the password only when the old password matches the MD5 password in the database
CREATE FUNCTION update_password (oldpass text, cryptpass text, user text) RETURNS text MODIFIES SQL DATA BEGIN DECLARE currentsalt varchar(20); DECLARE error text; SET error = 'incorrect current password'; SELECT substring_index(substr(user.password,4),_latin1'$',1) INTO currentsalt FROM users WHERE username=user; SELECT " INTO error FROM users WHERE username=user AND password=ENCRYPT(oldpass,currentsalt); UPDATE users SET password=cryptpass WHERE username=user AND password=ENCRYPT(oldpass,currentsalt); RETURN error; END
Example SQL UPDATEs:
- Plain text passwords: UPDATE users SET password=%p WHERE username=%u AND password=%o AND domain=%h LIMIT 1
- Crypt text passwords: UPDATE users SET password=%c WHERE username=%u LIMIT 1
- Use a MYSQL crypt function (*nix only) with random 8 character salt UPDATE users SET password=ENCRYPT(%p,concat(_utf8'$1$',right(md5(rand()),8),_utf8'$')) WHERE username=%u LIMIT 1
- MD5 stored passwords: UPDATE users SET password=MD5(%p) WHERE username=%u AND password=MD5(%o) LIMIT 1
Но знаешь, что самое смешное? Я на 100% уверен, что тебе это не поможет, потому что вместо чтения мануалов по настройке почты ты накликал в ispmgr. Даю подсказку: в дефолтной isp'шной связке postfix+dovecot пароль почтового пользователя вообще не в базе меняется.