Files
roundcube-ident_switch/SQL/postgres.initial.sql
Laurent Dinclaux fd9836c7ae Add custom auth, connection testing, preconfig_only, and security fixes
Major form improvements:
- Custom SMTP/Sieve credentials (separate username/password per protocol)
- Connection testing on save (IMAP, SMTP, Sieve) with localized errors
- preconfig_only mode to restrict domains to preconfigured entries
- Form POST value preservation on save errors (auth selects, passwords)
- Smart host placeholders (SMTP/Sieve default to IMAP host)

Security and bug:
- Fix password re-encryption bug (was comparing raw vs encrypted values)
- Fix XSS: escape label output in special folders form
- Fix parse_url() return value not checked for false
- Fix decrypt() failures not handled (fallback to empty string)
- Sanitize log output (remove raw POST data from log messages)
- Replace weak == comparisons with strict === (PHP and JS)

SQL changes:
- Consolidate 4 migrations (2026021000-03) into single 2026021000
- Remove now unused notify_sound_url column
- Add smtp_username, smtp_password, sieve_username, sieve_password columns
2026-02-10 20:50:05 +11:00

84 lines
1.3 KiB
SQL

CREATE TABLE ident_switch
(
id
serial
PRIMARY KEY,
user_id
integer
NOT NULL
REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE,
iid
integer
NOT NULL
REFERENCES identities(identity_id) ON DELETE CASCADE ON UPDATE CASCADE
UNIQUE,
username
varchar(64),
password
varchar(255),
imap_host
varchar(64),
imap_port
integer
CHECK(imap_port > 0 AND imap_port <= 65535),
imap_delimiter
char(1),
label
varchar(32),
flags
integer
NOT NULL
DEFAULT(0),
smtp_host
varchar(64),
smtp_port
integer
CHECK(smtp_port > 0 AND smtp_port <= 65535),
smtp_auth
smallint
NOT NULL
DEFAULT(1),
smtp_username
varchar(64),
smtp_password
varchar(255),
sieve_host
varchar(64),
sieve_port
integer
CHECK(sieve_port > 0 AND sieve_port <= 65535),
sieve_auth
smallint
NOT NULL
DEFAULT(1),
sieve_username
varchar(64),
sieve_password
varchar(255),
notify_check
smallint
NOT NULL
DEFAULT(1),
notify_basic
smallint
DEFAULT NULL,
notify_sound
smallint
DEFAULT NULL,
notify_desktop
smallint
DEFAULT NULL,
drafts_mbox
varchar(64),
sent_mbox
varchar(64),
junk_mbox
varchar(64),
trash_mbox
varchar(64),
UNIQUE (user_id, label)
);
CREATE INDEX IX_ident_switch_user_id ON ident_switch(user_id);
CREATE INDEX IX_ident_switch_iid ON ident_switch(iid);