|
@@ -59,6 +59,7 @@
|
|
#include <auth/auth_srv.h>
|
|
#include <auth/auth_srv.h>
|
|
#include <auth/query.h>
|
|
#include <auth/query.h>
|
|
#include <auth/statistics.h>
|
|
#include <auth/statistics.h>
|
|
|
|
+#include <auth/auth_log.h>
|
|
|
|
|
|
using namespace std;
|
|
using namespace std;
|
|
|
|
|
|
@@ -251,7 +252,7 @@ public:
|
|
|
|
|
|
void
|
|
void
|
|
makeErrorMessage(MessagePtr message, OutputBufferPtr buffer,
|
|
makeErrorMessage(MessagePtr message, OutputBufferPtr buffer,
|
|
- const Rcode& rcode, const bool verbose_mode,
|
|
+ const Rcode& rcode, const bool&,
|
|
std::auto_ptr<TSIGContext> tsig_context =
|
|
std::auto_ptr<TSIGContext> tsig_context =
|
|
std::auto_ptr<TSIGContext>())
|
|
std::auto_ptr<TSIGContext>())
|
|
{
|
|
{
|
|
@@ -289,11 +290,8 @@ makeErrorMessage(MessagePtr message, OutputBufferPtr buffer,
|
|
} else {
|
|
} else {
|
|
message->toWire(renderer);
|
|
message->toWire(renderer);
|
|
}
|
|
}
|
|
-
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_MESSAGES, AUTH_SEND_ERROR_RESPONSE)
|
|
- if (verbose_mode) {
|
|
+ .arg(message->toText());
|
|
- cerr << "[b10-auth] sending an error response (" <<
|
|
|
|
- renderer.getLength() << " bytes):\n" << message->toText() << endl;
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -362,15 +360,12 @@ AuthSrv::setMemoryDataSrc(const isc::dns::RRClass& rrclass,
|
|
isc_throw(InvalidParameter,
|
|
isc_throw(InvalidParameter,
|
|
"Memory data source is not supported for RR class "
|
|
"Memory data source is not supported for RR class "
|
|
<< rrclass);
|
|
<< rrclass);
|
|
- }
|
|
+ } else if (!impl_->memory_datasrc_ && memory_datasrc) {
|
|
- if (impl_->verbose_mode_) {
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_DETAIL, AUTH_MEM_DATASRC_ENABLED)
|
|
- if (!impl_->memory_datasrc_ && memory_datasrc) {
|
|
+ .arg(rrclass);
|
|
- cerr << "[b10-auth] Memory data source is enabled for class "
|
|
+ } else if (impl_->memory_datasrc_ && !memory_datasrc) {
|
|
- << rrclass << endl;
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_DETAIL, AUTH_MEM_DATASRC_DISABLED)
|
|
- } else if (impl_->memory_datasrc_ && !memory_datasrc) {
|
|
+ .arg(rrclass);
|
|
- cerr << "[b10-auth] Memory data source is disabled for class "
|
|
|
|
- << rrclass << endl;
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
impl_->memory_datasrc_ = memory_datasrc;
|
|
impl_->memory_datasrc_ = memory_datasrc;
|
|
}
|
|
}
|
|
@@ -392,18 +387,13 @@ AuthSrv::setStatisticsTimerInterval(uint32_t interval) {
|
|
}
|
|
}
|
|
if (interval == 0) {
|
|
if (interval == 0) {
|
|
impl_->statistics_timer_.cancel();
|
|
impl_->statistics_timer_.cancel();
|
|
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_OPS, AUTH_STATS_TIMER_DISABLED);
|
|
} else {
|
|
} else {
|
|
impl_->statistics_timer_.setup(boost::bind(&AuthSrv::submitStatistics,
|
|
impl_->statistics_timer_.setup(boost::bind(&AuthSrv::submitStatistics,
|
|
this),
|
|
this),
|
|
interval * 1000);
|
|
interval * 1000);
|
|
- }
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_OPS, AUTH_STATS_TIMER_SET)
|
|
- if (impl_->verbose_mode_) {
|
|
+ .arg(interval);
|
|
- if (interval == 0) {
|
|
|
|
- cerr << "[b10-auth] Disabled statistics timer" << endl;
|
|
|
|
- } else {
|
|
|
|
- cerr << "[b10-auth] Set statistics timer to " << interval
|
|
|
|
- << " seconds" << endl;
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -420,17 +410,13 @@ AuthSrv::processMessage(const IOMessage& io_message, MessagePtr message,
|
|
|
|
|
|
// Ignore all responses.
|
|
// Ignore all responses.
|
|
if (message->getHeaderFlag(Message::HEADERFLAG_QR)) {
|
|
if (message->getHeaderFlag(Message::HEADERFLAG_QR)) {
|
|
- if (impl_->verbose_mode_) {
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_DETAIL, AUTH_RESPONSE_RECEIVED);
|
|
- cerr << "[b10-auth] received unexpected response, ignoring"
|
|
|
|
- << endl;
|
|
|
|
- }
|
|
|
|
server->resume(false);
|
|
server->resume(false);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
} catch (const Exception& ex) {
|
|
} catch (const Exception& ex) {
|
|
- if (impl_->verbose_mode_) {
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_DETAIL, AUTH_HEADER_PARSE_FAIL)
|
|
- cerr << "[b10-auth] DNS packet exception: " << ex.what() << endl;
|
|
+ .arg(ex.what());
|
|
- }
|
|
|
|
server->resume(false);
|
|
server->resume(false);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
@@ -439,27 +425,23 @@ AuthSrv::processMessage(const IOMessage& io_message, MessagePtr message,
|
|
// Parse the message.
|
|
// Parse the message.
|
|
message->fromWire(request_buffer);
|
|
message->fromWire(request_buffer);
|
|
} catch (const DNSProtocolError& error) {
|
|
} catch (const DNSProtocolError& error) {
|
|
- if (impl_->verbose_mode_) {
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_DETAIL, AUTH_MESSAGE_PROTOCOL_ERROR)
|
|
- cerr << "[b10-auth] returning " << error.getRcode().toText()
|
|
+ .arg(error.getRcode().toText()).arg(error.what());
|
|
- << ": " << error.what() << endl;
|
|
|
|
- }
|
|
|
|
makeErrorMessage(message, buffer, error.getRcode(),
|
|
makeErrorMessage(message, buffer, error.getRcode(),
|
|
impl_->verbose_mode_);
|
|
impl_->verbose_mode_);
|
|
server->resume(true);
|
|
server->resume(true);
|
|
return;
|
|
return;
|
|
} catch (const Exception& ex) {
|
|
} catch (const Exception& ex) {
|
|
- if (impl_->verbose_mode_) {
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_DETAIL, AUTH_MESSAGE_PARSE_ERROR)
|
|
- cerr << "[b10-auth] returning SERVFAIL: " << ex.what() << endl;
|
|
+ .arg(ex.what());
|
|
- }
|
|
|
|
makeErrorMessage(message, buffer, Rcode::SERVFAIL(),
|
|
makeErrorMessage(message, buffer, Rcode::SERVFAIL(),
|
|
impl_->verbose_mode_);
|
|
impl_->verbose_mode_);
|
|
server->resume(true);
|
|
server->resume(true);
|
|
return;
|
|
return;
|
|
} // other exceptions will be handled at a higher layer.
|
|
} // other exceptions will be handled at a higher layer.
|
|
|
|
|
|
- if (impl_->verbose_mode_) {
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_MESSAGES, AUTH_RESPONSE_RECEIVED)
|
|
- cerr << "[b10-auth] received a message:\n" << message->toText() << endl;
|
|
+ .arg(message->toText());
|
|
- }
|
|
|
|
|
|
|
|
// Perform further protocol-level validation.
|
|
// Perform further protocol-level validation.
|
|
// TSIG first
|
|
// TSIG first
|
|
@@ -487,9 +469,8 @@ AuthSrv::processMessage(const IOMessage& io_message, MessagePtr message,
|
|
sendAnswer = impl_->processNotify(io_message, message, buffer,
|
|
sendAnswer = impl_->processNotify(io_message, message, buffer,
|
|
tsig_context);
|
|
tsig_context);
|
|
} else if (message->getOpcode() != Opcode::QUERY()) {
|
|
} else if (message->getOpcode() != Opcode::QUERY()) {
|
|
- if (impl_->verbose_mode_) {
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_DETAIL, AUTH_UNSUPPORTED_OPCODE)
|
|
- cerr << "[b10-auth] unsupported opcode" << endl;
|
|
+ .arg(message->getOpcode().toText());
|
|
- }
|
|
|
|
makeErrorMessage(message, buffer, Rcode::NOTIMP(),
|
|
makeErrorMessage(message, buffer, Rcode::NOTIMP(),
|
|
impl_->verbose_mode_, tsig_context);
|
|
impl_->verbose_mode_, tsig_context);
|
|
} else if (message->getRRCount(Message::SECTION_QUESTION) != 1) {
|
|
} else if (message->getRRCount(Message::SECTION_QUESTION) != 1) {
|
|
@@ -550,10 +531,7 @@ AuthSrvImpl::processNormalQuery(const IOMessage& io_message, MessagePtr message,
|
|
data_sources_.doQuery(query);
|
|
data_sources_.doQuery(query);
|
|
}
|
|
}
|
|
} catch (const Exception& ex) {
|
|
} catch (const Exception& ex) {
|
|
- if (verbose_mode_) {
|
|
+ LOG_ERROR(auth_logger, AUTH_PROCESS_FAIL).arg(ex.what());
|
|
- cerr << "[b10-auth] Internal error, returning SERVFAIL: " <<
|
|
|
|
- ex.what() << endl;
|
|
|
|
- }
|
|
|
|
makeErrorMessage(message, buffer, Rcode::SERVFAIL(), verbose_mode_);
|
|
makeErrorMessage(message, buffer, Rcode::SERVFAIL(), verbose_mode_);
|
|
return (true);
|
|
return (true);
|
|
}
|
|
}
|
|
@@ -567,12 +545,8 @@ AuthSrvImpl::processNormalQuery(const IOMessage& io_message, MessagePtr message,
|
|
} else {
|
|
} else {
|
|
message->toWire(renderer);
|
|
message->toWire(renderer);
|
|
}
|
|
}
|
|
-
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_MESSAGES, AUTH_SEND_NORMAL_RESPONSE)
|
|
- if (verbose_mode_) {
|
|
+ .arg(renderer.getLength()).arg(message->toText());
|
|
- cerr << "[b10-auth] sending a response ("
|
|
|
|
- << renderer.getLength()
|
|
|
|
- << " bytes):\n" << message->toText() << endl;
|
|
|
|
- }
|
|
|
|
|
|
|
|
return (true);
|
|
return (true);
|
|
}
|
|
}
|
|
@@ -586,9 +560,7 @@ AuthSrvImpl::processAxfrQuery(const IOMessage& io_message, MessagePtr message,
|
|
incCounter(io_message.getSocket().getProtocol());
|
|
incCounter(io_message.getSocket().getProtocol());
|
|
|
|
|
|
if (io_message.getSocket().getProtocol() == IPPROTO_UDP) {
|
|
if (io_message.getSocket().getProtocol() == IPPROTO_UDP) {
|
|
- if (verbose_mode_) {
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_DETAIL, AUTH_AXFR_UDP);
|
|
- cerr << "[b10-auth] AXFR query over UDP isn't allowed" << endl;
|
|
|
|
- }
|
|
|
|
makeErrorMessage(message, buffer, Rcode::FORMERR(), verbose_mode_,
|
|
makeErrorMessage(message, buffer, Rcode::FORMERR(), verbose_mode_,
|
|
tsig_context);
|
|
tsig_context);
|
|
return (true);
|
|
return (true);
|
|
@@ -613,10 +585,8 @@ AuthSrvImpl::processAxfrQuery(const IOMessage& io_message, MessagePtr message,
|
|
xfrout_connected_ = false;
|
|
xfrout_connected_ = false;
|
|
}
|
|
}
|
|
|
|
|
|
- if (verbose_mode_) {
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_DETAIL, AUTH_AXFR_ERROR)
|
|
- cerr << "[b10-auth] Error in handling XFR request: " << err.what()
|
|
+ .arg(err.what());
|
|
- << endl;
|
|
|
|
- }
|
|
|
|
makeErrorMessage(message, buffer, Rcode::SERVFAIL(), verbose_mode_,
|
|
makeErrorMessage(message, buffer, Rcode::SERVFAIL(), verbose_mode_,
|
|
tsig_context);
|
|
tsig_context);
|
|
return (true);
|
|
return (true);
|
|
@@ -633,20 +603,16 @@ AuthSrvImpl::processNotify(const IOMessage& io_message, MessagePtr message,
|
|
// The incoming notify must contain exactly one question for SOA of the
|
|
// The incoming notify must contain exactly one question for SOA of the
|
|
// zone name.
|
|
// zone name.
|
|
if (message->getRRCount(Message::SECTION_QUESTION) != 1) {
|
|
if (message->getRRCount(Message::SECTION_QUESTION) != 1) {
|
|
- if (verbose_mode_) {
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_OPS, AUTH_NOTIFY_QUESTIONS)
|
|
- cerr << "[b10-auth] invalid number of questions in notify: "
|
|
+ .arg(message->getRRCount(Message::SECTION_QUESTION));
|
|
- << message->getRRCount(Message::SECTION_QUESTION) << endl;
|
|
|
|
- }
|
|
|
|
makeErrorMessage(message, buffer, Rcode::FORMERR(), verbose_mode_,
|
|
makeErrorMessage(message, buffer, Rcode::FORMERR(), verbose_mode_,
|
|
tsig_context);
|
|
tsig_context);
|
|
return (true);
|
|
return (true);
|
|
}
|
|
}
|
|
ConstQuestionPtr question = *message->beginQuestion();
|
|
ConstQuestionPtr question = *message->beginQuestion();
|
|
if (question->getType() != RRType::SOA()) {
|
|
if (question->getType() != RRType::SOA()) {
|
|
- if (verbose_mode_) {
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_OPS, AUTH_NOTIFY_RRTYPE)
|
|
- cerr << "[b10-auth] invalid question RR type in notify: "
|
|
+ .arg(question->getType().toText());
|
|
- << question->getType() << endl;
|
|
|
|
- }
|
|
|
|
makeErrorMessage(message, buffer, Rcode::FORMERR(), verbose_mode_,
|
|
makeErrorMessage(message, buffer, Rcode::FORMERR(), verbose_mode_,
|
|
tsig_context);
|
|
tsig_context);
|
|
return (true);
|
|
return (true);
|
|
@@ -664,10 +630,7 @@ AuthSrvImpl::processNotify(const IOMessage& io_message, MessagePtr message,
|
|
// silent about such cases, but there doesn't seem to be anything we can
|
|
// silent about such cases, but there doesn't seem to be anything we can
|
|
// improve at the primary server side by sending an error anyway.
|
|
// improve at the primary server side by sending an error anyway.
|
|
if (xfrin_session_ == NULL) {
|
|
if (xfrin_session_ == NULL) {
|
|
- if (verbose_mode_) {
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_OPS, AUTH_NO_XFRIN);
|
|
- cerr << "[b10-auth] "
|
|
|
|
- "session interface for xfrin is not available" << endl;
|
|
|
|
- }
|
|
|
|
return (false);
|
|
return (false);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -693,16 +656,13 @@ AuthSrvImpl::processNotify(const IOMessage& io_message, MessagePtr message,
|
|
int rcode;
|
|
int rcode;
|
|
parsed_answer = parseAnswer(rcode, answer);
|
|
parsed_answer = parseAnswer(rcode, answer);
|
|
if (rcode != 0) {
|
|
if (rcode != 0) {
|
|
- if (verbose_mode_) {
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_OPS, AUTH_ZONEMGR_ERROR)
|
|
- cerr << "[b10-auth] failed to notify Zonemgr: "
|
|
+ .arg(parsed_answer->str());
|
|
- << parsed_answer->str() << endl;
|
|
|
|
- }
|
|
|
|
return (false);
|
|
return (false);
|
|
}
|
|
}
|
|
} catch (const Exception& ex) {
|
|
} catch (const Exception& ex) {
|
|
- if (verbose_mode_) {
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_OPS, AUTH_ZONEMGR_COMMS)
|
|
- cerr << "[b10-auth] failed to notify Zonemgr: " << ex.what() << endl;
|
|
+ .arg(ex.what());
|
|
- }
|
|
|
|
return (false);
|
|
return (false);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -762,10 +722,7 @@ AuthSrvImpl::setDbFile(ConstElementPtr config) {
|
|
} else {
|
|
} else {
|
|
return (answer);
|
|
return (answer);
|
|
}
|
|
}
|
|
-
|
|
+ LOG_DEBUG(auth_logger, DBG_AUTH_OPS, AUTH_DATA_SOURCE).arg(db_file_);
|
|
- if (verbose_mode_) {
|
|
|
|
- cerr << "[b10-auth] Data source database file: " << db_file_ << endl;
|
|
|
|
- }
|
|
|
|
|
|
|
|
// create SQL data source
|
|
// create SQL data source
|
|
// Note: the following step is tricky to be exception-safe and to ensure
|
|
// Note: the following step is tricky to be exception-safe and to ensure
|
|
@@ -795,9 +752,7 @@ AuthSrv::updateConfig(ConstElementPtr new_config) {
|
|
}
|
|
}
|
|
return (impl_->setDbFile(new_config));
|
|
return (impl_->setDbFile(new_config));
|
|
} catch (const isc::Exception& error) {
|
|
} catch (const isc::Exception& error) {
|
|
- if (impl_->verbose_mode_) {
|
|
+ LOG_ERROR(auth_logger, AUTH_CONFIG_UPDATE_FAIL).arg(error.what());
|
|
- cerr << "[b10-auth] error: " << error.what() << endl;
|
|
|
|
- }
|
|
|
|
return (isc::config::createAnswer(1, error.what()));
|
|
return (isc::config::createAnswer(1, error.what()));
|
|
}
|
|
}
|
|
}
|
|
}
|