MOON
Server: Apache
System: Linux server30c.hostingraja.org 3.10.0-962.3.2.lve1.5.63.el7.x86_64 #1 SMP Fri Oct 8 12:03:35 UTC 2021 x86_64
User: jibhires (1887)
PHP: 8.1.30
Disabled: show_source, system, shell_exec, passthru, exec, popen, proc_open, allow_url_fopen, symlink, escapeshellcmd, pcntl_exec
Upload Files
File: //opt/imunify360/venv/lib/python3.11/site-packages/im360/ioc/core.py
import functools

from im360.model.cache_sources import (
    CountryIPListCacheSource,
    GlobalwhitelistCacheSource,
    WhitelistCacheSourceFromCSF,
    WhitelistCacheSourceFromSystemSettings,
)
from im360.subsys import csf
from im360.utils.tree_cache import TreeCache
from im360.utils.tree_cache.adapters import TreeCacheCollector
from im360.model.firewall import IPList

cached = functools.lru_cache(maxsize=1)


class Services:
    """Class for definition and lazy initialization of used services."""

    @property
    @cached
    def primary_whitelist_cache(self):
        """:rtype: TreeCache"""
        db_cache = TreeCache(
            source=CountryIPListCacheSource(IPList.WHITE),
            full_sync_period=3600,
        )
        return TreeCacheCollector(db_cache, self.common_whitelist_cache)

    @property
    @cached
    def csf_whitelist_cache(self):
        """:rtype: TreeCache"""
        csf_files = csf.CSF_IMUNIFY_IPLISTS_MAPPING["WHITE"]
        csf_cache = TreeCache(source=WhitelistCacheSourceFromCSF(*csf_files))
        return TreeCacheCollector(
            csf_cache,
            self.common_whitelist_cache,
        )

    @property
    @cached
    def common_whitelist_cache(self):
        """:rtype: TreeCache"""
        return TreeCacheCollector(
            TreeCache(
                self.white_ips_source_from_system_settings, float("inf")
            ),
            self.global_whitelist_tree_cache,
        )

    @property
    @cached
    def white_ips_source_from_system_settings(self):
        return WhitelistCacheSourceFromSystemSettings()

    @property
    @cached
    def global_whitelist_cache_source(self):
        return GlobalwhitelistCacheSource()

    @property
    @cached
    def global_whitelist_tree_cache(self):
        """
        :return TreeCache: entity which is featured with .reset()
        """
        return TreeCache(self.global_whitelist_cache_source)


services = Services()