Página 2 de 2

Enviado: 11 Mar 2007 19:50
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

Enviado: 11 Mar 2007 21:53
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

Enviado: 11 Mar 2007 22:32
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

Enviado: 11 Mar 2007 22:43
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

Enviado: 11 Mar 2007 22:55
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

Enviado: 11 Mar 2007 23:12
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

Enviado: 12 Mar 2007 00:22
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

Enviado: 12 Mar 2007 00:28
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 :{

Enviado: 12 Mar 2007 01:32
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

Enviado: 12 Mar 2007 02:04
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

Enviado: 12 Mar 2007 17:05
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

Demore no retorno

Enviado: 12 Mar 2007 18:04
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

Re: Demore no retorno

Enviado: 12 Mar 2007 18:23
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