mirror of
https://github.com/reynir/banawa-chat.git
synced 2024-11-21 12:27:54 +00:00
Update to mirage 4.7, banawa-mirage changes
This commit is contained in:
parent
3f43398866
commit
2db6ae5378
20
config.ml
20
config.ml
|
@ -1,17 +1,14 @@
|
|||
(* mirage >= 4.7.0 *)
|
||||
open Mirage
|
||||
|
||||
let port =
|
||||
let doc = Key.Arg.info ~doc:"The TCP port for listening for SSH connections" ["port"] in
|
||||
Key.(create "port" Arg.(opt int 22 doc))
|
||||
|
||||
let hostkey =
|
||||
let doc = Key.Arg.info ~doc:"SSH host key" ["hostkey"] in
|
||||
Key.(create "hostkey" Arg.(required string doc))
|
||||
|
||||
let main =
|
||||
let runtime_args = [
|
||||
runtime_arg ~pos:__POS__ "Unikernel.K.port";
|
||||
runtime_arg ~pos:__POS__ "Unikernel.K.hostkey";
|
||||
] in
|
||||
let packages = [
|
||||
package "banawa" ~pin:"git+https://github.com/sorbusursina/banawa-ssh.git";
|
||||
package "banawa-mirage" ~pin:"git+https://github.com/sorbusursina/banawa-ssh.git";
|
||||
package "awa" ~pin:"git+https://github.com/reynir/awa-ssh.git#banawa";
|
||||
package "banawa-mirage" ~pin:"git+https://github.com/sorbusursina/banawa-ssh.git#awa";
|
||||
package "notty";
|
||||
package "nottui"
|
||||
~pin:"git+https://github.com/dinosaure/lwd.git#9e78758d5987597bac65fe73bd30ff80741cfe83";
|
||||
|
@ -19,8 +16,7 @@ let main =
|
|||
~pin:"git+https://github.com/dinosaure/lwd.git#9e78758d5987597bac65fe73bd30ff80741cfe83";
|
||||
package "art";
|
||||
] in
|
||||
let keys = [ Key.v port ; Key.v hostkey ] in
|
||||
foreign ~keys ~packages "Unikernel.Main" (random @-> time @-> mclock @-> stackv4v6 @-> job)
|
||||
main ~runtime_args ~packages "Unikernel.Main" (random @-> time @-> mclock @-> stackv4v6 @-> job)
|
||||
|
||||
let () =
|
||||
register "banawa-chat" [
|
||||
|
|
22
unikernel.ml
22
unikernel.ml
|
@ -6,7 +6,18 @@ type state =
|
|||
; mutable size : int * int
|
||||
}
|
||||
|
||||
module Main (_ : Mirage_random.S) (T : Mirage_time.S) (M : Mirage_clock.MCLOCK) (Stack : Tcpip.Stack.V4V6) = struct
|
||||
module K = struct
|
||||
open Cmdliner
|
||||
let port =
|
||||
let doc = Arg.info ~doc:"The TCP port for listening for SSH connections" ["port"] in
|
||||
Arg.(value & opt int 22 doc)
|
||||
|
||||
let hostkey =
|
||||
let doc = Arg.info ~doc:"SSH host key" ["hostkey"] in
|
||||
Arg.(required & opt (some string) None doc)
|
||||
end
|
||||
|
||||
module Main (_ : Mirage_crypto_rng_mirage.S) (T : Mirage_time.S) (M : Mirage_clock.MCLOCK) (Stack : Tcpip.Stack.V4V6) = struct
|
||||
module Ssh = Banawa_mirage.Make(Stack.TCP)(T)(M)
|
||||
module Nottui' = Nottui_mirage.Make(T)
|
||||
|
||||
|
@ -59,17 +70,14 @@ module Main (_ : Mirage_random.S) (T : Mirage_time.S) (M : Mirage_clock.MCLOCK)
|
|||
Nottui'.run ~cursor (t.size, t.sigwinch) ui ic oc;
|
||||
]
|
||||
|
||||
let start _random _time _mtime stack =
|
||||
let port = Key_gen.port () in
|
||||
let user_db = Banawa.Auth.Db.create 20 in
|
||||
let hostkey = Key_gen.hostkey () in
|
||||
let start _random _time _mtime stack port hostkey =
|
||||
let hostkey =
|
||||
match Banawa.Keys.of_string hostkey with
|
||||
match Awa.Keys.of_string hostkey with
|
||||
| Ok k -> k
|
||||
| Error `Msg e ->
|
||||
Logs.err (fun m -> m "%s" e); exit 1
|
||||
in
|
||||
let server, msgs = Banawa.Server.make hostkey user_db in
|
||||
let server, msgs = Awa.Server.make hostkey in
|
||||
Stack.TCP.listen (Stack.tcp stack) ~port
|
||||
(fun flow ->
|
||||
let stop = Lwt_switch.create () in
|
||||
|
|
Loading…
Reference in a new issue