fititnt / cplp-aiops

AIOps para Comunidade dos Países de Língua Portuguesa, 2019/01. [Foco atual: servidores comunitário e gratuito para iniciantes em programação e ciência de dados]
The Unlicense
5 stars 0 forks source link

Proxy reverso para melhorar compatibilidade de sites com o Free Basics / internet.org #62

Open fititnt opened 5 years ago

fititnt commented 5 years ago

O site https://inclusao.etica.ai/, conforme issue https://github.com/fititnt/inclusao-digital/issues/1, foi enviado para avaliação no Free Basics e, exatamente dentro do prazo que deram, fomos avaliados, mas reclamaram que o site tinha JavaScript (o que era verdade) e pediram para remover.

O culpado foi isto aqui, que é adicionado automaticamente pelo template do Jekill que é a renderização mais simples do GitHub.

<script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/4.1.0/anchor.min.js" integrity="sha256-lZaRhKri35AyJSypXXs4o6OPFTbTmUoltBbDCbdzegg=" crossorigin="anonymous"></script>
<script>anchors.add();</script>

Este issue aqui é sobre ter alguma estratégia, por exemplo algum proxy que reescreve o HTML, para que o Free Basics acesse em vez de acessar o GitHub diretamente. Talvez isso especialmente útil para outros projetos que tenham bem mais alterações a serem feitas.


[*] Caso ambos os links estiverem dando erro 404 não encontrado e ainda não foram movidos para organização https://github.com/EticaAI, quer dizer que no momento em que você esta lendo isto eles não estiverem públicos. Mande e-mail, neste momento o repositório ainda está para feedback interno.

fititnt commented 5 years ago

Potencial candidato inicial https://github.com/apache/incubator-pagespeed-ngx

fititnt commented 5 years ago

Ok, basico de redirecionar apenas para um site, inclusao.etica.ai.

Captura de tela de 2019-06-07 01-23-41

Vai tomar algumas várias horas, mas creio que o MVP que baste seria remover completamente javascripts da página antes que o ngxpagespeed tente perder processamento otimizando. Isso já serviria para dar saída no issue do outro repositório.

Fora isso seria deixar mais genérico, ao ponto de pessoas não precisarem criar própria imagem e poderem simplesmente chamar com parâmetros.

fititnt commented 5 years ago

Que lindo, em tese existe uma funcionalidade explicitamente não recomendada no Apache PageSpeed que é exatamente uma das coisas que a gente mais precisa: a strip_scripts.

Porém, conforme https://www.pagespeedguide.com/documentation/configuration/filters em teoria o strip_scripts é um filtro usado apenas para debug.

Caso esse filtro não possa ser usado, vamos ter que implementar o strip tags de alguma outra forma. E mesmo que ele permita isso via modo debug, pode até funcionar a curto prazo, mas não seria o ideal (em especial se passar a ser usado por outras pessoas).

fititnt commented 5 years ago

TL;DR:

  1. Repositório exclusivo foi extraído da pasta docker/reverse-proxy-for-free-basics e está disponível em https://github.com/fititnt/reverse-proxy-for-free-basics-docker
  2. Imagens no Dockerhub em https://cloud.docker.com/repository/docker/fititnt/reverse-proxy-for-free-basics

Pessoal, para quem estiver acompanhando, aproveito para ensinar um truque de git: é possível extrair o histórico de uma subpasta em um repositório completamente novo. O único porém é que isso (pelo menos até onde eu vou atrás para saber) não implica em commits serem assinados digitalmente.

Fiz assim:

# fititnt at bravo in /alligo/code/fititnt [21:33:47]
$ cd reverse-proxy-for-free-basics-docker

# fititnt at bravo in /alligo/code/fititnt/reverse-proxy-for-free-basics-docker on git:master o [21:33:50]
$ git filter-branch --prune-empty --subdirectory-filter docker/reverse-proxy-for-free-basics master        
Rewrite 01bd20efcd14f63e556036cb58e703fe80ba7c4d (4/4) (0 seconds passed, remaining 0 predicted)    
Ref 'refs/heads/master' was rewritten

# fititnt at bravo in /alligo/code/fititnt/reverse-proxy-for-free-basics-docker on git:master o [21:34:42]
$ gitk

# fititnt at bravo in /alligo/code/fititnt/reverse-proxy-for-free-basics-docker on git:master o [21:35:21]
$ git remote -v
origin  git@github.com:fititnt/cplp-aiops.git (fetch)
origin  git@github.com:fititnt/cplp-aiops.git (push)

# fititnt at bravo in /alligo/code/fititnt/reverse-proxy-for-free-basics-docker on git:master o [21:37:04]
$ git remote set-url origin git@github.com:fititnt/reverse-proxy-for-free-basics-docker.git

# fititnt at bravo in /alligo/code/fititnt/reverse-proxy-for-free-basics-docker on git:master o [21:37:31]
$ git remote -v                                                                            
origin  git@github.com:fititnt/reverse-proxy-for-free-basics-docker.git (fetch)
origin  git@github.com:fititnt/reverse-proxy-for-free-basics-docker.git (push)

# fititnt at bravo in /alligo/code/fititnt/reverse-proxy-for-free-basics-docker on git:master o [21:37:33]
$ git push
Counting objects: 35, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (24/24), done.
Writing objects: 100% (35/35), 6.35 KiB | 0 bytes/s, done.
Total 35 (delta 5), reused 31 (delta 5)
remote: Resolving deltas: 100% (5/5), done.
To git@github.com:fititnt/reverse-proxy-for-free-basics-docker.git
 * [new branch]      master -> master

O local que explica mais sobre isto está em https://help.github.com/en/articles/splitting-a-subfolder-out-into-a-new-repository (destino em inglês).

O repositório dedicado está em https://github.com/fititnt/reverse-proxy-for-free-basics-docker.

Nota: notem que isso pode desnecessariamente replicar o numero de "commits" feitos por dia na wall do github. Não que neste caso tenha feito alguma diferença significativa para quantidade de commits que eu faço (até porque eu mesmo sou bem moderado) mas que fazer isso em repositórios grandes pode causar impactos negativos caso todos os repositórios estejam no ar. Ou seja, 4 commits que estavam na pasta docker/reverse-proxy-for-free-basics do repositório https://github.com/fititnt/cplp-aiops repetiram na contagem do novo repositório em https://github.com/fititnt/reverse-proxy-for-free-basics-docker. O github (e acredito que o GitLab siga o mesmo padrão) interpreta que commits feitos com meus e-mails cadastrados no github e que meu usuário @fititnt tem poder de escrita significam que deveriam ser mencionados no meu histórico de forma individual caso os repositórios não sejam fork um do outro.

Porém neste caso faz muito sentido, pois vou manter uma imagem no dockerhub, vide https://cloud.docker.com/repository/docker/fititnt/reverse-proxy-for-free-basics