# 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 Wave in a Box 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 serer 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
}

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 : ""
}

federation {
  # Federation Configuration for the Wave in a Box server
  enable_federation : false

  # These will probably need to be changed
  xmpp_server_secret : secret

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

  xmpp_component_name : wave

  # This server's local JID
  xmpp_jid : "wave.local.net"

  xmpp_server_description : "Wave in a Box"

  disco_info_category : "collaboration"

  disco_info_type : "apache-wave"

  xmpp_server_hostname : "local.net"

  xmpp_server_component_port : 5275

  # How long to cache failed disco results.
  xmpp_disco_failed_expiry : 300s

  # How long to cache successful disco results.
  xmpp_disco_successful_expiry : 7200s

  disco_expiration : 6h

  # Set XMPP_SERVER_IP to localhost if the XMPP and Wave in a Box servers are
  # running on the same host
  xmpp_server_ip : localhost

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