# Simple example

In this example you will see how to import our dependencies and how to use them.

# Import

Add the package to your project:

deno add @dftp/server

Then import:

import { Server } from "@dftp/server";

# Server options

Create an instance of Server with these options:

const server = new Server({ port: 21 });

# With TLS/SSL support

const server = new Server({
  port: 21,
  cert: Deno.readTextFileSync("cert.pem"),
  key: Deno.readTextFileSync("key.pem"),
});

# Handle connections

Wait for connections and handle authentication using the on("login") event:

for await (const conn of server) {
  conn.on("login", async ({ username, password }, resolve, reject) => {
    if (username === "admin" && password === "secret") {
      resolve({ root: "/srv/ftp", uid: 1000, gid: 1000 });
    } else {
      reject();
    }
  });
}

# Full example

import { Server } from "@dftp/server";

const server = new Server({ port: 21 });
console.log("FTP server listening on port 21");

for await (const conn of server) {
  conn.on("login", async ({ username, password }, resolve, reject) => {
    if (username === "admin" && password === "secret") {
      resolve({ root: "/srv/ftp", uid: 1000, gid: 1000 });
    } else {
      reject();
    }
  });
}

# With TLS/SSL

import { Server } from "@dftp/server";

const server = new Server({
  port: 21,
  cert: Deno.readTextFileSync("cert.pem"),
  key: Deno.readTextFileSync("key.pem"),
});

console.log("FTP server with TLS listening on port 21");

for await (const conn of server) {
  conn.on("login", async ({ username, password }, resolve, reject) => {
    if (username === "admin" && password === "secret") {
      resolve({ root: "/srv/ftp", uid: 1000, gid: 1000 });
    } else {
      reject();
    }
  });
}