ACESSO A INTERNET

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Prezado Maligno

Veja as formas que testei :

U2F www.google.com.br/index.html teste.txt
U2F www.google.com.br/index.htm teste.txt
U2F www.google.com/index.html teste.txt
U2F www.google.com/index.htm teste.txt
U2F www.sistemabr.v10.com.br/index.htm teste.txt
U2F www.sistemabr.v10.com.br/texto.txt teste.txt
U2F www.sistemabr.v10.com.br/texto.txt texto.txt

Em nenhum deles consegui um retorno.
Após cada comando verifiquei o Errorlevel e todos retornaram 0

Tá estranho ou eu tô fazendo errado ?

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Nunca vi o help deste programa, mas pelo que pude testar, o programa (ou o código do IE que trata disso) parece precisar que a URL esteja prefixada por http://. Provavelmente é a forma que ele usa pra descobrir qual protocolo utilizar. Experimente e diga o resultado.

Aliás, em tempo: estou incluindo essa função no WAPI. Depois posto as sintaxes das funções na thread do WAPI.

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

É isso aí, o MALIGNO está certo. Funciona quando a URL é prefixada por http://. Eu esquecì dizer isso anteriormente. Comigo também aconteceu, mas logo ví que só funciona com http://. E outra coisa que notei, Marcelo que você menciona em errorlevel, mas pelo que eu entendí o U2F traz o arquivo e é desta maneira que ficamos sabendo que deu certo. Eu não fiz testes com errorlevel, mas acredito que não é por aí.

Teste como o Maligno falou com http:// e se criar o arquivo teste.txt (digamos), quer dizer que deu certo. Mas nesse caso não haveria necessidade de utilizar o errorlevel e sim o IF EXIST TESTE.TXT...

Um clip-abraço
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Está certo que a função que se deseja do U2F não é exatamente baixar arquivos. O mais interessante é testar uma URL, a fim de saber se existe conexão com a Internet. Mas, nos testes que fiz, se eu não estiver baixando arquivo da raiz do site, o meu firewall (SyGate) não exatamente bloqueia, mas faz "cara feia". Fica segurando o tráfego e no final, o arquivo não vem.

Quanto ao ERRORLEVEL, ele nada mais é que o código de retorno do programa, claro. Se zero, tudo ok. Mas esse ok é com relação à execução de uma função chamada da API, chamada "URLDownloadToFile". Isso não quer dizer, necessariamente, que o arquivo foi baixado. O melhor mesmo é testar se o desalmado existe.

E quanto ao protocolo HTTP, só uma observação: não adianta tentar usar FTP ou outro protocolo qualquer. Parece que a coisa foi feita apenas para HTTP mesmo. :)

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Blz

Agora funcionou, era a falta do http mesmo.

A única desvantagem que vejo é que se precisa especificar um arquivo existente, o que não ocorre no Wget, porém vejo algumas vantagens.

1 - Você pode fazer um ótimo é fácil sistema de atualização
2 - Você pode baixar qualquer tipo de arquivo
3 - Ele é totalmente transparente

Com relação ao Errorlevel só usei para testar já que não vinha nada, na verdade tenho horror aos comandos do DOS mas em certos casos não tem jeito. Óbviamente que é muito mais prático usar :
IF FILE("TEXTO.TXT")=.T.

Falando em Errorlevel, não sei por que cargas dágua no Wget o Errorlevel do DOS dá retorno normal e no Clipper a função DOSERROR() sempre retorna 0, fiz o teste com os 2 no DOS funciona, no Clipper nunca.

Ps. Se é só para http, vai entender porque é obrigado a botar http na frente...

Valeu !

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Clipper escreveu:A única desvantagem que vejo é que se precisa especificar um arquivo existente, o que não ocorre no Wget
Como assim não precisa? Não entendi.
Ps. Se é só para http, vai entender porque é obrigado a botar http na frente...
Imagino que deve ter um motivo que levou a MS a fazer isso: descuido ou a existência de algum protocolo diferente que a função aceita. Mas não dá pra saber pela documentação. Ela omite este ponto. Talvez, nos cafundós da Internet, exista uma explicação pra isso. Mas nem vou atrás. Não vale a pena. :)

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Bom, como eu sou curioso e como não tinha nada pra fazer (até tinha...rs).

Fiz um exemplo de como atualizar um sistema usando o U2F.

Código: Selecionar todos

*------------------*
// Marcelo Mendes //
*------------------*
// Funcao para verificar e baixar atualizacao de um sistema
CLS
VERSAOATUAL="4.71" // Aqui fica o numero da versao atual
*** Neste caso o arquivo que contem a versao deve ter os seu primeiros
*** 4 bytes com o numero da versao disponivel
*** Cada um vai colocar da forma que usa
*** Mas terá que alterar o FREADSTR() para o tamanho usado

FERASE("update.txt")
FERASE("BRUPDATE.EXE")
COMANDO="U2F http:\\sistemabr.v10.com.br/info.upd update.txt"
RUN &COMANDO
IF FILE("update.txt")=.F.
   @ 02,00 SAY "Sem conexao ou arquivo nao encontrado no servidor !"
   INKEY(3)
   RETURN(.T.)
