# 服务器地址
host: "0.0.0.0"

# 服务器端口
port: 23366

# 加密密钥
app_key: ""

# 调试模式
debug: false

# 语言 ["en", "zh-CN", "zh-TW", "ja", "fr", "ko", "ru"]
locale: zh-CN

# 时间区域
timezone: Asia/Shanghai

# 默认站点名
site_default: 默认站点

# 默认站点地址
site_url: ""

# 登录有效时长 (单位：秒)
login_timeout: 259200

# 数据库
db:
  # 数据库类型 ["sqlite", "mysql", "pgsql", "mssql"]
  type: sqlite
  # 数据库文件 (仅 SQLite 数据库需填写)
  file: ./data/artalk.db
  # 数据库名称
  name: artalk
  # 数据库地址
  host: localhost
  # 数据库端口
  port: 3306
  # 数据库账户
  user: root
  # 数据库密码
  password: ""
  # 编码格式
  charset: utf8mb4
  # 表前缀 (例如："atk_")
  table_prefix: ""
  # 启用 SSL
  ssl: false
  # 预编译语句
  prepare_stmt: true

# 服务器
http:
  # 请求体大小限制 (单位：MB)
  body_limit: 100
  # 代理标头名 (当使用 CDN 时填写 `X-Forwarded-For` 获取用户真实 IP)
  proxy_header: ""

# 日志
log:
  # 启用日志
  enabled: true
  # 日志文件路径
  filename: ./data/artalk.log

# 缓存
cache:
  # 启用缓存
  enabled: false
  # 缓存类型 ["redis", "memcache", "builtin"]
  type: builtin
  # 缓存过期时间 (单位：分钟)
  expires: 30
  # 缓存启动预热 (程序启动时预热缓存)
  warm_up: false
  # 缓存服务器地址 (例如："localhost:6379")
  server: ""
  # Redis 配置
  redis:
    # 连接方式 ["tcp", "unix"]
    network: tcp
    # 用户名
    username: ""
    # 密码
    password: ""
    # 数据库编号 (例如使用零号数据库填写 0)
    db: 0

# 可信域名
# -- 例如：["https://artalk.example.com:23366"] --
trusted_domains: []

# SSL
ssl:
  # 启用 SSL
  enabled: false
  # 证书文件路径
  cert_path: ""
  # 密钥文件路径
  key_path: ""

# 管理员账户
# --
# - name: "admin"
#   email: "admin@example.com"
#   password: "" # 支持 bcrypt 或 md5 加密，如："(bcrypt)$2y$10$ti4vZYIrxVN8rLcYXVgXCO.GJND0dyI49r7IoF3xqIx8bBRmIBZRm"
#   badge_name: "管理员"
#   badge_color: "#0083FF"
# --
admin_users: []

# 评论审核
moderator:
  # 默认待审 (发表新评论需要后台人工审核后才能显示)
  pending_default: false
  # API 请求错误时拦截 (关闭此项当请求错误时让评论放行)
  api_fail_block: false
  # Akismet Key
  # (Akismet 反垃圾服务，https://akismet.com)
  akismet_key: ""
  # 腾讯云文本内容安全
  # (https://cloud.tencent.com/document/product/1124/64508)
  tencent:
    enabled: false
    secret_id: ""
    secret_key: ""
    region: ap-guangzhou
  # 阿里云内容安全
  # (https://help.aliyun.com/document_detail/28417.html)
  aliyun:
    enabled: false
    access_key_id: ""
    access_key_secret: ""
    region: cn-shanghai
  # 关键词过滤 (本地离线词库)
  keywords:
    enabled: false
    # 匹配成功设为待审状态
    pending: false
    # 词库文件 (支持多个词库文件)
    files:
      - ./data/词库_1.txt
    # 词库文件内容分割符 (例如填写 "\n" 文件中一行一个关键词)
    file_sep: "\n"
    # 替换字符
    replace_to: x

# 验证码
captcha:
  # 启用验证码
  enabled: true
  # 总是需要验证码
  always: false
  # 验证类型 ["image", "turnstile", "recaptcha", "hcaptcha", "geetest"]
  captcha_type: image
  # 激活验证码所需操作次数
  action_limit: 3
  # 重置操作计数器超时 (单位：s, 设为 -1 不重置)
  action_reset: 60
  # Turnstile
  # (https://www.cloudflare.com/products/turnstile/)
  turnstile:
    site_key: ""
    secret_key: ""
  # reCaptcha
  # (https://www.google.com/recaptcha/about/)
  recaptcha:
    site_key: ""
    secret_key: ""
  # hCaptcha (https://www.hcaptcha.com/)
  hcaptcha:
    site_key: ""
    secret_key: ""
  # Geetest 极验 (https://www.geetest.com)
  geetest:
    captcha_id: ""
    captcha_key: ""

# IP 属地
ip_region:
  # 启用 IP 属地展示
  enabled: false
  # 数据文件路径 (.xdb 格式)
  db_path: ./data/ip2region.xdb
  # 显示精度 ["province", "city", "country"]
  precision: province

# 图片上传
img_upload:
  # 启用图片上传
  enabled: true
  # 图片存放路径
  path: ./data/artalk-img/
  # 图片大小限制 (单位：MB)
  max_size: 5
  # 图片链接基础路径 (默认为 "/static/images/")
  public_path: null
  # Upgit 配置
  # (使用 Upgit 将图片上传到 GitHub 或图床：https://github.com/pluveto/upgit)
  upgit:
    # 启用 Upgit
    enabled: false
    # 命令行参数
    exec: upgit -c <upgit配置文件路径> -t /artalk-img
    # 上传后删除本地的图片
    del_local: true

# 邮件通知
email:
  # 启用邮件通知
  enabled: false
  # 发送方式 ["smtp", "ali_dm", "sendmail"]
  send_type: smtp
  # 发信人昵称
  send_name: "{{reply_nick}}"
  # 发信人地址
  send_addr: noreply@example.com
  # 邮件标题
  mail_subject: "[{{site_name}}] 您收到了来自 @{{reply_nick}} 的回复"
  # 邮件模板文件 (填入文件路径使用自定义模板)
  mail_tpl: default
  # SMTP 发送 (启用请将发送方式设为 "smtp")
  smtp:
    # 发件地址
    host: smtp.qq.com
    # 发件端口
    port: 587
    # 用户名
    username: example@qq.com
    # 密码
    password: ""
  # 阿里云邮件推送
  # (启用请将发送方式设为 "ali_dm"；参考：https://help.aliyun.com/document_detail/29444.html)
  ali_dm:
    access_key_id: ""
    access_key_secret: ""
    account_name: noreply@example.com

# 多元推送
admin_notify:
  # 通知模版 (填入文件路径使用自定义模板)
  notify_tpl: default
  # 待审评论仍然发送通知 (当评论被拦截时仍然发送通知)
  notify_pending: false
  # 嘈杂模式
  noise_mode: false
  # 邮件通知管理员
  email:
    # 开启 (当使用其他推送方式时，可以关闭管理员邮件通知)
    enabled: true
    # 邮件标题 (发送给管理员的邮件标题)
    mail_subject: "[{{site_name}}] 您的文章「{{page_title}}」有新回复"
    # 管理员邮件模板文件 (填入文件路径使用自定义模板)
    mail_tpl: ""
  # Telegram
  telegram:
    enabled: false
    api_token: ""
    receivers:
      - 7777777
  # Bark
  bark:
    enabled: false
    server: http://day.app/xxxxxxx/
  # 飞书
  lark:
    enabled: false
    webhook_url: ""
    # 消息类型 ["text", "card"]
    msg_type: "text"
  # WebHook
  webhook:
    enabled: false
    url: ""
  # 钉钉
  ding_talk:
    enabled: false
    token: ""
    secret: ""
  # Slack
  slack:
    enabled: false
    oauth_token: ""
    receivers:
      - CHANNEL_ID
  # LINE
  line:
    enabled: false
    channel_secret: ""
    channel_access_token: ""
    receivers:
      - USER_ID_1
      - GROUP_ID_1

