# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

# Core Configuration for the Wave in a Box server
#
# Run "ant -f server-config.xml" to generate the server.config file automatically.
# To override default values pass them to the ant script. For example
# to override wave_server_domain run: ant -f server-config.xml -Dwave_server_domain=example.com


# Domain name of the wave server 
# Default value: local.net
wave_server_domain = @WAVE_SERVER_DOMAIN@

# A comma separated list of address on which to listen for connections.
# Each address is a comma separated host:port pair.
# Default value: localhost:9898
http_frontend_public_address = @HTTP_FRONTEND_PUBLIC_ADDRESS@

# A optional host:port address on which to listen for websocket connections.
# If no value is set for http_websocket_public_address it defaults to the first address specified
# by http_frontend_public_address.
# Default value: localhost:9898
http_websocket_public_address = @HTTP_WEBSOCKET_PUBLIC_ADDRESS@

# An optional host:port address for which the client is told to attempt websocket connections.
# If no value is set for http_websocket_presented_address it defaults to http_websocket_public_address
# Default value: localhost:9898
http_websocket_presented_address = @HTTP_WEBSOCKET_PRESENTED_ADDRESS@

# Default value: values passed to http_frontend_public_address.
http_frontend_addresses = @HTTP_FRONTEND_ADDRESSES@

# A comma separated list of webApp source directories
# Default value: ./war
resource_bases = @RESOURCE_BASES@

### Server-specific variables
###

# Settings for the different persistence stores. Currently supported: memory, file, mongodb
# Default value: memory
signer_info_store_type = @SIGNER_INFO_STORE_TYPE@

# The location where signer info certificate data is stored on disk. This should be changed.
# Note: This is only used when using the file signer info store. It is ignored
# for other data store types.
# Default value: _certificates
signer_info_store_directory = @SIGNER_INFO_STORE_DIRECTORY@

# Currently supported attachment types: mongodb, disk
# Default value: disk
attachment_store_type = @ATTACHMENT_STORE_TYPE@

# The location where attachments are stored on disk. This should be changed.
# Note: This is only used when using the disk attachment store. It is ignored
# for other data store types.
attachment_store_directory = @ATTACHMENT_STORE_DIRECTORY@

# Currently supported account store types: fake, memory, file, mongodb
# Default value: memory
account_store_type = @ACCOUNT_STORE_TYPE@

# The location where accounts are stored on disk. This should be changed.
# Note: This is only used when using the file account store. It is ignored
# for other data store types.
# Default value: _accounts
account_store_directory = @ACCOUNT_STORE_DIRECTORY@

# Currently supported delta store types: memory, file
# Note: file system support is experimental. Your server may crash. And the file format is
# not stable and shouldn't be relied upon for long-term storage yet; upcoming changes will
# require you to blow away your data.
# Default value: memory
delta_store_type = @DELTA_STORE_TYPE@

# The location where deltas are stored on disk. This should be changed.
# Note: This is only used when using the file delta store. It is ignored
# for other data store types.
# Default value: _deltas
delta_store_directory = @DELTA_STORE_DIRECTORY@

# The location where user sessions are persisted on disk. This allow to restore user sessions
# between restarts.
# Default value: _sessions
sessions_store_directory = @SESSIONS_STORE_DIRECTORY@

# The time in ms that the websocket connection can be idle before closing
# Default value: 0
websocket_max_idle_time = @WEBSOCKET_MAX_IDLE_TIME@

# Maximum websocket message size to be received in MB
# Default value: 2
websocket_max_message_size = @WEBSOCKET_MAX_MESSAGE_SIZE@

# Note: the default value for admin is an invalid user id that cannot be registered.
# To become an admin: Register a user and set its address as the value below.
# Admin has a privilege to change passwords of other users using an agent robot.
# Default value: @${wave_server_domain}
admin_user = @ADMIN_USER@

# The wave id of the welcome template wave. (Without domain, for example: w+Fxjs_-ZPmmA).
# If filled in then a copy of this wave (actually only the root blip) will be
# automatically added to the inbox of every new user.
# Default value: "" (empty)
welcome_wave_id = @WELCOME_WAVE_ID@

# The number of threads to listen on wavelet updates. Default value: 1
listener_executor_thread_count = @LISTENER_EXECUTOR_THREAD_COUNT@

# The number of threads for loading wavelets. Default value: 1
wavelet_load_executor_thread_count = @WAVELET_LOAD_EXECUTOR_THREAD_COUNT@

# The number of threads to persist deltas. Default value: 1
delta_persist_executor_thread_count = @DELTA_PERSIST_EXECUTOR_THREAD_COUNT@

# The number of threads to perform post wavelet loading logic. Default value: 1
storage_continuation_executor_thread_count = @STORAGE_CONTINUATION_EXECUTOR_THREAD_COUNT@

# The number of threads for looking up the wavelet ids
# while creating a list of all wavelets in the persistent storage. Default value: 1
lookup_executor_thread_count = @LOOKUP_EXECUTOR_THREAD_COUNT@

# To enable federation, edit the server.federation.config file and include it here.
# Or run ant -f server-config.xml server-federation-config
# If not using the server-config.xml ant script - it is possible just to comment the line.
include = server.federation.config

# These two parameters MUST appear in this file AFTER the above include of the
# federation config file. This is necesary so that the federation config file
# can override these two values.

# Set true to disable the verification of signed deltas
waveserver_disable_verification = true

# Set true to disable the verification of signers (certificates)
waveserver_disable_signer_verification = true

# Set true to prevent anyone registering on your server.
# When true, only the admin user can use the RegistrationRobot to add new accounts
# Default value: false
disable_registration = @DISABLE_REGISTRATION@

# Enable SSL for all address/port combinations listed (makes the next 2 settings non-optional).
# Default value: false
enable_ssl = @ENABLE_SSL@

# Path to keystore containg the ssl certificates to server
# Note: this is only used when enable_ssl set to true.
ssl_keystore_path = @SSL_KEYSTORE_PATH@

# Password to the keystore.
# Note: this is only used when enable_ssl set to true.
ssl_keystore_password = @SSL_KEYSTORE_PASSWORD@

# Enable client x509 cert. authentication?
enable_clientauth = @ENABLE_CLIENTAUTH@

# Domain of the email to look for as email field of x509 client auth certificates when using client authentication
clientauth_cert_domain = @CLIENTAUTH_CERT_DOMAIN@

# Disable login page to force x509-only authentication
disable_loginpage = @DISABLE_LOGINPAGE@

# Currently supported search types: memory, lucene.
# Default value: lucene.
search_type = @SEARCH_TYPE@

# The location where search indexes are stored on disk.
# Note: This is only used when using the lucene search type. It is ignored
# for other search types.
# Default value: _indexes
index_directory = @INDEX_DIRECTORY@

 # Google Analytics account.
 # Default value: empty
analytics_account = @ANALYTICS_ACCOUNT@

# Directory that holds the thumbnails for attachments.
# Icon must be in PNG format, and named as MIME type with replacing '/' to '_'.
# For example thumbnail file for ZIP format (MIME type application/zip) must be named application_zip.
thumbnail_patterns_directory = @THUMBNAIL_PATTERNS_DIRECTORY@
