Source code for insights.specs.datasources.ssl_certificate

"""
Custom datasource to get ssl certificate file path.
"""
from insights.combiners.httpd_conf import HttpdConfTree
from insights.combiners.nginx_conf import NginxConfTree
from insights.core.context import HostContext
from insights.core.exceptions import SkipComponent
from insights.core.plugins import datasource
from insights.parsers.mssql_conf import MsSQLConf


[docs] @datasource(HttpdConfTree, HostContext) def httpd_certificate_info_in_nss(broker): """ Get the certificate info configured in nss database Arguments: broker: the broker object for the current session Returns: list: Returns a list of tuple with the Nss database path and the certificate nickname Raises: SkipComponent: Raised when NSSEngine isn't enabled or "NSSCertificateDatabase" and "NSSNickname" directives aren't found """ conf = broker[HttpdConfTree] path_pairs = [] virtual_hosts = conf.find('VirtualHost') for host in virtual_hosts: nss_engine = nss_database = cert_name = None nss_engine = host.select('NSSEngine') nss_database = host.select('NSSCertificateDatabase') cert_name = host.select('NSSNickname') if nss_engine and nss_engine.value and nss_database and cert_name: path_pairs.append((nss_database[0].value, cert_name[0].value)) if path_pairs: return path_pairs raise SkipComponent
[docs] @datasource(HttpdConfTree, HostContext) def httpd_ssl_certificate_files(broker): """ Get the httpd SSL certificate file path configured by "SSLCertificateFile" Arguments: broker: the broker object for the current session Returns: str: Returns the SSL certificate file path configured by "SSLCertificateFile" Raises: SkipComponent: Raised if "SSLCertificateFile" directive isn't found """ conf = broker[HttpdConfTree] virtual_hosts = conf.find('VirtualHost') ssl_certs = [] for host in virtual_hosts: ssl_cert = ssl_engine = None ssl_engine = host.select('SSLEngine') ssl_cert = host.select('SSLCertificateFile') if ssl_engine and ssl_engine.value and ssl_cert: ssl_certs.append(str(ssl_cert.value)) if ssl_certs: return ssl_certs raise SkipComponent
[docs] @datasource(NginxConfTree, HostContext) def nginx_ssl_certificate_files(broker): """ Get the nginx SSL certificate file path configured by "ssl_certificate" Arguments: broker: the broker object for the current session Returns: str: Returns the SSL certificate file path configured by "ssl_certificate" Raises: SkipComponent: Raised if "ssl_certificate" directive isn't found """ conf = broker[NginxConfTree] ssl_certs = conf.find('ssl_certificate') if ssl_certs: return [str(ssl_cert.value) for ssl_cert in ssl_certs] raise SkipComponent
[docs] @datasource(MsSQLConf, HostContext) def mssql_tls_cert_file(broker): """ Get the mssql tls certificate file path configured by "ssl_certificate" Arguments: broker: the broker object for the current session Returns: str: Returns the SSL certificate file path configured by "ssl_certificate" Raises: SkipComponent: Raised if "ssl_certificate" directive isn't found """ mssql_conf_content = broker[MsSQLConf] if mssql_conf_content.has_option("network", "tlscert"): return mssql_conf_content.get("network", "tlscert") raise SkipComponent