sgcIndy — funkcje
Rozszerzone komponenty Indy TCP/IP z obsługą OpenSSL 1.1/3.0, uwierzytelnianiem XOAuth2 i ulepszoną siecią dla Delphi i Free Pascal.
Rozszerzone komponenty Indy TCP/IP z obsługą OpenSSL 1.1/3.0, uwierzytelnianiem XOAuth2 i ulepszoną siecią dla Delphi i Free Pascal.
Zaktualizuj swoje aplikacje Indy do najnowszych bibliotek OpenSSL i standardów TLS.
Pełna obsługa OpenSSL 1.1.x z TLS 1.2 i TLS 1.3. Zamiennik dla starszej integracji Indy z OpenSSL.
Obsługa najnowszej serii OpenSSL 3.x z nową architekturą dostawców, zgodnością z FIPS i ulepszonym zarządzaniem zestawami szyfrów.
Pełnoprawna obsługa TLS 1.3 z wznawianiem 0-RTT, lepszą wydajnością uzgadniania i nowoczesnymi zestawami szyfrów.
Wbudowana obsługa XOAuth2 dla Gmail, Outlook i innych dostawców OAuth 2.0. Uwierzytelniaj połączenia SMTP, IMAP i POP3 z nowoczesnymi przepływami OAuth.
Ulepszona obsługa połączeń, zarządzanie keep-alive, kontrola limitów czasu i zarządzanie buforem w stosunku do standardowych komponentów Indy.
sgcIndy jest bezpłatny. Kompatybilny z Delphi 7 do RAD Studio 13 oraz Free Pascal/Lazarus. Bez opłat licencyjnych ani tantiem.
W pełni funkcjonalny klient SSH 2.0 do bezpiecznych połączeń zdalnych. Wykonuj polecenia, otwieraj interaktywne powłoki i konfiguruj przekazywanie portów — wszystko przez zaszyfrowane kanały.
TIdSSHClient obsługuje pełny cykl życia SSH: wymianę wersji, negocjację kluczy, uwierzytelnianie użytkownika i zarządzanie kanałami. Połącz się z dowolnym serwerem SSH i uruchamiaj polecenia, otwieraj powłoki lub przekazuj porty przez przejrzyste API komponentu Delphi.
var
SSH: TIdSSHClient;
Output: string;
begin
SSH := TIdSSHClient.Create(nil);
try
SSH.Host := 'server.example.com';
SSH.Port := 22;
SSH.Authentication.Username := 'admin';
SSH.Authentication.Password := 'secret';
SSH.Connect;
// Execute a command and get output
Output := SSH.Execute('ls -la /var/log');
Memo1.Text := Output;
SSH.Disconnect;
finally
SSH.Free;
end;
end;
Metody uwierzytelniania hasłem, kluczem publicznym (RSA, ECDSA, ED25519) i klawiaturą interaktywną. Wczytuj klucze prywatne z plików PEM z opcjonalnym hasłem. Weryfikacja klucza hosta przez zdarzenie OnSSHHostKey.
Wymiana kluczy Curve25519, ECDH i Diffie-Hellman. Szyfry AES-CTR i AES-GCM. Uwierzytelnianie wiadomości HMAC-SHA2. Konfigurowalne preferencje algorytmów przez właściwość Algorithms.
Otwieraj wiele kanałów przez jedno połączenie za pomocą OpenChannel. Żądaj exec, shell lub podsystemu (np. SFTP) dla każdego kanału. Wysyłaj dane, sygnały i EOF niezależnie dla każdego kanału.
Konfigurowalny interwał keep-alive i maksymalna liczba prób do wykrywania martwych połączeń. Limity czasu połączenia i odczytu przez SSHOptions. Automatyczne ponowne generowanie kluczy przez Rekey().
Tunelowanie lokalne do zdalnego przez OpenDirectTCPIP. Przekazywanie zdalne do lokalnego przez RequestForwarding i CancelForwarding. Tuneluj dowolny ruch TCP przez zaszyfrowane połączenie SSH.
OnSSHChannelData dla danych przychodzących, OnSSHChannelExitStatus dla wyników poleceń, OnSSHAuthBanner dla banerów serwera i OnSSHError do obsługi błędów. W pełni zdarzeniowa architektura.
Bezpieczny transfer plików przez SSH. Przesyłaj, pobieraj i zarządzaj zdalnymi plikami i katalogami ze śledzeniem postępu i pełną obsługą atrybutów.
TIdSFTPClient jest zbudowany na bazie TIdSSHClient i automatycznie obsługuje podsystem SFTP. Udostępnia wysokopoziomowe API dla wszystkich typowych operacji na plikach — bez potrzeby ręcznego zarządzania kanałami SSH ani protokołem SFTP.
var
SFTP: TIdSFTPClient;
Items: TIdSFTPDirectoryItems;
i: Integer;
begin
SFTP := TIdSFTPClient.Create(nil);
try
SFTP.Host := 'sftp.example.com';
SFTP.Authentication.Username := 'admin';
SFTP.Authentication.PrivateKeyFile :=
'C:\Keys\id_rsa';
SFTP.Connect;
// Upload a file
SFTP.Put('C:\local\report.pdf',
'/remote/reports/report.pdf');
// List directory
Items := SFTP.ListDirectory('/remote/reports');
for i := 0 to Items.Count - 1 do
Memo1.Lines.Add(Items[i].FileName);
// Download a file
SFTP.Get('/remote/data.csv',
'C:\local\data.csv');
SFTP.Disconnect;
finally
SFTP.Free;
end;
end;
Get() pobiera zdalne pliki do lokalnej ścieżki lub TStream. Put() przesyła z lokalnej ścieżki lub TStream. Konfigurowalny rozmiar bufora przez SFTPBufferSize dla optymalnej przepustowości. OnSFTPProgress wyzwala się podczas transferu z liczbą przesłanych bajtów, całkowitym rozmiarem i flagą Cancel.
ListDirectory() zwraca TIdSFTPDirectoryItems z nazwą pliku, rozmiarem, uprawnieniami, znacznikami czasu i typem dla każdego wpisu. MakeDirectory() i RemoveDirectory() do zarządzania folderami. GetCurrentDirectory() zwraca zdalną ścieżkę roboczą.
Stat() i LStat() pobierają rozmiar, uprawnienia, UID/GID i znaczniki czasu. SetStat() modyfikuje zdalne atrybuty. FileExists(), DirectoryExists() i FileSize() do szybkich sprawdzeń. Obsługa dowiązań symbolicznych przez Symlink() i ReadLink().
GetFileAsString() odczytuje zdalny plik bezpośrednio do łańcucha Delphi. PutFileFromString() zapisuje łańcuch do zdalnego pliku. RealPath() rozwiązuje ścieżki względne lub symboliczne do ich bezwzględnej lokalizacji na serwerze.
Dziedziczy całe uwierzytelnianie SSH z TIdSSHClient: hasło, klucz publiczny (RSA, ECDSA, ED25519) i klawiatura interaktywna. Ustaw dane uwierzytelniające przez właściwość Authentication. Zdarzenie OnSSHHostKey do weryfikacji serwera.
OnSFTPProgress śledzi liczbę przesłanych bajtów i całkowity rozmiar z flagą Cancel do przerywania transferów. OnSFTPError dostarcza kod i komunikat błędu. OnSFTPStatus do aktualizacji stanu. OnSFTPDirectoryList wyzwala się po zakończeniu listowania katalogu.
Opcjonalne zabezpieczenia, które chronią komponenty serwerów TCP, TLS i HTTP przed typowymi atakami. Każda opcja domyślnie zachowuje dotychczasowe zachowanie, więc istniejące aplikacje pozostają nienaruszone, dopóki ich nie włączysz.
Wywołanie zwrotne weryfikacji partnera TLS nie kończy się już niejawnym powodzeniem. Włącz TIdSSLOptions.StrictVerify, a wynik weryfikacji OpenSSL będzie egzekwowany, dzięki czemu niestandardowe wywołanie zwrotne może go jedynie dodatkowo ograniczyć, lecz nigdy nie zaakceptuje niezaufanego certyfikatu.
DisableCompression łagodzi atak CRIME, DisableRenegotiation blokuje atak DoS oparty na renegocjacji inicjowanej przez klienta, a ServerCipherPreference sprawia, że to kolejność szyfrów serwera wygrywa negocjację.
RequestReadTimeout ogranicza czas na odebranie żądania, natomiast nowa metoda TIdIOHandler.SetReadDeadline dodaje całkowity limit czasu odczytu, który udaremnia działania klientów wysyłających dane powoli i wielokrotnie resetujących zwykły limit czasu bezczynności.
MaxRequestBodySize ogranicza Content-Length oraz treść przesyłaną fragmentami (odpowiada kodem 413), MaxHeaderTotalSize ogranicza całkowitą liczbę bajtów nagłówków (odpowiada kodem 431), a TIdIOHandler.MaxInputBufferSize ogranicza bufor wejściowy, aby zatrzymać odczyty prowadzące do wyczerpania pamięci.
StrictRequestParsing odrzuca niejednoznaczne żądania zawierające jednocześnie Content-Length i Transfer-Encoding, a także ujemne rozmiary fragmentów, a pętla nagłówków zamykających przesyłanie fragmentaryczne jest teraz ograniczona, aby zapobiec atakowi DoS wyczerpującemu pamięć i procesor.
Wszystkie zabezpieczenia są opcjonalne i domyślnie zachowują dotychczasowe zachowanie, bez zmian naruszających zgodność. Włącz dokładnie te zabezpieczenia, których potrzebuje Twoje wdrożenie, w wersjach od Delphi 7 po RAD Studio 13 oraz Free Pascal.