xray_setting.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. XrayService service.XrayService
  11. }
  12. func NewXraySettingController(g *gin.RouterGroup) *XraySettingController {
  13. a := &XraySettingController{}
  14. a.initRouter(g)
  15. return a
  16. }
  17. func (a *XraySettingController) initRouter(g *gin.RouterGroup) {
  18. g = g.Group("/xray")
  19. g.POST("/", a.getXraySetting)
  20. g.POST("/update", a.updateSetting)
  21. g.GET("/getXrayResult", a.getXrayResult)
  22. g.GET("/getDefaultJsonConfig", a.getDefaultXrayConfig)
  23. g.POST("/warp/:action", a.warp)
  24. }
  25. func (a *XraySettingController) getXraySetting(c *gin.Context) {
  26. xraySetting, err := a.SettingService.GetXrayConfigTemplate()
  27. if err != nil {
  28. jsonMsg(c, I18nWeb(c, "pages.settings.toasts.getSettings"), err)
  29. return
  30. }
  31. inboundTags, err := a.InboundService.GetInboundTags()
  32. if err != nil {
  33. jsonMsg(c, I18nWeb(c, "pages.settings.toasts.getSettings"), err)
  34. return
  35. }
  36. xrayResponse := "{ \"xraySetting\": " + xraySetting + ", \"inboundTags\": " + inboundTags + " }"
  37. jsonObj(c, xrayResponse, nil)
  38. }
  39. func (a *XraySettingController) updateSetting(c *gin.Context) {
  40. xraySetting := c.PostForm("xraySetting")
  41. err := a.XraySettingService.SaveXraySetting(xraySetting)
  42. jsonMsg(c, I18nWeb(c, "pages.settings.toasts.modifySettings"), err)
  43. }
  44. func (a *XraySettingController) getDefaultXrayConfig(c *gin.Context) {
  45. defaultJsonConfig, err := a.SettingService.GetDefaultXrayConfig()
  46. if err != nil {
  47. jsonMsg(c, I18nWeb(c, "pages.settings.toasts.getSettings"), err)
  48. return
  49. }
  50. jsonObj(c, defaultJsonConfig, nil)
  51. }
  52. func (a *XraySettingController) getXrayResult(c *gin.Context) {
  53. jsonObj(c, a.XrayService.GetXrayResult(), nil)
  54. }
  55. func (a *XraySettingController) warp(c *gin.Context) {
  56. action := c.Param("action")
  57. var resp string
  58. var err error
  59. switch action {
  60. case "data":
  61. resp, err = a.XraySettingService.GetWarp()
  62. case "config":
  63. resp, err = a.XraySettingService.GetWarpConfig()
  64. case "reg":
  65. skey := c.PostForm("privateKey")
  66. pkey := c.PostForm("publicKey")
  67. resp, err = a.XraySettingService.RegWarp(skey, pkey)
  68. case "license":
  69. license := c.PostForm("license")
  70. println(license)
  71. resp, err = a.XraySettingService.SetWarpLicence(license)
  72. }
  73. jsonObj(c, resp, err)
  74. }