From f7a3c4fdac8eeacc0e8a414949094663307916d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reynir=20Bj=C3=B6rnsson?= Date: Thu, 26 Nov 2020 09:19:58 +0100 Subject: [PATCH] Generate systemd.socket files --- packaging/Linux/albatross_console.socket | 12 ------ packaging/Linux/albatross_daemon.socket | 11 ----- packaging/Linux/albatross_log.socket | 12 ------ packaging/Linux/albatross_stats.socket | 12 ------ packaging/Linux/dune | 3 ++ packaging/Linux/gen_socket.ml | 51 ++++++++++++++++++++++++ 6 files changed, 54 insertions(+), 47 deletions(-) delete mode 100644 packaging/Linux/albatross_console.socket delete mode 100644 packaging/Linux/albatross_daemon.socket delete mode 100644 packaging/Linux/albatross_log.socket delete mode 100644 packaging/Linux/albatross_stats.socket create mode 100644 packaging/Linux/dune create mode 100644 packaging/Linux/gen_socket.ml diff --git a/packaging/Linux/albatross_console.socket b/packaging/Linux/albatross_console.socket deleted file mode 100644 index e206bfe..0000000 --- a/packaging/Linux/albatross_console.socket +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Albatross console socket -PartOf=albatross_console.service - -[Socket] -ListenStream=%t/albatross/util/console.sock -SocketUser=albatross -SocketMode=0600 -Accept=no - -[Install] -WantedBy=sockets.target diff --git a/packaging/Linux/albatross_daemon.socket b/packaging/Linux/albatross_daemon.socket deleted file mode 100644 index fe2ec07..0000000 --- a/packaging/Linux/albatross_daemon.socket +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Albatross daemon socket -PartOf=albatross_daemon.service - -[Socket] -ListenStream=%t/albatross/util/vmmd.sock -SocketMode=0600 -Accept=no - -[Install] -WantedBy=sockets.target diff --git a/packaging/Linux/albatross_log.socket b/packaging/Linux/albatross_log.socket deleted file mode 100644 index 25ba45c..0000000 --- a/packaging/Linux/albatross_log.socket +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Albatross log socket -PartOf=albatross_log.service - -[Socket] -ListenStream=%t/albatross/util/log.sock -SocketUser=albatross -SocketMode=0600 -Accept=no - -[Install] -WantedBy=sockets.target diff --git a/packaging/Linux/albatross_stats.socket b/packaging/Linux/albatross_stats.socket deleted file mode 100644 index eca6a5e..0000000 --- a/packaging/Linux/albatross_stats.socket +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Albatross stats socket -PartOf=albatross_stats.service - -[Socket] -ListenStream=%t/albatross/util/stat.sock -SocketUser=albatross -SocketMode=0600 -Accept=no - -[Install] -WantedBy=sockets.target diff --git a/packaging/Linux/dune b/packaging/Linux/dune new file mode 100644 index 0000000..e980f92 --- /dev/null +++ b/packaging/Linux/dune @@ -0,0 +1,3 @@ +(executable + (name gen_socket) + (libraries albatross)) diff --git a/packaging/Linux/gen_socket.ml b/packaging/Linux/gen_socket.ml new file mode 100644 index 0000000..192d1f9 --- /dev/null +++ b/packaging/Linux/gen_socket.ml @@ -0,0 +1,51 @@ +let pp_service ppf = function + | `Console -> Fmt.pf ppf "console" + | `Vmmd -> Fmt.pf ppf "daemon" + | `Stats -> Fmt.pf ppf "stats" + | `Log -> Fmt.pf ppf "log" + +let unprivileged_services = [ `Console; `Log; `Stats ] +let privileged_services = [ `Vmmd ] + +let unprivileged_format : _ format= {|[Unit] +Description=Albatross %s socket +PartOf=%s + +[Socket] +ListenStream=%s +SocketUser=albatross +SocketMode=0600 +Accept=no + +[Install] +WantedBy=sockets.target +|} + +let privileged_format : _ format = {|[Unit] +Description=Albatross %s socket +PartOf=%s + +[Socket] +ListenStream=%s +SocketMode=0600 +Accept=no + +[Install] +WantedBy=sockets.target +|} + +let write_socket privileged service = + let out_file = Fmt.str "albatross_%a.socket" pp_service service in + let systemd_service = Fmt.str "albatross_%a.service" pp_service service in + let service_name = Fmt.str "%a" pp_service service in + let socket_path = Vmm_core.socket_path (service :> Vmm_core.service) in + let oc = open_out out_file in + let ppf = Format.formatter_of_out_channel oc in + Fmt.pf ppf (if privileged then privileged_format else unprivileged_format) + service_name systemd_service socket_path + +let () = + let tmpdir = Fpath.(v "%t" / "albatross") in + let () = Vmm_core.set_tmpdir tmpdir in + List.iter (write_socket false) unprivileged_services; + List.iter (write_socket true) privileged_services