xray_setting.go 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package controller
  2. import (
  3. "x-ui/web/service"
  4. "github.com/gin-gonic/gin"
  5. )
  6. type XraySettingController struct {
  7. XraySettingService service.XraySettingService
  8. SettingService service.SettingService
  9. InboundService service.InboundService
  10. OutboundService service.OutboundService
  11. XrayService service.XrayService
  12. }
  13. func NewXraySettingController(g *gin.RouterGroup) *XraySettingController {
  14. a := &XraySettingController{}
  15. a.initRouter(g)
  16. return a
  17. }
  18. func (a *XraySettingController) initRouter(g *gin.RouterGroup) {
  19. g = g.Group("/xray")
  20. g.POST("/", a.getXraySetting)
  21. g.POST("/update", a.updateSetting)
  22. g.GET("/getXrayResult", a.getXrayResult)
  23. g.GET("/getDefaultJsonConfig", a.getDefaultXrayConfig)
  24. g.POST("/warp/:action", a.warp)
  25. g.GET("/getOutboundsTraffic", a.getOutboundsTraffic)
  26. }
  27. func (a *XraySettingController) getXraySetting(c *gin.Context) {
  28. xraySetting, err := a.SettingService.GetXrayConfigTemplate()
  29. if err != nil {
  30. jsonMsg(c, I18nWeb(c, "pages.settings.toasts.getSettings"), err)
  31. return
  32. }
  33. inboundTags, err := a.InboundService.GetInboundTags()
  34. if err != nil {
  35. jsonMsg(c, I18nWeb(c, "pages.settings.toasts.getSettings"), err)
  36. return
  37. }
  38. xrayResponse := "{ \"xraySetting\": " + xraySetting + ", \"inboundTags\": " + inboundTags + " }"
  39. jsonObj(c, xrayResponse, nil)
  40. }
  41. func (a *XraySettingController) updateSetting(c *gin.Context) {
  42. xraySetting := c.PostForm("xraySetting")
  43. err := a.XraySettingService.SaveXraySetting(xraySetting)
  44. jsonMsg(c, I18nWeb(c, "pages.settings.toasts.modifySettings"), err)
  45. }
  46. func (a *XraySettingController) getDefaultXrayConfig(c *gin.Context) {
  47. defaultJsonConfig, err := a.SettingService.GetDefaultXrayConfig()
  48. if err != nil {
  49. jsonMsg(c, I18nWeb(c, "pages.settings.toasts.getSettings"), err)
  50. return
  51. }
  52. jsonObj(c, defaultJsonConfig, nil)
  53. }
  54. func (a *XraySettingController) getXrayResult(c *gin.Context) {
  55. jsonObj(c, a.XrayService.GetXrayResult(), nil)
  56. }
  57. func (a *XraySettingController) warp(c *gin.Context) {
  58. action := c.Param("action")
  59. var resp string
  60. var err error
  61. switch action {
  62. case "data":
  63. resp, err = a.XraySettingService.GetWarp()
  64. case "config":
  65. resp, err = a.XraySettingService.GetWarpConfig()
  66. case "reg":
  67. skey := c.PostForm("privateKey")
  68. pkey := c.PostForm("publicKey")
  69. resp, err = a.XraySettingService.RegWarp(skey, pkey)
  70. case "license":
  71. license := c.PostForm("license")
  72. println(license)
  73. resp, err = a.XraySettingService.SetWarpLicence(license)
  74. }
  75. jsonObj(c, resp, err)
  76. }
  77. func (a *XraySettingController) getOutboundsTraffic(c *gin.Context) {
  78. outboundsTraffic, err := a.OutboundService.GetOutboundsTraffic()
  79. if err != nil {
  80. jsonMsg(c, "Error getting traffics", err)
  81. return
  82. }
  83. jsonObj(c, outboundsTraffic, nil)
  84. }