Nova postagem

Encontrar

Anúncio
· Fev. 14

Meilleurs auteurs de la Communauté des Développeurs en 2024

Chers membres de la communauté,

Les premiers mois de l'année sont le moment de faire le bilan de l'année précédente et de récompenser les participants qui ont le plus contribué au développement de notre Communauté. Dans l'annonce original, les utilisateurs avec le plus grand nombre d'articles, le plus des réponses acceptées et le plus d'attention à leur travail ont été marqués. Je suis extrêmement heureuse de constater que parmi les meilleurs il y a aussi des membres actifs de notre Communauté francophone !

Nom du badge Badge Gagnant
Best-Selling Authors 2024

@Iryna Mykhailova 

@Sylvain Guilbaud 

@Guillaume Rongier

@Pierre LaFay 

DC Experts 2024

@Guillaume Rongier

@Sylvain Guilbaud 

@Robert Barbiaux 

DC Opinion Leaders 2024

@Iryna Mykhailova 

@Sylvain Guilbaud 

@Guillaume Rongier

@Pierre LaFay 

Nos plus sincères félicitations à tous les gagnants ! Merci à vous tous pour vos contributions au développement de cette Communauté !

Discussão (0)1
Entre ou crie uma conta para continuar
Pergunta
· Fev. 14

How to get IPM module name from source directory

For some build scripting with the InterSystems Package Manager, I'd like to first uninstall a package with `zpm "uninstall"` and then load it from disk using `zpm "load"`. That way anything that got deleted from the source will also be deleted from IRIS. 

The problem is that `zpm "uninstall"` takes in a module name and I only have the directory path to the package source. Is there a way to get the module name for an installed IPM module given the source path? It's okay  to assume that it has previously been installed from that same directory with `zpm "load"`.

1 Comment
Discussão (1)2
Entre ou crie uma conta para continuar
Pergunta
· Fev. 14

Is there a way to programmatically delete suspended messages?

Is there a way to delete suspended messages rather than using the WebMgmt gui?  

We have over three million in one namespace, and using the gui I can only do 2000 at a time. 

I was thinking of using delete in sql like  Ens.MessageHeader where Status = 'Suspended'

But I don't know if that is a clean way to do it.

15 Comments
Discussão (15)4
Entre ou crie uma conta para continuar
Artigo
· Fev. 14 2min de leitura

New Live URL Link Replacement Tokens within CCR Text Fields: meet <smp>, <smpPrefix> and <homepage>!

CCR users can now take advantage of an enhanced syntax for substituting pre-defined tokens with live URL links within phase-related text fields. In addition to the existing <env> token which automatically updates to reflect the Environment of the relevant CCR Record, CCR now introduces three new keywords: <smp> , <smpPrefix> , and <homepage>.

The new <smp> token automatically replaces itself with the URL of the Management Portal's homepage for the System associated with the CCR Record in the Environment that most recently received changes to the Record. For example, if a CCR Record is under a BASE-TEST-LIVE System and currently in the LIVE Environment, using <smp> within the 'Testing Plan' text field and clicking on the generated link will direct the user to the LIVE Environment's Management Portal, since that is where the Record currently resides.

<smpPrefix>, meanwhile, manifests as the most basic prefix included in every URL for the System's Management Portal. This makes it easy to dynamically link to any specific Management Portal page in the correct environment - you just need to append the correct suffix! For example, to access the SQL tab of the System Explorer you would write <smpPrefix>exp/%25CSP.UI.Portal.SQL.Home.zen.

Finally, the new <homepage> token behaves like the previous two tokens, but it links to the homepage of the CCR Record’s System in the relevant Environment instead of the Management Portal.

See these changes in action in a short demo below!

   

2 Comments
Discussão (2)2
Entre ou crie uma conta para continuar
Artigo
· Fev. 14 5min de leitura

HTTP e HTTPS com API REST

HTTP e HTTPS com API REST

 

Olá,

O protocolo HTTP permite a obtenção de recursos, como documentos HTML. É a base de qualquer troca de dados na Web e um protocolo cliente-servidor, o que significa que as requisições são iniciadas pelo destinatário, geralmente um navegador da Web.

As API REST se beneficiam deste protocolo para trocar mensagens entre cliente e servidor. Isso torna as APIs REST rápidas, leves e flexíveis. As API REST utilizam os verbos HTTP GET, POST, PUT, DELETE e outros para indicar as ações que desejam realizar.

Quando realizamos uma chamada a uma API RESt na verdade o que ocorre é uma chamada HTTP. A API recebe esta chamada e de acordo com o verbo e o caminho solicitados a API executa a ação desejada. No caso da implementação em Iris podemos ver isso claramente na área de definição da URLMap:

XData UrlMap
{
<Routes>
        <Route Url="/cliente" Method="POST" Call="Incluir"  Cors="true"/>
        <Route Url="/cliente/:chave" Method="PUT" Call="Alterar"  Cors="true"/>
        <Route Url="/cliente/:chave" Method="DELETE" Call="Deletar"  Cors="true"/>
        <Route Url="/cliente/:chave" Method="GET" Call="Pesquisar"  Cors="true"/>
        <Route Url="/cliente" Method="GET" Call="Listar"  Cors="true"/>
    </Routes>
}

