Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 26 additions & 14 deletions config.ml
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,39 @@
open Mirage

let packages = [
Functoria.package "letsencrypt";
Functoria.package "uri";
Functoria.package ~sublibs:["kv"] "chamelon";
Functoria.package ~sublibs:["ocaml"] "digestif";
Functoria.package ~sublibs:["ocaml"] "checkseum";
package "uri";
package ~sublibs:["ocaml"] "digestif";
package ~sublibs:["ocaml"] "checkseum";
package "paf";
package "paf-le";
package "paf" ~sublibs:[ "mirage" ];
package "multipart_form-lwt";
]

let stack = generic_stackv4v6 default_network
let conduit = conduit_direct ~tls:true stack
let http_srv = cohttp_server conduit
let http_client_imp = cohttp_client (resolver_dns stack) conduit
let block_imp = block_of_file "url-shortener-db.img"

let host =
let doc = Key.Arg.info ~doc:"Fully-qualified domain name for the server. Certificates will be requested from Let's Encrypt for this name." ["host"] in
Key.(create "host" Arg.(required string doc))

let keys = List.map Key.abstract [ host ]
let tls =
let doc = Key.Arg.info ~doc:"Bootstrap with a Let's encrypt certificate and an HTTPS server." ["tls"] in
Key.(create "tls" Arg.(opt bool false doc))

let port =
let doc = Key.Arg.info ~doc:"Port where the HTTP(S) must listen." ["port"] in
Key.(create "port" Arg.(opt (some int) None doc))

let program_block_size =
let doc = Key.Arg.info ~doc:"Program block size." [ "program-block-size" ] in
Key.(create "program_block_size" Arg.(opt int 16 doc))

let keys = [ Key.v host; Key.v tls; Key.v port ]

let main =
foreign ~packages ~keys "Shortener.Main" (block @-> pclock @-> time @-> http @-> http_client @-> job)
foreign ~packages ~keys "Shortener.Main" (kv_rw @-> pclock @-> time @-> stackv4v6 @-> dns_client @-> job)

let stack = generic_stackv4v6 default_network
let block = chamelon ~program_block_size (block_of_file "db")
let dns = generic_dns_client stack

let () =
register "shortener" [ main $ block_imp $ default_posix_clock $ default_time $ http_srv $ http_client_imp ]
register "shortener" [ main $ block $ default_posix_clock $ default_time $ stack $ dns ]
116 changes: 0 additions & 116 deletions le.ml

This file was deleted.

Loading