基于IP的repoze.what限制。
repoze.what.plugins.ip的Python项目详细描述
它是一个repoze.what插件,提供了一个ip from谓词。
安装
$ <env>/bin/easy_install repoze.what.plugins.ip
pip:
$ <env>/bin/pip install repoze.what.plugins.ip
来源
源代码可以在code.google.com找到。
用法
ip_from([allowed=None], [proxies=None])检查 环境指向允许的IP地址。如果设置了http_x_forwarded_for 在环境中(意味着代理访问),远程地址被视为代理 地址和http_x_forwarded_for作为原始IP地址。
- allowed可选,默认-None
- 允许访问的IP列表。可以是字符串,然后解释为 单个IP地址
- proxies可选,默认-None
如果提供了列表或元组,则将其视为授权代理IP的列表 地址。
如果提供字符串或Unicode,则将其视为单个IP地址。
任何其他值-^ {TT6}$意味着所有代理都是 接受
您可以筛选传入的IP地址:
>>> from repoze.what.plugins.ip import ip_from >>> p = ip_from(allowed=['192.168.1.1']) >>> env = {'REMOTE_ADDR': '192.168.1.1'} >>> p.is_met(env) True >>> env = {'REMOTE_ADDR': '192.168.1.10'} >>> p.is_met(env) False
默认情况下,代理访问被禁用。您可以使用proxies=True:
>>> p = ip_from(allowed=['192.168.0.0/24'], proxies=True) >>> env = { ... 'REMOTE_ADDR': '192.168.1.1', # proxy ... 'HTTP_X_FORWARDED_FOR': '192.168.1.5' # origin ... } >>> p.is_met(env) True
,还可以显式指定代理允许:
>>> p = ip_from(allowed='192.168.1.5', proxies=['192.168.0.0/24']) >>> env = { ... 'REMOTE_ADDR': '192.168.1.1', # proxy ... 'HTTP_X_FORWARDED_FOR': '192.168.1.5' # origin ... } >>> p.is_met(env) True