CORE connectors

Modul connectors.

Třídy

class RedisConnector

Implementuje komponentu RedisConnector v rámci aplikace.

Metody:

_create_connection()

Vytvoří connection.

Vrací:

Nově vytvořená hodnota připravená touto funkcí.

_create_connection_decode()

Vytvoří connection decode.

Vrací:

Nově vytvořená hodnota připravená touto funkcí.

get_connection()

Vrací connection. v aplikaci.

Vrací:

Načtená data odpovídající zadaným vstupům.

get_connection_decode()

Vrací connection decode.

Vrací:

Načtená data odpovídající zadaným vstupům.

acquire_import_lock()

Atomicky získá Redis lock pro běžící hromadný import.

Parametry:
  • connection – Redis spojení, přes které se lock zapisuje.

  • token – Jedinečný token vlastníka locku.

  • ttl_seconds – Doba expirace locku v sekundách.

Vrací:

True, pokud byl lock získán; jinak False.

refresh_import_lock()

Prodlouží expiraci importního locku pouze tehdy, pokud ho stále vlastní zadaný token.

Parametry:
  • connection – Redis spojení, přes které se lock obnovuje.

  • token – Jedinečný token vlastníka locku.

  • ttl_seconds – Nová doba expirace locku v sekundách.

Vrací:

True, pokud byl lock úspěšně obnoven; jinak False.

release_import_lock()

Uvolní importní lock pouze tehdy, pokud ho stále vlastní zadaný token.

Parametry:
  • connection – Redis spojení, přes které se lock maže.

  • token – Jedinečný token vlastníka locku.

Vrací:

True, pokud byl lock odstraněn; jinak False.

prepare_model_for_redis()

Převede řádek Django-tables2 tabulky do slovníku pro uložení do Redis cache.

Parametry:

table – Tabulka (django-tables2) obsahující jeden řádek s daty záznamu.

Vrací:

Vrací proměnná data.

class ClamdError

Základní třída výjimek pro chyby clamd.

class ClamdResponseError

Výjimka vyvolaná při neočekávané odpovědi od clamd.

class ClamdBufferTooLongError

Výjimka vyvolaná při překročení délky bufferu nad StreamMaxLength v clamd.conf.

class ClamdConnectionError

Výjimka vyvolaná při chybách komunikace s clamd.

class ClamdNetworkSocket

Třída pro komunikaci s ClamAV démonem přes síťový socket.

Tato třída poskytuje metody pro skenování souborů na viry pomocí ClamAV démona naslouchajícího na TCP portu.

Metody:

__init__()

Inicializace třídy.

Hodnoty host, port a timeout se načítají z nastavení aplikace.

instream()

Skenuje buffer na přítomnost virů.

Parametry:

buff – Binární stream (BytesIO) se souborem určeným ke kontrole.

Vrací:

Slovník ve formátu {filename: (status, reason)} pro odpověď clamd.

Vyvolá:
_basic_command()

Odešle jednoduchý příkaz do clamd a vrátí jeho odpověď.

Parametry:

command – Název příkazu zasílaného do clamd démona (např. ‚PING‘, ‚VERSION‘).

Vrací:

Výstup funkce odpovídající implementované logice.

Vyvolá:

ClamdResponseError – Vyvolá se při splnění podmínky len(response) > 1.

_init_socket()

Inicializuje socketové připojení k clamd.

Pouze pro interní použití. :raises ClamdConnectionError: Pokud se nelze připojit ke clamd.

_error_message()

Formátuje chybovou zprávu pro selhání socketového připojení. :param exception: Zachycená síťová výjimka při navazování spojení. :return: Formátovaná chybová zpráva pro logování.

_send_command()

Odešle command.

Používá prefix ‚n‘ a ukončovač nového řádku podle doporučení man clamd.

Parametry:
  • cmd – Textový název, klíč nebo zpráva cmd používaná v rámci operace.

  • args – Parametr args se předává do volání join(), ovlivňuje větvení podmínek.

Vrací:

Výstup funkce odpovídající implementované logice.

_recv_response()

Přijme jednořádkovou odpověď od clamd. :return: Dekódovaný řádek odpovědi od clamd. :raises ClamdConnectionError: Při chybě čtení ze socketu.

_parse_response()

Parsuje odpovědi pro příkazy SCAN, CONTSCAN, MULTISCAN a STREAM. :param msg: Textová odpověď vrácená službou clamd. :return: N-tice (path, virus, status) extrahovaná z odpovědi. :raises ClamdResponseError: Pokud odpověď nelze naparsovat.

_close_socket()

Uzavře socketové připojení k clamd.