Metadata-Version: 2.4
Name: django-accessblacklist
Version: 0.1.5
Summary: 基于django实现的IP访问黑名单功能。可以通过asn/network对访问IP进行拦截，禁止符合要求的IP访问网站。
Home-page: https://gitee.com/qiukevivien/django-accessblacklist
Author: Walter Liu
Author-email: qiukevivien@126.com
License: AGPL-3.0
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Description-Content-Type: text/markdown
Requires-Dist: django
Requires-Dist: geoip2
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: requires-dist
Dynamic: summary

# django-accessblacklist

## 介绍
基于django实现的IP访问黑名单功能。可以通过asn/network对访问IP进行拦截，禁止符合要求的IP访问网站。

## 软件架构
middleware对来访ip进行筛查，判断来访IP是否在禁止名单里。
禁止名单包括 asn 和 network ,可以在后台添加。
同时可以在settings.py里定义是否启用拦截，是否启用拦截缓存，拦截缓存使用的后段以及缓存生效时间。


## 安装教程

1. 确保当前应用已经部署django,
2. pip install django-accessblacklist

## 使用说明
1.  在settings.py中的INSTALLED_APPS里添加 'accessblacklist'

    eg:
    ```
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'accessblacklist',
    ]
    ```
2.  在settings.py的MIDDLEWARE中添加 'accessblacklist.middleware.SecureMiddleware',

    eg:
    ```
    MIDDLEWARE = [
        'accessblacklist.middleware.SecureMiddleware',
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    ```


3.  在settings.py里这是CACHE:

    eg:
    ```
        CACHES = {
            'default': {
                'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',     # 使用本地内存缓存<适用于小型项目，大型项目建议使用Redis或Memcached>
                'LOCATION': 'unique-blackiplist-cache',                         # 缓存的唯一标识符
                'TIMEOUT': 60*60*24*7,                                          # 缓存过期时间（秒） 一周
            }
        }
    ```
4.  在settings.py里设置’是否启用缓存功能'和'是否启用拦截记录功能':
```
    IS_USE_CACHE = True  # 是否启用缓存功能，True表示启用，False表示禁用
    IS_USE_INTERCEPTIONRECORD = True  # 是否启用拦截记录功能，True表示启用，False表示禁用
    WHOIS_SERVER = "whois.arin.net" #asn查询服务器,可选值: whois.arin.net, whois.ripe.net, whois.apnic.net, whois.lacnic.net, whois.afrinic.net
    ####WHOIS_SERVER 除了第一个是经过测试的，其他的是AI补充的，使用前，需要自己测试。
```
