Private Relay proporciona direcciones de correo electrónico generadas para usar en lugar de direcciones de correo electrónico personales.
Los destinatarios seguirán recibiendo correos electrónicos, pero Private Relay evita que su dirección de correo electrónico personal sea recopilada y luego comprada, vendida, comercializada o combinada con otros datos para identificarlos, rastrearlos y/o dirigirlos personalmente.
Consulte nuestros estándares de codificación para conocer estilos de código, convenciones de nomenclatura y otras metodologías.
sudo apt install postgresql libpq-dev python3-dev
brew install postgresql libpq
sudo dnf install libpq-devel python3-devel
Clonar y cambiar al directorio:
git clone --recurse-submodules https://github.com/mozilla/fx-private-relay.git
cd fx-private-relay
Cree y active un entorno virtual:
Sistemas basados en Unix:
virtualenv env
source env/bin/activate
Ventanas:
python -m venv env
source env/Scripts/activate
Si no está utilizando Git Bash en Windows, en lugar de escribir source env/Scripts/activate
, escriba .envScriptsactivate
.
Nota: Si está ejecutando Windows y recibe un mensaje de error que indica que la ejecución de scripts está deshabilitada en su computadora, vaya a PowerShell de Windows y escriba Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
, luego intente nuevamente.
Instalar requisitos de Python y Node:
pip install -r requirements.txt
cd frontend
npm install
cd ../
Nota: Si está ejecutando Windows, puede tener un problema con el uso de variables de entorno en los scripts npm. Puede forzar a npm a usar git-bash: npm config set script-shell "C:\Program Files\Git\bin\bash.exe"
. Esta es la ubicación predeterminada, su instalación puede ser diferente.
Copie el archivo .env
para la configuración decouple
:
cp .env-dist .env
Agregue un valor SECRET_KEY
a .env
:
SECRET_KEY =secret-key-should-be-different-for-every-install
Migrar base de datos:
python manage.py migrate
Crear superusuario:
python manage.py createsuperuser
Ejecute el servidor:
python manage.py runserver
y en una terminal diferente, construye el frontend:
cd frontend
npm run watch
Los siguientes documentos lo ayudarán a comenzar con el desarrollo, incluida la creación de nuevas cadenas para traducir. Consulte Traducción y localización para obtener información general sobre la localización de Relay.
Usamos un submódulo git para archivos de mensajes traducidos. El paso de instalación --recurse-submodules
ya debería traer los archivos de mensajes a su directorio de trabajo, pero es posible que también desee actualizar las traducciones después de la instalación. La forma más sencilla de hacerlo es:
git submodule update --remote
Para actualizar el submódulo automáticamente al ejecutar git pull
u otros comandos:
git config --global submodule.recurse true
El directorio privaterelay/locales
es un repositorio git como cualquier otro, así que para realizar cambios en los mensajes:
Realice los cambios que necesite en privaterelay/locales/en
mientras trabaja.
cd privaterelay/locales/en
git branch message-updates-yyyymmdd
git push -u origin message-updates-yyyymmdd
Luego puede abrir una solicitud de extracción desde la rama message-updates-yyyymmdd
a la rama main
del repositorio l10n.
Si aún no está listo para enviar algunas cadenas para traducción, puede agregarlas tentativamente a frontend/pendingTranslations.ftl
. Las cadenas de ese archivo se mostrarán hasta que se agreguen cadenas con el mismo ID al repositorio l10n.
De manera similar, hay un pending_locales/pending.ftl
donde se pueden almacenar cadenas temporales de configuraciones regionales del backend. Una vez que las cadenas de la solicitud de extracción en el repositorio l10n se hayan fusionado en el repositorio de Relay, estas cadenas respectivas deben eliminarse de pending_locales/pending.ftl
para evitar fallar en las pruebas de CircleCI.
Para enviar actualizaciones a las traducciones de la aplicación (por ejemplo, antes de un lanzamiento), debemos enviar esta actualización del submódulo. Entonces, si las traducciones actualizadas están listas para enviarse a la aplicación, puede git add
el submódulo como cualquier otro archivo:
git add privaterelay/locales
Luego puede confirmar y presionar para configurar el repositorio de aplicaciones en la versión actualizada del submódulo de traducciones:
git push
Un proceso automatizado actualiza el submódulo diariamente, incorporando nuevos cambios y traducciones del equipo de localización.
Para habilitar la autenticación de cuentas Mozilla en su servidor local, puede utilizar la aplicación OAuth "Firefox Private Relay local dev" en account.stage.mozaws.net.
Para hacerlo:
Establezca ADMIN_ENABLED=True
en su archivo .env
Apague el servidor si está en ejecución y agregue las tablas de administración con:
python manage.py migrate
Ejecute el servidor, ahora con los puntos finales /admin
:
python manage.py runserver
Vaya a la página de administración de Django para cambiar el sitio predeterminado.
Cambie example.com
a 127.0.0.1:8000
y haga clic en Guardar.
Vaya a la página de administración de la aplicación social django-allauth, inicie sesión con la cuenta de superusuario que creó anteriormente y agregue una aplicación social para cuentas de Firefox:
Campo | Valor |
---|---|
Proveedor | Cuentas Mozilla |
Nombre | accounts.stage.mozaws.net |
identificación del cliente | 9ebfe2c2f9ea3c58 |
clave secreta | Solicite esto desde el canal Slack #fx-private-relay-eng |
Sitios | 127.0.0.1:8000 -> Sitios elegidos |
Ahora puede iniciar sesión en http://127.0.0.1:8000/ con un FxA.
Nota: el complemento se encuentra en un repositorio separado. Véalo para obtener información adicional sobre cómo comenzar.
El complemento agrega la interfaz de usuario de Firefox para generar y completar automáticamente direcciones de correo electrónico en la web. Ejecutar el complemento localmente le permite comunicarse con su servidor local ( 127.0.0.1:8000
) en lugar del servidor de producción ( relay.firefox.com
).
npm run watch
observa el directorio frontend/src
y construye el frontend cuando detecta cambios. Sin embargo, crear una compilación de producción requiere suficiente tiempo como para interrumpir el flujo de desarrollo. Por lo tanto, también es posible ejecutar el front-end en un servidor separado que solo recompila los módulos modificados y no aplica optimizaciones de producción. Para hacerlo, en lugar de npm run watch
, ejecute npm run dev
.
La interfaz ahora está disponible en http://localhost:3000. Tenga en cuenta que esto hace que su entorno de desarrollo local sea menos similar al de producción; en particular, la autenticación normalmente está vinculada al servidor backend y, por lo tanto, debe simularse cuando se ejecuta el frontend en un servidor separado. Si realiza algún cambio relacionado con la autenticación, asegúrese de probarlo también con npm run watch
.
Nota: Las funciones premium se habilitan automáticamente para cualquier usuario con una dirección de correo electrónico que termine en mozilla.com
, getpocket.com
o mozillafoundation.org
(consulte PREMIUM_DOMAINS
en emails/models.py
). Para imitar la experiencia del cliente, se recomienda seguir el siguiente procedimiento.
Para habilitar las funciones premium de Relay, nos integramos con la plataforma de suscripción FXA. En un nivel alto, para configurar la suscripción premium de Relay, nosotros:
Habilite la autenticación de cuentas de Mozilla como se describe arriba.
Cree un producto y un precio en nuestro panel de Stripe. (Pregunte en el canal Slack de la plataforma de suscripción para obtener acceso a nuestro panel de Stripe).
Vincula a los usuarios gratuitos de Relay al flujo de compra de SubPlat correspondiente.
Verifique el json del perfil FXA de los usuarios para ver un campo subscriptions
para ver si pueden acceder a una función premium solo de suscripción.
En detalle:
Habilite la autenticación de cuentas de Mozilla como se describe arriba.
Vaya a nuestro panel de Stripe. (Pregunte en el canal Slack de la plataforma de suscripción para obtener acceso a nuestro panel de Stripe).
Crea un nuevo producto en Stripe.
Agregue todo product:
metadatos.
product:
:. Entonces, por ejemplo, webIconURL
debe ingresarse como product:webIconURL
. Agregar capabilities:
metadatos.
capabilities:
y el valor es una cadena de formato libre para describir la "capacidad" que la compra de la suscripción le brinda al usuario. Por ejemplo, capabilities:9ebfe2c2f9ea3c58
con valor de premium-relay
.Establezca algunas variables de entorno con los valores de los pasos anteriores:
var | Valor |
---|---|
FXA_SUBSCRIPTIONS_URL | https://accounts.stage.mozaws.net/subscriptions |
PERIODICAL_PREMIUM_PROD_ID | prod_KEq0LXqs7vysQT (de Stripe) |
PREMIUM_PLAN_ID_US_MONTHLY | price_1LiMjeKb9q6OnNsLzwixHuRz (de Stripe) |
PREMIUM_PLAN_ID_US_YEARLY | price_1LiMlBKb9q6OnNsL7tvrtI7y (de Stripe) |
PHONE_PROD_ID | prod_LviM2I0paxH1DZ (de Raya) |
PHONE_PLAN_ID_US_MONTHLY | price_1LDqw3Kb9q6OnNsL6XIDst28 (de Stripe) |
PHONE_PLAN_ID_US_YEARLY | price_1Lhd35Kb9q6OnNsL9bAxjUGq (de Stripe) |
BUNDLE_PROD_ID | prod_MQ9Zf1cyI81XS2 (de Stripe) |
BUNDLE_PLAN_ID_US | price_1Lwp7uKb9q6OnNsLQYzpzUs5 (de Stripe) |
SUBSCRIPTIONS_WITH_UNLIMITED | "premium-relay" (coincide con el valor capabilities que usaste en Stripe) |
SUBSCRIPTIONS_WITH_PHONE | "relay-phones" (coincide con el valor capabilities que usaste en Stripe) |
En frontend/
, configure ANALYZE=true
cuando ejecute npm run build
para generar un informe que detalla qué módulos ocupan la mayor parte del tamaño del paquete. Se generará un informe tanto para la parte del cliente como para la del servidor de la interfaz, pero como solo usamos el cliente, en realidad solo nos interesa eso. Los informes se abrirán automáticamente en su navegador y también se pueden encontrar en /frontend/.next/analyze/
.
ANALYZE=true npm run build
Existe un documento completo de casos de prueba para la compra de un relé premium.
Puede utilizar los datos de la tarjeta de crédito de prueba de Stripe para realizar el pago.
Las funciones del teléfono están protegidas aún más por phones
con bandera tipo gofre. En la etapa, necesitará un SRE para agregar la bandera a su usuario de prueba. En el servidor de desarrollo, un desarrollador puede agregar la bandera.
Además de los requisitos para desarrollo, los entornos de producción deben utilizar:
Los entornos de producción también deberían establecer algunas variables de entorno adicionales:
DATABASE_URL=postgresql://:@:/
DJANGO_SECURE_HSTS_SECONDS=15768000
DJANGO_SECURE_SSL_REDIRECT=True