]> git.mxchange.org Git - fba.git/commitdiff
Continued:
authorRoland Häder <roland@mxchange.org>
Tue, 29 Aug 2023 09:23:39 +0000 (11:23 +0200)
committerRoland Häder <roland@mxchange.org>
Tue, 29 Aug 2023 09:23:39 +0000 (11:23 +0200)
- added checks if instance is registered when update function are invoked
- some empty lines added

19 files changed:
fba/commands.py
fba/helpers/cache.py
fba/helpers/config.py
fba/helpers/dicts.py
fba/helpers/domain.py
fba/helpers/json.py
fba/helpers/software.py
fba/helpers/tidyup.py
fba/helpers/version.py
fba/http/federation.py
fba/http/network.py
fba/models/blocks.py
fba/models/instances.py
fba/networks/friendica.py
fba/networks/lemmy.py
fba/networks/mastodon.py
fba/networks/misskey.py
fba/networks/pleroma.py
fba/utils.py

index d64c649f2a42536197587d493528d32ff4369cef..c6199ef8ba86295d3401920626953618e9c0fefa 100644 (file)
@@ -63,6 +63,7 @@ logger = logging.getLogger(__name__)
 
 def check_instance(args: argparse.Namespace) -> int:
     logger.debug("args.domain='%s' - CALLED!", args.domain)
+
     status = 0
     if not validators.domain(args.domain):
         logger.warning("args.domain='%s' is not valid", args.domain)
index 8800bcaa81acb6f3dd117ae8a1bbf89d90dc257d..f15d56f21aef88a76773f882aef5e77d4fa0f969 100644 (file)
@@ -30,6 +30,7 @@ def key_exists(key: str) -> bool:
 
 def set_all(key: str, rows: list, value: any):
     logger.debug("key='%s',rows()=%d,value[]='%s' - CALLED!", key, len(rows), type(value))
+
     if not isinstance(key, str):
         raise ValueError(f"Parameter key[]='{type(key)}' is not of type 'str'")
     elif not key_exists(key):
@@ -48,6 +49,7 @@ def set_all(key: str, rows: list, value: any):
 
 def set_sub_key(key: str, sub: str, value: any):
     logger.debug("key='%s',sub='%s',value[]='%s' - CALLED!", key, sub, type(value))
+
     if not isinstance(key, str):
         raise ValueError(f"Parameter key[]='{type(key)}' is not of type 'str'")
     elif not isinstance(sub, str):
@@ -62,6 +64,7 @@ def set_sub_key(key: str, sub: str, value: any):
 
 def sub_key_exists(key: str, sub: str) -> bool:
     logger.debug("key='%s',sub='%s' - CALLED!", key, sub)
+
     if not isinstance(key, str):
         raise ValueError(f"Parameter key[]='{type(key)}' is not of type 'str'")
     elif not isinstance(sub, str):
index 6bece6d1cf79744d582db4c0b38ed368e9873045..85d15182adc668ea489cdbe7bb057885e058d79f 100644 (file)
@@ -28,6 +28,7 @@ with open("config.json") as f:
 
 def get(key: str) -> any:
     logger.debug("key[%s]='%s' - CALLED!", type(key), key)
+
     if not isinstance(key, str):
         raise ValueError(f"Parameter key[]='{type(key)}' is not of type 'str'")
     elif key == "":
index b3f2632386eb8526c7e385eef74fa482bc33cd17..0d6b8be9735af473f56909192f609b1dfb300af2 100644 (file)
@@ -20,6 +20,7 @@ logger = logging.getLogger(__name__)
 
 def has_key(lists: list, key: str, value: any) -> bool:
     logger.debug("lists()=%d,key='%s',value[]='%s' - CALLED!", len(lists), key, type(value))
+
     if not isinstance(lists, list):
         raise ValueError(f"Parameter lists[]='{type(lists)}' is not of type 'list'")
     elif not isinstance(key, str):
