Open ppKrauss opened 2 years ago
O commit https://github.com/digital-guard/preserv/commit/159a79cb9f35ba17aaa0745c14517762ed3ccebe possibilitou adicionar todas as dados de donatedPack.csv na coluna info
de optim.donated_PackTpl.
Para obter o uri
de um pacote, usar: SELECT info->'uri' FROM optim.donated_packtpl;
Lembretes:
O isocode do país deve ser obtido de optim.donor, evitando situações como:
com | rdap -j sedacusco.com > preserv-COM/data/_donorEvidence/etc
net | rdap -j araucaria.atende.net > preserv-NET/data/_donorEvidence/etc
net | rdap -j marechalcandidorondon.atende.net > preserv-NET/data/_donorEvidence/etc
net | rdap -j pinhais.atende.net > preserv-NET/data/_donorEvidence/etc
org | rdap -j addressforall.org > preserv-ORG/data/_donorEvidence/etc
org | rdap -j osmfoundation.org > preserv-ORG/data/_donorEvidence/etc
org | rdap -j wikimediafoundation.org > preserv-ORG/data/_donorEvidence/etc
rio | rdap -j prefeitura.rio > preserv-RIO/data/_donorEvidence/etc
Usar https://en.wikipedia.org/wiki/Country_code_top-level_domain para detectar dominos exóticos
Criei a view para gerar a linha de comando para rdap:
e o target para retornar a lista de comandos para atualizar/criar pastas:
pushd /var/gits/_dg/preserv/src
make cmd_rdap iso=br pg_datalake=dl03t_main
Exemplos, avaliar se atendem:
mkdir -p /var/gits/_dg/preserv-BR/data/_donorEvidence/org/addressforall.org && rdap -j addressforall.org > /var/gits/_dg/preserv-BR/data/_donorEvidence/org/addressforall.org
mkdir -p /var/gits/_dg/preserv-BR/data/_donorEvidence/br/com.br/clicksistema.com.br && rdap -j clicksistema.com.br > /var/gits/_dg/preserv-BR/data/_donorEvidence/br/com.br/clic
ksistema.com.br
mkdir -p /var/gits/_dg/preserv-BR/data/_donorEvidence/br/com.br/correios.com.br && rdap -j correios.com.br > /var/gits/_dg/preserv-BR/data/_donorEvidence/br/com.br/correios.com
.br
mkdir -p /var/gits/_dg/preserv-BR/data/_donorEvidence/de/geofabrik.de/download.geofabrik.de && rdap -j download.geofabrik.de > /var/gits/_dg/preserv-BR/data/_donorEvidence/de/geofabrik.de/download.geofabrik.de
mkdir -p /var/gits/_dg/preserv-BR/data/_donorEvidence/br/gov.br/ce.gov.br/fortaleza.ce.gov.br/sefin.fortaleza.ce.gov.br/ide.sefin.fortaleza.ce.gov.br && rdap -j ide.sefin.fortaleza.ce.gov.br > /var/gits/_dg/preserv-BR/data/_donorEvidence/br/gov.br/ce.gov.br/fortaleza.ce.gov.br/sefin.fortaleza.ce.gov.br/ide.sefin.fortaleza.ce.gov.br
mkdir -p /var/gits/_dg/preserv-BR/data/_donorEvidence/br/gov.br/df.gov.br && rdap -j df.gov.br > /var/gits/_dg/preserv-BR/data/_donorEvidence/br/gov.br/df.gov.br
mkdir -p /var/gits/_dg/preserv-BR/data/_donorEvidence/br/gov.br/df.gov.br/seduh.df.gov.br/geoportal.seduh.df.gov.br && rdap -j geoportal.seduh.df.gov.br > /var/gits/_dg/preserv-BR/data/_donorEvidence/br/gov.br/df.gov.br/seduh.df.gov.br/geoportal.seduh.df.gov.br
mkdir -p /var/gits/_dg/preserv-BR/data/_donorEvidence/br/gov.br/ibge.gov.br && rdap -j ibge.gov.br > /var/gits/_dg/preserv-BR/data/_donorEvidence/br/gov.br/ibge.gov.br
mkdir -p /var/gits/_dg/preserv-BR/data/_donorEvidence/br/org.br/ok.org.br && rdap -j ok.org.br > /var/gits/_dg/preserv-BR/data/_donorEvidence/br/org.br/ok.org.br
mkdir -p /var/gits/_dg/preserv-CO/data/_donorEvidence/co/gov.co/dane.gov.co && rdap -j dane.gov.co > /var/gits/_dg/preserv-CO/data/_donorEvidence/co/gov.co/dane.gov.co
mkdir -p /var/gits/_dg/preserv-CO/data/_donorEvidence/co/gov.co/dane.gov.co/geoportal.dane.gov.co && rdap -j geoportal.dane.gov.co > /var/gits/_dg/preserv-CO/data/_donorEvidence/co/gov.co/dane.gov.co/geoportal.dane.gov.co
mkdir -p /var/gits/_dg/preserv-CO/data/_donorEvidence/co/gov.co/igac.gov.co/geoportal.igac.gov.co && rdap -j geoportal.igac.gov.co > /var/gits/_dg/preserv-CO/data/_donorEvidence/co/gov.co/igac.gov.co/geoportal.igac.gov.co
mkdir -p /var/gits/_dg/preserv-CO/data/_donorEvidence/co/gov.co/igac.gov.co && rdap -j igac.gov.co > /var/gits/_dg/preserv-CO/data/_donorEvidence/co/gov.co/igac.gov.co
mkdir -p /var/gits/_dg/preserv-CO/data/_donorEvidence/co/gov.co/codigopostal.gov.co/visor.codigopostal.gov.co && rdap -j visor.codigopostal.gov.co > /var/gits/_dg/preserv-CO/data/_donorEvidence/co/gov.co/codigopostal.gov.co/visor.codigopostal.gov.co
mkdir -p /var/gits/_dg/preserv-CO/data/_donorEvidence/com/arcgis.com/opendata.arcgis.com/geomedellin-m-medellin.opendata.arcgis.com && rdap -j geomedellin-m-medellin.opendata.arcgis.com > /var/gits/_dg/preserv-CO/data/_donorEvidence/com/arcgis.com/opendata.arcgis.com/geomedellin-m-medellin.opendata.arcgis.com
mkdir -p /var/gits/_dg/preserv-CO/data/_donorEvidence/co/gov.co/medellin.gov.co && rdap -j medellin.gov.co > /var/gits/_dg/preserv-CO/data/_donorEvidence/co/gov.co/medellin.gov.co
mkdir -p /var/gits/_dg/preserv-CO/data/_donorEvidence/co/gov.co/bogota.gov.co && rdap -j bogota.gov.co > /var/gits/_dg/preserv-CO/data/_donorEvidence/co/gov.co/bogota.gov.co
mkdir -p /var/gits/_dg/preserv-CO/data/_donorEvidence/co/gov.co/bogota.gov.co/datosabiertos.bogota.gov.co && rdap -j datosabiertos.bogota.gov.co > /var/gits/_dg/preserv-CO/data/_donorEvidence/co/gov.co/bogota.gov.co/datosabiertos.bogota.gov.co
mkdir -p /var/gits/_dg/preserv-EC/data/_donorEvidence/org/osmfoundation.org && rdap -j osmfoundation.org > /var/gits/_dg/preserv-EC/data/_donorEvidence/org/osmfoundation.org
mkdir -p /var/gits/_dg/preserv-EC/data/_donorEvidence/ec/gob.ec/azogues.gob.ec && rdap -j azogues.gob.ec > /var/gits/_dg/preserv-EC/data/_donorEvidence/ec/gob.ec/azogues.gob.ec
mkdir -p /var/gits/_dg/preserv-PE/data/_donorEvidence/com/sedacusco.com && rdap -j sedacusco.com > /var/gits/_dg/preserv-PE/data/_donorEvidence/com/sedacusco.com
O cliente RDAP instalado com
sudo snap install rdap
não funciona para todos os casos. TLD's genéricos, do tipo .com
ou .org
, parecem funcionar. Exemplo: rdap -j prefeitura.rio
. Para ccTLD's me parece que será preciso usar servidores específicos, da autoridade responsável ou outro. Exemplo de não funcionamento:
rdap -v -j geoportal.dane.gov.co
# OpenRDAP v0.0.1
#
# rdap: Configuring query...
# rdap: Using disk cache (/home/claiton/snap/rdap/7/.openrdap)
# rdap: Bootstrap URL is default 'https://data.iana.org/rdap/'
# rdap: Bootstrap cache TTL set to 3600 seconds
# rdap: Timeout is 30 seconds
#
# client: Running...
# client: Request type : domain
# client: Request query : geoportal.dane.gov.co
# client: Request URL : TBD, bootstrap required
# bootstrap: Looking up...
# bootstrap: Question type : dns
# bootstrap: Question query: geoportal.dane.gov.co
# bootstrap: Cache state: dns.json: good
# bootstrap: Using cached Service Registry file
# bootstrap: Looked up 'geoportal.dane.gov.co'
# bootstrap: No match
#
# rdap: Finished in 5.598907ms
# Error: No RDAP servers found for 'geoportal.dane.gov.co'
Conforme https://www.openrdap.org/docs é possível especificar o servidor, por isso funciona no caso brasileiro:
rdap -v -s https://rdap.registro.br -j nic.br
# OpenRDAP v0.0.1
#
# rdap: Configuring query...
# rdap: Using server 'https://rdap.registro.br'
# rdap: Using disk cache (/home/claiton/snap/rdap/7/.openrdap)
# rdap: Bootstrap URL is default 'https://data.iana.org/rdap/'
# rdap: Bootstrap cache TTL set to 3600 seconds
# rdap: Timeout is 30 seconds
#
# client: Running...
# client: Request type : domain
# client: Request query : nic.br
# client: Request URL : https://rdap.registro.br/domain/nic.br
# client: RDAP URL #0 is https://rdap.registro.br/domain/nic.br
# client: GET https://rdap.registro.br/domain/nic.br
# client: status-code=403, content-type=, length=0 bytes, duration=588.663473ms
#
# rdap: Finished in 589.332622ms
# Error: No RDAP servers responded successfully (tried 1 server(s))
Assim, no caso brasileiro passei a utilizar wget https://rdap.registro.br/domain/<dominio>
para obter o rdap.json
. Ver https://registro.br/rdap/.
Pendente encontrar os servidores para os casos que que rdap
não funcionar.
Retomando:
O target a seguir gera uma lista de comandos para criar os diretórios, se necessário, e obter o rdap.json.
pushd /var/gits/_dg/preserv/src
make cmd_rdap iso=br pg_datalake=dl03t_main
Exemplo de output:
make cmd_rdap iso=br pg_datalake=dl03t_main
Generate list of commands to update or create rdap.json
for donor and donatedPack
Usage: make cmd_rdap iso=<ISO 3166 country code> pg_datalake=<database>
[Press ENTER to continue or Ctrl+C to quit]
commandline_rdap
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
mkdir -p /var/gits/_dg/preserv-BR/data/_donorEvidence/org/addressforall.org && rdap -v -j addressforall.org > /var/gits/_dg/preserv-BR/data/_donorEvidence/org/addressforall.org/rdap.json
mkdir -p /var/gits/_dg/preserv-BR/data/_donorEvidence/br/com.br/clicksistema.com.br && wget https://rdap.registro.br/domain/clicksistema.com.br > /var/gits/_dg/preserv-BR/data/_donorEvidence/br/com.br/clicksistema.com.br/rdap.json
mkdir -p /var/gits/_dg/preserv-BR/data/_donorEvidence/br/com.br/correios.com.br && wget https://rdap.registro.br/domain/correios.com.br > /var/gits/_dg/preserv-BR/data/_donorEvidence/br/com.br/correios.com.br/rdap.json
...
mkdir -p /var/gits/_dg/preserv-BR/data/_donorEvidence/br/gov.br/sp.gov.br/sorocaba.sp.gov.br && wget https://rdap.registro.br/domain/sorocaba.sp.gov.br > /var/gits/_dg/preserv-BR/data/_donorEvidence/br/gov.br/sp.gov.br/sorocaba.sp.gov.br/rdap.json
(109 rows)
(END)
Por exemplo, os comandos
mkdir -p /var/gits/_dg/preserv-BR/data/_donorEvidence/org/addressforall.org && rdap -v -j addressforall.org > /var/gits/_dg/preserv-BR/data/_donorEvidence/org/addressforall.org/rdap.json
mkdir -p /var/gits/_dg/preserv-BR/data/_donorEvidence/br/gov.br/sp.gov.br/sorocaba.sp.gov.br && wget https://rdap.registro.br/domain/sorocaba.sp.gov.br > /var/gits/_dg/preserv-BR/data/_donorEvidence/br/gov.br/sp.gov.br/sorocaba.sp.gov.br/rdap.json
geram a seguinte estrutura de diretórios:
/var/gits/_dg/preserv-BR/data/_donorEvidence/
├── README.md
├── br
│ ├── gov.br
│ │ └── sp.gov.br
│ │ └── sorocaba.sp.gov.br
│ │ └── rdap.json
└── org
└── addressforall.org
└── rdap.json
Tomar os seguintes cuidados:
rdap
vai retornar uma resposta. Reportar esses casos.IMPORTANTE:
Os valores (anexo de email) presentes na coluna uri
de donatedPack.csv devem ser substituídos pelo respectivo email, conforme Domínios e subdomínios a comprovar.
@0e1, pendente documentar formalmente. Copiei o seu texto acima em https://github.com/digital-guard/preserv/blob/main/docs/pt/evidenceProvenance.md#automa%C3%A7%C3%A3o-assistida-com-make
Por favor revisar e expandir documentação. Demais usuários idem, favor testar e revisar texto se necessário.
No
makefile
de preserv é necessário dar suporte para a criação das pastas de_donorEvidence
(exemplo BR). A informação é gerenciada pelo SQL, de modo que os comandos derdap
,whois
,mkdir
, etc. podem ser gerados por SQL.Não há necessidade de se automatizar, mas de, pelo menos oferecer automação assistida para o processo de atualização das pastas
_donorEvidence
de cada país. Omake
deve fornecer o path completo.Exemplo BR
Todos os itens da coluna "url" da planilha donor https://github.com/digital-guard/preserv-BR/blob/main/data/donor.csv precisam ter confirmação simples de RDAP, ver exemplo de acre.gov.br: https://github.com/digital-guard/preserv-BR/blob/main/data/_donorEvidence/br/acre.gov.br/rdap.json lembrar que é um script de automação: falta incluir no nosso makefile a automação... O PostgreSQL pode gerar essa lista.
Sugestão de implementação
Na base dl03t_main, depois de atualizar com pubLib05pgis-misc, rodar, que são supostamente todos os donors de todos os países
resta a união com todos da coluna
uri
de donatedPack.Resta também a decomposição de 1, 2 e 3 níveis dos domínios, para compor os diretórios e fazer o
> pasta/pasta/etc
conforme regras sintáticas previamente estabelecidas — por exemplo o pastas iniciando no primeiro nível em exóticos tais comorio
e nos 2 primeiros níveis nos demais, tais comogov.br
eorg.br
.Questão do donor não-local
A princípio um domínio sem jurisdição não é válido como "download oficial do país", mas a exemplo do OSM e tantos outros, precisamos gerenciar de forma mais centralizada. Usar Projeto
preserv-INT
para os casos de domínio internacional.Da issue https://github.com/digital-guard/preserv-BR/issues/78
Em https://github.com/digital-guard/preserv/issues/106 ficou estabelecida a nova convenção para o registro das evidências de domínios. Primeiro rascunho no commit 880d170.
Agora temos a pasta data/_donorEvidence com todos os domínios, relativos a doadores e a pacotes doados. Ver exemplos de sp.gov.br e ac.gov.br.