tpisto / ftp-any-get

Node.js native module to get file from FTP, FTPS and SFTP sources

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Node.js native module to get file from FTP, FTPS and SFTP sources.

ftp-any-get

CI

Motivation ๐Ÿง

  • Easy to install
  • Easy to use. Just single async function: "getFile".
  • 0 npm package dependencies

How to use ๐Ÿ“š

Get file from the ftp server (index.mjs)

import { getFile } from "@tpisto/ftp-any-get"

async function main() {
  // Fetch from FTP server
  let ftpFile = await getFile("ftp://demo:password@my-ftp-server.net/my-file.txt");

  // Fetch from FTP server using TLS
  let ftpsFile = await getFile("ftps://demo:password@my-ftp-server.net/my-file.txt");

  // Fetch file using SFTP. SFTP runs over the SSH protocol.
  let sftpFile = await getFile("sftp://demo:password@my-ftp-server.net/my-file.txt");
}
main();

If you want to accept_invalid_certs ๐Ÿ˜ฎ, you can disable cert checks by adding "accept_invalid_certs" parameter to function.

import { getFile } from "@tpisto/ftp-any-get"

async function main() {
  // Fetch from FTP server using TLS and use "danger_accept_invalid_certs"
  let ftpsFile = await getFile("ftps://demo:password@my-ftp-server.net/my-file.txt", true);
}
main();

Install โ˜

npm install @tpisto/ftp-any-get

or

yarn add @tpisto/ftp-any-get

Supported platforms (macOS M1 and x86_64, Linux ARM and x86_64)

  • x86_64-apple-darwin
  • aarch64-apple-darwin
  • x86_64-unknown-linux-gnu
  • aarch64-unknown-linux-gnu

Install notes (Ubuntu/Debian)

โš ๏ธ You need to have "ca-certificates" installed in the system. For example "node:16" docker container has that already, but "node:16-slim" does not. So in "slim" containers you need to install "ca-certificates" package. If you do not have "ca-certificates" in your system, you can use "FTP" and "SFTP", but "FTPS" will fail with error thread 'tokio-runtime-worker' panicked at 'called `Result::unwrap()` on an `Err` value: SecureError("error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:ssl/statem/statem_clnt.c:1914: (unable to get local issuer certificate)")', src/ftp_ftps.rs:24:8

Automatically tested Node.js versions

node12 node14 node16
macOS x64 โœ“ โœ“ โœ“
macOS aarch64 โœ“ โœ“ โœ“
Linux x64 gnu โœ“ โœ“ โœ“
Linux aarch64 gnu โœ“ โœ“ โœ“

This Node.js native module is written in Rust. Powered by:

About

Node.js native module to get file from FTP, FTPS and SFTP sources

License:Other


Languages

Language:JavaScript 64.3%Language:Rust 35.2%Language:Shell 0.5%