From 38dd92754a7d33b4b031c4e025f65394da2a09e9 Mon Sep 17 00:00:00 2001 From: ccbkkb <9201575@gmail.com> Date: Sun, 15 Mar 2026 23:18:03 +0800 Subject: [PATCH] =?UTF-8?q?Fix:=20=E4=BF=AE=E5=A4=8D=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E6=97=B6=E5=85=AC=E7=BD=91IP=E8=8E=B7=E5=8F=96=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=88=E4=BD=BF=E7=94=A8?= =?UTF-8?q?cloudflare=E6=8E=A5=E5=8F=A3=E6=9B=BF=E6=8D=A2v6r.ipip.net?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v6r.ipip.net return 502 --- web/core/mw.py | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/web/core/mw.py b/web/core/mw.py index cf19bc668..da1d95ab9 100644 --- a/web/core/mw.py +++ b/web/core/mw.py @@ -514,31 +514,33 @@ def checkDomainPanel(): return False def getLocalIp(): - filename = getPanelDir()+'/data/iplist.txt' try: - ipaddress = readFile(filename) - if not ipaddress or ipaddress == '127.0.0.1': - cmd = "curl --insecure -4 -sS --connect-timeout 5 -m 60 https://v6r.ipip.net/?format=text" - ip = execShell(cmd) - result = ip[0].strip() - if result == '': - raise Exception("ipv4 is empty!") - writeFile(filename, result) - return result - return ipaddress - except Exception as e: - cmd = "curl --insecure -6 -sS --connect-timeout 5 -m 60 https://v6r.ipip.net/?format=text" - ip = execShell(cmd) - result = ip[0].strip() - if result == '': - return '127.0.0.1' - writeFile(filename, result) - return result - finally: + filename = getPanelDir() + '/data/iplist.txt' + try: + ipaddress = readFile(filename) + if ipaddress and ipaddress != '127.0.0.1': + return ipaddress + except Exception: + pass + for flag in ['-4', '-6']: + try: + cmd = f"curl --insecure {flag} -sS --connect-timeout 5 -m 60 https://speed.cloudflare.com/cdn-cgi/trace" + ip = execShell(cmd) + if ip and isinstance(ip, (tuple, list)) and ip[0]: + for line in ip[0].splitlines(): + if line.startswith('ip='): + result = line[3:].strip() + if result: + writeFile(filename, result) + return result + except Exception: + continue + except Exception: pass return '127.0.0.1' + def inArray(arrays, searchStr): # 搜索数据中是否存在 for key in arrays: