WINOLE/1007 Erro no suporte a canais seguros msxml6.dll

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

WINOLE/1007 Erro no suporte a canais seguros msxml6.dll

Mensagem por ANDRIL »

O problema começou após o site ser migrado para outro servidor.

Se uso oHTTP := win_OleCreateObject( "Microsoft.XMLHTTP" )
Error WINOLE/1007 Falha no download do recurso especificado.
(0x800C0008): msxml3.dll (DOS Error -2147352567)
Se uso oHTTP := win_OleCreateObject( "MSXML2.ServerXMLHTTP.6.0" ) aqui pode ser 3.0, 5.0, 7.0 nenhum funciona
Error WINOLE/1007 Erro no suporte a canais seguros
(0x80072F7D): msxml6.dll (DOS Error -2147352567)
Código completo

Código: Selecionar todos

cUrl="https://www.hostmach.com.br"

oHTTP := win_OleCreateObject( "MSXML2.ServerXMLHTTP.6.0" )	   
//oHTTP := win_OleCreateObject( "Microsoft.XMLHTTP" )	   

oHttp:Open("GET", alltrim(cUrl), .f. )
//oHTTP:SetRequestHeader( "Content-Type", "application/x-www-form-urlencoded" )    
//oHTTP:WaitForResponse( 10000 )
oHTTP:send()
cRet  := oHttp:ResponseText
oHTTP:=Nil
Baixei o curl.exe para Windows só para testar e usando esta linha de comando curl.exe hostmach.com.br
301 Moved Permanently
usando curl.exe https://hostmach.com.br
curl: (60) SSL certificate problem: unable to get local issuer certificate
Estranho que outros sites com HTTPS o código acima funciona normalmente, só com alguns que dá este B.O.
Alguma ideia do que possa ser?

Usando Harbour 3.2.0dev (r1502201040)
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

WINOLE/1007 Erro no suporte a canais seguros msxml6.dll

Mensagem por JoséQuintas »

Minha primeira idéia foi sobre TLS e Windows 7.
Mas a mensagem sobre certificado deixa na dúvida.
Pode ser que a conexão precise de certificado.

Uma coisa que li é que existe server.XMLHTTP e XMLHTTP.
Um é pra conexão mais rigorosa com servidor e outro pega mais leve.
E tem também a opção que o Jairo passou há pouco tempo, de usar uma função local do Windows.
É testar as variações.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

WINOLE/1007 Erro no suporte a canais seguros msxml6.dll

Mensagem por ANDRIL »

JoséQuintas escreveu:Minha primeira idéia foi sobre TLS e Windows 7.
Meu Win7 esta com SP1, TLS1.2 ativado tanto que emito normalmente NFE nele.
JoséQuintas escreveu:Pode ser que a conexão precise de certificado
Nesse caso, como indicaria o certificado usando win_OleCreateObject dentro do código que postei.
ANDRIL escreveu:Uma coisa que li é que existe server.XMLHTTP e XMLHTTP.
Já tentei Microsoft.XMLHTTP, MSXML2.ServerXMLHTTP.3.0, MSXML2.ServerXMLHTTP.5.0, MSXML2.ServerXMLHTTP.6.0, MSXML2.XMLHTTP e nenhum funciona.

Como falei, antes de mudarem o site para outro servidor, tava normal. Lá na provedor de hospedagem eles dizem que esta tudo certo. Agora complicou por que sempre estou enviando e recebendo dados via API. Detalhes, consumo outras APIs de outros sites com HTTPS normalmente, é só com o meu por enquanto.

Notei que o dominio ficou com um redirecionamento 301 Moved Permanently e desconfio que seja este o problema.
Será que é alguma limitação do win_OleCreateObject() do harbour?
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

WINOLE/1007 Erro no suporte a canais seguros msxml6.dll

Mensagem por JoséQuintas »

É chute...
Conexão segura precisa confirmação das duas pontas da conexão.
E W7 não deve atualizar mais certificado nenhum.
Veja se ao abrir o site mostra algum tipo de certificado, principalmente de autoridade.

Tem como informar certificado, mas não deve ser qualquer um.
Em todo caso:

Código: Selecionar todos

oServer := win_OleCreateObject( "MSXML2.ServerXMLHTTP.6.0" )
oServer:setOption( 3, "CURRENT_USER\MY\" + ::cCertificado )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

WINOLE/1007 Erro no suporte a canais seguros msxml6.dll

Mensagem por rochinha »

Amiguinhos,

ANDRIL

No Painel de Controle/Opções de Internet:

- na aba Segurança desabilite Habilitar Modo Protegido
- na aba Privacidade desabilite Ativar Bloqueador de Pop-ups.
- na aba Conteúdo clique em Limpar estado SSL

Tente novamente.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

WINOLE/1007 Erro no suporte a canais seguros msxml6.dll

Mensagem por ANDRIL »

JoséQuintas escreveu:Tem como informar certificado, mas não deve ser qualquer um
Então não sei qual indicar, alias, nem como obte-lo para colocar na função para usar com oHttp:setOption(3, cCertificado).
Vi em outra mensagem sua que teria a opção de ignorar erros do certificado, então tentei com oHttp:setOption( 2, 13056 ) e não deu diferença alguma.

rochinha escreveu:Amiguinhos,

ANDRIL

No Painel de Controle/Opções de Internet:

- na aba Segurança desabilite Habilitar Modo Protegido
- na aba Privacidade desabilite Ativar Bloqueador de Pop-ups.
- na aba Conteúdo clique em Limpar estado SSL

Tente novamente.
Rochinha fiz tudo e não deu diferença também.

A verdade é que o problema foi ocasionado pelo provedor do site após migrar o site para outro servidor, apartir dai não funcionou mais. Testei com Win7 que emite NFE e em outros também, testei com Win10 e não funciona da sempre erro de canais seguros. Esta empresa de hospedagem já me aprontou algumas e sempre tive que dar um jeito por que nunca é da parte deles, detalhe que sempre acontece após uma atualização ou migração lá. Os outros problemas me lasquei mas consegui contornar, mas agora esse não. Já li, reli, vi em tudo que é site, testei todas as dicas e NADA. Pra mim está claro, NÃO é minha máquina o problema.

Tô pensando seriamente em usar o CURL.EXE mas é grande, +-6 megas, para mandar com o instalador. Mas se for o jeito vou ter que fazer uma gambiarra, pois com ele consigo acessar aqui do meu PC.

Acho que vou ter que contratar uma outra hospedagem com HTTPS apenas para confirmar a minha tese que o problema é com ELES.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

WINOLE/1007 Erro no suporte a canais seguros msxml6.dll

Mensagem por Jairo Maia »

Olá Pessoal,

ANDRIL, pode ser "nada a ver", mas uma pergunta: Você tem o CAPICOM instalado nessas máquinas? Se sim, então sem idéia também, e concordo que com certeza seja algo do lado do servidor.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

WINOLE/1007 Erro no suporte a canais seguros msxml6.dll

Mensagem por ANDRIL »

Sim Jairo, já usava o ACBRMonitor com Capicom.
Pasta de C:\Windows\System32

27/07/2015 09:15 511.328 capicom.dll
04/03/2014 06:17 48.128 capiprovider.dll
13/07/2009 22:15 19.968 capisp.dll
3 arquivo(s) 579.424 bytes
0 pasta(s) 295.378.644.992 bytes disponíveis
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

WINOLE/1007 Erro no suporte a canais seguros msxml6.dll

Mensagem por ANDRIL »

Jairo testei também com o código que voce postou no topico https://pctoledo.org/forum/viewto ... 15#p160796 e nada feito. Achei que por utilizar uma outra DLL ( UrlMon.dll ) para fazer o download poderia dar certo.
Não deu certo usando a Url:= "https://hostmach.com.br" porem com outras baixou normalmente, exemplo, Url:="https://hostgator.com.br"

Código: Selecionar todos

#include "hbdyn.ch"
cls
cArqRet := "RETORNO.TXT"

/*
Link a acessar
*/
cLink := "https://hostmach.com.br"

if BaixarLogo( cLink, cArqRet )=.f.
	? "nada foi baixado!"
endif
QUIT

Func BaixarLogo( cLink, cArqRet )
 Local nHandleDLL, nStatus

 nHandleDLL:=HB_LibLoad("UrlMon.dll")
 
 nStatus:=HB_DynCall( { "URLDownloadToFileA", nHandleDLL, HB_DYN_CALLCONV_STDCALL}, 0, clink, cArqRet, 0, 0 )

 hb_LibFree( nHandleDLL )
 
Return ( nStatus = 0 )
O que mais me preocupa é que isso se torne padrão nos servidores da internet, vamos ter sérios problemas com outras APIs também. O provedor tinha informado que a mudança de servidor seria necessário para aumentar a segurança do CPANEL e algo do Linux. Se não descobrirmos algo agora pode ocorrer de um dia para outro parar tudo e ficarmos sem opção, já que provavelmente depende deles uma solução.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

WINOLE/1007 Erro no suporte a canais seguros msxml6.dll

Mensagem por rochinha »

Amiguinhos,

ANDRIL
Você diz que aconteceu depois de migrarem. Provavelmente o certificado HTTPS para a sua hospedagem não foi ativado ou reinstalado no novo caminho.

Na migração também pode ter ocorrido de que os direitos de pastas foram modificados para restrições de escrita\leitura.

Outro tipo de restrição que pode ser aplicado a pasta esta relacionados aos MIMES. Geralmente é possivelrestringir que certos arquivos possam ser manipulados como .GIF/.JPG/.CGI etc. Se o HTACCESS de seu site possuir estas restrições alguns arquivos não poderão ser baixados, mesmo que possam ser visualizados online.

Se antes funcionava sem você se preocupar de usar certificado em sua máquina o problema realmente esta na hospedagem.

- Então verificar se restrições MIME existam no HTACCESS da raiz do site ou em pastas.
- Renovar ou re-instalar o certificado HTTPS do seu site.
- Tente usar HTTP no lugar de HTTPS em suas URLs.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

WINOLE/1007 Erro no suporte a canais seguros msxml6.dll

Mensagem por Jairo Maia »

ANDRIL escreveu:Se não descobrirmos algo agora pode ocorrer de um dia para outro parar tudo e ficarmos sem opção
Sim ANDRIL, mas o que exatamente você precisa baixar desse site? São arquivos para que o sistema baixe automaticamente, é isso?

É que penso que você poderia tentar usando uma das classes TIP (de acordo com o que você precisa), já que elas fazem login com usuário e senha para acessar os sites. Já tentou?

OBS: Claro, se as dicas do Rochinha resolver então tudo bem, mas se não resolver, você poderia usar a classe TIP prá ver se funciona.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

WINOLE/1007 Erro no suporte a canais seguros msxml6.dll

Mensagem por ANDRIL »

rochinha escreveu:Você diz que aconteceu depois de migrarem. Provavelmente o certificado HTTPS para a sua hospedagem não foi ativado ou reinstalado no novo caminho.
Foi instalado e esta funcionando normal verifiquei na ferramenta do próprio site, tudo ok.
rochinha escreveu:Na migração também pode ter ocorrido de que os direitos de pastas foram modificados para restrições de escrita\leitura.
Não é o caso. A pasta onde esta o arquivo da API é somente leitura para segurança mas retorna normalmente os dados.
rochinha escreveu:Outro tipo de restrição que pode ser aplicado a pasta esta relacionados aos MIMES. Geralmente é possivelrestringir que certos arquivos possam ser manipulados como .GIF/.JPG/.CGI etc. Se o HTACCESS de seu site possuir estas restrições alguns arquivos não poderão ser baixados, mesmo que possam ser visualizados online.
O tipo .PHP é permitido normalmente. o HTACCESS da raiz, não possui nenhuma restrição. Apenas direciona a porta 80 para o HTTPS.
rochinha escreveu:Tente usar HTTP no lugar de HTTPS em suas URLs.
Já tentei e dá erro também, visto que o domínio esta sob o HTTPS ativado.
Jairo Maia escreveu:Sim ANDRIL, mas o que exatamente você precisa baixar desse site? São arquivos para que o sistema baixe automaticamente, é isso?
São respostas processadas pelos arquivos php, coisa simples.
Jairo Maia escreveu:É que penso que você poderia tentar usando uma das classes TIP (de acordo com o que você precisa), já que elas fazem login com usuário e senha para acessar os sites. Já tentou?
Jairo já usei tantas coisas que nem sei sobre essas classes TIP. Creio que usei mas elas também falham com o HTTPS pq no meu Harbour não tem as libs linkadas ou algo assim, dai partir para uso do oHTTP := win_OleCreateObject( "MSXML2.ServerXMLHTTP.6.0" ).
Se voce tiver algum exemplo dessa classe TIP para que eu compare aqui, fico agradecido.

Achei estanho que outro sistema em VB.NET de outra empresa esta conseguindo acessar outro arquivo no mesmo domínio, assim como acessava também quando era no servidor antigo, me deixou ainda mais intrigado.

Contratei outra hospedagem para fazer testes, ainda esta em processo a instalação do SSL assim que tiver ok faço novos testes.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

WINOLE/1007 Erro no suporte a canais seguros msxml6.dll

Mensagem por clodoaldomonteiro »

Pra contribuir, um exemplo que consegui na internet, ou foi aqui, não sei, hehe.

Código: Selecionar todos

   //*****************************************************************
   //https://forums.fivetechsupport.com/viewtopic.php?f=3&t=37971
   //SendPostToUrl( "https://xxxx.xxxx.com/aaa/bbbb", cJson, cContentTpe, cAuthorization  )
   //oOle:ResponseBody ou oOle:responseText - String, Retorna o HTML da pábina consultada
   //oOle:status - Numeric, Retorna o Status atual. 200 = OK
   //oOle:statusText - String, Retorna o texto de Status
   //Enviando com Params: oOle:send("var1=" + str1 + "&var2=" + str2 + "&var3=" + str3)
   //*****************************************************************
Function SendPostToUrl( cUrl, cParams, cContentType, cAuthorization )
   Local oOle, cRet := '' //, cRet2
   cContentType   := "application/x-www-form-urlencoded"
   cAuthorization := ""
   Try
      oOle := CreateObject( 'MSXML2.XMLHTTP' )
   Catch
      oOle := CreateObject( 'Microsoft.XMLHTTP' )
   End

   oOle:Open( 'POST', cUrl, .f. )

   oOle:SetRequestHeader( "Content-Type",cContentType)
   if !empty(cAuthorization)
      oOle:SetRequestHeader( "Authorization",cAuthorization)
   end if

   Try
      oOle:Send( cParams )
      //SysRefresh()

      #ifdef __XHARBOUR__
         cRet := oOle:ResponseBody
      #else
         cRet:=""
         hb_jsonDecode(oOle:ResponseBody, @cRet)
      #endif
   Catch

   End
   //cRet2 := ""
   //hb_jsonDecode(oOle:ResponseBody, @cRet2)
   //ADOStringGrava( cRet2 )

   oOle := NIL

   Return cRet
No Try/Catch vc pode ir colocando outros objetos de conexão, até acertar, pois pode ser q uma versão do S.O. tenha diferenças com outras.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

WINOLE/1007 Erro no suporte a canais seguros msxml6.dll

Mensagem por JoséQuintas »

Andei lendo estes dias sobre isso de não indicar versão XMLHTTP, XMLHTTP.6.0
Eu pensava que o Windows selecionava automaticamente a melhor delas, mas não é assim.

Ao mesmo tempo, parece que tem versão que faz coisa que a outra não faz.

Digamos assim: agora elas seguem um padrão, mas antigamente era fora de padrão.
Só que o servidor aonde queremos conectar pode estar usando a versão diferente.
Acho que até por isso a Microsoft ainda mantém várias versões: 2, 3, 4, e 6, e a versão 5 distribuída com Office.

NÃO SEI se faria diferença indicar versão diferente nisso.

ALÉM DISSO, tem a serverXML e a outra, parece que são semelhantes, mas não equivalentes, depende do tipo de conexão.

Em NET, ou CURL, é obrigatório indicar os detalhes de conexão, não é automático.

No Harbour tem as LIBs CURL e OPENSSL, mas elas não vém prontas no Harbour, e também o Harbour não tem tudo que precisa pra gerar essas LIBs, vai precisar de downloads adicionais antes de gerar as LIBs, e também vai depender das DLLs instaladas.
Caso gere com elas, OBRIGATORIAMENTE vai ter que distribuir as DLLs junto com o aplicativo, porque mesmo que não use, pode gerar erro.
Isso é mais usado em Linux, onde baixar adicionais é mais "automático" que no Windows.
No Windows às vezes precisa "caçar" a versão correta desses opcionais.

De qualquer forma, é ficar testando com esse servidor, pra ver se algo funciona.

Sei lá se não é mais prático trocar de provedor.
Depende da finalidade.
Ou.... salvar numa base MySQL, dependendo do tipo de arquivo, finalidade de uso, etc.


Eu tenho esse problema com ASP.
Segundo andei lendo, o ASP não aceita isso, e mesmo que use ServerXMLHTTP com isso, o ASP impede o uso.
Não parece ser o seu caso, a não ser que seja diferente entre HARBOUR e XHARBOUR, ou sei lá o que.
Tudo depende de testes.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

WINOLE/1007 Erro no suporte a canais seguros msxml6.dll

Mensagem por ANDRIL »

clodoaldomonteiro escreveu:Pra contribuir, um exemplo que consegui na internet, ou foi aqui, não sei, hehe.
Já utilizo de forma semelhante ao exemplo, mas não é este o problema.

José, aqui no tópico já relatei as variações de testes que fiz sem sucesso.

MAS ENFIM, COMO HAVIA DITO ANTES contratei outra hospedagem e ativei o SSL (certificado digital) para exibir o cadeado no site, refiz o teste básico que já usava e PRONTO, FUNCIONOU! Funcionou como sempre funcionava antes com:
oHTTP := win_OleCreateObject( "MSXML2.ServerXMLHTTP.6.0" )
oHTTP := win_OleCreateObject( "MSXML2.ServerXMLHTTP.5.0" )
oHTTP := win_OleCreateObject( "MSXML2.ServerXMLHTTP.3.0" )
oHTTP := win_OleCreateObject("MSXML2.ServerXMLHTTP")
oHTTP := win_OleCreateObject("MSXML2.XMLHTTP")
oHTTP := win_OleCreateObject( "Microsoft.XMLHTTP" )
Comparei os certificados entre um provedor e outro e são de certificadoras diferentes, não sei se tem algo haver.
No provedor que funcionou está:
Hierarquia
USERTrust RSA Certfication Authority
--Sectigo RSA Domain Validation Secure Server CA
No provedor que não funciona está:
Hierarquia
ISRG Root X1
--R3
Embora tenha provado que o problema é lá no provedor, sei que eles não vão assumir, por fim, vou ter que arrumar um jeito alternativo para consultar este domínio específico creio que usando o utilitário curl.exe mesmo.

Se alguém passar por este problema seria bom ir colocando aqui neste tópico os certificados para comparação.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Responder