# configuration for itranswarp: # tomcat configuration: server: port: ${SERVER_PORT:2019} forward-headers-strategy: native spring: profiles: active: ${PROFILES:native} application: name: ${NAME:itranswarp} domain: ${DOMAIN:localhost} # default to empty (use default timezone of server): timezone: ${TIMEZONE:} # mysql configuration: datasource: url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:it}?useSSL=${DB_SSL:false}&characterEncoding=${DB_ENCODING:utf8} username: ${DB_USERNAME:root} password: ${DB_PASSWORD:password} driver-class-name: com.mysql.jdbc.Driver hikari: pool-name: HikariCP auto-commit: false connection-timeout: ${DB_TIMEOUT:3000} validation-timeout: ${DB_TIMEOUT:3000} idle-timeout: ${DB_IDLE_TIMEOUT:300000} max-lifetime: ${DB_MAX_LIFETIME:600000} maximum-pool-size: ${DB_POOL_SIZE:100} minimum-idle: ${DB_MIN_IDLE:1} # redis configuration: redis: standalone: host: ${REDIS_HOST:localhost} port: ${REDIS_PORT:6379} database: ${REDIS_DATABASE:0} password: ${REDIS_PASSWORD:} timeout: ${REDIS_TIMEOUT:1} # security configuration: security: encrypt: key: ${ENCRYPT_KEY:ChangeTheKeyWhenDeployProduction} # rate limit: how many requests per minute: rate-limit: error-code: ${RATE_LIMIT_ERROR_CODE:429} limit: ${RATE_LIMIT_LIMIT:3} burst: ${RATE_LIMIT_BURST:10} anti-spam: lock-days: ${ANTI_SPAM_LOCK_DAYS:3650} # markdown configurations: markdown: plugins: # convert link to Bilibili video player, e.g. https://www.bilibili.com/video/BV1XW411M7Gu bilibili: enabled: ${MARKDOWN_BILIBILI_ENABLED:true} width: ${MARKDOWN_BILIBILI_WIDTH:100%} height: ${MARKDOWN_BILIBILI_HEIGHT:600px} # convert link to QQ video player, e.g. https://v.qq.com/x/cover/3nd6v5g14aoo20t/j0859o1tww8.html qq-video: enabled: ${MARKDOWN_QQ_VIDEO_ENABLED:true} width: ${MARKDOWN_QQ_VIDEO_WIDTH:100%} height: ${MARKDOWN_QQ_VIDEO_HEIGHT:600px} # convert link to YouTube video player, e.g. https://www.youtube.com/watch?v=EaW6VcOzLT4 youtube: enabled: ${MARKDOWN_YOUTUBE_ENABLED:true} width: ${MARKDOWN_YOUTUBE_WIDTH:100%} height: ${MARKDOWN_YOUTUBE_HEIGHT:600px} # convert securities to TradingView chart, e.g. $$NASDAQ:AAPL$$ # search valid symbol name at https://www.tradingview.com/widget/advanced-chart/ trading-view: enabled: ${MARKDOWN_TRADING_VIEW_ENABLED:false} width: ${MARKDOWN_TRADING_VIEW_WIDTH:100%} height: ${MARKDOWN_TRADING_VIEW_HEIGHT:480px} # search configurations: search: redisearch: default-language: ${REDISEARCH_DEFAULT_LANGUAGE:CHINESE} # signin configurations: signin: default-image: ${DEFAULT_IMAGE:/avatar/{name}} # local email / password signin: password: enabled: ${SIGNIN_PASSWORD_ENABLED:true} # web3 metamask signin: eth: enabled: ${SIGNIN_ETH_ENABLED:true} # passkey signin: passkey: enabled: ${SIGNIN_PASSKEY_ENABLED:true} # challenge timeout, default to 1 min: challenge-timeout: ${SIGNIN_PASSKEY_TIMEOUT:PT1M} # maximum passkeys per user: max: ${SIGNIN_PASSKEY_MAX:5} # oauth signin configuration: # {provider}: oauth provider id # - name: display name # - client-id: oauth client id # - client-secret: oauth client secret # - ignore-image: should ignore image? default to false. set true if external image url cannot be displayed. # NOTE: # an oauth provider is enabled if client-id and client-secret are both set. # display icon is mapping to /static/img/icon/{provider}.svg # code is mapping to com.itranswarp.oauth.provider.{Provider}OAuthProvider.java oauth: bilibili: name: "${OAUTH_BILIBILI_NAME:Bilibili}" client-id: "${OAUTH_BILIBILI_CLIENT_ID:}" client-secret: "${OAUTH_BILIBILI_CLIENT_SECRET:}" ignore-image: "${OAUTH_BILIBILI_IGNORE_IMAGE:true}" facebook: name: "${OAUTH_FACEBOOK_NAME:Facebook}" client-id: "${OAUTH_FACEBOOK_CLIENT_ID:}" client-secret: "${OAUTH_FACEBOOK_CLIENT_SECRET:}" github: name: "${OAUTH_GITHUB_NAME:Github}" client-id: "${OAUTH_GITHUB_CLIENT_ID:}" client-secret: "${OAUTH_GITHUB_CLIENT_SECRET:}" google: name: "${OAUTH_GOOGLE_NAME:Google}" client-id: "${OAUTH_GOOGLE_CLIENT_ID:}" client-secret: "${OAUTH_GOOGLE_CLIENT_SECRET:}" linkedin: name: "${OAUTH_LINKEDIN_NAME:LinkedIn}" client-id: "${OAUTH_LINKEDIN_CLIENT_ID:}" client-secret: "${OAUTH_LINKEDIN_CLIENT_SECRET:}" microsoft: name: "${OAUTH_MICROSOFT_NAME:Microsoft}" client-id: "${OAUTH_MICROSOFT_CLIENT_ID:}" client-secret: "${OAUTH_MICROSOFT_CLIENT_SECRET:}" qq: name: "${OAUTH_QQ_NAME:QQ}" client-id: "${OAUTH_QQ_CLIENT_ID:}" client-secret: "${OAUTH_QQ_CLIENT_SECRET:}" twitter: name: "${OAUTH_TWITTER_NAME:Twitter}" client-id: "${OAUTH_TWITTER_CLIENT_ID:}" client-secret: "${OAUTH_TWITTER_CLIENT_SECRET:}" weibo: name: "${OAUTH_WEIBO_NAME:Weibo}" client-id: "${OAUTH_WEIBO_CLIENT_ID:}" client-secret: "${OAUTH_WEIBO_CLIENT_SECRET:}" ignore-image: "${OAUTH_WEIBO_IGNORE_IMAGE:true}" # external configuration: external: remote-code-runner: enabled: ${REMOTE_CODE_RUNNER_ENABLED:false} url: ${REMOTE_CODE_RUNNER_URL:http://localhost:8080/run} languages: ${REMOTE_CODE_RUNNER_LANGUAGES:java,python} wait: ${REMOTE_CODE_RUNNER_WAIT:15} timeout: ${REMOTE_CODE_RUNNER_TIMEOUT:10} max-concurrent: ${REMOTE_CODE_RUNNER_MAX_CONCURRENT:10} chat-gpt: enabled: ${CHAT_GPT_ENABLED:false} url: ${CHAT_GPT_URL:https://api.openai.com/v1/chat/completions} api-key: ${CHAT_GPT_API_KEY:} model: ${CHAT_GPT_MODEL:gpt-3.5-turbo} prompt: ${CHAT_GPT_PROMPT:} rate-limit: ${CHAT_GPT_RATE_LIMIT:100} # default logging level: logging: level: root: ${LOGGING_ROOT:INFO} # END