From 48d225002427e874a3b02ee0ba88ba6169304c52 Mon Sep 17 00:00:00 2001 From: Caian Benedicto Date: Sat, 14 Dec 2024 06:53:30 -0300 Subject: [PATCH] Unify socket_binding and socket_permissions --- config/config.example.yml | 17 ++++------------- src/invidious.cr | 12 +++++++----- src/invidious/config.cr | 4 +--- 3 files changed, 12 insertions(+), 21 deletions(-) diff --git a/config/config.example.yml b/config/config.example.yml index 3c090481..afa1d252 100644 --- a/config/config.example.yml +++ b/config/config.example.yml @@ -131,25 +131,16 @@ https_only: false #hsts: true ## -## Path of a UNIX socket to listen on for incoming connections. +## Path and permissions of a UNIX socket to listen on for incoming connections. ## ## Note: Enabling socket will make invidious stop listening on the address ## specified by 'host_binding' and 'port'. ## -## Accepted values: Any path to a new file (that doesn't exist yet) +## Accepted values: Any path to a new file (that doesn't exist yet) and its +## permissions following the UNIX octal convention. ## Default: ## -#socket_binding: /tmp/invidious.sock - -## -## Permissions for the UNIX socket specified by 'socket_binding'. -## -## Note: The permissions are given in octal, following UNIX convention. -## -## Accepted values: 000-777 -## Default: 777 -## -#socket_permissions: 777 +#socket_binding: /tmp/invidious.sock,777 # ----------------------------- diff --git a/src/invidious.cr b/src/invidious.cr index 92ae8045..afbffcde 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -249,13 +249,15 @@ Kemal.config.app_name = "Invidious" Kemal.run do |config| if CONFIG.socket_binding - if File.exists?(CONFIG.socket_binding.not_nil!) - File.delete(CONFIG.socket_binding.not_nil!) + socket_binding = CONFIG.socket_binding.not_nil! + if File.exists?(socket_binding) + File.delete(socket_binding) end # Create a socket and set its desired permissions - server = UNIXServer.new(CONFIG.socket_binding.not_nil!) - perms = CONFIG.socket_permissions.to_i(base: 8) - File.chmod(CONFIG.socket_binding.not_nil!, perms) + tokens = socket_binding.rpartition(',') + server = UNIXServer.new(tokens[0]) + perms = tokens[2].to_i(base: 8) + File.chmod(tokens[0], perms) config.server.not_nil!.bind server else Kemal.config.host_binding = Kemal.config.host_binding != "0.0.0.0" ? Kemal.config.host_binding : CONFIG.host_binding diff --git a/src/invidious/config.cr b/src/invidious/config.cr index 7c9e9ca6..feda3958 100644 --- a/src/invidious/config.cr +++ b/src/invidious/config.cr @@ -138,10 +138,8 @@ class Config property port : Int32 = 3000 # Host to bind (overridden by command line argument) property host_binding : String = "0.0.0.0" - # Make Invidious listen on a UNIX socket instead of a TCP port - Example: /tmp/invidious.sock + # Path and permissions to make Invidious listen on a UNIX socket instead of a TCP port - Example: /tmp/invidious.sock,777 property socket_binding : String? = nil - # Permissions of the listening socket in octal - property socket_permissions : String = "777" # Pool size for HTTP requests to youtube.com and ytimg.com (each domain has a separate pool of `pool_size`) property pool_size : Int32 = 100 # HTTP Proxy configuration