Source code for insights.parsers.tomcat_xml

"""
tomcat_xml - XML files for Tomcat
=================================

Classes to parse Tomcat XML configuration files:

TomcatWebXml - files from ``/etc/tomcat*/web.xml`` and ``/conf/tomcat/tomcat*/web.xml``
---------------------------------------------------------------------------------------

TomcatServerXml - files from ``(tomcat base directory)/conf/server.xml`` or ``conf/tomcat/tomcat*/server.xml``
--------------------------------------------------------------------------------------------------------------

.. note::
    The tomcat XML files are found in the directory specified in the java
    commands

"""
from .. import parser, XMLParser
from insights.specs import Specs


[docs] @parser(Specs.tomcat_web_xml) class TomcatWebXml(XMLParser): """ Parse the `web.xml` of Tomcat. Currently it only stores the setting of `session-timeout`. Attributes: data (dict): special settings, e.g. ``session-timeout`` get from the xml file. Sample input:: <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <session-config> <session-timeout>30</session-timeout> </session-config> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> Examples: >>> type(web_xml) <class 'insights.parsers.tomcat_xml.TomcatWebXml'> >>> web_xml.get('session-timeout') == 30 True """
[docs] def parse_dom(self): """ Get the setting of 'session-timeout' from the parsed `Elements` in :attr:`data` and return. Returns: (dict): Currently only 'session-timeout' is added into the dictionary. An empty dict, when 'session-timeout' setting cannot be found. """ key_field = self.get_elements('.//session-timeout') field_text = key_field[0].text if key_field else None parsed_data = {} if field_text and field_text.isdigit(): parsed_data['session-timeout'] = int(field_text) return parsed_data
[docs] @parser(Specs.tomcat_server_xml) class TomcatServerXml(XMLParser): """ Parse the `server.xml` of Tomcat. Sample input:: <?xml version='1.0' encoding='utf-8'?> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JasperListener" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="want" sslProtocols="TLSv1.2,TLSv1.1,TLSv1" keystoreFile="conf/keystore" truststoreFile="conf/keystore" keystorePass="oXQ8LfAGsf97KQxwwPta2X3vnUv7P5QM" keystoreType="PKCS12" ciphers="SSL_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_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_ECDHE_RSA_WITH_AES_256_CBC_SHA" truststorePass="oXQ8LfAGsf97KQxwwPta2X3vnUv7P5QM" /> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> </Host> </Engine> </Service> </Server> Examples: >>> type(server_xml) <class 'insights.parsers.tomcat_xml.TomcatServerXml'> >>> server_xml.file_path '/usr/share/tomcat/server.xml' >>> hosts = server_xml.get_elements(".//Service/Engine/Host") >>> len(hosts) 1 >>> hosts[0].get('name') 'localhost' """ pass