Handle

Handle System

Handle [1] é um sistema distribuído de grande alcance, voltado para identificação persistente de objetos digitais e outros recursos na Web. Este sistema independente de localização e foi desenvolvido para aplicações no domínio das bibliotecas digitais. Ele foi concebido para assinalar, administrar e resolver identificadores persistentes conhecidos como handles, que podem ser usados como Uniform Resource Names (URN).

Os handles são identificadores exclusivos e persistentes para recursos da Internet, com um registro central para resolver URLs para o local atual. Apesar de imutáveis, os handles permitem que as informações de localização e acesso aos objetos sejam alteradas. Cada Identificador está associado a um único recurso e a organização que criou ou mantém o recurso. O Sistema Handle também sustenta a infraestrutura técnica do DOI, que é um tipo especial de handle.

PREFIX DO DOI OU HANDLE

Na geração automática do DOI ou Handle pelo Dataverse pode-se utilizar um sufixo para identificar o servidor ou repositórios com a atribuição de um sufixo do identificador persistente.

Como exemplo, o prefixo do Handle 20.500.12401 quando gerado o sufixo seria apresentado como https://hdl.handle.net/20.500.12401/dv/59, sendo o 59 o número de registro. Com a inserção do sufixo, o identificador ficaria https://hdl.handle.net/20.500.12401/dv/59, sendo o “dv/” o identificador do repositório.

Pode-se utilizar outros sufixos como:

  • “dv.”

  • “dv_”

  • Entre outros

Para definir o sufixo no Dataverse, deve-se utilizar via bash o comando abaixo:

curl -X PUT -d 'dv/' localhost:8080/api/admin/settings/:Shoulder

INSTALAÇÃO DO HANDLE SERVER

O instalador do Handle está disponível em http://handle.net/download_hnr.html. Recomenda-se utilizar sempre sua última versão. Para instalar no servidor principal, crie a pasta hs na raiz e dentro desta baixe e extraia o zip do handle.net através do link no site https://www.handle.net/download_hnr.html

mkdir /hs cd /hs wget https://www.handle.net/hnr-source/handle-9.0.3-distribution.tar.gz tar -xvzf handle-9.0.3-distribution.tar.gz

Em seguida, rode o script de instalação e siga os passos que serão descritos na seção abaixo caso pretenda instalar o handle.net como servidor primário ou na seção (HANDLE COMO SERVIDOR SECUNDÁRIO) caso pretenda instalar como servidor secundário (mirror).

/hs/handle-9.0.3/bin/hdl-setup-server /hs/svr_1

O Handle como servidor primário é necessário quando não existe outra instalação do prefixo, sendo esse o responsável pelo banco de dados das resoluções dos identificadores persistentes. Caso esteja instalando mais de um servidor de Handle, esse deve ser o secundário.

HANDLE COMO SERVIDOR PRIMÁRIO

Will this be a "primary" server (ie, not a mirror of another server)?(y/n) [y]: YWill this be a dual-stack server (accessible on both IPv6 and IPv4)?(y/n) [n]: NThrough what network-accessible IP address should clients connect to this server? SEU IPIf different, enter the IP address to which the server should bind. [enter]Enter the (TCP/UDP) port number this server will listen to [2641]: [enter]What port number will the HTTP interface be listening to? [8000]: [enter]Would you like to log all accesses to this server?(y/n) [y]: [enter]("N" (Never), "M" (Monthly), "W" (Weekly), or "D" (Daily))? [Monthly] : [enter]Enter the version/serial number of this site [1]: [enter]Please enter a short description of this server/site: Breve descrição do seu servidorPlease enter the name of your organization: Nome da organizaçãoPlease enter the name of a contact person for cc (optional) [(none)]: [enter]Please enter the telephone number of c or of cc (optional) [(none)]: [enter]Please enter the email address of c or of cc: Insira um email no formato [email protected]Do you need to disable UDP services?(y/n) [n]: [enter]Would you like to encrypt your private key?(y/n) [y]:[enter] Insira a senha do seu servidor primárioWould you like to encrypt your private key?(y/n) [y]:[enter] Insira novamente a senha do seu servidor primário

HANDLE COMO SERVIDOR SECUNDÁRIO

Para instalar o Handle como servidor secundário, apontando para um servidor primário já existente e configurado:

Will this be a "primary" server (ie, not a mirror of another server)?(y/n) [y]: NWill this be a dual-stack server (accessible on both IPv6 and IPv4)?(y/n) [n]: NThrough what network-accessible IP address should clients connect to this server? SEU IPIf different, enter the IP address to which the server should bind. [enter]Enter the (TCP/UDP) port number this server will listen to [2641]: [enter]What port number will the HTTP interface be listening to? [8000]: [enter]Would you like to log all accesses to this server?(y/n) [y]: [enter]("N" (Never), "M" (Monthly), "W" (Weekly), or "D" (Daily))? [Monthly] : [enter]Enter the address of a primary server: IP DO SERVIDOR PRIMÁRIOEnter the port number of the same primary server [2641]:[enter]Enter the version/serial number of this site [1]: [enter]Please enter a short description of this server/site: Breve descrição do seu servidorPlease enter the name of your organization: Nome da organizaçãoPlease enter the name of a contact person for cc (optional) [(none)]: [enter]Please enter the telephone number of c or of cc (optional) [(none)]: [enter]Please enter the email address of c or of cc: Insira um email no formato [email protected]Do you need to disable UDP services?(y/n) [n]: [enter]Would you like to encrypt your private key?(y/n) [y]: N Não encriptar a chave privada do servidor secundário, pois quando o dataverse tentar acessar utilizando a senha do servidor primário ocorrerá erros.Would you like to encrypt your private key?(y/n) [y]: N

CONCLUINDO A INSTALAÇÃO DO HANDLE

Após instalar o servidor primário, é necessário re-encriptar o arquivo admpriv.bin usando o app hdl-keyutil. Para isso, utiliza-se o seguinte comando.

/hs/handle-9.0.3/bin/hdl-keyutil /hs/svr_1/admpriv.bin

Ao iniciar o script basta selecionar a opção de encriptar a chave utilizando a encriptação da versão 6 do handle. Isso evitará erros futuros com o dataverse

Se instalar um servidor secundário, após concluir a instalação, é necessário copiar para a pasta onde o mesmo foi instalado o arquivo admpriv.bin do servidor primário já re-encriptado pelo script mencionado acima.

REQUISITANDO UM PREFIXO

Acesse o site http://hdl.handle.net/20.1000/111 e registre sua organização como uma organização provedora. Em seguida, acesse o site: http://www.handle.net/prefix_request.html e faça o upload do arquivo “sitebndl.zip” que foi criado dentro da pasta onde foi instalado seu servidor primário.

Após receber por e-mail seu prefixo, edite o arquivo config.dct do servidor primário e do secundário (caso tenha criado um), substituindo todas as entradas onde esteja escrito YOUR_PREFIX pelo prefixo que recebeu por e-mail.

INSTALANDO O HANDLE NO DATAVERSE

Os parâmetros utilizados no JVM e no Config do Dataverse são:

JVM:

  • dataverse.handlenet.admcredfile (chave privada de administração)

  • dataverse.handlenet.admprivphrase (senha utilizada na encriptação da chave)

  • dataverse.handlenet.index (index do handle, valor padrão é 300)

Database:

  • :Protocol

  • :Authority

  • :IdentifierGenerationStyle (optional)

  • :DataFilePIDFormat (optional)

Configurando o Dataverse, as opções são excutadas por meio de requisições http através da linha de comando. Para esse fim utiliza-se o CURL

Para listar as configurações atuais, execute:

# curl localhost:8080/api/admin/settings

Primeiro é necessário informar o Dataverse que será utilizado handle em vez do DOI que vem por padrão. Para isso, edita-se o valor de : “Protocol” para hdl.

curl -X PUT -d 'hdl' localhost:8080/api/admin/settings/:Protocol

Em seguida, é necessário informar o Dataverse o prefixo handle através da configuração :Authority

# curl -X PUT -d '20.500.11959' localhost:8080/api/admin/settings/:Authority

