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
Создайте и активируйте виртуальную среду:
Системы на базе Unix:
virtualenv env
source env/bin/activate
Окна:
python -m venv env
source env/Scripts/activate
Если вы не используете Git Bash в Windows, вместо ввода source env/Scripts/activate
введите .envScriptsactivate
.
Примечание. Если вы работаете в Windows и получаете сообщение об ошибке о том, что выполнение сценариев на вашем компьютере отключено, зайдите в PowerShell Windows и введите Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
, а затем повторите попытку.
Требования к установке Python и Node:
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.
Если вы еще не готовы отправить некоторые строки на перевод, вы можете предварительно добавить их в frontend/pendingTranslations.ftl
. Строки в этом файле будут отображаться до тех пор, пока строки с тем же идентификатором не будут добавлены в репозиторий l10n.
Аналогичным образом существует pending_locales/pending.ftl
, где могут храниться временные строки локалей серверной части. После того как строки из запроса на включение в репозитории l10n будут объединены в репозиторий Relay, эти соответствующие строки необходимо удалить из 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:
Поле | Ценить |
---|---|
Поставщик | Аккаунты Mozilla |
Имя | 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
). Чтобы имитировать опыт клиента, рекомендуется следовать следующей процедуре.
Чтобы включить премиум-функции Relay, мы интегрируемся с платформой подписки FXA. На высоком уровне для настройки премиум-подписки Relay мы:
Включите аутентификацию учетных записей Mozilla, как описано выше.
Создайте продукт и цену на нашей панели управления Stripe. (Спросите на канале Slack #subscription-platform, чтобы получить доступ к нашей панели инструментов Stripe.)
Свяжите бесплатных пользователей Relay с соответствующим процессом покупки SubPlat.
Проверьте json профиля FXA пользователей на наличие поля subscriptions
, чтобы узнать, могут ли они получить доступ к премиум-функции, доступной только по подписке.
Подробно:
Включите аутентификацию учетных записей Mozilla, как описано выше.
Перейдите на панель инструментов Stripe. (Спросите на канале Slack #subscription-platform, чтобы получить доступ к нашей панели управления Stripe.)
Создайте новый продукт в Stripe.
Добавьте все необходимые product:
метаданные.
product:
:. Так, например, webIconURL
необходимо ввести как product:webIconURL
. Добавить capabilities:
метаданные.
capabilities:
, а значение представляет собой строку свободной формы, описывающую «возможности», которые покупка подписки дает пользователю. Например, capabilities:9ebfe2c2f9ea3c58
со значением premium-relay
.Установите некоторые переменные окружения со значениями, полученными в приведенных выше шагах:
Вар | Ценить |
---|---|
FXA_SUBSCRIPTIONS_URL | https://accounts.stage.mozaws.net/subscriptions |
PERIODICAL_PREMIUM_PROD_ID | prod_KEq0LXqs7vysQT (из Stripe) |
PREMIUM_PLAN_ID_US_MONTHLY | price_1LiMjeKb9q6OnNsLzwixHuRz (из Stripe) |
PREMIUM_PLAN_ID_US_YEARLY | price_1LiMlBKb9q6OnNsL7tvrtI7y (из Stripe) |
PHONE_PROD_ID | prod_LviM2I0paxH1DZ (из Stripe) |
PHONE_PLAN_ID_US_MONTHLY | price_1LDqw3Kb9q6OnNsL6XIDst28 (из Stripe) |
PHONE_PLAN_ID_US_YEARLY | price_1Lhd35Kb9q6OnNsL9bAxjUGq (из Stripe) |
BUNDLE_PROD_ID | prod_MQ9Zf1cyI81XS2 (из Stripe) |
BUNDLE_PLAN_ID_US | price_1Lwp7uKb9q6OnNsLQYzpzUs5 (из Stripe) |
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