<commit_before>{config, pkgs, serverInfo}:

let
  workersProperties = pkgs.writeText "workers.properties" ''
# Define list of workers that will be used
# for mapping requests
# The configuration directives are valid
# for the mod_jk version 1.2.18 and later
#
worker.list=loadbalancer,status

# Define Node1
# modify the host as your host IP or DNS name.
worker.node1.port=8009
worker.node1.host=localhost
worker.node1.type=ajp13
worker.node1.lbfactor=1

# Load-balancing behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1

# Status worker for managing load balancer
worker.status.type=status
  '';
in
{
  extraModules = [
    { name = "jk"; path = "${pkgs.tomcat_connectors}/modules/mod_jk.so"; }
  ];

  extraConfig = ''
# Where to find workers.properties
JkWorkersFile ${workersProperties}

# Where to put jk logs
JkLogFile ${config.logDir}/mod_jk.log

# Set the jk log level [debug/error/info]
JkLogLevel info

# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

# JkOptions indicates to send SSK KEY SIZE
# Note: Changed from +ForwardURICompat. 
# See http://tomcat.apache.org/security-jk.html  
JkOptions +ForwardKeySize +ForwardURICompatUnparsed -ForwardDirectories

# JkRequestLogFormat
JkRequestLogFormat "%w %V %T"

# Mount your applications
JkMount /__application__/* loadbalancer

# You can use external file for mount points.
# It will be checked for updates each 60 seconds.
# The format of the file is: /url=worker
# /examples/*=loadbalancer
#JkMountFile uriworkermap.properties

# Add shared memory.
# This directive is present with 1.2.10 and
# later versions of mod_jk, and is needed for
# for load balancing to work properly
# Note: Replaced JkShmFile logs/jk.shm due to SELinux issues. Refer to 
# https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=225452
JkShmFile ${config.stateDir}/jk.shm

# Static files in all Tomcat webapp context directories are served by apache
JkAutoAlias /var/tomcat/webapps
    
# All requests go to worker by default
JkMount /* loadbalancer
# Serve some static files using httpd
JkUnMount /*.html loadbalancer
JkUnMount /*.jpg  loadbalancer
JkUnMount /*.gif  loadbalancer
JkUnMount /*.css  loadbalancer
JkUnMount /*.png  loadbalancer
JkUnMount /*.js  loadbalancer

# Add jkstatus for managing runtime data
<Location /jkstatus/>
JkMount status<commit_msg>Some fixes to the Apache Tomcat connector<commit_after>{config, pkgs, serverInfo}:

let
  workersProperties = pkgs.writeText "workers.properties" ''
# Define list of workers that will be used
# for mapping requests
# The configuration directives are valid
# for the mod_jk version 1.2.18 and later
#
worker.list=loadbalancer,status

# Define Node1
# modify the host as your host IP or DNS name.
worker.node1.port=8009
worker.node1.host=localhost
worker.node1.type=ajp13
worker.node1.lbfactor=1

# Load-balancing behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1

# Status worker for managing load balancer
worker.status.type=status
  '';
in
{
  extraModules = [
    { name = "jk"; path = "${pkgs.tomcat_connectors}/modules/mod_jk.so"; }
  ];

  extraConfig = ''
# Where to find workers.properties
JkWorkersFile ${workersProperties}

# Where to put jk logs
JkLogFile ${config.logDir}/mod_jk.log

# Set the jk log level [debug/error/info]
JkLogLevel info

# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

# JkOptions indicates to send SSK KEY SIZE
# Note: Changed from +ForwardURICompat. 
# See http://tomcat.apache.org/security-jk.html  
JkOptions +ForwardKeySize +ForwardURICompatUnparsed -ForwardDirectories

# JkRequestLogFormat
JkRequestLogFormat "%w %V %T"

# Mount your applications
JkMount /__application__/* loadbalancer

# You can use external file for mount points.
# It will be checked for updates each 60 seconds.
# The format of the file is: /url=worker
# /examples/*=loadbalancer
#JkMountFile uriworkermap.properties

# Add shared memory.
# This directive is present with 1.2.10 and
# later versions of mod_jk, and is needed for
# for load balancing to work properly
# Note: Replaced JkShmFile logs/jk.shm due to SELinux issues. Refer to 
# https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=225452
JkShmFile ${config.stateDir}/jk.shm

# Static files in all Tomcat webapp context directories are served by apache
JkAutoAlias /var/tomcat/webapps
    
# All requests go to worker by default
JkMount /* loadbalancer
# Serve some static files using httpd
#JkUnMount /*.html loadbalancer
#JkUnMount /*.jpg  loadbalancer
#JkUnMount /*.gif  loadbalancer
#JkUnMount /*.css  loadbalancer
#JkUnMount /*.png  loadbalancer
#JkUnMount /*.js  loadbalancer

# Add jkstatus for managing runtime data
<Location /jkstatus/>
JkMount status
{'fraction_non_alphanumeric': 0.09171597633136094, 'fraction_numerical': 0.012256973795435333, 'mean_word_length': 4.6547192353643965, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '667141', 'n_tokens_mistral': 1598, 'n_tokens_neox': 1547, 'n_words': 495}