Commit 8bb79638 authored by Stephen Morris's avatar Stephen Morris
Browse files

[trac738] Added basic message szupport and replaced messages in main()

parent 3665d775
......@@ -16,7 +16,8 @@ endif
pkglibexecdir = $(libexecdir)/@PACKAGE@
CLEANFILES = *.gcno *.gcda auth.spec spec_config.h
CLEANFILES = *.gcno *.gcda auth.spec spec_config.h
CLEANFILES += auth_messages.h auth_messages.cc
man_MANS = b10-auth.8
EXTRA_DIST = $(man_MANS) b10-auth.xml
......@@ -34,16 +35,25 @@ auth.spec: auth.spec.pre
spec_config.h: spec_config.h.pre
$(SED) -e "s|@@LOCALSTATEDIR@@|$(localstatedir)|" spec_config.h.pre >$@
BUILT_SOURCES = spec_config.h
auth_messages.h auth_messages.cc: auth_messages.mes
$(top_builddir)/src/lib/log/compiler/message $(top_srcdir)/src/bin/auth/auth_messages.mes
BUILT_SOURCES = spec_config.h auth_messages.h auth_messages.cc
pkglibexec_PROGRAMS = b10-auth
b10_auth_SOURCES = query.cc query.h
b10_auth_SOURCES += auth_srv.cc auth_srv.h
b10_auth_SOURCES += auth_log.cc auth_log.h
b10_auth_SOURCES += change_user.cc change_user.h
b10_auth_SOURCES += auth_config.cc auth_config.h
b10_auth_SOURCES += command.cc command.h
b10_auth_SOURCES += common.h common.cc
b10_auth_SOURCES += statistics.cc statistics.h
b10_auth_SOURCES += main.cc
nodist_b10_auth_SOURCES = auth_messages.h auth_messages.cc
EXTRA_DIST += auth_messages.mes
b10_auth_LDADD = $(top_builddir)/src/lib/datasrc/libdatasrc.la
b10_auth_LDADD += $(top_builddir)/src/lib/dns/libdns++.la
b10_auth_LDADD += $(top_builddir)/src/lib/config/libcfgclient.la
......
// Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC")
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
/// Defines the logger used by the top-level component of b10-auth.
#include "auth_log.h"
namespace isc {
namespace auth {
isc::log::Logger auth_logger("auth");
} // namespace auth
} // namespace isc
// Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC")
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
#ifndef __AUTH_LOG__H
#define __AUTH_LOG__H
#include <log/macros.h>
#include "auth_messages.h"
namespace isc {
namespace auth {
/// \brief Auth Logging
///
/// Defines the levels used to output debug messages in the "auth" part of
/// the b10-auth program. Higher numbers equate to more verbose (and detailed)
/// output.
// The first level traces normal operations - asking the AUTH for an address,
// and cancelling a lookup. It also records when the AUTH calls back to the
// resolver to resolve something.
const int DBG_AUTH_START = 10;
/// define the logger for the "auth" module part of b10-auth. We could define
/// a logger in each file, but we would want to define a common name to avoid
/// spelling mistakes, so it is just one small step from there to define a
/// module-common logger.
extern isc::log::Logger auth_logger;
} // namespace nsas
} // namespace isc
#endif // __AUTH_LOG__H
# Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
$NAMESPACE isc::auth
% AUTH_CONFIG_CHANNEL_CREATED configuration session channel created
A debug message indicating that authoritative server has created the channel to
the configuration manager.
% AUTH_CONFIG_CHANNEL_ESTABLISHED configuration session channel established
A debug message indicating that authoritative server has established
communication over the previously-created channel to the configuration manager.
% AUTH_CONFIG_CHANNEL_STARTED configuration session channel started
A debug message, issued when the authoritative server has posted a request to
be notified when new configuration information is available.
% AUTH_DNSSERVICES_CREATED DNS services created
A debug message indicating that the component that will handling incoming
queries for the authoritiative server (DNSServices) has been successfully
created.
% AUTH_LOAD_TSIG loading TSIG keys
A debug message indicating that the authoritiative server has successfully
accessed the keyring holding TSIG keys.
% AUTH_SERVER_CONFIG_FAIL load of configuration failed: %1
At attempt to configure the server with information from the configuration
database has failed, the reason being given in the message. The server will
continue its initialization although it may not be configured in the desired
way.
% AUTH_SERVER_CREATED server created
An informational message indicating that the authoritative server process has
been created and is initializing. The AUTH_SERVER_STARTED message will be
output when initialization has successfully completed and the server starts
accepting queries.
% AUTH_SERVER_FAILED server failed: %1
The authoritative server has encountered a fatal error and is terminating. The
reason for the failure is included in the message.
% AUTH_SERVER_STARTED server stated
Initialization of the authoritative server has completed successfully
and it is entering the main loop, waiting for queries to arrive.
% AUTH_STATS_CHANNEL_CREATED STATS session channel created
A debug message indicating that the authoritative server has created a channel
to the statistics process.
% AUTH_STATS_CHANNEL_ESTABLISHED STATS session channel established
A debug message indicating that the authoritative server has established
communication over the previously created statistics channel.
% AUTH_XFRIN_CHANNEL_CREATED XFRIN session channel created
A debug message indicating that the authoritative server has created a channel
to the XFRIN ("Transfer-in") process.
% AUTH_XFRIN_CHANNEL_ESTABLISHED XFRIN session channel established
A debug message indicating that the authoritative server has established
communication over the previously-created channel to the XFRIN ("Transfer-in")
process.
......@@ -44,20 +44,24 @@
#include <auth/command.h>
#include <auth/change_user.h>
#include <auth/auth_srv.h>
#include <auth/auth_log.h>
#include <asiodns/asiodns.h>
#include <asiolink/asiolink.h>
#include <log/dummylog.h>
#include <log/macros.h>
#include <log/logger_support.h>
#include <server_common/keyring.h>
using namespace std;
using namespace isc::data;
using namespace isc::asiodns;
using namespace isc::asiolink;
using namespace isc::auth;
using namespace isc::cc;
using namespace isc::config;
using namespace isc::data;
using namespace isc::dns;
using namespace isc::log;
using namespace isc::util;
using namespace isc::xfr;
using namespace isc::asiolink;
using namespace isc::asiodns;
namespace {
......@@ -88,6 +92,7 @@ usage() {
cerr << "\t-v: verbose output" << endl;
exit(1);
}
} // end of anonymous namespace
int
......@@ -106,7 +111,6 @@ main(int argc, char* argv[]) {
break;
case 'v':
verbose_mode = true;
isc::log::denabled = true;
break;
case '?':
default:
......@@ -118,6 +122,11 @@ main(int argc, char* argv[]) {
usage();
}
// Initialize logging. If verbose, we'll use maximum verbosity.
isc::log::initLogger("b10-auth",
(verbose_mode ? isc::log::DEBUG : isc::log::INFO),
isc::log::MAX_DEBUG_LEVEL, NULL);
int ret = 0;
// XXX: we should eventually pass io_service here.
......@@ -139,7 +148,7 @@ main(int argc, char* argv[]) {
auth_server = new AuthSrv(cache, xfrout_client);
auth_server->setVerbose(verbose_mode);
cout << "[b10-auth] Server created." << endl;
LOG_INFO(auth_logger, AUTH_SERVER_CREATED);
SimpleCallback* checkin = auth_server->getCheckinProvider();
IOService& io_service = auth_server->getIOService();
......@@ -148,10 +157,10 @@ main(int argc, char* argv[]) {
DNSService dns_service(io_service, checkin, lookup, answer);
auth_server->setDNSService(dns_service);
cout << "[b10-auth] DNSServices created." << endl;
LOG_DEBUG(auth_logger, DBG_AUTH_START, AUTH_DNSSERVICES_CREATED);
cc_session = new Session(io_service.get_io_service());
cout << "[b10-auth] Configuration session channel created." << endl;
LOG_DEBUG(auth_logger, DBG_AUTH_START, AUTH_CONFIG_CHANNEL_CREATED);
// We delay starting listening to new commands/config just before we
// go into the main loop to avoid confusion due to mixture of
......@@ -161,19 +170,19 @@ main(int argc, char* argv[]) {
config_session = new ModuleCCSession(specfile, *cc_session,
my_config_handler,
my_command_handler, false);
cout << "[b10-auth] Configuration channel established." << endl;
LOG_DEBUG(auth_logger, DBG_AUTH_START, AUTH_CONFIG_CHANNEL_ESTABLISHED);
xfrin_session = new Session(io_service.get_io_service());
cout << "[b10-auth] Xfrin session channel created." << endl;
LOG_DEBUG(auth_logger, DBG_AUTH_START, AUTH_XFRIN_CHANNEL_CREATED);
xfrin_session->establish(NULL);
xfrin_session_established = true;
cout << "[b10-auth] Xfrin session channel established." << endl;
LOG_DEBUG(auth_logger, DBG_AUTH_START, AUTH_XFRIN_CHANNEL_ESTABLISHED);
statistics_session = new Session(io_service.get_io_service());
cout << "[b10-auth] Statistics session channel created." << endl;
LOG_DEBUG(auth_logger, DBG_AUTH_START, AUTH_STATS_CHANNEL_CREATED);
statistics_session->establish(NULL);
statistics_session_established = true;
cout << "[b10-auth] Statistics session channel established." << endl;
LOG_DEBUG(auth_logger, DBG_AUTH_START, AUTH_STATS_CHANNEL_ESTABLISHED);
auth_server->setXfrinSession(xfrin_session);
auth_server->setStatisticsSession(statistics_session);
......@@ -182,33 +191,34 @@ main(int argc, char* argv[]) {
// all initial configurations, but as a short term workaround we
// handle the traditional "database_file" setup by directly calling
// updateConfig().
// if server load configure failed, we won't exit, give user second chance
// to correct the configure.
// if server load configure failed, we won't exit, give user second
// chance to correct the configure.
auth_server->setConfigSession(config_session);
try {
configureAuthServer(*auth_server, config_session->getFullConfig());
auth_server->updateConfig(ElementPtr());
} catch (const AuthConfigError& ex) {
cout << "[bin10-auth] Server load config failed:" << ex.what() << endl;
LOG_ERROR(auth_logger, AUTH_SERVER_CONFIG_FAIL).arg(ex.what());
}
if (uid != NULL) {
changeUser(uid);
}
cout << "[b10-auth] Loading TSIG keys" << endl;
LOG_DEBUG(auth_logger, DBG_AUTH_START, AUTH_LOAD_TSIG);
isc::server_common::initKeyring(*config_session);
auth_server->setTSIGKeyRing(&isc::server_common::keyring);
// Now start asynchronous read.
config_session->start();
cout << "[b10-auth] Configuration channel started." << endl;
LOG_DEBUG(auth_logger, DBG_AUTH_START, AUTH_CONFIG_CHANNEL_STARTED);
cout << "[b10-auth] Server started." << endl;
// Successfully initialized.
LOG_INFO(auth_logger, AUTH_SERVER_STARTED);
io_service.run();
} catch (const std::exception& ex) {
cerr << "[b10-auth] Server failed: " << ex.what() << endl;
LOG_FATAL(auth_logger, AUTH_SERVER_FAILED).arg(ex.what());
ret = 1;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment