package cc.mrbird.febs.firewall.service; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.firewall.dto.CountryVo; import cc.mrbird.febs.firewall.entity.FirewallCountryRule; import cc.mrbird.febs.firewall.entity.FirewallIpWhite; import cc.mrbird.febs.firewall.entity.FirewallSite; import com.baomidou.mybatisplus.core.metadata.IPage; import java.util.List; /** * 防火墙规则 Service 接口 * * @author auto-generated * @date 2026-07-31 */ public interface IFirewallRuleService { // ==================== 站点管理 ==================== /** * 站点分页列表 */ IPage siteList(FirewallSite site, QueryRequest request); /** * 站点保存/更新 */ FebsResponse saveSite(FirewallSite site); /** * 站点删除 */ FebsResponse deleteSite(Long id); // ==================== 国家规则管理 ==================== /** * 国家规则分页列表 */ IPage countryRuleList(FirewallCountryRule rule, QueryRequest request); /** * 单个国家规则保存/更新(保存后自动生成Nginx配置) */ FebsResponse saveCountryRuleSingle(FirewallCountryRule rule); /** * 单个国家规则删除(删除后自动生成Nginx配置) */ FebsResponse deleteCountryRule(Long id); /** * 查询站点允许的国家列表 */ List getCountries(Long siteId); /** * 批量保存站点国家白名单规则(删旧→插新→生成配置→reload信号) */ void saveCountryRule(Long siteId, List countries); /** * 手动触发 Nginx 配置生成 & reload */ void triggerNginxReload(Long siteId); // ==================== IP白名单管理 ==================== /** * IP白名单分页列表 */ IPage ipWhiteList(FirewallIpWhite ipWhite, QueryRequest request); /** * 保存/更新IP白名单(保存后自动生成Nginx配置) */ FebsResponse saveIpWhite(FirewallIpWhite ipWhite); /** * 删除IP白名单(删除后自动生成Nginx配置) */ FebsResponse deleteIpWhite(Long id); }