Jawanndenn هو تطبيق ويب بسيط لجدولة الاجتماعات وإجراء استطلاعات الرأي، وهو بديل مجاني لـ Doodle. ويستخدم التكنولوجيا التالية:
Jawanndenn هو برنامج مجاني تم تطويره بواسطة Sebastian Pipping. رمز الخادم مرخص بموجب ترخيص GNU Affero GPL الإصدار 3 أو الأحدث، في حين أن رمز العميل مرخص بموجب ترخيص GNU GPL الإصدار 3 أو الأحدث.
يرجى الإبلاغ عن الأخطاء واسمحوا لي أن أعرف إذا كنت ترغب في ذلك.
تستخدم منطقة النص التي تحمل عنوان "الإعداد (JSON)" تنسيقًا بسيطًا يستند إلى JSON يعرف المفاتيح التالية:
equal_width
— منطقي للتحكم في ما إذا كان سيتم ضخ جميع الخيارات بنفس العرض ( true
أم false
) لمواجهة تحيز الناخبين المحتملlifetime
- المدة التي سيتم بعدها حذف هذا الاستطلاع؛ يمكن أن يكون "week"
أو "month"
؛ سلسلة تشبه التعدادoptions
- قائمة من السلاسل، واحدة لكل خيار؛ يدعم بناء جملة يشبه Markdown لـ: رمز غامق ومائل ومضمنtitle
— عنوان أو عنوان الاستطلاع المطلوب إجراؤه؛ يدعم بناء جملة يشبه Markdown لـ: رمز غامق ومائل ومضمن لتثبيت الإصدار الأحدث دون استنساخ مستودع Git:
# pip3 تثبيت Jawanndenn --user
للتثبيت من نسخة Git:
# ./setup.py تثبيت --user
قم بإنشاء ملف بسيط .env
مثل هذا:
JAWANNDENN_POSTGRES_NAME=jawanndenn JAWANNDENN_POSTGRES_USER=jawanndenn JAWANNDENN_POSTGRES_PASSWORD=dEb2PIcinemA8poH JAWANNDENN_SECRET_KEY=606ea88f183a27919d5c27ec7f948906d23fdd7821684eb59e8bcf7377e3853b
تأكد من ضبط هذه القيم بعد النسخ واللصق!
يمكنك بعد ذلك إنشاء صورة عامل إرساء وتشغيلها باستخدام docker-compose up --build
.
يتم تقديم التطبيق على localhost:54080
. يتم حفظ بيانات PostgreSQL في ~/.jawanndenn-docker-pgdata/
على النظام المضيف. يوجد أيضًا مثيل لـ Redis المستخدم لتحديد معدل العمليات المشتركة، وحاوية التدبير المنزلي "cron" التي ستحذف الاستقصاءات التي تجاوزت عمرها الافتراضي المكوّن، كل 60 دقيقة.
(إذا كنت بحاجة إلى وكيل عكسي SSL منخفض الصيانة أمام Jawanndenn، فقد يكون docker-ssl-reverse-proxy مفيدًا.)
هناك عدد قليل من متغيرات البيئة التي قد ترغب في تعديلها في بيئتك. في المجمل، هناك هذه المتغيرات:
DJANGO_SETTINGS_MODULE
وحدة إعدادات Django المراد استخدامها، واتركها كما هي، والإعدادات الافتراضية هي jawanndenn.settings
(انظر docker-compose.yml
)
JAWANNDENN_ALLOWED_HOSTS
يتم تعيين أسماء المضيفين لخدمة Jawanndenn في، قائمة مفصولة بفاصلة، على jawanndenn.de,www.jawanndenn.de
على خادم الإنتاج الرئيسي، والإعدادات الافتراضية هي 127.0.0.1,0.0.0.0,localhost
(راجع jawanndenn/settings.py
)
JAWANNDENN_DEBUG
وضع تصحيح الأخطاء، معطل لجميع القيم ولكن True
، معطل افتراضيًا، ولا ينبغي أبدًا تمكينه في الإنتاج لأسباب أمنية (راجع jawanndenn/settings.py
)
JAWANNDENN_MAX_POLLS
الحد الأقصى لإجمالي عدد الاستقصاءات المراد تخزينها، وحماية رفض الخدمة، الافتراضي هو 1000
(راجع jawanndenn/settings.py
و docker-compose.yml
)
JAWANNDENN_MAX_VOTES_PER_POLL
الحد الأقصى لإجمالي عدد الاستطلاعات التي سيتم تخزينها، وحماية رفض الخدمة، والإعداد الافتراضي هو 40
(انظر jawanndenn/settings.py
)
JAWANNDENN_POSTGRES_HOST
اسم المضيف لقاعدة بيانات PostgreSQL للاتصال بها؛ الإعدادات الافتراضية لـ postgres
(راجع docker-compose.yml
)
JAWANNDENN_POSTGRES_NAME
اسم قاعدة البيانات لقاعدة بيانات PostgreSQL المراد الاتصال بها؛ لا يوجد افتراضي، مطلوب دائما
JAWANNDENN_POSTGRES_PASSWORD
كلمة المرور لتسجيل الدخول باستخدام قاعدة بيانات PostgreSQL؛ لا يوجد افتراضي، مطلوب دائما
JAWANNDENN_POSTGRES_PORT
منفذ قاعدة بيانات PostgreSQL للاتصال به؛ الإعدادات الافتراضية هي 5432
(راجع docker-compose.yml
)
JAWANNDENN_POSTGRES_USER
اسم المستخدم لتسجيل الدخول باستخدام قاعدة بيانات PostgreSQL؛ لا يوجد افتراضي، مطلوب دائما
JAWANNDENN_REDIS_HOST
اسم المضيف لقاعدة بيانات Redis المراد الاتصال بها؛ الإعدادات الافتراضية لـ redis
(راجع docker-compose.yml
)
JAWANNDENN_REDIS_PORT
منفذ قاعدة بيانات Redis للاتصال به؛ الإعدادات الافتراضية هي 6379
(راجع docker-compose.yml
)
JAWANNDENN_SECRET_KEY
مفتاح جانغو السري؛ يجب أن تكون طويلة، ومولدة، ولا تستخدم في أي مكان آخر؛ لا يوجد افتراضي، مطلوب دائما
JAWANNDENN_SENTRY_DSN
اسم مصدر البيانات (DSN) للاستخدام مع Sentry، معطل/فارغ بشكل افتراضي (راجع jawanndenn/settings.py
)
JAWANNDENN_URL_PREFIX
سلسلة بادئة لإدراجها في عناوين URL بدلاً من ذلك بعد اسم النطاق للمساعدة في استضافة تطبيقات متعددة ضمن نفس النطاق جنبًا إلى جنب؛ على سبيل المثال، البادئة prefix123
ستؤدي إلى عناوين URL مثل https://<domain>/prefix123/poll/<id>
; فارغ بشكل افتراضي (راجع jawanndenn/settings.py
)
عند التثبيت، يكون الاستدعاء بسيطًا مثل
#جواندن
أثناء التطوير، قد ترغب في تشغيل Jawanndenn من نسخة Git باستخدام
# بايثونباث=. python3 -m Jawanndenn --debug
الحجج المدعومة حاليا هي:
# جاواندين --مساعدة الاستخدام: Jawanndenn [-h] [--debug] [--host HOST] [--port PORT] [--مسار بادئة url] [-ملف قاعدة البيانات-sqlite3] [--ملف ملف Django-secret-key-] [--عدد استطلاعات الحد الأقصى] [--الحد الأقصى لعدد الأصوات لكل استطلاع] [--dumpdata] [--loaddata FILE.json] الحجج الاختيارية: -h, --help في إظهار رسالة المساعدة هذه والخروج --debug تمكين وضع التصحيح (الافتراضي: معطل) --host HOST اسم المضيف أو عنوان IP للاستماع إليه (الافتراضي: 127.0.0.1) --port PORT منفذ للاستماع إليه (الافتراضي: 8080) --url-prefix مسار PATH للإرفاق بعناوين URL (الافتراضي: "") --ملف قاعدة البيانات sqlite3 ملف لكتابة قاعدة البيانات إليه (الافتراضي: ~/jawanndenn.sqlite3) --Django-secret-key-file الملف المطلوب استخدامه لبيانات مفتاح Django السري (الافتراضي: ~/jawanndenn.secret_key) تكوين الحد: --max-polls COUNT الحد الأقصى لإجمالي عدد استطلاعات الرأي (الافتراضي: 1000) --الحد الأقصى لعدد الأصوات لكل استطلاع الحد الأقصى لعدد الأصوات لكل استطلاع (الافتراضي: 40) وسيطات استيراد/تصدير البيانات: --dumpdata تفريغ تصدير JSON لقاعدة البيانات إلى الإخراج القياسي، ثم استقال. --loaddata FILE.json قم بتحميل تصدير JSON لقاعدة البيانات من FILE.json، ثم استقال.
تتم الهجرة بأربع خطوات:
pip2 install --upgrade 'jawanndenn<2'
; تم تقديم تصدير بيانات JSON لأول مرة مع الإصدار 1.6.3.python2 -m jawanndenn --dumpdata > dump.json
docker-compose run -T jawanndenn --database-pickle /data/polls.pickle --dumpdata > dump.json
pip3 install 'jawanndenn>=2'
في مكان ماpython3 -m jawanndenn --loaddata dump.json
docker-compose run -T jawanndenn sh -c 'cat > /tmp/dump.json && DJANGO_SETTINGS_MODULE=jawanndenn.settings python3 -m django loaddata /tmp/dump.json' < dump.json
يرجى الاطلاع على قائمة الميزات القادمة.
شكر خاص لـ Arne Maier (@KordonDev) للإبلاغ عن ثغرة XSS بطريقة مسؤولة.