Configurar o estilo de geração do identificador, uma vez que o HANDLE funciona com números e o dataverse vem configurado de modo a gerar uma string de caracteres aleatórios para o doi, deve-se mudar a opção :IdentifierGenerationStyle com o comando:

# curl -X PUT -d 'sequentialNumber' localhost:8080/api/admin/settings/:IdentifierGenerationStyle

Após, baixe o arquivo createsequence.sql no link http://guides.dataverse.org/en/latest/_downloads/createsequence.sql e através do usuário postgres execute-o na tabela dvndb, para gerar o contador da sequência na base de dados.

CONFIGURANDO A JVM

Há dois modos de configurar as opções da JVM: via linha de comando através ou editando o arquivo domain.xml. A maior diferença entre um e outro é que editar o arquivo requer que o servidor seja reiniciado para que as alterações façam efeito. Por tanto, é preferível configurar via linha de comando. Caso seja necessário, o arquivo domain.xml fica no seguinte caminho:

/usr/local/glassfish4/glassfish/domains/domain1/config/domain.xml

Para acessar o aplicativo e configurar via linha de comando, é necessário estar no diretório /bin do servidor.

cd /usr/local/glassfish4/glassfish/bin

Dentro do diretório, é só executar o app asadmin passando os comandos como parâmetros.

Para listas as configurações atuais execute:

./asadmin list-jvm-options

Caso o sistema peça por senha, ela se encontra no arquivo local-password dentro da pasta glassfish/domains/domain1/config

Para alterar configurações já definidas, se faz necessário deletar a versão atual e depois cria-la novamente através dos comandos delete-jvm-options e create-jvm-options.

Como o dataverse vem configurado para doi, inicialmente não há a necessidade de substituir (deletar e criar novamente) sendo possível, somente criar as configurações do HANDLE

./asadmin create-jvm-options '- Ddataverse.handlenet.admcredfile=/hs/svr_1/admpriv.bin ./asadmin create-jvm-options '-Ddataverse.handlenet.admprivphrase=SENHA DO ADMPRIV AQUI' ./asadmin create-jvm-options '-Ddataverse.handlenet.index=300'

TESTE DO HANDLE

O Handle pode ser testado por linha de comando diretamente do servidor, isso é possível com a execução de uma arquivo de lote processado via hdl-batch

Para testar, crie uma pasta no servidor dentro de /hs com o nome /hs/cmd

mkdir /hs/cmd

Acesse este diretório:

cd /hs/cmd

Dentro dela crie o arquivo para ser processado como no exemplo abaixo (file: cmd.handle):

AUTHENTICATE PUBKEY:300:0.NA/

/hs/svr_1/admpriv.bin|

HOME:2641:TCP

0.NA/

CREATE/pgtest

100 HS_ADMIN 86400 1110 ADMIN 200:111111111111:0.NA/

3 URL 86400 1110 UTF8 https://

7 EMAIL 86400 1110 UTF8 [email protected]

9 DESC 86400 1110 UTF8 Repositório de dados de pesquisa RNP

O primeiro bloco realiza a autenticação no servidor, a segunda faz a criação do registro Handle. Exemplos de valores atribuídos

  • 20.500.12401

  • : (senha utilizada para criar o servidor Handle)

  • ex: 138.121.71.160

    • IP do servidor local do Handle

Para executar o comando digite:

/hs/handle-9.0.1/bin/hdl-genericbatch cmd.handle

Resultado do comando batch(cmd):
process started ...
Batch process prints log on stdout ...
Start Time: Wed Feb 19 21:26:50 BRT 2020
Saving bootstrap handles to: /root/.handle/bootstrap_handles
==>SUCCESS[2]: home/unhome:0.NA/20.500.11959
==>SUCCESS[3]: create:20.500.11959/pgtest
==>FAILURE[4]: create:20.500.11959/FK2/7: Error(101): HANDLE ALREADY EXISTS
Successes/Total Entries: 1/2 Batch File Lines: 3
Finish Time: Wed Feb 19 21:26:57 BRT 2020
This batch took 6 seconds to complete at an average speed of 0.29784065524944153 operations/second ​