package awa-mirage

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

SSH module given a flow

Parameters

module F : Mirage_flow.S
module T : Mirage_time.S
module M : Mirage_clock.MCLOCK

Signature

module FLOW = F
type error = [
  1. | `Msg of string
  2. | `Read of F.error
  3. | `Write of F.write_error
]

possible errors: incoming alert, processing failure, or a problem in the underlying flow.

type write_error = [
  1. | `Closed
  2. | error
]

The type for write errors.

we provide the FLOW interface

include Mirage_flow.S with type error := error and type write_error := write_error
val pp_error : error Fmt.t
val pp_write_error : write_error Fmt.t
type flow
val read : flow -> (Cstruct.t Mirage_flow.or_eof, error) Stdlib.result Lwt.t
val write : flow -> Cstruct.t -> (unit, write_error) Stdlib.result Lwt.t
val writev : flow -> Cstruct.t list -> (unit, write_error) Stdlib.result Lwt.t
val close : flow -> unit Lwt.t
val client_of_flow : ?authenticator:Awa.Keys.authenticator -> user:string -> Awa.Hostkey.priv -> Awa.Ssh.channel_request -> FLOW.flow -> (flow, error) Stdlib.result Lwt.t

client_of_flow ~authenticator ~user key channel_request flow upgrades the existing connection to SSH, mutually authenticates, opens a channel and sends the channel request.

type t
type sshin_msg = [
  1. | `Data of Cstruct.t
  2. | `Eof
]
type exec_callback = string -> (unit -> sshin_msg Lwt.t) -> (Cstruct.t -> unit Lwt.t) -> (Cstruct.t -> unit Lwt.t) -> unit Lwt.t
val spawn_server : Awa.Server.t -> Awa.Ssh.message list -> F.flow -> exec_callback -> t Lwt.t
OCaml

Innovation. Community. Security.