mirror of
https://github.com/rystaf/mlmym.git
synced 2024-11-05 06:43:21 +00:00
redirect instead of rewrite lemmy links, check for lemmy server
This commit is contained in:
parent
5857148ec9
commit
8ccb9d95b9
6
main.go
6
main.go
|
@ -108,6 +108,12 @@ func test() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
func RemoteAddr(r *http.Request) string {
|
||||||
|
if r.Header.Get("CF-Connecting-IP") != "" {
|
||||||
|
return r.Header.Get("CF-Connecting-IP")
|
||||||
|
}
|
||||||
|
return r.RemoteAddr
|
||||||
|
}
|
||||||
func middleware(n httprouter.Handle) httprouter.Handle {
|
func middleware(n httprouter.Handle) httprouter.Handle {
|
||||||
return func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
return func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
||||||
//remoteAddr := r.RemoteAddr
|
//remoteAddr := r.RemoteAddr
|
||||||
|
|
31
routes.go
31
routes.go
|
@ -141,7 +141,7 @@ var funcMap = template.FuncMap{
|
||||||
}
|
}
|
||||||
body = buf.String()
|
body = buf.String()
|
||||||
body = strings.Replace(body, `<img `, `<img loading="lazy" `, -1)
|
body = strings.Replace(body, `<img `, `<img loading="lazy" `, -1)
|
||||||
body = LemmyLinkRewrite(body, host, os.Getenv("LEMMY_DOMAIN"))
|
body = RegReplace(body, `href="(https:\/\/[a-zA-Z0-9\.\-]+\/(c|u|comment|post)\/[^#\?]*?)"`, `href="/`+host+`/link?url=$1"`)
|
||||||
body = RegReplace(body, `::: ?spoiler (.*?)\n([\S\s]*?):::`, "<details><summary>$1</summary>$2</details>")
|
body = RegReplace(body, `::: ?spoiler (.*?)\n([\S\s]*?):::`, "<details><summary>$1</summary>$2</details>")
|
||||||
return template.HTML(body)
|
return template.HTML(body)
|
||||||
},
|
},
|
||||||
|
@ -1429,6 +1429,33 @@ func UserOp(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
||||||
}
|
}
|
||||||
http.Redirect(w, r, r.URL.String(), 301)
|
http.Redirect(w, r, r.URL.String(), 301)
|
||||||
}
|
}
|
||||||
|
func GetLink(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
||||||
|
var dest *url.URL
|
||||||
|
m, _ := url.ParseQuery(r.URL.RawQuery)
|
||||||
|
if len(m["url"]) > 0 {
|
||||||
|
dest, _ = url.Parse(m["url"][0])
|
||||||
|
}
|
||||||
|
if dest.Host == r.Host || !IsLemmy(dest.Host, RemoteAddr(r)) {
|
||||||
|
http.Redirect(w, r, dest.String(), 302)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if host := ps.ByName("host"); host != "" {
|
||||||
|
redirect := "/" + host + dest.Path
|
||||||
|
if host != dest.Host && !strings.Contains(redirect, "@") {
|
||||||
|
redirect += ("@" + dest.Host)
|
||||||
|
}
|
||||||
|
http.Redirect(w, r, redirect, 302)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if host := os.Getenv("LEMMY_DOMAIN"); host != "" {
|
||||||
|
redirect := dest.Path
|
||||||
|
if host != dest.Host && !strings.Contains(redirect, "@") {
|
||||||
|
redirect += ("@" + dest.Host)
|
||||||
|
}
|
||||||
|
http.Redirect(w, r, redirect, 302)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
func GetRouter() *httprouter.Router {
|
func GetRouter() *httprouter.Router {
|
||||||
host := os.Getenv("LEMMY_DOMAIN")
|
host := os.Getenv("LEMMY_DOMAIN")
|
||||||
router := httprouter.New()
|
router := httprouter.New()
|
||||||
|
@ -1467,6 +1494,7 @@ func GetRouter() *httprouter.Router {
|
||||||
router.GET("/:host/create_community", middleware(GetCreateCommunity))
|
router.GET("/:host/create_community", middleware(GetCreateCommunity))
|
||||||
router.POST("/:host/create_community", middleware(UserOp))
|
router.POST("/:host/create_community", middleware(UserOp))
|
||||||
router.GET("/:host/communities", middleware(GetCommunities))
|
router.GET("/:host/communities", middleware(GetCommunities))
|
||||||
|
router.GET("/:host/link", middleware(GetLink))
|
||||||
} else {
|
} else {
|
||||||
router.ServeFiles("/_/static/*filepath", http.Dir("public"))
|
router.ServeFiles("/_/static/*filepath", http.Dir("public"))
|
||||||
router.GET("/", middleware(GetFrontpage))
|
router.GET("/", middleware(GetFrontpage))
|
||||||
|
@ -1499,6 +1527,7 @@ func GetRouter() *httprouter.Router {
|
||||||
router.GET("/create_community", middleware(GetCreateCommunity))
|
router.GET("/create_community", middleware(GetCreateCommunity))
|
||||||
router.POST("/create_community", middleware(UserOp))
|
router.POST("/create_community", middleware(UserOp))
|
||||||
router.GET("/communities", middleware(GetCommunities))
|
router.GET("/communities", middleware(GetCommunities))
|
||||||
|
router.GET("/link", middleware(GetLink))
|
||||||
}
|
}
|
||||||
return router
|
return router
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue