Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

criar make para RDAP #124

Open
ppKrauss opened this issue Oct 31, 2022 · 6 comments
Open

criar make para RDAP #124

ppKrauss opened this issue Oct 31, 2022 · 6 comments
Assignees
Labels
development SW development documentation Improvements or additions to documentation enhancement New feature or request

Comments

@ppKrauss
Copy link
Contributor

ppKrauss commented Oct 31, 2022

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 de rdap , 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. O make 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

SELECT  p[array_upper(p,1)] as check,
    concat('rdap -j ', line, ' > preserv-',upper(p[array_upper(p,1)]),'/data/_donorEvidence/etc') AS cmd_line
FROM (
  SELECT *,  regexp_split_to_array (line,'\.') as p
  FROM (
    SELECT  DISTINCT str_url_todomain(url) as line FROM optim.donor 
    -- UNION 
    -- SELECT  DISTINCT line
    -- FROM (SELECT info->>'uri' AS uri, str_url_todomain(info->>'uri') as line FROM optim.donated_packtpl) t
    -- WHERE uri != line
  ) t2 WHERE line>''
) t3 ORDER BY 1,2
;

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 como rio e nos 2 primeiros níveis nos demais, tais como gov.br e org.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 digital-guard/preserv-BR#78

Em #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.

@0e1
Copy link
Collaborator

0e1 commented Nov 3, 2022

O commit 159a79c 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;

@0e1
Copy link
Collaborator

0e1 commented Nov 3, 2022

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

0e1 added a commit to digital-guard/preserv-BR that referenced this issue Nov 4, 2022
0e1 added a commit to AddressForAll/pg_pubLib-v1 that referenced this issue Nov 4, 2022
0e1 added a commit that referenced this issue Nov 4, 2022
0e1 added a commit that referenced this issue Nov 4, 2022
0e1 added a commit that referenced this issue Nov 4, 2022
@0e1
Copy link
Collaborator

0e1 commented Nov 4, 2022

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

@0e1
Copy link
Collaborator

0e1 commented Nov 4, 2022

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.

@0e1
Copy link
Collaborator

0e1 commented Nov 4, 2022

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:

  • Se já existir um rdap.json, não atualizá-lo. Se necessário, mover o atual para a estrutura de diretório criada pelo comando fornecido pelo target;
  • Conforme comentário acima, nem sempre o 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.

@ppKrauss
Copy link
Contributor Author

ppKrauss commented Nov 4, 2022

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
development SW development documentation Improvements or additions to documentation enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants