export const rsyncSchema = {
  id: 'rsync',
  name: 'RSYNC',
  icon: 'Files',
  category: '系统服务',
  description: '快速增量文件传输工具',
  format: 'conf',
  fileName: 'rsyncd.conf',
  groups: [
    {
      title: '全局配置',
      fields: [
        {
          key: 'uid',
          label: '用户 (uid)',
          type: 'text',
          default: 'root',
          tip: '传输文件时使用的用户',
        },
        {
          key: 'gid',
          label: '用户组 (gid)',
          type: 'text',
          default: 'root',
          tip: '传输文件时使用的用户组',
        },
        {
          key: 'useChroot',
          label: '使用 chroot',
          type: 'switch',
          default: false,
          tip: '是否限制在根目录下，提高安全性',
        },
        {
          key: 'port',
          label: '监听端口',
          type: 'number',
          min: 1,
          max: 65535,
          default: 873,
        },
        {
          key: 'maxConnections',
          label: '最大连接数',
          type: 'number',
          min: 1,
          max: 1000,
          default: 10,
        },
        {
          key: 'timeout',
          label: '超时时间 (秒)',
          type: 'number',
          min: 0,
          max: 3600,
          default: 300,
          tip: 'I/O 超时时间',
        },
        {
          key: 'logFile',
          label: '日志文件路径',
          type: 'text',
          default: '/var/log/rsyncd.log',
        },
        {
          key: 'pidFile',
          label: 'PID 文件路径',
          type: 'text',
          default: '/var/run/rsyncd.pid',
        },
      ],
    },
    {
      title: '模块配置',
      fields: [
        {
          key: 'enableModule',
          label: '启用共享模块',
          type: 'switch',
          default: true,
          tip: '是否配置共享模块',
        },
        {
          key: 'moduleName',
          label: '模块名称',
          type: 'text',
          default: 'backup',
          dependsOn: { key: 'enableModule', value: true },
          tip: '客户端访问时使用的模块名',
        },
        {
          key: 'modulePath',
          label: '模块路径',
          type: 'text',
          default: '/data/backup',
          dependsOn: { key: 'enableModule', value: true },
          tip: '共享目录的绝对路径',
        },
        {
          key: 'moduleComment',
          label: '模块注释',
          type: 'text',
          default: 'Backup Area',
          dependsOn: { key: 'enableModule', value: true },
        },
        {
          key: 'readOnly',
          label: '只读模式',
          type: 'switch',
          default: false,
          dependsOn: { key: 'enableModule', value: true },
        },
        {
          key: 'list',
          label: '允许列出模块',
          type: 'switch',
          default: true,
          dependsOn: { key: 'enableModule', value: true },
          tip: '客户端是否可以列出可用模块',
        },
      ],
    },
    {
      title: '认证与安全',
      fields: [
        {
          key: 'authUsers',
          label: '授权用户',
          type: 'text',
          default: 'backup_user',
          tip: '多个用户用逗号分隔',
        },
        {
          key: 'secretsFile',
          label: '密码文件路径',
          type: 'text',
          default: '/etc/rsyncd.secrets',
          tip: '格式: 用户名:密码，每行一个',
        },
        {
          key: 'hostsAllow',
          label: '允许的主机',
          type: 'text',
          default: '192.168.1.0/24',
          tip: 'IP 或网段，多个用逗号或空格分隔',
        },
        {
          key: 'hostsDeny',
          label: '拒绝的主机',
          type: 'text',
          default: '*',
          tip: '* 表示拒绝所有未明确允许的主机',
        },
      ],
    },
  ],
}

export function generateRsyncConf(config) {
  const lines = []
  lines.push(`# rsyncd.conf 配置文件 - 由 ConfTemplate 生成`)
  lines.push(`# 生成时间: ${new Date().toLocaleString('zh-CN')}`)
  lines.push(``)

  // 全局配置
  lines.push(`# ======================== 全局配置 ========================`)
  lines.push(`uid = ${config.uid}`)
  lines.push(`gid = ${config.gid}`)
  lines.push(`use chroot = ${config.useChroot ? 'true' : 'false'}`)
  lines.push(`port = ${config.port}`)
  lines.push(`max connections = ${config.maxConnections}`)
  lines.push(`timeout = ${config.timeout}`)
  lines.push(`log file = ${config.logFile}`)
  lines.push(`pid file = ${config.pidFile}`)
  lines.push(``)

  // 模块配置
  if (config.enableModule) {
    lines.push(`# ======================== 模块配置 ========================`)
    lines.push(`[${config.moduleName}]`)
    lines.push(`    comment = ${config.moduleComment}`)
    lines.push(`    path = ${config.modulePath}`)
    lines.push(`    read only = ${config.readOnly ? 'true' : 'false'}`)
    lines.push(`    list = ${config.list ? 'true' : 'false'}`)
    lines.push(``)
  }

  // 认证与安全
  lines.push(`# ======================== 认证与安全 ========================`)
  lines.push(`auth users = ${config.authUsers}`)
  lines.push(`secrets file = ${config.secretsFile}`)
  lines.push(`hosts allow = ${config.hostsAllow}`)
  lines.push(`hosts deny = ${config.hostsDeny}`)

  return lines.join('\n')
}
