Files
simplexmq/xftp-web
Evgeny 3f40febe60 smp web: spike (#1745)
* smp web: initial setup

* encoding/decoding of LGET/LNK

* SMP over websocket handshake works

* parse short connection links

* hkdf for short links

* refactor hkdf

* decrypt link data

* fetch link data via websocket

* signed challenge in web handshake

* test: skip smp-web tests when TS not built

* block encryption

* gitignore

* parse FixedLinkData

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-05-11 18:24:54 +01:00
..
2026-05-11 18:24:54 +01:00
2026-05-11 18:24:54 +01:00

xftp-web

Browser-compatible XFTP file transfer client in TypeScript.

Prerequisites

  • Haskell toolchain with cabal (to build xftp-server)
  • Node.js 20+
  • Chromium system dependencies (see below)

Setup

# Build the XFTP server binary (from repo root)
cabal build xftp-server

# Install JS dependencies
cd xftp-web
npm install

# Install Chromium for Playwright (browser tests)
npx playwright install chromium

If Chromium fails to launch due to missing system libraries, install them with:

# Requires root
npx playwright install-deps chromium

Running tests

# Browser round-trip test (vitest + Playwright headless Chromium)
npm run test

The browser test automatically starts an xftp-server instance on port 7000 via globalSetup, using certs from tests/fixtures/.

Build

npm run build

Output goes to dist/.