A Biblioteca SFTP TGPuttyLib é uma conversão em biblioteca do programa psftp da conhecida suite PuTTY, de Simon Tatham.

Permite aos programadores transferir ficheiros com as maiores taxas de transferência possíveis. Para o efeito, alguns tamanhos de buffer foram aumentados.

A TGPuttyLib baseia-se no PuTTY Release 0.83. Estão atualmente disponíveis classes prontas a usar para C++, Delphi e Free Pascal.

A biblioteca está atualmente disponível para Windows, macOS, Linux e FreeBSD.

Ver este projeto no GitHub: github.com/superflexible/TGPuttyLib

Ou descarregue aqui:
Descarregar TGPuttyLib para Windows e Linux, com código-fonte e demonstrações (Build 30: 32 e 64 bits)

Alguns pontos em destaque:

  • Em Delphi, considere simplesmente usar a classe TTGPuttySFTP em tgputtysftp.pas, em vez do componente TTGPuttySFTPClient em tgputtysftpclient.pas. Consulte a nossa recomendação no GitHub para mais detalhes.
  • A DLL do PuTTY é 100% segura para threads e pode lidar com um grande número de ligações e transferências simultâneas. Cada ligação, e cada thread, tem de ter a sua própria instância de TTGPuttySFTP.
  • As alterações ao código-fonte foram feitas cuidadosamente de forma minimalista, de modo a garantir uma fácil adoção das alterações em futuras versões do PuTTY.
  • Pode escolher entre a classe TTGPuttySFTP e o componente TTGPuttySFTPClient. Se escolher a classe, esta tem de ser criada inteiramente em código-fonte. A classe usa strings de 8 bits, enquanto o componente é Unicode (assumindo que o servidor SFTP espera codificação UTF-8). Os callbacks (eventos) serão chamados na mesma thread em que foi invocado um método TTGPuttySFTP – não na thread principal.
  • As funcionalidades de shell SSH e SCP provavelmente serão adicionadas numa versão futura.
  • Estão incluídas várias demonstrações, em particular um cliente SFTP totalmente funcional com GUI (apenas Delphi), além de algumas ferramentas de linha de comandos escritas em C++, Delphi e Free Pascal.
  • Pode transferir ficheiros a partir de nomes de ficheiros ou de streams. Também pode abrir um ficheiro diretamente e obter um identificador de ficheiro, e implementar o seu próprio ciclo de upload usando as funções xfer_*. Dessa forma, tem acesso aleatório ao ficheiro, mas as funções xfer_* têm de ser usadas de uma forma específica. Atualmente não existe um exemplo em Pascal para isso, por isso precisa de consultar a função sftp_put_file em psftp.c.
  • O suporte para proxy está disponível desde a compilação 8.
  • Compilei o código C com as asserções ativadas, mas estas são implementadas como exceções Delphi através de um #define e de uma função de callback. Tenciono plenamente deixar as asserções e as exceções ativadas em todas as versões de lançamento.
  • Contribuições, pedidos e outros tipos de feedback são bem-vindos; enviem para meu nome @ gmail . com (o meu nome é tobiasgiesen)
  • A licença da TGPuttyLib é a mesma que a da PuTTY, pelo que pode ser usada tanto em projetos de código aberto como comerciais.

Pode encontrar mais informações sobre o PuTTY na Página Inicial do PuTTY.

As modificações da biblioteca dinâmica e o código Pascal são copyright 2019-2024 Tobias Giesen.
São distribuídos ao abrigo da mesma licença do PuTTY original, ver abaixo.

Licença do PuTTY
PuTTY é copyright 1997-2024 Simon Tatham.

Partes com copyright de Robert de Bath, Joris van Rantwijk, Delian Delchev, Andreas Schultz, Jeroen Massar, Wez Furlong, Nicolas Barry, Justin Bradford, Ben Harris, Malcolm Smith, Ahmad Khalifa, Markus Kuhn, Colin Watson, Christopher Staite, Lorenz Diener, Christian Brabandt, Jeff Smith, Pavel Kryukov, Maxim Kuznetsov, Svyatoslav Kuzmich, Nico Williams, Viktor Dukhovni e CORE SDI S.A.

É concedida, pela presente, permissão, sem encargos, a qualquer pessoa que obtenha uma cópia deste software e dos ficheiros de documentação associados (o “Software”), para lidar com o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, fundir, publicar, distribuir, sublicenciar e/ou vender cópias do Software, e permitir que as pessoas a quem o Software seja fornecido o façam, sujeito às seguintes condições:

O aviso de copyright acima e este aviso de permissão devem ser incluídos em todas as cópias ou partes substanciais do Software.

O SOFTWARE É FORNECIDO “TAL COMO ESTÁ”, SEM QUALQUER GARANTIA, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO, ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM E NÃO INFRAÇÃO. EM NENHUM CASO OS TITULARES DOS DIREITOS DE COPYRIGHT SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, QUER EM AÇÃO DE CONTRATO, DELITO OU DE OUTRA FORMA, RESULTANTE DE, DECORRENTE DE, OU RELACIONADA COM O SOFTWARE OU O USO OU OUTRAS OPERAÇÕES NO SOFTWARE.