コード例 #1
0
ファイル: bans.py プロジェクト: tim-schilling/Misago
def get_request_ip_ban(request):
    """
    Utility for checking if request came from banned IP

    This check may be performed frequently, which is why there is extra
    boilerplate that caches ban check result in session
    """
    session_ban_cache = _get_session_bancache(request)
    if session_ban_cache:
        if session_ban_cache['is_banned']:
            return session_ban_cache
        else:
            return False

    found_ban = get_ip_ban(request.user_ip)

    ban_cache = request.session[CACHE_SESSION_KEY] = {
        'version': cachebuster.get_version(VERSION_KEY),
        'ip': request.user_ip,
    }

    if found_ban:
        if found_ban.expires_on:
            ban_cache['expires_on'] = found_ban.expires_on.isoformat()
        else:
            ban_cache['expires_on'] = None

        ban_cache.update({'is_banned': True, 'message': found_ban.user_message})
        request.session[CACHE_SESSION_KEY] = ban_cache
        return _hydrate_session_cache(request.session[CACHE_SESSION_KEY])
    else:
        ban_cache['is_banned'] = False
        request.session[CACHE_SESSION_KEY] = ban_cache
        return None
コード例 #2
0
ファイル: bans.py プロジェクト: ZerGabriel/Misago
def get_request_ip_ban(request):
    session_ban_cache = _get_session_bancache(request)
    if session_ban_cache:
        if session_ban_cache["is_banned"]:
            return session_ban_cache
        else:
            return False

    found_ban = get_ip_ban(request.user_ip)

    ban_cache = request.session[BAN_CACHE_SESSION_KEY] = {
        "version": cachebuster.get_version(BAN_VERSION_KEY),
        "ip": request.user_ip,
    }

    if found_ban:
        if found_ban.expires_on:
            ban_cache["expires_on"] = found_ban.expires_on.isoformat()
        else:
            ban_cache["expires_on"] = None

        ban_cache.update({"is_banned": True, "message": found_ban.user_message})
        request.session[BAN_CACHE_SESSION_KEY] = ban_cache
        return _hydrate_session_cache(request.session[BAN_CACHE_SESSION_KEY])
    else:
        ban_cache["is_banned"] = False
        request.session[BAN_CACHE_SESSION_KEY] = ban_cache
        return None
コード例 #3
0
def get_request_ip_ban(request):
    """
    Utility for checking if request came from banned IP

    This check may be performed frequently, which is why there is extra
    boilerplate that caches ban check result in session
    """
    session_ban_cache = _get_session_bancache(request)
    if session_ban_cache:
        if session_ban_cache['is_banned']:
            return session_ban_cache
        else:
            return False

    found_ban = get_ip_ban(request.user_ip)

    ban_cache = request.session[CACHE_SESSION_KEY] = {
        'version': cachebuster.get_version(VERSION_KEY),
        'ip': request.user_ip,
    }

    if found_ban:
        if found_ban.expires_on:
            ban_cache['expires_on'] = found_ban.expires_on.isoformat()
        else:
            ban_cache['expires_on'] = None

        ban_cache.update({'is_banned': True, 'message': found_ban.user_message})
        request.session[CACHE_SESSION_KEY] = ban_cache
        return _hydrate_session_cache(request.session[CACHE_SESSION_KEY])
    else:
        ban_cache['is_banned'] = False
        request.session[CACHE_SESSION_KEY] = ban_cache
        return None
