提交 7dfe3072 编写于 作者: 智布道's avatar 智布道 👁

💡 每晚凌晨12点自动检查友联,对于私自取消友联的网站实行自动封禁

上级 725d983c
package com.zyd.blog.core.schedule;
import com.zyd.blog.business.entity.Link;
import com.zyd.blog.business.enums.ConfigKeyEnum;
import com.zyd.blog.business.service.SysConfigService;
import com.zyd.blog.business.service.SysLinkService;
import com.zyd.blog.business.util.LinksUtil;
import com.zyd.blog.persistence.beans.SysConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.List;
/**
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0.0
* @since 1.0.0
*/
@Slf4j
@Component
public class FriendlyLinkTask {
@Autowired
private SysLinkService sysLinkService;
@Autowired
private SysConfigService sysConfigService;
@Value("${app.enableAutoCheckLink}")
private boolean enableAutoCheckLink;
/**
* 每晚凌晨12点,检查友情链接
*/
@Scheduled(cron = "0 0 0 * * ?")
public void check() {
// 未开启自动检查友联的功能
if (!enableAutoCheckLink) {
return;
}
List<Link> linkList = sysLinkService.listAll();
if (CollectionUtils.isEmpty(linkList)) {
return;
}
SysConfig sysConfig = sysConfigService.getByKey(ConfigKeyEnum.DOMAIN.getKey());
if (StringUtils.isEmpty(sysConfig)) {
return;
}
String domain = sysConfig.getConfigValue();
for (Link link : linkList) {
if (!link.isStatus()) {
// 被禁用的网站如果又包含了本站链接,说明其已经恢复本站的友联
// 因此自动恢复其友联
if (LinksUtil.hasLinkByHtml(link.getUrl(), domain)
|| LinksUtil.hasLinkByChinaz(link.getUrl(), domain)) {
link.setStatus(true);
link.setDescription("");
sysLinkService.updateSelective(link);
}
continue;
}
// 已经不存在本站链接,自动下架该网站的友联
if (!(LinksUtil.hasLinkByHtml(link.getUrl(), domain))
&& !LinksUtil.hasLinkByChinaz(link.getUrl(), domain)) {
link.setStatus(false);
link.setDescription("系统检测到该网站已经取消本站的链接,因此自动封禁其友链");
sysLinkService.updateSelective(link);
log.info("系统监测到该网站([{}])已经私自取消本站链接,因此自动下架的友联", link.getName());
}
}
}
}
......@@ -17,6 +17,10 @@ logging:
app:
# 是否启用kaptcha验证码
enableKaptcha: ${ONEBLOG_APP_ENABLE_KAPTCHA:false}
# 是否启用自动校验友情链接的功能
# 请选择打开,一旦打开,每晚凌晨12点会自动检查友联,对于不包含本站链接的网站实行自动封禁
# 目前暂时没实现白名单的功能
enableAutoCheckLink: ${ONEBLOG_APP_ENABLE_CHECK_LINK:false}
# 启用后,项目在启动时会打印数据库(Mysql和Redis)链接信息(包含密码)
# 代码请参考
enabledPrintConfig: ${ONEBLOG_APP_ENABLE_PRINT_CONFIG:false}
......
......@@ -37,6 +37,10 @@ ONEBLOG_MAIL_PASSWORD=
# oneblog 自定义配置
# 是否启用 kaptcha 验证码
ONEBLOG_APP_ENABLE_KAPTCHA=false
# 是否启用自动校验友情链接的功能
# 请选择打开,一旦打开,每晚凌晨12点会自动检查友联,对于不包含本站链接的网站实行自动封禁
# 目前暂时没实现白名单的功能
ONEBLOG_APP_ENABLE_CHECK_LINK=false
# 启用后,项目在启动时会打印数据库(Mysql和Redis)链接信息(包含密码)
ONEBLOG_APP_ENABLE_PRINT_CONFIG=true
# 是否启用 redis 切面缓存。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册