ELSE
   HAND=FOPEN("update.txt")
   VERSAODISP=FREADSTR(HAND,4) // Le os 4 primeiros bytes do aquivo baixado
   FCLOSE(HAND)
   IF VERSAOATUAL<VERSAODISP
      @ 02,00 SAY "Atualizacao disponivel "+VERSAODISP+", pressione uma tecla..."
      INKEY(10)
      EDITA=MEMOREAD("update.txt")
      CLS
      @ 00,00 SAY PADC("Novidades da versao "+VERSAODISP,80)
      @ 24,00 SAY PADC("Tecle <ESC> para sair",80)
      MEMOEDIT(EDITA,01,00,23,79)
      CLS
      BAIXAR=SPACE(1)
      @ 02,00 SAY "Deseja baixar e executar a atualizacao ?";
      GET BAIXAR PICT "@! A" VALID BAIXAR $"SN"
      READ
      IF BAIXAR="S"
         COMANDO="U2F http:\\www.phrep.com.br/brupdate.exe brupdate.exe"
         RUN &COMANDO
         RUN BRUPDATE.EXE
      ELSE
         CLS
         RETURN
      ENDIF
   ELSE
      @ 02,00 SAY "Nenhuma atualizacao disponivel !"
      INKEY(3)
      RETURN(.T.)
   ENDIF
ENDIF
Baixem no link abaixo :

www.phrep.com.br/update.zip

Já está com o executável e funcionando, podem testar a vontade.

Para o Maligno

O WGET baixa a página principal, sendo assim não precisa especificar o nome do arquivo, vem o nome original.

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

LEGAL MARCELO !. Ficou muito bom e objetivo sua aplicação com o U2F do MALIGNO. LEGAL !

Um clip-abraço ! :)Pos :{
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Clipper escreveu:Fiz um exemplo de como atualizar um sistema usando o U2F.
Uma extensão natural da sua função é a criação de um tipo de WebService para atualização de licença de uso. Uma excelente forma de proteção de programa. Basta que o programador tenha um site onde hospedar os arquivos de controle.
O WGET baixa a página principal, sendo assim não precisa especificar o nome do arquivo, vem o nome original.
Ah, sim. Agora eu entendi. Mas o U2F também faz isso. É só fornecer o endereço do site e o nome do arquivo destino.

Aliás, em tempo: o U2F.EXE não é meu. Peguei de algum lugar que nem me lembro mais. Fiz outro hoje, igual, mas menor: 5KB. Mas foi só pra testar a carga de uma DLL. Já incluí uma função no WAPI. Só falta fazer a função de abstração. Subirei o ZIP pro meu site daqui a pouco.

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Maligno escreveu:Uma extensão natural da sua função é a criação de um tipo de WebService para atualização de licença de uso. Uma excelente forma de proteção de programa. Basta que o programador tenha um site onde hospedar os arquivos de controle.
Excelente idéia !

Durante a semana fica dificil mexer nisso, mas se até o fim de semana ninguém tiver feito nada, vou tentar alguma coisa do tipo.

Valeu !

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Notei um problema: como o U2F é um moniker do IE, ele está sujeito ao sistema de cacheamento do IE. Assim, quando conectado, recebe-se a página de teste. Ao se desconectar, a mesma página continua no cachê e a função, erroneamente, indica que ainda existe conexão.

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Demore no retorno

Mensagem por Pablo César »

MALIGNO,

Sei que você está enfrentando uma solução melhor para este retorno que fica demorado quando não se está conectado a INTERNET (mensagem sua no outro tópico). Mas não é somente com o U2F que demora, o PING também demora pacas. Daí pensei, como você manja da linguagem C aqui parece ter o código fontes do PING http://fgouget.free.fr/bing/ping_src-0.1.4.zip e talvez te ajude a entender melhor ou até mesmo alterar o fonte e fazer outra versão do PING.

Boa sorte colega !

:)Pos
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Demore no retorno

Mensagem por Maligno »

Pablo César escreveu:Sei que você está enfrentando uma solução melhor para este retorno que fica demorado quando não se está conectado a INTERNET (mensagem sua no outro tópico). Mas não é somente com o U2F que demora, o PING também demora pacas.
Pois é. Das tantas soluções que estou estudando, o ECHO é uma delas. Inclusive, a API que trata de ICMP é prima da API dos monikers do IE.
De madrugada li bastante coisa do MSDN sobre ECHO. Fiz alguns testes e percebi que é até rápido em algumas circunstâncias. O primeiro PING, se usado um número de IP, retorna rápido quando não há conexão. E não precisa PINGar muito. :))) Acho que uma vez é suficiente pra determinar se há conexão ou não. O problema com ECHO é quando se utiliza uma URL. Além de mais demorado, por alguma estranha razão, mesmo conectado, o site pode simplesmente não responder.

Enfim, ainda há muito o que pesquisar. À noite vejo com mais calma, pra tentar escolher que caminho seguir.

[]'s
Maligno
http://www.buzinello.com/prg
Responder