يوفر Private Relay عناوين بريد إلكتروني تم إنشاؤها لاستخدامها بدلاً من عناوين البريد الإلكتروني الشخصية.
سيستمر المستلمون في تلقي رسائل البريد الإلكتروني، لكن Private Relay يمنع جمع عنوان بريدهم الإلكتروني الشخصي، ثم شراؤه أو بيعه أو تداوله أو دمجه مع بيانات أخرى لتحديد هويتهم و/أو تتبعهم و/أو استهدافهم شخصيًا.
يرجى الرجوع إلى معايير الترميز الخاصة بنا لمعرفة أنماط التعليمات البرمجية واصطلاحات التسمية والمنهجيات الأخرى.
sudo apt install postgresql libpq-dev python3-dev
brew install postgresql libpq
sudo dnf install libpq-devel python3-devel
استنساخ وتغيير إلى الدليل:
git clone --recurse-submodules https://github.com/mozilla/fx-private-relay.git
cd fx-private-relay
إنشاء وتفعيل بيئة افتراضية:
الأنظمة المعتمدة على يونكس:
virtualenv env
source env/bin/activate
ويندوز:
python -m venv env
source env/Scripts/activate
إذا كنت لا تستخدم Git Bash على نظام التشغيل Windows، فبدلاً من كتابة source env/Scripts/activate
، اكتب .envScriptsactivate
.
ملاحظة: إذا كنت تعمل بنظام Windows وتلقيت رسالة خطأ تفيد بتعطيل تنفيذ البرامج النصية على جهاز الكمبيوتر الخاص بك، فانتقل إلى Windows powershell واكتب Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
، ثم حاول مرة أخرى.
تثبيت متطلبات بايثون والعقدة:
pip install -r requirements.txt
cd frontend
npm install
cd ../
ملاحظة: إذا كنت تعمل بنظام التشغيل Windows، فقد تواجه مشكلة في استخدام متغيرات البيئة في البرامج النصية npm. يمكنك إجبار npm على استخدام git-bash: npm config set script-shell "C:\Program Files\Git\bin\bash.exe"
. هذا هو الموقع الافتراضي، وقد يكون التثبيت مختلفًا.
انسخ ملف .env
decouple
التكوين:
cp .env-dist .env
أضف قيمة SECRET_KEY
إلى .env
:
SECRET_KEY =secret-key-should-be-different-for-every-install
ترحيل قاعدة البيانات:
python manage.py migrate
إنشاء مستخدم متميز:
python manage.py createsuperuser
تشغيل الواجهة الخلفية:
python manage.py runserver
وفي محطة مختلفة، قم ببناء الواجهة الأمامية:
cd frontend
npm run watch
ستساعدك المستندات التالية على البدء في التطوير، بما في ذلك إنشاء سلاسل جديدة لترجمتها. راجع الترجمة والتعريب للحصول على معلومات عامة حول توطين الترحيل.
نستخدم وحدة git الفرعية لملفات الرسائل المترجمة. يجب أن تقوم خطوة التثبيت --recurse-submodules
بإحضار ملفات الرسائل إلى دليل العمل الخاص بك بالفعل، ولكن قد ترغب أيضًا في تحديث الترجمات بعد التثبيت. أسهل طريقة للقيام بذلك هي:
git submodule update --remote
لتحديث الوحدة الفرعية تلقائيًا عند تشغيل git pull
أو أوامر أخرى:
git config --global submodule.recurse true
يعد دليل privaterelay/locales
بمثابة مستودع git مثل أي مستودع آخر، لذا لإجراء تغييرات على الرسائل:
قم بإجراء أي تغييرات تحتاجها في privaterelay/locales/en
أثناء عملك.
cd privaterelay/locales/en
git branch message-updates-yyyymmdd
git push -u origin message-updates-yyyymmdd
يمكنك بعد ذلك فتح طلب سحب من فرع message-updates-yyyymmdd
إلى الفرع main
l10n repo.
إذا لم تكن مستعدًا بعد لإرسال بعض السلاسل للترجمة، فيمكنك إضافتها مبدئيًا إلى frontend/pendingTranslations.ftl
. ستظهر السلاسل الموجودة في هذا الملف حتى تتم إضافة السلاسل التي لها نفس المعرف إلى مستودع l10n.
بالمثل، هناك pending_locales/pending.ftl
حيث يمكن تخزين سلاسل لغات الواجهة الخلفية المؤقتة. بمجرد دمج السلاسل من طلب السحب في l10n repo في Relay repo، يجب إزالة هذه السلاسل المعنية من pending_locales/pending.ftl
لتجنب فشل اختبارات CircleCI.
لتنفيذ التحديثات على ترجمات التطبيق (على سبيل المثال، قبل الإصدار)، نحتاج إلى تنفيذ تحديث الوحدة الفرعية هذا. لذا، إذا كانت الترجمات المحدثة جاهزة للالتزام بها في التطبيق، فيمكنك git add
الوحدة الفرعية تمامًا مثل أي ملف آخر:
git add privaterelay/locales
يمكنك بعد ذلك الالتزام والضغط لتعيين مستودع التطبيق على الإصدار المحدث من وحدة الترجمات الفرعية:
git push
تقوم عملية تلقائية بتحديث الوحدة الفرعية يوميًا، مع جلب أي تغييرات وترجمات جديدة من فريق الترجمة.
لتمكين مصادقة حسابات Mozilla على خادمك المحلي، يمكنك استخدام تطبيق OAuth "Firefox Private Relay local dev" على account.stage.mozaws.net.
للقيام بذلك:
اضبط ADMIN_ENABLED=True
في ملف .env
الخاص بك
قم بإيقاف تشغيل الخادم إذا كان قيد التشغيل، وأضف جداول الإدارة باستخدام:
python manage.py migrate
قم بتشغيل الخادم الآن باستخدام نقاط النهاية /admin
:
python manage.py runserver
انتقل إلى صفحة إدارة Django لتغيير الموقع الافتراضي.
غيّر example.com
إلى 127.0.0.1:8000
وانقر على "حفظ".
انتقل إلى صفحة إدارة تطبيق django-allauth الاجتماعي، وقم بتسجيل الدخول باستخدام حساب المستخدم المتميز الذي قمت بإنشائه أعلاه، وأضف تطبيقًا اجتماعيًا لحسابات Firefox:
مجال | قيمة |
---|---|
مزود | حسابات موزيلا |
اسم | accounts.stage.mozaws.net |
معرف العميل | 9ebfe2c2f9ea3c58 |
المفتاح السري | اطلب ذلك من قناة #fx-private-relay-eng Slack |
مواقع | 127.0.0.1:8000 -> المواقع المختارة |
يمكنك الآن تسجيل الدخول إلى http://127.0.0.1:8000/ باستخدام FxA.
ملحوظة: الوظيفة الإضافية موجودة في مستودع منفصل. اطلع عليه للحصول على معلومات إضافية حول البدء.
تضيف الوظيفة الإضافية واجهة مستخدم Firefox لإنشاء عناوين البريد الإلكتروني وملؤها تلقائيًا عبر الويب. يتيح تشغيل الوظيفة الإضافية محليًا إمكانية الاتصال بخادمك المحلي ( 127.0.0.1:8000
) بدلاً من خادم الإنتاج ( relay.firefox.com
).
تراقب npm run watch
دليل frontend/src
وتبني الواجهة الأمامية عندما تكتشف التغييرات. ومع ذلك، فإن إنشاء نسخة إنتاجية يستغرق وقتًا طويلاً بما يكفي لمقاطعة تدفق التطوير لديك. لذلك من الممكن أيضًا تشغيل الواجهة الأمامية على خادم منفصل يقوم بإعادة ترجمة الوحدات المتغيرة فقط، ولا يطبق تحسينات الإنتاج. للقيام بذلك، بدلاً من npm run watch
، قم بتشغيل npm run dev
.
الواجهة الأمامية متاحة الآن على http://localhost:3000. ضع في اعتبارك أن هذا يجعل بيئة التطوير المحلية الخاصة بك أقل تشابهًا مع الإنتاج؛ على وجه الخصوص، عادة ما تكون المصادقة مرتبطة بخادم الواجهة الخلفية، وبالتالي يجب محاكاتها عند تشغيل الواجهة الأمامية على خادم منفصل. إذا قمت بإجراء أي تغييرات تتعلق بالمصادقة، فتأكد من اختبارها باستخدام npm run watch
أيضًا.
ملاحظة: يتم تمكين الميزات المميزة تلقائيًا لأي مستخدم لديه عنوان بريد إلكتروني ينتهي بـ mozilla.com
أو getpocket.com
أو mozillafoundation.org
(راجع PREMIUM_DOMAINS
في emails/models.py
). لتقليد تجربة العميل، يوصى باتباع الإجراء الموضح أدناه.
لتمكين ميزات الترحيل المتميزة، نتكامل مع منصة الاشتراك في FXA. على مستوى عالٍ، لإعداد اشتراك Relay premium، قمنا بما يلي:
قم بتمكين مصادقة حسابات Mozilla كما هو موضح أعلاه.
أنشئ منتجًا وسعرًا في لوحة تحكم Stripe الخاصة بنا. (اسأل في قناة Slack #subscription-platform للوصول إلى لوحة تحكم Stripe الخاصة بنا.)
قم بربط مستخدمي Relay المجانيين بتدفق شراء SubPlat المناسب.
تحقق من ملف تعريف FXA الخاص بالمستخدمين للحصول على حقل subscriptions
لمعرفة ما إذا كان بإمكانهم الوصول إلى ميزة متميزة للاشتراك فقط.
بالتفصيل:
قم بتمكين مصادقة حسابات Mozilla كما هو موضح أعلاه.
انتقل إلى لوحة القيادة الشريطية الخاصة بنا. (اسأل في قناة Slack #subscription-platform للوصول إلى لوحة تحكم Stripe الخاصة بنا.)
إنشاء منتج جديد في Stripe.
أضف كافة product:
البيانات الوصفية.
product:
بادئة. لذا، على سبيل المثال، يجب إدخال webIconURL
كمنتج product:webIconURL
. إضافة capabilities:
البيانات الوصفية.
capabilities:
، والقيمة عبارة عن سلسلة ذات شكل حر لوصف "القدرة" التي يمنحها شراء الاشتراك للمستخدم. على سبيل المثال، capabilities:9ebfe2c2f9ea3c58
بقيمة premium-relay
.قم بتعيين بعض env vars بقيم من الخطوات المذكورة أعلاه:
فار | قيمة |
---|---|
FXA_SUBSCRIPTIONS_URL | https://accounts.stage.mozaws.net/subscriptions |
PERIODICAL_PREMIUM_PROD_ID | prod_KEq0LXqs7vysQT (من الشريط) |
PREMIUM_PLAN_ID_US_MONTHLY | price_1LiMjeKb9q6OnNsLzwixHuRz (من الشريط) |
PREMIUM_PLAN_ID_US_YEARLY | price_1LiMlBKb9q6OnNsL7tvrtI7y (من الشريط) |
PHONE_PROD_ID | prod_LviM2I0paxH1DZ (من الشريط) |
PHONE_PLAN_ID_US_MONTHLY | price_1LDqw3Kb9q6OnNsL6XIDst28 (من الشريط) |
PHONE_PLAN_ID_US_YEARLY | price_1Lhd35Kb9q6OnNsL9bAxjUGq (من الشريط) |
BUNDLE_PROD_ID | prod_MQ9Zf1cyI81XS2 (من الشريط) |
BUNDLE_PLAN_ID_US | price_1Lwp7uKb9q6OnNsLQYzpzUs5 (من الشريط) |
SUBSCRIPTIONS_WITH_UNLIMITED | "premium-relay" (تطابق قيمة capabilities التي استخدمتها في Stripe) |
SUBSCRIPTIONS_WITH_PHONE | "relay-phones" (تطابق قيمة capabilities التي استخدمتها في Stripe) |
في frontend/
، قم بتعيين ANALYZE=true
عند تشغيل npm run build
لإنشاء تقرير يوضح بالتفصيل الوحدات النمطية التي تشغل معظم حجم الحزمة. سيتم إنشاء تقرير لكل من جزء العميل والخادم من الواجهة الأمامية، ولكن بما أننا نستخدم العميل فقط، فنحن مهتمون بذلك فقط. سيتم فتح التقارير تلقائيًا في متصفحك، ويمكن العثور عليها أيضًا في /frontend/.next/analyze/
.
ANALYZE=true npm run build
يوجد مستند شامل لحالات الاختبار لشراء التتابع المتميز.
يمكنك استخدام تفاصيل بطاقة الائتمان التجريبية الخاصة بـ Stripe للدفع.
ميزات الهاتف محمية بشكل أكبر بواسطة phones
ذات علم الوافل. في المرحلة، ستحتاج إلى SRE لإضافة العلامة إلى مستخدم الاختبار الخاص بك. على خادم التطوير، يمكن للمطور إضافة العلامة.
بالإضافة إلى متطلبات التطوير، يجب أن تستخدم بيئات الإنتاج ما يلي:
يجب أن تقوم بيئات الإنتاج أيضًا بتعيين بعض متغيرات البيئة الإضافية:
DATABASE_URL=postgresql://:@:/
DJANGO_SECURE_HSTS_SECONDS=15768000
DJANGO_SECURE_SSL_REDIRECT=True