<!--
 * 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.
 -->
<project name="server config" basedir="." default="server-config">
  <description>Creates the server configuration file.</description>

  <!-- Properties for server.config -->
  <property name="wave_server_domain" value="local.net" />
  <property name="http_frontend_public_address" value="localhost:9898" />
  <property name="http_websocket_public_address" value="${http_frontend_public_address}" />
  <property name="http_websocket_presented_address" value="${http_frontend_public_address}" />
  <property name="http_frontend_addresses" value="${http_frontend_public_address}" />
  <property name="resource_bases" value="./war" />
  <property name="signer_info_store_type" value="file" />
  <property name="attachment_store_type" value="disk" />
  <property name="account_store_type" value="file" />
  <property name="delta_store_type" value="file" />
  <property name="signer_info_store_directory" value="_certificates" />
  <property name="attachment_store_directory" value="_attachments" />
  <property name="account_store_directory" value="_accounts" />
  <property name="delta_store_directory" value="_deltas" />
  <property name="sessions_store_directory" value="_sessions" />
  <property name="websocket_max_message_size" value="2" />
  <property name="websocket_max_idle_time" value="0" />
  <property name="admin_user" value="@${wave_server_domain}" />
  <property name="welcome_wave_id" value="" />
  <property name="listener_executor_thread_count" value="1" />
  <property name="wavelet_load_executor_thread_count" value="1" />
  <property name="delta_persist_executor_thread_count" value="1" />
  <property name="storage_continuation_executor_thread_count" value="1" />
  <property name="lookup_executor_thread_count" value="1" />
  <property name="disable_registration" value="false" />
  <property name="enable_ssl" value="false" />
  <property name="ssl_keystore_path" value="wiab.ks" />
  <property name="ssl_keystore_password" value="changeme" />
  <property name="enable_clientauth" value="false" />
  <property name="clientauth_cert_domain" value="" />
  <property name="disable_loginpage" value="false" />
  <property name="search_type" value="lucene" />
  <property name="index_directory" value="_indexes" />
  <property name="thumbnail_patterns_directory" value="thumbnail_patterns" />
  <property name="analytics_account" value="" />

  <!-- Properties for server.federation.config -->
  <property name="xmpp_server_secret" value="opensesame" />
  <property name="certificate_private_key" value="${wave_server_domain}.key" />
  <property name="certificate_files" value="${wave_server_domain}.crt,sub.class1.server.ca.pem,ca.pem" />
  <property name="certificate_domain" value="${wave_server_domain}" />
  <property name="xmpp_component_name" value="wave" />
  <property name="xmpp_jid" value="${xmpp_component_name}.${wave_server_domain}" />
  <property name="xmpp_server_description" value="&quot;Wave in a Box&quot;" />
  <property name="xmpp_server_hostname" value="${wave_server_domain}" />
  <property name="xmpp_server_component_port" value="5275" />
  <property name="xmpp_server_to_server_port" value="5269" />
  <property name="xmpp_server_ping" value="wavesandbox.com" />
  <property name="xmpp_server_ip" value="${xmpp_server_hostname}" />
  <property name="waveserver_disable_verification" value="false" />
  <property name="waveserver_disable_signer_verification" value="false" />

  <target name="create-folders">
    <mkdir dir="${signer_info_store_directory}" />
    <mkdir dir="${attachment_store_directory}" />
    <mkdir dir="${account_store_directory}" />
    <mkdir dir="${delta_store_directory}" />
    <mkdir dir="${sessions_store_directory}" />
  </target>

  <target name="server-config" depends="create-folders"
      description="Run to create the server configuration file.
	  You can pass custom values, for example:
      ant -f server-config.xml -Dwave_server_domain=example.com">
    <echo>Generating server.config</echo>
    <copy file="server.config"
          tofile="server.config.old"
          overwrite="true"
          failonerror="false" />
    <copy file="server.config.example" tofile="server.config" overwrite="true">
      <filterchain>
        <replacetokens>
          <token key="WAVE_SERVER_DOMAIN" value="${wave_server_domain}" />
          <token key="HTTP_FRONTEND_PUBLIC_ADDRESS"
                 value="${http_frontend_public_address}" />
          <token key="HTTP_WEBSOCKET_PUBLIC_ADDRESS"
                 value="${http_websocket_public_address}" />
          <token key="HTTP_WEBSOCKET_PRESENTED_ADDRESS"
                 value="${http_websocket_presented_address}" />
          <token key="HTTP_FRONTEND_ADDRESSES"
                 value="${http_frontend_addresses}" />
          <token key="RESOURCE_BASES" value="${resource_bases}" />
          <token key="SIGNER_INFO_STORE_TYPE" value="${signer_info_store_type}" />
          <token key="ATTACHMENT_STORE_TYPE" value="${attachment_store_type}" />
          <token key="ACCOUNT_STORE_TYPE" value="${account_store_type}" />
          <token key="DELTA_STORE_TYPE" value="${delta_store_type}" />
          <token key="SIGNER_INFO_STORE_DIRECTORY"
                 value="${signer_info_store_directory}" />
          <token key="ATTACHMENT_STORE_DIRECTORY"
                 value="${attachment_store_directory}" />
          <token key="ACCOUNT_STORE_DIRECTORY"
                 value="${account_store_directory}" />
          <token key="DELTA_STORE_DIRECTORY" value="${delta_store_directory}" />
          <token key="SESSIONS_STORE_DIRECTORY" value="${sessions_store_directory}" />
          <token key="WEBSOCKET_MAX_MESSAGE_SIZE" value="${websocket_max_message_size}" />
          <token key="WEBSOCKET_MAX_IDLE_TIME" value="${websocket_max_idle_time}" />
          <token key="ADMIN_USER" value="${admin_user}" />
          <token key="WELCOME_WAVE_ID" value="${welcome_wave_id}" />
          <token key="LISTENER_EXECUTOR_THREAD_COUNT" value="${listener_executor_thread_count}" />
          <token key="WAVELET_LOAD_EXECUTOR_THREAD_COUNT" value="${wavelet_load_executor_thread_count}" />
          <token key="DELTA_PERSIST_EXECUTOR_THREAD_COUNT" value="${delta_persist_executor_thread_count}" />
          <token key="STORAGE_CONTINUATION_EXECUTOR_THREAD_COUNT" value="${storage_continuation_executor_thread_count}" />
          <token key="LOOKUP_EXECUTOR_THREAD_COUNT" value="${lookup_executor_thread_count}" />
          <token key="DISABLE_REGISTRATION" value="${disable_registration}" />
          <token key="ENABLE_SSL" value="${enable_ssl}" />
          <token key="SSL_KEYSTORE_PATH" value="${ssl_keystore_path}" />
          <token key="SSL_KEYSTORE_PASSWORD" value="${ssl_keystore_password}" />
          <token key="ENABLE_CLIENTAUTH" value="${enable_clientauth}" />
          <token key="CLIENTAUTH_CERT_DOMAIN" value="${clientauth_cert_domain}" />
          <token key="DISABLE_LOGINPAGE" value="${disable_loginpage}" />
          <token key="SEARCH_TYPE" value="${search_type}" />
          <token key="INDEX_DIRECTORY" value="${index_directory}" />
          <token key="ANALYTICS_ACCOUNT" value="${analytics_account}" />
          <token key="THUMBNAIL_PATTERNS_DIRECTORY" value="${thumbnail_patterns_directory}" />
        </replacetokens>
      </filterchain>
    </copy>
  </target>

  <target name="server-federation-config" depends="server-config"
      description="Run to create both the server and federation configuration files.
      ant -f server-config.xml server-federation-config -Dserver_federation_config=server.federation.config">
    <echo>Generating federation.server.config</echo>
    <copy file="server.federation.config"
               tofile="server.federation.config.old"
               overwrite="true"
               failonerror="false" />
    <copy file="server.federation.config.example" tofile="server.federation.config" overwrite="true">
      <filterchain>
        <replacetokens>
          <token key="XMPP_SERVER_SECRET" value="${xmpp_server_secret}" />
          <token key="CERTIFICATE_PRIVATE_KEY" value="${certificate_private_key}" />
          <token key="CERTIFICATE_FILES" value="${certificate_files}" />
          <token key="CERTIFICATE_DOMAIN" value="${certificate_domain}" />
          <token key="XMPP_COMPONENT_NAME" value="${xmpp_component_name}" />
          <token key="XMPP_JID" value="${xmpp_jid}" />
          <token key="XMPP_SERVER_DESCRIPTION" value="${xmpp_server_description}" />
          <token key="XMPP_SERVER_HOSTNAME" value="${xmpp_server_hostname}" />
          <token key="XMPP_SERVER_COMPONENT_PORT" value="${xmpp_server_component_port}" />
          <token key="XMPP_SERVER_PING" value="${xmpp_server_ping}" />
          <token key="XMPP_SERVER_IP" value="${xmpp_server_ip}" />
          <token key="WAVESERVER_DISABLE_VERIFICATION" value="${waveserver_disable_verification}" />
          <token key="WAVESERVER_DISABLE_SIGNER_VERIFICATION"
            value="${waveserver_disable_signer_verification}" />
        </replacetokens>
      </filterchain>
    </copy>
  </target>

  <target name="prosody-config" depends="server-federation-config"
      description="Run to create the server, federation and prosody configuration files.
      ant -f server-config.xml server-federation-config prosody-config -Dserver_federation_config=server.federation.config">
      <echo>Generating ${certificate_domain}.cfg.lua</echo>
    <copy file="${certificate_domain}.cfg.lua"
               tofile="${certificate_domain}.cfg.lua.old"
               overwrite="true"
               failonerror="false" />
    <copy file="prosody.cfg.lua.example" tofile="${certificate_domain}.cfg.lua" overwrite="true">
      <filterchain>
        <replacetokens>
          <token key="BASEDIR" value="${basedir}" />
          <token key="XMPP_SERVER_SECRET" value="${xmpp_server_secret}" />
          <token key="CERTIFICATE_PRIVATE_KEY" value="${certificate_private_key}" />
          <token key="CERTIFICATE_DOMAIN" value="${certificate_domain}" />
          <token key="XMPP_JID" value="${xmpp_jid}" />
          <token key="XMPP_SERVER_DESCRIPTION" value="${xmpp_server_description}" />
          <token key="XMPP_SERVER_COMPONENT_PORT" value="${xmpp_server_component_port}" />
          <token key="XMPP_SERVER_TO_SERVER_PORT" value="${xmpp_server_to_server_port}" />
        </replacetokens>
      </filterchain>
    </copy>
    <echo>Please, manually copy ${certificate_domain}.cfg.lua to your prosody configuration directory.</echo>
    <echo>E.g. sudo cp ${certificate_domain}.cfg.lua /etc/prosody/conf.d/${certificate_domain}.cfg.lua</echo>
    <echo>Additionally, ensure your ${certificate_domain} SRV record points to port ${xmpp_server_to_server_port}</echo>
  </target>
</project>
