92 lines
2.1 KiB
Go
92 lines
2.1 KiB
Go
|
package pagemappings
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"net/url"
|
||
|
"strconv"
|
||
|
|
||
|
"github.com/gin-gonic/gin"
|
||
|
)
|
||
|
|
||
|
var pageMappings = map[int]interface{}{
|
||
|
1: "/",
|
||
|
2: "/login",
|
||
|
3: "/register",
|
||
|
4: "/", // user cp (deleted)
|
||
|
5: "/settings/avatar",
|
||
|
6: "/settings",
|
||
|
7: "/settings/password",
|
||
|
8: "/settings/userpage",
|
||
|
9: "/", // some deleted pages
|
||
|
10: "/",
|
||
|
11: "/",
|
||
|
12: "/",
|
||
|
13: "/leaderboard",
|
||
|
14: "/doc",
|
||
|
15: "/", // ripple v1 documentation stuff. this stuff is so old I won't even bother.
|
||
|
16: func(u url.URL) string {
|
||
|
return fmt.Sprintf("/doc/%s", u.Query().Get("id"))
|
||
|
},
|
||
|
17: "/changelog",
|
||
|
18: "/pwreset",
|
||
|
19: func(u url.URL) string {
|
||
|
return fmt.Sprintf("/pwreset/continue?k=%s", u.Query().Get("k"))
|
||
|
},
|
||
|
20: "/", // Beta keys
|
||
|
21: "/about",
|
||
|
22: "/", // reports
|
||
|
23: "/doc/rules", // rules
|
||
|
24: "/", // my report
|
||
|
25: "/", // report
|
||
|
26: "/friends",
|
||
|
27: "https://status.ripple.moe",
|
||
|
28: "/", // user lookup
|
||
|
29: "/2fa_gateway",
|
||
|
30: "/settings/2fa",
|
||
|
31: "/beatmaps/rank_request",
|
||
|
32: "/dev/applications",
|
||
|
33: "/dev/applications", // Theorically, this should be something like /dev/applications/<id>, but no-one ever used that page so who gives a fuck.
|
||
|
34: "/donate",
|
||
|
35: "/team",
|
||
|
36: "/irc",
|
||
|
37: "/beatmaps",
|
||
|
38: "/register/verify",
|
||
|
39: "/register/welcome",
|
||
|
40: "/settings/discord",
|
||
|
41: "/register", // elmo
|
||
|
}
|
||
|
|
||
|
// CheckRedirect checks if the request is to be redirected to another page.
|
||
|
// This is to avoid broken links because of the old website.
|
||
|
func CheckRedirect(c *gin.Context) {
|
||
|
p := c.Request.URL.Path
|
||
|
if p != "/" && p != "/index.php" {
|
||
|
c.Next()
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if c.Query("u") != "" {
|
||
|
c.Redirect(302, "/u/"+c.Query("u"))
|
||
|
c.Abort()
|
||
|
return
|
||
|
} else if i, _ := strconv.Atoi(c.Query("p")); i != 0 {
|
||
|
mapped := pageMappings[i]
|
||
|
if mapped == nil {
|
||
|
u := c.Request.URL
|
||
|
u.Host = "old.ripple.moe"
|
||
|
c.Redirect(302, u.String())
|
||
|
return
|
||
|
}
|
||
|
if str, ok := mapped.(string); ok {
|
||
|
c.Redirect(302, str)
|
||
|
c.Abort()
|
||
|
return
|
||
|
}
|
||
|
if f, ok := mapped.(func(url.URL) string); ok {
|
||
|
c.Redirect(302, f(*c.Request.URL))
|
||
|
c.Abort()
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}
|