# 社交登录
auth:
  # 启用社交登录
  enabled: false
  # 允许匿名评论 (允许跳过验证，仅填写匿名的昵称和邮箱)
  anonymous: false
  # 回调地址 (https://example.com/api/v2/auth/{provider}/callback)
  callback: "http://localhost:23366/api/v2/auth/{provider}/callback"
  # Email
  email:
    # 启用邮箱密码登录
    enabled: true
    # 邮箱验证邮件标题
    verify_subject: "您的验证码是 - {{code}}"
    # 邮箱验证邮件模板 (填入文件路径使用自定义模板)
    verify_tpl: default
  # GitHub
  github:
    enabled: false
    client_id: ""
    client_secret: ""
  # GitLab
  gitlab:
    enabled: false
    client_id: ""
    client_secret: ""
  # Gitea
  gitea:
    enabled: false
    client_id: ""
    client_secret: ""
  # Google
  google:
    enabled: false
    client_id: ""
    client_secret: ""
  # Mastodon
  mastodon:
    enabled: false
    client_id: ""
    client_secret: ""
  # Twitter
  twitter:
    enabled: false
    client_id: ""
    client_secret: ""
  # Facebook
  facebook:
    enabled: false
    client_id: ""
    client_secret: ""
  # Discord
  discord:
    enabled: false
    client_id: ""
    client_secret: ""
  # Steam
  steam:
    enabled: false
    api_key: ""
  # Apple
  apple:
    enabled: false
    client_id: ""
    client_secret: ""
  # Microsoft
  microsoft:
    enabled: false
    client_id: ""
    client_secret: ""
  # 微信
  wechat:
    enabled: false
    client_id: ""
    client_secret: ""
  # Tiktok
  tiktok:
    enabled: false
    client_id: ""
    client_secret: ""
  # Slack
  slack:
    enabled: false
    client_id: ""
    client_secret: ""
  # Line
  line:
    enabled: false
    client_id: ""
    client_secret: ""
  # Patreon
  patreon:
    enabled: false
    client_id: ""
    client_secret: ""
  # Auth0
  auth0:
    enabled: false
    client_id: ""
    client_secret: ""
    domain: ""

# 界面配置
frontend:
  # 评论框占位文字
  placeholder: ""
  # 无评论显示文字
  noComment: ""
  # 发送按钮文字
  sendBtn: ""
  # 评论框穿梭
  editorTravel: true
  # 表情包
  emoticons: https://cdn.jsdelivr.net/gh/ArtalkJS/Emoticons/grps/default.json
  # 投票按钮
  vote: true
  # 反对按钮
  voteDown: false
  # 用户 UA 徽标
  uaBadge: false
  # 评论排序功能
  listSort: true
  # 编辑器实时预览功能
  preview: true
  # 平铺模式 ["auto", true, false]
  flatMode: auto
  # 夜间模式 ["inherit", "auto"]
  darkMode: inherit
  # 最大嵌套层数
  nestMax: 2
  # 嵌套评论排序规则 ["DATE_ASC", "DATE_DESC", "VOTE_UP_DESC"]
  nestSort: DATE_ASC
  # 头像 Gravatar
  gravatar:
    # API 地址
    mirror: https://weavatar.com/avatar/
    # API 参数
    params: sha256=1&d=mp&s=240
  # 评论分页
  pagination:
    # 每页评论数
    pageSize: 20
    # 加载更多模式 (关闭则使用分页条)
    readMore: true
    # 滚动加载
    autoLoad: true
  # 内容限高
  heightLimit:
    # 评论内容限高 (单位：px)
    content: 300
    # 子评论区域限高 (单位：px)
    children: 400
    # 滚动限高 (允许限高区域滚动)
    scrollable: false
  # 图片懒加载 [false, "native", "data-src"]
  imgLazyLoad: false
  # 请求超时 (单位：毫秒)
  reqTimeout: 15000
  # 版本检测
  versionCheck: true
  # 插件
  pluginURLs: []
