Files
file-online-preview/server/src/main/config/application详细.properties

544 lines
24 KiB
Java
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
####################################### 一、服务器基础配置(不可动态配置,需重启生效)#######################################
####################### 1.1 服务器网络配置 #######################
# 服务器端口号,默认8012,可通过环境变量 KK_SERVER_PORT 覆盖
# 修改端口后需重启服务生效
server.port = ${KK_SERVER_PORT:8012}
# 服务器上下文路径,默认为根路径,可通过环境变量 KK_CONTEXT_PATH 覆盖
# 示例:设置为 /preview 后,访问地址为 http://localhost:8012/preview
server.servlet.context-path = ${KK_CONTEXT_PATH:/}
# 服务器请求和响应编码字符集,设置为UTF-8以支持中文和国际化
server.servlet.encoding.charset = utf-8
####################### 1.2 服务器性能优化配置 #######################
# 启用GZIP压缩功能,减少网络传输数据量,提升页面加载速度
# 建议在生产环境中开启以节省带宽
server.compression.enabled = true
# 允许压缩的响应缓冲区最小字节数,默认为2048字节
# 小于此值的响应不压缩,避免小文件压缩反而增加开销
server.compression.min-response-size = 2048
# 支持GZIP压缩的MIME类型列表,包括常见的前端资源格式
# 可根据需要添加或删除特定的MIME类型
server.compression.mime-types = application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain,font/woff,application/font-woff,font/eot,image/svg+xml,image/x-icon
####################### 1.3 文件上传限制配置 #######################
# 单个文件上传最大限制,默认为500MB
# 根据业务需求和服务器内存大小调整
spring.servlet.multipart.max-file-size = 500MB
# 整个请求体(含多个文件)最大限制,默认为500MB
# 设置时应大于等于 max-file-size
spring.servlet.multipart.max-request-size = 500MB
####################### 1.4 FreeMarker模板引擎配置 #######################
# FreeMarker模板加载路径,默认为classpath下的web目录
# 模板文件应放置在此目录下
spring.freemarker.template-loader-path = classpath:/web/
# 是否启用模板缓存,开发环境建议设置为false,生产环境建议设置为true
# false: 每次请求都重新加载模板,便于调试
# true: 缓存模板,提升性能
spring.freemarker.cache = false
# 模板文件编码,设置为UTF-8以支持中文和国际化字符
spring.freemarker.charset = UTF-8
# 检查模板位置是否存在,启动时验证模板路径
spring.freemarker.check-template-location = true
# 模板内容类型,设置为HTML格式
spring.freemarker.content-type = text/html
# 将HTTP请求属性暴露给模板,便于模板访问请求参数、头部等信息
spring.freemarker.expose-request-attributes = true
# 将HTTP会话属性暴露给模板,便于模板访问会话数据
spring.freemarker.expose-session-attributes = true
# 设置模板中访问请求上下文的变量名
# 在模板中使用 ${request} 访问请求对象
spring.freemarker.request-context-attribute = request
# 模板文件后缀,默认为.ftl
# 模板文件应命名为 *.ftl
spring.freemarker.suffix = .ftl
####################### 1.5 Spring Boot健康监控配置 #######################
# 开启的健康检查端点,包括health、info、metrics
# health: 应用健康状态
# info: 应用基本信息
# metrics: 应用性能指标
management.endpoints.web.exposure.include = health,info,metrics
# 健康检查端点显示详细信息的策略,默认为always(总是显示)
# 生产环境建议设置为 when-authorized 或 never,避免敏感信息泄露
management.endpoint.health.show-details = always
# 启用默认的健康检查组件,监控应用核心组件状态
management.health.defaults.enabled = true
####################################### 二、Office文档处理配置(部分支持动态配置)#######################################
####################### 2.1 Office组件安装路径配置 #######################
# OpenOffice或LibreOffice安装路径,默认为default表示使用系统默认路径
# Windows示例(注意双反斜杠):C:\\Program Files (x86)\\OpenOffice 4
# Linux示例:/opt/libreoffice
# MacOS示例:/Applications/LibreOffice.app/Contents
office.home = ${KK_OFFICE_HOME:default}
####################### 2.2 Office转换服务配置 #######################
# Office转换服务监听的端口,默认开启两个进程分别监听2001和2002端口
# 多个端口用逗号分隔,系统会自动启动多个进程处理转换任务
office.plugin.server.ports = 2001,2002
# Office转换任务总超时时间,默认为5分钟
# 超过此时间的任务将被强制终止,释放资源
office.plugin.task.timeout = 5m
# Office进程在重启前可执行的最大任务数,默认为200
# 0表示无限,不重启。适当限制可避免内存泄漏
office.plugin.task.maxtasksperprocess = 200
# Office任务执行超时时间,默认为5分钟
# 单个任务处理超过此时间将被中止,处理下一个任务
office.plugin.task.taskexecutiontimeout = 5m
####################### 2.3 Office转换参数配置(支持动态更新)#######################
# 是否启用Office文档分页转换,默认为false(转换全部页面)
# 可设置为页面范围,如"1-5"表示只转换前5页
office.pagerange = ${KK_OFFICE_PAGERANGE:false}
# 是否启用Office文档水印功能,默认为false(不启用)
# 启用后会在转换的图片或PDF上添加水印
office.watermark = ${KK_OFFICE_WATERMARK:false}
# Office文档转图片的JPEG压缩质量,范围1-100,默认80
# 值越高图片质量越好但文件越大,建议80-90之间
office.quality = ${KK_OFFICE_QUALITY:80}
# Office文档转图片的最大分辨率DPI,默认150
# 值越高图片越清晰但文件越大,转换时间越长
# 建议范围:72(屏幕显示)-300(打印质量)
office.maximageresolution = ${KK_OFFICE_MAXIMAGERESOLUTION:150}
# 是否导出Office文档中的书签到PDF,默认为true(导出)
# 保留书签可方便PDF文档导航
office.exportbookmarks = ${KK_OFFICE_EXPORTBOOKMARKS:true}
# 是否将Office文档中的批注作为PDF注释导出,默认为true(导出)
# 保留批注便于文档审阅
office.exportnotes = ${KK_OFFICE_EXPORTNOTES:true}
# 加密文档生成的PDF是否添加密码,默认为true(添加)
# 密码为原始加密文档的密码,增强文档安全性
office.documentopenpasswords = ${KK_OFFICE_DOCUMENTOPENPASSWORD:true}
# Excel文档(xlsx)的前端解析方式,默认为web(Web端解析)
# web: 使用前端SheetJS库解析,减轻服务器压力
# image: 服务器转换为图片,兼容性更好
office.type.web = ${KK_OFFICE_TYPE_WEB:web}
####################################### 三、文件存储与缓存配置 #######################################
####################### 3.1 文件存储路径配置 #######################
# 预览生成资源的存储路径,默认为应用根路径下的file目录
# Windows示例:D:\\kkFileview\\(注意双反斜杠)
# Linux示例:/opt/kkfileview/file/
# 重要:确保应用有该目录的读写权限
file.dir = ${KK_FILE_DIR:default}
# 允许预览的本地文件夹路径,默认为default(禁止所有本地文件预览)
# ⚠️ 安全警告:配置此路径可能允许访问系统文件,请谨慎配置
# Windows示例(注意前面加反斜杠):\D:\\kkFileview\\1\\1.txt
# Linux示例(注意前面加正斜杠):/opt/1.txt
# 使用file协议访问:file://d:/1/1.txt(Windows)或 file:/opt/1/1.txt(Linux)
local.preview.dir = ${KK_LOCAL_PREVIEW_DIR:default}
####################### 3.2 缓存核心配置 #######################
# 是否启用缓存功能,默认为true(启用)
# 启用缓存可显著提升重复文件的预览速度
cache.enabled = ${KK_CACHE_ENABLED:true}
# 缓存实现类型,默认为jdk(使用JDK内置对象实现)
# 可选值:
# jdk: JDK内置ConcurrentHashMap,单机部署推荐
# redis: Redis分布式缓存,集群部署推荐
# default: 内嵌RocksDB,支持持久化
cache.type = ${KK_CACHE_TYPE:jdk}
####################### 3.3 Redis缓存详细配置(仅当cache.type=redis时生效)#######################
# Redis部署模式,默认为single(单机模式)
# 可选值:
# single: 单机模式(默认)
# cluster: 集群模式
# sentinel: 哨兵模式(高可用)
# master-slave: 主从模式
spring.redisson.mode = single
# Redis连接地址,支持多种格式:
# 单机模式:redis://127.0.0.1:6379
# 集群模式:redis://node1:6379,redis://node2:6379,redis://node3:6379
# 哨兵模式:redis://sentinel1:26379,redis://sentinel2:26379
spring.redisson.address = ${KK_SPRING_REDISSON_ADDRESS:redis://127.0.0.1:6379}
# Redis连接密码,无密码时留空
# 注意:密码包含特殊字符时需使用URL编码
spring.redisson.password = ${KK_SPRING_REDISSON_PASSWORD:}
# Redis数据库索引,默认为0(0-15)
# 不同业务可使用不同数据库隔离
spring.redisson.database = ${KK_SPRING_REDISSON_DATABASE:0}
####################### 3.4 缓存维护配置 #######################
# 是否启用缓存自动清理,默认为true(启用)
# 定期清理过期缓存,避免磁盘空间无限增长
cache.clean.enabled = ${KK_CACHE_CLEAN_ENABLED:true}
# 缓存自动清理时间,使用Quartz cron表达式,默认为每天凌晨3点执行
# 表达式格式:秒 分 时 日 月 周 年(可选)
# 0 0 3 * * ? 表示每天3:00:00执行清理
cache.clean.cron = ${KK_CACHE_CLEAN_CRON:0 0 3 * * ?}
####################################### 四、安全与访问控制配置(支持动态配置)#######################################
####################### 4.1 服务地址配置 #######################
# 提供预览服务的完整地址,默认从请求URL自动获取
# 当使用Nginx等反向代理时,必须手动设置此地址
# 示例:https://file.keking.cn
# 示例:http://192.168.1.100:8012
base.url = ${KK_BASE_URL:default}
####################### 4.2 信任主机白名单配置(重要安全配置)#######################
# 信任站点白名单配置,多个域名用逗号隔开
# ⚠️ 安全提示:为防止SSRF(服务器端请求伪造)攻击,必须配置信任主机
# ⚠️ 如果不配置,系统将默认拒绝所有外部文件预览请求
#
# 配置示例:
# trust.host = kkview.cn,yourdomain.com,cdn.example.com,192.168.1.*
#
# 支持通配符:
# * 匹配所有字符
# ? 匹配单个字符
# 192.168.* 匹配192.168开头的所有IP
#
# 当前配置:允许所有域名(仅建议测试环境使用,生产环境必须修改)
trust.host = *
####################### 4.3 不信任主机黑名单配置 #######################
# 不信任站点黑名单配置,多个用逗号隔开
# 黑名单优先级高于白名单,设置后将禁止预览来自这些站点的文件
# 建议配置:禁止访问内网地址和本地地址,防止内部信息泄露
#
# 配置示例:
# not.trust.host = localhost,127.0.0.1,0.0.0.0,192.168.*,10.*,172.16.*,172.17.*,172.18.*,172.19.*,172.20.*,172.21.*,172.22.*,172.23.*,172.24.*,172.25.*,172.26.*,172.27.*,172.28.*,172.29.*,172.30.*,172.31.*
not.trust.host = ${KK_NOT_TRUST_HOST:default}
####################### 4.4 文件类型安全限制 #######################
# 禁止上传和预览的文件类型,多个用逗号隔开
# 默认禁止可执行文件和系统文件,防止恶意文件上传
# exe: Windows可执行文件
# dll: Windows动态链接库
# dat: 数据文件(可能包含敏感信息)
prohibit = ${KK_PROHIBIT:exe,dll,dat}
####################################### 五、文件格式与预览配置(支持动态配置)#######################################
####################### 5.1 文本文件类型配置 #######################
# 支持的文本文件类型,多个用逗号隔开
# 这些文件将直接在前端以文本形式展示,无需转换
# 默认支持常见编程语言、配置文件和文档格式
simText = ${KK_SIMTEXT:txt,html,htm,asp,jsp,xml,json,properties,md,gitignore,log,java,py,c,cpp,sql,sh,bat,m,bas,prg,cmd}
####################### 5.2 多媒体文件类型配置 #######################
# 支持的媒体文件类型,多个用逗号隔开
# 这些文件将使用HTML5原生播放器或转换后播放
# 默认支持主流音频、视频和流媒体格式
media = ${KK_MEDIA:mp3,wav,mp4,flv,mpd,m3u8,ts,mpeg,m4a}
# 支持格式转换的视频类型,多个用逗号隔开
# 这些格式的视频将被转换为mp4格式以确保浏览器兼容性
# ⚠️ 视频转换消耗资源较大,建议根据服务器性能配置
convertMedias = ${KK_CONVERTMEDIAS:avi,mov,wmv,mkv,3gp,rm,mpeg}
####################### 5.3 图片文件类型配置 #######################
# TIF/TIFF格式图片预览模式,可选值:jpg、pdf
# tif: 使用前端Tiff.js插件直接浏览(需要浏览器支持)
# jpg: 服务器转换为JPG格式后显示(兼容性好)
# pdf: 服务器转换为PDF格式显示(支持多页和打印)
tif.preview.type = ${KK_TIF_PREVIEW_TYPE:tif}
# CAD设计文件预览模式,可选值:tif、svg、pdf
# tif: 转换为TIFF格式,使用前端插件浏览
# svg: 转换为SVG矢量格式(缩放不失真)
# pdf: 转换为PDF格式(便于打印和标注)
cad.preview.type = ${KK_CAD_PREVIEW_TYPE:svg}
####################### 5.4 Office文档预览配置 #######################
# Office类型文档(Word、PPT、Excel)预览样式,可选值:image、pdf
# image: 转换为图片序列(兼容性好,支持水印)
# pdf: 转换为PDF格式(支持文本复制、打印)
# 用户可在预览界面切换模式(除非禁用切换开关)
office.preview.type = ${KK_OFFICE_PREVIEW_TYPE:image}
# 是否关闭Office预览模式切换开关,默认为false(允许切换)
# 设置为true时,用户无法在图片和PDF模式间切换
office.preview.switch.disabled = ${KK_OFFICE_PREVIEW_SWITCH_DISABLED:false}
####################### 5.5 PDF文档预览配置 #######################
# PDF文件预览安全限制配置
# 是否禁止PDF演示模式,默认为true(禁止)
pdf.presentationMode.disable = ${KK_PDF_PRESENTATION_MODE_DISABLE:true}
# 是否禁止PDF文件菜单中的"打开文件"选项,默认为true(禁止)
pdf.openFile.disable = ${KK_PDF_OPEN_FILE_DISABLE:true}
# 是否禁止PDF打印功能,默认为true(禁止)
pdf.print.disable = ${KK_PDF_PRINT_DISABLE:true}
# 是否禁止PDF下载功能,默认为true(禁止)
pdf.download.disable = ${KK_PDF_DOWNLOAD_DISABLE:true}
# 是否禁止PDF书签/大纲功能,默认为true(禁止)
pdf.bookmark.disable = ${KK_PDF_BOOKMARK_DISABLE:true}
# 是否禁止PDF编辑功能(注释、表单等),默认为false(允许编辑)
pdf.disable.editing = ${KK_PDF_DISABLE_EDITING:false}
####################### 5.6 水印配置 #######################
# 水印文本内容,为空表示不添加水印
# 示例:内部文件,严禁外泄
watermark.txt = ${WATERMARK_TXT:}
# 水印在X轴方向的间隔(像素),默认为10
# 值越小水印越密集,值越大水印越稀疏
watermark.x.space = ${WATERMARK_X_SPACE:10}
# 水印在Y轴方向的间隔(像素),默认为10
watermark.y.space = ${WATERMARK_Y_SPACE:10}
# 水印字体,默认为"微软雅黑"
# 注意:服务器需要安装对应字体,Linux服务器可能需要安装中文字体
watermark.font = ${WATERMARK_FONT:微软雅黑}
# 水印字体大小,默认为18px
# 建议根据水印文本长度调整
watermark.fontsize = ${WATERMARK_FONTSIZE:18px}
# 水印字体颜色,默认为black(黑色)
# 支持格式:颜色名(black, white, red等)、十六进制(#000000)、RGB(rgb(0,0,0))
watermark.color = ${WATERMARK_COLOR:black}
# 水印透明度,范围0.005-1,默认为0.2(20%不透明度)
# 值越小水印越淡,值越大水印越明显
watermark.alpha = ${WATERMARK_ALPHA:0.2}
# 单个水印块的宽度(像素),默认为180
# 需要根据水印文本长度调整
watermark.width = ${WATERMARK_WIDTH:180}
# 单个水印块的高度(像素),默认为80
watermark.height = ${WATERMARK_HEIGHT:80}
# 水印倾斜度数,范围0-90,默认为10度
# 0度:水平水印,90度:垂直水印
watermark.angle = ${WATERMARK_ANGLE:10}
# CAD文件是否添加水印,默认为true(启用)
cad.watermark = true
####################################### 六、性能与资源管理配置(支持动态配置)#######################################
####################### 6.1 线程池配置 #######################
# PDF转换最大并发线程数,默认为10
# 根据服务器CPU核心数调整:建议为核心数×2
pdf.max.threads = 10
# CAD转换线程数,默认为5
# CAD转换较耗时,不宜设置过高
cad.thread = ${KK_CAD_THREAD:5}
# TIF转换线程数,默认为5
tif.thread = 5
####################### 6.2 超时配置(按文件大小分类)#######################
# 是否启用视频转换超时控制,默认为true(启用)
media.timeout.enabled = true
# 视频文件大小分类及超时时间(单位:秒)
# 小文件(<50MB):30秒超时
media.small.file.timeout = 30
# 中等文件(50-150MB):60秒超时
media.medium.file.timeout = 60
# 大文件(150-300MB):180秒超时(3分钟)
media.large.file.timeout = 180
# 超大文件(300-600MB):300秒超时(5分钟)
media.xl.file.timeout = 300
# XXL文件(600-1200MB):600秒超时(10分钟)
media.xxl.file.timeout = 600
# XXXL文件(>1200MB):1200秒超时(20分钟)
media.xxxl.file.timeout = 1200
####################### 6.3 超时配置(按PDF页数分类)#######################
# PDF文件按页数分类的超时配置(单位:秒)
# 小文件(0-50页):90秒超时
pdf.timeout.small = 90
# 中等文件(51-200页):180秒超时(3分钟)
pdf.timeout.medium = 180
# 大文件(201-500页):300秒超时(5分钟)
pdf.timeout.large = 300
# 超大文件(>500页):600秒超时(10分钟)
pdf.timeout.xlarge = 600
# CAD转换超时时间,默认为90秒
cad.timeout = ${KK_CAD_TIMEOUT:90}
# TIF转换超时时间,默认为90秒
tif.timeout = 90
####################### 6.4 资源限制配置 #######################
# 视频转换最大文件大小限制(单位:MB),默认为300MB
# 超过此大小的视频文件禁止转换,避免服务器资源耗尽
media.convert.max.size = 300
# 是否禁用视频格式转换功能,默认为true(禁用)
# ⚠️ 重要:视频转换非常消耗CPU和内存资源
# 启用前确保:1)服务器性能充足 2)配置异步处理 3)增加线程池
media.convert.disable = ${KK_MEDIA_CONVERT_DISABLE:true}
####################### 6.5 DPI优化配置 #######################
# 是否启用PDF DPI智能调整,默认为true(启用)
# 根据PDF页数自动调整DPI,平衡清晰度和性能
pdf.dpi.enabled = true
# PDF转图片的基准DPI,默认为144
# 当DPI优化禁用时使用此值
pdf2jpg.dpi = ${KK_PDF2JPG_DPI:144}
# PDF按页数范围的DPI优化值
# 小文件(0-50页):150 DPI(高质量)
pdf.dpi.small = 150
# 中等文件(50-100页):120 DPI(平衡质量与性能)
pdf.dpi.medium = 120
# 大文件(100-200页):96 DPI(优化性能)
pdf.dpi.large = 96
# 超大文件(200-500页):72 DPI(快速转换)
pdf.dpi.xlarge = 72
# 巨量文件(>500页):72 DPI(最小资源消耗)
pdf.dpi.xxlarge = 72
####################################### 七、FTP文件访问配置(支持动态配置)#######################################
####################### 7.1 FTP连接认证配置 #######################
#FTP模块设置
#预览源为FTP时,可在ftp url后面加参数?ftp.username=ftpuser&ftp.password=123456&ftp.control.encoding=GBK,指定,不指定默认用配置的 (为了安全我们强烈建议在配置中设置相关信息)
#ftp.control.encodin (根据FTP服务器操作系统选择,Linux一般为UTF-8,Windows一般为GBK)
#使用方法,支持,分割第一个是域名或者IP地址后面是用户名在后面是密码,在后面是编码(用户名密码和编码用:分割, 域名用,分割),切记url不需要任何协议头
#ftp.username = 地址:端口:用户名:密码:编码,192.168.0.2:21:name:123456:UTF-8,www.xxx.com:21:admin:pass:UTF-8 多客户端,分割
#ftp.username =10.99.1.2:21:666:88888:GBK
ftp.username = false
####################################### 八、首页与文件管理配置(支持动态配置)#######################################
####################### 8.1 首页功能配置 #######################
# 是否禁用首页文件上传功能,默认为false(不禁用)
# 设置为true可关闭上传功能,仅用于预览
file.upload.disable = false
# 网站备案信息,显示在首页底部,默认为空
# 示例:京ICP备12345678号
beian = ${KK_BEIAN:default}
# 首页初始化加载的页码,默认为1(第一页)
home.pagenumber = ${DEFAULT_HOME_PAGENUMBER:1}
# 首页是否启用分页功能,默认为true(启用)
home.pagination = ${DEFAULT_HOME_PAGINATION:true}
# 首页每页显示的文件数量,默认为15
home.pagesize = ${DEFAULT_HOME_PAGSIZE:15}
# 首页是否显示搜索框,默认为true(显示)
home.search = ${DEFAULT_HOME_SEARCH:true}
####################### 8.2 文件删除安全配置 #######################
# 是否启用验证码验证删除文件,默认为false(不启用)
# 启用后删除文件需要输入验证码,防止误删
delete.captcha = ${KK_DELETE_CAPTCHA:false}
# 删除文件密码,默认为123456
# 删除文件时需要验证此密码(如果启用了验证码,两者都需要)
delete.password = ${KK_DELETE_PASSWORD:123456}
# 是否删除转换后的源文件,默认为true(删除)
# 启用可节约磁盘空间,但会丢失原始文件
# 注意:删除后无法重新转换,只能重新上传
delete.source.file = ${KK_DELETE_SOURCE_FILE:true}
####################################### 九、权限与认证配置(支持动态配置)#######################################
####################### 9.1 功能权限配置 #######################
# 是否启用图片预览权限,默认为true(启用)
# 设置为false可禁用所有图片预览功能
kk.Picturespreview = true
# 是否启用跨域文件获取权限,默认为true(启用)
# 设置为false可防止跨站请求伪造(CSRF)
kk.Getcorsfile = true
# 是否启用添加异步任务权限,默认为true(启用)
# 大文件转换通常使用异步任务处理
kk.addTask = true
# API密钥功能,默认为false(禁用)
# 启用后需要提供密钥才能调用API
kk.Key = false
####################### 9.2 加密与认证配置 #######################
# AES加密密钥,必须为16位字符
# 启用AES加密时,接入方需使用相同的密钥
# 用于敏感数据传输加密
ase.key = 1234567890123456
# Basic认证配置,格式:域名:用户名:密码,多个用逗号分隔
# 用于保护特定域名的访问
# 示例:192.168.0.1:admin:pass123,example.com:user:pass456
basic.name = 10.99.1.2:aaa:bbb
# User-Agent验证字符串,默认为99999
# 可用于简单的客户端验证
useragent = 99999
####################################### 十、高级功能与兼容性配置(支持动态配置)#######################################
####################### 10.1 SSL/TLS安全配置 #######################
# 是否忽略SSL证书验证,默认为true(忽略)
# 用于开发环境或自签名证书场景
# 生产环境建议设置为false,启用完整的证书验证
kk.ignore.ssl = true
####################### 10.2 重定向功能配置 #######################
# 是否启用URL重定向功能,默认为true(启用)
# 用于处理文件下载、外部资源引用等场景
kk.enable.redirect = true