diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-django-rest-captcha.spec | 339 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 341 insertions, 0 deletions
@@ -0,0 +1 @@ +/django_rest_captcha-0.3.0.tar.gz diff --git a/python-django-rest-captcha.spec b/python-django-rest-captcha.spec new file mode 100644 index 0000000..9e5ded4 --- /dev/null +++ b/python-django-rest-captcha.spec @@ -0,0 +1,339 @@ +%global _empty_manifest_terminate_build 0 +Name: python-django-rest-captcha +Version: 0.3.0 +Release: 1 +Summary: Lightweight version of django-simple-captcha for work with django-rest-framework +License: MIT +URL: https://pypi.org/project/django-rest-captcha/ +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/92/16/66b2220909647f4d95a4b41888aca63d2a1644296cbea8e7976d2f373ecf/django_rest_captcha-0.3.0.tar.gz +BuildArch: noarch + +Requires: python3-djangorestframework +Requires: python3-django +Requires: python3-Pillow + +%description +# Django rest captcha + +Lightweight version of `django-simple-captcha` for work with `django-rest-framework`. + + +## Features + +- Speed: use `cache` instead of database +- Safety: union methods for generate key and image. (You can't generate many images for one key) +- Easy: only one rest api (for generate, refresh image). + + +## Usage +Add `RestCaptchaSerializer` to your protected request validator: +``` +from rest_captcha serializer import RestCaptchaSerializer +class HumanOnlyDataSerializer(RestCaptchaSerializer): + pass +``` +This code add to your serializer two required fields (captcha_key, captcha_value) + + +For provide this fields client(js code) should generate key: +``` +> curl -X POST http:localhost:8000/api/captcha/ | python -m json.tool +{ + 'image_type': 'image/png', + 'image_decode': 'base64', + 'captcha_key': 'de67e7f3-72d9-42d8-9677-ea381610363d', + 'captcha_value': '... image encoded in base64' +} +``` +`captcha_value` - is base64 encoded PNG image, client should decode and show this image to human for validation and send letters from captcha to protected api. +If human have mistake - client should re generate your image. + +**Note:** See also [trottling](https://www.django-rest-framework.org/api-guide/throttling/) for protect public api + + +## Install +``` +> pip install django-rest-captcha +``` + +### Add to your settings.py +Add to installed apps: +``` +INSTALLED_APPS = ( + ... + 'rest_captcha', +) +``` + +Set rest_captcha settings (if you want), see defaults: +``` +REST_CAPTCHA = { + 'CAPTCHA_CACHE': 'default', + 'CAPTCHA_TIMEOUT': 300, # 5 minutes + 'CAPTCHA_LENGTH': 4, + 'CAPTCHA_FONT_SIZE': 22, + 'CAPTCHA_IMAGE_SIZE': (90, 40), + 'CAPTCHA_LETTER_ROTATION': (-35, 35), + 'CAPTCHA_FOREGROUND_COLOR': '#001100', + 'CAPTCHA_BACKGROUND_COLOR': '#ffffff', + 'CAPTCHA_FONT_PATH': FONT_PATH, + 'CAPTCHA_CACHE_KEY': 'rest_captcha_{key}.{version}', + 'FILTER_FUNCTION': 'rest_captcha.captcha.filter_default', + 'NOISE_FUNCTION': 'rest_captcha.captcha.noise_default' +} +``` + +We recommend using redis or local memory as cache with set parameter, with bigger value of MAX_ENTRIES: +``` +CACHES={ + 'default': { + 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', + 'LOCATION': 'rest-captcha', + 'MAX_ENTRIES': 10000, + } +} +``` + +### Add hooks to your app router (urls.py): +``` +urlpatterns = [ + ... + url(r'api/captcha/', include('rest_captcha.urls')), +] +``` + + +%package -n python3-django-rest-captcha +Summary: Lightweight version of django-simple-captcha for work with django-rest-framework +Provides: python-django-rest-captcha +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-django-rest-captcha +# Django rest captcha + +Lightweight version of `django-simple-captcha` for work with `django-rest-framework`. + + +## Features + +- Speed: use `cache` instead of database +- Safety: union methods for generate key and image. (You can't generate many images for one key) +- Easy: only one rest api (for generate, refresh image). + + +## Usage +Add `RestCaptchaSerializer` to your protected request validator: +``` +from rest_captcha serializer import RestCaptchaSerializer +class HumanOnlyDataSerializer(RestCaptchaSerializer): + pass +``` +This code add to your serializer two required fields (captcha_key, captcha_value) + + +For provide this fields client(js code) should generate key: +``` +> curl -X POST http:localhost:8000/api/captcha/ | python -m json.tool +{ + 'image_type': 'image/png', + 'image_decode': 'base64', + 'captcha_key': 'de67e7f3-72d9-42d8-9677-ea381610363d', + 'captcha_value': '... image encoded in base64' +} +``` +`captcha_value` - is base64 encoded PNG image, client should decode and show this image to human for validation and send letters from captcha to protected api. +If human have mistake - client should re generate your image. + +**Note:** See also [trottling](https://www.django-rest-framework.org/api-guide/throttling/) for protect public api + + +## Install +``` +> pip install django-rest-captcha +``` + +### Add to your settings.py +Add to installed apps: +``` +INSTALLED_APPS = ( + ... + 'rest_captcha', +) +``` + +Set rest_captcha settings (if you want), see defaults: +``` +REST_CAPTCHA = { + 'CAPTCHA_CACHE': 'default', + 'CAPTCHA_TIMEOUT': 300, # 5 minutes + 'CAPTCHA_LENGTH': 4, + 'CAPTCHA_FONT_SIZE': 22, + 'CAPTCHA_IMAGE_SIZE': (90, 40), + 'CAPTCHA_LETTER_ROTATION': (-35, 35), + 'CAPTCHA_FOREGROUND_COLOR': '#001100', + 'CAPTCHA_BACKGROUND_COLOR': '#ffffff', + 'CAPTCHA_FONT_PATH': FONT_PATH, + 'CAPTCHA_CACHE_KEY': 'rest_captcha_{key}.{version}', + 'FILTER_FUNCTION': 'rest_captcha.captcha.filter_default', + 'NOISE_FUNCTION': 'rest_captcha.captcha.noise_default' +} +``` + +We recommend using redis or local memory as cache with set parameter, with bigger value of MAX_ENTRIES: +``` +CACHES={ + 'default': { + 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', + 'LOCATION': 'rest-captcha', + 'MAX_ENTRIES': 10000, + } +} +``` + +### Add hooks to your app router (urls.py): +``` +urlpatterns = [ + ... + url(r'api/captcha/', include('rest_captcha.urls')), +] +``` + + +%package help +Summary: Development documents and examples for django-rest-captcha +Provides: python3-django-rest-captcha-doc +%description help +# Django rest captcha + +Lightweight version of `django-simple-captcha` for work with `django-rest-framework`. + + +## Features + +- Speed: use `cache` instead of database +- Safety: union methods for generate key and image. (You can't generate many images for one key) +- Easy: only one rest api (for generate, refresh image). + + +## Usage +Add `RestCaptchaSerializer` to your protected request validator: +``` +from rest_captcha serializer import RestCaptchaSerializer +class HumanOnlyDataSerializer(RestCaptchaSerializer): + pass +``` +This code add to your serializer two required fields (captcha_key, captcha_value) + + +For provide this fields client(js code) should generate key: +``` +> curl -X POST http:localhost:8000/api/captcha/ | python -m json.tool +{ + 'image_type': 'image/png', + 'image_decode': 'base64', + 'captcha_key': 'de67e7f3-72d9-42d8-9677-ea381610363d', + 'captcha_value': '... image encoded in base64' +} +``` +`captcha_value` - is base64 encoded PNG image, client should decode and show this image to human for validation and send letters from captcha to protected api. +If human have mistake - client should re generate your image. + +**Note:** See also [trottling](https://www.django-rest-framework.org/api-guide/throttling/) for protect public api + + +## Install +``` +> pip install django-rest-captcha +``` + +### Add to your settings.py +Add to installed apps: +``` +INSTALLED_APPS = ( + ... + 'rest_captcha', +) +``` + +Set rest_captcha settings (if you want), see defaults: +``` +REST_CAPTCHA = { + 'CAPTCHA_CACHE': 'default', + 'CAPTCHA_TIMEOUT': 300, # 5 minutes + 'CAPTCHA_LENGTH': 4, + 'CAPTCHA_FONT_SIZE': 22, + 'CAPTCHA_IMAGE_SIZE': (90, 40), + 'CAPTCHA_LETTER_ROTATION': (-35, 35), + 'CAPTCHA_FOREGROUND_COLOR': '#001100', + 'CAPTCHA_BACKGROUND_COLOR': '#ffffff', + 'CAPTCHA_FONT_PATH': FONT_PATH, + 'CAPTCHA_CACHE_KEY': 'rest_captcha_{key}.{version}', + 'FILTER_FUNCTION': 'rest_captcha.captcha.filter_default', + 'NOISE_FUNCTION': 'rest_captcha.captcha.noise_default' +} +``` + +We recommend using redis or local memory as cache with set parameter, with bigger value of MAX_ENTRIES: +``` +CACHES={ + 'default': { + 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', + 'LOCATION': 'rest-captcha', + 'MAX_ENTRIES': 10000, + } +} +``` + +### Add hooks to your app router (urls.py): +``` +urlpatterns = [ + ... + url(r'api/captcha/', include('rest_captcha.urls')), +] +``` + + +%prep +%autosetup -n django-rest-captcha-0.3.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-django-rest-captcha -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon May 29 2023 Python_Bot <Python_Bot@openeuler.org> - 0.3.0-1 +- Package Spec generated @@ -0,0 +1 @@ +f5c6943dc7b1a4b3fa148dc2ba5c9e84 django_rest_captcha-0.3.0.tar.gz |
