oHTTP:= TIpClientHttp():new(cURL) NÃO ESTÁ BAIXANDO ARQUIVO

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

Moderador: Moderadores

Avatar do usuário
Linguagemclipper
Usuário Nível 3
Usuário Nível 3
Mensagens: 240
Registrado em: 16 Abr 2016 17:33
Localização: Maceió/AL
Contato:

oHTTP:= TIpClientHttp():new(cURL) NÃO ESTÁ BAIXANDO ARQUIVO

Mensagem por Linguagemclipper »

Não sei porque o meu código está retornando uma página web do tipo 301 Moved Permanently - The document has been permanently moved, enquanto que, deveria baixar um arquivo de texto de 1 linha.

Código: Selecionar todos

oHTTP:= TIpClientHttp():new( cURL )
A princípio protegí a pasta com usuário e senha e construí a URL como neste exemplo:
cURL := "http://usuario:senha@meusitedaweb.com.b ... cencas.txt"

Depois fui testar normal no raíz sem proteção de pastas nem usuário e senha:
cURL := "http://meusitedaweb.com.br/licencas.txt"

Entretanto, o problema continua.
Estou mexendo no código original para poder tornar público, dados do servidor não são reais.

Código: Selecionar todos

IF EMPTY(UG->CHAVE)
   IF oHTTP:OPEN()
      cLICENCAS := oHttp:readAll()
      oHTTP:CLOSE()
	  Memowrit( "licencas.txt", cLICENCAS ) 
      nLICENCAS := MLCOUNT(cLICENCAS)
      FOR nX=1 TO nLICENCAS
          cLICENCA := MEMOLINE(cLICENCAS,,nX)
	      // CNPJ 14     | DATA 8
	      //99999999999999CC/CC/CC
	      cCNPJ := LEFT(cLICENCA,14)
	      IF cCNPJ = UG->CNPJ
             cEXPIRA := RIGHT(cLICENCA,6)
	 	     dEXPIRA := CTOD(cEXPIRA)
		     IF DATE() >= dEXPIRA
		        lLICENCA := .T.
				cCHAVE := cCNPJ+DTOS(dEXPIRA)
	            // CRIPTOGRAFA	  
	            UG->( LOCKREG())
                UG->CHAVE := HB_CRYPT(cCHAVE, xSENHA)  // CHAVE, C, 22
                UG->( DBUNLOCK())
                UG->( DBCOMMIT())
				ALERT("LICENÇA VÁLIDA ATÉ: "+DTOC(dEXPIRA) )
	         ENDIF
		     EXIT
	      ENDIF
      NEXT	  
	  IF !lLICENCA
	     ALERT("LICENÇA INEXISTENTE!")
		 QUIT
	  ENDIF
   ELSE
      ALERT("Erro de conexão:", oHttp:lastErrorMessage())
	  ALERT("NÃO FOI POSSÍVEL VALIDAR ESTA LICENÇA")
   ENDIF
ELSE
   cCHAVE  := HB_DECRYPT(UG->CHAVE, xSENHA)
   cEXPIRA := RIGHT(cCHAVE,8) // YYYYMMDD
   cDIA    := RIGHT(cEXPIRA,2)
   cMES    := SUBSTR(cEXPIRA,5,2)
   cANO    := SUBSTR(cEXPIRA,3,2)
   dEXPIRA := CTOD(cDIA+"/"+cMES+"/"+cANO)
   IF DATE() >= dEXPIRA
	  lLICENCA := .T.
   ELSE
      ALERT("SUA LICENÇA EXPIROU EM: "+DTOC(dEXPIRA) )
	  QUIT
   ENDIF
ENDIF    
No DBF tem um campo chave onde eu gravaria uma string com o CNPJ+DATA de expiração da licença de forma criptografada.

O arquivo de texto eu quero deixar numa pasta protegida com usuário e senha sem criptografia para poder controlar de forma remota facilmente. Entendo que não preciso criptografar este arquivo porque estará numa pasta protegida na web que ninguém terá acesso sem as credenciais. O arquivo deveria ter 22 caracteres em cada linha com o CNPJ+DATA das licenças.

Resolví gravar o arquivo para ver seu conteúdo, o arquivo que baixa é esse:
<!DOCTYPE html>
<html style="height:100%">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" >
<title> 301 Moved Permanently
</title></head>
<body style="color: #444; margin:0;font: normal 14px/20px Arial, Helvetica, sans-serif; height:100%; background-color: #fff;">
<div style="height:auto; min-height:100%; "> <div style="text-align: center; width:800px; margin-left: -400px; position:absolute; top: 30%; left:50%;">
<h1 style="margin:0; font-size:150px; line-height:150px; font-weight:bold;">301</h1>
<h2 style="margin-top:20px;font-size: 30px;">Moved Permanently
</h2>
<p>The document has been permanently moved.</p>
</div></div></body></html>
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

oHTTP:= TIpClientHttp():new(cURL) NÃO ESTÁ BAIXANDO ARQUIVO

Mensagem por ANDRIL »

Testando pelo navegador exibe o arquivo TXT solicitado?
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Linguagemclipper
Usuário Nível 3
Usuário Nível 3
Mensagens: 240
Registrado em: 16 Abr 2016 17:33
Localização: Maceió/AL
Contato:

oHTTP:= TIpClientHttp():new(cURL) NÃO ESTÁ BAIXANDO ARQUIVO

Mensagem por Linguagemclipper »

Aparece sim!
Pelo navegador aparece tanto no raíz como na pasta protegida colocando as credenciais (usuário e senha), tudo normal.
Só uma obsevação: meu site é https, mas se colocar http no navegador acessa normalmente também. Existe outra função para usar com https? Se eu usar https dá erro com essa função.
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

oHTTP:= TIpClientHttp():new(cURL) NÃO ESTÁ BAIXANDO ARQUIVO

Mensagem por ANDRIL »

Creio que TIpClienteHttp não trabalha nativamente com https. Tempos atrás também passei por isso.
Pelo que sei tem que ativar na compilação o SSL
hbssl.hbc
hbtip.hbc
E ter obrigatoriamente as DLLS (libeay32.dll e ssleay32.dll) no diretório do seu EXE.

Não cheguei a usar, já que o site não usava https. Trecho do código fonte:

Código: Selecionar todos

if at("https://",cUrl)=0
	cUrl=if(at("http://",cUrl)=0,"http://"+cUrl,cUrl)
else
	//se for HTTPS verifica no diretorio corrente se ha as DLL
	if !file("libeay32.dll")
	return "ERRO: Https Falta libeay32.dll no diretorio do sistema"
	endif
	if !file("ssleay32.dll")
	return "ERRO: Https Falta ssleay32.dll no diretorio do sistema"	
	endif
endif 
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Linguagemclipper
Usuário Nível 3
Usuário Nível 3
Mensagens: 240
Registrado em: 16 Abr 2016 17:33
Localização: Maceió/AL
Contato:

oHTTP:= TIpClientHttp():new(cURL) NÃO ESTÁ BAIXANDO ARQUIVO

Mensagem por Linguagemclipper »

Descobrí que o problema era o HTTPS mesmo, pois mudei de servidor e todos os sites ficaram fora do ar, só voltaram quando instalei o Let´s Encrypt.
Daí testei com outro domínio que não é https e conseguí acessar o arquivo normalmente.
Não cheguei a testar com as DLLs, mas obrigado pela dica.
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
Responder