Skip to content

akvaplan-niva/ferrybox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3fb6456 · Nov 23, 2022

History

45 Commits
Nov 23, 2022
Nov 22, 2022
Nov 22, 2022
Nov 17, 2022
Nov 22, 2022
Nov 11, 2022
Nov 22, 2022
Nov 22, 2022
Nov 22, 2022
Nov 22, 2022
Nov 11, 2022
Nov 22, 2022
Nov 22, 2022
Nov 22, 2022
Nov 22, 2022
Nov 22, 2022
Nov 21, 2022
Nov 10, 2022
Nov 21, 2022
Nov 22, 2022
Nov 17, 2022
Nov 22, 2022
Nov 22, 2022
Nov 22, 2022
Nov 22, 2022

Repository files navigation

ferrybox

Deno IoT endpoint for FerryBoxes operated by Akvaplan-niva.

Production

Production URL: https://ferrybox.deno.dev

Continuous integration / deployment (CI/CD)

The production service is integrated with a CI/CD pipeline on GitHub.

Code merged into main creates a new production deployment, provided all tests are green.

Notice: All git commits must be made to a feature branch and submitted via a pull request before they can be merged into main.

Features

  • Accepts FerryBox messages as (ND)JSON via HTTP POST
  • Validated messages are PUT put into cloud storage
  • Hashed passwords are protected and verified by strong cryptographic function scrypt (RFC)
  • Robust, scalable, low-latency operations via Deno Deploy's distributed edge computing network
  • Built in documentation

Use

import { createFerryBoxServer } from "./ferrybox.ts";

if (import.meta.main) {
  Deno.serve(createFerryBoxServer());
}

Configure

Configure using env variables

export ferrybox_endpoints='["ferrybox-dev1"]'
export ferrybox_cloud="azure"
export azure_account=""
export azure_key=""
export scrypt_basic_auth_users='[["username","scrypthash"]]'

Notice: The endpoint pathname is used as cloud storage bucket/container

Dev

deno task dev

Example curl POST

curl -vXPOST http://127.0.0.1:8000/ferrybox-dev1 --netrc-file .netrc -d'{}' -H "content-type: application/x-ndjson"