Change socket_binding to a nested configuration in YAML

This commit is contained in:
Caian Benedicto 2024-12-14 15:18:25 -03:00
parent 48d2250024
commit 275318dae2
3 changed files with 16 additions and 8 deletions

View File

@ -140,7 +140,9 @@ https_only: false
## permissions following the UNIX octal convention. ## permissions following the UNIX octal convention.
## Default: <none> ## Default: <none>
## ##
#socket_binding: /tmp/invidious.sock,777 #socket_binding:
# path: /tmp/invidious.sock
# permissions: 777
# ----------------------------- # -----------------------------

View File

@ -250,14 +250,13 @@ Kemal.config.app_name = "Invidious"
Kemal.run do |config| Kemal.run do |config|
if CONFIG.socket_binding if CONFIG.socket_binding
socket_binding = CONFIG.socket_binding.not_nil! socket_binding = CONFIG.socket_binding.not_nil!
if File.exists?(socket_binding) if File.exists?(socket_binding.path)
File.delete(socket_binding) File.delete(socket_binding.path)
end end
# Create a socket and set its desired permissions # Create a socket and set its desired permissions
tokens = socket_binding.rpartition(',') server = UNIXServer.new(socket_binding.path)
server = UNIXServer.new(tokens[0]) perms = socket_binding.permissions.to_i(base: 8)
perms = tokens[2].to_i(base: 8) File.chmod(socket_binding.path, perms)
File.chmod(tokens[0], perms)
config.server.not_nil!.bind server config.server.not_nil!.bind server
else else
Kemal.config.host_binding = Kemal.config.host_binding != "0.0.0.0" ? Kemal.config.host_binding : CONFIG.host_binding Kemal.config.host_binding = Kemal.config.host_binding != "0.0.0.0" ? Kemal.config.host_binding : CONFIG.host_binding

View File

@ -8,6 +8,13 @@ struct DBConfig
property dbname : String property dbname : String
end end
struct SocketBindingConfig
include YAML::Serializable
property path : String
property permissions : String
end
struct ConfigPreferences struct ConfigPreferences
include YAML::Serializable include YAML::Serializable
@ -139,7 +146,7 @@ class Config
# Host to bind (overridden by command line argument) # Host to bind (overridden by command line argument)
property host_binding : String = "0.0.0.0" property host_binding : String = "0.0.0.0"
# Path and permissions to make Invidious listen on a UNIX socket instead of a TCP port - Example: /tmp/invidious.sock,777 # 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 property socket_binding : SocketBindingConfig? = nil
# Pool size for HTTP requests to youtube.com and ytimg.com (each domain has a separate pool of `pool_size`) # 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 property pool_size : Int32 = 100
# HTTP Proxy configuration # HTTP Proxy configuration