From: Frank Brehm Date: Thu, 31 Mar 2022 16:13:34 +0000 (+0200) Subject: Removing lib/pp_admintools/cfg_app.py X-Git-Tag: 0.4.1^2~11 X-Git-Url: https://git.uhu-banane.de/?a=commitdiff_plain;h=4178f6c0e3df8bdf252d56bacc276a60c7a2d4ad;p=pixelpark%2Fpp-admin-tools.git Removing lib/pp_admintools/cfg_app.py --- diff --git a/lib/pp_admintools/cfg_app.py b/lib/pp_admintools/cfg_app.py deleted file mode 100644 index 0e22d73..0000000 --- a/lib/pp_admintools/cfg_app.py +++ /dev/null @@ -1,945 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -""" -@author: Frank Brehm -@contact: frank.brehm@pixelpark.com -@copyright: © 2021 by Frank Brehm, Berlin -@summary: The module for the application object with support - for configuration files. -""" -from __future__ import absolute_import - -# Standard modules -import os -import logging -import logging.config -import re -import copy -import json -import socket -import pwd -import pipes -import codecs -import ipaddress - -from subprocess import Popen, PIPE - -from email.mime.text import MIMEText -from email import charset - -import smtplib - -# Third party modules -import six - -from six import StringIO -from six.moves import configparser - -from configparser import Error as ConfigParseError - -# Own modules -from fb_tools.app import BaseApplication -from fb_tools.common import pp, to_bool, RE_DOT_AT_END - -from .global_version import __version__ as __global_version__ - -from .errors import PpAppError - -from .merge import merge_structure - -from .mailaddress import MailAddress - -from .xlate import XLATOR - -__version__ = '0.9.1' -LOG = logging.getLogger(__name__) - -VALID_MAIL_METHODS = ('smtp', 'sendmail') - -_ = XLATOR.gettext - - -# ============================================================================= -class PpCfgAppError(PpAppError): - """Base error class for all exceptions happened during - execution this configured application""" - - pass - - -# ============================================================================= -class PpConfigApplication(BaseApplication): - """ - Class for configured application objects. - """ - - default_mail_recipients = [ - 'frank.brehm@pixelpark.com' - ] - default_mail_cc = [ - 'thomas.dalichow@pixelpark.com', - ] - - default_reply_to = 'solution@pixelpark.com' - - default_mail_server = 'mx.pixelpark.com' - - current_user_name = pwd.getpwuid(os.getuid()).pw_name - current_user_gecos = pwd.getpwuid(os.getuid()).pw_gecos - default_mail_from = MailAddress(current_user_name, socket.getfqdn()) - - whitespace_re = re.compile(r'(?:[,;]+|\s*[,;]*\s+)+') - - charset.add_charset('utf-8', charset.SHORTEST, charset.QP) - - # ------------------------------------------------------------------------- - def __init__( - self, appname=None, verbose=0, version=__version__, base_dir=None, - initialized=None, usage=None, description=None, - argparse_epilog=None, argparse_prefix_chars='-', env_prefix=None, - cfg_dir=None, cfg_stems=None, cfg_encoding='utf-8', need_config_file=False): - - self.cfg_encoding = cfg_encoding - self._need_config_file = bool(need_config_file) - - self.cfg = {} - - self._cfg_dir = None - self.cfg_stems = [] - self.cfg_files = [] - self.log_cfg_files = [] - - self.mail_recipients = copy.copy(self.default_mail_recipients) - self.mail_from = '{n} <{m}>'.format( - n=self.current_user_gecos, m=self.default_mail_from) - self.mail_cc = copy.copy(self.default_mail_cc) - self.reply_to = self.default_reply_to - self.mail_method = 'smtp' - self.mail_server = self.default_mail_server - self.smtp_port = 25 - self._config_has_errors = None - - super(PpConfigApplication, self).__init__( - appname=appname, verbose=verbose, version=version, base_dir=base_dir, - initialized=False, usage=usage, description=description, - argparse_epilog=argparse_epilog, argparse_prefix_chars=argparse_prefix_chars, - env_prefix=env_prefix, - ) - - if cfg_dir is None: - self._cfg_dir = 'pixelpark' - else: - d = str(cfg_dir).strip() - if d == '': - self._cfg_dir = None - else: - self._cfg_dir = d - - if cfg_stems: - if isinstance(cfg_stems, list): - for stem in cfg_stems: - s = str(stem).strip() - if not s: - msg = _("Invalid configuration stem {!r} given.").format(stem) - raise PpCfgAppError(msg) - self.cfg_stems.append(s) - else: - s = str(cfg_stems).strip() - if not s: - msg = _("Invalid configuration stem {!r} given.").format(cfg_stems) - raise PpCfgAppError(msg) - self.cfg_stems.append(s) - else: - self.cfg_stems = self.appname - - self._init_cfgfiles() - - enc = getattr(self.args, 'cfg_encoding', None) - if enc: - self.cfg_encoding = enc - - self.perform_arg_parser() - self.init_logging() - - self._read_config() - self._perform_config() - - self._init_log_cfgfiles() - self.reinit_logging() - - # ----------------------------------------------------------- - @property - def need_config_file(self): - """ - hide command line parameter --default-config and - don't execute generation of default config - """ - return getattr(self, '_need_config_file', False) - - # ----------------------------------------------------------- - @property - def cfg_encoding(self): - """The encoding character set of the configuration files.""" - return self._cfg_encoding - - @cfg_encoding.setter - def cfg_encoding(self, value): - try: - codec = codecs.lookup(value) - except Exception as e: - msg = _("{c} on setting encoding {v!r}: {e}").format( - c=e.__class__.__name__, v=value, e=e) - LOG.error(msg) - else: - self._cfg_encoding = codec.name - - # ----------------------------------------------------------- - @property - def config_has_errors(self): - """A flag, showing, that there are errors in configuration.""" - return self._config_has_errors - - @config_has_errors.setter - def config_has_errors(self, value): - if value is None: - self._config_has_errors = None - else: - self._config_has_errors = to_bool(value) - - # ----------------------------------------------------------- - @property - def cfg_dir(self): - """The directory containing the configuration files.""" - return self._cfg_dir - - # ------------------------------------------------------------------------- - def as_dict(self, short=True): - """ - Transforms the elements of the object into a dict - - @param short: don't include local properties in resulting dict. - @type short: bool - - @return: structure as dict - @rtype: dict - """ - - res = super(PpConfigApplication, self).as_dict(short=short) - res['need_config_file'] = self.need_config_file - res['cfg_encoding'] = self.cfg_encoding - res['cfg_dir'] = self.cfg_dir - res['config_has_errors'] = self.config_has_errors - - return res - - # ------------------------------------------------------------------------- - def init_arg_parser(self): - """ - Method to initiate the argument parser. - - This method should be explicitely called by all init_arg_parser() - methods in descendant classes. - """ - - mail_group = self.arg_parser.add_argument_group(_('Mailing options')) - - mail_group.add_argument( - '--recipients', '--mail-recipients', - metavar=_("ADDRESS"), nargs='+', dest="mail_recipients", - help=_("Mail addresses of all recipients for mails generated by this script.") - ) - - mail_group.add_argument( - '--cc', '--mail-cc', - metavar=_("ADDRESS"), nargs='*', dest="mail_cc", - help=_("Mail addresses of all CC recipients for mails generated by this script.") - ) - - mail_group.add_argument( - '--reply-to', '--mail-reply-to', - metavar=_("ADDRESS"), dest="mail_reply_to", - help=_("Reply mail address for mails generated by this script.") - ) - - mail_group.add_argument( - '--mail-method', - metavar=_("METHOD"), choices=VALID_MAIL_METHODS, dest="mail_method", - help=_( - "Method for sending the mails generated by this script. " - "Valid values: {v}, default: {d!r}.").format( - v=', '.join(map(lambda x: repr(x), VALID_MAIL_METHODS)), - d=self.mail_method) - ) - - mail_group.add_argument( - '--mail-server', - metavar=_("SERVER"), dest="mail_server", - help=_( - "Mail server for submitting generated by this script if " - "the mail method of this script is 'smtp'. Default: {!r}.").format( - self.mail_server) - ) - - mail_group.add_argument( - '--smtp-port', - metavar=_("PORT"), type=int, dest='smtp_port', - help=_( - "The port to use for submitting generated by this script if " - "the mail method of this script is 'smtp'. Default: {}.").format(self.smtp_port) - ) - - cfgfile_group = self.arg_parser.add_argument_group(_('Config file options')) - - cfgfile_group.add_argument( - "-C", "--cfgfile", "--cfg-file", "--config", - metavar=_("FILE"), nargs='+', dest="cfg_file", - help=_("Configuration files to use additional to the standard configuration files."), - ) - - reference = ( - 'https://docs.python.org/3/library/logging.config.html#logging-config-dictschema') - cfgfile_group.add_argument( - "--log-cfgfile", - metavar=_("FILE"), dest="log_cfgfile", - help=_( - "Configuration file for logging in JSON format. " - "See {!r} how the structures has to be defined.").format(reference), - ) - - cfgfile_group.add_argument( - "--cfg-encoding", - metavar=_("ENCODING"), dest="cfg_encoding", default=self.cfg_encoding, - help=_( - "The encoding character set of the configuration files " - "(default: %(default)r)."), - ) - - # ------------------------------------------------------------------------- - def _init_cfgfiles(self): - """Method to generate the self.cfg_files list.""" - - self.cfg_files = [] - - cfg_basenames = [] - for stem in self.cfg_stems: - cfg_basename = '{}.ini'.format(stem) - cfg_basenames.append(cfg_basename) - - # add /etc/app/app.ini or $VIRTUAL_ENV/etc/app/app.ini - etc_dir = os.sep + 'etc' - if 'VIRTUAL_ENV' in os.environ: - etc_dir = os.path.join(os.environ['VIRTUAL_ENV'], 'etc') - for cfg_basename in cfg_basenames: - syscfg_fn = None - if self.cfg_dir: - syscfg_fn = os.path.join(etc_dir, self.cfg_dir, cfg_basename) - else: - syscfg_fn = os.path.join(etc_dir, cfg_basename) - self.cfg_files.append(syscfg_fn) - - # add /etc/app.ini - mod_dir = os.path.dirname(__file__) - work_dir = os.path.abspath(os.path.join(mod_dir, '..')) - work_etc_dir = os.path.join(work_dir, 'etc') - if self.verbose > 1: - LOG.debug(_("Searching for {!r} ...").format(work_etc_dir)) - for cfg_basename in cfg_basenames: - self.cfg_files.append(os.path.join(work_etc_dir, cfg_basename)) - - # add $HOME/.config/app.ini - usercfg_fn = None - user_cfg_dir = os.path.expanduser('~/.config') - if user_cfg_dir: - if self.cfg_dir: - user_cfg_dir = os.path.join(user_cfg_dir, self.cfg_dir) - if self.verbose > 1: - LOG.debug("user_cfg_dir: {!r}".format(user_cfg_dir)) - for cfg_basename in cfg_basenames: - usercfg_fn = os.path.join(user_cfg_dir, cfg_basename) - self.cfg_files.append(usercfg_fn) - - # add a configfile given on command line with --cfg-file - cmdline_cfg = getattr(self.args, 'cfg_file', None) - if cmdline_cfg: - for usercfg_fn in cmdline_cfg: - self.cfg_files.append(usercfg_fn) - - # ------------------------------------------------------------------------- - def _init_log_cfgfiles(self): - """Method to generate the self.log_cfg_files list.""" - - self.log_cfg_files = [] - - cfg_basename = 'logging.json' - - # add /etc/app/logging.json or $VIRTUAL_ENV/etc/app/logging.json - etc_dir = os.sep + 'etc' - if 'VIRTUAL_ENV' in os.environ: - etc_dir = os.path.join(os.environ['VIRTUAL_ENV'], 'etc') - syscfg_fn = None - if self.cfg_dir: - syscfg_fn = os.path.join(etc_dir, self.cfg_dir, cfg_basename) - else: - syscfg_fn = os.path.join(etc_dir, cfg_basename) - self.log_cfg_files.append(syscfg_fn) - - # add /etc/app.ini - mod_dir = os.path.dirname(__file__) - work_dir = os.path.abspath(os.path.join(mod_dir, '..')) - work_etc_dir = os.path.join(work_dir, 'etc') - if self.verbose > 1: - LOG.debug(_("Searching for {!r} ...").format(work_etc_dir)) - self.log_cfg_files.append(os.path.join(work_etc_dir, cfg_basename)) - - # add $HOME/.config/app.ini - usercfg_fn = None - user_cfg_dir = os.path.expanduser('~/.config') - if user_cfg_dir: - if self.cfg_dir: - user_cfg_dir = os.path.join(user_cfg_dir, self.cfg_dir) - if self.verbose > 1: - LOG.debug("user_cfg_dir: {!r}".format(user_cfg_dir)) - usercfg_fn = os.path.join(user_cfg_dir, cfg_basename) - self.log_cfg_files.append(usercfg_fn) - - # add a configfile given on command line with --log-cfgfile - cmdline_cfg = getattr(self.args, 'log_cfgfile', None) - if cmdline_cfg: - self.log_cfg_files.append(cmdline_cfg) - - if self.verbose > 1: - LOG.debug(_("Log config files:") + '\n' + pp(self.log_cfg_files)) - - # ------------------------------------------------------------------------- - def _init_logging_from_jsonfile(self): - - open_opts = {} - if six.PY3: - open_opts['encoding'] = 'utf-8' - open_opts['errors'] = 'surrogateescape' - - found = False - for cfg_file in reversed(self.log_cfg_files): - - if self.verbose > 1: - LOG.debug(_("Searching for {!r} ...").format(cfg_file)) - - if not os.path.exists(cfg_file): - continue - if not os.path.isfile(cfg_file): - continue - if not os.access(cfg_file, os.R_OK): - msg = _("No read access to {!r}.").format(cfg_file) - self.handle_error(msg, "File error") - continue - - log_cfg = None - if self.verbose > 1: - LOG.debug(_("Reading and evaluating {!r} ...").format(cfg_file)) - with open(cfg_file, 'r', **open_opts) as fh: - try: - log_cfg = json.load(fh) - except (ValueError, TypeError) as e: - msg = "Wrong file {!r} - ".format(cfg_file) + str(e) - self.handle_error(msg, e.__class__.__name__) - continue - if self.verbose: - if 'root' in log_cfg: - log_cfg['root']['level'] = 'DEBUG' - if 'handlers' in log_cfg: - for handler_name in log_cfg['handlers'].keys(): - handler = log_cfg['handlers'][handler_name] - handler['level'] = 'DEBUG' - if self.verbose > 1: - LOG.debug(_("Evaluated configuration from JSON:") + '\n' + pp(log_cfg)) - try: - logging.config.dictConfig(log_cfg) - except Exception as e: - msg = _("Wrong file {!r} - ").format(cfg_file) + str(e) - self.handle_error(msg, e.__class__.__name__) - continue - found = True - break - - return found - - # ------------------------------------------------------------------------- - def reinit_logging(self): - """ - Re-Initialize the logger object. - It creates a colored loghandler with all output to STDERR. - Maybe overridden in descendant classes. - - @return: None - """ - - root_logger = logging.getLogger() - - if self._init_logging_from_jsonfile(): - if self.verbose: - root_logger.setLevel(logging.DEBUG) - return - - return - - # ------------------------------------------------------------------------- - def _read_config(self): - - if self.verbose > 2: - LOG.debug("Reading config files with character set {!r} ...".format( - self.cfg_encoding)) - self._config_has_errors = None - - open_opts = {} - if six.PY3 and self.cfg_encoding: - open_opts['encoding'] = self.cfg_encoding - open_opts['errors'] = 'surrogateescape' - - for cfg_file in self.cfg_files: - if self.verbose > 2: - LOG.debug(_("Searching for {!r} ...").format(cfg_file)) - if not os.path.isfile(cfg_file): - if self.verbose > 3: - LOG.debug(_("Config file {!r} not found.").format(cfg_file)) - continue - if self.verbose > 1: - LOG.debug(_("Reading {!r} ...").format(cfg_file)) - - config = configparser.ConfigParser() - try: - with open(cfg_file, 'r', **open_opts) as fh: - stream = StringIO("[default]\n" + fh.read()) - if six.PY2: - config.readfp(stream) - else: - config.read_file(stream) - except ConfigParseError as e: - msg = _("Wrong configuration in {!r} found: ").format(cfg_file) - msg += str(e) - self.handle_error(msg, _("Configuration error")) - continue - - cfg = {} - for section in config.sections(): - if section not in cfg: - cfg[section] = {} - for (key, value) in config.items(section): - k = key.lower() - cfg[section][k] = value - if self.verbose > 2: - LOG.debug(_("Evaluated config from {!r}:").format(cfg_file) + '\n' + pp(cfg)) - self.cfg = merge_structure(self.cfg, cfg) - - if self.verbose > 1: - LOG.debug(_("Evaluated config total:") + '\n' + pp(self.cfg)) - - # ------------------------------------------------------------------------- - def _perform_config(self): - """Execute some actions after reading the configuration.""" - - for section_name in self.cfg.keys(): - - section = self.cfg[section_name] - - if section_name.lower() == 'general': - self._perform_config_general(section, section_name) - continue - - if section_name.lower() == 'mail': - self._perform_config_mail(section, section_name) - continue - - self.perform_config() - - self._perform_mail_cmdline_options() - - if self.config_has_errors: - LOG.error(_("There are errors in configuration.")) - self.exit(1) - else: - LOG.debug(_("There are no errors in configuration.")) - self.config_has_errors = False - - # ------------------------------------------------------------------------- - def _perform_config_general(self, section, section_name): - - if self.verbose > 2: - LOG.debug( - _("Evaluating config section {!r}:").format(section_name) + '\n' + pp(section)) - - if 'verbose' in section: - v = section['verbose'] - if to_bool(v): - try: - v = int(v) - except ValueError: - v = 1 - pass - except TypeError: - v = 1 - pass - if v > self.verbose: - self.verbose = v - root_logger = logging.getLogger() - root_logger.setLevel(logging.DEBUG) - - # ------------------------------------------------------------------------- - def _perform_config_mail(self, section, section_name): - - if self.verbose > 2: - LOG.debug( - _("Evaluating config section {!r}:").format(section_name) + '\n' + pp(section)) - - self._perform_config_mail_rcpt(section, section_name) - self._perform_config_mail_cc(section, section_name) - self._perform_config_mail_reply_to(section, section_name) - self._perform_config_mail_method(section, section_name) - self._perform_config_mail_server(section, section_name) - self._perform_config_smtp_port(section, section_name) - - # ------------------------------------------------------------------------- - def _perform_config_mail_rcpt(self, section, section_name): - - if 'mail_recipients' not in section: - return - - v = section['mail_recipients'].strip() - self.mail_recipients = [] - if v: - tokens = self.whitespace_re.split(v) - for token in tokens: - if MailAddress.valid_address(token): - if token not in self.mail_recipients: - self.mail_recipients.append(token) - else: - msg = _( - "Found invalid recipient mail address {!r} " - "in configuration.").format(token) - LOG.error(msg) - - # ------------------------------------------------------------------------- - def _perform_config_mail_cc(self, section, section_name): - - if 'mail_cc' not in section: - return - - v = section['mail_cc'].strip() - self.mail_cc = [] - if v: - tokens = self.whitespace_re.split(v) - if self.verbose > 1: - LOG.debug(_("CC addresses:") + '\n' + pp(tokens)) - for token in tokens: - if MailAddress.valid_address(token): - if token not in self.mail_cc: - self.mail_cc.append(token) - else: - msg = _("Found invalid cc mail address {!r} in configuration.").format( - token) - LOG.error(msg) - - # ------------------------------------------------------------------------- - def _perform_config_mail_reply_to(self, section, section_name): - - if 'reply_to' not in section: - return - - v = section['reply_to'].strip() - self.reply_to = None - if v: - tokens = self.whitespace_re.split(v) - if len(tokens): - if MailAddress.valid_address(tokens[0]): - self.reply_to = tokens[0] - else: - msg = _("Found invalid reply mail address {!r} in configuration.").format( - tokens[0]) - LOG.error(msg) - - # ------------------------------------------------------------------------- - def _perform_config_mail_method(self, section, section_name): - - if 'mail_method' not in section: - return - - v = section['mail_method'].strip().lower() - if v: - if v in VALID_MAIL_METHODS: - self.mail_method = v - else: - msg = _("Found invalid mail method {!r} in configuration.").format( - section['mail_method']) - LOG.error(msg) - - # ------------------------------------------------------------------------- - def _perform_config_mail_server(self, section, section_name): - - if 'mail_server' not in section: - return - - v = section['reply_to'].strip() - if v: - self.mail_server = v - - # ------------------------------------------------------------------------- - def _perform_config_smtp_port(self, section, section_name): - - if 'smtp_port' not in section: - return - - v = section['smtp_port'] - port = self.smtp_port - try: - port = int(v) - except (ValueError, TypeError): - msg = _("Found invalid SMTP port number {!r} in configuration.").format(v) - LOG.error(msg) - else: - if port <= 0: - msg = _("Found invalid SMTP port number {!r} in configuration.").format(port) - LOG.error(msg) - else: - self.smtp_port = port - - # ------------------------------------------------------------------------- - def _perform_mail_cmdline_options(self): - - self._perform_cmdline_mail_rcpt() - self._perform_cmdline_mail_cc() - self._perform_cmdline_reply_to() - - v = getattr(self.args, 'mail_method', None) - if v: - self.mail_method = v - - v = getattr(self.args, 'mail_server', None) - if v: - self.mail_server = v - - v = getattr(self.args, 'smtp_port', None) - if v is not None: - if v <= 0: - msg = _("Got invalid SMTP port number {!r}.").format(v) - LOG.error(msg) - else: - self.smtp_port = v - - # ------------------------------------------------------------------------- - def _perform_cmdline_mail_rcpt(self): - - v = getattr(self.args, 'mail_recipients', None) - if v is not None: - self.mail_recipients = [] - for addr in v: - tokens = self.whitespace_re.split(addr) - for token in tokens: - if MailAddress.valid_address(token): - if token not in self.mail_recipients: - self.mail_recipients.append(token) - else: - msg = _("Got invalid recipient mail address {!r}.").format(token) - LOG.error(msg) - if not self.mail_recipients: - msg = ("Did not found any valid recipient mail addresses.") - LOG.error(msg) - - # ------------------------------------------------------------------------- - def _perform_cmdline_mail_cc(self): - - v = getattr(self.args, 'mail_cc', None) - if v is None: - return - - self.mail_cc = [] - for addr in v: - tokens = self.whitespace_re.split(addr) - for token in tokens: - if MailAddress.valid_address(token): - if token not in self.mail_cc: - self.mail_cc.append(token) - else: - msg = _("Got invalid CC mail address {!r}.").format(token) - LOG.error(msg) - - # ------------------------------------------------------------------------- - def _perform_cmdline_reply_to(self): - - v = getattr(self.args, 'mail_reply_to', None) - if not v: - return - - tokens = self.whitespace_re.split(v) - if len(tokens): - if MailAddress.valid_address(tokens[0]): - self.reply_to = tokens[0] - else: - msg = _("Got invalid reply mail address {!r}.").format( - tokens[0]) - LOG.error(msg) - - # ------------------------------------------------------------------------- - def perform_config(self): - """ - Execute some actions after reading the configuration. - - This method should be explicitely called by all perform_config() - methods in descendant classes. - """ - - pass - - # ------------------------------------------------------------------------- - def send_mail(self, subject, body): - - xmailer = "{a} (Admin Tools version {v})".format( - a=self.appname, v=__global_version__) - - mail = MIMEText(body, 'plain', 'utf-8') - mail['Subject'] = subject - mail['From'] = self.mail_from - mail['To'] = ', '.join(self.mail_recipients) - mail['Reply-To'] = self.reply_to - mail['X-Mailer'] = xmailer - if self.mail_cc: - mail['Cc'] = ', '.join(self.mail_cc) - - if self.verbose > 1: - LOG.debug(_("Mail to send:") + '\n' + mail.as_string(unixfrom=True)) - - if self.mail_method == 'smtp': - self._send_mail_smtp(mail) - else: - self._send_mail_sendmail(mail) - - # ------------------------------------------------------------------------- - def _send_mail_smtp(self, mail): - - with smtplib.SMTP(self.mail_server, self.smtp_port) as smtp: - if self.verbose > 2: - smtp.set_debuglevel(2) - elif self.verbose > 1: - smtp.set_debuglevel(1) - - smtp.send_message(mail) - - # ------------------------------------------------------------------------- - def _send_mail_sendmail(self, mail): - - # Searching for the location of sendmail ... - paths = ( - '/usr/sbin/sendmail', - '/usr/lib/sendmail', - ) - sendmail = None - for path in paths: - if os.path.isfile(path) and os.access(path, os.X_OK): - sendmail = path - break - - if not sendmail: - msg = _("Did not found sendmail executable.") - LOG.error(msg) - return - - cmd = [sendmail, "-t", "-oi"] - cmd_str = ' '.join(map(lambda x: pipes.quote(x), cmd)) - LOG.debug(_("Executing: {}").format(cmd_str)) - - p = Popen(cmd, stdin=PIPE, universal_newlines=True) - p.communicate(mail.as_string()) - - # ------------------------------------------------------------------------- - def post_init(self): - """ - Method to execute before calling run(). Here could be done some - finishing actions after reading in commandline parameters, - configuration a.s.o. - - This method could be overwritten by descendant classes, these - methhods should allways include a call to post_init() of the - parent class. - - """ - - self.initialized = True - - # ------------------------------------------------------------------------- - def is_local_domain(self, domain): - - zone_name = RE_DOT_AT_END.sub('', domain) - - if self.verbose > 1: - LOG.debug(_("Checking, whether {!r} is a local zone.").format(zone_name)) - - tld = zone_name.split('.')[-1] - if tld in ('intern', 'internal', 'local', 'localdomain', 'lokal'): - LOG.debug(_("Zone {zone!r} has the local TLD {tld!r}.").format( - zone=zone_name, tld=tld)) - return True - - zone_base = zone_name.split('.')[0] - if zone_base in ('intern', 'internal', 'local', 'localdomain', 'lokal'): - LOG.debug(_("Zone {zone!r} has the local base name {n!r}.").format( - zone=zone_name, n=zone_base)) - return True - - if tld != 'arpa': - if self.verbose > 2: - LOG.debug(_("Zone {zone!r} has the public TLD {tld!r}.").format( - zone=zone_name, tld=tld)) - return False - - if zone_name.endswith('.in-addr.arpa'): - tupels = [] - for tupel in reversed(zone_name.replace('.in-addr.arpa', '').split('.')): - tupels.append(tupel) - if self.verbose > 2: - LOG.debug( - _("Got IPv4 tupels from zone {!r}:").format(zone_name) + ' ' + pp(tupels)) - bitmask = None - if len(tupels) == 1: - bitmask = 8 - tupels.append('0') - tupels.append('0') - tupels.append('0') - elif len(tupels) == 2: - tupels.append('0') - tupels.append('0') - bitmask = 16 - elif len(tupels) == 3: - bitmask = 24 - tupels.append('0') - else: - LOG.warn(_("Could not interprete reverse IPv4 zone {!r}.").format(zone_name)) - return False - net_address = '.'.join(tupels) + '/{}'.format(bitmask) - if self.verbose > 2: - LOG.debug(_("Got IPv4 network address of zone {zone!r}: {nw!r}.").format( - zone=zone_name, nw=net_address)) - network = ipaddress.ip_network(net_address) - if network.is_global: - if self.verbose > 1: - LOG.debug( - _("The network {nw!r} of zone {zone!r} is allocated for public " - "networks.").format(nw=net_address, zone=zone_name)) - return False - LOG.debug(_( - "The network {nw!r} of zone {zone!r} is allocated for local networks.").format( - nw=net_address, zone=zone_name)) - return True - - if self.verbose > 2: - LOG.debug(_("Zone {!r} seems to be a reverse zone for a public network.").format( - zone_name)) - return False - - -# ============================================================================= - -if __name__ == "__main__": - - pass - -# ============================================================================= - -# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 list diff --git a/lib/pp_admintools/global_version.py b/lib/pp_admintools/global_version.py index 9c28c1f..2ae4f07 100644 --- a/lib/pp_admintools/global_version.py +++ b/lib/pp_admintools/global_version.py @@ -9,7 +9,7 @@ __author__ = 'Frank Brehm ' __contact__ = 'frank.brehm@pixelpark.com' -__version__ = '0.9.0' +__version__ = '0.9.1' __license__ = 'LGPL3+' # vim: fileencoding=utf-8 filetype=python ts=4 diff --git a/locale/de_DE/LC_MESSAGES/pp_admintools.po b/locale/de_DE/LC_MESSAGES/pp_admintools.po index b4dd342..d29c792 100644 --- a/locale/de_DE/LC_MESSAGES/pp_admintools.po +++ b/locale/de_DE/LC_MESSAGES/pp_admintools.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: pp_admintools 0.9.0\n" "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n" -"POT-Creation-Date: 2022-03-31 17:40+0200\n" +"POT-Creation-Date: 2022-03-31 18:12+0200\n" "PO-Revision-Date: 2022-03-31 18:00+0100\n" "Last-Translator: Frank Brehm \n" "Language: de_DE\n" @@ -34,257 +34,6 @@ msgstr "Der Wert {v!r} für einen Timeout von {what} ist ungültig." msgid "Value {v!r} for a timeout of {what} must be greater than 0 and less than {max}." msgstr "Der Wert {v!r} für einen Timeout von {what} muss größer als 0 und kleiner als {max} sein." -#: lib/pp_admintools/cfg_app.py:143 lib/pp_admintools/cfg_app.py:149 -msgid "Invalid configuration stem {!r} given." -msgstr "Ungültiger Konfigurations-Stammname {!r} angegeben." - -#: lib/pp_admintools/cfg_app.py:190 -msgid "{c} on setting encoding {v!r}: {e}" -msgstr "{c} beim Setzen der Kodierung {v!r}: {e}" - -#: lib/pp_admintools/cfg_app.py:244 lib/pp_admintools/mail_app.py:204 -msgid "Mailing options" -msgstr "E-Mail-Optionen" - -#: lib/pp_admintools/cfg_app.py:248 lib/pp_admintools/cfg_app.py:254 lib/pp_admintools/cfg_app.py:260 -#: lib/pp_admintools/mail_app.py:219 lib/pp_admintools/mail_app.py:227 -#: lib/pp_admintools/mail_app.py:233 lib/pp_admintools/mail_app.py:239 -msgid "ADDRESS" -msgstr "ADRESSE" - -#: lib/pp_admintools/cfg_app.py:249 lib/pp_admintools/mail_app.py:228 -msgid "Mail addresses of all recipients for mails generated by this script." -msgstr "Mailadressen aller Empfänger von Mails, die von diesem Skript generiert werden." - -#: lib/pp_admintools/cfg_app.py:255 lib/pp_admintools/mail_app.py:234 -msgid "Mail addresses of all CC recipients for mails generated by this script." -msgstr "Mailadressen aller CC-Empfänger von Mails, die von diesem Skript generiert werden." - -#: lib/pp_admintools/cfg_app.py:261 lib/pp_admintools/mail_app.py:240 -msgid "Reply mail address for mails generated by this script." -msgstr "Antwort-Mailadresse von Mails, die von diesem Skript generiert werden." - -#: lib/pp_admintools/cfg_app.py:266 lib/pp_admintools/mail_app.py:246 -msgid "METHOD" -msgstr "METHODE" - -#: lib/pp_admintools/cfg_app.py:267 lib/pp_admintools/mail_app.py:247 -msgid "Method for sending the mails generated by this script. Valid values: {v}, default: {d!r}." -msgstr "" -"Methode zum Senden von Mails, die von diesem Skript generiert werden. Gültige Werte: {v}, " -"Vorgabe: {d!r}." - -#: lib/pp_admintools/cfg_app.py:276 lib/pp_admintools/mail_app.py:255 -msgid "SERVER" -msgstr "SERVER" - -#: lib/pp_admintools/cfg_app.py:277 lib/pp_admintools/mail_app.py:256 -msgid "" -"Mail server for submitting generated by this script if the mail method of this script is 'smtp'." -" Default: {!r}." -msgstr "" -"Der Mailserver zur Übermittlung der von diesem Skript generierten Mails, wenn die Mail-Methode " -"'smtp' ist. Vorgabe: {!r}." - -#: lib/pp_admintools/cfg_app.py:285 lib/pp_admintools/mail_app.py:263 -#: lib/pp_admintools/pdns_app.py:275 -msgid "PORT" -msgstr "PORT" - -#: lib/pp_admintools/cfg_app.py:286 lib/pp_admintools/mail_app.py:265 -msgid "" -"The port to use for submitting generated by this script if the mail method of this script is " -"'smtp'. Default: {}." -msgstr "" -"Der zu verwendende Port zur Übermittlung der von diesem Skript generierten Mails, wenn die Mail-" -"Methode 'smtp' ist. Vorgabe: {}." - -#: lib/pp_admintools/cfg_app.py:291 -msgid "Config file options" -msgstr "Konfigurationsdatei-Optionen" - -#: lib/pp_admintools/cfg_app.py:295 lib/pp_admintools/cfg_app.py:303 -msgid "FILE" -msgstr "DATEI" - -#: lib/pp_admintools/cfg_app.py:296 -msgid "Configuration files to use additional to the standard configuration files." -msgstr "Zusätzlich zu den Standard-Konfigurationsdateien zu verwendende Konfigurationsdateien." - -#: lib/pp_admintools/cfg_app.py:304 -msgid "Configuration file for logging in JSON format. See {!r} how the structures has to be defined." -msgstr "" -"Konfigurationsdatei zum Loggen im JSON format. Siehe {!r}, wie die Struktur definiert werden " -"muss." - -#: lib/pp_admintools/cfg_app.py:311 -msgid "ENCODING" -msgstr "KODIERUNG" - -#: lib/pp_admintools/cfg_app.py:312 -#, python-format -msgid "The encoding character set of the configuration files (default: %(default)r)." -msgstr "Der Kodierungs-Zeichensatz der Konfigurationsdateien (Vorgabe: %(default)r)." - -#: lib/pp_admintools/cfg_app.py:345 lib/pp_admintools/cfg_app.py:391 lib/pp_admintools/cfg_app.py:425 -#: lib/pp_admintools/cfg_app.py:500 -msgid "Searching for {!r} ..." -msgstr "Suche nach {!r} …" - -#: lib/pp_admintools/cfg_app.py:411 -msgid "Log config files:" -msgstr "Log-Konfigurationsdateien:" - -#: lib/pp_admintools/cfg_app.py:432 -msgid "No read access to {!r}." -msgstr "Kein Lesezugriff auf {!r}." - -#: lib/pp_admintools/cfg_app.py:438 -msgid "Reading and evaluating {!r} ..." -msgstr "Lese und evaluiere {!r} …" - -#: lib/pp_admintools/cfg_app.py:454 -msgid "Evaluated configuration from JSON:" -msgstr "Evaluierte Konfiguration aus JSON:" - -#: lib/pp_admintools/cfg_app.py:458 -msgid "Wrong file {!r} - " -msgstr "Falsche Datei {!r} - " - -#: lib/pp_admintools/cfg_app.py:503 -msgid "Config file {!r} not found." -msgstr "Die Konfigurationsdatei {!r} wurde nicht gefunden." - -#: lib/pp_admintools/cfg_app.py:506 lib/pp_admintools/dns_deploy_zones_app.py:693 -#: lib/pp_admintools/dns_deploy_zones_app.py:710 -msgid "Reading {!r} ..." -msgstr "Lese {!r} …" - -#: lib/pp_admintools/cfg_app.py:517 -msgid "Wrong configuration in {!r} found: " -msgstr "Falsche Konfiguration in {!r} gefunden: " - -#: lib/pp_admintools/cfg_app.py:519 -msgid "Configuration error" -msgstr "Konfigurationsfehler" - -#: lib/pp_admintools/cfg_app.py:530 -msgid "Evaluated config from {!r}:" -msgstr "Evaluierte Konfiguration aus {!r}:" - -#: lib/pp_admintools/cfg_app.py:534 -msgid "Evaluated config total:" -msgstr "Evaluierte Gesamtkonfiguration:" - -#: lib/pp_admintools/cfg_app.py:557 -msgid "There are errors in configuration." -msgstr "Es gibt Fehler in der Konfiguration." - -#: lib/pp_admintools/cfg_app.py:560 -msgid "There are no errors in configuration." -msgstr "In der Konfiguration gibt es keine Fehler." - -#: lib/pp_admintools/cfg_app.py:568 lib/pp_admintools/cfg_app.py:591 -#: lib/pp_admintools/dns_deploy_zones_config.py:202 lib/pp_admintools/dns_deploy_zones_config.py:515 -#: lib/pp_admintools/mail_config.py:178 lib/pp_admintools/pdns_config.py:187 -msgid "Evaluating config section {!r}:" -msgstr "Evaluiere Konfigurations-Abschnitt {!r}:" - -#: lib/pp_admintools/cfg_app.py:615 -msgid "Found invalid recipient mail address {!r} in configuration." -msgstr "Ungültige Empfänger-Mailadresse {!r} in der Konfiguration gefunden." - -#: lib/pp_admintools/cfg_app.py:631 -msgid "CC addresses:" -msgstr "CC-Adressen:" - -#: lib/pp_admintools/cfg_app.py:637 -msgid "Found invalid cc mail address {!r} in configuration." -msgstr "Ungültige CC-Mailadresse {!r} in der Konfiguration gefunden." - -#: lib/pp_admintools/cfg_app.py:655 -msgid "Found invalid reply mail address {!r} in configuration." -msgstr "Ungültige Antwort-Mailadresse {!r} in der Konfiguration gefunden." - -#: lib/pp_admintools/cfg_app.py:670 lib/pp_admintools/mail_config.py:308 -msgid "Found invalid mail method {!r} in configuration." -msgstr "Ungültige Mail-Methode {!r} in der Konfiguration gefunden." - -#: lib/pp_admintools/cfg_app.py:695 lib/pp_admintools/cfg_app.py:699 -msgid "Found invalid SMTP port number {!r} in configuration." -msgstr "Ungültige SMTP-Port-Nummer {!r} in der Konfiguration gefunden." - -#: lib/pp_admintools/cfg_app.py:722 lib/pp_admintools/mail_app.py:106 -msgid "Got invalid SMTP port number {!r}." -msgstr "Ungültige SMTP-Port-Nummer {!r} erhalten." - -#: lib/pp_admintools/cfg_app.py:740 -msgid "Got invalid recipient mail address {!r}." -msgstr "Ungültige Empfänger-Mailadresse {!r} erhalten." - -#: lib/pp_admintools/cfg_app.py:761 -msgid "Got invalid CC mail address {!r}." -msgstr "Ungültige CC-Mailadresse {!r} erhalten." - -#: lib/pp_admintools/cfg_app.py:776 lib/pp_admintools/mail_app.py:190 -msgid "Got invalid reply mail address {!r}." -msgstr "Ungültige CC-Mailadresse {!r} erhalten." - -#: lib/pp_admintools/cfg_app.py:807 lib/pp_admintools/mail_app.py:289 -msgid "Mail to send:" -msgstr "Die zu sendende Mail:" - -#: lib/pp_admintools/cfg_app.py:840 lib/pp_admintools/mail_app.py:322 -msgid "Did not found sendmail executable." -msgstr "Kein ausführbares Programm 'sendmail' gefunden." - -#: lib/pp_admintools/cfg_app.py:846 lib/pp_admintools/dns_deploy_zones_app.py:441 -#: lib/pp_admintools/dns_deploy_zones_app.py:795 lib/pp_admintools/dns_deploy_zones_app.py:831 -#: lib/pp_admintools/dns_deploy_zones_app.py:863 lib/pp_admintools/dns_deploy_zones_app.py:898 -#: lib/pp_admintools/dns_deploy_zones_app.py:933 lib/pp_admintools/mail_app.py:328 -msgid "Executing: {}" -msgstr "Führe aus: {}" - -#: lib/pp_admintools/cfg_app.py:872 -msgid "Checking, whether {!r} is a local zone." -msgstr "Überprüfe, ob {!r} eine lokale Zune ist." - -#: lib/pp_admintools/cfg_app.py:876 -msgid "Zone {zone!r} has the local TLD {tld!r}." -msgstr "Die Zone {zone!r} hat eine lokale TLD {tld!r}." - -#: lib/pp_admintools/cfg_app.py:882 -msgid "Zone {zone!r} has the local base name {n!r}." -msgstr "Die Zone {zone!r} hat einen lokalen Basisnamen: {n!r}." - -#: lib/pp_admintools/cfg_app.py:888 -msgid "Zone {zone!r} has the public TLD {tld!r}." -msgstr "Die Zone {zone!r} hat eine öffentliche TLD {tld!r}." - -#: lib/pp_admintools/cfg_app.py:898 -msgid "Got IPv4 tupels from zone {!r}:" -msgstr "Habe IPv4 Tupels von Zone {!r} erhalten:" - -#: lib/pp_admintools/cfg_app.py:913 -msgid "Could not interprete reverse IPv4 zone {!r}." -msgstr "Konnte Revers-IPv4-Zone {!r} nicht interpretieren." - -#: lib/pp_admintools/cfg_app.py:917 -msgid "Got IPv4 network address of zone {zone!r}: {nw!r}." -msgstr "Habe IPv4-Netzwerkadresse von Zone {zone!r} erhalten: {nw!r}." - -#: lib/pp_admintools/cfg_app.py:923 -msgid "The network {nw!r} of zone {zone!r} is allocated for public networks." -msgstr "Die Netzwerkadresse {nw!r} von Zone {zone!r} ist für öffentliche Netze bestimmt." - -#: lib/pp_admintools/cfg_app.py:926 -msgid "The network {nw!r} of zone {zone!r} is allocated for local networks." -msgstr "Die Netzwerkadresse {nw!r} von Zone {zone!r} ist für lokale Netze bestimmt." - -#: lib/pp_admintools/cfg_app.py:932 -msgid "Zone {!r} seems to be a reverse zone for a public network." -msgstr "Die Zone {!r} scheint eine Reverse-Zone eines öffentlichen Netzwerks zu sein." - #: lib/pp_admintools/dns_deploy_zones_app.py:121 msgid "Generation of the BIND9 configuration file for slave zones." msgstr "Generierung der BIND9-Konfigurationsdatei für Slave-Zonen." @@ -375,6 +124,13 @@ msgstr "Temporäre Zonenkonfiguration: {!r}" msgid "Trying to get all keys from named.conf ..." msgstr "Versuche alle Schlüssel der named.conf zu ermitteln …" +#: lib/pp_admintools/dns_deploy_zones_app.py:441 lib/pp_admintools/dns_deploy_zones_app.py:795 +#: lib/pp_admintools/dns_deploy_zones_app.py:831 lib/pp_admintools/dns_deploy_zones_app.py:863 +#: lib/pp_admintools/dns_deploy_zones_app.py:898 lib/pp_admintools/dns_deploy_zones_app.py:933 +#: lib/pp_admintools/mail_app.py:328 +msgid "Executing: {}" +msgstr "Führe aus: {}" + #: lib/pp_admintools/dns_deploy_zones_app.py:447 lib/pp_admintools/dns_deploy_zones_app.py:801 msgid "Result:" msgstr "Ergebnis:" @@ -451,6 +207,10 @@ msgstr "Die {what} {f!r} ist keine reguläre Datei." msgid "Target file" msgstr "Ziel-Datei" +#: lib/pp_admintools/dns_deploy_zones_app.py:693 lib/pp_admintools/dns_deploy_zones_app.py:710 +msgid "Reading {!r} ..." +msgstr "Lese {!r} …" + #: lib/pp_admintools/dns_deploy_zones_app.py:703 lib/pp_admintools/dns_deploy_zones_app.py:720 msgid "Cleaned version of {!r}:" msgstr "Bereinigte Version von {!r}:" @@ -535,6 +295,11 @@ msgstr "Neu starten {} …" msgid "Reloading {} ..." msgstr "Reload {} …" +#: lib/pp_admintools/dns_deploy_zones_config.py:202 lib/pp_admintools/dns_deploy_zones_config.py:515 +#: lib/pp_admintools/mail_config.py:178 lib/pp_admintools/pdns_config.py:187 +msgid "Evaluating config section {!r}:" +msgstr "Evaluiere Konfigurations-Abschnitt {!r}:" + #: lib/pp_admintools/dns_deploy_zones_config.py:290 msgid "Checking given master address {!r} ..." msgstr "Überprüfe die übergebene Master-Adresse {!r} …" @@ -600,6 +365,10 @@ msgstr "Keine gültigen Master in der Konfiguration gefunden." msgid "Evaluated configuration:" msgstr "Evaluierte Konfiguration:" +#: lib/pp_admintools/mail_app.py:106 +msgid "Got invalid SMTP port number {!r}." +msgstr "Ungültige SMTP-Port-Nummer {!r} erhalten." + #: lib/pp_admintools/mail_app.py:124 msgid "Got invalid mail from address {!r}." msgstr "Ungültige Absender-Mailadresse {!r} erhalten." @@ -612,14 +381,81 @@ msgstr "Ungültige Empfänger-Mailadressen erhalten:" msgid "Got invalid cc mail addresses:" msgstr "Ungültige CC-Mailadressen erhalten:" +#: lib/pp_admintools/mail_app.py:190 +msgid "Got invalid reply mail address {!r}." +msgstr "Ungültige CC-Mailadresse {!r} erhalten." + +#: lib/pp_admintools/mail_app.py:204 +msgid "Mailing options" +msgstr "E-Mail-Optionen" + +#: lib/pp_admintools/mail_app.py:219 lib/pp_admintools/mail_app.py:227 +#: lib/pp_admintools/mail_app.py:233 lib/pp_admintools/mail_app.py:239 +msgid "ADDRESS" +msgstr "ADRESSE" + #: lib/pp_admintools/mail_app.py:220 msgid "Sender mail address for mails generated by this script. Default: {!r}" msgstr "Absender-Mailadresse von Mails, die von diesem Skript generiert werden. Vorgabe: {!r}" +#: lib/pp_admintools/mail_app.py:228 +msgid "Mail addresses of all recipients for mails generated by this script." +msgstr "Mailadressen aller Empfänger von Mails, die von diesem Skript generiert werden." + +#: lib/pp_admintools/mail_app.py:234 +msgid "Mail addresses of all CC recipients for mails generated by this script." +msgstr "Mailadressen aller CC-Empfänger von Mails, die von diesem Skript generiert werden." + +#: lib/pp_admintools/mail_app.py:240 +msgid "Reply mail address for mails generated by this script." +msgstr "Antwort-Mailadresse von Mails, die von diesem Skript generiert werden." + +#: lib/pp_admintools/mail_app.py:246 +msgid "METHOD" +msgstr "METHODE" + +#: lib/pp_admintools/mail_app.py:247 +msgid "Method for sending the mails generated by this script. Valid values: {v}, default: {d!r}." +msgstr "" +"Methode zum Senden von Mails, die von diesem Skript generiert werden. Gültige Werte: {v}, " +"Vorgabe: {d!r}." + +#: lib/pp_admintools/mail_app.py:255 +msgid "SERVER" +msgstr "SERVER" + +#: lib/pp_admintools/mail_app.py:256 +msgid "" +"Mail server for submitting generated by this script if the mail method of this script is 'smtp'." +" Default: {!r}." +msgstr "" +"Der Mailserver zur Übermittlung der von diesem Skript generierten Mails, wenn die Mail-Methode " +"'smtp' ist. Vorgabe: {!r}." + +#: lib/pp_admintools/mail_app.py:263 lib/pp_admintools/pdns_app.py:275 +msgid "PORT" +msgstr "PORT" + +#: lib/pp_admintools/mail_app.py:265 +msgid "" +"The port to use for submitting generated by this script if the mail method of this script is " +"'smtp'. Default: {}." +msgstr "" +"Der zu verwendende Port zur Übermittlung der von diesem Skript generierten Mails, wenn die Mail-" +"Methode 'smtp' ist. Vorgabe: {}." + #: lib/pp_admintools/mail_app.py:274 msgid "Got command line arguments:" msgstr "Kommandozeilen-Argumente erhalten:" +#: lib/pp_admintools/mail_app.py:289 +msgid "Mail to send:" +msgstr "Die zu sendende Mail:" + +#: lib/pp_admintools/mail_app.py:322 +msgid "Did not found sendmail executable." +msgstr "Kein ausführbares Programm 'sendmail' gefunden." + #: lib/pp_admintools/mail_config.py:199 lib/pp_admintools/mail_config.py:223 #: lib/pp_admintools/mail_config.py:291 msgid "Found invalid {what} {addr!r} in configuration." @@ -641,6 +477,10 @@ msgstr "CC-Mail-Adresse." msgid "reply to address" msgstr "Reply-To-Adresse" +#: lib/pp_admintools/mail_config.py:308 +msgid "Found invalid mail method {!r} in configuration." +msgstr "Ungültige Mail-Methode {!r} in der Konfiguration gefunden." + #: lib/pp_admintools/mail_config.py:342 msgid "Value {!r} for SMTP port is invalid:" msgstr "Der Wert {!r} für einen SMTP-Port ist ungültig:" diff --git a/locale/en_US/LC_MESSAGES/pp_admintools.po b/locale/en_US/LC_MESSAGES/pp_admintools.po index 9f85484..376a12c 100644 --- a/locale/en_US/LC_MESSAGES/pp_admintools.po +++ b/locale/en_US/LC_MESSAGES/pp_admintools.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: pp_admintools 0.9.0\n" "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n" -"POT-Creation-Date: 2022-03-31 17:40+0200\n" +"POT-Creation-Date: 2022-03-31 18:12+0200\n" "PO-Revision-Date: 2022-03-31 17:45+0100\n" "Last-Translator: Frank Brehm \n" "Language: en_US\n" @@ -34,249 +34,6 @@ msgstr "" msgid "Value {v!r} for a timeout of {what} must be greater than 0 and less than {max}." msgstr "" -#: lib/pp_admintools/cfg_app.py:143 lib/pp_admintools/cfg_app.py:149 -msgid "Invalid configuration stem {!r} given." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:190 -msgid "{c} on setting encoding {v!r}: {e}" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:244 lib/pp_admintools/mail_app.py:204 -msgid "Mailing options" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:248 lib/pp_admintools/cfg_app.py:254 lib/pp_admintools/cfg_app.py:260 -#: lib/pp_admintools/mail_app.py:219 lib/pp_admintools/mail_app.py:227 -#: lib/pp_admintools/mail_app.py:233 lib/pp_admintools/mail_app.py:239 -msgid "ADDRESS" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:249 lib/pp_admintools/mail_app.py:228 -msgid "Mail addresses of all recipients for mails generated by this script." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:255 lib/pp_admintools/mail_app.py:234 -msgid "Mail addresses of all CC recipients for mails generated by this script." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:261 lib/pp_admintools/mail_app.py:240 -msgid "Reply mail address for mails generated by this script." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:266 lib/pp_admintools/mail_app.py:246 -msgid "METHOD" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:267 lib/pp_admintools/mail_app.py:247 -msgid "Method for sending the mails generated by this script. Valid values: {v}, default: {d!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:276 lib/pp_admintools/mail_app.py:255 -msgid "SERVER" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:277 lib/pp_admintools/mail_app.py:256 -msgid "" -"Mail server for submitting generated by this script if the mail method of this script is 'smtp'." -" Default: {!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:285 lib/pp_admintools/mail_app.py:263 -#: lib/pp_admintools/pdns_app.py:275 -msgid "PORT" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:286 lib/pp_admintools/mail_app.py:265 -msgid "" -"The port to use for submitting generated by this script if the mail method of this script is " -"'smtp'. Default: {}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:291 -msgid "Config file options" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:295 lib/pp_admintools/cfg_app.py:303 -msgid "FILE" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:296 -msgid "Configuration files to use additional to the standard configuration files." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:304 -msgid "Configuration file for logging in JSON format. See {!r} how the structures has to be defined." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:311 -msgid "ENCODING" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:312 -#, python-format -msgid "The encoding character set of the configuration files (default: %(default)r)." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:345 lib/pp_admintools/cfg_app.py:391 lib/pp_admintools/cfg_app.py:425 -#: lib/pp_admintools/cfg_app.py:500 -msgid "Searching for {!r} ..." -msgstr "Searching for {!r} …" - -#: lib/pp_admintools/cfg_app.py:411 -msgid "Log config files:" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:432 -msgid "No read access to {!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:438 -msgid "Reading and evaluating {!r} ..." -msgstr "Reading and evaluating {!r} …" - -#: lib/pp_admintools/cfg_app.py:454 -msgid "Evaluated configuration from JSON:" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:458 -msgid "Wrong file {!r} - " -msgstr "" - -#: lib/pp_admintools/cfg_app.py:503 -msgid "Config file {!r} not found." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:506 lib/pp_admintools/dns_deploy_zones_app.py:693 -#: lib/pp_admintools/dns_deploy_zones_app.py:710 -msgid "Reading {!r} ..." -msgstr "Reading {!r} …" - -#: lib/pp_admintools/cfg_app.py:517 -msgid "Wrong configuration in {!r} found: " -msgstr "" - -#: lib/pp_admintools/cfg_app.py:519 -msgid "Configuration error" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:530 -msgid "Evaluated config from {!r}:" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:534 -msgid "Evaluated config total:" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:557 -msgid "There are errors in configuration." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:560 -msgid "There are no errors in configuration." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:568 lib/pp_admintools/cfg_app.py:591 -#: lib/pp_admintools/dns_deploy_zones_config.py:202 lib/pp_admintools/dns_deploy_zones_config.py:515 -#: lib/pp_admintools/mail_config.py:178 lib/pp_admintools/pdns_config.py:187 -msgid "Evaluating config section {!r}:" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:615 -msgid "Found invalid recipient mail address {!r} in configuration." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:631 -msgid "CC addresses:" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:637 -msgid "Found invalid cc mail address {!r} in configuration." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:655 -msgid "Found invalid reply mail address {!r} in configuration." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:670 lib/pp_admintools/mail_config.py:308 -msgid "Found invalid mail method {!r} in configuration." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:695 lib/pp_admintools/cfg_app.py:699 -msgid "Found invalid SMTP port number {!r} in configuration." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:722 lib/pp_admintools/mail_app.py:106 -msgid "Got invalid SMTP port number {!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:740 -msgid "Got invalid recipient mail address {!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:761 -msgid "Got invalid CC mail address {!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:776 lib/pp_admintools/mail_app.py:190 -msgid "Got invalid reply mail address {!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:807 lib/pp_admintools/mail_app.py:289 -msgid "Mail to send:" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:840 lib/pp_admintools/mail_app.py:322 -msgid "Did not found sendmail executable." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:846 lib/pp_admintools/dns_deploy_zones_app.py:441 -#: lib/pp_admintools/dns_deploy_zones_app.py:795 lib/pp_admintools/dns_deploy_zones_app.py:831 -#: lib/pp_admintools/dns_deploy_zones_app.py:863 lib/pp_admintools/dns_deploy_zones_app.py:898 -#: lib/pp_admintools/dns_deploy_zones_app.py:933 lib/pp_admintools/mail_app.py:328 -msgid "Executing: {}" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:872 -msgid "Checking, whether {!r} is a local zone." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:876 -msgid "Zone {zone!r} has the local TLD {tld!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:882 -msgid "Zone {zone!r} has the local base name {n!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:888 -msgid "Zone {zone!r} has the public TLD {tld!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:898 -msgid "Got IPv4 tupels from zone {!r}:" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:913 -msgid "Could not interprete reverse IPv4 zone {!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:917 -msgid "Got IPv4 network address of zone {zone!r}: {nw!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:923 -msgid "The network {nw!r} of zone {zone!r} is allocated for public networks." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:926 -msgid "The network {nw!r} of zone {zone!r} is allocated for local networks." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:932 -msgid "Zone {!r} seems to be a reverse zone for a public network." -msgstr "" - #: lib/pp_admintools/dns_deploy_zones_app.py:121 msgid "Generation of the BIND9 configuration file for slave zones." msgstr "" @@ -365,6 +122,13 @@ msgstr "" msgid "Trying to get all keys from named.conf ..." msgstr "Trying to get all keys from named.conf …" +#: lib/pp_admintools/dns_deploy_zones_app.py:441 lib/pp_admintools/dns_deploy_zones_app.py:795 +#: lib/pp_admintools/dns_deploy_zones_app.py:831 lib/pp_admintools/dns_deploy_zones_app.py:863 +#: lib/pp_admintools/dns_deploy_zones_app.py:898 lib/pp_admintools/dns_deploy_zones_app.py:933 +#: lib/pp_admintools/mail_app.py:328 +msgid "Executing: {}" +msgstr "" + #: lib/pp_admintools/dns_deploy_zones_app.py:447 lib/pp_admintools/dns_deploy_zones_app.py:801 msgid "Result:" msgstr "" @@ -441,6 +205,10 @@ msgstr "" msgid "Target file" msgstr "" +#: lib/pp_admintools/dns_deploy_zones_app.py:693 lib/pp_admintools/dns_deploy_zones_app.py:710 +msgid "Reading {!r} ..." +msgstr "Reading {!r} …" + #: lib/pp_admintools/dns_deploy_zones_app.py:703 lib/pp_admintools/dns_deploy_zones_app.py:720 msgid "Cleaned version of {!r}:" msgstr "" @@ -523,6 +291,11 @@ msgstr "Restarting {} …" msgid "Reloading {} ..." msgstr "Reloading {} …" +#: lib/pp_admintools/dns_deploy_zones_config.py:202 lib/pp_admintools/dns_deploy_zones_config.py:515 +#: lib/pp_admintools/mail_config.py:178 lib/pp_admintools/pdns_config.py:187 +msgid "Evaluating config section {!r}:" +msgstr "" + #: lib/pp_admintools/dns_deploy_zones_config.py:290 msgid "Checking given master address {!r} ..." msgstr "Checking given master address {!r} …" @@ -589,6 +362,10 @@ msgstr "" msgid "Evaluated configuration:" msgstr "" +#: lib/pp_admintools/mail_app.py:106 +msgid "Got invalid SMTP port number {!r}." +msgstr "" + #: lib/pp_admintools/mail_app.py:124 msgid "Got invalid mail from address {!r}." msgstr "" @@ -601,14 +378,75 @@ msgstr "" msgid "Got invalid cc mail addresses:" msgstr "" +#: lib/pp_admintools/mail_app.py:190 +msgid "Got invalid reply mail address {!r}." +msgstr "" + +#: lib/pp_admintools/mail_app.py:204 +msgid "Mailing options" +msgstr "" + +#: lib/pp_admintools/mail_app.py:219 lib/pp_admintools/mail_app.py:227 +#: lib/pp_admintools/mail_app.py:233 lib/pp_admintools/mail_app.py:239 +msgid "ADDRESS" +msgstr "" + #: lib/pp_admintools/mail_app.py:220 msgid "Sender mail address for mails generated by this script. Default: {!r}" msgstr "" +#: lib/pp_admintools/mail_app.py:228 +msgid "Mail addresses of all recipients for mails generated by this script." +msgstr "" + +#: lib/pp_admintools/mail_app.py:234 +msgid "Mail addresses of all CC recipients for mails generated by this script." +msgstr "" + +#: lib/pp_admintools/mail_app.py:240 +msgid "Reply mail address for mails generated by this script." +msgstr "" + +#: lib/pp_admintools/mail_app.py:246 +msgid "METHOD" +msgstr "" + +#: lib/pp_admintools/mail_app.py:247 +msgid "Method for sending the mails generated by this script. Valid values: {v}, default: {d!r}." +msgstr "" + +#: lib/pp_admintools/mail_app.py:255 +msgid "SERVER" +msgstr "" + +#: lib/pp_admintools/mail_app.py:256 +msgid "" +"Mail server for submitting generated by this script if the mail method of this script is 'smtp'." +" Default: {!r}." +msgstr "" + +#: lib/pp_admintools/mail_app.py:263 lib/pp_admintools/pdns_app.py:275 +msgid "PORT" +msgstr "" + +#: lib/pp_admintools/mail_app.py:265 +msgid "" +"The port to use for submitting generated by this script if the mail method of this script is " +"'smtp'. Default: {}." +msgstr "" + #: lib/pp_admintools/mail_app.py:274 msgid "Got command line arguments:" msgstr "" +#: lib/pp_admintools/mail_app.py:289 +msgid "Mail to send:" +msgstr "" + +#: lib/pp_admintools/mail_app.py:322 +msgid "Did not found sendmail executable." +msgstr "" + #: lib/pp_admintools/mail_config.py:199 lib/pp_admintools/mail_config.py:223 #: lib/pp_admintools/mail_config.py:291 msgid "Found invalid {what} {addr!r} in configuration." @@ -630,6 +468,10 @@ msgstr "" msgid "reply to address" msgstr "" +#: lib/pp_admintools/mail_config.py:308 +msgid "Found invalid mail method {!r} in configuration." +msgstr "" + #: lib/pp_admintools/mail_config.py:342 msgid "Value {!r} for SMTP port is invalid:" msgstr "" diff --git a/locale/pp_admintools.pot b/locale/pp_admintools.pot index 39e16dc..7dc6354 100644 --- a/locale/pp_admintools.pot +++ b/locale/pp_admintools.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: pp_admintools 0.9.0\n" "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n" -"POT-Creation-Date: 2022-03-31 17:40+0200\n" +"POT-Creation-Date: 2022-03-31 18:12+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -33,249 +33,6 @@ msgstr "" msgid "Value {v!r} for a timeout of {what} must be greater than 0 and less than {max}." msgstr "" -#: lib/pp_admintools/cfg_app.py:143 lib/pp_admintools/cfg_app.py:149 -msgid "Invalid configuration stem {!r} given." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:190 -msgid "{c} on setting encoding {v!r}: {e}" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:244 lib/pp_admintools/mail_app.py:204 -msgid "Mailing options" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:248 lib/pp_admintools/cfg_app.py:254 lib/pp_admintools/cfg_app.py:260 -#: lib/pp_admintools/mail_app.py:219 lib/pp_admintools/mail_app.py:227 -#: lib/pp_admintools/mail_app.py:233 lib/pp_admintools/mail_app.py:239 -msgid "ADDRESS" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:249 lib/pp_admintools/mail_app.py:228 -msgid "Mail addresses of all recipients for mails generated by this script." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:255 lib/pp_admintools/mail_app.py:234 -msgid "Mail addresses of all CC recipients for mails generated by this script." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:261 lib/pp_admintools/mail_app.py:240 -msgid "Reply mail address for mails generated by this script." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:266 lib/pp_admintools/mail_app.py:246 -msgid "METHOD" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:267 lib/pp_admintools/mail_app.py:247 -msgid "Method for sending the mails generated by this script. Valid values: {v}, default: {d!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:276 lib/pp_admintools/mail_app.py:255 -msgid "SERVER" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:277 lib/pp_admintools/mail_app.py:256 -msgid "" -"Mail server for submitting generated by this script if the mail method of this script is 'smtp'." -" Default: {!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:285 lib/pp_admintools/mail_app.py:263 -#: lib/pp_admintools/pdns_app.py:275 -msgid "PORT" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:286 lib/pp_admintools/mail_app.py:265 -msgid "" -"The port to use for submitting generated by this script if the mail method of this script is " -"'smtp'. Default: {}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:291 -msgid "Config file options" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:295 lib/pp_admintools/cfg_app.py:303 -msgid "FILE" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:296 -msgid "Configuration files to use additional to the standard configuration files." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:304 -msgid "Configuration file for logging in JSON format. See {!r} how the structures has to be defined." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:311 -msgid "ENCODING" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:312 -#, python-format -msgid "The encoding character set of the configuration files (default: %(default)r)." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:345 lib/pp_admintools/cfg_app.py:391 lib/pp_admintools/cfg_app.py:425 -#: lib/pp_admintools/cfg_app.py:500 -msgid "Searching for {!r} ..." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:411 -msgid "Log config files:" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:432 -msgid "No read access to {!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:438 -msgid "Reading and evaluating {!r} ..." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:454 -msgid "Evaluated configuration from JSON:" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:458 -msgid "Wrong file {!r} - " -msgstr "" - -#: lib/pp_admintools/cfg_app.py:503 -msgid "Config file {!r} not found." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:506 lib/pp_admintools/dns_deploy_zones_app.py:693 -#: lib/pp_admintools/dns_deploy_zones_app.py:710 -msgid "Reading {!r} ..." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:517 -msgid "Wrong configuration in {!r} found: " -msgstr "" - -#: lib/pp_admintools/cfg_app.py:519 -msgid "Configuration error" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:530 -msgid "Evaluated config from {!r}:" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:534 -msgid "Evaluated config total:" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:557 -msgid "There are errors in configuration." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:560 -msgid "There are no errors in configuration." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:568 lib/pp_admintools/cfg_app.py:591 -#: lib/pp_admintools/dns_deploy_zones_config.py:202 lib/pp_admintools/dns_deploy_zones_config.py:515 -#: lib/pp_admintools/mail_config.py:178 lib/pp_admintools/pdns_config.py:187 -msgid "Evaluating config section {!r}:" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:615 -msgid "Found invalid recipient mail address {!r} in configuration." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:631 -msgid "CC addresses:" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:637 -msgid "Found invalid cc mail address {!r} in configuration." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:655 -msgid "Found invalid reply mail address {!r} in configuration." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:670 lib/pp_admintools/mail_config.py:308 -msgid "Found invalid mail method {!r} in configuration." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:695 lib/pp_admintools/cfg_app.py:699 -msgid "Found invalid SMTP port number {!r} in configuration." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:722 lib/pp_admintools/mail_app.py:106 -msgid "Got invalid SMTP port number {!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:740 -msgid "Got invalid recipient mail address {!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:761 -msgid "Got invalid CC mail address {!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:776 lib/pp_admintools/mail_app.py:190 -msgid "Got invalid reply mail address {!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:807 lib/pp_admintools/mail_app.py:289 -msgid "Mail to send:" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:840 lib/pp_admintools/mail_app.py:322 -msgid "Did not found sendmail executable." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:846 lib/pp_admintools/dns_deploy_zones_app.py:441 -#: lib/pp_admintools/dns_deploy_zones_app.py:795 lib/pp_admintools/dns_deploy_zones_app.py:831 -#: lib/pp_admintools/dns_deploy_zones_app.py:863 lib/pp_admintools/dns_deploy_zones_app.py:898 -#: lib/pp_admintools/dns_deploy_zones_app.py:933 lib/pp_admintools/mail_app.py:328 -msgid "Executing: {}" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:872 -msgid "Checking, whether {!r} is a local zone." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:876 -msgid "Zone {zone!r} has the local TLD {tld!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:882 -msgid "Zone {zone!r} has the local base name {n!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:888 -msgid "Zone {zone!r} has the public TLD {tld!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:898 -msgid "Got IPv4 tupels from zone {!r}:" -msgstr "" - -#: lib/pp_admintools/cfg_app.py:913 -msgid "Could not interprete reverse IPv4 zone {!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:917 -msgid "Got IPv4 network address of zone {zone!r}: {nw!r}." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:923 -msgid "The network {nw!r} of zone {zone!r} is allocated for public networks." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:926 -msgid "The network {nw!r} of zone {zone!r} is allocated for local networks." -msgstr "" - -#: lib/pp_admintools/cfg_app.py:932 -msgid "Zone {!r} seems to be a reverse zone for a public network." -msgstr "" - #: lib/pp_admintools/dns_deploy_zones_app.py:121 msgid "Generation of the BIND9 configuration file for slave zones." msgstr "" @@ -364,6 +121,13 @@ msgstr "" msgid "Trying to get all keys from named.conf ..." msgstr "" +#: lib/pp_admintools/dns_deploy_zones_app.py:441 lib/pp_admintools/dns_deploy_zones_app.py:795 +#: lib/pp_admintools/dns_deploy_zones_app.py:831 lib/pp_admintools/dns_deploy_zones_app.py:863 +#: lib/pp_admintools/dns_deploy_zones_app.py:898 lib/pp_admintools/dns_deploy_zones_app.py:933 +#: lib/pp_admintools/mail_app.py:328 +msgid "Executing: {}" +msgstr "" + #: lib/pp_admintools/dns_deploy_zones_app.py:447 lib/pp_admintools/dns_deploy_zones_app.py:801 msgid "Result:" msgstr "" @@ -440,6 +204,10 @@ msgstr "" msgid "Target file" msgstr "" +#: lib/pp_admintools/dns_deploy_zones_app.py:693 lib/pp_admintools/dns_deploy_zones_app.py:710 +msgid "Reading {!r} ..." +msgstr "" + #: lib/pp_admintools/dns_deploy_zones_app.py:703 lib/pp_admintools/dns_deploy_zones_app.py:720 msgid "Cleaned version of {!r}:" msgstr "" @@ -522,6 +290,11 @@ msgstr "" msgid "Reloading {} ..." msgstr "" +#: lib/pp_admintools/dns_deploy_zones_config.py:202 lib/pp_admintools/dns_deploy_zones_config.py:515 +#: lib/pp_admintools/mail_config.py:178 lib/pp_admintools/pdns_config.py:187 +msgid "Evaluating config section {!r}:" +msgstr "" + #: lib/pp_admintools/dns_deploy_zones_config.py:290 msgid "Checking given master address {!r} ..." msgstr "" @@ -587,6 +360,10 @@ msgstr "" msgid "Evaluated configuration:" msgstr "" +#: lib/pp_admintools/mail_app.py:106 +msgid "Got invalid SMTP port number {!r}." +msgstr "" + #: lib/pp_admintools/mail_app.py:124 msgid "Got invalid mail from address {!r}." msgstr "" @@ -599,14 +376,75 @@ msgstr "" msgid "Got invalid cc mail addresses:" msgstr "" +#: lib/pp_admintools/mail_app.py:190 +msgid "Got invalid reply mail address {!r}." +msgstr "" + +#: lib/pp_admintools/mail_app.py:204 +msgid "Mailing options" +msgstr "" + +#: lib/pp_admintools/mail_app.py:219 lib/pp_admintools/mail_app.py:227 +#: lib/pp_admintools/mail_app.py:233 lib/pp_admintools/mail_app.py:239 +msgid "ADDRESS" +msgstr "" + #: lib/pp_admintools/mail_app.py:220 msgid "Sender mail address for mails generated by this script. Default: {!r}" msgstr "" +#: lib/pp_admintools/mail_app.py:228 +msgid "Mail addresses of all recipients for mails generated by this script." +msgstr "" + +#: lib/pp_admintools/mail_app.py:234 +msgid "Mail addresses of all CC recipients for mails generated by this script." +msgstr "" + +#: lib/pp_admintools/mail_app.py:240 +msgid "Reply mail address for mails generated by this script." +msgstr "" + +#: lib/pp_admintools/mail_app.py:246 +msgid "METHOD" +msgstr "" + +#: lib/pp_admintools/mail_app.py:247 +msgid "Method for sending the mails generated by this script. Valid values: {v}, default: {d!r}." +msgstr "" + +#: lib/pp_admintools/mail_app.py:255 +msgid "SERVER" +msgstr "" + +#: lib/pp_admintools/mail_app.py:256 +msgid "" +"Mail server for submitting generated by this script if the mail method of this script is 'smtp'." +" Default: {!r}." +msgstr "" + +#: lib/pp_admintools/mail_app.py:263 lib/pp_admintools/pdns_app.py:275 +msgid "PORT" +msgstr "" + +#: lib/pp_admintools/mail_app.py:265 +msgid "" +"The port to use for submitting generated by this script if the mail method of this script is " +"'smtp'. Default: {}." +msgstr "" + #: lib/pp_admintools/mail_app.py:274 msgid "Got command line arguments:" msgstr "" +#: lib/pp_admintools/mail_app.py:289 +msgid "Mail to send:" +msgstr "" + +#: lib/pp_admintools/mail_app.py:322 +msgid "Did not found sendmail executable." +msgstr "" + #: lib/pp_admintools/mail_config.py:199 lib/pp_admintools/mail_config.py:223 #: lib/pp_admintools/mail_config.py:291 msgid "Found invalid {what} {addr!r} in configuration." @@ -628,6 +466,10 @@ msgstr "" msgid "reply to address" msgstr "" +#: lib/pp_admintools/mail_config.py:308 +msgid "Found invalid mail method {!r} in configuration." +msgstr "" + #: lib/pp_admintools/mail_config.py:342 msgid "Value {!r} for SMTP port is invalid:" msgstr ""