aboutsummaryrefslogtreecommitdiff
path: root/rpki
diff options
context:
space:
mode:
Diffstat (limited to 'rpki')
-rw-r--r--rpki/config.py32
-rwxr-xr-xrpki/rtr/bgpdump.py6
-rw-r--r--rpki/rtr/client.py2
-rw-r--r--rpki/rtr/generator.py4
-rw-r--r--rpki/rtr/main.py49
-rw-r--r--rpki/rtr/server.py4
6 files changed, 34 insertions, 63 deletions
diff --git a/rpki/config.py b/rpki/config.py
index f1c43938..2f507f90 100644
--- a/rpki/config.py
+++ b/rpki/config.py
@@ -221,11 +221,11 @@ class parser(object):
if self.has_option(option = name, section = section):
default = self.get(option = name, section = section, default = default)
- if "type" in kwargs:
- default = kwargs["type"](default)
+ if "type" in kwargs:
+ default = kwargs["type"](default)
- if "choices" in kwargs and default not in kwargs["choices"]:
- raise ValueError
+ if "choices" in kwargs and default not in kwargs["choices"]:
+ raise ValueError
kwargs["default"] = default
@@ -310,7 +310,12 @@ class parser(object):
the format that the logging setup code expects to see.
"""
- self.logging_defaults = argparse.Namespace()
+ self.logging_defaults = argparse.Namespace(
+ default_log_destination = None)
+
+ if self.argparser is not None:
+ self.argparser.set_defaults(
+ default_log_destination = None)
class non_negative_integer(int):
def __init__(self, value):
@@ -335,7 +340,6 @@ class parser(object):
self._add_logging_argument(
"--log-destination",
- default = "stderr",
choices = ("syslog", "stdout", "stderr", "file"),
help = "logging mechanism to use")
@@ -386,32 +390,34 @@ class parser(object):
log_level = getattr(logging, args.log_level.upper())
- if args.log_destination == "stderr":
+ log_destination = args.log_destination or args.default_log_destination or "stderr"
+
+ if log_destination == "stderr":
log_handler = logging.StreamHandler(
stream = sys.stderr)
- elif args.log_destination == "stdout":
+ elif log_destination == "stdout":
log_handler = logging.StreamHandler(
stream = sys.stdout)
- elif args.log_destination == "syslog":
+ elif log_destination == "syslog":
log_handler = logging.handlers.SysLogHandler(
address = ("/dev/log" if os.path.exists("/dev/log")
else ("localhost", logging.handlers.SYSLOG_UDP_PORT)),
facility = logging.handlers.SysLogHandler.facility_names[args.log_facility])
- elif args.log_destination == "file" and (args.log_size_limit == 0 and
- args.log_time_limit == 0):
+ elif log_destination == "file" and (args.log_size_limit == 0 and
+ args.log_time_limit == 0):
log_handler = logging.handlers.WatchedFileHandler(
filename = args.log_filename)
- elif args.log_destination == "file" and args.log_time_limit == 0:
+ elif log_destination == "file" and args.log_time_limit == 0:
log_handler = logging.handlers.RotatingFileHandler(
filename = args.log_filename,
maxBytes = args.log_size_limit * 1024,
backupCount = args.log_count)
- elif args.log_destination == "file" and args.log_size_limit == 0:
+ elif log_destination == "file" and args.log_size_limit == 0:
log_handler = logging.handlers.TimedRotatingFileHandler(
filename = args.log_filename,
interval = args.log_time_limit,
diff --git a/rpki/rtr/bgpdump.py b/rpki/rtr/bgpdump.py
index 3ed2376a..22ac0d83 100755
--- a/rpki/rtr/bgpdump.py
+++ b/rpki/rtr/bgpdump.py
@@ -319,15 +319,15 @@ def argparse_setup(subparsers):
subparser = subparsers.add_parser("bgpdump-convert", description = bgpdump_convert_main.__doc__,
help = "Convert bgpdump to fake ROAs")
- subparser.set_defaults(func = bgpdump_convert_main, default_log_to = "syslog")
+ subparser.set_defaults(func = bgpdump_convert_main, default_log_destination = "syslog")
subparser.add_argument("files", nargs = "+", help = "input files")
subparser = subparsers.add_parser("bgpdump-select", description = bgpdump_select_main.__doc__,
help = "Set current serial number for fake ROA data")
- subparser.set_defaults(func = bgpdump_select_main, default_log_to = "syslog")
+ subparser.set_defaults(func = bgpdump_select_main, default_log_destination = "syslog")
subparser.add_argument("ax_file", help = "name of the .ax to select")
subparser = subparsers.add_parser("bgpdump-server", description = bgpdump_server_main.__doc__,
help = "Replay fake ROAs generated from historical data")
- subparser.set_defaults(func = bgpdump_server_main, default_log_to = "syslog")
+ subparser.set_defaults(func = bgpdump_server_main, default_log_destination = "syslog")
subparser.add_argument("rpki_rtr_dir", nargs = "?", help = "directory containing RPKI-RTR database")
diff --git a/rpki/rtr/client.py b/rpki/rtr/client.py
index 9c7a00d6..a8348087 100644
--- a/rpki/rtr/client.py
+++ b/rpki/rtr/client.py
@@ -522,7 +522,7 @@ def argparse_setup(subparsers):
subparser = subparsers.add_parser("client", description = client_main.__doc__,
help = "Test client for RPKI-RTR protocol")
- subparser.set_defaults(func = client_main, default_log_to = "stderr")
+ subparser.set_defaults(func = client_main, default_log_destination = "stderr")
subparser.add_argument("--sql-database", help = "filename for sqlite3 database of client state")
subparser.add_argument("--force-version", type = int, choices = PDU.version_map, help = "force specific protocol version")
subparser.add_argument("--reset-session", action = "store_true", help = "reset any existing session found in sqlite3 database")
diff --git a/rpki/rtr/generator.py b/rpki/rtr/generator.py
index a52b5de4..4536de30 100644
--- a/rpki/rtr/generator.py
+++ b/rpki/rtr/generator.py
@@ -575,7 +575,7 @@ def argparse_setup(subparsers):
subparser = subparsers.add_parser("cronjob", description = cronjob_main.__doc__,
help = "Generate RPKI-RTR database from rcynic output")
- subparser.set_defaults(func = cronjob_main, default_log_to = "syslog")
+ subparser.set_defaults(func = cronjob_main, default_log_destination = "syslog")
subparser.add_argument("--scan-roas", help = "specify an external scan_roas program")
subparser.add_argument("--scan-routercerts", help = "specify an external scan_routercerts program")
subparser.add_argument("--force_zero_nonce", action = "store_true", help = "force nonce value of zero")
@@ -584,5 +584,5 @@ def argparse_setup(subparsers):
subparser = subparsers.add_parser("show", description = show_main.__doc__,
help = "Display content of RPKI-RTR database")
- subparser.set_defaults(func = show_main, default_log_to = "stderr")
+ subparser.set_defaults(func = show_main, default_log_destination = "stderr")
subparser.add_argument("rpki_rtr_dir", nargs = "?", help = "directory containing RPKI-RTR database")
diff --git a/rpki/rtr/main.py b/rpki/rtr/main.py
index 34f5598d..b915f809 100644
--- a/rpki/rtr/main.py
+++ b/rpki/rtr/main.py
@@ -25,28 +25,9 @@ import os
import sys
import time
import logging
-import logging.handlers
-import argparse
+import rpki.config
-class Formatter(logging.Formatter):
-
- converter = time.gmtime
-
- def __init__(self, debug, fmt, datefmt):
- self.debug = debug
- super(Formatter, self).__init__(fmt, datefmt)
-
- def format(self, record):
- if getattr(record, "connection", None) is None:
- record.connection = ""
- return super(Formatter, self).format(record)
-
- def formatException(self, ei):
- if self.debug:
- return super(Formatter, self).formatException(ei)
- else:
- return str(ei[1])
def main():
@@ -63,32 +44,16 @@ def main():
def argparse_setup_bgpdump(ignored):
pass
- argparser = argparse.ArgumentParser(description = __doc__)
- argparser.add_argument("--debug", action = "store_true", help = "debugging mode")
- argparser.add_argument("--log-level", default = "debug",
- choices = ("debug", "info", "warning", "error", "critical"),
- type = lambda s: s.lower())
- argparser.add_argument("--log-to",
- choices = ("syslog", "stderr"))
- subparsers = argparser.add_subparsers(title = "Commands", metavar = "", dest = "mode")
+ cfg = rpki.config.argparser(section = "rpki-rtr", doc = __doc__)
+ cfg.argparser.add_argument("--debug", action = "store_true", help = "debugging mode")
+ cfg.add_logging_arguments()
+ subparsers = cfg.argparser.add_subparsers(title = "Commands", metavar = "", dest = "mode")
argparse_setup_server(subparsers)
argparse_setup_client(subparsers)
argparse_setup_generator(subparsers)
argparse_setup_bgpdump(subparsers)
- args = argparser.parse_args()
-
- fmt = "rpki-rtr/" + args.mode + "%(connection)s[%(process)d] %(message)s"
-
- if (args.log_to or args.default_log_to) == "stderr":
- handler = logging.StreamHandler()
- fmt = "%(asctime)s " + fmt
- elif os.path.exists("/dev/log"):
- handler = logging.handlers.SysLogHandler("/dev/log")
- else:
- handler = logging.handlers.SysLogHandler()
+ args = cfg.argparser.parse_args()
- handler.setFormatter(Formatter(args.debug, fmt, "%Y-%m-%dT%H:%M:%SZ"))
- logging.root.addHandler(handler)
- logging.root.setLevel(int(getattr(logging, args.log_level.upper())))
+ cfg.configure_logging(args = args, ident = "rpki-rtr/" + args.mode)
return args.func(args)
diff --git a/rpki/rtr/server.py b/rpki/rtr/server.py
index afaf0e9c..c08320fc 100644
--- a/rpki/rtr/server.py
+++ b/rpki/rtr/server.py
@@ -578,7 +578,7 @@ def argparse_setup(subparsers):
subparser = subparsers.add_parser("server", description = server_main.__doc__,
help = "RPKI-RTR protocol server")
- subparser.set_defaults(func = server_main, default_log_to = "syslog")
+ subparser.set_defaults(func = server_main, default_log_destination = "syslog")
subparser.add_argument("--refresh", type = refresh, help = "override default refresh timer")
subparser.add_argument("--retry", type = retry, help = "override default retry timer")
subparser.add_argument("--expire", type = expire, help = "override default expire timer")
@@ -586,7 +586,7 @@ def argparse_setup(subparsers):
subparser = subparsers.add_parser("listener", description = listener_main.__doc__,
help = "TCP listener for RPKI-RTR protocol server")
- subparser.set_defaults(func = listener_main, default_log_to = "syslog")
+ subparser.set_defaults(func = listener_main, default_log_destination = "syslog")
subparser.add_argument("--refresh", type = refresh, help = "override default refresh timer")
subparser.add_argument("--retry", type = retry, help = "override default retry timer")
subparser.add_argument("--expire", type = expire, help = "override default expire timer")