diff options
| author | manuel <manuel@mausz.at> | 2017-08-16 15:44:01 +0200 |
|---|---|---|
| committer | manuel <manuel@mausz.at> | 2017-08-16 15:44:01 +0200 |
| commit | 08fb6b6e2d13be7b24bbf993bdc99c56e16ca3c5 (patch) | |
| tree | 7641686730598953f5dc7a79219a290fd034ba75 | |
| parent | 59180d2a12cbd4cef4a45d0eedc63818ae1d14e3 (diff) | |
| download | qmail-08fb6b6e2d13be7b24bbf993bdc99c56e16ca3c5.tar.gz qmail-08fb6b6e2d13be7b24bbf993bdc99c56e16ca3c5.tar.bz2 qmail-08fb6b6e2d13be7b24bbf993bdc99c56e16ca3c5.zip | |
realrcptto: extract username from dovecot-rda calls
| -rw-r--r-- | realrcptto.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/realrcptto.c b/realrcptto.c index b419847..866bd57 100644 --- a/realrcptto.c +++ b/realrcptto.c | |||
| @@ -201,9 +201,28 @@ int depth; | |||
| 201 | case '#': | 201 | case '#': |
| 202 | case '.': | 202 | case '.': |
| 203 | case '/': | 203 | case '/': |
| 204 | case '|': | ||
| 205 | case '+': | 204 | case '+': |
| 206 | break; | 205 | break; |
| 206 | case '|': | ||
| 207 | ++i; | ||
| 208 | char *u, *u2; | ||
| 209 | if ((u = strstr(cmds.s + i, "dovecot-rda ")) != NULL | ||
| 210 | && (u = strstr(u + strlen("dovecot-rda "), "-a")) != NULL) | ||
| 211 | { | ||
| 212 | u += strlen("-a"); | ||
| 213 | while (*u && (*u == ' ' || *u == '"')) | ||
| 214 | ++u; | ||
| 215 | u2 = u; | ||
| 216 | while (*u2 && *u2 != ' ' && *u2 != '"') | ||
| 217 | ++u2; | ||
| 218 | if (u != u2) | ||
| 219 | { | ||
| 220 | *u2 = '\0'; | ||
| 221 | count++; | ||
| 222 | username = u; | ||
| 223 | } | ||
| 224 | } | ||
| 225 | break; | ||
| 207 | case '&': | 226 | case '&': |
| 208 | ++i; | 227 | ++i; |
| 209 | default: | 228 | default: |
