summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-django-rest-captcha.spec339
-rw-r--r--sources1
3 files changed, 341 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..cc10809 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/sources b/sources
new file mode 100644
index 0000000..7994c7e
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+f5c6943dc7b1a4b3fa148dc2ba5c9e84 django_rest_captcha-0.3.0.tar.gz