-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathconfig.ml
54 lines (42 loc) · 1.51 KB
/
config.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
open Mirage
let data_dir = "data"
let disk = crunch data_dir
let port =
let doc = Key.Arg.info ~doc:"Listening port." ["port"] in
Key.(create "port" Arg.(opt int 443 doc))
let dns_key =
let doc = Key.Arg.info ~doc:"nsupdate key (name:type:value,...)" ["dns-key"] in
Key.(create "dns-key" Arg.(required string doc))
let dns_server =
let doc = Key.Arg.info ~doc:"dns server IP" ["dns-server"] in
Key.(create "dns-server" Arg.(required ipv4_address doc))
let dns_port =
let doc = Key.Arg.info ~doc:"dns server port" ["dns-port"] in
Key.(create "dns-port" Arg.(opt int 53 doc))
let hostname =
let doc = Key.Arg.info ~doc:"hostname" ["hostname"] in
Key.(create "hostname" Arg.(required string doc))
let key_seed =
let doc = Key.Arg.info ~doc:"certificate key seed" ["key-seed"] in
Key.(create "key-seed" Arg.(required string doc))
let keys = Key.[
abstract port ; abstract dns_key ; abstract dns_server ; abstract dns_port ;
abstract hostname ; abstract key_seed
]
let stack = generic_stackv4 default_network
let server =
foreign ~deps:[abstract nocrypto] ~keys "Unikernel.Main" @@
random @-> pclock @-> time @-> stackv4 @-> kv_ro @-> job
let () =
let packages = [
package "cohttp-mirage" ;
package "yojson" ;
package "sexplib" ;
package ~sublibs:["mirage"] "tls" ;
package ~sublibs:["lwt"] "logs" ;
package ~sublibs:["mirage.certify"] "udns" ;
]
in
register ~packages "tls-server" [
server $ default_random $ default_posix_clock $ default_time $ stack $ disk
]