diff --git a/src/main/java/run/halo/app/controller/content/ContentFeedController.java b/src/main/java/run/halo/app/controller/content/ContentFeedController.java index 3fdcebb85..33aafb054 100644 --- a/src/main/java/run/halo/app/controller/content/ContentFeedController.java +++ b/src/main/java/run/halo/app/controller/content/ContentFeedController.java @@ -3,6 +3,7 @@ package run.halo.app.controller.content; import freemarker.template.Template; import freemarker.template.TemplateException; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.RegExUtils; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; @@ -43,6 +44,8 @@ public class ContentFeedController { private final static String UTF_8_SUFFIX = ";charset=UTF-8"; + private final static String XML_INVAID_CHAR = "[\\x00-\\x1F\\x7F]"; + private final static String XML_MEDIA_TYPE = MediaType.APPLICATION_XML_VALUE + UTF_8_SUFFIX; private final PostService postService; @@ -206,6 +209,10 @@ public class ContentFeedController { Page postPage = postService.pageBy(PostStatus.PUBLISHED, pageable); Page posts = postService.convertToDetailVo(postPage); + posts.getContent().forEach(postDetailVO -> { + postDetailVO.setFormatContent(RegExUtils.replaceAll(postDetailVO.getFormatContent(), XML_INVAID_CHAR, "")); + postDetailVO.setSummary(RegExUtils.replaceAll(postDetailVO.getSummary(), XML_INVAID_CHAR, "")); + }); return posts.getContent(); } @@ -222,6 +229,10 @@ public class ContentFeedController { Page postPage = postCategoryService.pagePostBy(category.getId(), PostStatus.PUBLISHED, pageable); Page posts = postService.convertToDetailVo(postPage); + posts.getContent().forEach(postDetailVO -> { + postDetailVO.setFormatContent(RegExUtils.replaceAll(postDetailVO.getFormatContent(), XML_INVAID_CHAR, "")); + postDetailVO.setSummary(RegExUtils.replaceAll(postDetailVO.getSummary(), XML_INVAID_CHAR, "")); + }); return posts.getContent(); } } diff --git a/src/main/resources/application-dev.yaml b/src/main/resources/application-dev.yaml index be6e2e3c9..275bbe160 100755 --- a/src/main/resources/application-dev.yaml +++ b/src/main/resources/application-dev.yaml @@ -64,4 +64,4 @@ halo: auth-enabled: true mode: development workDir: ${user.home}/halo-dev/ - cache: level \ No newline at end of file + cache: memory \ No newline at end of file diff --git a/src/main/resources/templates/common/web/atom.ftl b/src/main/resources/templates/common/web/atom.ftl index 089d68861..45d47e316 100644 --- a/src/main/resources/templates/common/web/atom.ftl +++ b/src/main/resources/templates/common/web/atom.ftl @@ -41,14 +41,12 @@ ${user.nickname!} ${blog_url!} - - - ${post.formatContent!} - <#else> - ${post.summary!} - - ]]> + + <#if (options.rss_content_type!'full') == 'full'> + + <#else> + + diff --git a/src/main/resources/templates/common/web/rss.ftl b/src/main/resources/templates/common/web/rss.ftl index b75d189c3..ed2580312 100644 --- a/src/main/resources/templates/common/web/rss.ftl +++ b/src/main/resources/templates/common/web/rss.ftl @@ -26,19 +26,15 @@ <#list posts as post> - <![CDATA[ - ${post.title!} - ]]> + <![CDATA[${post.title!}]]> ${post.fullPath!} - - ${post.formatContent!} - <#else> - ${post.summary!} - - ]]> + <#if (options.rss_content_type!'full') == 'full'> + + <#else> + + ${post.createTime?iso_local}