diff --git a/app/plugins/speedlimiter/__init__.py b/app/plugins/speedlimiter/__init__.py index 59e8c4b4..4bfb358e 100644 --- a/app/plugins/speedlimiter/__init__.py +++ b/app/plugins/speedlimiter/__init__.py @@ -55,8 +55,6 @@ class SpeedLimiter(_PluginBase): _allocation_ratio: str = "" _auto_limit: bool = False _limit_enabled: bool = False - # 不限速地址 - _unlimited_ips = {"ipv4": "0.0.0.0/0", "ipv6": "::/0"} # 当前限速状态 _current_state = "" @@ -81,11 +79,6 @@ class SpeedLimiter(_PluginBase): # 限速服务开关 self._limit_enabled = True if self._play_up_speed or self._play_down_speed or self._auto_limit else False self._allocation_ratio = config.get("allocation_ratio") or "" - # 不限速地址 - self._unlimited_ips["ipv4"] = config.get("ipv4") or "0.0.0.0/0" - self._unlimited_ips["ipv6"] = config.get("ipv6") or "::/0" - if "0.0.0.0/0" in self._unlimited_ips["ipv4"] and "::/0" in self._unlimited_ips["ipv6"]: - self._limit_enabled = False self._downloader = config.get("downloader") or [] if self._downloader: if 'qbittorrent' in self._downloader: @@ -299,45 +292,6 @@ class SpeedLimiter(_PluginBase): } ] }, - { - 'component': 'VRow', - 'content': [ - { - 'component': 'VCol', - 'props': { - 'cols': 12, - 'md': 6 - }, - 'content': [ - { - 'component': 'VTextField', - 'props': { - 'model': 'ipv4', - 'label': '不限速地址范围(ipv4)', - 'placeholder': '192.168.1.0/24' - } - } - ] - }, - { - 'component': 'VCol', - 'props': { - 'cols': 12, - 'md': 6 - }, - 'content': [ - { - 'component': 'VTextField', - 'props': { - 'model': 'ipv6', - 'label': '不限速地址范围(ipv6)', - 'placeholder': 'FE80::/10' - } - } - ] - } - ] - }, ] } ], { @@ -350,8 +304,6 @@ class SpeedLimiter(_PluginBase): "noplay_down_speed": 0, "bandwidth": 0, "allocation_ratio": "", - "ipv4": "", - "ipv6": "", } def get_page(self) -> List[dict]: @@ -379,8 +331,7 @@ class SpeedLimiter(_PluginBase): if res and res.status_code == 200: sessions = res.json() for session in sessions: - if not self.__allow_access(self._unlimited_ips, session.get("RemoteEndPoint")) and \ - session.get("NowPlayingItem") and not session.get("PlayState", {}).get("IsPaused"): + if session.get("NowPlayingItem") and not session.get("PlayState", {}).get("IsPaused"): playing_sessions.append(session) except Exception as e: logger.error(f"获取Emby播放会话失败:{str(e)}") @@ -396,8 +347,7 @@ class SpeedLimiter(_PluginBase): if res and res.status_code == 200: sessions = res.json() for session in sessions: - if not self.__allow_access(self._unlimited_ips, session.get("RemoteEndPoint")) and \ - session.get("NowPlayingItem") and not session.get("PlayState", {}).get("IsPaused"): + if session.get("NowPlayingItem") and not session.get("PlayState", {}).get("IsPaused"): playing_sessions.append(session) except Exception as e: logger.error(f"获取Jellyfin播放会话失败:{str(e)}") @@ -421,8 +371,7 @@ class SpeedLimiter(_PluginBase): }) # 计算有效比特率 for session in playing_sessions: - if not self.__allow_access(self._unlimited_ips, session.get("address")) and \ - IpUtils.is_private_ip(session.get("address")) \ + if IpUtils.is_private_ip(session.get("address")) \ and session.get("type") == "Video": total_bit_rate += int(session.get("bitrate") or 0) @@ -527,42 +476,6 @@ class SpeedLimiter(_PluginBase): except Exception as e: logger.error(f"设置限速失败:{str(e)}") - @staticmethod - def __allow_access(allow_ips, ip): - """ - 判断IP是否合法 - :param allow_ips: 充许的IP范围 {"ipv4":, "ipv6":} - :param ip: 需要检查的ip - """ - if not allow_ips: - return True - try: - ipaddr = ipaddress.ip_address(ip) - if ipaddr.version == 4: - if not allow_ips.get('ipv4'): - return True - allow_ipv4s = allow_ips.get('ipv4').split(",") - for allow_ipv4 in allow_ipv4s: - if ipaddr in ipaddress.ip_network(allow_ipv4): - return True - elif ipaddr.ipv4_mapped: - if not allow_ips.get('ipv4'): - return True - allow_ipv4s = allow_ips.get('ipv4').split(",") - for allow_ipv4 in allow_ipv4s: - if ipaddr.ipv4_mapped in ipaddress.ip_network(allow_ipv4): - return True - else: - if not allow_ips.get('ipv6'): - return True - allow_ipv6s = allow_ips.get('ipv6').split(",") - for allow_ipv6 in allow_ipv6s: - if ipaddr in ipaddress.ip_network(allow_ipv6): - return True - except Exception: - return False - return False - def stop_service(self): """ 退出插件