コード例 #4
0
ファイル: bans.py プロジェクト: xiangxiaobaog3/Misago
def get_request_ip_ban(request):
    session_ban_cache = _get_session_bancache(request)
    if session_ban_cache:
        if session_ban_cache['is_banned']:
            return session_ban_cache
        else:
            return False

    found_ban = get_ip_ban(request.user_ip)

    ban_cache = request.session[BAN_CACHE_SESSION_KEY] = {
        'version': cachebuster.get_version(BAN_VERSION_KEY),
        'ip': request.user_ip,
    }

    if found_ban:
        if found_ban.expires_on:
            ban_cache['expires_on'] = found_ban.expires_on.isoformat()
        else:
            ban_cache['expires_on'] = None

        ban_cache.update({
                'is_banned': True,
                'message': found_ban.user_message
            })
        request.session[BAN_CACHE_SESSION_KEY] = ban_cache
        return _hydrate_session_cache(request.session[BAN_CACHE_SESSION_KEY])
    else:
        ban_cache['is_banned'] = False
        request.session[BAN_CACHE_SESSION_KEY] = ban_cache
        return None
コード例 #5
0
def get_request_ip_ban(request):
    session_ban_cache = _get_session_bancache(request)
    if session_ban_cache:
        if session_ban_cache['is_banned']:
            return session_ban_cache
        else:
            return False

    found_ban = get_ip_ban(request._misago_real_ip)

    ban_cache = request.session[BAN_CACHE_SESSION_KEY] = {
        'version': cachebuster.get_version(BAN_VERSION_KEY),
        'ip': request._misago_real_ip,
    }

    if found_ban:
        if found_ban.valid_until:
            valid_until_as_string = found_ban.valid_until.strftime('%Y-%m-%d')
            ban_cache['valid_until'] = valid_until_as_string
        else:
            ban_cache['valid_until'] = None

        ban_cache.update({
                'is_banned': True,
                'message': found_ban.user_message
            })
        request.session[BAN_CACHE_SESSION_KEY] = ban_cache
        return _hydrate_session_cache(request.session[BAN_CACHE_SESSION_KEY])
    else:
        ban_cache['is_banned'] = False
        request.session[BAN_CACHE_SESSION_KEY] = ban_cache
        return None
コード例 #6
0
    def test_cache_validation(self):
        """cache correctly validates"""
        version = cachebuster.get_version(self.cache_name)
        self.assertEqual(version, 0)

        db_version = CacheVersion.objects.get(cache=self.cache_name).version
        self.assertEqual(db_version, 0)

        self.assertEqual(db_version, version)
        self.assertTrue(cachebuster.is_valid(self.cache_name, version))
        self.assertTrue(cachebuster.is_valid(self.cache_name, db_version))
コード例 #7
0
    def handle_bans_caches(self):
        queryset = BanCache.objects.filter(expires_on__lt=timezone.now())

        expired_count = queryset.count()
        queryset.delete()

        bans_version = cachebuster.get_version('misago_bans')
        queryset = BanCache.objects.filter(bans_version__lt=bans_version)

        expired_count += queryset.count()
        queryset.delete()

        self.stdout.write('Ban caches emptied: %s' % expired_count)
コード例 #8
0
    def handle_bans_caches(self):
        queryset = BanCache.objects.filter(expires_on__lt=timezone.now())

        expired_count = queryset.count()
        queryset.delete()

        bans_version = cachebuster.get_version('misago_bans')
        queryset = BanCache.objects.filter(bans_version__lt=bans_version)

        expired_count += queryset.count()
        queryset.delete()

        self.stdout.write("Ban caches emptied: {}".format(expired_count))
コード例 #9
0
    def test_cache_invalidation(self):
        """invalidate has increased valid version number"""
        db_version = CacheVersion.objects.get(cache=self.cache_name).version
        cachebuster.invalidate(self.cache_name)

        new_version = cachebuster.get_version(self.cache_name)
        new_db_version = CacheVersion.objects.get(cache=self.cache_name)
        new_db_version = new_db_version.version

        self.assertEqual(new_version, 1)
        self.assertEqual(new_db_version, 1)
        self.assertEqual(new_version, new_db_version)
        self.assertFalse(cachebuster.is_valid(self.cache_name, db_version))
        self.assertTrue(cachebuster.is_valid(self.cache_name, new_db_version))
