From d40e61fc454a9c42d2ac69950074bf3504d484bf Mon Sep 17 00:00:00 2001 From: MHSanaei Date: Wed, 14 Jun 2023 19:50:19 +0330 Subject: [PATCH] fix and improve --- web/controller/inbound.go | 7 +------ web/html/xui/client_modal.html | 6 ++++-- web/html/xui/index.html | 17 ++++++++++++----- web/service/server.go | 15 ++++----------- 4 files changed, 21 insertions(+), 24 deletions(-) diff --git a/web/controller/inbound.go b/web/controller/inbound.go index 461c4b27..a9699bbb 100644 --- a/web/controller/inbound.go +++ b/web/controller/inbound.go @@ -145,12 +145,7 @@ func (a *InboundController) getClientIps(c *gin.Context) { email := c.Param("email") ips, err := a.inboundService.GetInboundClientIps(email) - if err != nil { - jsonObj(c, "Failed to get client IPs", nil) - return - } - - if ips == "" { + if err != nil || ips == "" { jsonObj(c, "No IP Record", nil) return } diff --git a/web/html/xui/client_modal.html b/web/html/xui/client_modal.html index e8236778..a2d29417 100644 --- a/web/html/xui/client_modal.html +++ b/web/html/xui/client_modal.html @@ -124,12 +124,14 @@ try { const msg = await HttpUtil.post(`/panel/inbound/clientIps/${email}`); if (!msg.success) { + document.getElementById("clientIPs").value = msg.obj; return; } - const ips = JSON.parse(msg.obj).join(",\n"); + const ips = Array.isArray(msg.obj) ? msg.obj.join(",\n") : msg.obj; document.getElementById("clientIPs").value = ips; } catch (error) { - document.getElementById("clientIPs").value = msg.obj; + console.error(error); + document.getElementById("clientIPs").value = 'An error occurred while making the request'; } }, async clearDBClientIps(email) { diff --git a/web/html/xui/index.html b/web/html/xui/index.html index 9795e87d..989aa286 100644 --- a/web/html/xui/index.html +++ b/web/html/xui/index.html @@ -449,9 +449,13 @@ this.loadingTip = tip; }, async getStatus() { - const msg = await HttpUtil.post('/server/status'); - if (msg.success) { - this.setStatus(msg.obj); + try { + const msg = await HttpUtil.post('/server/status'); + if (msg.success) { + this.setStatus(msg.obj); + } + } catch (e) { + console.error("Failed to get status:", e); } }, setStatus(data) { @@ -560,11 +564,14 @@ }, }, async mounted() { - while (true) { + let retries = 0; + while (retries < 5) { try { await this.getStatus(); + retries = 0; } catch (e) { - console.error(e); + console.error("Error occurred while fetching status:", e); + retries++; } await PromiseUtil.sleep(2000); } diff --git a/web/service/server.go b/web/service/server.go index 198aa590..d5f7adc1 100644 --- a/web/service/server.go +++ b/web/service/server.go @@ -86,31 +86,24 @@ type ServerService struct { inboundService InboundService } -const DebugMode = false // Set to true during development - func getPublicIP(url string) string { resp, err := http.Get(url) if err != nil { - if DebugMode { - logger.Warning("get public IP failed:", err) - } return "N/A" } defer resp.Body.Close() ip, err := io.ReadAll(resp.Body) if err != nil { - if DebugMode { - logger.Warning("read public IP failed:", err) - } return "N/A" } - if string(ip) == "" { - return "N/A" // default value + ipString := string(ip) + if ipString == "" { + return "N/A" } - return string(ip) + return ipString } func (s *ServerService) GetStatus(lastStatus *Status) *Status {