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
|
li
|
||||||
= to.overlay.name
|
= to.overlay.name
|
||||||
span.small
|
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"
|
= link_to "Remove", server_template_overlay_path(@server_template, to.overlay), method: :delete, data: { confirm: "Sure?" }, class: "btn btn--small btn--danger"
|
||||||
- else
|
- else
|
||||||
p No overlays selected.
|
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")
|
systemd_user_dir = File.expand_path("~/.config/systemd/user")
|
||||||
|
|
||||||
unless Dir.exist?(systemd_user_dir)
|
unless Dir.exist?(systemd_user_dir)
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ module L4dServer
|
||||||
end
|
end
|
||||||
|
|
||||||
def config_file_path
|
def config_file_path
|
||||||
"/opt/l4d2/servers/#{@server.id}/server.cfg"
|
"#{L4dServer::Config.server_path(@server.id)}/server.cfg"
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ module L4dServer
|
||||||
private
|
private
|
||||||
|
|
||||||
def setup_directories
|
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}/upper")
|
||||||
FileUtils.mkdir_p("#{server_dir}/work")
|
FileUtils.mkdir_p("#{server_dir}/work")
|
||||||
FileUtils.mkdir_p("#{server_dir}/merged")
|
FileUtils.mkdir_p("#{server_dir}/merged")
|
||||||
|
|
@ -45,9 +45,9 @@ module L4dServer
|
||||||
end
|
end
|
||||||
|
|
||||||
def mount_overlayfs
|
def mount_overlayfs
|
||||||
server_dir = "/opt/l4d2/servers/#{@server.id}"
|
server_dir = L4dServer::Config.server_path(@server.id)
|
||||||
overlays = @template.template_overlays.ordered.map { |to| "/opt/l4d2/overlays/#{to.overlay.slug}" }.join(":")
|
overlays = @template.template_overlays.ordered.map { |to| L4dServer::Config.overlay_path(to.overlay.slug) }.join(":")
|
||||||
lower_dirs = "#{overlays}:/opt/l4d2/installation"
|
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"
|
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
|
end
|
||||||
|
|
||||||
def unmount_overlayfs
|
def unmount_overlayfs
|
||||||
server_dir = "/opt/l4d2/servers/#{@server.id}"
|
server_dir = L4dServer::Config.server_path(@server.id)
|
||||||
merged = "#{server_dir}/merged"
|
merged = "#{server_dir}/merged"
|
||||||
|
|
||||||
if Dir.exist?(merged)
|
if Dir.exist?(merged)
|
||||||
|
|
@ -76,7 +76,7 @@ module L4dServer
|
||||||
end
|
end
|
||||||
|
|
||||||
def cleanup_directories
|
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)
|
FileUtils.rm_rf(server_dir) if Dir.exist?(server_dir)
|
||||||
rescue StandardError => e
|
rescue StandardError => e
|
||||||
Rails.logger.warn("Failed to cleanup directories: #{e.message}")
|
Rails.logger.warn("Failed to cleanup directories: #{e.message}")
|
||||||
|
|
|
||||||
|
|
@ -94,8 +94,8 @@ module L4dServer
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
User=steam
|
User=steam
|
||||||
ExecStart=/opt/l4d2/bin/start-server #{@server.id}
|
ExecStart=#{L4dServer::Config.bin_path}/start-server #{@server.id}
|
||||||
ExecStop=/opt/l4d2/bin/stop-server #{@server.id}
|
ExecStop=#{L4dServer::Config.bin_path}/stop-server #{@server.id}
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=10
|
RestartSec=10
|
||||||
Nice=-10
|
Nice=-10
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue