Skip to content

Commit 98ba147

Browse files
committed
fix: buggy IPv6 import
1 parent c707e9a commit 98ba147

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

main.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# -*- coding: utf-8 -*-
22
import asyncio
3+
import contextlib
34
import sys
4-
from ipaddress import ip_network
5+
from ipaddress import ip_address, ip_network
56

67
from PySide6.QtWidgets import *
78
from PySide6.QtCore import QSettings, Qt, QTranslator, Slot
@@ -223,7 +224,14 @@ def on_btnWait_Import_clicked(self):
223224
if failed:
224225
names = self.tr('、').join(cbs[i].text() for i in failed)
225226
QMessageBox.warning(self, self.tr('警告'), self.tr('%s 获取失败。请检查网络状况,然后再试。') % names)
226-
new_ips = sorted(new_ips, key=lambda ip: tuple(map(int, ip.split('.'))))
227+
valid_ips = []
228+
for ip in new_ips:
229+
with contextlib.suppress(ValueError):
230+
valid_ips.append(ip_address(ip))
231+
invalid_count = len(new_ips) - len(valid_ips)
232+
if invalid_count > 0:
233+
QMessageBox.warning(self, self.tr('警告'), self.tr('共 %n 条无效 IP 被忽略。', '', invalid_count))
234+
new_ips = [ip.compressed for ip in sorted(valid_ips, key=lambda ip: (ip.version, ip))]
227235
if dlg.ui.radioReplace.isChecked():
228236
self._replace_ips(new_ips)
229237
else:

0 commit comments

Comments
 (0)