Página 1 de 1

Controlar o LOG criado pelo TIpClientFtp()

Enviado: 07 Mai 2018 07:48
por clodoaldomonteiro
Bom dia a todos.

Tenho meus programas em xHarbour 1.0.0 e uso a função TIpClientFtp() para copiar arquivos de BKP gerados pelos meus sistemas.

Acontece que durante o processo do TIpClientFtp() é criado um arquivo ftp.log na última pasta que o usuário acessou pelo Windows Explorer e nesse arquivo ftp.log, é registrado todos os dados do processo, inclusive as senhas de acesso às pastas FTP.

Pergunto aos amigos se tem como eu configurar a função em questão para não gerar esse arquivo.

Controlar o LOG criado pelo TIpClientFtp()

Enviado: 07 Mai 2018 08:05
por rossine
Bom dia Clodoaldo,

Código: Selecionar todos

TIpClientFtp():new( <cUrl>, [<lTrace>] ) --> oTIpClientFtp
Veja acima que movendo o lTrace para .F. deva funcionar. assim:

Código: Selecionar todos

TIpClientFtp():new( <cUrl>, .F. ) --> oTIpClientFtp

Código: Selecionar todos

<lTrace>
    This parameter defaults to .F. (false). When .T. (true) is passed, the communication with a mail server is logged into the file Ftp<nn>.log, where <nn> is the number of the log file storing information of the internet communictaion with this object. 
Veja se resolve sua dúvida.

Controlar o LOG criado pelo TIpClientFtp()

Enviado: 09 Mai 2018 23:16
por lucimauro
Ola clodoaldo, depois poderia deixar um exemplo aqui de como se faz isso, para subir esses arquivos de backup para ftp. achei isso muito interessante.

Desde já agradeço.

Controlar o LOG criado pelo TIpClientFtp()

Enviado: 10 Mai 2018 21:44
por clodoaldomonteiro
Muito Obrigado Rossine, era só isso mesmo.

Abraços.

Controlar o LOG criado pelo TIpClientFtp()

Enviado: 11 Mai 2018 09:51
por clodoaldomonteiro
Na Hora Lucimauro,
Segue rotina em modo console mesmo, que verifica numa tabela quais os BKPs precisam ser enviados para minha pasta de BKP no Servidor online.

Código: Selecionar todos

   Local ms1:='123', ..., ms5:='xxx'
   LOCAL cUrl := "ftp://backup:"+ms1+ms2+ms3+ms4+ms5+"@seusite.net" //ms1 ... ms5 é a minha senha q está quebrada em várias partes, para evitar q numa descompilação ela venha a ser descoberta.

   Private mRetorno:=''


   Begin Sequence
      ? '-30 Montando Caminhos para os Backups'
      mPath:='c:\simplesinfo\scp15h\'

      If 'SCP' $ Upper(cPath)
         mPath := Left(cPath, 22)

      ElseIf 'SFP' $ Upper(cPath)
         mPath := Left(cPath, 10)

      Endif

      mDbf := mPath + 'tbk.dbf'

      If File( mDbf )
         Try
            ? '-31 Conectando … base de dados local do Backup'
            Use (mDbf) Alias TBK SHARED
         Catch
            ? '-32 [ERRO] Opera‡Æo falhou.'
         End
      Else
         ? '-33 [ERRO] Opera‡Æo falhou.'
         Break
      Endif

      ? '-34 Contando registros'
      Count To nCount For Empty( flag )

      If nCount > 0

         Set Filter To Empty( flag )

         Try
            ? '-35 Conectando ao servidor FTP.'
            oURL := TUrl():New( cURL )
            oFtp := TIpClientFtp():new( oUrl, .f. )
            oFTP:nConnTimeout := 20000
            oFTP:bUsePasv := .T.
         Catch
            ? '-36 [ERRO] ConexÆo ao Servidor falou.'
         End

         ? '-37 Abrindo pasta de Backup no Servidor.'

         // Testa usuario e senha
         /*IF At( "@", cUser ) > 0
            oFTP:oUrl:cServer   := cServer
            oFTP:oUrl:cUserID   := cUser
            oFTP:oUrl:cPassword := cPassword
         ENDIF
         */

         Go Top
         cc:=0
         Do While !Eof()

            mOrigem  := StrTran( tbk_arquiv, Alltrim(tbk_path), '')
            If Subs(mOrigem, 2, 2) <> ':\'
               mOrigem  := Alltrim(tbk_path) + AllTrim(mOrigem)
            Endif

            //mDestino := Alltrim(tbk_rota)+;
             // '/' + Alltrim(tbk_app)+;
             // '/A' + Alltrim(tbk_ano)+;
             // '/' + Alltrim(tbk_arquiv)

            mDestino := Alltrim(tbk_arquiv)
            mPos := At('BKP\', mDestino)
            If mPos > 0
               mDestino := SubStr(mDestino, mPos+4, 100)
            Endif

            If File( mOrigem )

               IF .NOT. oFtp:open( cUrl )
                  mRetorno := oFtp:lastErrorMessage() + CRLF
                  Go Top
                  If RLOCK()
                     Replace tbk_ntenta With tbk_ntenta+1
                     Replace tbk_retorn With mRetorno+tbk_retorn
                  Endif
                  DbUnlock()

                  ? '-38 [ERRO] A abertura da pasta backup falhou.'
                  ? '    Servidor FTP.....: '+oURL:cServer
                  IF oFTP:SocketCon == NIL
                     ? "    Connection not initialized"
                  ELSEIF inetErrorCode( oFTP:SocketCon ) == 0
                     ? "    Server response:", oFTP:cReply
                  ELSE
                     ? "    Error in connection:", inetErrorDesc( oFTP:SocketCon )
                  ENDIF

                  Break

               Else
                  ? '-39 Vamos copiar o arquivo: '+mDestino
                  ? '    Contador: ' + str(++cc)
                  //aFiles := oFtp:listFiles()

                  cRoot  := '/'
                  ? '    Raiz: '+cRoot

                  oFtp:cwd( cRoot )
                  mRetorno += oFtp:cReply + CRLF
                  ? '    Raiz: '+oFtp:cReply

                  oFtp:cwd( Alltrim(tbk_rota) )

                  If Left(oFtp:cReply, 1) ='5'

                     oFtp:mkd( Alltrim(tbk_rota) )
                     mRetorno += oFtp:cReply + CRLF

                     oFtp:cwd( Alltrim(tbk_rota) )
                     mRetorno += oFtp:cReply + CRLF
                  Else
                     mRetorno += oFtp:cReply + CRLF
                  Endif
                  
                  oFtp:cwd( Alltrim(tbk_app) )

                  If Left(oFtp:cReply, 1) ='5'
                     oFtp:mkd( Alltrim(tbk_app) )
                     mRetorno += oFtp:cReply + CRLF

                     oFtp:cwd( Alltrim(tbk_app) )
                     mRetorno += oFtp:cReply + CRLF
                  Else
                     mRetorno += oFtp:cReply + CRLF
                  Endif
                  
                  oFtp:cwd( 'A'+Alltrim(tbk_ano) )

                  If Left(oFtp:cReply, 1) ='5'
                     oFtp:mkd( 'A'+Alltrim(tbk_ano) )
                     mRetorno += oFtp:cReply + CRLF

                     oFtp:cwd( 'A'+Alltrim(tbk_ano) )
                     mRetorno += oFtp:cReply + CRLF
                  Else
                     mRetorno += oFtp:cReply + CRLF
                  Endif
                  
                  If Left(oFtp:cReply, 1) = '2'
                     oFtp:uploadFile( mOrigem, mDestino )
                     mRetorno += oFtp:cReply + CRLF
                     ? '    Arquivo copiado: ' + oFtp:cReply

                  Else
                     ? '    NÆo consegui acessar a pasta: ' + oFtp:cReply
                     ? mOrigem
                     ? mDestino
                     ? oFtp:cReply

                  Endif

                  If RLOCK()
                     Replace tbk_ntenta With tbk_ntenta+1
                     Replace tbk_retorn With mRetorno+tbk_retorn
                     If Left(oFtp:cReply, 1) = '2'
                        Replace flag       With oFtp:cReply
                     Endif
                  Endif

                  DbUnlock()

                  oFTP:Close()

               Endif

            Endif
            //? mOrigem
            //? mDestino
            //wait
            Skip

         Enddo
         /*oFtp:cwd( ".." )
         Dirlist( oFtp, aFiles, "" )
         oFtp:cwd( cRoot + "/newdir"  )

         ? oFtp:downloadFile( "testftp.prg" ), oFtp:cReply

         ? oFtp:dele( "testftp.exe" ), oFtp:cReply
         ? oFtp:dele( "testftp.prg" ), oFtp:cReply

         ? oFtp:cwd( ".." ), oFtp:cReply

         ? oFtp:rmd( "newdir" ), oFtp:cReply
         */

      Else
         ? '-40 Sem registos a copiar.'
      Endif

   End Sequence

   RETURN

Tem alguns comentários, pois as vezes tinha q depurar o código.

Controlar o LOG criado pelo TIpClientFtp()

Enviado: 11 Mai 2018 23:12
por lucimauro
Obrigado por sua contribuição.

Controlar o LOG criado pelo TIpClientFtp()

Enviado: 05 Jun 2018 14:52
por clodoaldomonteiro
Poste aqui se deu certo e qq coisa vamos ajudando.