Veja que temos o caminho (Url) e o verbo (Method) definido para cada chamada (Call). Assim o código que atende a API sabe o que deve realizar.

Quando utilizamos o HTTP temos que ter em mente que os dados que estamos trafegando estão abertos, ou seja, não estão protegidos por nenhum tipo de criptografia ou segurança. Qualquer um que tenha condição de capturar o pacote de dados trafegado poderá ver o que está sendo transferido entre o cliente e o servidor.

Vamos, por exemplo, ver a chamada a uma API REST que utiliza a Basic Authentication. Para isso vamos usar o Postman como cliente, acessando uma API REST no Iris e vamos usar o TCPTrace para fazer o forward dos dados e visualizar o que trafegou.

Primeiro vamos publicar nossa API. Vamos utilizar a mesma API do artigo https://community.intersystems.com/post/using-rest-api-flask-and-iam-intersystems-iris-part-1-rest-api

Basta então seguir as orientações e utilizar o código que o artigo disponibiliza para termos nossa API publicada.

Agora vamos ativar o TCPTrace. Ele pode ser obtido facilmente na web. Voc~e também pode utilizar qualquer outro software que faça o forward de pacotes TCP/IP:

 

Configure o TCPTrace para escutar na porta 8080 e desviar para o servidor que atenderá a requisição na porta 80, que é a porta padrão do protocolo HTTP:

 

 

Abrindo o Postman vamos consumir nossa API, só que vamos mudar a nossa chamada. Não vamos chamar o servidor de destino, e sim o local onde o TCPTrace está escutando as chamadas:

Veja que realizamos um GET e recebemos um STATUS code 200 (sucesso). Usamos autenticação para acessar nossa API e recebemos o pacote de informação como resposta.

Agora vamos ver o TCPTrace:

Veja que tudo que trafegou está visível. As credenciais de autenticação estão no header Authorization como uma string Base64:

 

 

Tudo que trafegou está acessível e visível para quem coletou os dados. Isso pode se tornar potencialmente perigoso quando transferimos dados sensíveis. Mas como podemos resolver o caso? Podemos ativar o HTTPS no nosso web server, o que coloca uma camada de criptografia na nossa comunicação.

A ativação do HTTPS exige a instalação de um certificado SSL no web server. Existem entidades autenticadoras que emitem certificados que são válidos e reconhecidos na web, ou podemos utilizar os chamados certificados auto-assinados. Os certificados auto-assinados não são reconhecidos automaticamente, e nem sempre é uma solução de segurança recomendada, então sempre verifique qual tipo de certificado voc~e deve utilizar.

No nosso caso vamos utilizar um certificado auto-assinado pois ele atende a nossa demanda de segurança, ou seja, criptografar o nosso tráfego.

A instalação do certificado e ativação do HTTP depende do seu web server. Procure a documentação apropriada e veja como criar e instalar o certificado e ativar o HTTPS.

Para este artigo estamos utilizando o IIS que tem disponível uma opção de criação de certificado auto-assinado.

Uma vez ativo o HTTPS vamos testar nosso servidor web. Ele atende as requisições HTTPS na porta padrão 443, ou informando o protocolo “https” na chamada da URL.

Vamos fazer um teste. Abra seu navegador e acesse o web server com o https:

Veja que o navegador informou que sua conexão não é privada. Isso acontece por conta do certificado auto-assinada que não é reconhecido automaticamente, Clique em Avançado:

Agora o navegador completou as informações informando que o certificado não é confiável. Isso acontece pois ele não tem como confirmar se esse certificado é de quem diz ser por ser auto-assinado. Clique em Continue e veja a página que foi chamada:

Até aqui tudo bem. Já temos nosso servidor web respondendo requisições HTTPS. Agora vamos voltar no Postman e vamos realizar uma chamada para a nossa API utilizando o HTTPS. Para isso vamos mudar a chamada no Postman para utilizar o https ao invés do http. Neste mmento vamos direto no servidor, e não no TCPTrace. Lembre de colocar o endereço do seu servidor Web então:

 

Veja que recebemos a mesma resposta que a dada pelo HTTP, só que temos um ícone de informação ao lado do HTTP Status. Clique no ícone e você verá um balão de informações. Ele nos informa a situação do certificado e alguns dados de segurança.

 

Agora vamos mudar a nossa chamada para trafegar pelo TCPTrace. Vamos ativar e configurar nosso aplicativo:

Na sequencia clique em OK e o TCPTrace começará a escutar as requisições:

Volte ao Postman e mude a chamada informando que você agora quer acessar o endereço do TCPTrace na porta 8443 (aquela configurada para escutar as requisições). Clique em Enviar e veja a requisição respondendo:

 

Note que nada mudou em relação a última chamada. Mas agora ela correu pelo TCPTrace. Vamos ver o que foi logado no aplicativo?

 

Não conseguimos visualizar nenhuma informação pois os dados trafegados então criptografados. No meu de opções do TCPTrace clique em View e a seguir em Show NULLS e veja o que o TCPTrace realmente coletou:

 

 

Assim, sem qualquer mudança na nossa API REST, incluímos uma camada de criptografia no tráfego ao utilizar o HTTPS, aumentando o segurança da informação na nossa comunicação.

Até a próxima!

Discussão (0)1
Entre ou crie uma conta para continuar