# 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.

# Configuration for the Apache Wave server.


core {
  # Domain name of the Wave server.
  wave_server_domain : "local.net"

  # A comma separated list of address on which to listen for connections.
  # Each address is a comma separated host:port pair.
  http_frontend_addresses : ["localhost:9898"]

  # The public address - a comma separated host:port pair, i.e. example.com:80
  http_frontend_public_address : ""

  # An optional host:port address on which to listen for websocket connections.
  # Defaults to http_websocket_public_address.
  # If no value is set for http_websocket_public_address it defaults to the first address specified
  # by http_frontend_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.
  http_websocket_presented_address : ""

  # The address of Apache Shindig gadgets server patched to support Wave gadgets.
  # See https://cwiki.apache.org/confluence/display/WAVE/Gadgets+with+your+own+Gadget+Server
  gadget_server_hostname : "gmodules.com"

  # The gadget server port.
  gadget_server_port : 80

  # A comma separated list of webApp source directories
  resource_bases : ["./war"]

  # Settings for the different persistence stores. Currently supported: memory, file, mongodb.
  signer_info_store_type : file

  # 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.
  signer_info_store_directory : _certificates

  # Currently supported attachment types: mongodb, disk
  attachment_store_type : disk

  # 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 : _attachments

  # 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

  # Currently supported account store types: fake, memory, file, mongodb
  account_store_type : file

  # 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.
  account_store_directory : _accounts

  # Currently supported delta store types: memory, file, mongodb.
  # 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.
  delta_store_type : file

  # 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.
  delta_store_directory : _deltas

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

  # Currently supported search types: memory, lucene, solr.
  search_type : memory

  # 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.
  index_directory : _indexes

  # Currently supported profile fetcher types: gravatar, initials.
  profile_fetcher_type : initials

  # The Solr endpoint url.
  solr_base_url : "http://localhost:8983/solr"

  # Enables server side profiling. To display the stats press ctrl+alt+ctrl in the web client.
  # Default value: true
  enable_profiling : true

  # Mongodb connection options
  # Only used if some of the *_store_type properties are set to 'mongodb'

  # Server's host name or IP address.
  mongodb_host : "127.0.0.1"

  # Server's port. Default value: 27017
  mongodb_port : 27017

  # Database's name. Default name: wiab
  mongodb_database : wiab

  # Number of waves in memory cache.
  wave_cache_size = 1000

  # Duration to keep the waves in cache.
  wave_cache_expire = 60m
}

network {
  # Max age of session cookie in seconds.
  # -1 means cookie lives in the browser current session only.
  session_cookie_max_age : -1

  # The time in ms that the websocket connection can be idle before closing
  websocket_max_idle_time : 0

  # Maximum websocket message size to be received in MB
  websocket_max_message_size : 2
}

administration {
  # 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.
  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.
  welcome_wave_id : ""

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

  # Disable login page  - useful to force x509-only authentication
  disable_loginpage : false

  # Google Analytics account.
  analytics_account : ""
}

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

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

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

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

  # 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 : 1

  # The number of threads for making search/update requests to Solr. Default value: 1
  solr_thread_count : 1

  # The number of threads for making for retrieving contacts.
  contact_executor_thread_count : 1
}

security {
  # Enable SSL for all address/port combinations listed (makes the next 2 settings non-optional).
  enable_ssl : false

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

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

  # Enable client x509 cert. authentication?
  enable_clientauth : false

  # Domain of the email to look for as email field of x509 client auth certificates when using client authentication
  clientauth_cert_domain : ""
}

# Please note that currently Wave in a Box server has no Federation implementation.
federation {
  # Federation Configuration for the Wave in a Box server
  enable_federation : false

  # The PKCS#8-PEM-encoded private key.
  certificate_private_key : "local.net.key"

  # The list of file names that have the certificates of this signer.
  # The first file name must have the signer's target certificate. The  certificates can be DER or PEM encoded.
  # The order of certificates is important. Place intermediate certs
  # after "${wave_server_domain}.crt". Please refer to
  # http://www.waveprotocol.org/federation/certificates
  # for more details.
  certificate_files : ["local.net.crt","sub.class1.server.ca.pem","ca.pem"]

  # The domain for which the certificate was issued.
  certificate_domain : "local.net"

  # 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
}
