session.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package core
  2. import (
  3. "log"
  4. "math/rand"
  5. "strings"
  6. "time"
  7. "github.com/gofiber/fiber/v2"
  8. "github.com/gofiber/fiber/v2/middleware/session"
  9. )
  10. var Store *session.Store
  11. func SetupStorage() {
  12. Store = session.New(session.Config{
  13. Expiration: time.Hour * 24 * 30,
  14. })
  15. }
  16. func saveSession(sess *session.Session) error {
  17. if err := sess.Save(); err != nil {
  18. return err
  19. }
  20. return nil
  21. }
  22. func ProxyImageUrl(s string) string {
  23. s = strings.ReplaceAll(s, `https:\/\/i.pximg.net`, "https://"+GlobalServerConfig.ProxyServer)
  24. // s = strings.ReplaceAll(s, `https:\/\/i.pximg.net`, "/proxy/i.pximg.net")
  25. s = strings.ReplaceAll(s, `https:\/\/s.pximg.net`, "/proxy/s.pximg.net")
  26. return s
  27. }
  28. func GetImageProxy(c *fiber.Ctx) string {
  29. sess, err := Store.Get(c)
  30. if err != nil {
  31. log.Fatalln("Failed to get current session and its values! Falling back to server default!")
  32. return GlobalServerConfig.ProxyServer
  33. }
  34. value := sess.Get("ImageProxy")
  35. if value != nil {
  36. return value.(string)
  37. }
  38. return GlobalServerConfig.ProxyServer
  39. }
  40. func GetRandomDefaultToken() string {
  41. defaultToken := GlobalServerConfig.Token[rand.Intn(len(GlobalServerConfig.Token))]
  42. return defaultToken
  43. }
  44. func GetToken(c *fiber.Ctx) string {
  45. defaultToken := GlobalServerConfig.Token[rand.Intn(len(GlobalServerConfig.Token))]
  46. sess, err := Store.Get(c)
  47. if err != nil {
  48. log.Fatalln("Failed to get current session and its values! Falling back to server default!")
  49. return defaultToken
  50. }
  51. value := sess.Get("Token")
  52. if value != nil {
  53. return value.(string)
  54. }
  55. return defaultToken
  56. }
  57. func CheckToken(c *fiber.Ctx) string {
  58. sess, err := Store.Get(c)
  59. if err != nil {
  60. log.Fatalln("Failed to get current session and its values!")
  61. return ""
  62. }
  63. value := sess.Get("Token")
  64. if value != nil {
  65. return value.(string)
  66. }
  67. return ""
  68. }
  69. func GetCSRFToken(c *fiber.Ctx) string {
  70. sess, err := Store.Get(c)
  71. if err != nil {
  72. log.Fatalln("Failed to get current session and its values!")
  73. return ""
  74. }
  75. value := sess.Get("CSRF")
  76. if value != nil {
  77. return value.(string)
  78. }
  79. return ""
  80. }
  81. func SetSessionValue(c *fiber.Ctx, name, value string) error {
  82. sess, err := Store.Get(c)
  83. if err != nil {
  84. return err
  85. }
  86. sess.Set(name, value)
  87. if err = saveSession(sess); err != nil {
  88. log.Fatalln("Failed to save session storage!")
  89. return err
  90. }
  91. return nil
  92. }
  93. func RemoveSessionValue(c *fiber.Ctx, name string) error {
  94. sess, err := Store.Get(c)
  95. if err != nil {
  96. return err
  97. }
  98. sess.Delete(name)
  99. if err = saveSession(sess); err != nil {
  100. log.Fatalln("Failed to save session storage!")
  101. return err
  102. }
  103. return nil
  104. }