# =============================================================================
# kare-wrapped.service — 通用模板
#
# 占位符由 kare install 阶段填充，填充后的值按 [KarePolicy] 定义的规则
# 应用到原始 service 文件：
#
#   force   — 始终用模板值替换原始值
#   comment — 在原始文件中注释掉这些字段
#   rewrite — 绝对路径改写（字段名:新前缀），同时拷贝文件到宿主
#   defaults— 模板中其他字段均为默认值（原始有则保留，无则用模板值）
#   Exec*   — 非模板 Exec* 自动包装为 kare run
#
# 占位符说明：
#   {SERVICE_DESCRIPTION_PLACEMENT}  ← 原始 Description
#   {SERVICE_NAME_PLACEMENT}         ← 服务名（不含 .service）
#   {SERVICE_BIN_PLACEMENT}          ← 服务名（用于 .bin 包装脚本）
# =============================================================================

# 风险项： systemd service 文件有PrivateTmp等安全相关字段，
# 这些字段设置之后，可能会影响kare进程的权限，如果kare请求了相应权限，是否会导致启动失败
#
#以下字段作用在 wrapper 上而非容器内进程，应加入 comment：
#   systemd.exec(5) 安全隔离类：
#     ProtectHome ProtectSystem ProtectControlGroups ProtectKernelModules
#     ProtectKernelTunables PrivateTmp PrivateDevices PrivateMounts
#     PrivateNetwork PrivateUsers RestrictNamespaces RestrictAddressFamilies
#     RestrictRealtime CapabilityBoundingSet AmbientCapabilities
#     SystemCallFilter SystemCallArchitectures NoNewPrivileges
#     ReadOnlyPaths ReadWritePaths InaccessiblePaths BindPaths BindReadOnlyPaths
#     TemporaryFileSystem DynamicUser LockPersonality MemoryDenyWriteExecute
#     RemoveIPC SELinuxContext AppArmorProfile SmackProcessLabel
#     SecureBits KeyringMode UMask User Group RootDirectory RootImage MountAPIVFS
#   systemd.resource-control(5) cgroup 限制类：
#     CPUQuota CPUWeight CPUShares MemoryMax MemoryHigh MemoryLow MemorySwapMax
#     TasksMax IOWeight IOReadBandwidthMax IOWriteBandwidthMax
#     DeviceAllow DevicePolicy IPAddressAllow IPAddressDeny
#   systemd.service(5)：
#     RootDirectoryStartOnly

[KarePolicy]
# 强制覆盖：始终用模板值
force = Type PIDFile ExecStart ExecStop WantedBy
# 注释掉：这些字段对 kare wrapper 有害或无效
comment = WorkingDirectory
路径改写：容器内路径 → /opt/kare 前缀（前缀固定，仅列字段名）
rewrite = EnvironmentFile


[Unit]
Description={SERVICE_DESCRIPTION_PLACEMENT}

[Service]
Type=forking
PIDFile=/run/kare/{SERVICE_NAME_PLACEMENT}.pid
ExecStart=/opt/kare/lib/systemd/system/{SERVICE_BIN_PLACEMENT}.bin start
ExecStop=/opt/kare/lib/systemd/system/{SERVICE_BIN_PLACEMENT}.bin stop
TimeoutStartSec=30
TimeoutStopSec=30
Restart=on-failure
RestartSec=1s

[Install]
WantedBy=multi-user.target
