- log-queries: yesno option, default is no, prints querylog.

git-svn-id: file:///svn/unbound/trunk@2429 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
Wouter Wijngaards 2011-06-16 13:15:57 +00:00
parent ecf4deedbe
commit 8def9c1043
12 changed files with 1371 additions and 1308 deletions

View file

@ -775,6 +775,11 @@ worker_handle_request(struct comm_point* c, void* arg, int error,
server_stats_insrcode(&worker->stats, c->buffer);
return 1;
}
if(worker->env.cfg->log_queries) {
char ip[128];
addr_to_str(&repinfo->addr, repinfo->addrlen, ip, sizeof(ip));
log_nametypeclass(0, ip, qinfo.qname, qinfo.qtype, qinfo.qclass);
}
if(qinfo.qtype == LDNS_RR_TYPE_AXFR ||
qinfo.qtype == LDNS_RR_TYPE_IXFR) {
verbose(VERB_ALGO, "worker request: refused zone transfer.");

View file

@ -1,3 +1,6 @@
16 June 2011: Wouter
- log-queries: yesno option, default is no, prints querylog.
14 June 2011: Wouter
- Use -flto compiler flag for link time optimization, if supported.
- iana portlist updated.

View file

@ -212,6 +212,9 @@ server:
# print UTC timestamp in ascii to logfile, default is epoch in seconds.
# log-time-ascii: no
# print one line with time, IP, name, type, class for every query.
# log-queries: no
# the pid file. Can be an absolute path outside of chroot/work dir.
# pidfile: "@UNBOUND_PIDFILE@"

View file

@ -395,6 +395,12 @@ Sets logfile lines to use a timestamp in UTC ascii. Default is no, which
prints the seconds since 1970 in brackets. No effect if using syslog, in
that case syslog formats the timestamp printed into the log files.
.TP
.B log\-queries: \fI<yes or no>
Prints one line per query to the log, with the log timestamp and IP address,
name, type and class. Default is no. Note that it takes time to print these
lines which makes the server (significantly) slower. Odd (nonprintable)
characters in names are printed as '?'.
.TP
.B pidfile: \fI<filename>
The process id is written to the file. Default is "@UNBOUND_PIDFILE@".
So,

View file

@ -89,6 +89,7 @@ config_create(void)
cfg->do_tcp = 1;
cfg->use_syslog = 1;
cfg->log_time_ascii = 0;
cfg->log_queries = 0;
#ifndef USE_WINSOCK
# ifdef USE_MINI_EVENT
/* select max 1024 sockets */
@ -382,6 +383,7 @@ int config_set_option(struct config_file* cfg, const char* opt,
else S_YNO("val-clean-additional:", val_clean_additional)
else S_NUMBER_OR_ZERO("val-log-level:", val_log_level)
else S_YNO("val-log-squelch:", val_log_squelch)
else S_YNO("log-queries:", log_queries)
else S_YNO("val-permissive-mode:", val_permissive_mode)
else S_YNO("ignore-cd-flag:", ignore_cd)
else S_STR("val-nsec3-keysize-iterations:", val_nsec3_key_iterations)
@ -580,6 +582,7 @@ config_get_option(struct config_file* cfg, const char* opt,
else O_STR(opt, "username", username)
else O_STR(opt, "directory", directory)
else O_STR(opt, "logfile", logfile)
else O_YNO(opt, "log-queries", log_queries)
else O_STR(opt, "pidfile", pidfile)
else O_YNO(opt, "hide-identity", hide_identity)
else O_YNO(opt, "hide-version", hide_version)

View file

@ -192,6 +192,8 @@ struct config_file {
int use_syslog;
/** log timestamp in ascii UTC */
int log_time_ascii;
/** log queries with one line per query */
int log_queries;
/** do not report identity (id.server, hostname.bind) */
int hide_identity;

File diff suppressed because it is too large Load diff

View file

@ -216,6 +216,7 @@ del-holddown{COLON} { YDVAR(1, VAR_DEL_HOLDDOWN) }
keep-missing{COLON} { YDVAR(1, VAR_KEEP_MISSING) }
use-syslog{COLON} { YDVAR(1, VAR_USE_SYSLOG) }
log-time-ascii{COLON} { YDVAR(1, VAR_LOG_TIME_ASCII) }
log-queries{COLON} { YDVAR(1, VAR_LOG_QUERIES) }
local-zone{COLON} { YDVAR(2, VAR_LOCAL_ZONE) }
local-data{COLON} { YDVAR(1, VAR_LOCAL_DATA) }
local-data-ptr{COLON} { YDVAR(1, VAR_LOCAL_DATA_PTR) }

File diff suppressed because it is too large Load diff

View file

@ -154,7 +154,8 @@
VAR_PREFETCH_KEY = 371,
VAR_SO_SNDBUF = 372,
VAR_HARDEN_BELOW_NXDOMAIN = 373,
VAR_IGNORE_CD_FLAG = 374
VAR_IGNORE_CD_FLAG = 374,
VAR_LOG_QUERIES = 375
};
#endif
/* Tokens. */
@ -275,6 +276,7 @@
#define VAR_SO_SNDBUF 372
#define VAR_HARDEN_BELOW_NXDOMAIN 373
#define VAR_IGNORE_CD_FLAG 374
#define VAR_LOG_QUERIES 375
@ -291,7 +293,7 @@ typedef union YYSTYPE
/* Line 1685 of yacc.c */
#line 295 "util/configparser.h"
#line 297 "util/configparser.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */

View file

@ -102,7 +102,7 @@ extern struct config_parser_state* cfg_parser;
%token VAR_AUTO_TRUST_ANCHOR_FILE VAR_KEEP_MISSING VAR_ADD_HOLDDOWN
%token VAR_DEL_HOLDDOWN VAR_SO_RCVBUF VAR_EDNS_BUFFER_SIZE VAR_PREFETCH
%token VAR_PREFETCH_KEY VAR_SO_SNDBUF VAR_HARDEN_BELOW_NXDOMAIN
%token VAR_IGNORE_CD_FLAG
%token VAR_IGNORE_CD_FLAG VAR_LOG_QUERIES
%%
toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@ -156,7 +156,8 @@ content_server: server_num_threads | server_verbosity | server_port |
server_auto_trust_anchor_file | server_add_holddown |
server_del_holddown | server_keep_missing | server_so_rcvbuf |
server_edns_buffer_size | server_prefetch | server_prefetch_key |
server_so_sndbuf | server_harden_below_nxdomain | server_ignore_cd_flag
server_so_sndbuf | server_harden_below_nxdomain | server_ignore_cd_flag |
server_log_queries
;
stubstart: VAR_STUB_ZONE
{
@ -396,6 +397,15 @@ server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG
free($2);
}
;
server_log_queries: VAR_LOG_QUERIES STRING_ARG
{
OUTYY(("P(server_log_queries:%s)\n", $2));
if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
yyerror("expected yes or no.");
else cfg_parser->cfg->log_queries = (strcmp($2, "yes")==0);
free($2);
}
;
server_chroot: VAR_CHROOT STRING_ARG
{
OUTYY(("P(server_chroot:%s)\n", $2));

View file

@ -271,7 +271,7 @@ log_nametypeclass(enum verbosity_value v, const char* str, uint8_t* name,
snprintf(c, sizeof(c), "CLASS%d", (int)dclass);
cs = c;
}
log_info("%s <%s %s %s>", str, buf, ts, cs);
log_info("%s %s %s %s", str, buf, ts, cs);
}
void log_name_addr(enum verbosity_value v, const char* str, uint8_t* zone,