diff options
| author | Peter Liu <30622363+PedroLiu1999@users.noreply.github.com> | 2026-04-20 01:41:50 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-20 01:41:50 +0300 |
| commit | 36b2a586756fc279304170976c9d486498d55919 (patch) | |
| tree | 71a1dd665fa14a0fc9dad28c3ef421e3e3d7fe7c /web/controller | |
| parent | 59e98592251cac1dedb93905cb368a3ba93ad19c (diff) | |
feat: Add NordVPN NordLynx (WireGuard) integration (#3827)
* feat: Add NordVPN NordLynx (WireGuard) integration with dedicated UI and backend services.
* remove limit=10 to get all servers
* feat: add city selector to NordVPN modal
* feat: auto-select best server on country/city change
* feat: simplify filter logic and enforce > 7% load
* fix
---------
Co-authored-by: Sanaei <ho3ein.sanaei@gmail.com>
Diffstat (limited to 'web/controller')
| -rw-r--r-- | web/controller/xray_setting.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/web/controller/xray_setting.go b/web/controller/xray_setting.go index 5b7a0e26..0c382fb9 100644 --- a/web/controller/xray_setting.go +++ b/web/controller/xray_setting.go @@ -17,6 +17,7 @@ type XraySettingController struct { OutboundService service.OutboundService XrayService service.XrayService WarpService service.WarpService + NordService service.NordService } // NewXraySettingController creates a new XraySettingController and initializes its routes. @@ -35,6 +36,7 @@ func (a *XraySettingController) initRouter(g *gin.RouterGroup) { g.POST("/", a.getXraySetting) g.POST("/warp/:action", a.warp) + g.POST("/nord/:action", a.nord) g.POST("/update", a.updateSetting) g.POST("/resetOutboundsTraffic", a.resetOutboundsTraffic) g.POST("/testOutbound", a.testOutbound) @@ -123,6 +125,32 @@ func (a *XraySettingController) warp(c *gin.Context) { jsonObj(c, resp, err) } +// nord handles NordVPN-related operations based on the action parameter. +func (a *XraySettingController) nord(c *gin.Context) { + action := c.Param("action") + var resp string + var err error + switch action { + case "countries": + resp, err = a.NordService.GetCountries() + case "servers": + countryId := c.PostForm("countryId") + resp, err = a.NordService.GetServers(countryId) + case "reg": + token := c.PostForm("token") + resp, err = a.NordService.GetCredentials(token) + case "setKey": + key := c.PostForm("key") + resp, err = a.NordService.SetKey(key) + case "data": + resp, err = a.NordService.GetNordData() + case "del": + err = a.NordService.DelNordData() + } + + jsonObj(c, resp, err) +} + // getOutboundsTraffic retrieves the traffic statistics for outbounds. func (a *XraySettingController) getOutboundsTraffic(c *gin.Context) { outboundsTraffic, err := a.OutboundService.GetOutboundsTraffic() |
