summaryrefslogtreecommitdiffstats
path: root/base/deploy/src/engine
diff options
context:
space:
mode:
authorEndi Sukma Dewata <edewata@redhat.com>2013-04-05 15:20:01 -0400
committerEndi Sukma Dewata <edewata@redhat.com>2013-04-09 09:40:09 -0400
commit62ccd4ca0addd8a4c74bcbdfca6aea0c9381907f (patch)
treead78a933e29a517bae7876248820c40b9b5db197 /base/deploy/src/engine
parent2e0194dd7791eaf07d6e9eb26df57e5a4677f426 (diff)
downloadpki-62ccd4ca0addd8a4c74bcbdfca6aea0c9381907f.tar.gz
pki-62ccd4ca0addd8a4c74bcbdfca6aea0c9381907f.tar.xz
pki-62ccd4ca0addd8a4c74bcbdfca6aea0c9381907f.zip
Renamed base/deploy to base/server.
The base/deploy folder has been renamed to base/server to match the package name. The pki.conf has been moved into pki-base package. Ticket #553, #564
Diffstat (limited to 'base/deploy/src/engine')
-rw-r--r--base/deploy/src/engine/pkiconfig.py185
-rw-r--r--base/deploy/src/engine/pkihelper.py3397
-rw-r--r--base/deploy/src/engine/pkilogging.py76
-rw-r--r--base/deploy/src/engine/pkimanifest.py101
-rw-r--r--base/deploy/src/engine/pkimessages.py361
-rw-r--r--base/deploy/src/engine/pkiparser.py1069
-rw-r--r--base/deploy/src/engine/pkiscriptlet.py46
7 files changed, 0 insertions, 5235 deletions
diff --git a/base/deploy/src/engine/pkiconfig.py b/base/deploy/src/engine/pkiconfig.py
deleted file mode 100644
index ad6c22251..000000000
--- a/base/deploy/src/engine/pkiconfig.py
+++ /dev/null
@@ -1,185 +0,0 @@
-#!/usr/bin/python -t
-# Authors:
-# Matthew Harmsen <mharmsen@redhat.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Copyright (C) 2012 Red Hat, Inc.
-# All rights reserved.
-#
-import re
-
-# PKI Deployment Constants
-PKI_DEPLOYMENT_DEFAULT_CLIENT_DIR_PERMISSIONS = 00755
-PKI_DEPLOYMENT_DEFAULT_DIR_PERMISSIONS = 00770
-PKI_DEPLOYMENT_DEFAULT_EXE_PERMISSIONS = 00770
-PKI_DEPLOYMENT_DEFAULT_FILE_PERMISSIONS = 00660
-PKI_DEPLOYMENT_DEFAULT_SECURITY_DATABASE_PERMISSIONS = 00600
-PKI_DEPLOYMENT_DEFAULT_SGID_DIR_PERMISSIONS = 02770
-PKI_DEPLOYMENT_DEFAULT_SYMLINK_PERMISSIONS = 00777
-PKI_DEPLOYMENT_DEFAULT_UMASK = 00002
-
-PKI_DEPLOYMENT_DEFAULT_COMMENT = "'Certificate System'"
-PKI_DEPLOYMENT_DEFAULT_GID = 17
-PKI_DEPLOYMENT_DEFAULT_GROUP = "pkiuser"
-PKI_DEPLOYMENT_DEFAULT_SHELL = "/sbin/nologin"
-PKI_DEPLOYMENT_DEFAULT_UID = 17
-PKI_DEPLOYMENT_DEFAULT_USER = "pkiuser"
-
-PKI_SUBSYSTEMS = ["CA","KRA","OCSP","RA","TKS","TPS"]
-PKI_SIGNED_AUDIT_SUBSYSTEMS = ["CA","KRA","OCSP","TKS","TPS"]
-PKI_APACHE_SUBSYSTEMS = ["RA","TPS"]
-PKI_TOMCAT_SUBSYSTEMS = ["CA","KRA","OCSP","TKS"]
-PKI_BASE_RESERVED_NAMES = ["alias", "bin", "ca", "common", "conf", "kra",
- "lib", "logs", "ocsp", "temp", "tks", "webapps",
- "work"]
-PKI_CONFIGURATION_RESERVED_NAMES = ["CA", "java", "nssdb", "rpm-gpg",
- "rsyslog", "tls"]
-PKI_APACHE_REGISTRY_RESERVED_NAMES = ["ra", "tps"]
-PKI_TOMCAT_REGISTRY_RESERVED_NAMES = ["ca", "kra", "ocsp", "tks"]
-
-PKI_INDENTATION_LEVEL_0 = {'indent' : ''}
-PKI_INDENTATION_LEVEL_1 = {'indent' : '... '}
-PKI_INDENTATION_LEVEL_2 = {'indent' : '....... '}
-PKI_INDENTATION_LEVEL_3 = {'indent' : '........... '}
-PKI_INDENTATION_LEVEL_4 = {'indent' : '............... '}
-
-PKI_DEPLOYMENT_INTERRUPT_BANNER = "-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+"\
- "-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-"
-
-PKI_DEPLOYMENT_SOURCE_ROOT = "/usr/share/pki"
-PKI_DEPLOYMENT_BASE_ROOT = "/var/lib/pki"
-# NOTE: Top-level "/etc/pki" is owned by the "filesystem" package!
-PKI_DEPLOYMENT_CONFIGURATION_ROOT = "/etc/pki"
-PKI_DEPLOYMENT_LOG_ROOT = "/var/log/pki"
-# NOTE: Well-known 'registry root', default 'instance', and default
-# 'configuration file' names MUST be created in order to potentially
-# obtain an instance-specific configuration file
-# (presuming one has not been specified during command-line parsing)
-# because command-line parsing happens prior to reading any
-# configuration files. Although the 'registry root' MUST remain fixed,
-# the default 'instance' name may be overridden by the value specified
-# in the configuration file (the value in the default configuration file
-# should always match the 'default' instance name specified below).
-PKI_DEPLOYMENT_DEFAULT_APACHE_INSTANCE_NAME = "pki-apache"
-PKI_DEPLOYMENT_DEFAULT_TOMCAT_INSTANCE_NAME = "pki-tomcat"
-
-DEFAULT_DEPLOYMENT_CONFIGURATION = "default.cfg"
-USER_DEPLOYMENT_CONFIGURATION = "deployment.cfg"
-
-PKI_DEPLOYMENT_DEFAULT_CONFIGURATION_FILE =\
- PKI_DEPLOYMENT_CONFIGURATION_ROOT + "/" + DEFAULT_DEPLOYMENT_CONFIGURATION
-PKI_DEPLOYMENT_SLOTS_CONFIGURATION_FILE =\
- PKI_DEPLOYMENT_SOURCE_ROOT + "/deployment/config/pkislots.cfg"
-
-# subtypes of PKI subsystems
-PKI_DEPLOYMENT_CLONED_PKI_SUBSYSTEM = "Cloned"
-PKI_DEPLOYMENT_EXTERNAL_CA = "External"
-PKI_DEPLOYMENT_SUBORDINATE_CA = "Subordinate"
-
-# default ports (for defined selinux policy)
-PKI_DEPLOYMENT_DEFAULT_TOMCAT_HTTP_PORT = 8080
-PKI_DEPLOYMENT_DEFAULT_TOMCAT_HTTPS_PORT = 8443
-PKI_DEPLOYMENT_DEFAULT_TOMCAT_SERVER_PORT = 8005
-PKI_DEPLOYMENT_DEFAULT_TOMCAT_AJP_PORT = 8009
-
-# PKI Deployment Global Variables
-pki_install_time = None
-pki_timestamp = None
-pki_architecture = None
-pki_hostname = None
-
-
-# PKI Deployment Command-Line Variables
-pki_deployment_executable = None
-
-# PKI Deployment "Mandatory" Command-Line Variables
-pki_subsystem = None
-# 'pkispawn' ONLY
-default_deployment_cfg = None
-user_deployment_cfg = None
-# 'pkidestroy' ONLY
-pki_deployed_instance_name = None
-pki_secdomain_user = None
-pki_secdomain_pass = None
-
-# PKI Deployment "Optional" Command-Line Variables
-# 'pkispawn' ONLY
-pki_update_flag = False
-
-# PKI Deployment "Test" Command-Line Variables
-pki_root_prefix = None
-
-
-# PKI Deployment Helper Functions
-def str2bool(string):
- return string.lower() in ("yes", "true", "t", "1")
-
-# NOTE: To utilize the 'preparations_for_an_external_java_debugger(master)'
-# and 'wait_to_attach_an_external_java_debugger(master)' functions,
-# change 'pki_enable_java_debugger=False' to
-# 'pki_enable_java_debugger=True' in the appropriate
-# deployment configuration file.
-def prepare_for_an_external_java_debugger(instance):
- print
- print PKI_DEPLOYMENT_INTERRUPT_BANNER
- print
- print "The following 'JAVA_OPTS' MUST be enabled (uncommented) in"
- print "'%s':" % instance
- print
- print " JAVA_OPTS=\"-Xdebug -Xrunjdwp:transport=dt_socket,\""
- print " \"address=8000,server=y,suspend\""
- print
- raw_input("Enable external java debugger 'JAVA_OPTS' "\
- "and press return to continue . . . ")
- print
- print PKI_DEPLOYMENT_INTERRUPT_BANNER
- print
- return
-
-def wait_to_attach_an_external_java_debugger():
- print
- print PKI_DEPLOYMENT_INTERRUPT_BANNER
- print
- print "Attach the java debugger to this process on the port specified by"
- print "the 'address' selected by 'JAVA_OPTS' (e. g. - port 8000) and"
- print "set any desired breakpoints"
- print
- raw_input("Please attach an external java debugger "\
- "and press return to continue . . . ")
- print
- print PKI_DEPLOYMENT_INTERRUPT_BANNER
- print
- return
-
-
-# PKI Deployment Logger Variables
-pki_log = None
-pki_log_dir = None
-pki_log_name = None
-pki_log_level = None
-pki_console_log_level = None
-
-
-# PKI Deployment Global Dictionaries
-pki_master_dict = {}
-pki_slots_dict = None
-
-# PKI Selinux Constants and parameters
-PKI_INSTANCE_SELINUX_CONTEXT = "pki_tomcat_var_lib_t"
-PKI_LOG_SELINUX_CONTEXT = "pki_tomcat_log_t"
-PKI_CFG_SELINUX_CONTEXT = "pki_tomcat_etc_rw_t"
-PKI_CERTDB_SELINUX_CONTEXT = "pki_tomcat_cert_t"
-PKI_PORT_SELINUX_CONTEXT = "http_port_t"
-pki_selinux_config_ports = []
diff --git a/base/deploy/src/engine/pkihelper.py b/base/deploy/src/engine/pkihelper.py
deleted file mode 100644
index df71978ed..000000000
--- a/base/deploy/src/engine/pkihelper.py
+++ /dev/null
@@ -1,3397 +0,0 @@
-#!/usr/bin/python -t
-
-# Authors:
-# Matthew Harmsen <mharmsen@redhat.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Copyright (C) 2012 Red Hat, Inc.
-# All rights reserved.
-#
-
-# System Imports
-import errno
-import sys
-import os
-import fileinput
-import pickle
-import random
-import re
-import requests
-import shutil
-import string
-import subprocess
-import time
-from datetime import datetime
-from grp import getgrgid
-from grp import getgrnam
-from pwd import getpwnam
-from pwd import getpwuid
-import xml.etree.ElementTree as ET
-import zipfile
-import selinux
-if selinux.is_selinux_enabled():
- import seobject
-
-
-# PKI Deployment Imports
-import pkiconfig as config
-from pkiconfig import pki_master_dict as master
-from pkiconfig import pki_slots_dict as slots
-from pkiconfig import pki_selinux_config_ports as ports
-import pkimanifest as manifest
-import pkimessages as log
-from pkiparser import PKIConfigParser
-import pki.account
-import pki.client
-import pki.system
-
-# PKI Deployment Helper Functions
-def pki_copytree(src, dst, symlinks=False, ignore=None):
- """Recursively copy a directory tree using copy2().
-
- PATCH: This code was copied from 'shutil.py' and patched to
- allow 'The destination directory to already exist.'
-
- If exception(s) occur, an Error is raised with a list of reasons.
-
- If the optional symlinks flag is true, symbolic links in the
- source tree result in symbolic links in the destination tree; if
- it is false, the contents of the files pointed to by symbolic
- links are copied.
-
- The optional ignore argument is a callable. If given, it
- is called with the `src` parameter, which is the directory
- being visited by pki_copytree(), and `names` which is the list of
- `src` contents, as returned by os.listdir():
-
- callable(src, names) -> ignored_names
-
- Since pki_copytree() is called recursively, the callable will be
- called once for each directory that is copied. It returns a
- list of names relative to the `src` directory that should
- not be copied.
-
- XXX Consider this example code rather than the ultimate tool.
-
- """
- names = os.listdir(src)
- if ignore is not None:
- ignored_names = ignore(src, names)
- else:
- ignored_names = set()
-
- # PATCH: ONLY execute 'os.makedirs(dst)' if the top-level
- # destination directory does NOT exist!
- if not os.path.exists(dst):
- os.makedirs(dst)
- errors = []
- for name in names:
- if name in ignored_names:
- continue
- srcname = os.path.join(src, name)
- dstname = os.path.join(dst, name)
- try:
- if symlinks and os.path.islink(srcname):
- linkto = os.readlink(srcname)
- os.symlink(linkto, dstname)
- elif os.path.isdir(srcname):
- pki_copytree(srcname, dstname, symlinks, ignore)
- else:
- # Will raise a SpecialFileError for unsupported file types
- shutil.copy2(srcname, dstname)
- # catch the Error from the recursive pki_copytree so that we can
- # continue with other files
- except Error, err:
- errors.extend(err.args[0])
- except EnvironmentError, why:
- errors.append((srcname, dstname, str(why)))
- try:
- shutil.copystat(src, dst)
- except OSError, why:
- if WindowsError is not None and isinstance(why, WindowsError):
- # Copying file access times may fail on Windows
- pass
- else:
- errors.extend((src, dst, str(why)))
- if errors:
- raise Error, errors
-
-# PKI Deployment Identity Class
-class identity:
- def __add_gid(self, pki_group):
- pki_gid = None
- try:
- # Does the specified 'pki_group' exist?
- pki_gid = getgrnam(pki_group)[2]
- # Yes, group 'pki_group' exists!
- config.pki_log.info(log.PKIHELPER_GROUP_ADD_2, pki_group, pki_gid,
- extra=config.PKI_INDENTATION_LEVEL_2)
- except KeyError as exc:
- # No, group 'pki_group' does not exist!
- config.pki_log.debug(log.PKIHELPER_GROUP_ADD_KEYERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- try:
- # Is the default well-known GID already defined?
- group = getgrgid(config.PKI_DEPLOYMENT_DEFAULT_GID)[0]
- # Yes, the default well-known GID exists!
- config.pki_log.info(log.PKIHELPER_GROUP_ADD_DEFAULT_2,
- group, config.PKI_DEPLOYMENT_DEFAULT_GID,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # Attempt to create 'pki_group' using a random GID.
- command = "/usr/sbin/groupadd" + " " +\
- pki_group + " " +\
- "> /dev/null 2>&1"
- except KeyError as exc:
- # No, the default well-known GID does not exist!
- config.pki_log.debug(log.PKIHELPER_GROUP_ADD_GID_KEYERROR_1,
- exc, extra=config.PKI_INDENTATION_LEVEL_2)
- # Is the specified 'pki_group' the default well-known group?
- if pki_group == config.PKI_DEPLOYMENT_DEFAULT_GROUP:
- # Yes, attempt to create the default well-known group
- # using the default well-known GID.
- command = "/usr/sbin/groupadd" + " " +\
- "-g" + " " +\
- str(config.PKI_DEPLOYMENT_DEFAULT_GID) + " " +\
- "-r" + " " +\
- pki_group + " " +\
- "> /dev/null 2>&1"
- else:
- # No, attempt to create 'pki_group' using a random GID.
- command = "/usr/sbin/groupadd" + " " +\
- pki_group + " " +\
- "> /dev/null 2>&1"
- # Execute this "groupadd" command.
- subprocess.call(command, shell=True)
- except subprocess.CalledProcessError as exc:
- config.pki_log.error(log.PKI_SUBPROCESS_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- return
-
- def __add_uid(self, pki_user, pki_group):
- pki_uid = None
- try:
- # Does the specified 'pki_user' exist?
- pki_uid = getpwnam(pki_user)[2]
- # Yes, user 'pki_user' exists!
- config.pki_log.info(log.PKIHELPER_USER_ADD_2, pki_user, pki_uid,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # NOTE: For now, never check validity of specified 'pki_group'!
- except KeyError as exc:
- # No, user 'pki_user' does not exist!
- config.pki_log.debug(log.PKIHELPER_USER_ADD_KEYERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- try:
- # Is the default well-known UID already defined?
- user = getpwuid(config.PKI_DEPLOYMENT_DEFAULT_UID)[0]
- # Yes, the default well-known UID exists!
- config.pki_log.info(log.PKIHELPER_USER_ADD_DEFAULT_2,
- user, config.PKI_DEPLOYMENT_DEFAULT_UID,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # Attempt to create 'pki_user' using a random UID.
- command = "/usr/sbin/useradd" + " " +\
- "-g" + " " +\
- pki_group + " " +\
- "-d" + " " +\
- config.PKI_DEPLOYMENT_SOURCE_ROOT + " " +\
- "-s" + " " +\
- config.PKI_DEPLOYMENT_DEFAULT_SHELL + " " +\
- "-c" + " " +\
- config.PKI_DEPLOYMENT_DEFAULT_COMMENT + " " +\
- pki_user + " " +\
- "> /dev/null 2>&1"
- except KeyError as exc:
- # No, the default well-known UID does not exist!
- config.pki_log.debug(log.PKIHELPER_USER_ADD_UID_KEYERROR_1,
- exc, extra=config.PKI_INDENTATION_LEVEL_2)
- # Is the specified 'pki_user' the default well-known user?
- if pki_user == config.PKI_DEPLOYMENT_DEFAULT_USER:
- # Yes, attempt to create the default well-known user
- # using the default well-known UID.
- command = "/usr/sbin/useradd" + " " +\
- "-g" + " " +\
- pki_group + " " +\
- "-d" + " " +\
- config.PKI_DEPLOYMENT_SOURCE_ROOT + " " +\
- "-s" + " " +\
- config.PKI_DEPLOYMENT_DEFAULT_SHELL + " " +\
- "-c" + " " +\
- config.PKI_DEPLOYMENT_DEFAULT_COMMENT + " " +\
- "-u" + " " +\
- str(config.PKI_DEPLOYMENT_DEFAULT_UID) + " " +\
- "-r" + " " +\
- pki_user + " " +\
- "> /dev/null 2>&1"
- else:
- # No, attempt to create 'pki_user' using a random UID.
- command = "/usr/sbin/useradd" + " " +\
- "-g" + " " +\
- pki_group + " " +\
- "-d" + " " +\
- config.PKI_DEPLOYMENT_SOURCE_ROOT + " " +\
- "-s" + " " +\
- config.PKI_DEPLOYMENT_DEFAULT_SHELL + " " +\
- "-c" + " " +\
- config.PKI_DEPLOYMENT_DEFAULT_COMMENT + " " +\
- pki_user + " " +\
- "> /dev/null 2>&1"
- # Execute this "useradd" command.
- subprocess.call(command, shell=True)
- except subprocess.CalledProcessError as exc:
- config.pki_log.error(log.PKI_SUBPROCESS_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- return
-
- def add_uid_and_gid(self, pki_user, pki_group):
- self.__add_gid(pki_group)
- self.__add_uid(pki_user, pki_group)
- return
-
- def get_uid(self, critical_failure=True):
- try:
- pki_uid = master['pki_uid']
- except KeyError as exc:
- config.pki_log.error(log.PKI_KEYERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return pki_uid
-
- def get_gid(self, critical_failure=True):
- try:
- pki_gid = master['pki_gid']
- except KeyError as exc:
- config.pki_log.error(log.PKI_KEYERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return pki_gid
-
- def set_uid(self, name, critical_failure=True):
- try:
- config.pki_log.debug(log.PKIHELPER_USER_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # id -u <name>
- pki_uid = getpwnam(name)[2]
- master['pki_uid']=pki_uid
- config.pki_log.debug(log.PKIHELPER_UID_2, name, pki_uid,
- extra=config.PKI_INDENTATION_LEVEL_3)
- except KeyError as exc:
- config.pki_log.error(log.PKI_KEYERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return pki_uid
-
- def set_gid(self, name, critical_failure=True):
- try:
- config.pki_log.debug(log.PKIHELPER_GROUP_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # id -g <name>
- pki_gid = getgrnam(name)[2]
- master['pki_gid']=pki_gid
- config.pki_log.debug(log.PKIHELPER_GID_2, name, pki_gid,
- extra=config.PKI_INDENTATION_LEVEL_3)
- except KeyError as exc:
- config.pki_log.error(log.PKI_KEYERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return pki_gid
-
-
-# PKI Deployment Namespace Class
-class namespace:
- # Silently verify that the selected 'pki_instance_name' will
- # NOT produce any namespace collisions
- def collision_detection(self):
- # Run simple checks for pre-existing namespace collisions
- if os.path.exists(master['pki_instance_path']):
- if os.path.exists(master['pki_subsystem_path']):
- # Top-Level PKI base path collision
- config.pki_log.error(
- log.PKIHELPER_NAMESPACE_COLLISION_2,
- master['pki_instance_name'],
- master['pki_instance_path'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- else:
- if os.path.exists(master['pki_target_tomcat_conf_instance_id']):
- # Top-Level "/etc/sysconfig" path collision
- config.pki_log.error(
- log.PKIHELPER_NAMESPACE_COLLISION_2,
- master['pki_instance_name'],
- master['pki_target_tomcat_conf_instance_id'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if os.path.exists(master['pki_cgroup_systemd_service']):
- # Systemd cgroup path collision
- config.pki_log.error(
- log.PKIHELPER_NAMESPACE_COLLISION_2,
- master['pki_instance_name'],
- master['pki_cgroup_systemd_service_path'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if os.path.exists(master['pki_cgroup_cpu_systemd_service']):
- # Systemd cgroup CPU path collision
- config.pki_log.error(
- log.PKIHELPER_NAMESPACE_COLLISION_2,
- master['pki_instance_name'],
- master['pki_cgroup_cpu_systemd_service_path'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if os.path.exists(master['pki_instance_log_path']) and\
- os.path.exists(master['pki_subsystem_log_path']):
- # Top-Level PKI log path collision
- config.pki_log.error(
- log.PKIHELPER_NAMESPACE_COLLISION_2,
- master['pki_instance_name'],
- master['pki_instance_log_path'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if os.path.exists(master['pki_instance_configuration_path']) and\
- os.path.exists(master['pki_subsystem_configuration_path']):
- # Top-Level PKI configuration path collision
- config.pki_log.error(
- log.PKIHELPER_NAMESPACE_COLLISION_2,
- master['pki_instance_name'],
- master['pki_instance_configuration_path'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if os.path.exists(master['pki_instance_registry_path']) and\
- os.path.exists(master['pki_subsystem_registry_path']):
- # Top-Level PKI registry path collision
- config.pki_log.error(
- log.PKIHELPER_NAMESPACE_COLLISION_2,
- master['pki_instance_name'],
- master['pki_instance_registry_path'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Run simple checks for reserved name namespace collisions
- if master['pki_instance_name'] in config.PKI_BASE_RESERVED_NAMES:
- # Top-Level PKI base path reserved name collision
- config.pki_log.error(
- log.PKIHELPER_NAMESPACE_RESERVED_NAME_2,
- master['pki_instance_name'],
- master['pki_instance_path'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # No need to check for reserved name under Top-Level PKI log path
- if master['pki_instance_name'] in config.PKI_CONFIGURATION_RESERVED_NAMES:
- # Top-Level PKI configuration path reserved name collision
- config.pki_log.error(
- log.PKIHELPER_NAMESPACE_RESERVED_NAME_2,
- master['pki_instance_name'],
- master['pki_instance_configuration_path'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if master['pki_subsystem'] in config.PKI_APACHE_SUBSYSTEMS:
- # Top-Level Apache PKI registry path reserved name collision
- if master['pki_instance_name'] in\
- config.PKI_APACHE_REGISTRY_RESERVED_NAMES:
- config.pki_log.error(
- log.PKIHELPER_NAMESPACE_RESERVED_NAME_2,
- master['pki_instance_name'],
- master['pki_instance_registry_path'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- elif master['pki_subsystem'] in config.PKI_TOMCAT_SUBSYSTEMS:
- # Top-Level Tomcat PKI registry path reserved name collision
- if master['pki_instance_name'] in\
- config.PKI_TOMCAT_REGISTRY_RESERVED_NAMES:
- config.pki_log.error(
- log.PKIHELPER_NAMESPACE_RESERVED_NAME_2,
- master['pki_instance_name'],
- master['pki_instance_registry_path'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
-
-
-# PKI Deployment Configuration File Class
-class configuration_file:
- def log_configuration_url(self):
- # NOTE: This is the one and only parameter containing a sensitive
- # parameter that may be stored in a log file.
- config.pki_log.info(log.PKI_CONFIGURATION_WIZARD_URL_1,
- master['pki_configuration_url'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- config.pki_log.info(log.PKI_CONFIGURATION_WIZARD_RESTART_1,
- master['pki_registry_initscript_command'],
- extra=config.PKI_INDENTATION_LEVEL_2)
-
- def display_configuration_url(self):
- # NOTE: This is the one and only parameter containing a sensitive
- # parameter that may be displayed to the screen.
- print log.PKI_CONFIGURATION_URL_1 % master['pki_configuration_url']
- print
- print log.PKI_CONFIGURATION_RESTART_1 %\
- master['pki_registry_initscript_command']
- print
-
- def verify_sensitive_data(self):
- # Silently verify the existence of 'sensitive' data
- if master['pki_subsystem'] in config.PKI_TOMCAT_SUBSYSTEMS:
- # Verify existence of Directory Server Password (ALWAYS)
- if not master.has_key('pki_ds_password') or\
- not len(master['pki_ds_password']):
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_ds_password",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Verify existence of Admin Password (except for Clones)
- if not config.str2bool(master['pki_clone']):
- if not master.has_key('pki_admin_password') or\
- not len(master['pki_admin_password']):
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_admin_password",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # If required, verify existence of Backup Password
- if config.str2bool(master['pki_backup_keys']):
- if not master.has_key('pki_backup_password') or\
- not len(master['pki_backup_password']):
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_backup_password",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Verify existence of Client Pin for NSS client security databases
- if not master.has_key('pki_client_database_password') or\
- not len(master['pki_client_database_password']):
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CLIENT_DATABASE_PASSWORD_2,
- "pki_client_database_password",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Verify existence of Client PKCS #12 Password for Admin Cert
- if not master.has_key('pki_client_pkcs12_password') or\
- not len(master['pki_client_pkcs12_password']):
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_client_pkcs12_password",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Verify existence of PKCS #12 Password (ONLY for Clones)
- if config.str2bool(master['pki_clone']):
- if not master.has_key('pki_clone_pkcs12_password') or\
- not len(master['pki_clone_pkcs12_password']):
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_clone_pkcs12_password",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Verify existence of Security Domain Password File
- # (ONLY for Clones, KRA, OCSP, TKS, or Subordinate CA)
- if config.str2bool(master['pki_clone']) or\
- not master['pki_subsystem'] == "CA" or\
- config.str2bool(master['pki_subordinate']):
- if not master.has_key('pki_security_domain_password') or\
- not len(master['pki_security_domain_password']):
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_security_domain_password",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # If required, verify existence of Token Password
- if not master['pki_token_name'] == "internal":
- if not master.has_key('pki_token_password') or\
- not len(master['pki_token_password']):
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_token_password",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- return
-
- def verify_mutually_exclusive_data(self):
- # Silently verify the existence of 'mutually exclusive' data
- if master['pki_subsystem'] in config.PKI_TOMCAT_SUBSYSTEMS:
- if master['pki_subsystem'] == "CA":
- if config.str2bool(master['pki_clone']) and\
- config.str2bool(master['pki_external']) and\
- config.str2bool(master['pki_subordinate']):
- config.pki_log.error(
- log.PKIHELPER_MUTUALLY_EXCLUSIVE_CLONE_EXTERNAL_SUB_CA,
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- elif config.str2bool(master['pki_clone']) and\
- config.str2bool(master['pki_external']):
- config.pki_log.error(
- log.PKIHELPER_MUTUALLY_EXCLUSIVE_CLONE_EXTERNAL_CA,
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- elif config.str2bool(master['pki_clone']) and\
- config.str2bool(master['pki_subordinate']):
- config.pki_log.error(
- log.PKIHELPER_MUTUALLY_EXCLUSIVE_CLONE_SUB_CA,
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- elif config.str2bool(master['pki_external']) and\
- config.str2bool(master['pki_subordinate']):
- config.pki_log.error(
- log.PKIHELPER_MUTUALLY_EXCLUSIVE_EXTERNAL_SUB_CA,
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
-
- def verify_predefined_configuration_file_data(self):
- # Silently verify the existence of any required 'predefined' data
- #
- # FUTURE: As much as is possible, alter this routine to verify
- # ALL name/value pairs for the requested configuration
- # scenario. This should include checking for the
- # "existence" of ALL required "name" parameters, as well as
- # the "existence", "type" (e. g. - string, boolean, number,
- # etc.), and "correctness" (e. g. - file, directory, boolean
- # 'True' or 'False', etc.) of ALL required "value" parameters.
- #
- if master['pki_subsystem'] in config.PKI_TOMCAT_SUBSYSTEMS:
- if config.str2bool(master['pki_clone']):
- # Verify existence of clone parameters
- if not master.has_key('pki_ds_base_dn') or\
- not len(master['pki_ds_base_dn']):
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_ds_base_dn",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if not master.has_key('pki_ds_ldap_port') or\
- not len(master['pki_ds_ldap_port']):
- # FUTURE: Check for unused port value
- # (e. g. - must be different from master if the
- # master is located on the same host)
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_ds_ldap_port",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if not master.has_key('pki_ds_ldaps_port') or\
- not len(master['pki_ds_ldaps_port']):
- # FUTURE: Check for unused port value
- # (e. g. - must be different from master if the
- # master is located on the same host)
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_ds_ldaps_port",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # NOTE: Although this will be checked prior to getting to
- # this method, this clone's 'pki_instance_name' MUST
- # be different from the master's 'pki_instance_name'
- # IF AND ONLY IF the master and clone are located on
- # the same host!
- if not master.has_key('pki_ajp_port') or\
- not len(master['pki_ajp_port']):
- # FUTURE: Check for unused port value
- # (e. g. - must be different from master if the
- # master is located on the same host)
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_ajp_port",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if not master.has_key('pki_http_port') or\
- not len(master['pki_http_port']):
- # FUTURE: Check for unused port value
- # (e. g. - must be different from master if the
- # master is located on the same host)
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_http_port",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if not master.has_key('pki_https_port') or\
- not len(master['pki_https_port']):
- # FUTURE: Check for unused port value
- # (e. g. - must be different from master if the
- # master is located on the same host)
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_https_port",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if not master.has_key('pki_tomcat_server_port') or\
- not len(master['pki_tomcat_server_port']):
- # FUTURE: Check for unused port value
- # (e. g. - must be different from master if the
- # master is located on the same host)
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_tomcat_server_port",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if not master.has_key('pki_clone_pkcs12_path') or\
- not len(master['pki_clone_pkcs12_path']):
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_clone_pkcs12_path",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- elif not os.path.isfile(master['pki_clone_pkcs12_path']):
- config.pki_log.error(
- log.PKI_FILE_ALREADY_EXISTS_NOT_A_FILE_1,
- master['pki_clone_pkcs12_path'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if not master.has_key('pki_clone_replication_security') or\
- not len(master['pki_clone_replication_security']):
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_clone_replication_security",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if not master.has_key('pki_clone_uri') or\
- not len(master['pki_clone_uri']):
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_clone_uri",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- elif master['pki_subsystem'] == "CA" and\
- config.str2bool(master['pki_external']):
- if not master.has_key('pki_external_step_two') or\
- not len(master['pki_external_step_two']):
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_external_step_two",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if not config.str2bool(master['pki_external_step_two']):
- # External CA (Step 1)
- if not master.has_key('pki_external_csr_path') or\
- not len(master['pki_external_csr_path']):
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_external_csr_path",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- elif os.path.exists(master['pki_external_csr_path']) and\
- not os.path.isfile(master['pki_external_csr_path']):
- config.pki_log.error(
- log.PKI_FILE_ALREADY_EXISTS_NOT_A_FILE_1,
- master['pki_external_csr_path'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- else:
- # External CA (Step 2)
- if not master.has_key('pki_external_ca_cert_chain_path') or\
- not len(master['pki_external_ca_cert_chain_path']):
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_external_ca_cert_chain_path",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- elif os.path.exists(
- master['pki_external_ca_cert_chain_path']) and\
- not os.path.isfile(
- master['pki_external_ca_cert_chain_path']):
- config.pki_log.error(
- log.PKI_FILE_ALREADY_EXISTS_NOT_A_FILE_1,
- master['pki_external_ca_cert_chain_path'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if not master.has_key('pki_external_ca_cert_path') or\
- not len(master['pki_external_ca_cert_path']):
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2,
- "pki_external_ca_cert_path",
- master['pki_user_deployment_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- elif os.path.exists(master['pki_external_ca_cert_path']) and\
- not os.path.isfile(
- master['pki_external_ca_cert_path']):
- config.pki_log.error(
- log.PKI_FILE_ALREADY_EXISTS_NOT_A_FILE_1,
- master['pki_external_ca_cert_path'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- return
-
- def populate_non_default_ports(self):
- if master['pki_http_port'] != \
- str(config.PKI_DEPLOYMENT_DEFAULT_TOMCAT_HTTP_PORT):
- ports.append(master['pki_http_port'])
- if master['pki_https_port'] != \
- str(config.PKI_DEPLOYMENT_DEFAULT_TOMCAT_HTTPS_PORT):
- ports.append(master['pki_https_port'])
- if master['pki_tomcat_server_port'] != \
- str(config.PKI_DEPLOYMENT_DEFAULT_TOMCAT_SERVER_PORT):
- ports.append(master['pki_tomcat_server_port'])
- if master['pki_ajp_port'] != \
- str(config.PKI_DEPLOYMENT_DEFAULT_TOMCAT_AJP_PORT):
- ports.append(master['pki_ajp_port'])
- return
-
- def verify_selinux_ports(self):
- # Determine which ports still need to be labelled, and if any are
- # incorrectly labelled
- if len(ports) == 0:
- return
-
- if not bool(selinux.is_selinux_enabled()):
- config.pki_log.error(
- log.PKIHELPER_SELINUX_DISABLED,
- extra=config.PKI_INDENTATION_LEVEL_2)
- return
-
- portrecs = seobject.portRecords().get_all()
- portlist = ports[:]
- for port in portlist:
- context = ""
- for i in portrecs:
- if portrecs[i][0] == "unreserved_port_t" or \
- portrecs[i][0] == "reserved_port_t" or \
- i[2] != "tcp":
- continue
- if i[0] <= int(port) and int(port) <= i[1]:
- context = portrecs[i][0]
- break
- if context == "":
- # port has no current context
- # leave it in list of ports to set
- continue
- elif context == config.PKI_PORT_SELINUX_CONTEXT:
- # port is already set correctly
- # remove from list of ports to set
- ports.remove(port)
- else:
- config.pki_log.error(
- log.PKIHELPER_INVALID_SELINUX_CONTEXT_FOR_PORT,
- port, context,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- return
-
- def verify_command_matches_configuration_file(self):
- # Silently verify that the command-line parameters match the values
- # that are present in the corresponding configuration file
- if master['pki_deployment_executable'] == 'pkidestroy':
- if master['pki_deployed_instance_name'] !=\
- master['pki_instance_name']:
- config.pki_log.error(
- log.PKIHELPER_COMMAND_LINE_PARAMETER_MISMATCH_2,
- master['pki_deployed_instance_name'],
- master['pki_instance_name'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- return
-
-
-
-# PKI Deployment XML File Class
-#class xml_file:
-# def remove_filter_section_from_web_xml(self,
-# web_xml_source,
-# web_xml_target):
-# config.pki_log.info(log.PKIHELPER_REMOVE_FILTER_SECTION_1,
-# master['pki_target_subsystem_web_xml'],
-# extra=config.PKI_INDENTATION_LEVEL_2)
-# begin_filters_section = False
-# begin_servlet_section = False
-# FILE = open(web_xml_target, "w")
-# for line in fileinput.FileInput(web_xml_source):
-# if not begin_filters_section:
-# # Read and write lines until first "<filter>" tag
-# if line.count("<filter>") >= 1:
-# # Mark filters section
-# begin_filters_section = True
-# else:
-# FILE.write(line)
-# elif not begin_servlet_section:
-# # Skip lines until first "<servlet>" tag
-# if line.count("<servlet>") >= 1:
-# # Mark servlets section and write out the opening tag
-# begin_servlet_section = True
-# FILE.write(line)
-# else:
-# continue
-# else:
-# # Read and write lines all lines after "<servlet>" tag
-# FILE.write(line)
-# FILE.close()
-
-
-# PKI Deployment Instance Class
-class instance:
- def apache_instance_subsystems(self):
- rv = 0
- try:
- # count number of PKI subsystems present
- # within the specified Apache instance
- for subsystem in config.PKI_APACHE_SUBSYSTEMS:
- path = master['pki_instance_path'] + "/" + subsystem.lower()
- if os.path.exists(path) and os.path.isdir(path):
- rv = rv + 1
- config.pki_log.debug(log.PKIHELPER_APACHE_INSTANCE_SUBSYSTEMS_2,
- master['pki_instance_path'],
- rv, extra=config.PKI_INDENTATION_LEVEL_2)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- return rv
-
- def apache_instances(self):
- rv = 0
- try:
- # Since ALL directories under the top-level PKI 'apache' registry
- # directory SHOULD represent PKI Apache instances, and there
- # shouldn't be any stray files or symbolic links at this level,
- # simply count the number of PKI 'apache' instances (directories)
- # present within the PKI 'apache' registry directory
- for instance in\
- os.listdir(master['pki_instance_type_registry_path']):
- if os.path.isdir(
- os.path.join(master['pki_instance_type_registry_path'],
- instance)) and not\
- os.path.islink(
- os.path.join(master['pki_instance_type_registry_path'],
- instance)):
- rv = rv + 1
- config.pki_log.debug(log.PKIHELPER_APACHE_INSTANCES_2,
- master['pki_instance_type_registry_path'],
- rv,
- extra=config.PKI_INDENTATION_LEVEL_2)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- return rv
-
- def pki_instance_subsystems(self):
- rv = 0
- try:
- # Since ALL directories within the top-level PKI infrastructure
- # SHOULD represent PKI instances, look for all possible
- # PKI instances within the top-level PKI infrastructure
- for instance in os.listdir(master['pki_path']):
- if os.path.isdir(os.path.join(master['pki_path'],instance))\
- and not\
- os.path.islink(os.path.join(master['pki_path'],instance)):
- dir = os.path.join(master['pki_path'],instance)
- # Since ANY directory within this PKI instance COULD
- # be a PKI subsystem, look for all possible
- # PKI subsystems within this PKI instance
- for name in os.listdir(dir):
- if os.path.isdir(os.path.join(dir,name)) and\
- not os.path.islink(os.path.join(dir,name)):
- if name.upper() in config.PKI_SUBSYSTEMS:
- rv = rv + 1
- config.pki_log.debug(log.PKIHELPER_PKI_INSTANCE_SUBSYSTEMS_2,
- master['pki_instance_path'], rv,
- extra=config.PKI_INDENTATION_LEVEL_2)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- return rv
-
- def tomcat_instance_subsystems(self):
- # Return list of PKI subsystems in the specified tomcat instance
- rv = []
- try:
- for subsystem in config.PKI_TOMCAT_SUBSYSTEMS:
- path = master['pki_instance_path'] + "/" + subsystem.lower()
- if os.path.exists(path) and os.path.isdir(path):
- rv.append(subsystem)
- except OSErr as e:
- config.pki_log.error(log.PKI_OSERROR_1, str(e),
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- return rv
-
- def tomcat_instances(self):
- rv = 0
- try:
- # Since ALL directories under the top-level PKI 'tomcat' registry
- # directory SHOULD represent PKI Tomcat instances, and there
- # shouldn't be any stray files or symbolic links at this level,
- # simply count the number of PKI 'tomcat' instances (directories)
- # present within the PKI 'tomcat' registry directory
- for instance in\
- os.listdir(master['pki_instance_type_registry_path']):
- if os.path.isdir(
- os.path.join(master['pki_instance_type_registry_path'],
- instance)) and not\
- os.path.islink(
- os.path.join(master['pki_instance_type_registry_path'],
- instance)):
- rv = rv + 1
- config.pki_log.debug(log.PKIHELPER_TOMCAT_INSTANCES_2,
- master['pki_instance_type_registry_path'],
- rv,
- extra=config.PKI_INDENTATION_LEVEL_2)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- return rv
-
- def verify_subsystem_exists(self):
- try:
- if not os.path.exists(master['pki_subsystem_path']):
- config.pki_log.error(log.PKI_SUBSYSTEM_DOES_NOT_EXIST_2,
- master['pki_subsystem'],
- master['pki_instance_name'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
-
- def verify_subsystem_does_not_exist(self):
- try:
- if os.path.exists(master['pki_subsystem_path']):
- config.pki_log.error(log.PKI_SUBSYSTEM_ALREADY_EXISTS_2,
- master['pki_subsystem'],
- master['pki_instance_name'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
-
- def get_instance_status(self):
- self.connection = pki.client.PKIConnection(
- protocol='https',
- hostname=master['pki_hostname'],
- port=master['pki_https_port'],
- subsystem=master['pki_subsystem_type'],
- accept = 'application/xml')
-
- try:
- client = pki.system.SystemStatusClient(self.connection)
- response = client.getStatus()
- config.pki_log.debug(response,
- extra=config.PKI_INDENTATION_LEVEL_3)
-
- root = ET.fromstring(response)
- status = root.findtext("Status")
- return status
- except requests.exceptions.ConnectionError:
- config.pki_log.debug("No connection",
- extra=config.PKI_INDENTATION_LEVEL_3)
- return None
-
- def wait_for_startup(self, timeout):
- start_time = datetime.today()
- status = None
- while status != "running":
- status = self.get_instance_status()
- time.sleep(1);
- stop_time = datetime.today()
- if (stop_time - start_time).total_seconds() >= timeout:
- break
- return status
-
-# PKI Deployment Directory Class
-class directory:
- def create(self, name, uid=None, gid=None,
- perms=config.PKI_DEPLOYMENT_DEFAULT_DIR_PERMISSIONS,
- acls=None, critical_failure=True):
- try:
- if not os.path.exists(name):
- # mkdir -p <name>
- config.pki_log.info(log.PKIHELPER_MKDIR_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- os.makedirs(name)
- # chmod <perms> <name>
- config.pki_log.debug(log.PKIHELPER_CHMOD_2, perms, name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chmod(name, perms)
- # chown <uid>:<gid> <name>
- if uid == None:
- uid = identity.get_uid()
- if gid == None:
- gid = identity.get_gid()
- config.pki_log.debug(log.PKIHELPER_CHOWN_3,
- uid, gid, name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chown(name, uid, gid)
- # Store record in installation manifest
- record = manifest.record()
- record.name = name
- record.type = manifest.RECORD_TYPE_DIRECTORY
- record.user = master['pki_user']
- record.group = master['pki_group']
- record.uid = uid
- record.gid = gid
- record.permissions = perms
- record.acls = acls
- manifest.database.append(record)
- elif not os.path.isdir(name):
- config.pki_log.error(
- log.PKI_DIRECTORY_ALREADY_EXISTS_NOT_A_DIRECTORY_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except OSError as exc:
- if exc.errno == errno.EEXIST:
- pass
- else:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def modify(self, name, uid=None, gid=None,
- perms=config.PKI_DEPLOYMENT_DEFAULT_DIR_PERMISSIONS,
- acls=None, silent=False, critical_failure=True):
- try:
- if os.path.exists(name):
- if not os.path.isdir(name):
- config.pki_log.error(
- log.PKI_DIRECTORY_ALREADY_EXISTS_NOT_A_DIRECTORY_1,
- name, extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- # Always re-process each directory whether it needs it or not
- if not silent:
- config.pki_log.info(log.PKIHELPER_MODIFY_DIR_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # chmod <perms> <name>
- if not silent:
- config.pki_log.debug(log.PKIHELPER_CHMOD_2, perms, name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chmod(name, perms)
- # chown <uid>:<gid> <name>
- if uid == None:
- uid = identity.get_uid()
- if gid == None:
- gid = identity.get_gid()
- if not silent:
- config.pki_log.debug(log.PKIHELPER_CHOWN_3,
- uid, gid, name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chown(name, uid, gid)
- # Store record in installation manifest
- if not silent:
- record = manifest.record()
- record.name = name
- record.type = manifest.RECORD_TYPE_DIRECTORY
- record.user = master['pki_user']
- record.group = master['pki_group']
- record.uid = uid
- record.gid = gid
- record.permissions = perms
- record.acls = acls
- manifest.database.append(record)
- else:
- config.pki_log.error(
- log.PKI_DIRECTORY_MISSING_OR_NOT_A_DIRECTORY_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def delete(self, name, recursive_flag=True, critical_failure=True):
- try:
- if not os.path.exists(name) or not os.path.isdir(name):
- # Simply issue a warning and continue
- config.pki_log.warning(
- log.PKI_DIRECTORY_MISSING_OR_NOT_A_DIRECTORY_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- else:
- if recursive_flag == True:
- # rm -rf <name>
- config.pki_log.info(log.PKIHELPER_RM_RF_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- shutil.rmtree(name)
- else:
- # rmdir <name>
- config.pki_log.info(log.PKIHELPER_RMDIR_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- os.rmdir(name)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def exists(self, name):
- try:
- if not os.path.exists(name) or not os.path.isdir(name):
- return False
- else:
- return True
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
-
- def is_empty(self, name):
- try:
- if not os.listdir(name):
- config.pki_log.debug(log.PKIHELPER_DIRECTORY_IS_EMPTY_1,
- name, extra=config.PKI_INDENTATION_LEVEL_2)
- return True
- else:
- config.pki_log.debug(log.PKIHELPER_DIRECTORY_IS_NOT_EMPTY_1,
- name, extra=config.PKI_INDENTATION_LEVEL_2)
- return False
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
-
- def set_mode(self, name, uid=None, gid=None,
- dir_perms=config.PKI_DEPLOYMENT_DEFAULT_DIR_PERMISSIONS,
- file_perms=config.PKI_DEPLOYMENT_DEFAULT_FILE_PERMISSIONS,
- symlink_perms=\
- config.PKI_DEPLOYMENT_DEFAULT_SYMLINK_PERMISSIONS,
- dir_acls=None, file_acls=None, symlink_acls=None,
- recursive_flag=True, critical_failure=True):
- try:
- if not os.path.exists(name) or not os.path.isdir(name):
- config.pki_log.error(
- log.PKI_DIRECTORY_MISSING_OR_NOT_A_DIRECTORY_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- else:
- config.pki_log.info(
- log.PKIHELPER_SET_MODE_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if uid == None:
- uid = identity.get_uid()
- if gid == None:
- gid = identity.get_gid()
- if recursive_flag == True:
- for root, dirs, files in os.walk(name):
- for name in files:
- entity = os.path.join(root, name)
- if not os.path.islink(entity):
- file = entity
- config.pki_log.debug(
- log.PKIHELPER_IS_A_FILE_1, file,
- extra=config.PKI_INDENTATION_LEVEL_3)
- # chmod <file_perms> <name>
- config.pki_log.debug(log.PKIHELPER_CHMOD_2,
- file_perms, file,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chmod(file, file_perms)
- # chown <uid>:<gid> <name>
- config.pki_log.debug(log.PKIHELPER_CHOWN_3,
- uid, gid, file,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chown(file, uid, gid)
- # Store record in installation manifest
- record = manifest.record()
- record.name = name
- record.type = manifest.RECORD_TYPE_FILE
- record.user = master['pki_user']
- record.group = master['pki_group']
- record.uid = uid
- record.gid = gid
- record.permissions = file_perms
- record.acls = file_acls
- manifest.database.append(record)
- else:
- symlink = entity
- config.pki_log.debug(
- log.PKIHELPER_IS_A_SYMLINK_1, symlink,
- extra=config.PKI_INDENTATION_LEVEL_3)
- # REMINDER: Due to POSIX compliance, 'lchmod'
- # is NEVER implemented on Linux
- # systems since 'chmod' CANNOT be
- # run directly against symbolic
- # links!
- # chown -h <uid>:<gid> <symlink>
- config.pki_log.debug(log.PKIHELPER_CHOWN_H_3,
- uid, gid, symlink,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.lchown(symlink, uid, gid)
- # Store record in installation manifest
- record = manifest.record()
- record.name = name
- record.type = manifest.RECORD_TYPE_SYMLINK
- record.user = master['pki_user']
- record.group = master['pki_group']
- record.uid = uid
- record.gid = gid
- record.permissions = symlink_perms
- record.acls = symlink_acls
- manifest.database.append(record)
- for name in dirs:
- dir = os.path.join(root, name)
- config.pki_log.debug(
- log.PKIHELPER_IS_A_DIRECTORY_1, dir,
- extra=config.PKI_INDENTATION_LEVEL_3)
- # chmod <dir_perms> <name>
- config.pki_log.debug(log.PKIHELPER_CHMOD_2,
- dir_perms, dir,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chmod(dir, dir_perms)
- # chown <uid>:<gid> <name>
- config.pki_log.debug(log.PKIHELPER_CHOWN_3,
- uid, gid, dir,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chown(dir, uid, gid)
- # Store record in installation manifest
- record = manifest.record()
- record.name = name
- record.type = manifest.RECORD_TYPE_DIRECTORY
- record.user = master['pki_user']
- record.group = master['pki_group']
- record.uid = uid
- record.gid = gid
- record.permissions = dir_perms
- record.acls = dir_acls
- manifest.database.append(record)
- else:
- config.pki_log.debug(
- log.PKIHELPER_IS_A_DIRECTORY_1, name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- name = os.path.join(root, name)
- # chmod <dir_perms> <name>
- config.pki_log.debug(log.PKIHELPER_CHMOD_2,
- dir_perms, name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chmod(name, dir_perms)
- # chown <uid>:<gid> <name>
- config.pki_log.debug(log.PKIHELPER_CHOWN_3,
- uid, gid, name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chown(name, uid, gid)
- # Store record in installation manifest
- record = manifest.record()
- record.name = name
- record.type = manifest.RECORD_TYPE_DIRECTORY
- record.user = master['pki_user']
- record.group = master['pki_group']
- record.uid = uid
- record.gid = gid
- record.permissions = dir_perms
- record.acls = dir_acls
- manifest.database.append(record)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
-
- def copy(self, old_name, new_name, uid=None, gid=None,
- dir_perms=config.PKI_DEPLOYMENT_DEFAULT_DIR_PERMISSIONS,
- file_perms=config.PKI_DEPLOYMENT_DEFAULT_FILE_PERMISSIONS,
- symlink_perms=config.PKI_DEPLOYMENT_DEFAULT_SYMLINK_PERMISSIONS,
- dir_acls=None, file_acls=None, symlink_acls=None,
- recursive_flag=True, overwrite_flag=False, critical_failure=True):
- try:
- if not os.path.exists(old_name) or not os.path.isdir(old_name):
- config.pki_log.error(
- log.PKI_DIRECTORY_MISSING_OR_NOT_A_DIRECTORY_1, old_name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- else:
- if os.path.exists(new_name):
- if not overwrite_flag:
- config.pki_log.error(
- log.PKI_DIRECTORY_ALREADY_EXISTS_1, new_name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if recursive_flag == True:
- # cp -rp <old_name> <new_name>
- config.pki_log.info(log.PKIHELPER_CP_RP_2,
- old_name, new_name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # Due to a limitation in the 'shutil.copytree()'
- # implementation which requires that
- # 'The destination directory must not already exist.',
- # an OSError exception is always thrown due to the
- # implementation's unchecked call to 'os.makedirs(dst)'.
- # Consequently, a 'patched' local copy of this routine has
- # been included in this file with the appropriate fix.
- pki_copytree(old_name, new_name)
- else:
- # cp -p <old_name> <new_name>
- config.pki_log.info(log.PKIHELPER_CP_P_2,
- old_name, new_name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- shutil.copy2(old_name, new_name)
- # set ownerships, permissions, and acls
- # of newly created top-level directory
- self.modify(new_name, uid, gid, dir_perms, dir_acls,
- True, critical_failure)
- # set ownerships, permissions, and acls
- # of contents of newly created top-level directory
- self.set_mode(new_name, uid, gid,
- dir_perms, file_perms, symlink_perms,
- dir_acls, file_acls, symlink_acls,
- recursive_flag, critical_failure)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except shutil.Error as exc:
- config.pki_log.error(log.PKI_SHUTIL_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
-
-# PKI Deployment File Class (also used for executables)
-class file:
- def create(self, name, uid=None, gid=None,
- perms=config.PKI_DEPLOYMENT_DEFAULT_FILE_PERMISSIONS,
- acls=None, critical_failure=True):
- try:
- if not os.path.exists(name):
- # touch <name>
- config.pki_log.info(log.PKIHELPER_TOUCH_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- open(name, "w").close()
- # chmod <perms> <name>
- config.pki_log.debug(log.PKIHELPER_CHMOD_2, perms, name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chmod(name, perms)
- # chown <uid>:<gid> <name>
- if uid == None:
- uid = identity.get_uid()
- if gid == None:
- gid = identity.get_gid()
- config.pki_log.debug(log.PKIHELPER_CHOWN_3,
- uid, gid, name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chown(name, uid, gid)
- # Store record in installation manifest
- record = manifest.record()
- record.name = name
- record.type = manifest.RECORD_TYPE_FILE
- record.user = master['pki_user']
- record.group = master['pki_group']
- record.uid = uid
- record.gid = gid
- record.permissions = perms
- record.acls = acls
- manifest.database.append(record)
- elif not os.path.isfile(name):
- config.pki_log.error(
- log.PKI_FILE_ALREADY_EXISTS_NOT_A_FILE_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except OSError as exc:
- if exc.errno == errno.EEXIST:
- pass
- else:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def modify(self, name, uid=None, gid=None,
- perms=config.PKI_DEPLOYMENT_DEFAULT_FILE_PERMISSIONS,
- acls=None, silent=False, critical_failure=True):
- try:
- if os.path.exists(name):
- if not os.path.isfile(name):
- config.pki_log.error(
- log.PKI_FILE_ALREADY_EXISTS_NOT_A_FILE_1,
- name, extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- # Always re-process each file whether it needs it or not
- if not silent:
- config.pki_log.info(log.PKIHELPER_MODIFY_FILE_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # chmod <perms> <name>
- if not silent:
- config.pki_log.debug(log.PKIHELPER_CHMOD_2, perms, name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chmod(name, perms)
- # chown <uid>:<gid> <name>
- if uid == None:
- uid = identity.get_uid()
- if gid == None:
- gid = identity.get_gid()
- if not silent:
- config.pki_log.debug(log.PKIHELPER_CHOWN_3,
- uid, gid, name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chown(name, uid, gid)
- # Store record in installation manifest
- if not silent:
- record = manifest.record()
- record.name = name
- record.type = manifest.RECORD_TYPE_FILE
- record.user = master['pki_user']
- record.group = master['pki_group']
- record.uid = uid
- record.gid = gid
- record.permissions = perms
- record.acls = acls
- manifest.database.append(record)
- else:
- config.pki_log.error(
- log.PKI_FILE_MISSING_OR_NOT_A_FILE_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def delete(self, name, critical_failure=True):
- try:
- if not os.path.exists(name) or not os.path.isfile(name):
- # Simply issue a warning and continue
- config.pki_log.warning(
- log.PKI_FILE_MISSING_OR_NOT_A_FILE_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- else:
- # rm -f <name>
- config.pki_log.info(log.PKIHELPER_RM_F_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- os.remove(name)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def exists(self, name):
- try:
- if not os.path.exists(name) or not os.path.isfile(name):
- return False
- else:
- return True
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
-
- def copy(self, old_name, new_name, uid=None, gid=None,
- perms=config.PKI_DEPLOYMENT_DEFAULT_FILE_PERMISSIONS, acls=None,
- overwrite_flag=False, critical_failure=True):
- try:
- if not os.path.exists(old_name) or not os.path.isfile(old_name):
- config.pki_log.error(
- log.PKI_FILE_MISSING_OR_NOT_A_FILE_1, old_name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- else:
- if os.path.exists(new_name):
- if not overwrite_flag:
- config.pki_log.error(
- log.PKI_FILE_ALREADY_EXISTS_1, new_name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # cp -p <old_name> <new_name>
- config.pki_log.info(log.PKIHELPER_CP_P_2,
- old_name, new_name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- shutil.copy2(old_name, new_name)
- if uid == None:
- uid = identity.get_uid()
- if gid == None:
- gid = identity.get_gid()
- # chmod <perms> <new_name>
- config.pki_log.debug(log.PKIHELPER_CHMOD_2,
- perms, new_name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chmod(new_name, perms)
- # chown <uid>:<gid> <new_name>
- config.pki_log.debug(log.PKIHELPER_CHOWN_3,
- uid, gid, new_name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chown(new_name, uid, gid)
- # Store record in installation manifest
- record = manifest.record()
- record.name = new_name
- record.type = manifest.RECORD_TYPE_FILE
- record.user = master['pki_user']
- record.group = master['pki_group']
- record.uid = uid
- record.gid = gid
- record.permissions = perms
- record.acls = acls
- manifest.database.append(record)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except shutil.Error as exc:
- config.pki_log.error(log.PKI_SHUTIL_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def apply_slot_substitution(
- self, name, uid=None, gid=None,
- perms=config.PKI_DEPLOYMENT_DEFAULT_FILE_PERMISSIONS,
- acls=None, critical_failure=True):
- try:
- if not os.path.exists(name) or not os.path.isfile(name):
- config.pki_log.error(
- log.PKI_FILE_MISSING_OR_NOT_A_FILE_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # applying in-place slot substitutions on <name>
- config.pki_log.info(log.PKIHELPER_APPLY_SLOT_SUBSTITUTION_1,
- name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- for line in fileinput.FileInput(name, inplace=1):
- for slot in slots:
- if slot != '__name__' and slots[slot] in line:
- config.pki_log.debug(
- log.PKIHELPER_SLOT_SUBSTITUTION_2,
- slots[slot], master[slot],
- extra=config.PKI_INDENTATION_LEVEL_3)
- line=line.replace(slots[slot],master[slot])
- sys.stdout.write(line)
- if uid == None:
- uid = identity.get_uid()
- if gid == None:
- gid = identity.get_gid()
- # chmod <perms> <name>
- config.pki_log.debug(log.PKIHELPER_CHMOD_2,
- perms, name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chmod(name, perms)
- # chown <uid>:<gid> <name>
- config.pki_log.debug(log.PKIHELPER_CHOWN_3,
- uid, gid, name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chown(name, uid, gid)
- # Store record in installation manifest
- record = manifest.record()
- record.name = name
- record.type = manifest.RECORD_TYPE_FILE
- record.user = master['pki_user']
- record.group = master['pki_group']
- record.uid = uid
- record.gid = gid
- record.permissions = perms
- record.acls = acls
- manifest.database.append(record)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except shutil.Error as exc:
- config.pki_log.error(log.PKI_SHUTIL_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def copy_with_slot_substitution(
- self, old_name, new_name, uid=None, gid=None,
- perms=config.PKI_DEPLOYMENT_DEFAULT_FILE_PERMISSIONS,
- acls=None, overwrite_flag=False,
- critical_failure=True):
- try:
- if not os.path.exists(old_name) or not os.path.isfile(old_name):
- config.pki_log.error(
- log.PKI_FILE_MISSING_OR_NOT_A_FILE_1, old_name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- else:
- if os.path.exists(new_name):
- if not overwrite_flag:
- config.pki_log.error(
- log.PKI_FILE_ALREADY_EXISTS_1, new_name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # copy <old_name> to <new_name> with slot substitutions
- config.pki_log.info(log.PKIHELPER_COPY_WITH_SLOT_SUBSTITUTION_2,
- old_name, new_name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- FILE = open(new_name, "w")
- for line in fileinput.FileInput(old_name):
- for slot in slots:
- if slot != '__name__' and slots[slot] in line:
- config.pki_log.debug(
- log.PKIHELPER_SLOT_SUBSTITUTION_2,
- slots[slot], master[slot],
- extra=config.PKI_INDENTATION_LEVEL_3)
- line=line.replace(slots[slot],master[slot])
- FILE.write(line)
- FILE.close()
- if uid == None:
- uid = identity.get_uid()
- if gid == None:
- gid = identity.get_gid()
- # chmod <perms> <new_name>
- config.pki_log.debug(log.PKIHELPER_CHMOD_2,
- perms, new_name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chmod(new_name, perms)
- # chown <uid>:<gid> <new_name>
- config.pki_log.debug(log.PKIHELPER_CHOWN_3,
- uid, gid, new_name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chown(new_name, uid, gid)
- # Store record in installation manifest
- record = manifest.record()
- record.name = new_name
- record.type = manifest.RECORD_TYPE_FILE
- record.user = master['pki_user']
- record.group = master['pki_group']
- record.uid = uid
- record.gid = gid
- record.permissions = perms
- record.acls = acls
- manifest.database.append(record)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except shutil.Error as exc:
- config.pki_log.error(log.PKI_SHUTIL_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def generate_noise_file(self, name, bytes, uid=None, gid=None,
- perms=config.PKI_DEPLOYMENT_DEFAULT_FILE_PERMISSIONS,
- acls=None, critical_failure=True):
- try:
- if not os.path.exists(name):
- # generating noise file called <name> and
- # filling it with <bytes> random bytes
- config.pki_log.info(log.PKIHELPER_NOISE_FILE_2, name, bytes,
- extra=config.PKI_INDENTATION_LEVEL_2)
- open(name, "w").close()
- FILE = open(name, "w")
- noise = ''.join(random.choice(string.ascii_letters +\
- string.digits) for x in range(bytes))
- FILE.write(noise)
- FILE.close()
- # chmod <perms> <name>
- config.pki_log.debug(log.PKIHELPER_CHMOD_2, perms, name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chmod(name, perms)
- # chown <uid>:<gid> <name>
- if uid == None:
- uid = identity.get_uid()
- if gid == None:
- gid = identity.get_gid()
- config.pki_log.debug(log.PKIHELPER_CHOWN_3,
- uid, gid, name,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.chown(name, uid, gid)
- # Store record in installation manifest
- record = manifest.record()
- record.name = name
- record.type = manifest.RECORD_TYPE_FILE
- record.user = master['pki_user']
- record.group = master['pki_group']
- record.uid = uid
- record.gid = gid
- record.permissions = perms
- record.acls = acls
- manifest.database.append(record)
- elif not os.path.isfile(name):
- config.pki_log.error(
- log.PKI_FILE_ALREADY_EXISTS_NOT_A_FILE_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except OSError as exc:
- if exc.errno == errno.EEXIST:
- pass
- else:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
-
-# PKI Deployment Symbolic Link Class
-class symlink:
- def create(self, name, link, uid=None, gid=None,
- acls=None, allow_dangling_symlink=False, critical_failure=True):
- try:
- if not os.path.exists(link):
- if not os.path.exists(name):
- config.pki_log.warning(
- log.PKIHELPER_DANGLING_SYMLINK_2, link, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if not allow_dangling_symlink:
- sys.exit(1)
- # ln -s <name> <link>
- config.pki_log.info(log.PKIHELPER_LINK_S_2, name, link,
- extra=config.PKI_INDENTATION_LEVEL_2)
- os.symlink(name, link)
- # REMINDER: Due to POSIX compliance, 'lchmod' is NEVER
- # implemented on Linux systems since 'chmod'
- # CANNOT be run directly against symbolic links!
- # chown -h <uid>:<gid> <link>
- if uid == None:
- uid = identity.get_uid()
- if gid == None:
- gid = identity.get_gid()
- config.pki_log.debug(log.PKIHELPER_CHOWN_H_3,
- uid, gid, link,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.lchown(link, uid, gid)
- # Store record in installation manifest
- record = manifest.record()
- record.name = link
- record.type = manifest.RECORD_TYPE_SYMLINK
- record.user = master['pki_user']
- record.group = master['pki_group']
- record.uid = uid
- record.gid = gid
- record.permissions =\
- config.PKI_DEPLOYMENT_DEFAULT_SYMLINK_PERMISSIONS
- record.acls = acls
- manifest.database.append(record)
- elif not os.path.islink(link):
- config.pki_log.error(
- log.PKI_SYMLINK_ALREADY_EXISTS_NOT_A_SYMLINK_1, link,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except OSError as exc:
- if exc.errno == errno.EEXIST:
- pass
- else:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def modify(self, link, uid=None, gid=None,
- acls=None, silent=False, critical_failure=True):
- try:
- if os.path.exists(link):
- if not os.path.islink(link):
- config.pki_log.error(
- log.PKI_SYMLINK_ALREADY_EXISTS_NOT_A_SYMLINK_1,
- link, extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- # Always re-process each link whether it needs it or not
- if not silent:
- config.pki_log.info(log.PKIHELPER_MODIFY_SYMLINK_1, link,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # REMINDER: Due to POSIX compliance, 'lchmod' is NEVER
- # implemented on Linux systems since 'chmod'
- # CANNOT be run directly against symbolic links!
- # chown -h <uid>:<gid> <link>
- if uid == None:
- uid = identity.get_uid()
- if gid == None:
- gid = identity.get_gid()
- if not silent:
- config.pki_log.debug(log.PKIHELPER_CHOWN_H_3,
- uid, gid, link,
- extra=config.PKI_INDENTATION_LEVEL_3)
- os.lchown(link, uid, gid)
- # Store record in installation manifest
- if not silent:
- record = manifest.record()
- record.name = link
- record.type = manifest.RECORD_TYPE_SYMLINK
- record.user = master['pki_user']
- record.group = master['pki_group']
- record.uid = uid
- record.gid = gid
- record.permissions =\
- config.PKI_DEPLOYMENT_DEFAULT_SYMLINK_PERMISSIONS
- record.acls = acls
- manifest.database.append(record)
- else:
- config.pki_log.error(
- log.PKI_SYMLINK_MISSING_OR_NOT_A_SYMLINK_1, link,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def delete(self, link, critical_failure=True):
- try:
- if not os.path.exists(link) or not os.path.islink(link):
- # Simply issue a warning and continue
- config.pki_log.warning(
- log.PKI_SYMLINK_MISSING_OR_NOT_A_SYMLINK_1, link,
- extra=config.PKI_INDENTATION_LEVEL_2)
- else:
- # rm -f <link>
- config.pki_log.info(log.PKIHELPER_RM_F_1, link,
- extra=config.PKI_INDENTATION_LEVEL_2)
- os.remove(link)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def exists(self, name):
- try:
- if not os.path.exists(name) or not os.path.islink(name):
- return False
- else:
- return True
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
-
-
-# PKI Deployment War File Class
-class war:
- def explode(self, name, path, critical_failure=True):
- try:
- if os.path.exists(name) and os.path.isfile(name):
- if not zipfile.is_zipfile(name):
- config.pki_log.error(
- log.PKI_FILE_NOT_A_WAR_FILE_1,
- name, extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- if not os.path.exists(path) or not os.path.isdir(path):
- config.pki_log.error(
- log.PKI_DIRECTORY_MISSING_OR_NOT_A_DIRECTORY_1,
- path, extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- # jar -xf <name> -C <path>
- config.pki_log.info(log.PKIHELPER_JAR_XF_C_2, name, path,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # Open war file
- war = zipfile.ZipFile(name, 'r')
- # Extract contents of war file to path
- war.extractall(path)
- else:
- config.pki_log.error(
- log.PKI_FILE_MISSING_OR_NOT_A_FILE_1, name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except zipfile.BadZipfile as exc:
- config.pki_log.error(log.PKI_BADZIPFILE_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except zipfile.LargeZipFile as exc:
- config.pki_log.error(log.PKI_LARGEZIPFILE_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
-
-# PKI Deployment Password Class
-class password:
- def create_password_conf(self, path, pin, pin_sans_token=False,
- overwrite_flag=False, critical_failure=True):
- try:
- if os.path.exists(path):
- if overwrite_flag:
- config.pki_log.info(
- log.PKIHELPER_PASSWORD_CONF_1, path,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # overwrite the existing 'password.conf' file
- with open(path, "wt") as fd:
- if pin_sans_token == True:
- fd.write(str(pin))
- elif master['pki_subsystem'] in\
- config.PKI_APACHE_SUBSYSTEMS:
- fd.write(master['pki_self_signed_token'] +\
- ":" + str(pin))
- else:
- fd.write(master['pki_self_signed_token'] +\
- "=" + str(pin))
- fd.closed
- else:
- config.pki_log.info(log.PKIHELPER_PASSWORD_CONF_1, path,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # create a new 'password.conf' file
- with open(path, "wt") as fd:
- if pin_sans_token == True:
- fd.write(str(pin))
- elif master['pki_subsystem'] in\
- config.PKI_APACHE_SUBSYSTEMS:
- fd.write(master['pki_self_signed_token'] +\
- ":" + str(pin))
- else:
- fd.write(master['pki_self_signed_token'] +\
- "=" + str(pin))
- fd.closed
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def create_client_pkcs12_password_conf(self, path, overwrite_flag=False,
- critical_failure=True):
- try:
- if os.path.exists(path):
- if overwrite_flag:
- config.pki_log.info(
- log.PKIHELPER_PASSWORD_CONF_1, path,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # overwrite the existing 'pkcs12_password.conf' file
- with open(path, "wt") as fd:
- fd.write(master['pki_client_pkcs12_password'])
- fd.closed
- else:
- config.pki_log.info(log.PKIHELPER_PASSWORD_CONF_1, path,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # create a new 'pkcs12_password.conf' file
- with open(path, "wt") as fd:
- fd.write(master['pki_client_pkcs12_password'])
- fd.closed
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def get_password(self, path, token_name, critical_failure=True):
- if os.path.exists(path) and os.path.isfile(path) and\
- os.access(path, os.R_OK):
- tokens = PKIConfigParser.read_simple_configuration_file(path)
- hardware_token = "hardware-" + token_name
- if tokens.has_key(hardware_token):
- token_name = hardware_token
- token_pwd = tokens[hardware_token]
- elif tokens.has_key(token_name):
- token_pwd = tokens[token_name]
-
- if token_pwd is None or token_pwd == '':
- # TODO prompt for this password
- config.pki_log.error(log.PKIHELPER_PASSWORD_NOT_FOUND_1,
- token_name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(-1)
- else:
- return
- return token_pwd
-
-
-# PKI Deployment NSS 'certutil' Class
-class certutil:
- def create_security_databases(self, path, pki_cert_database,
- pki_key_database, pki_secmod_database,
- password_file=None, prefix=None,
- critical_failure=True):
- try:
- # Compose this "certutil" command
- command = "certutil" + " " + "-N"
- # Provide a path to the NSS security databases
- if path:
- command = command + " " + "-d" + " " + path
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_PATH,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if password_file != None:
- command = command + " " + "-f" + " " + password_file
- if prefix != None:
- command = command + " " + "-P" + " " + prefix
- if not os.path.exists(path):
- config.pki_log.error(
- log.PKI_DIRECTORY_MISSING_OR_NOT_A_DIRECTORY_1, path,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if os.path.exists(pki_cert_database) or\
- os.path.exists(pki_key_database) or\
- os.path.exists(pki_secmod_database):
- # Simply notify user that the security databases exist
- config.pki_log.info(
- log.PKI_SECURITY_DATABASES_ALREADY_EXIST_3,
- pki_cert_database,
- pki_key_database,
- pki_secmod_database,
- extra=config.PKI_INDENTATION_LEVEL_2)
- else:
- if password_file != None:
- if not os.path.exists(password_file) or\
- not os.path.isfile(password_file):
- config.pki_log.error(
- log.PKI_FILE_MISSING_OR_NOT_A_FILE_1,
- password_file,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Display this "certutil" command
- config.pki_log.info(
- log.PKIHELPER_CREATE_SECURITY_DATABASES_1,
- command,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # Execute this "certutil" command
- subprocess.call(command, shell=True)
- except subprocess.CalledProcessError as exc:
- config.pki_log.error(log.PKI_SUBPROCESS_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def verify_certificate_exists(self, path, pki_cert_database,
- pki_key_database, pki_secmod_database,
- token, nickname, password_file=None,
- silent=True):
- rv = 0
- try:
- # Compose this "certutil" command
- command = "certutil" + " " + "-L"
- # Provide a path to the NSS security databases
- if path:
- command = command + " " + "-d" + " " + path
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_PATH,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Specify the 'token'
- if token:
- command = command + " " + "-h" + " " + "'" + token + "'"
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_TOKEN,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Specify the nickname of this self-signed certificate
- if nickname:
- command = command + " " + "-n" + " " + "'" + nickname + "'"
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_NICKNAME,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # OPTIONALLY specify a password file
- if password_file != None:
- command = command + " " + "-f" + " " + password_file
- # By default, execute this command silently
- if silent != False:
- command = command + " > /dev/null 2>&1"
- if not os.path.exists(path):
- config.pki_log.error(
- log.PKI_DIRECTORY_MISSING_OR_NOT_A_DIRECTORY_1, path,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if not os.path.exists(pki_cert_database) or\
- not os.path.exists(pki_key_database) or\
- not os.path.exists(pki_secmod_database):
- # NSS security databases MUST exist!
- config.pki_log.error(
- log.PKI_SECURITY_DATABASES_DO_NOT_EXIST_3,
- pki_cert_database,
- pki_key_database,
- pki_secmod_database,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if password_file != None:
- if not os.path.exists(password_file) or\
- not os.path.isfile(password_file):
- config.pki_log.error(
- log.PKI_FILE_MISSING_OR_NOT_A_FILE_1,
- password_file,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Execute this "certutil" command
- subprocess.check_call(command, shell=True)
- except subprocess.CalledProcessError as exc:
- return False
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return True
-
- def generate_self_signed_certificate(self, path, pki_cert_database,
- pki_key_database, pki_secmod_database,
- token, nickname,
- subject, serial_number,
- validity_period, issuer_name,
- trustargs, noise_file,
- password_file=None,
- critical_failure=True):
- try:
- # Compose this "certutil" command
- command = "certutil" + " " + "-S"
- # Provide a path to the NSS security databases
- if path:
- command = command + " " + "-d" + " " + path
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_PATH,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Specify the 'token'
- if token:
- command = command + " " + "-h" + " " + "'" + token + "'"
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_TOKEN,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Specify the nickname of this self-signed certificate
- if nickname:
- command = command + " " + "-n" + " " + "'" + nickname + "'"
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_NICKNAME,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Specify the subject name (RFC1485)
- if subject:
- command = command + " " + "-s" + " " + "'" + subject + "'"
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_SUBJECT,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Specify the serial number
- if serial_number != None:
- command = command + " " + "-m" + " " + str(serial_number)
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_SERIAL_NUMBER,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Specify the months valid
- if validity_period != None:
- command = command + " " + "-v" + " " + str(validity_period)
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_VALIDITY_PERIOD,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Specify the nickname of the issuer certificate
- if issuer_name:
- command = command + " " + "-c" + " " +\
- "'" + issuer_name + "'"
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_ISSUER_NAME,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Specify the certificate trust attributes
- if trustargs:
- command = command + " " + "-t" + " " + "'" + trustargs + "'"
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_TRUSTARGS,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Specify a noise file to be used for key generation
- if noise_file:
- command = command + " " + "-z" + " " + noise_file
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_NOISE_FILE,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # OPTIONALLY specify a password file
- if password_file != None:
- command = command + " " + "-f" + " " + password_file
- # ALWAYS self-sign this certificate
- command = command + " " + "-x"
- # ALWAYS mask the command-line output of this command
- command = command + " " + "> /dev/null 2>&1"
- # Display this "certutil" command
- config.pki_log.info(
- log.PKIHELPER_CERTUTIL_SELF_SIGNED_CERTIFICATE_1, command,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if not os.path.exists(path):
- config.pki_log.error(
- log.PKI_DIRECTORY_MISSING_OR_NOT_A_DIRECTORY_1, path,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if not os.path.exists(pki_cert_database) or\
- not os.path.exists(pki_key_database) or\
- not os.path.exists(pki_secmod_database):
- # NSS security databases MUST exist!
- config.pki_log.error(
- log.PKI_SECURITY_DATABASES_DO_NOT_EXIST_3,
- pki_cert_database,
- pki_key_database,
- pki_secmod_database,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if not os.path.exists(noise_file):
- config.pki_log.error(
- log.PKI_DIRECTORY_MISSING_OR_NOT_A_DIRECTORY_1,
- noise_file,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if password_file != None:
- if not os.path.exists(password_file) or\
- not os.path.isfile(password_file):
- config.pki_log.error(
- log.PKI_FILE_MISSING_OR_NOT_A_FILE_1,
- password_file,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Execute this "certutil" command
- subprocess.call(command, shell=True)
- except subprocess.CalledProcessError as exc:
- config.pki_log.error(log.PKI_SUBPROCESS_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def import_cert(self, nickname, trust, input_file, password_file,
- path=None, token=None, critical_failure=True):
- try:
- command = ["certutil","-A"]
- if path:
- command.extend(["-d", path])
-
- if token:
- command.extend(["-h", token])
-
- if nickname:
- command.extend(["-n", nickname ])
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_NICKNAME,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
-
- if trust:
- command.extend(["-t", trust])
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_TRUSTARGS,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
-
- if input_file:
- command.extend(["-i", input_file])
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_INPUT_FILE,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
-
- if password_file:
- command.extend(["-f", password_file])
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_PASSWORD_FILE,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
-
- config.pki_log.info(command,
- extra=config.PKI_INDENTATION_LEVEL_2)
- subprocess.call(command)
- except subprocess.CalledProcessError as exc:
- config.pki_log.error(log.PKI_SUBPROCESS_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def generate_certificate_request(self, subject, key_size,
- password_file, noise_file,
- output_file = None, path = None,
- ascii_format = None, token = None,
- critical_failure=True):
- try:
- command = ["certutil", "-R"]
- if path:
- command.extend(["-d", path])
- else:
- command.extend(["-d", "."])
-
- if token:
- command.extend(["-h", token])
-
- if subject:
- command.extend(["-s", subject])
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_SUBJECT,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
-
- if key_size:
- command.extend(["-g", str(key_size)])
-
- if noise_file:
- command.extend(["-z", noise_file])
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_NOISE_FILE,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
-
- if password_file:
- command.extend(["-f", password_file])
- else:
- config.pki_log.error(
- log.PKIHELPER_CERTUTIL_MISSING_PASSWORD_FILE,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
-
- if output_file:
- command.extend(["-o", output_file])
-
- # set acsii output
- if ascii_format:
- command.append("-a")
-
- # Display this "certutil" command
- config.pki_log.info(
- log.PKIHELPER_CERTUTIL_GENERATE_CSR_1, command,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if not os.path.exists(noise_file):
- config.pki_log.error(
- log.PKI_DIRECTORY_MISSING_OR_NOT_A_DIRECTORY_1,
- noise_file,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if not os.path.exists(password_file) or\
- not os.path.isfile(password_file):
- config.pki_log.error(
- log.PKI_FILE_MISSING_OR_NOT_A_FILE_1,
- password_file,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- # Execute this "certutil" command
- with open(os.devnull, "w") as fnull:
- subprocess.call(command, stdout=fnull, stderr=fnull)
- except subprocess.CalledProcessError as exc:
- config.pki_log.error(log.PKI_SUBPROCESS_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
-# pk12util class
-class pk12util:
- def create_file(self, out_file, nickname, out_pwfile,
- db_pwfile, path=None):
- try:
- command = ["pk12util"]
- if path:
- command.extend(["-d", path])
- if out_file:
- command.extend(["-o", out_file])
- else:
- config.pki_log.error(
- log.PKIHELPER_PK12UTIL_MISSING_OUTFILE,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if nickname:
- command.extend(["-n", nickname])
- else:
- config.pki_log.error(
- log.PKIHELPER_PK12UTIL_MISSING_NICKNAME,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if out_pwfile:
- command.extend(["-w", out_pwfile])
- else:
- config.pki_log.error(
- log.PKIHELPER_PK12UTIL_MISSING_OUTPWFILE,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- if db_pwfile:
- command.extend(["-k", db_pwfile])
- else:
- config.pki_log.error(
- log.PKIHELPER_PK12UTIL_MISSING_DBPWFILE,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
-
- config.pki_log.info(command,
- extra=config.PKI_INDENTATION_LEVEL_2)
- with open(os.devnull, "w") as fnull:
- subprocess.call(command, stdout=fnull, stderr=fnull)
- except subprocess.CalledProcessError as exc:
- config.pki_log.error(log.PKI_SUBPROCESS_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
-
-# KRA Connector Class
-class kra_connector:
- def deregister(self, critical_failure=False):
- try:
- # this is applicable to KRAs only
- if master['pki_subsystem_type'] != "kra":
- return
-
- config.pki_log.info(
- log.PKIHELPER_KRACONNECTOR_UPDATE_CONTACT,
- extra=config.PKI_INDENTATION_LEVEL_2)
-
- cs_cfg = PKIConfigParser.read_simple_configuration_file(
- master['pki_target_cs_cfg'])
- krahost = cs_cfg.get('service.machineName')
- kraport = cs_cfg.get('pkicreate.secure_port')
- cahost = cs_cfg.get('cloning.ca.hostname')
- caport = cs_cfg.get('cloning.ca.httpsport')
- if cahost is None or\
- caport is None:
- config.pki_log.warning(
- log.PKIHELPER_KRACONNECTOR_UPDATE_FAILURE,
- extra=config.PKI_INDENTATION_LEVEL_2)
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_CA_HOST_PORT,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(-1)
- else:
- return
-
- # retrieve subsystem nickname
- subsystemnick = cs_cfg.get('kra.cert.subsystem.nickname')
- if subsystemnick is None:
- config.pki_log.warning(
- log.PKIHELPER_KRACONNECTOR_UPDATE_FAILURE,
- extra=config.PKI_INDENTATION_LEVEL_2)
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_SUBSYSTEM_NICKNAME,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(-1)
- else:
- return
-
- # retrieve name of token based upon type (hardware/software)
- if ':' in subsystemnick:
- token_name = subsystemnick.split(':')[0]
- else:
- token_name = "internal"
-
- token_pwd = password.get_password(
- master['pki_shared_password_conf'],
- token_name,
- critical_failure)
-
- if token_pwd is None or token_pwd == '':
- config.pki_log.warning(
- log.PKIHELPER_KRACONNECTOR_UPDATE_FAILURE,
- extra=config.PKI_INDENTATION_LEVEL_2)
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_TOKEN_PASSWD_1,
- token_name,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(-1)
- else:
- return
-
- self.execute_using_sslget(caport, cahost, subsystemnick,
- token_pwd, krahost, kraport)
-
- except subprocess.CalledProcessError as exc:
- config.pki_log.warning(
- log.PKIHELPER_KRACONNECTOR_UPDATE_FAILURE_2,
- str(krahost),
- str(kraport),
- extra=config.PKI_INDENTATION_LEVEL_2)
- config.pki_log.error(log.PKI_SUBPROCESS_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(-1)
- return
-
- def execute_using_pki(self, caport, cahost, subsystemnick,
- token_pwd, krahost, kraport, critical_failure=False):
- command = "/bin/pki -p '{}' -h '{}' -n '{}' -P https -d '{}' -w '{}' "\
- "kraconnector-del {} {}".format(
- caport, cahost, subsystemnick,
- master['pki_database_path'],
- token_pwd, krahost, kraport)
-
- output = subprocess.check_output(command,
- stderr=subprocess.STDOUT,
- shell=True)
-
- error = re.findall("ClientResponseFailure:(.*?)", output)
- if error:
- config.pki_log.warning(
- log.PKIHELPER_KRACONNECTOR_UPDATE_FAILURE_2,
- str(krahost),
- str(kraport),
- extra=config.PKI_INDENTATION_LEVEL_2)
- config.pki_log.error(log.PKI_SUBPROCESS_ERROR_1, output,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(-1)
-
- def execute_using_sslget(self, caport, cahost, subsystemnick,
- token_pwd, krahost, kraport):
- urlheader = "https://{}:{}".format(cahost, caport)
- updateURL = "/ca/rest/admin/kraconnector/remove"
-
- params = "host=" + str(krahost) +\
- "&port=" + str(kraport)
-
- command = "/usr/bin/sslget -n '{}' -p '{}' -d '{}' -e '{}' "\
- "-v -r '{}' {}:{} 2>&1".format(
- subsystemnick, token_pwd,
- master['pki_database_path'],
- params, updateURL,
- cahost, caport)
-
- # update KRA connector
- # Execute this "sslget" command
- # Note that sslget will return non-zero value for HTTP code != 200
- # and this will raise an exception
- output = subprocess.check_output(command,
- stderr=subprocess.STDOUT,
- shell=True)
-
-# PKI Deployment Security Domain Class
-class security_domain:
- def deregister(self, install_token, critical_failure=False):
- # process this PKI subsystem instance's 'CS.cfg'
- cs_cfg = PKIConfigParser.read_simple_configuration_file(
- master['pki_target_cs_cfg'])
-
- # assign key name/value pairs
- machinename = cs_cfg.get('service.machineName')
- sport = cs_cfg.get('service.securityDomainPort')
- ncsport = cs_cfg.get('service.non_clientauth_securePort', '')
- sechost = cs_cfg.get('securitydomain.host')
- httpport = cs_cfg.get('securitydomain.httpport')
- seceeport = cs_cfg.get('securitydomain.httpseeport')
- secagentport = cs_cfg.get('securitydomain.httpsagentport')
- secadminport = cs_cfg.get('securitydomain.httpsadminport')
- secname = cs_cfg.get('securitydomain.name', 'unknown')
- secselect = cs_cfg.get('securitydomain.select')
- adminsport = cs_cfg.get('pkicreate.admin_secure_port', '')
- typeval = cs_cfg.get('cs.type', '')
- agentsport = cs_cfg.get('pkicreate.agent_secure_port', '')
-
- # NOTE: Don't check for the existence of 'httpport', as this will
- # be undefined for a Security Domain that has been migrated!
- if sechost is None or\
- seceeport is None or\
- secagentport is None or\
- secadminport is None:
- config.pki_log.warning(
- log.PKIHELPER_SECURITY_DOMAIN_UPDATE_FAILURE_2,
- typeval,
- secname,
- extra=config.PKI_INDENTATION_LEVEL_2)
- config.pki_log.error(
- log.PKIHELPER_SECURITY_DOMAIN_UNDEFINED,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(-1)
- else:
- return
-
- config.pki_log.info(log.PKIHELPER_SECURITY_DOMAIN_CONTACT_1,
- secname,
- extra=config.PKI_INDENTATION_LEVEL_2)
- listval = typeval.lower() + "List"
- urlheader = "https://{}:{}".format(sechost, seceeport)
- urlagentheader = "https://{}:{}".format(sechost, secagentport)
- urladminheader = "https://{}:{}".format(sechost, secadminport)
- updateURL = "/ca/agent/ca/updateDomainXML"
-
- params = "name=" + "\"" + master['pki_instance_path'] + "\"" +\
- "&type=" + str(typeval) +\
- "&list=" + str(listval) +\
- "&host=" + str(machinename) +\
- "&sport=" + str(sport) +\
- "&ncsport=" + str(ncsport) +\
- "&adminsport=" + str(adminsport) +\
- "&agentsport=" + str(agentsport) +\
- "&operation=remove"
-
- if install_token:
- try:
- # first try install token-based servlet
- params += "&sessionID=" + str(install_token)
- adminUpdateURL = "/ca/admin/ca/updateDomainXML"
- command = "/usr/bin/sslget -p 123456 -d '{}' -e '{}' "\
- "-v -r '{}' {}:{} 2>&1".format(
- master['pki_database_path'],
- params, adminUpdateURL,
- sechost, secadminport)
- output = subprocess.check_output(command,
- stderr=subprocess.STDOUT,
- shell=True)
- except subprocess.CalledProcessError as exc:
- config.pki_log.warning(
- log.PKIHELPER_SECURITY_DOMAIN_UNREACHABLE_1,
- secname,
- extra=config.PKI_INDENTATION_LEVEL_2)
- output = self.update_domain_using_agent_port(typeval,
- secname, params, updateURL, sechost, secagentport,
- critical_failure)
- else:
- output = self.update_domain_using_agent_port(typeval,
- secname, params, updateURL, sechost, secagentport,
- critical_failure)
-
- if not output:
- if critical_failure == True:
- sys.exit(-1)
- else:
- return
-
- config.pki_log.debug(log.PKIHELPER_SSLGET_OUTPUT_1,
- output,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # Search the output for Status
- status = re.findall("\<Status\>(.*?)\<\/Status\>", output)
- if not status:
- config.pki_log.warning(
- log.PKIHELPER_SECURITY_DOMAIN_UNREACHABLE_1,
- secname,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(-1)
- elif status[0] != "0":
- error = re.findall("\<Error\>(.*?)\<\/Error\>", output)
- if not error:
- error = ""
- config.pki_log.warning(
- log.PKIHELPER_SECURITY_DOMAIN_UNREGISTERED_2,
- typeval,
- secname,
- extra=config.PKI_INDENTATION_LEVEL_2)
- config.pki_log.error(
- log.PKIHELPER_SECURITY_DOMAIN_UPDATE_FAILURE_3,
- typeval,
- secname,
- error,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(-1)
- else:
- config.pki_log.info(
- log.PKIHELPER_SECURITY_DOMAIN_UPDATE_SUCCESS_2,
- typeval,
- secname,
- extra=config.PKI_INDENTATION_LEVEL_2)
-
- def update_domain_using_agent_port(self, typeval, secname, params,
- updateURL, sechost, secagentport, critical_failure= False):
- token_pwd = None
- cs_cfg = PKIConfigParser.read_simple_configuration_file(
- master['pki_target_cs_cfg'])
- # retrieve subsystem nickname
- subsystemnick_param = typeval.lower() + ".cert.subsystem.nickname"
- subsystemnick = cs_cfg.get(subsystemnick_param)
- if subsystemnick is None:
- config.pki_log.warning(
- log.PKIHELPER_SECURITY_DOMAIN_UPDATE_FAILURE_2,
- typeval,
- secname,
- extra=config.PKI_INDENTATION_LEVEL_2)
- config.pki_log.error(
- log.PKIHELPER_UNDEFINED_SUBSYSTEM_NICKNAME,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(-1)
- else:
- return
-
- # retrieve name of token based upon type (hardware/software)
- if ':' in subsystemnick:
- token_name = subsystemnick.split(':')[0]
- else:
- token_name = "internal"
-
- token_pwd = password.get_password(
- master['pki_shared_password_conf'],
- token_name,
- critical_failure)
-
- if token_pwd is None or token_pwd == '':
- config.pki_log.warning(
- log.PKIHELPER_SECURITY_DOMAIN_UPDATE_FAILURE_2,
- typeval,
- secname,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(-1)
- else:
- return
-
- command = "/usr/bin/sslget -n '{}' -p '{}' -d '{}' -e '{}' "\
- "-v -r '{}' {}:{} 2>&1".format(
- subsystemnick, token_pwd,
- master['pki_database_path'],
- params, updateURL,
- sechost, secagentport)
- try:
- output = subprocess.check_output(command,
- stderr=subprocess.STDOUT,
- shell=True)
- return output
- except subprocess.CalledProcessError as exc:
- config.pki_log.warning(
- log.PKIHELPER_SECURITY_DOMAIN_UPDATE_FAILURE_2,
- typeval,
- secname,
- extra=config.PKI_INDENTATION_LEVEL_2)
- config.pki_log.warning(
- log.PKIHELPER_SECURITY_DOMAIN_UNREACHABLE_1,
- secname,
- extra=config.PKI_INDENTATION_LEVEL_2)
- config.pki_log.error(log.PKI_SUBPROCESS_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(-1)
-
- return None
-
-
- def get_installation_token(self, secuser, secpass, critical_failure=True):
- token = None
-
- if not secuser or not secpass:
- return None
-
- # process this PKI subsystem instance's 'CS.cfg'
- cs_cfg = PKIConfigParser.read_simple_configuration_file(
- master['pki_target_cs_cfg'])
-
- # assign key name/value pairs
- machinename = cs_cfg.get('service.machineName')
- cstype = cs_cfg.get('cs.type', '')
- sechost = cs_cfg.get('securitydomain.host')
- secadminport = cs_cfg.get('securitydomain.httpsadminport')
- secselect = cs_cfg.get('securitydomain.select')
-
- command = "/bin/pki -p '{}' -h '{}' -P https -u '{}' -w '{}' "\
- "securitydomain-get-install-token --hostname {} "\
- "--subsystem {}".format(
- secadminport, sechost, secuser, secpass,
- machinename, cstype)
- try:
- output = subprocess.check_output(command,
- stderr=subprocess.STDOUT,
- shell=True)
-
- token_list = re.findall("Install token: \"(.*)\"", output)
- if not token_list:
- config.pki_log.error(
- log.PKIHELPER_SECURITY_DOMAIN_GET_TOKEN_FAILURE_2,
- str(sechost),
- str(secadminport),
- extra=config.PKI_INDENTATION_LEVEL_2)
- config.pki_log.error(log.PKI_SUBPROCESS_ERROR_1, output,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(-1)
- else:
- token = token_list[0]
- return token
- except subprocess.CalledProcessError as exc:
- config.pki_log.error(
- log.PKIHELPER_SECURITY_DOMAIN_GET_TOKEN_FAILURE_2,
- str(sechost),
- str(secadminport),
- extra=config.PKI_INDENTATION_LEVEL_2)
- config.pki_log.error(log.PKI_SUBPROCESS_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(-1)
- return None
-
-# PKI Deployment 'systemd' Execution Management Class
-class systemd:
- def start(self, critical_failure=True):
- try:
- # Compose this "systemd" execution management command
- if master['pki_subsystem'] in config.PKI_APACHE_SUBSYSTEMS:
- command = "systemctl" + " " +\
- "start" + " " +\
- "pki-apached" + "@" +\
- master['pki_instance_name'] + "." + "service"
- elif master['pki_subsystem'] in config.PKI_TOMCAT_SUBSYSTEMS:
- command = "systemctl" + " " +\
- "start" + " " +\
- "pki-tomcatd" + "@" +\
- master['pki_instance_name'] + "." + "service"
- # Display this "systemd" execution managment command
- config.pki_log.info(
- log.PKIHELPER_SYSTEMD_COMMAND_1, command,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # Execute this "systemd" execution management command
- subprocess.call(command, shell=True)
- except subprocess.CalledProcessError as exc:
- config.pki_log.error(log.PKI_SUBPROCESS_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def stop(self, critical_failure=True):
- try:
- # Compose this "systemd" execution management command
- if master['pki_subsystem'] in config.PKI_APACHE_SUBSYSTEMS:
- command = "systemctl" + " " +\
- "stop" + " " +\
- "pki-apached" + "@" +\
- master['pki_instance_name'] + "." + "service"
- elif master['pki_subsystem'] in config.PKI_TOMCAT_SUBSYSTEMS:
- command = "systemctl" + " " +\
- "stop" + " " +\
- "pki-tomcatd" + "@" +\
- master['pki_instance_name'] + "." + "service"
- # Display this "systemd" execution managment command
- config.pki_log.info(
- log.PKIHELPER_SYSTEMD_COMMAND_1, command,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # Execute this "systemd" execution management command
- subprocess.call(command, shell=True)
- except subprocess.CalledProcessError as exc:
- config.pki_log.error(log.PKI_SUBPROCESS_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
- def restart(self, critical_failure=True):
- try:
- # Compose this "systemd" execution management command
- if master['pki_subsystem'] in config.PKI_APACHE_SUBSYSTEMS:
- command = "systemctl" + " " +\
- "restart" + " " +\
- "pki-apached" + "@" +\
- master['pki_instance_name'] + "." + "service"
- elif master['pki_subsystem'] in config.PKI_TOMCAT_SUBSYSTEMS:
- command = "systemctl" + " " +\
- "restart" + " " +\
- "pki-tomcatd" + "@" +\
- master['pki_instance_name'] + "." + "service"
- # Display this "systemd" execution managment command
- config.pki_log.info(
- log.PKIHELPER_SYSTEMD_COMMAND_1, command,
- extra=config.PKI_INDENTATION_LEVEL_2)
- # Execute this "systemd" execution management command
- subprocess.call(command, shell=True)
- except subprocess.CalledProcessError as exc:
- config.pki_log.error(log.PKI_SUBPROCESS_ERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- if critical_failure == True:
- sys.exit(1)
- return
-
-
-class config_client:
-
- def configure_pki_data(self, data):
- config.pki_log.info(log.PKI_CONFIG_CONFIGURING_PKI_DATA,
- extra=config.PKI_INDENTATION_LEVEL_2)
-
- self.connection = pki.client.PKIConnection(
- protocol='https',
- hostname=master['pki_hostname'],
- port=master['pki_https_port'],
- subsystem=master['pki_subsystem_type'])
-
- try:
- client = pki.system.SystemConfigClient(self.connection)
- response = client.configure(data)
-
- config.pki_log.debug(log.PKI_CONFIG_RESPONSE_STATUS +\
- " " + str(response['status']),
- extra=config.PKI_INDENTATION_LEVEL_2)
- certs = response['systemCerts']
- for cdata in certs:
- if master['pki_subsystem'] == "CA" and\
- config.str2bool(master['pki_external']) and\
- not config.str2bool(master['pki_external_step_two']):
- # External CA Step 1
- if cdata['tag'].lower() == "signing":
- config.pki_log.info(log.PKI_CONFIG_CDATA_REQUEST +\
- " " + cdata['request'],
- extra=config.PKI_INDENTATION_LEVEL_2)
-
- # Save 'External CA Signing Certificate' CSR (Step 1)
- config.pki_log.info(log.PKI_CONFIG_EXTERNAL_CSR_SAVE +\
- " '" + master['pki_external_csr_path'] + "'",
- extra=config.PKI_INDENTATION_LEVEL_2)
- directory.create(
- os.path.dirname(master['pki_external_csr_path']))
- with open(master['pki_external_csr_path'], "w") as f:
- f.write(cdata['request'])
- return
- else:
- config.pki_log.debug(log.PKI_CONFIG_CDATA_TAG +\
- " " + cdata['tag'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- config.pki_log.debug(log.PKI_CONFIG_CDATA_CERT +\
- " " + cdata['cert'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- config.pki_log.debug(log.PKI_CONFIG_CDATA_REQUEST +\
- " " + cdata['request'],
- extra=config.PKI_INDENTATION_LEVEL_2)
-
- # Cloned PKI subsystems do not return an Admin Certificate
- if not config.str2bool(master['pki_clone']) and \
- not config.str2bool(master['pki_import_admin_cert']):
- admin_cert = response['adminCert']['cert']
- self.process_admin_cert(admin_cert)
- except Exception, e:
- config.pki_log.error(
- log.PKI_CONFIG_JAVA_CONFIGURATION_EXCEPTION + " " + str(e),
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- return
-
- def process_admin_cert(self, admin_cert):
- config.pki_log.debug(log.PKI_CONFIG_RESPONSE_ADMIN_CERT +\
- " " + admin_cert,
- extra=config.PKI_INDENTATION_LEVEL_2)
-
- # Store the Administration Certificate in a file
- admin_cert_file = master['pki_client_admin_cert']
- admin_cert_bin_file = admin_cert_file + ".der"
- config.pki_log.debug(log.PKI_CONFIG_ADMIN_CERT_SAVE +\
- " '" + admin_cert_file + "'",
- extra=config.PKI_INDENTATION_LEVEL_2)
- with open(admin_cert_file, "w") as f:
- f.write(admin_cert)
-
- # convert the cert file to binary
- command = ["AtoB", admin_cert_file, admin_cert_bin_file]
- config.pki_log.info(command,
- extra=config.PKI_INDENTATION_LEVEL_2)
- subprocess.call(command)
-
- os.chmod(admin_cert_file,
- config.PKI_DEPLOYMENT_DEFAULT_FILE_PERMISSIONS)
-
- os.chmod(admin_cert_bin_file,
- config.PKI_DEPLOYMENT_DEFAULT_FILE_PERMISSIONS)
-
- # Import the Administration Certificate
- # into the client NSS security database
- certutil.import_cert(
- re.sub("&#39;", "'", master['pki_admin_nickname']),
- "u,u,u",
- admin_cert_bin_file,
- master['pki_client_password_conf'],
- master['pki_client_database_dir'],
- None,
- True)
-
- # create directory for p12 file if it does not exist
- directory.create(os.path.dirname(
- master['pki_client_admin_cert_p12']))
-
- # Export the Administration Certificate from the
- # client NSS security database into a PKCS #12 file
- pk12util.create_file(
- master['pki_client_admin_cert_p12'],
- re.sub("&#39;","'", master['pki_admin_nickname']),
- master['pki_client_pkcs12_password_conf'],
- master['pki_client_password_conf'],
- master['pki_client_database_dir'])
-
- os.chmod(master['pki_client_admin_cert_p12'],
- config.PKI_DEPLOYMENT_DEFAULT_SECURITY_DATABASE_PERMISSIONS)
-
-
- def construct_pki_configuration_data(self):
- config.pki_log.info(log.PKI_CONFIG_CONSTRUCTING_PKI_DATA,
- extra=config.PKI_INDENTATION_LEVEL_2)
-
- data = pki.system.ConfigurationRequest()
-
- # Miscellaneous Configuration Information
- data.pin = master['pki_one_time_pin']
- data.subsystemName = master['pki_subsystem_name']
-
- # Cloning parameters
- if master['pki_instance_type'] == "Tomcat":
- if config.str2bool(master['pki_clone']):
- self.set_cloning_parameters(data)
- else:
- data.isClone = "false"
-
- # Hierarchy
- self.set_hierarchy_parameters(data)
-
- # Security Domain
- if master['pki_subsystem'] != "CA" or\
- config.str2bool(master['pki_clone']) or\
- config.str2bool(master['pki_subordinate']):
- # PKI KRA, PKI OCSP, PKI RA, PKI TKS, PKI TPS,
- # CA Clone, KRA Clone, OCSP Clone, TKS Clone, or
- # Subordinate CA
- self.set_existing_security_domain(data)
- else:
- # PKI CA or External CA
- self.set_new_security_domain(data)
-
- # database
- if master['pki_subsystem'] != "RA":
- self.set_database_parameters(data)
-
- # backup
- if master['pki_instance_type'] == "Tomcat":
- self.set_backup_parameters(data)
-
- # admin user
- if not config.str2bool(master['pki_clone']):
- self.set_admin_parameters(data)
-
- # Issuing CA Information
- self.set_issuing_ca_parameters(data)
-
- # Create system certs
- self.set_system_certs(data)
-
- return data
-
- def set_system_certs(self, data):
- systemCerts = []
-
- # Create 'CA Signing Certificate'
- if master['pki_subsystem'] == "CA":
- if not config.str2bool(master['pki_clone']):
- cert1 = self.create_system_cert("ca_signing")
- cert1.signingAlgorithm =\
- master['pki_ca_signing_signing_algorithm']
- if config.str2bool(master['pki_external_step_two']):
- # Load the 'External CA Signing Certificate' (Step 2)
- print(
- log.PKI_CONFIG_EXTERNAL_CA_LOAD + " " +\
- "'" + master['pki_external_ca_cert_path'] + "'")
- with open(master['pki_external_ca_cert_path']) as f:
- external_cert = f.read()
- cert1.cert = external_cert
-
- # Load the 'External CA Signing Certificate Chain' (Step 2)
- print(
- log.PKI_CONFIG_EXTERNAL_CA_CHAIN_LOAD + " " +\
- "'" + master['pki_external_ca_cert_chain_path'] +\
- "'")
- with open(master['pki_external_ca_cert_chain_path']) as f:
- external_cert_chain = f.read()
-
- cert1.certChain = external_cert_chain
- systemCerts.append(cert1)
-
- # Create 'OCSP Signing Certificate'
- if not config.str2bool(master['pki_clone']):
- if master['pki_subsystem'] == "CA" or\
- master['pki_subsystem'] == "OCSP":
- # External CA, Subordinate CA, PKI CA, or PKI OCSP
- cert2 = self.create_system_cert("ocsp_signing")
- cert2.signingAlgorithm =\
- master['pki_ocsp_signing_signing_algorithm']
- systemCerts.append(cert2)
-
- # Create 'SSL Server Certificate'
- # all subsystems
-
- # create new sslserver cert only if this is a new instance
- cert3 = None
- system_list = instance.tomcat_instance_subsystems()
- if len(system_list) >= 2:
- data.generateServerCert = "false"
- for subsystem in system_list:
- dst = master['pki_instance_path'] + '/conf/' +\
- subsystem.lower() + '/CS.cfg'
- if subsystem != master['pki_subsystem'] and \
- os.path.exists(dst):
- cert3 = self.retrieve_existing_server_cert(dst)
- break
- else:
- cert3 = self.create_system_cert("ssl_server")
- systemCerts.append(cert3)
-
- # Create 'Subsystem Certificate'
- if not config.str2bool(master['pki_clone']):
- cert4 = self.create_system_cert("subsystem")
- systemCerts.append(cert4)
-
- # Create 'Audit Signing Certificate'
- if not config.str2bool(master['pki_clone']):
- if master['pki_subsystem'] != "RA":
- cert5 = self.create_system_cert("audit_signing")
- cert5.signingAlgorithm =\
- master['pki_audit_signing_signing_algorithm']
- systemCerts.append(cert5)
-
- # Create DRM Transport and storage Certificates
- if not config.str2bool(master['pki_clone']):
- if master['pki_subsystem'] == "KRA":
- cert6 = self.create_system_cert("transport")
- systemCerts.append(cert6)
-
- cert7 = self.create_system_cert("storage")
- systemCerts.append(cert7)
-
- data.systemCerts = systemCerts
-
- def set_cloning_parameters(self, data):
- data.isClone = "true"
- data.cloneUri = master['pki_clone_uri']
- data.p12File = master['pki_clone_pkcs12_path']
- data.p12Password = master['pki_clone_pkcs12_password']
- data.replicateSchema = master['pki_clone_replicate_schema']
- data.replicationSecurity =\
- master['pki_clone_replication_security']
- if master['pki_clone_replication_master_port']:
- data.masterReplicationPort =\
- master['pki_clone_replication_master_port']
- if master['pki_clone_replication_clone_port']:
- data.cloneReplicationPort =\
- master['pki_clone_replication_clone_port']
-
- def set_hierarchy_parameters(self, data):
- if master['pki_subsystem'] == "CA":
- if config.str2bool(master['pki_clone']):
- # Cloned CA
- data.hierarchy = "root"
- elif config.str2bool(master['pki_external']):
- # External CA
- data.hierarchy = "join"
- elif config.str2bool(master['pki_subordinate']):
- # Subordinate CA
- data.hierarchy = "join"
- else:
- # PKI CA
- data.hierarchy = "root"
-
- def set_existing_security_domain(self, data):
- data.securityDomainType = "existingdomain"
- data.securityDomainUri = master['pki_security_domain_uri']
- data.securityDomainUser = master['pki_security_domain_user']
- data.securityDomainPassword = master['pki_security_domain_password']
-
- def set_new_security_domain(self, data):
- data.securityDomainType = "newdomain"
- data.securityDomainName = master['pki_security_domain_name']
-
- def set_database_parameters(self, data):
- data.dsHost = master['pki_ds_hostname']
- data.dsPort = master['pki_ds_ldap_port']
- data.baseDN = master['pki_ds_base_dn']
- data.bindDN = master['pki_ds_bind_dn']
- data.database = master['pki_ds_database']
- data.bindpwd = master['pki_ds_password']
- if config.str2bool(master['pki_ds_remove_data']):
- data.removeData = "true"
- else:
- data.removeData = "false"
- if config.str2bool(master['pki_ds_secure_connection']):
- data.secureConn = "true"
- else:
- data.secureConn = "false"
-
- def set_backup_parameters(self, data):
- if config.str2bool(master['pki_backup_keys']):
- data.backupKeys = "true"
- data.backupFile = master['pki_backup_keys_p12']
- data.backupPassword = master['pki_backup_password']
- else:
- data.backupKeys = "false"
-
- def set_admin_parameters(self, data):
- data.adminEmail = master['pki_admin_email']
- data.adminName = master['pki_admin_name']
- data.adminPassword = master['pki_admin_password']
- data.adminProfileID = master['pki_admin_profile_id']
- data.adminUID = master['pki_admin_uid']
- data.adminSubjectDN = master['pki_admin_subject_dn']
- if config.str2bool(master['pki_import_admin_cert']):
- data.importAdminCert = "true"
- # read config from file
- with open(master['pki_admin_cert_file']) as f:
- b64 = f.read().replace('\n','')
- data.adminCert = b64
- else:
- data.importAdminCert = "false"
- data.adminSubjectDN = master['pki_admin_subject_dn']
- if master['pki_admin_cert_request_type'] == "pkcs10":
- data.adminCertRequestType = "pkcs10"
-
- noise_file = os.path.join(
- master['pki_client_database_dir'], "noise")
-
- output_file = os.path.join(
- master['pki_client_database_dir'], "admin_pkcs10.bin")
-
- file.generate_noise_file(
- noise_file, int(master['pki_admin_keysize']))
-
- certutil.generate_certificate_request(
- master['pki_admin_subject_dn'],
- master['pki_admin_keysize'],
- master['pki_client_password_conf'],
- noise_file,
- output_file,
- master['pki_client_database_dir'],
- None, None, True)
-
- # convert output to ascii
- command = ["BtoA", output_file, output_file + ".asc"]
- config.pki_log.info(command,
- extra=config.PKI_INDENTATION_LEVEL_2)
- subprocess.call(command)
-
- with open(output_file + ".asc") as f:
- b64 = f.read().replace('\n','')
-
- data.adminCertRequest = b64
- else:
- print "log.PKI_CONFIG_PKCS10_SUPPORT_ONLY"
- sys.exit(1)
-
- def set_issuing_ca_parameters(self, data):
- if master['pki_subsystem'] != "CA" or\
- config.str2bool(master['pki_clone']) or\
- config.str2bool(master['pki_subordinate']) or\
- config.str2bool(master['pki_external']):
- # PKI KRA, PKI OCSP, PKI RA, PKI TKS, PKI TPS,
- # CA Clone, KRA Clone, OCSP Clone, TKS Clone,
- # Subordinate CA, or External CA
- data.issuingCA = master['pki_issuing_ca']
- if master['pki_subsystem'] == "CA" and\
- config.str2bool(master['pki_external_step_two']):
- # External CA Step 2
- data.stepTwo = "true";
-
- def create_system_cert(self, tag):
- cert = pki.system.SystemCertData()
- cert.tag = master["pki_%s_tag" % tag]
- cert.keyAlgorithm = master["pki_%s_key_algorithm" % tag]
- cert.keySize = master["pki_%s_key_size" % tag]
- cert.keyType = master["pki_%s_key_type" % tag]
- cert.nickname = master["pki_%s_nickname" % tag]
- cert.subjectDN = master["pki_%s_subject_dn" % tag]
- cert.token = master["pki_%s_token" % tag]
- return cert
-
- def retrieve_existing_server_cert(self, cfg_file):
- cs_cfg = PKIConfigParser.read_simple_configuration_file(cfg_file)
- cstype = cs_cfg.get('cs.type').lower()
- cert = pki.system.SystemCertData()
- cert.tag = master["pki_ssl_server_tag"]
- cert.keyAlgorithm = master["pki_ssl_server_key_algorithm"]
- cert.keySize = master["pki_ssl_server_key_size"]
- cert.keyType = master["pki_ssl_server_key_type"]
- cert.nickname = cs_cfg.get(cstype + ".sslserver.nickname")
- cert.cert = cs_cfg.get(cstype + ".sslserver.cert")
- cert.request = cs_cfg.get(cstype + ".sslserver.certreq")
- cert.subjectDN = master["pki_ssl_server_subject_dn"]
- cert.token = cs_cfg.get(cstype + ".sslserver.tokenname")
- return cert
-
-# PKI Deployment Helper Class Instances
-identity = identity()
-namespace = namespace()
-configuration_file = configuration_file()
-#xml_file = xml_file()
-instance = instance()
-directory = directory()
-file = file()
-symlink = symlink()
-war = war()
-password = password()
-certutil = certutil()
-pk12util = pk12util()
-security_domain = security_domain()
-kra_connector = kra_connector()
-systemd = systemd()
diff --git a/base/deploy/src/engine/pkilogging.py b/base/deploy/src/engine/pkilogging.py
deleted file mode 100644
index 319616145..000000000
--- a/base/deploy/src/engine/pkilogging.py
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/python -t
-# Authors:
-# Matthew Harmsen <mharmsen@redhat.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Copyright (C) 2012 Red Hat, Inc.
-# All rights reserved.
-#
-
-# System Imports
-import logging
-import os
-import pprint
-
-sensitive_parameters = []
-
-# Initialize 'pretty print' for objects
-pp = pprint.PrettyPrinter(indent=4)
-
-def format(dict):
- new_dict = {}
-
- # mask sensitive data
- for key in dict:
- if key in sensitive_parameters:
- value = 'XXXXXXXX'
- else:
- value = dict[key]
- new_dict[key] = value
-
- return pp.pformat(new_dict)
-
-# PKI Deployment Logging Functions
-def enable_pki_logger(log_dir, log_name, log_level, console_log_level, name):
- if not os.path.isdir(log_dir):
- try:
- os.makedirs(log_dir)
- except OSError:
- return OSError
-
- # Configure logger
- logger = logging.getLogger(name)
- logger.setLevel(log_level)
-
- # Configure console handler
- console = logging.StreamHandler()
- console.setLevel(console_log_level)
- console_format = logging.Formatter('%(name)-12s: ' +\
- '%(levelname)-8s ' +\
- '%(indent)s%(message)s')
- console.setFormatter(console_format)
- logger.addHandler(console)
-
- # Configure file handler
- file = logging.FileHandler(log_dir + "/" + log_name, 'w')
- file.setLevel(log_level)
- file_format = logging.Formatter('%(asctime)s %(name)-12s: ' +\
- '%(levelname)-8s ' +\
- '%(indent)s%(message)s',
- '%Y-%m-%d %H:%M:%S')
- file.setFormatter(file_format)
- logger.addHandler(file)
-
- return logger
diff --git a/base/deploy/src/engine/pkimanifest.py b/base/deploy/src/engine/pkimanifest.py
deleted file mode 100644
index 04a638f06..000000000
--- a/base/deploy/src/engine/pkimanifest.py
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/python -t
-# Authors:
-# Matthew Harmsen <mharmsen@redhat.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Copyright (C) 2012 Red Hat, Inc.
-# All rights reserved.
-#
-
-# System Imports
-from collections import namedtuple
-import csv
-import sys
-
-
-# PKI Deployment Imports
-import pkiconfig as config
-import pkimessages as log
-
-
-# PKI Deployment Manifest Constants
-RECORD_TYPE_DIRECTORY = "directory"
-RECORD_TYPE_FILE = "file"
-RECORD_TYPE_SYMLINK = "symlink"
-
-
-# PKI Deployment Manifest Record Class
-class record(object):
- __slots__= "name",\
- "type",\
- "user",\
- "group",\
- "uid",\
- "gid",\
- "permissions",\
- "acls",
-
- def items(self):
- "dict style items"
- return [
- (field_name, getattr(self, field_name))
- for field_name in self.__slots__]
-
- def __iter__(self):
- "iterate over fields tuple/list style"
- for field_name in self.__slots__:
- yield getattr(self, field_name)
-
- def __getitem__(self, index):
- "tuple/list style getitem"
- return getattr(self, self.__slots__[index])
-
-
-# PKI Deployment Manifest File Class
-class file:
- global database
- filename = None
-
- def register(self, name):
- self.filename = name
-
- def write(self):
- try:
- fd = open(self.filename, "wt")
- c = csv.writer(fd)
- for record in database:
- c.writerow(tuple(record))
- fd.close()
- except IOError as exc:
- config.pki_log.error(log.PKI_IOERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_1)
- sys.exit(1)
-
- def read(self):
- try:
- fd = open(self.filename, "rt")
- cr = csv.reader(fd)
- for row in cr:
- print tuple(row)
- fd.close()
- except IOError as exc:
- config.pki_log.error(log.PKI_IOERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_1)
- sys.exit(1)
-
-
-# PKI Deployment Global Named Tuples
-database = []
-file = file()
diff --git a/base/deploy/src/engine/pkimessages.py b/base/deploy/src/engine/pkimessages.py
deleted file mode 100644
index a6361dc8b..000000000
--- a/base/deploy/src/engine/pkimessages.py
+++ /dev/null
@@ -1,361 +0,0 @@
-#!/usr/bin/python -t
-# Authors:
-# Matthew Harmsen <mharmsen@redhat.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Copyright (C) 2012 Red Hat, Inc.
-# All rights reserved.
-#
-
-# PKI Deployment Engine Messages
-PKI_DICTIONARY_DEFAULT ="\n"\
-"=====================================================\n"\
-" DISPLAY CONTENTS OF PKI DEFAULT DICTIONARY\n"\
-"====================================================="
-PKI_DICTIONARY_MASTER="\n"\
-"=====================================================\n"\
-" DISPLAY CONTENTS OF PKI MASTER DICTIONARY\n"\
-"====================================================="
-PKI_DICTIONARY_SLOTS="\n"\
-"=====================================================\n"\
-" DISPLAY CONTENTS OF PKI SLOTS DICTIONARY\n"\
-"====================================================="
-PKI_DICTIONARY_SUBSYSTEM="\n"\
-"=====================================================\n"\
-" DISPLAY CONTENTS OF PKI SUBSYSTEM DICTIONARY\n"\
-"====================================================="
-PKI_DICTIONARY_WEB_SERVER="\n"\
-"=====================================================\n"\
-" DISPLAY CONTENTS OF PKI WEB SERVER DICTIONARY\n"\
-"====================================================="
-# NEVER print out 'sensitive' data dictionary!!!
-
-
-# PKI Deployment Log Messages
-PKI_VERBOSITY=\
-"VERBOSITY FLAGS CONSOLE MESSAGE LEVEL LOG MESSAGE LEVEL\n"\
-"=======================================================================\n"\
-" NONE error|warning error|warning|info\n"\
-" -v error|warning|info error|warning|info\n"\
-" -vv error|warning|info error|warning|info|debug\n"\
-" -vvv error|warning|info|debug error|warning|info|debug\n"\
-" "
-
-# PKI Deployment Error Messages
-PKI_BADZIPFILE_ERROR_1 = "zipfile.BadZipFile: %s!"
-PKI_CONFIGURATION_RESTART_1 = "After configuration, the server can be "\
- "operated by the command:\n\n%s"
-PKI_CONFIGURATION_URL_1 = "Please start the configuration by accessing:\n\n%s"
-PKI_CONFIGURATION_WIZARD_RESTART_1 = "After configuration, the server can be "\
- "operated by the command:\n%s"
-PKI_CONFIGURATION_WIZARD_URL_1 = "Configuration Wizard listening on\n%s"
-PKI_DIRECTORY_ALREADY_EXISTS_1 = "Directory '%s' already exists!"
-PKI_DIRECTORY_ALREADY_EXISTS_NOT_A_DIRECTORY_1 = "Directory '%s' already "\
- "exists BUT it is NOT a "\
- "directory!"
-PKI_DIRECTORY_MISSING_OR_NOT_A_DIRECTORY_1 = "Directory '%s' is either "\
- "missing or is NOT a directory!"
-PKI_DNS_DOMAIN_NOT_SET = "A valid DNS domain name MUST be established "\
- "to use PKI services!"
-PKI_FILE_ALREADY_EXISTS_1 = "File '%s' already exists!"
-PKI_FILE_ALREADY_EXISTS_NOT_A_FILE_1 = "File '%s' already "\
- "exists BUT it is NOT a "\
- "file!"
-PKI_FILE_MISSING_OR_NOT_A_FILE_1 = "File '%s' is either missing "\
- "or is NOT a regular file!"
-PKI_FILE_NOT_A_WAR_FILE_1 = "File '%s' is NOT a war file!"
-PKI_INSTANCE_DOES_NOT_EXIST_1 = "PKI instance '%s' does NOT exist!"
-PKI_SECURITY_DATABASES_ALREADY_EXIST_3 = "Security databases '%s', '%s', "\
- "and/or '%s' already exist!"
-PKI_SECURITY_DATABASES_DO_NOT_EXIST_3 = "Security databases '%s', '%s', "\
- "and/or '%s' do NOT exist!"
-PKI_SUBSYSTEM_NOT_INSTALLED_1 = "Package pki-%s is NOT installed!"
-PKI_SUBSYSTEM_ALREADY_EXISTS_2 = "PKI subsystem '%s' for instance '%s' "\
- "already exists!"
-PKI_SUBSYSTEM_DOES_NOT_EXIST_2 = "PKI subsystem '%s' for instance '%s' "\
- "does NOT exist!"
-
-PKI_IOERROR_1 = "IOError: %s!"
-PKI_KEYERROR_1 = "KeyError: %s!"
-PKI_LARGEZIPFILE_ERROR_1 = "zipfile.LargeZipFile: %s!"
-PKI_MANIFEST_MESSAGE_1 = "generating manifest file called '%s'"
-PKI_OSERROR_1 = "OSError: %s!"
-PKI_SHUTIL_ERROR_1 = "shutil.Error: %s!"
-PKI_SUBPROCESS_ERROR_1 = "subprocess.CalledProcessError: %s!"
-PKI_SYMLINK_ALREADY_EXISTS_1 = "Symlink '%s' already exists!"
-PKI_SYMLINK_ALREADY_EXISTS_NOT_A_SYMLINK_1 = "Symlink '%s' already "\
- "exists BUT it is NOT a "\
- "symlink!"
-PKI_SYMLINK_MISSING_OR_NOT_A_SYMLINK_1 = "Symlink '%s' is either missing "\
- "or is NOT a symbolic link!"
-PKI_UNABLE_TO_PARSE_1 = "'Could not parse: '%s'"
-PKI_UNABLE_TO_CREATE_LOG_DIRECTORY_1 = "Could not create log directory '%s'!"
-PKI_VERBOSITY_LEVELS_MESSAGE = "Only up to 3 levels of verbosity are supported!"
-
-
-# PKI Deployment 'pkispawn' and 'pkidestroy' Messages
-PKIDESTROY_BEGIN_MESSAGE_2 = "BEGIN destroying subsystem '%s' of "\
- "instance '%s' . . ."
-PKIDESTROY_END_MESSAGE_2 = "END destroying subsystem '%s' of "\
- "instance '%s'"
-PKIDESTROY_EPILOG =\
-"REMINDER:\n\n"\
-" The default PKI instance path will be calculated and placed in front\n"\
-" of the mandatory '-i <instance>' parameter, and the values that reside\n"\
-" in deployment configuration file that was most recently used\n"\
-" by this instance's 'pkispawn' (or 'pkispawn -u') command will be\n"\
-" utilized by 'pkidestroy' to remove this instance.\n\n"\
-" Finally, if an optional '-p <prefix>' is defined, this value WILL be\n"\
-" prepended to the default PKI instance path which is placed in front\n"\
-" of the specified '-i <instance>' parameter.\n\n" +\
-PKI_VERBOSITY
-PKIRESPAWN_BEGIN_MESSAGE_2 = "BEGIN respawning subsystem '%s' of "\
- "instance '%s' . . ."
-PKIRESPAWN_END_MESSAGE_2 = "END respawning subsystem '%s' of "\
- "instance '%s'"
-PKISPAWN_BEGIN_MESSAGE_2 = "BEGIN spawning subsystem '%s' of "\
- "instance '%s' . . ."
-PKISPAWN_END_MESSAGE_2 = "END spawning subsystem '%s' of "\
- "instance '%s'"
-PKISPAWN_EPILOG =\
-"REMINDER:\n\n"\
-" If two or more Apache or Tomcat PKI 'instances' are specified via\n"\
-" separate configuration files, remember that the following parameters\n"\
-" MUST differ between PKI 'instances':\n\n"\
-" Apache: 'pki_instance_name', 'pki_http_port', and 'pki_https_port'\n"\
-" Tomcat: 'pki_instance_name', 'pki_http_port', 'pki_https_port',\n"\
-" 'pki_ajp_port', and 'pki_tomcat_server_port'\n\n"\
-" Finally, if an optional '-p <prefix>' is defined, this value WILL NOT\n"\
-" be prepended in front of the mandatory '-f <configuration_file>'.\n\n" +\
-PKI_VERBOSITY
-
-
-# PKI Deployment "Helper" Messages
-PKIHELPER_APACHE_INSTANCE_SUBSYSTEMS_2 = "instance '%s' contains '%d' "\
- "Apache PKI subsystems"
-PKIHELPER_APACHE_INSTANCES_2 = "PKI Apache registry '%s' contains '%d' "\
- "Apache PKI instances"
-PKIHELPER_APPLY_SLOT_SUBSTITUTION_1 = "applying in-place "\
- "slot substitutions on '%s'"
-PKIHELPER_CERTUTIL_GENERATE_CSR_1 = "executing '%s'"
-PKIHELPER_CERTUTIL_MISSING_INPUT_FILE = "certutil: Missing "\
- "'-i input-file' option!"
-PKIHELPER_CERTUTIL_MISSING_ISSUER_NAME = "certutil: Missing "\
- "'-c issuer-name' option!"
-PKIHELPER_CERTUTIL_MISSING_NICKNAME = "certutil: Missing "\
- "'-n nickname' option!"
-PKIHELPER_CERTUTIL_MISSING_NOISE_FILE = "certutil: Missing "\
- "'-z noise-file' option!"
-PKIHELPER_CERTUTIL_MISSING_PASSWORD_FILE = "certutil: Missing "\
- "'-f password-file' option!"
-PKIHELPER_CERTUTIL_MISSING_PATH = "certutil: Missing '-d path' option!"
-PKIHELPER_CERTUTIL_MISSING_SERIAL_NUMBER = "certutil: Missing "\
- "'-m serial-number' option!"
-PKIHELPER_CERTUTIL_MISSING_SUBJECT = "certutil: Missing '-s subject' option!"
-PKIHELPER_CERTUTIL_MISSING_TOKEN = "certutil: Missing '-h token' option!"
-PKIHELPER_CERTUTIL_MISSING_TRUSTARGS = "certutil: Missing "\
- "'-t trustargs' option!"
-PKIHELPER_CERTUTIL_MISSING_VALIDITY_PERIOD = "certutil: Missing "\
- "'-v months-valid' option!"
-PKIHELPER_CERTUTIL_SELF_SIGNED_CERTIFICATE_1 = "executing '%s'"
-PKIHELPER_CHMOD_2 = "chmod %o %s"
-PKIHELPER_CHOWN_3 = "chown %s:%s %s"
-PKIHELPER_CHOWN_H_3 = "chown -h %s:%s %s"
-PKIHELPER_COMMAND_LINE_PARAMETER_MISMATCH_2 = "the command-line parameter "\
- "'%s' DOES NOT match the "\
- "configuration file value '%s'!"
-PKIHELPER_COPY_WITH_SLOT_SUBSTITUTION_2 = "copying '%s' --> '%s' "\
- "with slot substitution"
-PKIHELPER_CP_P_2 = "cp -p %s %s"
-PKIHELPER_CP_RP_2 = "cp -rp %s %s"
-PKIHELPER_CREATE_SECURITY_DATABASES_1 = "executing '%s'"
-PKIHELPER_DANGLING_SYMLINK_2 = "Dangling symlink '%s'-->'%s'"
-PKIHELPER_DICTIONARY_MASTER_MISSING_KEY_1 = "KeyError: Master dictionary "\
- "is missing the key called '%s'!"
-PKIHELPER_DIRECTORY_IS_EMPTY_1 = "directory '%s' is empty"
-PKIHELPER_DIRECTORY_IS_NOT_EMPTY_1 = "directory '%s' is NOT empty"
-PKIHELPER_GID_2 = "GID of '%s' is %s"
-PKIHELPER_GROUP_1 = "retrieving GID for '%s' . . ."
-PKIHELPER_GROUP_ADD_2 = "adding GID '%s' for group '%s' . . ."
-PKIHELPER_GROUP_ADD_DEFAULT_2 = "adding default GID '%s' for group '%s' . . ."
-PKIHELPER_GROUP_ADD_GID_KEYERROR_1 = "KeyError: pki_gid %s"
-PKIHELPER_GROUP_ADD_KEYERROR_1 = "KeyError: pki_group %s"
-PKIHELPER_INVALID_SELINUX_CONTEXT_FOR_PORT = "port %s has invalid selinux "\
- "context %s"
-PKIHELPER_IS_A_DIRECTORY_1 = "'%s' is a directory"
-PKIHELPER_IS_A_FILE_1 = "'%s' is a file"
-PKIHELPER_IS_A_SYMLINK_1 = "'%s' is a symlink"
-PKIHELPER_JAR_XF_C_2 = "jar -xf %s -C %s"
-PKIHELPER_KRACONNECTOR_UPDATE_CONTACT =\
- "contacting the CA to update the KRA connector"
-PKIHELPER_KRACONNECTOR_UPDATE_FAILURE = "Failed to update KRA connector on CA"
-PKIHELPER_KRACONNECTOR_UPDATE_FAILURE_2 = "Failed to update KRA connector for %s:%s"
-PKIHELPER_LINK_S_2 = "ln -s %s %s"
-PKIHELPER_MKDIR_1 = "mkdir -p %s"
-PKIHELPER_MODIFY_DIR_1 = "modifying '%s'"
-PKIHELPER_MODIFY_FILE_1 = "modifying '%s'"
-PKIHELPER_MODIFY_SYMLINK_1 = "modifying '%s'"
-PKIHELPER_MUTUALLY_EXCLUSIVE_CLONE_EXTERNAL_CA = "cloned CAs and external "\
- "CAs MUST be MUTUALLY "\
- "EXCLUSIVE in '%s'"
-PKIHELPER_MUTUALLY_EXCLUSIVE_CLONE_EXTERNAL_SUB_CA = "cloned CAs, external "\
- "CAs, and subordinate CAs"\
- "MUST ALL be MUTUALLY "\
- "EXCLUSIVE in '%s'"
-PKIHELPER_MUTUALLY_EXCLUSIVE_CLONE_SUB_CA = "cloned CAs and subordinate "\
- "CAs MUST be MUTUALLY "\
- "EXCLUSIVE in '%s'"
-PKIHELPER_MUTUALLY_EXCLUSIVE_EXTERNAL_SUB_CA = "external CAs and subordinate "\
- "CAs MUST be MUTUALLY "\
- "EXCLUSIVE in '%s'"
-PKIHELPER_NAMESPACE_COLLISION_2 = "PKI instance '%s' would produce a "\
- "namespace collision with '%s'!"
-PKIHELPER_NAMESPACE_RESERVED_NAME_2 = "PKI instance '%s' is already a "\
- "reserved name under '%s'!"
-PKIHELPER_NOISE_FILE_2 = "generating noise file called '%s' and "\
- "filling it with '%d' random bytes"
-PKIHELPER_PASSWORD_CONF_1 = "generating '%s'"
-PKIHELPER_PASSWORD_NOT_FOUND_1 = "no password found for '%s'!"
-PKIHELPER_PK12UTIL_MISSING_DBPWFILE = "pk12util missing "\
- "-k db-password-file option!"
-PKIHELPER_PK12UTIL_MISSING_NICKNAME = "pk12util missing "\
- "-n nickname option!"
-PKIHELPER_PK12UTIL_MISSING_OUTFILE = "pk12util missing "\
- "-o output-file option!"
-PKIHELPER_PK12UTIL_MISSING_PWFILE = "pk12util missing "\
- "-w pw-file option!"
-
-PKIHELPER_PKI_INSTANCE_SUBSYSTEMS_2 = "instance '%s' contains '%d' "\
- "PKI subsystems"
-PKIHELPER_REMOVE_FILTER_SECTION_1 = "removing filter section from '%s'"
-PKIHELPER_RM_F_1 = "rm -f %s"
-PKIHELPER_RM_RF_1 = "rm -rf %s"
-PKIHELPER_RMDIR_1 = "rmdir %s"
-PKIHELPER_SECURITY_DOMAIN_CONTACT_1 =\
- "contacting the security domain master to update security domain '%s'"
-PKIHELPER_SECURITY_DOMAIN_GET_TOKEN_FAILURE_2 =\
- "Failed to get installation token from security domain '%s:%s'"
-PKIHELPER_SECURITY_DOMAIN_UNDEFINED =\
- "No security domain defined.\n"\
- "If this is an unconfigured instance, then that is OK.\n"\
- "Otherwise, manually delete the entry from the security domain master."
-PKIHELPER_SECURITY_DOMAIN_UNREACHABLE_1 =\
- "security domain '%s' may be offline or unreachable!"
-PKIHELPER_SECURITY_DOMAIN_UNREGISTERED_2 =\
- "this '%s' entry may not be registered with security domain '%s'!"
-PKIHELPER_SECURITY_DOMAIN_UPDATE_FAILURE_2 =\
- "this '%s' entry will NOT be deleted from security domain '%s'!"
-PKIHELPER_SECURITY_DOMAIN_UPDATE_FAILURE_3 =\
- "updateDomainXML FAILED to delete this '%s' entry from "\
- "security domain '%s': '%s'"
-PKIHELPER_SECURITY_DOMAIN_UPDATE_SUCCESS_2 =\
- "updateDomainXML SUCCESSFULLY deleted this '%s' entry from "\
- "security domain '%s'"
-PKIHELPER_SELINUX_DISABLED = "Selinux is disabled. Not checking port contexts"
-PKIHELPER_SET_MODE_1 = "setting ownerships, permissions, and acls on '%s'"
-PKIHELPER_SLOT_SUBSTITUTION_2 = "slot substitution: '%s' ==> '%s'"
-PKIHELPER_SSLGET_OUTPUT_1 = "\n"\
- "Dump of 'sslget' output:\n"\
- "=====================================================\n"\
- "%s\n"\
- "====================================================="
-PKIHELPER_SYSTEMD_COMMAND_1 = "executing '%s'"
-PKIHELPER_TOMCAT_INSTANCE_SUBSYSTEMS_2 = "instance '%s' contains '%d' "\
- "Tomcat PKI subsystems"
-PKIHELPER_TOMCAT_INSTANCES_2 = "PKI Tomcat registry '%s' contains '%d' "\
- "Tomcat PKI instances"
-PKIHELPER_TOUCH_1 = "touch %s"
-PKIHELPER_UID_2 = "UID of '%s' is %s"
-PKIHELPER_UNDEFINED_CA_HOST_PORT = "CA Host or Port is undefined"
-PKIHELPER_UNDEFINED_CLIENT_DATABASE_PASSWORD_2 =\
- "Either a value for '%s' MUST be defined in '%s', or "\
- "the randomly generated client pin MUST be used"
-PKIHELPER_UNDEFINED_CONFIGURATION_FILE_ENTRY_2 =\
- "A value for '%s' MUST be defined in '%s'"
-PKIHELPER_UNDEFINED_SUBSYSTEM_NICKNAME = "subsystem nickname not defined"
-PKIHELPER_UNDEFINED_TOKEN_PASSWD_1 = "Password for token '%s' not defined"
-PKIHELPER_USER_1 = "retrieving UID for '%s' . . ."
-PKIHELPER_USER_ADD_2 = "adding UID '%s' for user '%s' . . ."
-PKIHELPER_USER_ADD_DEFAULT_2 = "adding default UID '%s' for user '%s' . . ."
-PKIHELPER_USER_ADD_KEYERROR_1 = "KeyError: pki_user %s"
-PKIHELPER_USER_ADD_UID_KEYERROR_1 = "KeyError: pki_uid %s"
-
-PKI_CONFIG_ADMIN_CERT_SAVE = "saving Admin Certificate to file:"
-PKI_CONFIG_ADMIN_CERT_ATOB = "converting Admin Certificate to binary:"
-PKI_CONFIG_CDATA_TAG = "tag:"
-PKI_CONFIG_CDATA_CERT = "cert:"
-PKI_CONFIG_CDATA_REQUEST = "request:"
-PKI_CONFIG_CONFIGURING_PKI_DATA = "configuring PKI configuration data."
-PKI_CONFIG_CONSTRUCTING_PKI_DATA = "constructing PKI configuration data."
-PKI_CONFIG_PKCS10_SUPPORT_ONLY = "only the 'pkcs10' certificate request type "\
- "is currently supported"
-PKI_CONFIG_EXTERNAL_CA_LOAD = "loading external CA signing certificate "\
- "from file:"
-PKI_CONFIG_EXTERNAL_CA_CHAIN_LOAD = "loading external CA signing certificate "\
- "chain from file:"
-PKI_CONFIG_EXTERNAL_CSR_SAVE = "saving CA Signing CSR to file:"
-PKI_CONFIG_JAVA_CONFIGURATION_EXCEPTION =\
- "Exception from Java Configuration Servlet:"
-PKI_CONFIG_RESPONSE_ADMIN_CERT = "adminCert:"
-PKI_CONFIG_RESPONSE_STATUS = "status:"
-PKI_CONFIG_NOT_YET_IMPLEMENTED_1 = " %s NOT YET IMPLEMENTED"
-
-# PKI Deployment "Scriptlet" Messages
-ADMIN_DOMAIN_DESTROY_1 = "depopulating '%s'"
-ADMIN_DOMAIN_RESPAWN_1 = "repopulating '%s'"
-ADMIN_DOMAIN_SPAWN_1 = "populating '%s'"
-CONFIGURATION_DESTROY_1 = "unconfiguring '%s'"
-CONFIGURATION_RESPAWN_1 = "reconfiguring '%s'"
-CONFIGURATION_SPAWN_1 = "configuring '%s'"
-FINALIZATION_DESTROY_1 = "finalizing '%s'"
-FINALIZATION_RESPAWN_1 = "finalizing '%s'"
-FINALIZATION_SPAWN_1 = "finalizing '%s'"
-INITIALIZATION_DESTROY_1 = "initializing '%s'"
-INITIALIZATION_RESPAWN_1 = "initializing '%s'"
-INITIALIZATION_SPAWN_1 = "initializing '%s'"
-INSTANCE_DESTROY_1 = "depopulating '%s'"
-INSTANCE_RESPAWN_1 = "repopulating '%s'"
-INSTANCE_SPAWN_1 = "populating '%s'"
-RESIDUAL_DESTROY_1 = "depopulating '%s'"
-RESIDUAL_RESPAWN_1 = "repopulating '%s'"
-RESIDUAL_SPAWN_1 = "populating '%s'"
-SECURITY_DATABASES_DESTROY_1 = "removing '%s'"
-SECURITY_DATABASES_RESPAWN_1 = "regenerating '%s'"
-SECURITY_DATABASES_SPAWN_1 = "generating '%s'"
-SELINUX_DESTROY_1 = "depopulating '%s'"
-SELINUX_RESPAWN_1 = "repopulating '%s'"
-SELINUX_SPAWN_1 = "populating '%s'"
-SELINUX_DISABLED_DESTROY_1 = "selinux disabled. skipping unlabelling '%s'"
-SELINUX_DISABLED_SPAWN_1 = "selinux disabled. skipping labelling '%s'"
-SLOT_ASSIGNMENT_DESTROY_1 = "unassigning slots for '%s'"
-SLOT_ASSIGNMENT_RESPAWN_1 = "reassigning slots for '%s'"
-SLOT_ASSIGNMENT_SPAWN_1 = "assigning slots for '%s'"
-SUBSYSTEM_DESTROY_1 = "depopulating '%s'"
-SUBSYSTEM_RESPAWN_1 = "repopulating '%s'"
-SUBSYSTEM_SPAWN_1 = "populating '%s'"
-WEBAPP_DEPLOYMENT_DESTROY_1 = "removing '%s'"
-WEBAPP_DEPLOYMENT_RESPAWN_1 = "redeploying '%s'"
-WEBAPP_DEPLOYMENT_SPAWN_1 = "deploying '%s'"
-SKIP_ADMIN_DOMAIN_SPAWN_1 = "skip populating '%s'"
-SKIP_CONFIGURATION_SPAWN_1 = "skip configuring '%s'"
-SKIP_FINALIZATION_SPAWN_1 = "skip finalizing '%s'"
-SKIP_INITIALIZATION_SPAWN_1 = "skip initializing '%s'"
-SKIP_INSTANCE_SPAWN_1 = "skip populating '%s'"
-SKIP_RESIDUAL_SPAWN_1 = "skip populating '%s'"
-SKIP_SECURITY_DATABASES_SPAWN_1 = "skip generating '%s'"
-SKIP_SELINUX_SPAWN_1 = "skip populating '%s'"
-SKIP_SLOT_ASSIGNMENT_SPAWN_1 = "skip assigning slots for '%s'"
-SKIP_SUBSYSTEM_SPAWN_1 = "skip populating '%s'"
-SKIP_WEBAPP_DEPLOYMENT_SPAWN_1 = "skip deploying '%s'"
diff --git a/base/deploy/src/engine/pkiparser.py b/base/deploy/src/engine/pkiparser.py
deleted file mode 100644
index c4bf9b886..000000000
--- a/base/deploy/src/engine/pkiparser.py
+++ /dev/null
@@ -1,1069 +0,0 @@
-#!/usr/bin/python -t
-# Authors:
-# Matthew Harmsen <mharmsen@redhat.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Copyright (C) 2012 Red Hat, Inc.
-# All rights reserved.
-#
-
-# System Imports
-import ConfigParser
-import argparse
-import getpass
-import ldap
-import logging
-import os
-import random
-import string
-import subprocess
-import sys
-import time
-
-
-# PKI Deployment Imports
-import pkilogging
-import pkiconfig as config
-import pkimessages as log
-
-import pki.account
-import pki.client
-import pki.system
-
-class PKIConfigParser:
-
- COMMENT_CHAR = '#'
- OPTION_CHAR = '='
-
- def __init__(self, description, epilog):
- self.pki_config = None
-
- "Read and process command-line options"
- self.arg_parser = argparse.ArgumentParser(
- description=description,
- add_help=False,
- formatter_class=argparse.RawDescriptionHelpFormatter,
- epilog=epilog)
-
- # Establish 'Mandatory' command-line options
- self.mandatory = self.arg_parser.add_argument_group('mandatory arguments')
-
- # Establish 'Optional' command-line options
- self.optional = self.arg_parser.add_argument_group('optional arguments')
- self.optional.add_argument('-s',
- dest='pki_subsystem', action='store',
- nargs=1, choices=config.PKI_SUBSYSTEMS,
- metavar='<subsystem>',
- help='where <subsystem> is '
- 'CA, KRA, OCSP, RA, TKS, or TPS')
- self.optional.add_argument('-h', '--help',
- dest='help', action='help',
- help='show this help message and exit')
- self.optional.add_argument('-v',
- dest='pki_verbosity', action='count',
- help='display verbose information (details below)')
-
- # Establish 'Test' command-line options
- test = self.arg_parser.add_argument_group('test arguments')
- test.add_argument('-p',
- dest='pki_root_prefix', action='store',
- nargs=1, metavar='<prefix>',
- help='directory prefix to specify local directory '
- '[TEST ONLY]')
-
- self.indent = 0
-
- # PKI Deployment Helper Functions
- def process_command_line_arguments(self, argv):
-
- # Parse command-line options
- args = self.arg_parser.parse_args()
-
- # Process 'Mandatory' command-line options
-
- # Process 'Optional' command-line options
- # '-v'
- if args.pki_verbosity == 1:
- config.pki_console_log_level = logging.INFO
- config.pki_log_level = logging.INFO
- elif args.pki_verbosity == 2:
- config.pki_console_log_level = logging.INFO
- config.pki_log_level = logging.DEBUG
- elif args.pki_verbosity == 3:
- config.pki_console_log_level = logging.DEBUG
- config.pki_log_level = logging.DEBUG
- elif args.pki_verbosity > 3:
- print "ERROR: " + log.PKI_VERBOSITY_LEVELS_MESSAGE
- print
- self.arg_parser.print_help()
- self.arg_parser.exit(-1);
- else:
- # Set default log levels
- config.pki_console_log_level = logging.WARNING
- config.pki_log_level = logging.INFO
-
- # Process 'Test' command-line options
- # '-p'
- if args.pki_root_prefix is None:
- config.pki_root_prefix = ""
- else:
- config.pki_root_prefix = str(args.pki_root_prefix).strip('[\']')
-
- return args
-
-
- def validate(self):
-
- # Validate command-line options
- if len(config.pki_root_prefix) > 0:
- if not os.path.exists(config.pki_root_prefix) or\
- not os.path.isdir(config.pki_root_prefix):
- print "ERROR: " +\
- log.PKI_DIRECTORY_MISSING_OR_NOT_A_DIRECTORY_1 %\
- config.pki_root_prefix
- print
- self.arg_parser.print_help()
- self.arg_parser.exit(-1);
-
- # always default that configuration file exists
- if not os.path.exists(config.default_deployment_cfg) or\
- not os.path.isfile(config.default_deployment_cfg):
- print "ERROR: " +\
- log.PKI_FILE_MISSING_OR_NOT_A_FILE_1 %\
- config.default_deployment_cfg
- print
- self.arg_parser.print_help()
- self.arg_parser.exit(-1);
-
- if config.user_deployment_cfg:
- # verify user configuration file exists
- if not os.path.exists(config.user_deployment_cfg) or\
- not os.path.isfile(config.user_deployment_cfg):
- print "ERROR: " +\
- log.PKI_FILE_MISSING_OR_NOT_A_FILE_1 %\
- config.user_deployment_cfg
- print
- parser.arg_parser.print_help()
- parser.arg_parser.exit(-1);
-
-
- def init_config(self):
-
- # RESTEasy
- resteasy_lib = subprocess.check_output(\
- 'source /etc/pki/pki.conf && echo $RESTEASY_LIB',
- shell=True).strip()
-
- # JNI jar location
- jni_jar_dir = subprocess.check_output(\
- 'source /etc/pki/pki.conf && echo $JNI_JAR_DIR',
- shell=True).strip()
-
- if config.pki_subsystem in config.PKI_TOMCAT_SUBSYSTEMS:
- default_instance_name = 'pki-tomcat'
- default_http_port = '8080'
- default_https_port = '8443'
- else:
- default_instance_name = 'pki-apache'
- default_http_port = '80'
- default_https_port = '443'
-
- self.pki_config = ConfigParser.SafeConfigParser({
- 'pki_instance_name': default_instance_name,
- 'pki_http_port': default_http_port,
- 'pki_https_port': default_https_port,
- 'pki_dns_domainname': config.pki_dns_domainname,
- 'pki_subsystem': config.pki_subsystem,
- 'pki_subsystem_type': config.pki_subsystem.lower(),
- 'pki_root_prefix' : config.pki_root_prefix,
- 'resteasy_lib': resteasy_lib,
- 'jni_jar_dir': jni_jar_dir,
- 'home_dir': os.path.expanduser("~"),
- 'pki_hostname': config.pki_hostname})
-
- # Make keys case-sensitive!
- self.pki_config.optionxform = str
-
- config.user_config = ConfigParser.SafeConfigParser()
- config.user_config.optionxform = str
-
- with open(config.default_deployment_cfg) as f:
- self.pki_config.readfp(f)
-
- self.flatten_master_dict()
-
-
- # The following code is based heavily upon
- # "http://www.decalage.info/en/python/configparser"
- @staticmethod
- def read_simple_configuration_file(filename):
- values = {}
- f = open(filename)
- for line in f:
- # First, remove comments:
- if PKIConfigParser.COMMENT_CHAR in line:
- # split on comment char, keep only the part before
- line, comment = line.split(PKIConfigParser.COMMENT_CHAR, 1)
- # Second, find lines with an name=value:
- if PKIConfigParser.OPTION_CHAR in line:
- # split on name char:
- name, value = line.split(PKIConfigParser.OPTION_CHAR, 1)
- # strip spaces:
- name = name.strip()
- value = value.strip()
- # store in dictionary:
- values[name] = value
- f.close()
- return values
-
-
- def set_property(self, section, property, value):
- if section != "DEFAULT" and not self.pki_config.has_section(section):
- self.pki_config.add_section(section)
- self.pki_config.set(section, property, value)
- self.flatten_master_dict()
-
- if section != "DEFAULT" and not config.user_config.has_section(section):
- config.user_config.add_section(section)
- config.user_config.set(section, property, value)
-
-
- def print_text(self, message):
- print ' ' * self.indent + message
-
- def read_text(self, message,
- section=None, property=None, default=None,
- options=None, sign=':', allowEmpty=True, caseSensitive=True):
-
- if default is None and property is not None:
- default = config.pki_master_dict[property]
- if default:
- message = message + ' [' + default + ']'
- message = ' ' * self.indent + message + sign + ' '
-
- done = False
- while not done:
- value = raw_input(message)
- value = value.strip()
-
- if len(value) == 0: # empty value
- if allowEmpty:
- value = default
- done = True
- break
-
- else: # non-empty value
- if options is not None:
- for v in options:
- if caseSensitive:
- if v == value:
- done = True
- break
- else:
- if v.lower() == value.lower():
- done = True
- break
- else:
- done = True
- break
-
- value = value.replace("%", "%%")
- if section:
- self.set_property(section, property, value)
-
- return value
-
-
- def read_password(self, message, section=None, property=None,
- verifyMessage=None):
- message = ' ' * self.indent + message + ': '
- if verifyMessage is not None:
- verifyMessage = ' ' * self.indent + verifyMessage + ': '
-
- while True:
- password = ''
- while len(password) == 0:
- password = getpass.getpass(prompt=message)
-
- if verifyMessage is not None:
- verification = ''
- while len(verification) == 0:
- verification = getpass.getpass(prompt=verifyMessage)
-
- if password != verification:
- self.print_text('Passwords do not match.')
- continue
-
- break
-
- password = password.replace("%", "%%")
- if section:
- self.set_property(section, property, password)
-
- return password
-
- def read_pki_configuration_file(self):
- "Read configuration file sections into dictionaries"
- rv = 0
- try:
- if config.user_deployment_cfg:
- print 'Loading deployment configuration from ' + config.user_deployment_cfg + '.'
- self.pki_config.read([config.user_deployment_cfg])
-
- except ConfigParser.ParsingError, err:
- print err
- rv = err
- return rv
-
-
- def flatten_master_dict(self):
- config.pki_master_dict.update(__name__="PKI Master Dictionary")
-
- default_dict = dict(self.pki_config.items('DEFAULT'))
- default_dict[0] = None
- config.pki_master_dict.update(default_dict)
-
- web_server_dict = None
- if config.pki_subsystem in config.PKI_TOMCAT_SUBSYSTEMS:
- if self.pki_config.has_section('Tomcat'):
- web_server_dict = dict(self.pki_config.items('Tomcat'))
- else:
- if self.pki_config.has_section('Apache'):
- web_server_dict = dict(self.pki_config.items('Apache'))
-
- if web_server_dict:
- web_server_dict[0] = None
- config.pki_master_dict.update(web_server_dict)
-
- if self.pki_config.has_section(config.pki_subsystem):
- subsystem_dict = dict(self.pki_config.items(config.pki_subsystem))
- subsystem_dict[0] = None
- config.pki_master_dict.update(subsystem_dict)
-
-
- def ds_connect(self):
-
- hostname = config.pki_master_dict['pki_ds_hostname']
-
- if config.str2bool(config.pki_master_dict['pki_ds_secure_connection']):
- protocol = 'ldaps'
- port = config.pki_master_dict['pki_ds_ldaps_port']
- else:
- protocol = 'ldap'
- port = config.pki_master_dict['pki_ds_ldap_port']
-
- self.ds_connection = ldap.initialize(protocol + '://' + hostname + ':' + port)
- self.ds_connection.search_s('', ldap.SCOPE_BASE)
-
- def ds_bind(self):
- self.ds_connection.simple_bind_s(
- config.pki_master_dict['pki_ds_bind_dn'],
- config.pki_master_dict['pki_ds_password'])
-
- def ds_base_dn_exists(self):
- try:
- results = self.ds_connection.search_s(
- config.pki_master_dict['pki_ds_base_dn'],
- ldap.SCOPE_BASE)
-
- if results is None or len(results) == 0:
- return False
-
- return True
-
- except ldap.NO_SUCH_OBJECT as e:
- return False
-
- def ds_close(self):
- self.ds_connection.unbind_s()
-
- def sd_connect(self):
- self.sd_connection = pki.client.PKIConnection(
- protocol='https',
- hostname=config.pki_master_dict['pki_security_domain_hostname'],
- port=config.pki_master_dict['pki_security_domain_https_port'],
- subsystem='ca')
-
- def sd_get_info(self):
- sd = pki.system.SecurityDomainClient(self.sd_connection)
- return sd.getSecurityDomainInfo()
-
- def sd_authenticate(self):
- self.sd_connection.authenticate(
- config.pki_master_dict['pki_security_domain_user'],
- config.pki_master_dict['pki_security_domain_password'])
-
- account = pki.account.AccountClient(self.sd_connection)
- account.login()
- account.logout()
-
- def compose_pki_master_dictionary(self):
- "Create a single master PKI dictionary from the sectional dictionaries"
- try:
- # 'pkispawn'/'pkirespawn'/'pkidestroy' name/value pairs
- config.pki_master_dict['pki_deployment_executable'] =\
- config.pki_deployment_executable
- config.pki_master_dict['pki_install_time'] = config.pki_install_time
- config.pki_master_dict['pki_timestamp'] = config.pki_timestamp
- config.pki_master_dict['pki_certificate_timestamp'] =\
- config.pki_certificate_timestamp
- config.pki_master_dict['pki_architecture'] = config.pki_architecture
- config.pki_master_dict['pki_default_deployment_cfg'] = config.default_deployment_cfg
- config.pki_master_dict['pki_user_deployment_cfg'] = config.user_deployment_cfg
- config.pki_master_dict['pki_deployed_instance_name'] =\
- config.pki_deployed_instance_name
- # Generate random 'pin's for use as security database passwords
- # and add these to the "sensitive" key value pairs read in from
- # the configuration file
- pin_low = 100000000000
- pin_high = 999999999999
- config.pki_master_dict['pki_pin'] =\
- random.randint(pin_low, pin_high)
- config.pki_master_dict['pki_client_pin'] =\
- random.randint(pin_low, pin_high)
-
- self.flatten_master_dict()
-
- pkilogging.sensitive_parameters = config.pki_master_dict['sensitive_parameters'].split()
-
- # PKI Target (slot substitution) name/value pairs
- config.pki_master_dict['pki_target_cs_cfg'] =\
- os.path.join(
- config.pki_master_dict['pki_subsystem_configuration_path'],
- "CS.cfg")
- config.pki_master_dict['pki_target_registry'] =\
- os.path.join(config.pki_master_dict['pki_instance_registry_path'],
- config.pki_master_dict['pki_instance_name'])
- if config.pki_master_dict['pki_subsystem'] == "CA" and\
- config.str2bool(config.pki_master_dict['pki_external_step_two']):
- # Use the 'pki_one_time_pin' established during the setup of
- # External CA Step 1
- if os.path.exists(config.pki_master_dict['pki_target_cs_cfg'])\
- and\
- os.path.isfile(config.pki_master_dict['pki_target_cs_cfg']):
- cs_cfg = self.read_simple_configuration_file(
- config.pki_master_dict['pki_target_cs_cfg'])
- config.pki_master_dict['pki_one_time_pin'] =\
- cs_cfg.get('preop.pin')
- else:
- config.pki_log.error(log.PKI_FILE_MISSING_OR_NOT_A_FILE_1,
- config.pki_master_dict['pki_target_cs_cfg'],
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- else:
- # Generate a one-time pin to be used prior to configuration
- # and add this to the "sensitive" key value pairs read in from
- # the configuration file
- config.pki_master_dict['pki_one_time_pin'] =\
- ''.join(random.choice(string.ascii_letters + string.digits)\
- for x in range(20))
- if config.pki_master_dict['pki_subsystem'] in\
- config.PKI_TOMCAT_SUBSYSTEMS:
- config.pki_master_dict['pki_target_catalina_properties'] =\
- os.path.join(
- config.pki_master_dict['pki_instance_configuration_path'],
- "catalina.properties")
- config.pki_master_dict['pki_target_servercertnick_conf'] =\
- os.path.join(
- config.pki_master_dict['pki_instance_configuration_path'],
- "serverCertNick.conf")
- config.pki_master_dict['pki_target_server_xml'] =\
- os.path.join(
- config.pki_master_dict['pki_instance_configuration_path'],
- "server.xml")
- config.pki_master_dict['pki_target_context_xml'] =\
- os.path.join(
- config.pki_master_dict['pki_instance_configuration_path'],
- "context.xml")
- config.pki_master_dict['pki_target_tomcat_conf_instance_id'] =\
- config.pki_master_dict['pki_root_prefix'] +\
- "/etc/sysconfig/" +\
- config.pki_master_dict['pki_instance_name']
- config.pki_master_dict['pki_target_tomcat_conf'] =\
- os.path.join(
- config.pki_master_dict['pki_instance_configuration_path'],
- "tomcat.conf")
- # in-place slot substitution name/value pairs
- config.pki_master_dict['pki_target_velocity_properties'] =\
- os.path.join(
- config.pki_master_dict['pki_tomcat_webapps_subsystem_path'],
- "WEB-INF",
- "velocity.properties")
- config.pki_master_dict['pki_target_subsystem_web_xml'] =\
- os.path.join(
- config.pki_master_dict['pki_tomcat_webapps_subsystem_path'],
- "WEB-INF",
- "web.xml")
- config.pki_master_dict['pki_target_subsystem_web_xml_orig'] =\
- os.path.join(
- config.pki_master_dict['pki_tomcat_webapps_subsystem_path'],
- "WEB-INF",
- "web.xml.orig")
- # subystem-specific slot substitution name/value pairs
- if config.pki_master_dict['pki_subsystem'] == "CA":
- config.pki_master_dict['pki_target_flatfile_txt'] =\
- os.path.join(config.pki_master_dict\
- ['pki_subsystem_configuration_path'],
- "flatfile.txt")
- config.pki_master_dict['pki_target_proxy_conf'] =\
- os.path.join(config.pki_master_dict\
- ['pki_subsystem_configuration_path'],
- "proxy.conf")
- config.pki_master_dict['pki_target_registry_cfg'] =\
- os.path.join(config.pki_master_dict\
- ['pki_subsystem_configuration_path'],
- "registry.cfg")
- # '*.profile'
- config.pki_master_dict['pki_target_admincert_profile'] =\
- os.path.join(config.pki_master_dict\
- ['pki_subsystem_configuration_path'],
- "adminCert.profile")
- config.pki_master_dict['pki_target_caauditsigningcert_profile']\
- = os.path.join(config.pki_master_dict\
- ['pki_subsystem_configuration_path'],
- "caAuditSigningCert.profile")
- config.pki_master_dict['pki_target_cacert_profile'] =\
- os.path.join(config.pki_master_dict\
- ['pki_subsystem_configuration_path'],
- "caCert.profile")
- config.pki_master_dict['pki_target_caocspcert_profile'] =\
- os.path.join(config.pki_master_dict\
- ['pki_subsystem_configuration_path'],
- "caOCSPCert.profile")
- config.pki_master_dict['pki_target_servercert_profile'] =\
- os.path.join(config.pki_master_dict\
- ['pki_subsystem_configuration_path'],
- "serverCert.profile")
- config.pki_master_dict['pki_target_subsystemcert_profile'] =\
- os.path.join(config.pki_master_dict\
- ['pki_subsystem_configuration_path'],
- "subsystemCert.profile")
- # in-place slot substitution name/value pairs
- config.pki_master_dict['pki_target_profileselect_template'] =\
- os.path.join(
- config.pki_master_dict\
- ['pki_tomcat_webapps_subsystem_path'],
- "ee",
- config.pki_master_dict['pki_subsystem'].lower(),
- "ProfileSelect.template")
- elif config.pki_master_dict['pki_subsystem'] == "KRA":
- # '*.profile'
- config.pki_master_dict['pki_target_servercert_profile'] =\
- os.path.join(config.pki_master_dict\
- ['pki_subsystem_configuration_path'],
- "serverCert.profile")
- config.pki_master_dict['pki_target_storagecert_profile'] =\
- os.path.join(config.pki_master_dict\
- ['pki_subsystem_configuration_path'],
- "storageCert.profile")
- config.pki_master_dict['pki_target_subsystemcert_profile'] =\
- os.path.join(config.pki_master_dict\
- ['pki_subsystem_configuration_path'],
- "subsystemCert.profile")
- config.pki_master_dict['pki_target_transportcert_profile'] =\
- os.path.join(config.pki_master_dict\
- ['pki_subsystem_configuration_path'],
- "transportCert.profile")
- # Slot assignment name/value pairs
- # NOTE: Master key == Slots key; Master value ==> Slots value
- config.pki_master_dict['PKI_INSTANCE_ID_SLOT'] =\
- config.pki_master_dict['pki_instance_name']
- config.pki_master_dict['PKI_INSTANCE_INITSCRIPT_SLOT'] =\
- os.path.join(config.pki_master_dict['pki_instance_path'],
- config.pki_master_dict['pki_instance_name'])
- config.pki_master_dict['PKI_REGISTRY_FILE_SLOT'] =\
- os.path.join(config.pki_master_dict['pki_subsystem_registry_path'],
- config.pki_master_dict['pki_instance_name'])
- if config.pki_master_dict['pki_subsystem'] in\
- config.PKI_APACHE_SUBSYSTEMS:
- config.pki_master_dict['FORTITUDE_APACHE_SLOT'] = None
- config.pki_master_dict['FORTITUDE_AUTH_MODULES_SLOT'] = None
- config.pki_master_dict['FORTITUDE_DIR_SLOT'] = None
- config.pki_master_dict['FORTITUDE_LIB_DIR_SLOT'] = None
- config.pki_master_dict['FORTITUDE_MODULE_SLOT'] = None
- config.pki_master_dict['FORTITUDE_NSS_MODULES_SLOT'] = None
- config.pki_master_dict['HTTPD_CONF_SLOT'] = None
- config.pki_master_dict['LIB_PREFIX_SLOT'] = None
- config.pki_master_dict['NON_CLIENTAUTH_SECURE_PORT_SLOT'] = None
- config.pki_master_dict['NSS_CONF_SLOT'] = None
- config.pki_master_dict['OBJ_EXT_SLOT'] = None
- config.pki_master_dict['PKI_LOCKDIR_SLOT'] =\
- os.path.join("/var/lock/pki",
- "apache")
- config.pki_master_dict['PKI_PIDDIR_SLOT'] =\
- os.path.join("/var/run/pki",
- "apache")
- config.pki_master_dict['PKI_WEB_SERVER_TYPE_SLOT'] = "apache"
- config.pki_master_dict['PORT_SLOT'] = None
- config.pki_master_dict['PROCESS_ID_SLOT'] = None
- config.pki_master_dict['REQUIRE_CFG_PL_SLOT'] = None
- config.pki_master_dict['SECURE_PORT_SLOT'] = None
- config.pki_master_dict['SECURITY_LIBRARIES_SLOT'] = None
- config.pki_master_dict['SERVER_NAME_SLOT'] = None
- config.pki_master_dict['SERVER_ROOT_SLOT'] = None
- config.pki_master_dict['SYSTEM_LIBRARIES_SLOT'] = None
- config.pki_master_dict['SYSTEM_USER_LIBRARIES_SLOT'] = None
- config.pki_master_dict['TMP_DIR_SLOT'] = None
- config.pki_master_dict['TPS_DIR_SLOT'] = None
- elif config.pki_master_dict['pki_subsystem'] in\
- config.PKI_TOMCAT_SUBSYSTEMS:
- config.pki_master_dict['INSTALL_TIME_SLOT'] =\
- config.pki_master_dict['pki_install_time']
- config.pki_master_dict['PKI_ADMIN_SECURE_PORT_SLOT'] =\
- config.pki_master_dict['pki_https_port']
- config.pki_master_dict\
- ['PKI_ADMIN_SECURE_PORT_CONNECTOR_NAME_SLOT'] =\
- "Unused"
- config.pki_master_dict\
- ['PKI_ADMIN_SECURE_PORT_SERVER_COMMENT_SLOT'] =\
- ""
- config.pki_master_dict['PKI_AGENT_CLIENTAUTH_SLOT'] =\
- "want"
- config.pki_master_dict['PKI_AGENT_SECURE_PORT_SLOT'] =\
- config.pki_master_dict['pki_https_port']
- config.pki_master_dict['PKI_AJP_PORT_SLOT'] =\
- config.pki_master_dict['pki_ajp_port']
- config.pki_master_dict['PKI_AJP_REDIRECT_PORT_SLOT'] =\
- config.pki_master_dict['pki_https_port']
- config.pki_master_dict['PKI_CERT_DB_PASSWORD_SLOT'] =\
- config.pki_master_dict['pki_pin']
- config.pki_master_dict['PKI_CFG_PATH_NAME_SLOT'] =\
- config.pki_master_dict['pki_target_cs_cfg']
- config.pki_master_dict\
- ['PKI_CLOSE_SEPARATE_PORTS_SERVER_COMMENT_SLOT'] =\
- "-->"
- config.pki_master_dict\
- ['PKI_CLOSE_SEPARATE_PORTS_WEB_COMMENT_SLOT'] =\
- "-->"
- config.pki_master_dict['PKI_EE_SECURE_CLIENT_AUTH_PORT_SLOT'] =\
- config.pki_master_dict['pki_https_port']
- config.pki_master_dict\
- ['PKI_EE_SECURE_CLIENT_AUTH_PORT_CONNECTOR_NAME_SLOT'] =\
- "Unused"
- config.pki_master_dict\
- ['PKI_EE_SECURE_CLIENT_AUTH_PORT_SERVER_COMMENT_SLOT'] =\
- ""
- config.pki_master_dict['PKI_EE_SECURE_CLIENT_AUTH_PORT_UI_SLOT'] =\
- config.pki_master_dict['pki_https_port']
- config.pki_master_dict['PKI_EE_SECURE_PORT_SLOT'] =\
- config.pki_master_dict['pki_https_port']
- config.pki_master_dict['PKI_EE_SECURE_PORT_CONNECTOR_NAME_SLOT'] =\
- "Unused"
- config.pki_master_dict['PKI_EE_SECURE_PORT_SERVER_COMMENT_SLOT'] =\
- ""
- config.pki_master_dict['PKI_GROUP_SLOT'] =\
- config.pki_master_dict['pki_group']
- config.pki_master_dict['PKI_INSTANCE_PATH_SLOT'] =\
- config.pki_master_dict['pki_instance_path']
- config.pki_master_dict['PKI_INSTANCE_ROOT_SLOT'] =\
- config.pki_master_dict['pki_path']
- config.pki_master_dict['PKI_LOCKDIR_SLOT'] =\
- os.path.join("/var/lock/pki",
- "tomcat")
- config.pki_master_dict['PKI_MACHINE_NAME_SLOT'] =\
- config.pki_master_dict['pki_hostname']
- config.pki_master_dict\
- ['PKI_OPEN_SEPARATE_PORTS_SERVER_COMMENT_SLOT'] =\
- "<!--"
- config.pki_master_dict\
- ['PKI_OPEN_SEPARATE_PORTS_WEB_COMMENT_SLOT'] =\
- "<!--"
- config.pki_master_dict['PKI_PIDDIR_SLOT'] =\
- os.path.join("/var/run/pki",
- "tomcat")
- if config.str2bool(config.pki_master_dict['pki_enable_proxy']):
- config.pki_master_dict['PKI_CLOSE_AJP_PORT_COMMENT_SLOT'] =\
- ""
- config.pki_master_dict['PKI_CLOSE_ENABLE_PROXY_COMMENT_SLOT'] =\
- ""
- config.pki_master_dict['PKI_PROXY_SECURE_PORT_SLOT'] =\
- config.pki_master_dict['pki_proxy_https_port']
- config.pki_master_dict['PKI_PROXY_UNSECURE_PORT_SLOT'] =\
- config.pki_master_dict['pki_proxy_http_port']
- config.pki_master_dict['PKI_OPEN_AJP_PORT_COMMENT_SLOT'] =\
- ""
- config.pki_master_dict['PKI_OPEN_ENABLE_PROXY_COMMENT_SLOT'] =\
- ""
- else:
- config.pki_master_dict['PKI_CLOSE_AJP_PORT_COMMENT_SLOT'] =\
- "-->"
- config.pki_master_dict['PKI_CLOSE_ENABLE_PROXY_COMMENT_SLOT'] =\
- "-->"
- config.pki_master_dict['PKI_PROXY_SECURE_PORT_SLOT'] = ""
- config.pki_master_dict['PKI_PROXY_UNSECURE_PORT_SLOT'] = ""
- config.pki_master_dict['PKI_OPEN_AJP_PORT_COMMENT_SLOT'] =\
- "<!--"
- config.pki_master_dict['PKI_OPEN_ENABLE_PROXY_COMMENT_SLOT'] =\
- "<!--"
- config.pki_master_dict['PKI_TMPDIR_SLOT'] =\
- config.pki_master_dict['pki_tomcat_tmpdir_path']
- config.pki_master_dict['PKI_RESTEASY_LIB_SLOT'] =\
- config.pki_master_dict['resteasy_lib']
- config.pki_master_dict['PKI_RANDOM_NUMBER_SLOT'] =\
- config.pki_master_dict['pki_one_time_pin']
- config.pki_master_dict['PKI_SECURE_PORT_SLOT'] =\
- config.pki_master_dict['pki_https_port']
- config.pki_master_dict['PKI_SECURE_PORT_CONNECTOR_NAME_SLOT'] =\
- "Secure"
- config.pki_master_dict['PKI_SECURE_PORT_SERVER_COMMENT_SLOT'] =\
- "<!-- " +\
- "Shared Ports: Agent, EE, and Admin Secure Port Connector " +\
- "-->"
- config.pki_master_dict['PKI_SECURITY_MANAGER_SLOT'] =\
- config.pki_master_dict['pki_security_manager']
- config.pki_master_dict['PKI_SERVER_XML_CONF_SLOT'] =\
- config.pki_master_dict['pki_target_server_xml']
- config.pki_master_dict['PKI_SUBSYSTEM_DIR_SLOT'] =\
- config.pki_master_dict['pki_subsystem'].lower() + "/"
- config.pki_master_dict['PKI_SUBSYSTEM_TYPE_SLOT'] =\
- config.pki_master_dict['pki_subsystem'].lower()
- config.pki_master_dict['PKI_SYSTEMD_SERVICENAME_SLOT'] =\
- "pki-tomcatd" + "@" +\
- config.pki_master_dict['pki_instance_name'] + ".service"
- config.pki_master_dict['PKI_UNSECURE_PORT_SLOT'] =\
- config.pki_master_dict['pki_http_port']
- config.pki_master_dict['PKI_UNSECURE_PORT_CONNECTOR_NAME_SLOT'] =\
- "Unsecure"
- config.pki_master_dict['PKI_UNSECURE_PORT_SERVER_COMMENT_SLOT'] =\
- "<!-- Shared Ports: Unsecure Port Connector -->"
- config.pki_master_dict['PKI_USER_SLOT'] =\
- config.pki_master_dict['pki_user']
- config.pki_master_dict['PKI_WEB_SERVER_TYPE_SLOT'] =\
- "tomcat"
- config.pki_master_dict['PKI_WEBAPPS_NAME_SLOT'] =\
- "webapps"
- config.pki_master_dict['TOMCAT_CFG_SLOT'] =\
- config.pki_master_dict['pki_target_tomcat_conf']
- config.pki_master_dict['TOMCAT_INSTANCE_COMMON_LIB_SLOT'] =\
- os.path.join(
- config.pki_master_dict['pki_tomcat_common_lib_path'],
- "*.jar")
- config.pki_master_dict['TOMCAT_LOG_DIR_SLOT'] =\
- config.pki_master_dict['pki_instance_log_path']
- config.pki_master_dict['TOMCAT_PIDFILE_SLOT'] =\
- "/var/run/pki/tomcat/" + config.pki_master_dict['pki_instance_name'] + ".pid"
- config.pki_master_dict['TOMCAT_SERVER_PORT_SLOT'] =\
- config.pki_master_dict['pki_tomcat_server_port']
- config.pki_master_dict['TOMCAT_SSL2_CIPHERS_SLOT'] =\
- "-SSL2_RC4_128_WITH_MD5," +\
- "-SSL2_RC4_128_EXPORT40_WITH_MD5," +\
- "-SSL2_RC2_128_CBC_WITH_MD5," +\
- "-SSL2_RC2_128_CBC_EXPORT40_WITH_MD5," +\
- "-SSL2_DES_64_CBC_WITH_MD5," +\
- "-SSL2_DES_192_EDE3_CBC_WITH_MD5"
- config.pki_master_dict['TOMCAT_SSL3_CIPHERS_SLOT'] =\
- "-SSL3_FORTEZZA_DMS_WITH_NULL_SHA," +\
- "-SSL3_FORTEZZA_DMS_WITH_RC4_128_SHA," +\
- "+SSL3_RSA_WITH_RC4_128_SHA," +\
- "-SSL3_RSA_EXPORT_WITH_RC4_40_MD5," +\
- "+SSL3_RSA_WITH_3DES_EDE_CBC_SHA," +\
- "+SSL3_RSA_WITH_DES_CBC_SHA," +\
- "-SSL3_RSA_EXPORT_WITH_RC2_CBC_40_MD5," +\
- "-SSL3_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA," +\
- "-SSL_RSA_FIPS_WITH_DES_CBC_SHA," +\
- "+SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA," +\
- "-SSL3_RSA_WITH_NULL_MD5," +\
- "-TLS_RSA_EXPORT1024_WITH_RC4_56_SHA," +\
- "-TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA," +\
- "+TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA"
- config.pki_master_dict['TOMCAT_SSL_OPTIONS_SLOT'] =\
- "ssl2=true," +\
- "ssl3=true," +\
- "tls=true"
- config.pki_master_dict['TOMCAT_TLS_CIPHERS_SLOT'] =\
- "-TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA," +\
- "-TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA," +\
- "+TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA," +\
- "+TLS_ECDH_RSA_WITH_AES_128_CBC_SHA," +\
- "+TLS_ECDH_RSA_WITH_AES_256_CBC_SHA," +\
- "-TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA," +\
- "+TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA," +\
- "+TLS_RSA_WITH_3DES_EDE_CBC_SHA," +\
- "+TLS_RSA_WITH_AES_128_CBC_SHA," +\
- "+TLS_RSA_WITH_AES_256_CBC_SHA," +\
- "+TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA," +\
- "+TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA," +\
- "-TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA," +\
- "-TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA," +\
- "-TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA," +\
- "+TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA," +\
- "+TLS_DHE_DSS_WITH_AES_128_CBC_SHA," +\
- "+TLS_DHE_DSS_WITH_AES_256_CBC_SHA," +\
- "+TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA," +\
- "+TLS_DHE_RSA_WITH_AES_128_CBC_SHA," +\
- "+TLS_DHE_RSA_WITH_AES_256_CBC_SHA"
- # Shared Apache/Tomcat NSS security database name/value pairs
- config.pki_master_dict['pki_shared_pfile'] =\
- os.path.join(
- config.pki_master_dict['pki_instance_configuration_path'],
- "pfile")
- config.pki_master_dict['pki_shared_password_conf'] =\
- os.path.join(
- config.pki_master_dict['pki_instance_configuration_path'],
- "password.conf")
- config.pki_master_dict['pki_cert_database'] =\
- os.path.join(config.pki_master_dict['pki_database_path'],
- "cert8.db")
- config.pki_master_dict['pki_key_database'] =\
- os.path.join(config.pki_master_dict['pki_database_path'],
- "key3.db")
- config.pki_master_dict['pki_secmod_database'] =\
- os.path.join(config.pki_master_dict['pki_database_path'],
- "secmod.db")
- config.pki_master_dict['pki_self_signed_token'] = "internal"
- config.pki_master_dict['pki_self_signed_nickname'] =\
- "Server-Cert cert-" + config.pki_master_dict['pki_instance_name']
- config.pki_master_dict['pki_self_signed_subject'] =\
- "cn=" + config.pki_master_dict['pki_hostname'] + "," +\
- "o=" + config.pki_master_dict['pki_certificate_timestamp']
- config.pki_master_dict['pki_self_signed_serial_number'] = 0
- config.pki_master_dict['pki_self_signed_validity_period'] = 12
- config.pki_master_dict['pki_self_signed_issuer_name'] =\
- "cn=" + config.pki_master_dict['pki_hostname'] + "," +\
- "o=" + config.pki_master_dict['pki_certificate_timestamp']
- config.pki_master_dict['pki_self_signed_trustargs'] = "CTu,CTu,CTu"
- config.pki_master_dict['pki_self_signed_noise_file'] =\
- os.path.join(
- config.pki_master_dict['pki_subsystem_configuration_path'],
- "noise")
- config.pki_master_dict['pki_self_signed_noise_bytes'] = 1024
- # Shared Apache/Tomcat NSS security database convenience symbolic links
- config.pki_master_dict\
- ['pki_subsystem_configuration_password_conf_link'] =\
- os.path.join(
- config.pki_master_dict['pki_subsystem_configuration_path'],
- "password.conf")
-
- if not len(config.pki_master_dict['pki_client_database_password']):
- # use randomly generated client 'pin'
- config.pki_master_dict['pki_client_database_password'] =\
- str(config.pki_master_dict['pki_client_pin'])
-
- # Configuration scriptlet
- # 'Security Domain' Configuration name/value pairs
- # 'Subsystem Name' Configuration name/value pairs
- # 'Token' Configuration name/value pairs
- #
- # Apache - [RA], [TPS]
- # Tomcat - [CA], [KRA], [OCSP], [TKS]
- # - [CA Clone], [KRA Clone], [OCSP Clone], [TKS Clone]
- # - [External CA]
- # - [Subordinate CA]
- #
- # The following variables are defined below:
- #
- # config.pki_master_dict['pki_security_domain_type']
- # config.pki_master_dict['pki_security_domain_uri']
- #
- # The following variables are established via the specified PKI
- # deployment configuration file and are NOT redefined below:
- #
- # config.pki_master_dict['pki_clone_pkcs12_password']
- # config.pki_master_dict['pki_security_domain_password']
- # config.pki_master_dict['pki_token_password']
- # config.pki_master_dict['pki_clone_pkcs12_path']
- # config.pki_master_dict['pki_clone_uri']
- # config.pki_master_dict['pki_security_domain_https_port']
- # config.pki_master_dict['pki_token_name']
- #
- # The following variables are established via the specified PKI
- # deployment configuration file and potentially overridden below:
- #
- # config.pki_master_dict['pki_security_domain_user']
- # config.pki_master_dict['pki_issuing_ca']
- #
-
- # if security domain user is not defined
- if not len(config.pki_master_dict['pki_security_domain_user']):
-
- # use the CA admin uid if it's defined
- if self.pki_config.has_option('CA', 'pki_admin_uid') and\
- len(self.pki_config.get('CA', 'pki_admin_uid')) > 0:
- config.pki_master_dict['pki_security_domain_user'] =\
- self.pki_config.get('CA', 'pki_admin_uid')
-
- # or use the Default admin uid if it's defined
- elif self.pki_config.has_option('DEFAULT', 'pki_admin_uid') and\
- len(self.pki_config.get('DEFAULT', 'pki_admin_uid')) > 0:
- config.pki_master_dict['pki_security_domain_user'] =\
- self.pki_config.get('DEFAULT', 'pki_admin_uid')
-
- # otherwise use the default CA admin uid
- else:
- config.pki_master_dict['pki_security_domain_user'] = "caadmin"
-
- if config.pki_subsystem != "CA" or\
- config.str2bool(config.pki_master_dict['pki_clone']) or\
- config.str2bool(config.pki_master_dict['pki_subordinate']):
- # PKI KRA, PKI OCSP, PKI RA, PKI TKS, PKI TPS,
- # CA Clone, KRA Clone, OCSP Clone, TKS Clone, or
- # Subordinate CA
- config.pki_master_dict['pki_security_domain_type'] = "existing"
- config.pki_master_dict['pki_security_domain_uri'] =\
- "https" + "://" +\
- config.pki_master_dict['pki_security_domain_hostname'] + ":" +\
- config.pki_master_dict['pki_security_domain_https_port']
-
- elif config.str2bool(config.pki_master_dict['pki_external']):
- # External CA
- config.pki_master_dict['pki_security_domain_type'] = "new"
- if not len(config.pki_master_dict['pki_issuing_ca']):
- config.pki_master_dict['pki_issuing_ca'] = "External CA"
- else:
- # PKI CA
- config.pki_master_dict['pki_security_domain_type'] = "new"
-
- # 'External CA' Configuration name/value pairs
- #
- # Tomcat - [External CA]
- #
- # The following variables are established via the specified PKI
- # deployment configuration file and are NOT redefined below:
- #
- # config.pki_master_dict['pki_external_ca_cert_chain_path']
- # config.pki_master_dict['pki_external_ca_cert_path']
- # config.pki_master_dict['pki_external_csr_path']
- # config.pki_master_dict['pki_external_step_two']
- #
-
- # 'Backup' Configuration name/value pairs
- #
- # Apache - [RA], [TPS]
- # Tomcat - [CA], [KRA], [OCSP], [TKS]
- # - [External CA]
- # - [Subordinate CA]
- #
- # The following variables are established via the specified PKI
- # deployment configuration file and are NOT redefined below:
- #
- # config.pki_master_dict['pki_backup_password']
- # config.pki_master_dict['pki_backup_keys']
- #
- if config.str2bool(config.pki_master_dict['pki_backup_keys']):
- # NOTE: ALWAYS store the PKCS #12 backup keys file
- # in with the NSS "server" security databases
- config.pki_master_dict['pki_backup_keys_p12'] =\
- config.pki_master_dict['pki_database_path'] + "/" +\
- config.pki_master_dict['pki_subsystem'].lower() + "_" +\
- "backup" + "_" + "keys" + "." + "p12"
-
- config.pki_master_dict['pki_admin_profile_id'] = "caAdminCert"
-
- if not 'pki_import_admin_cert' in config.pki_master_dict:
- config.pki_master_dict['pki_import_admin_cert'] = 'false'
-
- config.pki_master_dict['pki_ca_signing_tag'] = "signing"
- if config.pki_master_dict['pki_subsystem'] == "CA":
- config.pki_master_dict['pki_ocsp_signing_tag'] = "ocsp_signing"
- elif config.pki_master_dict['pki_subsystem'] == "OCSP":
- config.pki_master_dict['pki_ocsp_signing_tag'] = "signing"
- config.pki_master_dict['pki_ssl_server_tag'] = "sslserver"
- config.pki_master_dict['pki_subsystem_tag'] = "subsystem"
- config.pki_master_dict['pki_audit_signing_tag'] = "audit_signing"
- config.pki_master_dict['pki_transport_tag'] = "transport"
- config.pki_master_dict['pki_storage_tag'] = "storage"
-
- # Finalization name/value pairs
- config.pki_master_dict['pki_default_deployment_cfg_replica'] =\
- os.path.join(config.pki_master_dict['pki_subsystem_registry_path'],
- config.DEFAULT_DEPLOYMENT_CONFIGURATION)
- config.pki_master_dict['pki_user_deployment_cfg_replica'] =\
- os.path.join(config.pki_master_dict['pki_subsystem_registry_path'],
- config.USER_DEPLOYMENT_CONFIGURATION)
- config.pki_master_dict['pki_user_deployment_cfg_spawn_archive'] =\
- config.pki_master_dict['pki_subsystem_archive_log_path'] + "/" +\
- "spawn" + "_" +\
- config.USER_DEPLOYMENT_CONFIGURATION + "." +\
- config.pki_master_dict['pki_timestamp']
- config.pki_master_dict['pki_default_deployment_cfg_respawn_archive'] =\
- config.pki_master_dict['pki_subsystem_archive_log_path'] + "/" +\
- "respawn" + "_" +\
- config.DEFAULT_DEPLOYMENT_CONFIGURATION + "." +\
- config.pki_master_dict['pki_timestamp']
- config.pki_master_dict['pki_user_deployment_cfg_respawn_archive'] =\
- config.pki_master_dict['pki_subsystem_archive_log_path'] + "/" +\
- "respawn" + "_" +\
- config.USER_DEPLOYMENT_CONFIGURATION + "." +\
- config.pki_master_dict['pki_timestamp']
- config.pki_master_dict['pki_manifest'] =\
- config.pki_master_dict['pki_subsystem_registry_path'] + "/" +\
- "manifest"
- config.pki_master_dict['pki_manifest_spawn_archive'] =\
- config.pki_master_dict['pki_subsystem_archive_log_path'] + "/" +\
- "spawn" + "_" + "manifest" + "." +\
- config.pki_master_dict['pki_timestamp']
- config.pki_master_dict['pki_manifest_respawn_archive'] =\
- config.pki_master_dict['pki_subsystem_archive_log_path'] + "/" +\
- "respawn" + "_" + "manifest" + "." +\
- config.pki_master_dict['pki_timestamp']
- # Construct the configuration URL containing the one-time pin
- # and add this to the "sensitive" key value pairs read in from
- # the configuration file
- #
- # NOTE: This is the one and only parameter containing a sensitive
- # parameter that may be stored in a log file and displayed
- # to the screen.
- #
- config.pki_master_dict['pki_configuration_url'] =\
- "https://{}:{}/{}/{}?pin={}".format(
- config.pki_master_dict['pki_hostname'],
- config.pki_master_dict['pki_https_port'],
- config.pki_master_dict['pki_subsystem'].lower(),
- "admin/console/config/login",
- config.pki_master_dict['pki_one_time_pin'])
- # Compose this "systemd" execution management command
- if config.pki_master_dict['pki_subsystem'] in\
- config.PKI_APACHE_SUBSYSTEMS:
- config.pki_master_dict['pki_registry_initscript_command'] =\
- "systemctl" + " " +\
- "restart" + " " +\
- "pki-apached" + "@" +\
- config.pki_master_dict['pki_instance_name'] + "." + "service"
- elif config.pki_master_dict['pki_subsystem'] in\
- config.PKI_TOMCAT_SUBSYSTEMS:
- config.pki_master_dict['pki_registry_initscript_command'] =\
- "systemctl" + " " +\
- "restart" + " " +\
- "pki-tomcatd" + "@" +\
- config.pki_master_dict['pki_instance_name'] + "." + "service"
- except OSError as exc:
- config.pki_log.error(log.PKI_OSERROR_1, exc,
- extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- except KeyError as err:
- config.pki_log.error(log.PKIHELPER_DICTIONARY_MASTER_MISSING_KEY_1,
- err, extra=config.PKI_INDENTATION_LEVEL_2)
- sys.exit(1)
- return
-
-
- def compose_pki_slots_dictionary(self):
- """Read the slots configuration file to create
- the appropriate PKI slots dictionary"""
- rv = 0
- try:
- config.pki_slots_dict = dict()
- parser = ConfigParser.ConfigParser()
- # Make keys case-sensitive!
- parser.optionxform = str
- parser.read(config.PKI_DEPLOYMENT_SLOTS_CONFIGURATION_FILE)
- # Slots configuration file name/value pairs
- if config.pki_subsystem in config.PKI_APACHE_SUBSYSTEMS:
- config.pki_slots_dict = dict(parser._sections['Apache'])
- elif config.pki_subsystem in config.PKI_TOMCAT_SUBSYSTEMS:
- config.pki_slots_dict = dict(parser._sections['Tomcat'])
- except ConfigParser.ParsingError, err:
- rv = err
- return rv
diff --git a/base/deploy/src/engine/pkiscriptlet.py b/base/deploy/src/engine/pkiscriptlet.py
deleted file mode 100644
index 767b3c609..000000000
--- a/base/deploy/src/engine/pkiscriptlet.py
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/python -t
-# Authors:
-# Matthew Harmsen <mharmsen@redhat.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Copyright (C) 2012 Red Hat, Inc.
-# All rights reserved.
-#
-
-# System Imports
-import abc
-
-
-# PKI Deployment Abstract Base PKI Scriptlet
-class AbstractBasePkiScriptlet(object):
- __metaclass__ = abc.ABCMeta
-
- @abc.abstractmethod
- def spawn(self):
- """Retrieve data from the specified PKI dictionary and
- use it to install a new PKI instance."""
- return
-
- @abc.abstractmethod
- def respawn(self):
- """Retrieve data from the specified PKI dictionary and
- use it to update an existing PKI instance."""
- return
-
- @abc.abstractmethod
- def destroy(self):
- """Retrieve data from the specified PKI dictionary and
- use it to destroy an existing PKI instance."""
- return