configurable paths
This commit is contained in:
parent
7c4177d749
commit
024bbe2ec7
5 changed files with 56 additions and 10 deletions
|
|
@ -19,7 +19,7 @@
|
|||
li
|
||||
= to.overlay.name
|
||||
span.small
|
||||
| (dir: /opt/l4d2/overlays/#{to.overlay.slug})
|
||||
| (dir: #{L4dServer::Config.overlay_path(to.overlay.slug)})
|
||||
= link_to "Remove", server_template_overlay_path(@server_template, to.overlay), method: :delete, data: { confirm: "Sure?" }, class: "btn btn--small btn--danger"
|
||||
- else
|
||||
p No overlays selected.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,49 @@
|
|||
# Configuration for L4D2 server paths
|
||||
module L4dServer
|
||||
class Config
|
||||
class << self
|
||||
# Base directory for all L4D2 server files
|
||||
def base_path
|
||||
@base_path ||= ENV.fetch("L4D2_BASE_PATH", "/opt/l4d2")
|
||||
end
|
||||
|
||||
def base_path=(path)
|
||||
@base_path = path
|
||||
end
|
||||
|
||||
# Directory containing the base L4D2 installation
|
||||
def installation_path
|
||||
File.join(base_path, "installation")
|
||||
end
|
||||
|
||||
# Directory containing overlay filesystems
|
||||
def overlays_path
|
||||
File.join(base_path, "overlays")
|
||||
end
|
||||
|
||||
# Directory containing individual server instances
|
||||
def servers_path
|
||||
File.join(base_path, "servers")
|
||||
end
|
||||
|
||||
# Directory containing helper scripts (start-server, stop-server)
|
||||
def bin_path
|
||||
File.join(base_path, "bin")
|
||||
end
|
||||
|
||||
# Full path to a specific server directory
|
||||
def server_path(server_id)
|
||||
File.join(servers_path, server_id.to_s)
|
||||
end
|
||||
|
||||
# Full path to a specific overlay directory
|
||||
def overlay_path(slug)
|
||||
File.join(overlays_path, slug)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
systemd_user_dir = File.expand_path("~/.config/systemd/user")
|
||||
|
||||
unless Dir.exist?(systemd_user_dir)
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ module L4dServer
|
|||
end
|
||||
|
||||
def config_file_path
|
||||
"/opt/l4d2/servers/#{@server.id}/server.cfg"
|
||||
"#{L4dServer::Config.server_path(@server.id)}/server.cfg"
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ module L4dServer
|
|||
private
|
||||
|
||||
def setup_directories
|
||||
server_dir = "/opt/l4d2/servers/#{@server.id}"
|
||||
server_dir = L4dServer::Config.server_path(@server.id)
|
||||
FileUtils.mkdir_p("#{server_dir}/upper")
|
||||
FileUtils.mkdir_p("#{server_dir}/work")
|
||||
FileUtils.mkdir_p("#{server_dir}/merged")
|
||||
|
|
@ -45,9 +45,9 @@ module L4dServer
|
|||
end
|
||||
|
||||
def mount_overlayfs
|
||||
server_dir = "/opt/l4d2/servers/#{@server.id}"
|
||||
overlays = @template.template_overlays.ordered.map { |to| "/opt/l4d2/overlays/#{to.overlay.slug}" }.join(":")
|
||||
lower_dirs = "#{overlays}:/opt/l4d2/installation"
|
||||
server_dir = L4dServer::Config.server_path(@server.id)
|
||||
overlays = @template.template_overlays.ordered.map { |to| L4dServer::Config.overlay_path(to.overlay.slug) }.join(":")
|
||||
lower_dirs = "#{overlays}:#{L4dServer::Config.installation_path}"
|
||||
|
||||
mount_cmd = "fuse-overlayfs -o lowerdir=#{lower_dirs},upperdir=#{server_dir}/upper,workdir=#{server_dir}/work #{server_dir}/merged"
|
||||
|
||||
|
|
@ -65,7 +65,7 @@ module L4dServer
|
|||
end
|
||||
|
||||
def unmount_overlayfs
|
||||
server_dir = "/opt/l4d2/servers/#{@server.id}"
|
||||
server_dir = L4dServer::Config.server_path(@server.id)
|
||||
merged = "#{server_dir}/merged"
|
||||
|
||||
if Dir.exist?(merged)
|
||||
|
|
@ -76,7 +76,7 @@ module L4dServer
|
|||
end
|
||||
|
||||
def cleanup_directories
|
||||
server_dir = "/opt/l4d2/servers/#{@server.id}"
|
||||
server_dir = L4dServer::Config.server_path(@server.id)
|
||||
FileUtils.rm_rf(server_dir) if Dir.exist?(server_dir)
|
||||
rescue StandardError => e
|
||||
Rails.logger.warn("Failed to cleanup directories: #{e.message}")
|
||||
|
|
|
|||
|
|
@ -94,8 +94,8 @@ module L4dServer
|
|||
[Service]
|
||||
Type=simple
|
||||
User=steam
|
||||
ExecStart=/opt/l4d2/bin/start-server #{@server.id}
|
||||
ExecStop=/opt/l4d2/bin/stop-server #{@server.id}
|
||||
ExecStart=#{L4dServer::Config.bin_path}/start-server #{@server.id}
|
||||
ExecStop=#{L4dServer::Config.bin_path}/stop-server #{@server.id}
|
||||
Restart=on-failure
|
||||
RestartSec=10
|
||||
Nice=-10
|
||||
|
|
|
|||
Loading…
Reference in a new issue