diff --git a/.cpanel.yml b/.cpanel.yml new file mode 100644 index 0000000..ff732a9 --- /dev/null +++ b/.cpanel.yml @@ -0,0 +1,15 @@ +--- +# Tarefas do botao Deploy HEAD Commit do Git Version Control do cPanel. +# Pagina estatica: o Update from Remote ja troca os arquivos, e o deploy so +# confere e acerta as permissoes. O dominio aponta para a pasta public do clone. +deployment: + tasks: + - export REPO=$HOME/repositories/mapdisk + - echo "=== deploy em $REPO ===" + - cd $REPO && git log --oneline -1 + - test -f $REPO/public/index.html + - test -f $REPO/public/.htaccess + - chmod 755 $REPO + - cd $REPO && find public -type d -exec chmod 755 {} \; + - cd $REPO && find public -type f -exec chmod 644 {} \; + - echo "=== deploy concluido ===" diff --git a/.gitignore b/.gitignore index c8b266f..93bd3fb 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,6 @@ TreeSizeFreeSetup.exe # Rascunhos locais .superpowers/ + +# Gravado pelo servidor da hospedagem na pasta do site; deixa o clone do cPanel com alteracao pendente +error_log diff --git a/README.md b/README.md index 58d339a..da6ed3c 100644 --- a/README.md +++ b/README.md @@ -88,4 +88,5 @@ No Prompt de Comando, use `start /wait mapdisk varrer C:` para o prompt esperar | 6 | Relatório para o cliente avaliar: página, planilha e leitura da resposta | `relatorio-cliente` | Spec em [#11](https://github.com/manfredjr/mapdisk/pull/11), plano em [#12](https://github.com/manfredjr/mapdisk/pull/12), código em [#13](https://github.com/manfredjr/mapdisk/pull/13) | Concluída em 30/09/2026 | | 7 | Duplicados: busca em três etapas, aba no painel e cópias no relatório para o cliente | `duplicados` | Plano em [#14](https://github.com/manfredjr/mapdisk/pull/14), código em [#15](https://github.com/manfredjr/mapdisk/pull/15) | Concluída em 01/10/2026 | | 8 | Relatório do técnico em HTML com o gráfico, exportar pela janela, linha de comando completa, item "Analisar com MapDisk" no Explorer, tela de Opções e página do programa | `relatorio-e-integracao` | Plano em [#16](https://github.com/manfredjr/mapdisk/pull/16), código em [#17](https://github.com/manfredjr/mapdisk/pull/17) | Concluída em 01/10/2026 | -| - | Versão 1.0.0: troca a versão de 0.1.0 para 1.0.0, para a primeira Release | `versao-1-0-0` | [#19](https://github.com/manfredjr/mapdisk/pull/19) | Aguardando autorização para publicar | +| - | Versão 1.0.0: troca a versão de 0.1.0 para 1.0.0, para a primeira Release | `versao-1-0-0` | [#19](https://github.com/manfredjr/mapdisk/pull/19) | Publicada em 01/10/2026: [Release v1.0.0](https://github.com/manfredjr/mapdisk/releases/tag/v1.0.0) | +| - | Página do programa em mapdisk.manfred.com.br, pelo Git do cPanel | `publicar-pagina` | [#20](https://github.com/manfredjr/mapdisk/pull/20) | Aguardando autorização para publicar | diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..b46d663 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,9 @@ +# Pagina estatica do MapDisk - MT. Sem listagem de pasta e com cabecalhos de seguranca. +Options -Indexes +DirectoryIndex index.html + + + Header set X-Content-Type-Options "nosniff" + Header set Referrer-Policy "strict-origin-when-cross-origin" + Header set Content-Security-Policy "default-src 'self'; img-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none'" + diff --git a/testes/mapdisk.testes/pagina-testes.cs b/testes/mapdisk.testes/pagina-testes.cs index 48fe3ba..f28f5fc 100644 --- a/testes/mapdisk.testes/pagina-testes.cs +++ b/testes/mapdisk.testes/pagina-testes.cs @@ -33,4 +33,17 @@ public void Pagina_nao_usa_marca_de_terceiro() { Assert.DoesNotContain("treesize", File.ReadAllText(Publico("index.html")), StringComparison.OrdinalIgnoreCase); } + + [Fact] + public void Publicacao_confere_a_pagina_e_nao_expoe_a_conta() + { + var raiz = CaracteresProibidosTestes.RaizDoRepositorio(); + var htaccess = File.ReadAllText(Publico(".htaccess")); + Assert.Contains("Options -Indexes", htaccess); + Assert.Contains("script-src 'none'", htaccess); + var deploy = File.ReadAllText(Path.Combine(raiz, ".cpanel.yml")); + Assert.Contains("test -f $REPO/public/index.html", deploy); + Assert.Contains("$HOME/repositories/mapdisk", deploy); + Assert.DoesNotContain("/home/", deploy); + } }