spring: application: # Spring 应用名;用于日志、注册中心标识等。 name: tms-framework servlet: multipart: # Spring/Tomcat multipart 解析上限;必须不小于业务上传上限,否则请求会在进入 Controller 前被拒绝。 max-file-size: ${TMS_FILE_STORAGE_MAX_FILE_SIZE_BYTES:104857600} max-request-size: ${TMS_FILE_STORAGE_MAX_FILE_SIZE_BYTES:104857600} profiles: # 默认激活环境;可通过 --spring.profiles.active=prod 覆盖。 active: dev server: # TMS HTTP 服务监听端口。 port: 8080 management: endpoints: web: exposure: # Actuator 对外暴露端点列表。 include: health,info,metrics endpoint: health: # 健康检查返回详细信息策略:always/when-authorized/never。 show-details: always springdoc: api-docs: # 是否启用 OpenAPI JSON 文档输出。 enabled: true # OpenAPI 文档访问路径。 path: /v3/api-docs swagger-ui: # 是否启用 Swagger UI 页面。 enabled: true # Swagger UI 页面路径。 path: /swagger-ui.html # 标签排序方式(alpha: 字母序)。 tags-sorter: alpha # 接口排序方式(alpha: 字母序)。 operations-sorter: alpha tms: file: storage: # 上传文件根目录;上传接口会将文件保存到 //。 upload-base-dir: ${TMS_FILE_STORAGE_UPLOAD_BASE_DIR:/home/tms/uploads} # 上传文件大小上限(字节)。 max-file-size-bytes: ${TMS_FILE_STORAGE_MAX_FILE_SIZE_BYTES:104857600} init: executor: # 初始化执行模式:SIMULATE(仅模拟,不执行外部命令) / LOCAL(本机执行脚本命令)。 mode: ${TMS_INIT_EXECUTOR_MODE:LOCAL} # 单步骤命令超时时间(秒)。 timeout-sec: ${TMS_INIT_EXECUTOR_TIMEOUT_SEC:600} # 初始化步骤日志目录;按 taskId/stepNo 生成日志文件。 log-dir: ${TMS_INIT_EXECUTOR_LOG_DIR:/home/tms/tmp/tms-init-logs} # TMS 外置配置目录;资源备份恢复会按此目录收集配置。 tms-config-dir: ${TMS_INIT_EXECUTOR_TMS_CONFIG_DIR:/home/tms/config} # 标准版(企业/间参)安装根目录统一变量。 standard-home-dir: ${TMS_INIT_STANDARD_HOME_DIR:/home/cmep4i} # 标准版 cpconfig.cfg 路径;默认取 standard-home-dir 下文件。 standard-cpconfig-path: ${TMS_INIT_EXECUTOR_STANDARD_CPCONFIG_PATH:${tms.init.executor.standard-home-dir}/cpconfig.cfg} # 标准版数据库脚本基目录;默认取 standard-home-dir/cpackage,用于读取 sql_script 模板。 standard-db-script-base-dir: ${TMS_INIT_EXECUTOR_STANDARD_DB_SCRIPT_BASE_DIR:${tms.init.executor.standard-home-dir}/cpackage} # 标准版数据库 SQL 加载目录;DB_APPLY 会将渲染后 SQL 复制到该目录。 standard-db-load-dir: ${TMS_INIT_EXECUTOR_STANDARD_DB_LOAD_DIR:${tms.init.executor.standard-home-dir}/mysql/loadfilepath} # 标准版数据库导库用户名;默认复用应用数据源账号。 standard-db-username: ${TMS_INIT_EXECUTOR_STANDARD_DB_USERNAME:root} # 标准版数据库导库密码;默认复用应用数据源密码。 standard-db-password: ${TMS_INIT_EXECUTOR_STANDARD_DB_PASSWORD:Sunyard123} # 标准版数据库导入命令;LOCAL 模式下必须配置,否则 DB_APPLY 会直接失败。 standard-db-apply-command: ${TMS_INIT_EXECUTOR_STANDARD_DB_APPLY_COMMAND:/home/tms/bin/apply_standard_db.sh} # 标准版数据库入口 SQL 文件名;与导库命令配合使用。 standard-db-entry-sql-file-name: ${TMS_INIT_EXECUTOR_STANDARD_DB_ENTRY_SQL_FILE_NAME:CMEP.sql} # 标准版 nginx 模板路径;用于生成最终 nginx.conf。 standard-nginx-template-path: ${TMS_INIT_EXECUTOR_STANDARD_NGINX_TEMPLATE_PATH:${tms.init.executor.standard-home-dir}/cpackage/software/nginx.conf} # 标准版 nginx 目标配置路径。 standard-nginx-target-path: ${TMS_INIT_EXECUTOR_STANDARD_NGINX_TARGET_PATH:/usr/local/nginx/conf/nginx.conf} # 标准版 WEB 前端压缩包路径;默认对齐厂商 cpackage/front/front.zip。 standard-web-front-zip-path: ${TMS_INIT_EXECUTOR_STANDARD_WEB_FRONT_ZIP_PATH:${tms.init.executor.standard-home-dir}/cpackage/front/front.zip} # 标准版 WEB 工作目录;用于解压前端产物。 standard-web-work-dir: ${TMS_INIT_EXECUTOR_STANDARD_WEB_WORK_DIR:${tms.init.executor.standard-home-dir}/web} # 标准版 WEB 发布目录。 standard-web-target-dir: ${TMS_INIT_EXECUTOR_STANDARD_WEB_TARGET_DIR:/usr/local/nginx/html} # 标准版 organization.json 输出路径;默认对齐厂商脚本写入位置。 standard-web-organization-json-path: ${TMS_INIT_EXECUTOR_STANDARD_WEB_ORGANIZATION_JSON_PATH:${tms.init.executor.standard-web-target-dir}/organization.json} # 标准版 CMSP/CMTP 启动用户;start_standard_apps.sh 会读取该值。 standard-run-user: ${TMS_INIT_EXECUTOR_STANDARD_RUN_USER:cmep4i} # 标准版 CMSP/CMTP 启动命令。 standard-app-start-command: ${TMS_INIT_EXECUTOR_STANDARD_APP_START_COMMAND:/home/tms/bin/start_standard_apps.sh} # 标准版 CMSP/CMTP 停止命令。 standard-app-stop-command: ${TMS_INIT_EXECUTOR_STANDARD_APP_STOP_COMMAND:/home/tms/bin/stop_standard_apps.sh} # 标准版 nginx 启动命令。 standard-nginx-start-command: ${TMS_INIT_EXECUTOR_STANDARD_NGINX_START_COMMAND:/home/tms/bin/start_standard_nginx.sh} # 标准版 nginx 停止命令。 standard-nginx-stop-command: ${TMS_INIT_EXECUTOR_STANDARD_NGINX_STOP_COMMAND:/home/tms/bin/stop_standard_nginx.sh} # 标准版 RabbitMQ 停止命令。 standard-rabbit-stop-command: ${TMS_INIT_EXECUTOR_STANDARD_RABBIT_STOP_COMMAND:/home/tms/bin/stop_standard_rabbitmq.sh} # 标准版启动后检查命令。 standard-post-check-command: ${TMS_INIT_EXECUTOR_STANDARD_POST_CHECK_COMMAND:/home/tms/bin/check_standard_runtime.sh} # 直参版 cpconfig 文件名(按 upload-base-dir// 解析)。 direct-cpconfig-file-name: ${TMS_INIT_EXECUTOR_DIRECT_CPCONFIG_FILE_NAME:cpconfig.cfg} # 上传文件根目录;所有 fileId 均从该目录解析。 upload-base-dir: ${TMS_INIT_EXECUTOR_UPLOAD_BASE_DIR:/home/tms/uploads} # 初始化过程临时暂存目录(用于复制上传文件后再处理)。 staging-root-dir: ${TMS_INIT_EXECUTOR_STAGING_ROOT_DIR:/home/tmp/tms-init-staging} # 标准版收发器 license 固定落位路径。 standard-receiver-license-target-path: ${TMS_INIT_EXECUTOR_STANDARD_RECEIVER_LICENSE_TARGET_PATH:${tms.init.executor.standard-home-dir}/cmep/license/cmep.license} # 直参版收发器 license 固定落位路径。 direct-receiver-license-target-path: ${TMS_INIT_EXECUTOR_DIRECT_RECEIVER_LICENSE_TARGET_PATH:/home/cmep4d/cmep/license/cmep.license} # 标准版 TLQ license(tlqconf.zip)落位路径。 standard-tlq-license-target-path: ${TMS_INIT_EXECUTOR_STANDARD_TLQ_LICENSE_TARGET_PATH:/home/tlq/tlqconf.zip} # 直参版 TLQ license(license.dat)落位路径。 direct-tlq-license-target-path: ${TMS_INIT_EXECUTOR_DIRECT_TLQ_LICENSE_TARGET_PATH:/home/tlq/TLQ8/license.dat} # 直参版执行 DB 脚本前,渲染后的 cpconfig.cfg 同步目标路径。 direct-cpconfig-target-path: ${TMS_INIT_EXECUTOR_DIRECT_CPCONFIG_TARGET_PATH:/opt/cpconfig.cfg} # 直参版数据库初始化脚本目录(通常包含 setsql.sh)。 direct-db-script-dir: ${TMS_INIT_EXECUTOR_DIRECT_DB_SCRIPT_DIR:/opt/CAE_Install_Base_Resource/DB} # 直参版 TLQ init_cfg.sh 所在目录。 direct-tlq-init-cfg-dir: ${TMS_INIT_EXECUTOR_DIRECT_TLQ_INIT_CFG_DIR:/opt/CAE_Install_App_Resource/CAE} # CFMQ 配置落地目录;为空时仅校验文件,不执行复制。 cfmq-target-dir: ${TMS_INIT_EXECUTOR_CFMQ_TARGET_DIR:/pmts/cfg} # RabbitMQ 管理员账号(预制)。 rabbit-admin-username: ${TMS_INIT_EXECUTOR_RABBIT_ADMIN_USERNAME:admin} # RabbitMQ 管理员密码(预制)。 rabbit-admin-password: ${TMS_INIT_EXECUTOR_RABBIT_ADMIN_PASSWORD:admin} # RabbitMQ 控制命令(用于新增用户、授权等)。 # 建议线上配置为绝对路径,例如 /usr/local/rabbitmq/sbin/rabbitmqctl。 rabbitmq-ctl-command: ${TMS_INIT_EXECUTOR_RABBITMQ_CTL_COMMAND:rabbitmqctl} # RabbitMQ Admin CLI 命令路径(用于创建队列等)。 rabbitmq-admin-command: ${TMS_INIT_EXECUTOR_RABBITMQ_ADMIN_COMMAND:/usr/sbin/rabbitmqadmin} # 标准版 RabbitMQ 初始化脚本(会按前端输入替换 rConn/rConn 后执行)。 standard-rabbit-setup-script-path: ${TMS_INIT_EXECUTOR_STANDARD_RABBIT_SETUP_SCRIPT_PATH:${tms.init.executor.standard-home-dir}/cpackage/rabq/setuprabq.sh} # 标准版 RabbitMQ 队列初始化脚本(默认执行 01 节点脚本)。 standard-rabbit-queue-script-path: ${TMS_INIT_EXECUTOR_STANDARD_RABBIT_QUEUE_SCRIPT_PATH:${tms.init.executor.standard-home-dir}/cpackage/rabq/addrabq_R_01.sh} # 标准版 RabbitMQ 队列初始化脚本(02 节点);双节点时会按本机IP自动在01/02之间选择。 standard-rabbit-queue-script-path-02: ${TMS_INIT_EXECUTOR_STANDARD_RABBIT_QUEUE_SCRIPT_PATH_02:${tms.init.executor.standard-home-dir}/cpackage/rabq/addrabq_R_02.sh} # 通道用户授权 vhost(默认 /RQ)。 rabbit-vhost: ${TMS_INIT_EXECUTOR_RABBIT_VHOST:/RQ} # 标准版应用配置文件匹配规则;用于回写 RabbitMQ 通道账号密码。 standard-rabbit-app-config-patterns: - ${TMS_INIT_EXECUTOR_STANDARD_RABBIT_APP_CONFIG_PATTERN_1:${tms.init.executor.standard-home-dir}/cmsp/application-prd*.properties} - ${TMS_INIT_EXECUTOR_STANDARD_RABBIT_APP_CONFIG_PATTERN_2:${tms.init.executor.standard-home-dir}/cmtp/application-prd*.properties} # 回写应用配置时,是否对 RabbitMQ 账号密码进行 3DES 加密。 standard-rabbit-credential-encrypt-enabled: ${TMS_INIT_EXECUTOR_STANDARD_RABBIT_CREDENTIAL_ENCRYPT_ENABLED:true} # 3DES 加密密钥(需与收发器解密逻辑保持一致)。 standard-rabbit-credential-secret-key: ${TMS_INIT_EXECUTOR_STANDARD_RABBIT_CREDENTIAL_SECRET_KEY:ABCDEFGHIJKLMN1234567890} # LOCAL 模式命令白名单前缀;非白名单命令会被拒绝执行。 whitelist-prefixes: - ${TMS_INIT_EXECUTOR_WHITELIST_PREFIX_1:bash ${tms.init.executor.standard-home-dir}/cpackage/} - ${TMS_INIT_EXECUTOR_WHITELIST_PREFIX_2:bash /opt/CAE_Install_} - ${TMS_INIT_EXECUTOR_WHITELIST_PREFIX_3:systemctl } - ${TMS_INIT_EXECUTOR_WHITELIST_PREFIX_4:echo } cisd: preset: # 设备预制版本:ENTERPRISE / INDIRECT / DIRECT。 product-type: ${TMS_CISD_PRESET_PRODUCT_TYPE:ENTERPRISE} # 预制版本号(用于前端展示与任务记录)。 version: ${TMS_CISD_PRESET_VERSION:V1.0.0} # 预制信息来源标识(CONFIG/DB 等自定义值)。 source: ${TMS_CISD_PRESET_SOURCE:CONFIG} device: profile: # 设备型号展示值。 model: ${TMS_DEVICE_PROFILE_MODEL:SYD7108} # 设备名称展示值。 name: ${TMS_DEVICE_PROFILE_NAME:跨境支付终端一体机} # CPU 型号默认展示值;命令读取失败或为空时回退。 cpu-model-default: ${TMS_DEVICE_PROFILE_CPU_MODEL_DEFAULT:Hygon C86-3G (OPN:3350)} # 内存总量默认展示值;命令读取失败或为空时回退。 memory-total-default: ${TMS_DEVICE_PROFILE_MEMORY_TOTAL_DEFAULT:16GB} # 磁盘总量默认展示值;命令读取失败或为空时回退。 disk-total-default: ${TMS_DEVICE_PROFILE_DISK_TOTAL_DEFAULT:256G} upgrade: # 升级包解压和脚本执行暂存目录。 staging-root-dir: ${TMS_UPGRADE_STAGING_ROOT_DIR:/home/tmp/tms-upgrade-staging} # 升级任务统一日志目录。 log-dir: ${TMS_UPGRADE_LOG_DIR:/home/tms/tmp/tms-upgrade-logs} # 升级包验签使用的公钥 PEM 文件路径;为空时升级预检会拒绝通过。 signature-public-key-pem-path: ${TMS_UPGRADE_SIGNATURE_PUBLIC_KEY_PEM_PATH:/home/tms/cert/public_key.pem} backup: # 资源备份包输出目录;第一版先在本机生成可见的 .tmsbak 文件。 output-dir: ${TMS_BACKUP_OUTPUT_DIR:/home/tms/tmp/resource-backup-packages} # 恢复 runner 启停 TMS 时使用的脚本路径。 tms-script-path: ${TMS_BACKUP_TMS_SCRIPT_PATH:/home/tms/scripts/tms.sh} # 外部恢复 runner 启动脚本路径;创建恢复任务后由主进程调用该脚本拉起独立 runner。 runner-launch-script-path: ${TMS_BACKUP_RUNNER_LAUNCH_SCRIPT_PATH:/home/tms/bin/resource-restore/start-runner.sh} # 导出 TMS 库时使用的 mysqldump 命令;现场可按实际安装路径覆盖。 mysqldump-path: ${TMS_BACKUP_MYSQLDUMP_PATH:mysqldump} # 恢复 TMS 库时使用的 mysql 客户端命令。 mysql-path: ${TMS_BACKUP_MYSQL_PATH:mysql} # 数据库恢复脚本路径;runner 在 RESTORE_DATABASES 阶段调用。 restore-db-script-path: ${TMS_BACKUP_RESTORE_DB_SCRIPT_PATH:/home/tms/bin/resource-restore/restore-db.sh} # 备份 TMS 库名;为空时默认从 spring.datasource.url 中解析。 tms-database-name: ${TMS_BACKUP_TMS_DATABASE_NAME:} # 备份/恢复标准收发器业务库名;第一版默认使用 CMEP。 cmep-database-name: ${TMS_BACKUP_CMEP_DATABASE_NAME:CMEP} # 恢复完成后的最小健康检查地址。 health-check-url: ${TMS_BACKUP_HEALTH_CHECK_URL:http://127.0.0.1:8080/actuator/health} # 健康检查请求超时(秒)。 health-check-timeout-seconds: ${TMS_BACKUP_HEALTH_CHECK_TIMEOUT_SECONDS:5} # 是否在创建恢复任务后自动拉起本机 runner;默认关闭,避免开发环境误触停机恢复链。 runner-auto-launch-enabled: ${TMS_BACKUP_RUNNER_AUTO_LAUNCH_ENABLED:false} # 恢复 runner 心跳失联超时(秒)。 runner-heartbeat-timeout-seconds: ${TMS_BACKUP_RUNNER_HEARTBEAT_TIMEOUT_SECONDS:300} mk: init-identify: # SDFE_InitIdentify 旧 PIN(Base64 编码);主密钥初始化接口会读取该值。 old-pin-base64: ${TMS_MK_INIT_IDENTIFY_OLD_PIN_BASE64:NjY2NjY2} # SDFE_InitIdentify 新 PIN(Base64 编码);主密钥初始化接口会读取该值。 new-pin-base64: ${TMS_MK_INIT_IDENTIFY_NEW_PIN_BASE64:NjY2NjY2} security: # 内部接口鉴权 token(前后端内部调用需一致)。 internal-token: ${TMS_INTERNAL_TOKEN:change-me-internal-token} internal-auth: # 是否启用 /api/** 的内部登录鉴权;开发联调时可临时关闭。 enabled: ${TMS_SECURITY_INTERNAL_AUTH_ENABLED:false} # 关闭内部鉴权后,注入请求上下文的调试角色。 debug-role-code: ${TMS_SECURITY_INTERNAL_AUTH_DEBUG_ROLE_CODE:SUPER_ADMIN} # 关闭内部鉴权后,注入请求上下文的调试认证等级。 debug-auth-level: ${TMS_SECURITY_INTERNAL_AUTH_DEBUG_AUTH_LEVEL:FULL} # 关闭内部鉴权后,注入请求上下文的调试 session token。 debug-session-token: ${TMS_SECURITY_INTERNAL_AUTH_DEBUG_SESSION_TOKEN:DEBUG-BYPASS} replay: # 是否启用防重放校验;本地 Postman/联调可临时设为 false,生产环境应保持 true。 enabled: ${TMS_SECURITY_REPLAY_ENABLED:false} openapi: # 外部签名服务接口允许的时间戳偏差(秒),防重放。 timestamp-skew-seconds: 300 clients: # 外部客户端 appId -> secret 映射(示例:demo-app)。 demo-app: ${TMS_OPENAPI_DEMO_SECRET:change-me-openapi-secret} crypto-card: # 是否启用密码卡能力。 enabled: ${TMS_CRYPTO_CARD_ENABLED:true} # 密码卡模式:MOCK(模拟)/JNA(动态库调用)等。 mode: ${TMS_CRYPTO_CARD_MODE:JNA} # 动态库目录(.so 所在目录)。 vendor-lib-path: ${TMS_CRYPTO_VENDOR_LIB_PATH:/home/tms/libs/libsdf_syd1408-x64.so.1.0.0} # 动态库名(不含前缀/后缀或按加载器约定)。 vendor-lib-name: ${TMS_CRYPTO_VENDOR_LIB_NAME:sdf_ukey_syd1408} # 是否严格校验算法标识(与 0018/厂商补充定义一致性校验)。 strict-alg-id-validation: ${TMS_CRYPTO_STRICT_ALG_ID_VALIDATION:true}