コード例 #10
0
    def handle_bans_caches(self):
        queryset = BanCache.objects.filter(valid_until__isnull=False)
        queryset = queryset.filter(valid_until__lte=timezone.now().date())

        expired_count = queryset.count()
        queryset.delete()

        bans_version = cachebuster.get_version('misago_bans')
        queryset = BanCache.objects.filter(bans_version__lt=bans_version)

        expired_count += queryset.count()
        queryset.delete()

        self.stdout.write('Ban caches emptied: %s' % expired_count)
コード例 #11
0
ファイル: bans.py プロジェクト: ZerGabriel/Misago
def _set_user_ban_cache(user):
    ban_cache = user.ban_cache
    ban_cache.bans_version = cachebuster.get_version(BAN_VERSION_KEY)

    try:
        user_ban = Ban.objects.get_ban(username=user.username, email=user.email)
        ban_cache.ban = user_ban
        ban_cache.expires_on = user_ban.expires_on
        ban_cache.user_message = user_ban.user_message
        ban_cache.staff_message = user_ban.staff_message
    except Ban.DoesNotExist:
        ban_cache.ban = None
        ban_cache.expires_on = None
        ban_cache.user_message = None
        ban_cache.staff_message = None

    ban_cache.save()
    return ban_cache
コード例 #12
0
def _set_user_ban_cache(user):
    ban_cache = user.ban_cache
    ban_cache.bans_version = cachebuster.get_version(BAN_VERSION_KEY)

    try:
        user_ban = Ban.objects.find_ban(username=user.username,
                                        email=user.email)
        ban_cache.ban = user_ban
        ban_cache.valid_until = user_ban.valid_until
        ban_cache.user_message = user_ban.user_message
        ban_cache.staff_message = user_ban.staff_message
    except Ban.DoesNotExist:
        ban_cache.ban = None
        ban_cache.valid_until = None
        ban_cache.user_message = None
        ban_cache.staff_message = None

    ban_cache.save()
    return ban_cache
コード例 #13
0
def _set_user_ban_cache(user):
    ban_cache = user.ban_cache
    ban_cache.bans_version = cachebuster.get_version(BANS_CACHEBUSTER)

    try:
        user_ban = Ban.objects.get_ban(username=user.username,
                                       email=user.email)

        ban_cache.ban = user_ban
        ban_cache.expires_on = user_ban.expires_on
        ban_cache.user_message = user_ban.user_message
        ban_cache.staff_message = user_ban.staff_message
    except Ban.DoesNotExist:
        ban_cache.ban = None
        ban_cache.expires_on = None
        ban_cache.user_message = None
        ban_cache.staff_message = None

    ban_cache.save()
    return ban_cache
コード例 #14
0
ファイル: bans.py プロジェクト: tim-schilling/Misago
def _set_user_ban_cache(user):
    ban_cache = user.ban_cache
    ban_cache.bans_version = cachebuster.get_version(VERSION_KEY)

    try:
        user_ban = Ban.objects.get_ban(
            username=user.username,
            email=user.email,
            registration_only=False,
        )

        ban_cache.ban = user_ban
        ban_cache.expires_on = user_ban.expires_on
        ban_cache.user_message = user_ban.user_message
        ban_cache.staff_message = user_ban.staff_message
    except Ban.DoesNotExist:
        ban_cache.ban = None
        ban_cache.expires_on = None
        ban_cache.user_message = None
        ban_cache.staff_message = None

    ban_cache.save()
    return ban_cache
コード例 #15
0
ファイル: version.py プロジェクト: zy820/PythonScientists
def get_version():
    return cachebuster.get_version(ACL_CACHEBUSTER)
コード例 #16
0
def get_version():
    return cb.get_version(ACL_CACHE_NAME)
コード例 #17
0
ファイル: version.py プロジェクト: 1905410/Misago
def get_version():
    return cb.get_version(ACL_CACHE_NAME)