From: Jean-Marc Pigeon (Delson) Date: Mon, 7 Jul 2025 16:39:27 +0000 (-0400) Subject: Starting to implement trigger form postgres SQL X-Git-Tag: tag-0.13~28 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=2801bb68c8175ebde381fe38671aa0b65e4b2e44;p=jmp%2Fmailleur Starting to implement trigger form postgres SQL --- diff --git a/sql/Makefile b/sql/Makefile index 06e7508..3095b4f 100644 --- a/sql/Makefile +++ b/sql/Makefile @@ -49,15 +49,13 @@ ndbmysql: ) | sudo mariadb dbpostg : mailleur.postg - @-( \ + @ -( \ echo "CREATE ROLE apache WITH LOGIN;"; \ - echo "CREATE ROLE dovecot WITH LOGIN;"; \ - echo "CREATE DATABASE mailleur \ - ENCODING='UTF8';" \ + echo "CREATE ROLE dovecot WITH LOGIN;"; \ + echo "CREATE EXTENSION pgcrypto;"; \ + echo "CREATE DATABASE mailleur "; \ + echo " ENCODING='UTF8';"; \ ) | psql -q -U postgres template1 - @ ( \ - echo "CREATE EXTENSION pgcrypto;" \ - ) | psql -q mailleur; @ cat mailleur.postg | psql -q mailleur; @ cpp -P -DPOSTGRESQL datatest.sql | psql -q mailleur; @ echo "POSGRESQL database ready" @@ -65,9 +63,9 @@ dbpostg : mailleur.postg ndbpostg: @-( \ echo "drop database mailleur;"; \ - echo "DROP EXTENSION pgcrypto;"; \ echo "DROP ROLE apache;"; \ echo "DROP ROLE dovecot;"; \ + echo "DROP EXTENSION pgcrypto;"; \ ) | psql -q -U postgres template1 #-------------------------------------------------------------------- diff --git a/sql/mailleur.sql b/sql/mailleur.sql index 8af9b8a..927868d 100644 --- a/sql/mailleur.sql +++ b/sql/mailleur.sql @@ -69,6 +69,21 @@ CREATE TABLE emails ( GRANT SELECT,INSERT,UPDATE,DELETE ON emails TO mailapache; GRANT SELECT ON emails TO maildove; +//defining the password trigger according database type +#ifdef POSTGRESQL +CREATE FUNCTION updpass() + RETURNS trigger AS $$ + BEGIN + NEW.hash = md5(concat (NEW.email,':',NEW.realm,':',new.password)); + NEW.password = crypt(new.password, gen_salt('md5')); + RETURN NEW; + END + $$ LANGUAGE 'plpgsql'; + +CREATE TRIGGER keephash + BEFORE INSERT OR UPDATE on emails + FOR EACH ROW EXECUTE PROCEDURE updpass(); +#endif //table about session CREATE TABLE sessions ( diff --git a/sql/trigger b/sql/trigger new file mode 100644 index 0000000..510872d --- /dev/null +++ b/sql/trigger @@ -0,0 +1,25 @@ + +#To encrypt a field with md5 keys +select crypt( 'data', gen_salt('md5')); + + +DROP TRIGGER IF EXISTS cool + ON emails CASCADE; + +CREATE OR REPLACE FUNCTION updpass() + RETURNS trigger AS +$$ +BEGIN +NEW.hash = md5(concat (NEW.email,':',NEW.realm,':',new.password)); +NEW.password = crypt(new.password, gen_salt('md5')); +RETURN NEW; +END; + +$$ +LANGUAGE 'plpgsql'; + +CREATE TRIGGER cool + BEFORE INSERT OR UPDATE + ON emails + FOR EACH ROW + EXECUTE PROCEDURE updpass(); diff --git a/support/crdb.sh b/support/crdb.sh index b86e916..44f447e 100755 --- a/support/crdb.sh +++ b/support/crdb.sh @@ -85,7 +85,8 @@ case "$DB_TYPE" in echo "CREATE ROLE $APPNAME WITH LOGIN CREATEDB SUPERUSER;" echo "CREATE ROLE apache WITH LOGIN;" echo "CREATE ROLE dovecot WITH LOGIN;" - echo "CREATE EXTENSION pgcrypto;" + echo "DROP EXTENSION IF EXISTS pgcrypto;" + echo "CREATE EXTENSION IF NOT EXISTS pgcrypto;" echo "CREATE DATABASE $APPNAME ENCODING='UTF8';" ) | /usr/bin/su - -m postgres -c "$SQL $SQLHOST $SQLPORT template1" >> $LOG echo "data-base is now created" >> $LOG