X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=postlicyd%2Fquery.c;h=327c2b76a6a1dda4c2d77a66884d7dc1d24e4915;hb=bcdb5e34f3c251407304e01eea26607e77dd8609;hp=1dc8e6f12bc9a7dc8cc5992577ed0f83fbaff707;hpb=e6d0c7ab6103af206f95c1291b29c3f151a41484;p=apps%2Fpfixtools.git diff --git a/postlicyd/query.c b/postlicyd/query.c index 1dc8e6f..327c2b7 100644 --- a/postlicyd/query.c +++ b/postlicyd/query.c @@ -42,7 +42,7 @@ bool query_parse(query_t *query, char *p) #define PARSE_CHECK(expr, error, ...) \ do { \ if (!(expr)) { \ - syslog(LOG_ERR, error, ##__VA_ARGS__); \ + err(error, ##__VA_ARGS__); \ return false; \ } \ } while (0) @@ -69,11 +69,9 @@ bool query_parse(query_t *query, char *p) vtk = policy_tokenize(v, vlen); switch (policy_tokenize(k, klen)) { -#define CASE(up, low) case PTK_##up: query->low = v; v[vlen] = '\0'; syslog(LOG_DEBUG, "%s = %s", ptokens[PTK_##up], query->low); break; +#define CASE(up, low) case PTK_##up: query->low = v; v[vlen] = '\0'; break; CASE(HELO_NAME, helo_name); CASE(QUEUE_ID, queue_id); - CASE(SENDER, sender); - CASE(RECIPIENT, recipient); CASE(RECIPIENT_COUNT, recipient_count); CASE(CLIENT_ADDRESS, client_address); CASE(CLIENT_NAME, client_name); @@ -93,6 +91,24 @@ bool query_parse(query_t *query, char *p) CASE(STRESS, stress); #undef CASE + case PTK_SENDER: + query->sender = v; + v[vlen] = '\0'; + query->sender_domain = memchr(query->sender, '@', vlen); + if (query->sender_domain != NULL) { + ++query->sender_domain; + } + break; + + case PTK_RECIPIENT: + query->recipient = v; + v[vlen] = '\0'; + query->recipient_domain = memchr(query->recipient, '@', vlen); + if (query->recipient_domain != NULL) { + ++query->recipient_domain; + } + break; + case PTK_REQUEST: PARSE_CHECK(vtk == PTK_SMTPD_ACCESS_POLICY, "unexpected `request' value: %.*s", vlen, v); @@ -124,7 +140,7 @@ bool query_parse(query_t *query, char *p) break; default: - syslog(LOG_WARNING, "unexpected key, skipped: %.*s", klen, k); + warn("unexpected key, skipped: %.*s", klen, k); continue; } }