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

class insights.parsers.tomcat_xml.TomcatServerXml(context)[source]

Bases: 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'
class insights.parsers.tomcat_xml.TomcatWebXml(context)[source]

Bases: XMLParser

Parse the web.xml of Tomcat.

Currently it only stores the setting of session-timeout.

data

special settings, e.g. session-timeout get from the xml file.

Type:

dict

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
parse_dom()[source]

Get the setting of ‘session-timeout’ from the parsed Elements in data and return.

Returns:

Currently only ‘session-timeout’ is added into the dictionary. An empty dict, when ‘session-timeout’ setting cannot be found.

Return type:

(dict)