Puxar atualizacao sem FTP
Moderador: Moderadores
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
Puxar atualizacao sem FTP
Eh possivel eu atualizar meus sistemas no cliente sem o uso de FTP? Caso sim. Por favor poste exemplos. Obrigado
Marcos Roberto.
Marcos Roberto.
Marcos Roberto
NetService Software
NetService Software
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Re: Puxar atualizacao sem FTP
Não sei se entendi direito.
Ao invés de ftp, use http.
Ao invés de ftp, use http.
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/
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/
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Puxar atualizacao sem FTP
Olá Marcos,marcos.gurupi escreveu:Eh possivel eu atualizar meus sistemas no cliente sem o uso de FTP? Caso sim. Por favor poste exemplos. Obrigado
É possivel sim, pode usar Http para baixar, segue abaixo o exemplo (tens que linkar a TIP.LIB):
#include "common.ch"
#include "Directry.ch"
#include "hwgui.ch"
Exemplo de uso:
Código: Selecionar todos
IF !FILE("res\curiosidades.doc")
DONWLOAD_FILE("/atualiza/res","curiosidades.doc","res\curiosidades.doc")
ENDIF
Código: Selecionar todos
************************************************
PROCEDURE Donwload_File(ftpdir,ftpfile,fdestino)
************************************************
Local cURL, cSaveAs, nFileSize, vALIAS, lRet:=.F.
Private oBar,oDlg,nSize, oConn
cURL := "http://www.sygecom.com.br"+ftpdir+"/"+ftpfile
Private oDlgHabla:=nil
MsgRun("Aguarde Procurando Atualizações...")
Fim_Run()
cTamanho := Get_File_Size(cURL)
TRY
oConn := TipClientHttp():New(TURL():New(cURL))
oConn:nConnTimeout := 10000
oConn:nDefaultPort := 8080
oConn:exGauge := { | done, size| ShowGauge(done, size, cTamanho, ftpfile ) }
IF oConn:Open(cURL)
oConn:ReadToFile(fdestino,,nFileSize)
oConn:Close()
ENDIF
lRet:=.T.
CATCH
MsgStop("Erro ao Tentar baixar a atualização, Favor tente mais tarde","Aviso do Sistema")
END
oDlg:Close()
Fim_Run()
RETURN(lRet)
Procedure ShowGauge( nSent, nSize, wTotal, ftpfile )
IF nSent > 0
hwg_processmessage()
eval( {||oBar:Set(,(nSent/wTotal)*100),.t.} )
@ 50,120 say "Arquivo...: " +ftpfile+" "+ STR(nSent)+" Byts de: " + str(wTotal)+ " Byts "+str((nSent/wTotal)*100,4) +" %" SIZE 500,22
ENDIF
RETURN
*****************************
Procedure Aguarde(vTIT,vMENS)
*****************************
INIT DIALOG oDlg TITLE vTIT AT 45,30 SIZE 600,210 NOEXIT STYLE DS_CENTER + WS_VISIBLE
@ 50,20 say vMENS size 300,40 ;
FONT HFont():Add( '',0,-20,400,,,)
@ 50,60 PROGRESSBAR oBar OF oDlg SIZE 510,50 BARWIDTH 10000
oDlg:Activate(.t.)
***************************
FUNCTION GET_FILE_SIZE(cURL)
***************************
LOCAL cBuffer, cRequest, cResponse, nBytes, pSocket, aRequest
LOCAL crlf := CHR(13)+CHR(10), Result := 0, oUrl
// initialize sockets system and connect to server
DEFAULT cURL:=""
oUrl := tURL():New( cUrl )
IF Empty( oUrl )
Return 0
ENDIF
IF Lower( oUrl:cProto ) <> "http"
Return 0
ENDIF
INetInit()
pSocket := INetConnect( oUrl:cServer, 8080 )
IF INetErrorCode( pSocket ) <> 0
// MsgInfo("Erro ao conectar ao Socket, error:" + INetErrorDesc( pSocket ),"Aviso do Sistema")
INetCleanUp()
RETURN 0
ENDIF
crlf := INETCRLF()
// send HTTP request to server
cRequest := "HEAD "+oUrl:BuildAddress() + " HTTP/1.1" + CRLF + ;
"Host: "+oUrl:cServer+ CRLF + ;
"User-Agent: HTTP-Get-File-Size" + CRLF + ;
"Connection:close" + CRLF + ;
CRLF
nBytes := INetSend( pSocket, cRequest )
cBuffer := Space(4096)
cResponse:= ""
// get HTTP response from server
DO WHILE ( nBytes > 0 )
nBytes := INetRecv( pSocket, @cBuffer )
cResponse += Left( cBuffer, nBytes )
cBuffer := Space(4096)
ENDDO
// disconnect and cleanup memory
INetClose( pSocket )
INetCleanUp()
aRequest := HB_ATokens(cResponse, CRLF)
clear
nAt := Ascan(aRequest,{|x|LEFT(LTRIM(X),15)="Content-Length:"})
IF nAt>0
Result := VAL(SUBSTR(aRequest[nAt],17))
ENDIF
RETURN RESULT
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
Re: Puxar atualizacao sem FTP
AO MULEQUE!!!!
:{
:{
Mas jah abuzando de vc. Qual eh o servico q devo instalar no meu windows 2003 para servir meus arquivos para os clientes?
Marcos Roberto.
:{
Mas jah abuzando de vc. Qual eh o servico q devo instalar no meu windows 2003 para servir meus arquivos para os clientes?
Marcos Roberto.
Marcos Roberto
NetService Software
NetService Software
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Puxar atualizacao sem FTP
Olá Marcos,marcos.gurupi escreveu: Qual eh o servico q devo instalar no meu windows 2003 para servir meus arquivos para os clientes?
Desculpa não tinha visto essa sua pergunta, eu uso a porta 8080 em conjunto com o Apache e com NO-IP para gerar um link fixo do dinâmico, como uso isso para baixar as atualizações do meu sistema o mesmo quando não ativo pega no servidor segundario que é o servidor do meu site.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
-
Mário Isa
- Usuário Nível 4

- Mensagens: 907
- Registrado em: 07 Jul 2004 13:54
- Localização: Ilha Solteira-sp
Re: Puxar atualizacao sem FTP
Leonardo, vc está utilizando com sucesso essa rotina ?
Porque eu utilizo o TIpClientFtp()
e está dando falha / as vezes baixa as vezes nao / já estudei firewall e nao consegui encontrar a razão da falha.
Mário
Porque eu utilizo o TIpClientFtp()
e está dando falha / as vezes baixa as vezes nao / já estudei firewall e nao consegui encontrar a razão da falha.
Mário
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Puxar atualizacao sem FTP
Olá Mario,
Uso sim com sucesso, e nunca mais tive problema, alias tive agora a uns dias atraz, mas não foi na rotina em si, mas o fato de ter 285.prg compilado no sistema a rotina de atualização tranca, uma espécie de BUG da TIP.LIB ou sei lá o que, mas ainda não descobri, mas sem duvida é bem melhor que FTP, por que não precisa ficar pendurando o usuário para baixar as minhas atualizações do sistema, quando mais de 10 conectava simultaneamente no FTP, meu servidor abria as pernas e com toda a razão, mas resolvido.
Uso sim com sucesso, e nunca mais tive problema, alias tive agora a uns dias atraz, mas não foi na rotina em si, mas o fato de ter 285.prg compilado no sistema a rotina de atualização tranca, uma espécie de BUG da TIP.LIB ou sei lá o que, mas ainda não descobri, mas sem duvida é bem melhor que FTP, por que não precisa ficar pendurando o usuário para baixar as minhas atualizações do sistema, quando mais de 10 conectava simultaneamente no FTP, meu servidor abria as pernas e com toda a razão, mas resolvido.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Re: Puxar atualizacao sem FTP
Olá Pessoal,
Alguém sabe porque a função: GET_FILE_SIZE(cURL), retorna zero no xHarbour 1.2.1 ?
Obrigado
Alguém sabe porque a função: GET_FILE_SIZE(cURL), retorna zero no xHarbour 1.2.1 ?
Obrigado
Marcos Villela
x[H]arbour.org (CVS) | GtWvW+HwGui (CVS) | HbMake | Dbf | Rdd DbfCdx | LeToDb (CVS) (Implantando)
===============================================================
“Quem nunca dormiu à noite e acordou de repente, suando frio e chorando, chorando e
chorando? Se isso lhe aconteceu, então você foi apanhado pelo blues.” (Robert Johnson)
Sweet Home Chicago (Versão Blind Bulldog Blues): www.youtube.com/watch?v=J-V61vQTSZs
x[H]arbour.org (CVS) | GtWvW+HwGui (CVS) | HbMake | Dbf | Rdd DbfCdx | LeToDb (CVS) (Implantando)
===============================================================
“Quem nunca dormiu à noite e acordou de repente, suando frio e chorando, chorando e
chorando? Se isso lhe aconteceu, então você foi apanhado pelo blues.” (Robert Johnson)
Sweet Home Chicago (Versão Blind Bulldog Blues): www.youtube.com/watch?v=J-V61vQTSZs
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Puxar atualizacao sem FTP
Olá Marcos,
Essa função não é do xHarbour, post como você está usando !
Essa função não é do xHarbour, post como você está usando !
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Re: Puxar atualizacao sem FTP
Olá Leonardo, tudo bem com vc ?
Então, estou tentando usar como voce mesmo postou acima, é a ultima função, mas retorna zero.
Eu li voce dizendo em algum post que era um bug no xharbour que vc corrigiu, mas ja faz um tempo, não me lembro com certeza.
Valeu
Então, estou tentando usar como voce mesmo postou acima, é a ultima função, mas retorna zero.
Eu li voce dizendo em algum post que era um bug no xharbour que vc corrigiu, mas ja faz um tempo, não me lembro com certeza.
Valeu
Código: Selecionar todos
************************************************
PROCEDURE Donwload_File(ftpdir,ftpfile,fdestino)
************************************************
Local cURL, cSaveAs, nFileSize, vALIAS, lRet:=.F.
Private oBar,oDlg,nSize, oConn
cURL := "http://www.sygecom.com.br"+ftpdir+"/"+ftpfile
Private oDlgHabla:=nil
MsgRun("Aguarde Procurando Atualizações...")
Fim_Run()
cTamanho := Get_File_Size(cURL)
TRY
oConn := TipClientHttp():New(TURL():New(cURL))
oConn:nConnTimeout := 10000
oConn:nDefaultPort := 8080
oConn:exGauge := { | done, size| ShowGauge(done, size, cTamanho, ftpfile ) }
IF oConn:Open(cURL)
oConn:ReadToFile(fdestino,,nFileSize)
oConn:Close()
ENDIF
lRet:=.T.
CATCH
MsgStop("Erro ao Tentar baixar a atualização, Favor tente mais tarde","Aviso do Sistema")
END
oDlg:Close()
Fim_Run()
RETURN(lRet)
Procedure ShowGauge( nSent, nSize, wTotal, ftpfile )
IF nSent > 0
hwg_processmessage()
eval( {||oBar:Set(,(nSent/wTotal)*100),.t.} )
@ 50,120 say "Arquivo...: " +ftpfile+" "+ STR(nSent)+" Byts de: " + str(wTotal)+ " Byts "+str((nSent/wTotal)*100,4) +" %" SIZE 500,22
ENDIF
RETURN
*****************************
Procedure Aguarde(vTIT,vMENS)
*****************************
INIT DIALOG oDlg TITLE vTIT AT 45,30 SIZE 600,210 NOEXIT STYLE DS_CENTER + WS_VISIBLE
@ 50,20 say vMENS size 300,40 ;
FONT HFont():Add( '',0,-20,400,,,)
@ 50,60 PROGRESSBAR oBar OF oDlg SIZE 510,50 BARWIDTH 10000
oDlg:Activate(.t.)
***************************
FUNCTION GET_FILE_SIZE(cURL)
***************************
LOCAL cBuffer, cRequest, cResponse, nBytes, pSocket, aRequest
LOCAL crlf := CHR(13)+CHR(10), Result := 0, oUrl
// initialize sockets system and connect to server
DEFAULT cURL:=""
oUrl := tURL():New( cUrl )
IF Empty( oUrl )
Return 0
ENDIF
IF Lower( oUrl:cProto ) <> "http"
Return 0
ENDIF
INetInit()
pSocket := INetConnect( oUrl:cServer, 8080 )
IF INetErrorCode( pSocket ) <> 0
// MsgInfo("Erro ao conectar ao Socket, error:" + INetErrorDesc( pSocket ),"Aviso do Sistema")
INetCleanUp()
RETURN 0
ENDIF
crlf := INETCRLF()
// send HTTP request to server
cRequest := "HEAD "+oUrl:BuildAddress() + " HTTP/1.1" + CRLF + ;
"Host: "+oUrl:cServer+ CRLF + ;
"User-Agent: HTTP-Get-File-Size" + CRLF + ;
"Connection:close" + CRLF + ;
CRLF
nBytes := INetSend( pSocket, cRequest )
cBuffer := Space(4096)
cResponse:= ""
// get HTTP response from server
DO WHILE ( nBytes > 0 )
nBytes := INetRecv( pSocket, @cBuffer )
cResponse += Left( cBuffer, nBytes )
cBuffer := Space(4096)
ENDDO
// disconnect and cleanup memory
INetClose( pSocket )
INetCleanUp()
aRequest := HB_ATokens(cResponse, CRLF)
clear
nAt := Ascan(aRequest,{|x|LEFT(LTRIM(X),15)="Content-Length:"})
IF nAt>0
Result := VAL(SUBSTR(aRequest[nAt],17))
ENDIF
RETURN RESULT
Marcos Villela
x[H]arbour.org (CVS) | GtWvW+HwGui (CVS) | HbMake | Dbf | Rdd DbfCdx | LeToDb (CVS) (Implantando)
===============================================================
“Quem nunca dormiu à noite e acordou de repente, suando frio e chorando, chorando e
chorando? Se isso lhe aconteceu, então você foi apanhado pelo blues.” (Robert Johnson)
Sweet Home Chicago (Versão Blind Bulldog Blues): www.youtube.com/watch?v=J-V61vQTSZs
x[H]arbour.org (CVS) | GtWvW+HwGui (CVS) | HbMake | Dbf | Rdd DbfCdx | LeToDb (CVS) (Implantando)
===============================================================
“Quem nunca dormiu à noite e acordou de repente, suando frio e chorando, chorando e
chorando? Se isso lhe aconteceu, então você foi apanhado pelo blues.” (Robert Johnson)
Sweet Home Chicago (Versão Blind Bulldog Blues): www.youtube.com/watch?v=J-V61vQTSZs
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Puxar atualizacao sem FTP
O arquivo existe no endereço da URL ? Cuidado que é case-sensitive.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Re: Puxar atualizacao sem FTP
Olá Leonardo,
Tambem me preocupei com case-sensitive.
Encontrei o topico que voce disse que a função do xhabour estava com problema (pelo que entendi!)
Sim o Endereço existe, dá tudo certo, baixa o arquivo normalmente, mas as vezes vem corrompido, e não tenho como checar os bytes por causa da função: GET_FILE_SIZE(cURL) que retorna sempre zero.sygecom escreveu: O arquivo existe no endereço da URL ? Cuidado que é case-sensitive.
Tambem me preocupei com case-sensitive.
Encontrei o topico que voce disse que a função do xhabour estava com problema (pelo que entendi!)
Obrigado pela forçasygecom escreveu: "Unico probleminha que encontrei foi nas rotinas de FTP da TIP.LIB, na função fileSize() , mas foi apenas um detalhe que eu mesmo ajustei ,
Topico: viewtopic.php?f=4&t=9254&p=52356&hilit=xharbour+filesize#p52354
Marcos Villela
x[H]arbour.org (CVS) | GtWvW+HwGui (CVS) | HbMake | Dbf | Rdd DbfCdx | LeToDb (CVS) (Implantando)
===============================================================
“Quem nunca dormiu à noite e acordou de repente, suando frio e chorando, chorando e
chorando? Se isso lhe aconteceu, então você foi apanhado pelo blues.” (Robert Johnson)
Sweet Home Chicago (Versão Blind Bulldog Blues): www.youtube.com/watch?v=J-V61vQTSZs
x[H]arbour.org (CVS) | GtWvW+HwGui (CVS) | HbMake | Dbf | Rdd DbfCdx | LeToDb (CVS) (Implantando)
===============================================================
“Quem nunca dormiu à noite e acordou de repente, suando frio e chorando, chorando e
chorando? Se isso lhe aconteceu, então você foi apanhado pelo blues.” (Robert Johnson)
Sweet Home Chicago (Versão Blind Bulldog Blues): www.youtube.com/watch?v=J-V61vQTSZs
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Puxar atualizacao sem FTP
Verdade, isso aconteceu quando tive que colocar vairos .PRG novos no sistema, quando alcançava 285 .PRG a função GET_FILE_SIZE() retornava zero, quando eu pegava o código de um .PRG e colocava junto com outro .PRG e compilava dava certo, ou seja, sem explicação alguma a quantidade de arquivos .PRG linkado ao projeto dava PAU na TIP.LIB, durma com esse barulho......
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- mbrigatti
- Usuário Nível 2

- Mensagens: 68
- Registrado em: 16 Set 2005 08:13
- Localização: Piracicaba - SP
Re: Puxar atualizacao sem FTP
Pessoal alguém ai tem um exemplo de como consultar se um determinado arquivo pertence ao diretório corrente do FTP ?
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Puxar atualizacao sem FTP
Olá Marcelo,
Pode usar:
oFtp:listFiles() ou oFTP:List() para obter uma lista de arquivos da pasta corrente
Pode usar:
oFtp:listFiles() ou oFTP:List() para obter uma lista de arquivos da pasta corrente
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