index 9f8c578b6314709683a163ce96f0b2c7d4ecb5fe..84c9bcb3c48dc07a30aa3390408e7be061154993 100644 (file)
@@ -29,6 +29,7 @@ logger = logging.getLogger(__name__)
 
 def raise_on(domain: str):
     logger.debug("domain='%s' - CALLED!", domain)
+
     if not isinstance(domain, str):
         raise ValueError(f"Parameter domain[]='{type(domain)}' is not of type 'str'")
     elif domain == "":
@@ -67,6 +68,7 @@ def is_in_url(domain: str, url: str) -> bool:
 
 def is_wanted(domain: str) -> bool:
     logger.debug("domain='%s' - CALLED!", domain)
+
     if not isinstance(domain, str):
         raise ValueError(f"Parameter domain[]='{type(domain)}' is not of type 'str'")
     elif domain == "":
index d20a2c7e55f279507cac6df8c961ec681bd3c4f9..a3e3fe59cd3f1ac1d1d166dde46e94ea2d369166 100644 (file)
@@ -24,6 +24,7 @@ logger = logging.getLogger(__name__)
 
 def from_response(response: requests.models.Response) -> any:
     logger.debug("response[]='%s' - CALLED!", type(response))
+
     if not isinstance(response, requests.models.Response):
         raise ValueError(f"Parameter response[]='{type(response)}' is not type of 'Response'")
     elif not response.ok or response.status_code > 200:
index 432aeade014ff4b43fdbe5088bc960c6880a9168..d259147ce9c476efac45f8a3a69e118a1d27b141 100644 (file)
@@ -23,6 +23,7 @@ logger = logging.getLogger(__name__)
 
 def alias(software: str) -> str:
     logger.debug("software='%s'- CALLED!", software)
+
     if not isinstance(software, str) and software is not None:
         raise ValueError(f"software[]='{type(software)}' is not type 'str'")
 
@@ -114,6 +115,7 @@ def alias(software: str) -> str:
 
 def strip_hosted_on(software: str) -> str:
     logger.debug("software='%s' - CALLED!", software)
+
     if not isinstance(software, str):
         raise ValueError(f"Parameter software[]='{type(software)}' is not of type 'str'")
     elif software == "":
@@ -160,6 +162,7 @@ def strip_powered_by(software: str) -> str:
 
 def strip_until(software: str, until: str) -> str:
     logger.debug("software='%s',until='%s' - CALLED!", software, until)
+
     if not isinstance(software, str):
         raise ValueError(f"Parameter software[]='{type(software)}' is not of type 'str'")
     elif software == "":
index 4b14ae715fdf41239c5a66359210cf55895bbd58..580cb225dcc0fbd307ca30c430a926afd4d69154 100644 (file)
@@ -21,6 +21,7 @@ logger = logging.getLogger(__name__)
 
 def reason(string: str) -> str:
     logger.debug("string='%s' - CALLED!", string)
+
     if not isinstance(string, str):
         raise ValueError(f"Parameter string[]='{type(string)}' is not of type 'str'")
 
@@ -32,6 +33,7 @@ def reason(string: str) -> str:
 
 def domain(string: str) -> str:
     logger.debug("string='%s' - CALLED!", string)
+
     if not isinstance(string, str):
         raise ValueError(f"Parameter string[]='{type(string)}' is not of type 'str'")
 
