semvec/pypi-packages huggingface dataset:
django-request-sign 1.1.5
django request signature
Requires Python: >=3

## django-request-sign

对django请求进行签名效验

### 安装

`pip install django-request-sign`

### 使用

将 `request_sign.middleware.RequestSignMiddleware` 放置到中间件第一位

``` python
# django settings
MIDDLEWARE = [
    'request_sign.middleware.RequestSignMiddleware',
    ...
    ...
]
```

### 前端支持与示例

需要在header头中增加的参数，这里以[axios](./example/axios/index.js)作为参考,前端签名参考[示例js文件](./example/sign/index.js)

实际使用前请不要忘了删除示例文件中输出的日志信息


| 参数  | 说明  |
| ------------ | ------------ |
| timestamp  | 请求时间戳  |
| nonce  |  请求ID（随机生成） |
| sign | 本次请求签名 |


### 配置参数

 配置参数  | 说明 | 类型 | 默认值 | 示例
------------ | ------------ | ------------ | ------------ |------------ 
  SIGNATURE_DEBUG |开启DEBUG调试| Boolean |`False`| `True`/`False`
  ENABLE_REQUEST_SIGNATURE |是否开启| Boolean |`False`| `True`/`False`
  SIGNATURE_SECRET |签名秘钥| Str|`None`|`e6QGz7AhFzFAFsR9jYoCUnZGsqDrQI`
  SIGNATURE_ALLOW_TIME_ERROR|允许请求时间前后误差|Int|`600`|`600`
  SIGNATURE_RESPONSE|签名不通过返回方法|Str|`request_sign.utils.default_response`|`you_project.you_app.file.function`
  SIGNATURE_PASS_URL|不需要验证签名的url|List|[]|`['/api/v1/mcn/content/download']`
  SIGNATURE_PASS_URL_REGULAR|不需要验证签名的url正则|List|[]|`['/app/*']`
  SIGNATURE_METHOD|效验请求类型|List|['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']|['get']
  NONCE_CACHE_KEY|唯一性检查缓存key名称|Str|"django_request_sign_nonce_{nonce}"|"test_{nonce}"
  
##### 参数说明：SIGNATURE_RESPONSE

```python
from django.http import HttpResponse

# request_sign.utils.default_response
def default_response():
    """
        Must return django HttpResponse type
    :return: HttpResponse
    """
    return HttpResponse()
```

`request_sign.utils.default_response` 方法默认返回http状态码为200的空信息，你可以自行实现一个返回函数，更改 `SIGNATURE_RESPONSE`配置
即可，但请一定注意，自行实现的函数一定要返回一个django的`HttpResponse`对象，否则django会异常。

##### 参数说明：SIGNATURE_PASS_URL
在此名单中的请求地址将不会效验签名，如`http://example.com/a/b/c?p=1` 填写：`/a/b/c`即可，主机与请求参数不用填写

1. 在urls.py中配置name属性 `re_path('content/download', views.DownloadContent.as_view(), name='DownloadContent')`，配置中填写name值即可(推荐) 
2. 直接写url(不推荐)

##### 参数说明：NONCE_CACHE_KEY
传入的key名称会以format函数解析，所以你必须在字符串中包括`{nonce}`
请求唯一性检查需要设置django-redis，每次请求都会插入一个key来判断唯一性，如果没有安装django-redis则此配置无效

### 签名参数sign生成的方法

1. 拼接字符串，首先去除sign参数本身，然后去除值是空的参数p3，剩下p2=v2&p1=v1&method=cancel&pn=vn，
然后按参数名字符升序排序，method=cancel&p1=v1&p2=v2&pn=vn.
2. 然后做参数名和值的拼接，最后得到methodcancelp1v1p2v2pnvn
3. 在上面拼接得到的字符串后加上验证密钥key，我们假设是abc，得到新的字符串methodcancelp1v1p2v2pnvnabc
4. 然后将这个字符串换为小写进行md5计算，假设得到的是abcdef，这个值即为sign签名值。




### 参考

* https://www.jianshu.com/p/ad410836587a
* https://www.cnblogs.com/yoyoketang/p/11742187.html
halon-api 0.0.6
A wrapper for the REST API of mail transfer agent (MTA) Halon
Requires Python: >=3.6.1

# halon-api
A Python wrapper for the API for Mail Transport Agent Halon build with the [requests](https://docs.python-requests.org/) library.
The functions in the wrapper are described in [doc/functions.md](./doc/functions.md)
in the project repository.

Please read the original [Halon documentation](https://docs.halon.io/api) for
complete in depth documentation on function arguments and the data returned by the API.

The wrapper is available as a PyPI package [_halon-api_](https://pypi.org/project/halon-api/).

# Install
Install the PyPI package using _pip_: `pip install halon-api`

# How to use

```
from halon_api import HalonAPI

h = HalonAPI(
    "halon.example.com",
    "halon-user",
    "secret-password",
)

print("Halon software version:", h.get_software_version())
```

If you want to use your own CA (certificate authority), you can set the environment
variable `REQUESTS_CA_BUNDLE` to hold the path to a CA_BUNDLE. You can also pass
the pass the path to the `HalonAPI` object with the argument `verify`.
Read more in the [requests documentation](https://2.python-requests.org/en/master/user/advanced/#ssl-cert-verification).

# Development
How to set up development environment.

## Setup virtual environment
* Make virtual python environment: `python -m venv .venv`
* Activate environment: `source .venv/bin/activate`
* Deactivate virtual environment (When done): `deactivate`

## Install software
* Install required packages: `pip install requirements.txt`
* Install required packages for development: `pip install requirements-dev.txt`
* Use _pre-commit_ to install git hook scripts: `pre-commit install`

## Build the PyPI package
How to build and install the PyPI package locally.
* Build the package: `python -m build`
* Install the package: `pip install dist/halon-api-x.y.z.tar.gz`

## Generate documentation
Automated documentation of API functions can be generated by _pydoc-markdown_.
It will update the file `doc/functions.md`.
* Generate markdown (from repo root): `pydoc-markdown doc/pydoc-markdown.yaml`
sanic-hCaptcha 0.0.2
This is for sanic end It's can use hcaptcha

# How to use
## 1. install this package
```bash
pip install sanic-hCaptcha
```

## 2 if you can use jinja2 in sanic.
### 3. set up
```py
hcaptcha=hcaptcha(secret_key="HCAPTCHA_SECRET_KEY",site_key="HCAPTCHA_SITE_KEY")
```

### 4. Add this where you want to put hCaptcha
use a jinja2 end get ```hcaptcha.getcode```
```py
{{hcaptcha}}
```

### 5. How to check verify.
```py
if await hcaptcha.verify(request):
```

### 5. only that!

## 2 else
### 1
use this package [sanic-template](https://pypi.org/project/sanic-template/).
logging-process 0.9.6
多进程日志，继承自python官方logging，解决多进程下log日志丢失及混乱问题,增加配置示例2,以时间分割日志文件时，可自定义文件名拼接方式

# Example Package

这是一个解决多进程下日志丢失的包。 
继承自python项目库logging。
所以完全兼容原logging，参数，用法都用变，直接改变类名称即可使用。
具体设置方法可以参考example.py

版本更新历史：

2021-06-25  0.9.2 第一版正式上传 

2021-06-25  0.9.3 完善文件结构，可以直接导入logging类 

2021-06-25  0.9.4 完善example.py示例文件 

2021-07-14  0.9.5 工作需要，将time rotating 日志名字由时间在后，改为时间在前

2021-07-15  0.9.6 增加配置示例2,以时间分割日志文件时，增加参数nameFormat，可自定义文件名拼接方式