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

server.host=127.0.0.1
server.port=8083
default.admin.user=admin
default.admin.password=inlong
server.servlet.context-path=/inlong/manager
spring.application.name=InlongManagerMain
spring.profiles.active=dev

spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER

# Serialize the Date type to a timestamp
spring.jackson.serialization.write-dates-as-timestamps=true
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8

# Configure mybatis
mybatis.mapper-locations=classpath:mappers/*.xml
# Global mapping, no need to write the full path of the entity class in the xml file
mybatis.type-aliases-package=org.apache.inlong.manager.dao.entity
# Turn on camel case mapping
mybatis.configuration.map-underscore-to-camel-case=true
# Configure mybatis paging plugin
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.params=count=countSql

# Configure http client
common.http-client.maxTotal=5000
common.http-client.defaultMaxPerRoute=2000
common.http-client.validateAfterInactivity=5000
common.http-client.connectionTimeout=3000
common.http-client.readTimeout=10000
common.http-client.connectionRequestTimeout=3000

# Configure auth plugin
inlong.auth.type=default

# Encryption config, the suffix of value must be the same as the version.
inlong.encrypt.version=1
inlong.encrypt.key.value1="I!N@L#O$N%G^"

# clients (e.g. agent and dataproxy) must be authenticated by secretId and secretKey if turned on
openapi.auth.enabled=false
