LINUX.ORG.RU

История изменений

Исправление 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:

    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 пароль почтового пользователя вообще не в базе меняется.

Исходная версия 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 пароль почтового пользователя вообще не в базе меняется.