diff --git a/config.example.yaml b/config.example.yaml index c0c07cf..c39c68d 100644 --- a/config.example.yaml +++ b/config.example.yaml @@ -78,4 +78,6 @@ port: 8082 # 主题 为空值为option template,没有就默认为twentyfifteen theme: "twentyfifteen" # 文档排序默认升序还是降序 -postOrder: "desc" \ No newline at end of file +postOrder: "desc" +# 上传的目录 +uploadDir: "" \ No newline at end of file diff --git a/internal/cmd/route/route.go b/internal/cmd/route/route.go index 7eda3d0..9da364f 100644 --- a/internal/cmd/route/route.go +++ b/internal/cmd/route/route.go @@ -44,13 +44,20 @@ func SetupRouter() (*gin.Engine, func()) { }))) } - f := static.Fs{FS: static.FsEx, Path: "wp-includes"} - r.StaticFileFS("/favicon.ico", "favicon.ico", http.FS(static.FsEx)) + f := static.Fs{FS: static.FsDir, Path: "wp-includes"} + r.StaticFileFS("/favicon.ico", "favicon.ico", http.FS(static.FsDir)) r.StaticFS("/wp-includes", http.FS(f)) - r.StaticFS("/wp-content", http.FS(static.Fs{ - FS: static.FsEx, - Path: "wp-content", + r.StaticFS("/wp-content/plugins", http.FS(static.Fs{ + FS: static.FsDir, + Path: "wp-content/plugins", })) + r.StaticFS("/wp-content/themes", http.FS(static.Fs{ + FS: static.FsDir, + Path: "wp-content/themes", + })) + if c.UploadDir != "" { + r.Static("/wp-content/uploads", c.UploadDir) + } store := cookie.NewStore([]byte("secret")) r.Use(sessions.Sessions("go-wp", store)) sl, slRload := middleware.SearchLimit(c.SingleIpSearchNum) diff --git a/internal/pkg/config/config.go b/internal/pkg/config/config.go index 8302f16..b957ec5 100644 --- a/internal/pkg/config/config.go +++ b/internal/pkg/config/config.go @@ -40,6 +40,7 @@ type Config struct { TrustServerNames []string `yaml:"trustServerNames"` Theme string `yaml:"theme"` PostOrder string `yaml:"postOrder"` + UploadDir string `yaml:"uploadDir"` } type Ssl struct { diff --git a/internal/pkg/dao/posts.go b/internal/pkg/dao/posts.go index 92a4e4f..b92df99 100644 --- a/internal/pkg/dao/posts.go +++ b/internal/pkg/dao/posts.go @@ -7,7 +7,6 @@ import ( "github.com/fthvgb1/wp-go/helper/slice" "github.com/fthvgb1/wp-go/internal/pkg/models" "github.com/fthvgb1/wp-go/internal/plugins" - "github.com/fthvgb1/wp-go/internal/wpconfig" "github.com/fthvgb1/wp-go/model" "strings" "sync/atomic" @@ -44,7 +43,8 @@ func GetPostsByIds(ids ...any) (m map[uint64]models.Posts, err error) { } postsMap[post.Id] = v } - host, _ := wpconfig.Options.Load("siteurl") + //host, _ := wpconfig.Options.Load("siteurl") + host := "" meta, _ := GetPostMetaByPostIds(ctx, id) for k, pp := range postsMap { if len(pp.Categories) > 0 { diff --git a/internal/plugins/comment.go b/internal/plugins/comment.go index edf61ca..d3e3cff 100644 --- a/internal/plugins/comment.go +++ b/internal/plugins/comment.go @@ -4,6 +4,7 @@ import ( "github.com/fthvgb1/wp-go/helper/slice" "github.com/fthvgb1/wp-go/internal/pkg/models" "github.com/gin-gonic/gin" + "net/url" "strconv" "strings" ) @@ -13,6 +14,7 @@ type CommentHandler struct { comments []*Comments maxDepth int depth int + isTls bool i CommentHtml } @@ -23,16 +25,25 @@ type Comments struct { type CommentHtml interface { Sort(i, j *Comments) bool - FormatLi(c *gin.Context, m models.Comments, depth int, eo, parent string) string + FormatLi(c *gin.Context, m models.Comments, depth int, isTls bool, eo, parent string) string } func FormatComments(c *gin.Context, i CommentHtml, comments []models.Comments, maxDepth int) string { tree := treeComments(comments) + u := c.Request.Header.Get("Referer") + var isTls bool + if u != "" { + uu, _ := url.Parse(u) + if uu.Scheme == "https" { + isTls = true + } + } h := CommentHandler{ Context: c, comments: tree, maxDepth: maxDepth, depth: 1, + isTls: isTls, i: i, } return h.formatComment(h.comments, true) @@ -55,7 +66,7 @@ func (d CommentHandler) formatComment(comments []*Comments, isTop bool) (html st parent = "parent" fl = true } - s.WriteString(d.i.FormatLi(d.Context, comment.Comments, d.depth, eo, parent)) + s.WriteString(d.i.FormatLi(d.Context, comment.Comments, d.depth, d.isTls, eo, parent)) if fl { d.depth++ s.WriteString(`
    `) @@ -130,8 +141,8 @@ func (c CommonCommentFormat) Sort(i, j *Comments) bool { return i.CommentDate.UnixNano() < j.CommentDate.UnixNano() } -func (c CommonCommentFormat) FormatLi(ctx *gin.Context, m models.Comments, depth int, eo, parent string) string { - return FormatLi(CommonLi(), ctx, m, depth, eo, parent) +func (c CommonCommentFormat) FormatLi(ctx *gin.Context, m models.Comments, depth int, isTls bool, eo, parent string) string { + return FormatLi(CommonLi(), ctx, m, depth, isTls, eo, parent) } var li = ` @@ -171,11 +182,11 @@ var li = ` ` -func FormatLi(li string, c *gin.Context, comments models.Comments, depth int, eo, parent string) string { +func FormatLi(li string, c *gin.Context, comments models.Comments, depth int, isTls bool, eo, parent string) string { for k, v := range map[string]string{ "{{CommentId}}": strconv.FormatUint(comments.CommentId, 10), "{{Depth}}": strconv.Itoa(depth), - "{{Gravatar}}": Gravatar(comments.CommentAuthorEmail, c.Request.TLS != nil), + "{{Gravatar}}": Gravatar(comments.CommentAuthorEmail, isTls), "{{CommentAuthorUrl}}": comments.CommentAuthorUrl, "{{CommentAuthor}}": comments.CommentAuthor, "{{PostId}}": strconv.FormatUint(comments.CommentPostId, 10), diff --git a/internal/static/static.go b/internal/static/static.go index ab12fb2..1c1013c 100644 --- a/internal/static/static.go +++ b/internal/static/static.go @@ -9,7 +9,7 @@ import ( ) //go:embed wp-content wp-includes favicon.ico -var FsEx embed.FS +var FsDir embed.FS type Fs struct { embed.FS diff --git a/internal/theme/twentyseventeen/layout/head.gohtml b/internal/theme/twentyseventeen/layout/head.gohtml index 94a4c28..bf5a312 100644 --- a/internal/theme/twentyseventeen/layout/head.gohtml +++ b/internal/theme/twentyseventeen/layout/head.gohtml @@ -50,11 +50,11 @@ - + diff --git a/internal/theme/twentyseventeen/twentyseventeen.go b/internal/theme/twentyseventeen/twentyseventeen.go index 728d44a..48e934e 100644 --- a/internal/theme/twentyseventeen/twentyseventeen.go +++ b/internal/theme/twentyseventeen/twentyseventeen.go @@ -88,7 +88,8 @@ func Hook(status int, c *gin.Context, h gin.H, scene, stats int) { h["HeaderImage"] = getHeaderImage(c) post := h["post"].(models.Posts) h["bodyClass"] = bodyClass(scene, int(post.Id)) - host, _ := wpconfig.Options.Load("siteurl") + //host, _ := wpconfig.Options.Load("siteurl") + host := "" img := plugins.Thumbnail(post.Thumbnail.OriginAttachmentData, "thumbnail", host, "thumbnail", "post-thumbnail") img.Width = img.OriginAttachmentData.Width img.Height = img.OriginAttachmentData.Height @@ -109,7 +110,7 @@ type comment struct { plugins.CommonCommentFormat } -func (c comment) FormatLi(ctx *gin.Context, m models.Comments, depth int, eo, parent string) string { +func (c comment) FormatLi(ctx *gin.Context, m models.Comments, depth int, isTls bool, eo, parent string) string { templ := plugins.CommonLi() templ = strings.ReplaceAll(templ, `回复`) - return plugins.FormatLi(templ, ctx, m, depth, eo, parent) + return plugins.FormatLi(templ, ctx, m, depth, isTls, eo, parent) } func postThumbnail(posts []models.Posts, scene int) []models.Posts { @@ -149,12 +150,13 @@ func getHeaderImage(c *gin.Context) (r models.PostThumbnail) { logs.ErrPrintln(err, "获取主题背景图信息错误") return } - host, _ := wpconfig.Options.Load("siteurl") + //host, _ := wpconfig.Options.Load("siteurl") + host := "" m.Thumbnail = plugins.Thumbnail(m.AttachmentMetadata, "thumbnail", host, "thumbnail", "post-thumbnail", "twentyseventeen-thumbnail-avatar") if m.Thumbnail.Path != "" { r = m.Thumbnail if len(m.AttachmentMetadata.Sizes) > 0 { - r.Srcset = str.Join(r.Path, " 2000vw, ", r.Srcset) + r.Srcset = str.Join(r.Path, " 2000w, ", r.Srcset) } } }