index 5dda159b280b2f55d08785c8ba7d332a587a6656..2f54ab3fed637a0ec1b0412c763fa4488345c800 100644 (file)
@@ -35,6 +35,7 @@ patterns = [
 
 def remove(software: str) -> str:
     logger.debug("software='%s' - CALLED!", software)
+
     if "." not in software and " " not in software:
         logger.warning("software='%s' does not contain a version number.", software)
         return software
index a5f5fdc272db4189d6546380cbf34c3f72528d95..b22b278a3ce3039c3b8d46873e0823955dba1213 100644 (file)
@@ -533,6 +533,9 @@ def fetch_blocks(domain: str) -> list:
     logger.debug("domain='%s' - CALLED!", domain)
     domain_helper.raise_on(domain)
 
+    if not instances.is_registered(domain):
+        raise Exception(f"domain='{domain}' is not registered but function is invoked.")
+
     # Init block list
     blocklist = list()
 
index 6834de0a64aa671ac0d72828177a5aadb9bfc029..2f307fe47fe1dd3edca00383c9cd0876eb6c7b7f 100644 (file)
@@ -109,6 +109,7 @@ def post_json_api(domain: str, path: str, data: str = "", headers: dict = dict()
 
 def fetch_api_url(url: str, timeout: tuple) -> dict:
     logger.debug("url='%s',timeout()=%d - CALLED!", url, len(timeout))
+
     if not isinstance(url, str):
         raise ValueError(f"Parameter url[]='{type(url)}' is not of type 'str'")
     elif url == "":
index 0e445ea9581abea7402a9fd0eb3f89936206922f..f4af845c0dd71c595bc5f64a60f66d643a1eec6a 100644 (file)
@@ -29,26 +29,19 @@ logger = logging.getLogger(__name__)
 
 def update_reason(reason: str, blocker: str, blocked: str, block_level: str):
     logger.debug("reason='%s',blocker='%s',blocked='%s',block_level='%s' - CALLED!", reason, blocker, blocked, block_level)
+    domain_helper.raise_on(blocker)
+    domain_helper.raise_on(blocked)
+
     if not isinstance(reason, str) and reason is not None:
         raise ValueError(f"Parameter reason[]='{type(reason)}' is not of type 'str'")
-    elif not isinstance(blocker, str):
-        raise ValueError(f"Parameter blocker[]='{type(blocker)}' is not of type 'str'")
-    elif blocker == "":
-        raise ValueError("Parameter 'blocker' is empty")
-    elif blocker.lower() != blocker:
-        raise ValueError(f"Parameter blocker='{blocker}' must be all lower-case")
-    elif not isinstance(blocked, str):
-        raise ValueError(f"Parameter blocked[]='{type(blocked)}' is not of type 'str'")
-    elif blocked == "":
-        raise ValueError("Parameter 'blocked' is empty")
-    elif blocked.lower() != blocked:
-        raise ValueError(f"Parameter blocked='{blocked}' must be all lower-case")
     elif not isinstance(block_level, str):
         raise ValueError(f"Parameter block_level[]='{type(block_level)}' is not of type 'str'")
     elif block_level == "":
         raise ValueError("Parameter 'block_level' is empty")
     elif block_level in ["accept", "suspend", "silence", "nsfw", "quarantined_instances"]:
         raise ValueError(f"block_level='{block_level}' is not wanted.")
+    elif not is_instance_blocked(blocker, blocked, block_level):
+        raise Exception(f"blocker='{blocker}',blocked='{blocked}',block_level='{block_level}' is not registered but function is invoked")
 
     logger.debug("Updating block reason='%s',blocker='%s',blocked='%s',block_level='%s'", reason, blocker, blocked, block_level)
     database.cursor.execute(
@@ -65,24 +58,21 @@ def update_reason(reason: str, blocker: str, blocked: str, block_level: str):
 
 def update_last_seen(blocker: str, blocked: str, block_level: str):
     logger.debug("blocker='%s',blocked='%s',block_level='%s' - CALLED!", blocker, blocked, block_level)
-    if not isinstance(blocker, str):
-        raise ValueError(f"Parameter blocker[]='{type(blocker)}' is not of type 'str'")
-    elif blocker == "":
-        raise ValueError("Parameter 'blocker' is empty")
-    elif blocker.lower() != blocker:
-        raise ValueError(f"Parameter blocker='{blocker}' must be all lower-case")
-    elif not isinstance(blocked, str):
-        raise ValueError(f"Parameter blocked[]='{type(blocked)}' is not of type 'str'")
-    elif blocked == "":
-        raise ValueError("Parameter 'blocked' is empty")
-    elif blocked.lower() != blocked:
-        raise ValueError(f"Parameter blocked='{blocked}' must be all lower-case")
-    elif not isinstance(block_level, str):
+    domain_helper.raise_on(blocker)
+    domain_helper.raise_on(blocked)
+
+    if not isinstance(block_level, str):
         raise ValueError(f"Parameter block_level[]='{type(block_level)}' is not of type 'str'")
     elif block_level == "":
         raise ValueError("Parameter 'block_level' is empty")
     elif block_level in ["accept", "suspend", "silence", "nsfw", "quarantined_instances"]:
         raise ValueError(f"blocked='{blocked}' has unwanted block_level='{block_level}'")
+    elif blacklist.is_blacklisted(blocker):
+        raise Exception(f"blocker='{blocker}' is blacklisted but function invoked")
+    elif blacklist.is_blacklisted(blocked):
+        raise Exception(f"blocked='{blocked}' is blacklisted but function invoked")
+    elif not is_instance_blocked(blocker, blocked, block_level):
+        raise Exception(f"blocker='{blocker}',blocked='{blocked}',block_level='{block_level}' is not registered but function is invoked")
 
     database.cursor.execute(
         "UPDATE blocks SET last_seen = ? WHERE blocker = ? AND blocked = ? AND block_level = ? LIMIT 1",
@@ -97,24 +87,19 @@ def update_last_seen(blocker: str, blocked: str, block_level: str):
 
 def is_instance_blocked(blocker: str, blocked: str, block_level: str = None) -> bool:
     logger.debug("blocker='%s',blocked='%s',block_level='%s' - CALLED!", blocker, blocked, block_level)
-    if not isinstance(blocker, str):
-        raise ValueError(f"Parameter blocker[]='{type(blocker)}' is not of type 'str'")
-    elif blocker == "":
-        raise ValueError("Parameter 'blocker' is empty")
-    elif blocker.lower() != blocker:
-        raise ValueError(f"Parameter blocker='{blocker}' must be all lower-case")
-    elif not isinstance(blocked, str):
-        raise ValueError(f"Parameter blocked[]='{type(blocked)}' is not of type 'str'")
-    elif blocked == "":
-        raise ValueError("Parameter 'blocked' is empty")
-    elif blocked.lower() != blocked:
-        raise ValueError(f"Parameter blocked='{blocked}' must be all lower-case")
-    elif not isinstance(block_level, str) and block_level is not None:
+    domain_helper.raise_on(blocker)
+    domain_helper.raise_on(blocked)
+
+    if not isinstance(block_level, str) and block_level is not None:
         raise ValueError(f"Parameter block_level[]='{type(block_level)}' is not of type 'str'")
     elif block_level == "":
         raise ValueError("Parameter 'block_level' is empty")
     elif block_level in ["accept", "suspend", "silence", "nsfw", "quarantined_instances"]:
         raise ValueError(f"blocked='{blocked}' has unwanted block_level='{block_level}'")
+    elif blacklist.is_blacklisted(blocker):
+        raise Exception(f"blocker='{blocker}' is blacklisted but function invoked")
+    elif blacklist.is_blacklisted(blocked):
+        raise Exception(f"blocked='{blocked}' is blacklisted but function invoked")
 
     if block_level is None:
         database.cursor.execute(
@@ -148,12 +133,12 @@ def add(blocker: str, blocked: str, reason: str, block_level: str):
         raise ValueError(f"Parameter block_level[]='{type(block_level)}' is not of type 'str'")
     elif block_level == "":
         raise ValueError("Parameter 'block_level' is empty")
+    elif block_level in ["accept", "suspend", "silence", "nsfw", "quarantined_instances"]:
+        raise ValueError(f"blocked='{blocked}' has unwanted block_level='{block_level}'")
     elif blacklist.is_blacklisted(blocker):
         raise Exception(f"blocker='{blocker}' is blacklisted but function invoked")
     elif blacklist.is_blacklisted(blocked):
         raise Exception(f"blocked='{blocked}' is blacklisted but function invoked")
-    elif block_level in ["accept", "suspend", "silence", "nsfw", "quarantined_instances"]:
-        raise ValueError(f"blocked='{blocked}' has unwanted block_level='{block_level}'")
 
     if reason is not None:
         # Maybe needs cleaning
@@ -176,6 +161,7 @@ def add(blocker: str, blocked: str, reason: str, block_level: str):
 
 def valid(value: str, column: str) -> bool:
     logger.debug("value='%s' - CALLED!", value)
+
     if not isinstance(value, str):
         raise ValueError(f"Parameter value[]='{type(value)}' is not of type 'str'")
     elif value == "":
@@ -197,6 +183,7 @@ def valid(value: str, column: str) -> bool:
 
 def translate_idnas(rows: list, column: str):
     logger.debug("rows[]='%s' - CALLED!", type(rows))
+
     if not isinstance(rows, list):
         raise ValueError(f"rows[]='{type(rows)}' is not of type 'list'")
     elif len(rows) == 0:
@@ -226,6 +213,7 @@ def translate_idnas(rows: list, column: str):
 
 def alias_block_level(block_level: str) -> str:
     logger.debug("block_level='%s' - CALLED!", block_level)
+
     if not isinstance(block_level, str):
         raise ValueError(f"Parameter block_level[]='{type(block_level)}' is not of type 'str'")
     elif block_level == "":
index 36191bb5b516d76e85b64c8053c485a699d3e1ae..fe72a66f1a59b6e840a5cb2b52c55a7440c81724 100644 (file)
@@ -75,6 +75,7 @@ _pending = {
 def _set_data(key: str, domain: str, value: any):
     logger.debug("key='%s',domain='%s',value[]='%s' - CALLED!", key, domain, type(value))
     domain_helper.raise_on(domain)
+
     if not isinstance(key, str):
         raise ValueError(f"Parameter key[]='{type(key)}' is not of type 'str'")
     elif key == "":
@@ -505,6 +506,7 @@ def valid(value: str, column: str) -> bool:
 
 def translate_idnas(rows: list, column: str):
     logger.debug("rows[]='%s' - CALLED!", type(rows))
+
     if not isinstance(rows, list):
         raise ValueError("rows[]='{type(rows)}' is not of type 'list'")
     elif len(rows) == 0:
index 17fc28bec3242320e117005eec8b9c840df0593c..046bf909d0cfd5480f0c8cc830281754ee59c71f 100644 (file)
@@ -34,6 +34,9 @@ def fetch_blocks(domain: str) -> list:
     logger.debug("domain='%s' - CALLED!", domain)
     domain_helper.raise_on(domain)
 
+    if not instances.is_registered(domain):
+        raise Exception(f"domain='{domain}' is not registered but function is invoked.")
+
     blocklist = list()
     block_tag = None
 
index c0b6afec27b2e685b8e526757241eed95acc9ae3..07a854a1593c28953714f343fb17c5c876f25f29 100644 (file)
@@ -87,6 +87,9 @@ def fetch_blocks(domain: str) -> list:
     logger.debug("domain='%s - CALLED!", domain)
     domain_helper.raise_on(domain)
 
+    if not instances.is_registered(domain):
+        raise Exception(f"domain='{domain}' is not registered but function is invoked.")
+
     translations = [
         "Blocked Instances".lower(),
         "Instàncies bloquejades".lower(),
@@ -291,6 +294,7 @@ def fetch_instances(domain: str, origin: str) -> list:
 
 def parse_script(doc: bs4.BeautifulSoup, only: str = None) -> list:
     logger.debug("doc[]='%s',only='%s' - CALLED!")
+
     if not isinstance(doc, bs4.BeautifulSoup):
         raise ValueError(f"Parameter doc[]='{type(only)}' is not of type 'bs4.BeautifulSoup'")
     elif not isinstance(only, str) and only is not None:
index 679d2b04c5420a1a52a54addf1347658ead4c7f1..bea34c9a75c9c293cd3b208e2c12f33e9efcf148 100644 (file)
@@ -63,6 +63,9 @@ def fetch_blocks_from_about(domain: str) -> dict:
     logger.debug("domain='%s' - CALLED!", domain)
     domain_helper.raise_on(domain)
 
+    if not instances.is_registered(domain):
+        raise Exception(f"domain='{domain}' is not registered but function is invoked.")
+
     logger.debug("Fetching mastodon blocks from domain='%s'", domain)
     doc = None
     for path in ["/about/more", "/about"]:
@@ -131,6 +134,9 @@ def fetch_blocks(domain: str) -> list:
     logger.debug("domain='%s' - CALLED!", domain)
     domain_helper.raise_on(domain)
 
+    if not instances.is_registered(domain):
+        raise Exception(f"domain='{domain}' is not registered but function is invoked.")
+
     blocklist = list()
 
     logger.debug("Invoking federation.fetch_blocks(%s) ...", domain)
index fd8b234c6f715fc0c691ef04b5181e5a10ac8f42..e9750daf698a98903506ebd305c8cb74241fa610 100644 (file)
@@ -125,6 +125,9 @@ def fetch_blocks(domain: str) -> list:
     logger.debug("domain='%s' - CALLED!", domain)
     domain_helper.raise_on(domain)
 
+    if not instances.is_registered(domain):
+        raise Exception(f"domain='{domain}' is not registered but function is invoked.")
+
     # No CSRF by default, you don't have to add network.api_headers by yourself here
     headers = tuple()
 
index 68ca8749ff8a84ae40d907863815dfb0d38720ef..73720f7ee6eef8def87b8973716b4cc14b771344 100644 (file)
@@ -54,8 +54,12 @@ def fetch_blocks(domain: str) -> list:
     logger.debug("domain='%s' - CALLED!", domain)
     domain_helper.raise_on(domain)
 
+    if not instances.is_registered(domain):
+        raise Exception(f"domain='{domain}' is not registered but function is invoked.")
+
     blockdict = list()
     rows = None
+
     try:
         logger.debug("Fetching nodeinfo: domain='%s'", domain)
         rows = nodeinfo.fetch(domain, update_mode=False)
@@ -276,6 +280,9 @@ def fetch_blocks_from_about(domain: str) -> dict:
     logger.debug("domain='%s' - CALLED!", domain)
     domain_helper.raise_on(domain)
 
+    if not instances.is_registered(domain):
+        raise Exception(f"domain='{domain}' is not registered but function is invoked.")
+
     logger.debug("Fetching mastodon blocks from domain='%s'", domain)
     doc = None
     for path in ["/instance/about/index.html"]:
index 44c831014cbafd3db123376cebba73a536e70f49..18e47123943c2493882f1e7734497828a9f79f41 100644 (file)
@@ -46,6 +46,7 @@ def get_hash(domain: str) -> str:
 
 def fetch_url(url: str, headers: dict, timeout: tuple) -> requests.models.Response:
     logger.debug("url='%s',headers()=%d,timeout(%d)='%s' - CALLED!", url, len(headers), len(timeout), timeout)
+
     if not isinstance(url, str):
         raise ValueError(f"Parameter url[]='{type(url)}' is not of type 'str'")
     elif url == "":
@@ -70,6 +71,7 @@ def fetch_url(url: str, headers: dict, timeout: tuple) -> requests.models.Respon
 
 def find_domains(tags: bs4.element.ResultSet, search: str) -> list:
     logger.debug("tags[%s]()=%d,search='%s' - CALLED!", type(tags), len(tags), search)
+
     if not isinstance(tags, bs4.element.ResultSet):
         raise ValueError(f"Parameter tags[]='{type(tags)}' is not of type 'ResultSet'")
     elif not isinstance(search, str):