fix(block): handle blocked url with no corresponding proxy

This commit is contained in:
Iain Learmonth 2022-12-14 14:07:19 +00:00
parent f4662fae27
commit 226c67eb65

View file

@ -2,7 +2,7 @@ from datetime import datetime, timedelta
import logging import logging
from abc import abstractmethod from abc import abstractmethod
import fnmatch import fnmatch
from typing import Tuple, List, Any from typing import Tuple, List, Any, Optional
from app.extensions import db from app.extensions import db
from app.models.activity import Activity from app.models.activity import Activity
@ -30,7 +30,8 @@ class BlockMirrorAutomation(BaseAutomation):
for pattern in self.patterns: for pattern in self.patterns:
blocked_urls = fnmatch.filter(proxy_urls, pattern) blocked_urls = fnmatch.filter(proxy_urls, pattern)
for blocked_url in blocked_urls: for blocked_url in blocked_urls:
proxy = proxy_by_url(blocked_url) if not (proxy := proxy_by_url(blocked_url)):
continue
logging.debug("Found %s blocked", proxy.url) logging.debug("Found %s blocked", proxy.url)
if not proxy.origin.auto_rotation: if not proxy.origin.auto_rotation:
logging.debug("Proxy auto-rotation forbidden for origin") logging.debug("Proxy auto-rotation forbidden for origin")
@ -79,7 +80,7 @@ def active_proxy_urls() -> List[str]:
).all()] ).all()]
def proxy_by_url(url: str) -> Proxy: def proxy_by_url(url: str) -> Optional[Proxy]:
return Proxy.query.filter( # type: ignore[no-any-return] return Proxy.query.filter( # type: ignore[no-any-return]
Proxy.deprecated.is_(None), Proxy.deprecated.is_(None),
Proxy.destroyed.is_(None), Proxy.destroyed.is_(None),