O Private Relay fornece endereços de e-mail gerados para uso no lugar de endereços de e-mail pessoais.
Os destinatários ainda receberão e-mails, mas o Private Relay evita que seus endereços de e-mail pessoais sejam coletados e depois comprados, vendidos, negociados ou combinados com outros dados para identificá-los, rastreá-los e/ou direcioná-los pessoalmente.
Consulte nossos padrões de codificação para estilos de código, convenções de nomenclatura e outras metodologias.
sudo apt install postgresql libpq-dev python3-dev
brew install postgresql libpq
sudo dnf install libpq-devel python3-devel
Clone e mude para o diretório:
git clone --recurse-submodules https://github.com/mozilla/fx-private-relay.git
cd fx-private-relay
Crie e ative um ambiente virtual:
Sistemas baseados em Unix:
virtualenv env
source env/bin/activate
Windows:
python -m venv env
source env/Scripts/activate
Se você não estiver usando o Git Bash no Windows, em vez de digitar source env/Scripts/activate
, digite .envScriptsactivate
.
Observação: se você estiver executando no Windows e receber uma mensagem de erro informando que a execução de scripts está desativada em seu computador, acesse o PowerShell do Windows e digite Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
e tente novamente.
Requisitos de instalação do Python e do Node:
pip install -r requirements.txt
cd frontend
npm install
cd ../
Observação: se você estiver executando no Windows, poderá ter problemas com o uso de variáveis de ambiente em scripts npm. Você pode forçar o npm a usar o git-bash: npm config set script-shell "C:\Program Files\Git\bin\bash.exe"
. Este é o local padrão, sua instalação pode ser diferente.
Copie o arquivo .env
para configuração decouple
:
cp .env-dist .env
Adicione um valor SECRET_KEY
a .env
:
SECRET_KEY =secret-key-should-be-different-for-every-install
Migrar banco de dados:
python manage.py migrate
Criar superusuário:
python manage.py createsuperuser
Execute o back-end:
python manage.py runserver
e em um terminal diferente, construa o frontend:
cd frontend
npm run watch
Os documentos a seguir irão ajudá-lo a começar o desenvolvimento, incluindo a criação de novas strings para tradução. Consulte Tradução e localização para obter informações gerais sobre localização do Relay.
Usamos um submódulo git para arquivos de mensagens traduzidos. A etapa de instalação --recurse-submodules
já deve trazer os arquivos de mensagens para o seu diretório de trabalho, mas você também pode querer atualizar as traduções após a instalação. A maneira mais fácil de fazer isso é:
git submodule update --remote
Para atualizar o submódulo automaticamente ao executar git pull
ou outros comandos:
git config --global submodule.recurse true
O diretório privaterelay/locales
é um repositório git como qualquer outro, então para fazer alterações nas mensagens:
Faça as alterações necessárias em privaterelay/locales/en
enquanto trabalha.
cd privaterelay/locales/en
git branch message-updates-yyyymmdd
git push -u origin message-updates-yyyymmdd
Você pode então abrir uma solicitação pull da ramificação message-updates-yyyymmdd
para a ramificação main
do repositório l10n.
Se você ainda não está pronto para enviar algumas strings para tradução, você pode adicioná-las provisoriamente em frontend/pendingTranslations.ftl
. As strings nesse arquivo serão exibidas até que strings com o mesmo ID sejam adicionadas ao repositório l10n.
Da mesma forma, há um pending_locales/pending.ftl
onde strings temporárias de localidades de back-end podem ser armazenadas. Depois que as strings da solicitação pull no repositório l10n forem mescladas no repositório Relay, essas respectivas strings precisam ser removidas de pending_locales/pending.ftl
para evitar falhas nos testes do CircleCI.
Para submeter atualizações nas traduções do aplicativo (por exemplo, antes de um lançamento), precisamos submeter esta atualização do submódulo. Portanto, se as traduções atualizadas estiverem prontas para serem inseridas no aplicativo, você poderá git add
o submódulo como qualquer outro arquivo:
git add privaterelay/locales
Você pode então confirmar e enviar por push para definir o repositório do aplicativo para a versão atualizada do submódulo de traduções:
git push
Um processo automatizado atualiza o submódulo diariamente, trazendo novas alterações e traduções da Equipe de Localização.
Para ativar a autenticação de contas Mozilla em seu servidor local, você pode usar o aplicativo OAuth "Firefox Private Relay local dev" em accounts.stage.mozaws.net.
Para fazer isso:
Defina ADMIN_ENABLED=True
em seu arquivo .env
Desligue o servidor se estiver em execução e adicione as tabelas administrativas com:
python manage.py migrate
Execute o servidor, agora com endpoints /admin
:
python manage.py runserver
Vá para a página de administração do Django para alterar o site padrão.
Altere example.com
para 127.0.0.1:8000
e clique em Salvar.
Vá para a página de administração do aplicativo social django-allauth, entre com a conta de superusuário que você criou acima e adicione um aplicativo social para contas Firefox:
Campo | Valor |
---|---|
Provedor | Contas Mozilla |
Nome | accounts.stage.mozaws.net |
ID do cliente | 9ebfe2c2f9ea3c58 |
Chave secreta | Solicite isso no canal #fx-private-relay-eng do Slack |
Locais | 127.0.0.1:8000 -> Sites escolhidos |
Agora você pode entrar em http://127.0.0.1:8000/ com um FxA.
Observação: o complemento está localizado em um repositório separado. Consulte-o para obter informações adicionais sobre como começar.
O complemento adiciona a interface do Firefox para gerar e preencher automaticamente endereços de e-mail na web. A execução local do complemento permite que ele se comunique com o servidor local ( 127.0.0.1:8000
) em vez do servidor de produção ( relay.firefox.com
).
npm run watch
monitora o diretório frontend/src
e constrói o frontend quando detecta alterações. No entanto, criar uma compilação de produção consome tempo suficiente para interromper o fluxo de desenvolvimento. Portanto, também é possível executar o front-end em um servidor separado que apenas recompila os módulos alterados e não aplica otimizações de produção. Para fazer isso, em vez de npm run watch
, execute npm run dev
.
O frontend agora está disponível em http://localhost:3000. Tenha em mente que isto torna o seu ambiente de desenvolvimento local menos semelhante à produção; em particular, a autenticação normalmente está vinculada ao servidor backend e, portanto, precisa ser simulada ao executar o frontend em um servidor separado. Se você fizer alguma alteração relacionada à autenticação, certifique-se de testá-la usando npm run watch
também.
Observação: os recursos premium são ativados automaticamente para qualquer usuário com um endereço de e-mail que termine em mozilla.com
, getpocket.com
ou mozillafoundation.org
(consulte PREMIUM_DOMAINS
em emails/models.py
). Para imitar a experiência do cliente, é recomendável seguir o procedimento abaixo.
Para habilitar os recursos premium do Relay, integramos com a Plataforma de Assinatura FXA. Em alto nível, para configurar a assinatura premium do Relay, nós:
Habilite a autenticação de contas Mozilla conforme descrito acima.
Crie um produto e preço em nosso painel Stripe. (Pergunte no canal #subscription-platform do Slack para obter acesso ao nosso painel Stripe.)
Vincule usuários gratuitos do Relay ao fluxo de compra apropriado da SubPlat.
Verifique o json do perfil FXA dos usuários para um campo de subscriptions
para ver se eles podem acessar um recurso premium somente de assinatura.
Em detalhes:
Habilite a autenticação de contas Mozilla conforme descrito acima.
Vá para nosso painel Stripe. (Pergunte no canal #subscription-platform do Slack para obter acesso ao nosso painel Stripe.)
Crie um novo produto no Stripe.
Adicione todos product:
metadados.
product:
:. Assim, por exemplo, webIconURL
deve ser inserido como product:webIconURL
. Adicione capabilities:
metadados.
capabilities:
, e o valor é uma string de formato livre para descrever a "capacidade" que a compra da assinatura oferece ao usuário. Por exemplo, capabilities:9ebfe2c2f9ea3c58
com valor de premium-relay
.Defina alguns env vars com valores das etapas acima:
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 Stripe) |
PHONE_PLAN_ID_US_MONTHLY | price_1LDqw3Kb9q6OnNsL6XIDst28 (de Stripe) |
PHONE_PLAN_ID_US_YEARLY | price_1Lhd35Kb9q6OnNsL9bAxjUGq (de Stripe) |
BUNDLE_PROD_ID | prod_MQ9Zf1cyI81XS2 (da faixa) |
BUNDLE_PLAN_ID_US | price_1Lwp7uKb9q6OnNsLQYzpzUs5 (de Stripe) |
SUBSCRIPTIONS_WITH_UNLIMITED | "premium-relay" (corresponde ao valor capabilities que você usou no Stripe) |
SUBSCRIPTIONS_WITH_PHONE | "relay-phones" (corresponde ao valor capabilities que você usou no Stripe) |
Em frontend/
, defina ANALYZE=true
ao executar npm run build
para gerar um relatório detalhando quais módulos estão ocupando a maior parte do tamanho do pacote. Um relatório será gerado para a parte cliente e servidor do frontend, mas como usamos apenas o cliente, na verdade só estamos interessados nisso. Os relatórios serão abertos automaticamente no seu navegador e também podem ser encontrados em /frontend/.next/analyze/
.
ANALYZE=true npm run build
Há um documento abrangente de casos de teste para a compra do Relay premium.
Você pode usar os detalhes do cartão de crédito de teste do Stripe para pagamento.
Os recursos do telefone são ainda protegidos por phones
com bandeira waffle. No estágio, você precisará de um SRE para adicionar o sinalizador ao seu usuário de teste. No servidor de desenvolvimento, um desenvolvedor pode adicionar o sinalizador.
Além dos requisitos para desenvolvimento, os ambientes de produção devem usar:
Os ambientes de produção também devem definir algumas variáveis de ambiente adicionais:
DATABASE_URL=postgresql://:@:/
DJANGO_SECURE_HSTS_SECONDS=15768000
DJANGO_SECURE_SSL_REDIRECT=True