Files

166 lines
4.5 KiB
Ruby
Raw Permalink Normal View History

2026-06-12 15:40:12 -04:00
class ApplicationController < Sinatra::Base
register Sinatra::ActiveRecordExtension
register Sinatra::Contrib
configure do
set :views, File.expand_path('../../views', __FILE__)
set :public_folder, File.expand_path('../../../public', __FILE__)
set :root, File.expand_path('../../..', __FILE__)
set :trust_proxy, true
set :bind, '0.0.0.0'
set :port, 4567
end
2026-06-17 22:30:32 -04:00
before do
local_network = LocalNetwork.first
@dark_hex = local_network.primary_dark_hex || "140029"
@light_hex = local_network.primary_light_hex || "8000FF"
@accent_hex = local_network.accent_hex || "2FD400"
end
2026-06-12 15:40:12 -04:00
get '/' do
client_ip = request.ip.to_s
puts client_ip
if client_ip.start_with?('100.')
@url_type = 'tailscale'
elsif params[:local_ip].present? && params[:local_ip] == 'true'
@url_type = 'local_ip'
else
@url_type = 'local_domain'
end
@media = ServiceType.media
@media.services.map { |serv| serv.set_current_url(@url_type) }
@support = ServiceType.support
@support.services.map { |serv| serv.set_current_url(@url_type) }
@admin = ServiceType.admin
@admin.services.map { |serv| serv.set_current_url(@url_type) }
erb :'index'
end
get '/admin' do
erb :'admin/index'
end
get '/admin/local_network' do
@local_network = LocalNetwork.first || LocalNetwork.new
2026-06-17 22:30:32 -04:00
@editing = true
2026-06-12 15:40:12 -04:00
erb :'admin/local_network/index'
end
get '/admin/local_network/edit' do
@local_network = LocalNetwork.first || LocalNetwork.create
2026-06-17 22:30:32 -04:00
@editing = false
2026-06-12 15:40:12 -04:00
erb :'admin/local_network/index'
end
post '/admin/local_network' do
@local_network = LocalNetwork.find(params[:local_network][:id])
if @local_network.update(params[:local_network])
redirect 'admin/local_network'
else
erb :'admin/local_network/index'
end
end
get '/admin/machines' do
@machines = Machine.all
2026-06-17 22:30:32 -04:00
@editing = true
2026-06-12 15:40:12 -04:00
erb :'admin/machines/index'
end
get '/admin/machines/edit' do
@machines = Machine.all
2026-06-17 22:30:32 -04:00
@editing = false
2026-06-12 15:40:12 -04:00
erb :'admin/machines/index'
end
post '/admin/machines' do
params[:machines].each do |machine_data|
machine_data["local_network_id"] = 1
if machine_data[:id].empty? && machine_data[:name].present?
Machine.create(machine_data)
elsif machine_data[:id].present?
@machine = Machine.find(machine_data[:id])
@machine.update(machine_data)
end
end
redirect 'admin/machines'
end
get '/admin/service_types' do
@service_types = ServiceType.all
2026-06-17 22:30:32 -04:00
@editing = true
2026-06-12 15:40:12 -04:00
erb :'admin/service_types/index'
end
get '/admin/service_types/edit' do
@service_types = ServiceType.all
2026-06-17 22:30:32 -04:00
@editing = false
2026-06-12 15:40:12 -04:00
erb :'admin/service_types/index'
end
2026-06-17 22:30:32 -04:00
get '/admin/service_types/:name' do
type_name = params[:name]
@service_type = ServiceType.public_send(type_name)
# @service_type = ServiceType.media
2026-06-12 15:40:12 -04:00
erb :'admin/service_types/position'
end
2026-06-17 22:30:32 -04:00
# get '/admin/service_types/media' do
# @service_type = ServiceType.media
# erb :'admin/service_types/position'
# end
2026-06-12 15:40:12 -04:00
2026-06-17 22:30:32 -04:00
# get '/admin/service_types/admin' do
# @service_type = ServiceType.admin
# erb :'admin/service_types/position'
# end
# get '/admin/service_types/support' do
# @service_type = ServiceType.support
# erb :'admin/service_types/position'
# end
2026-06-12 15:40:12 -04:00
post '/admin/service_types' do
puts params
params[:service_types].each do |service_type_data|
if service_type_data[:id].empty? && service_type_data[:name].present?
ServiceType.create(service_type_data)
2026-06-17 22:30:32 -04:00
elsif service_type_data[:id].present? && service_type_data[:name].present?
2026-06-12 15:40:12 -04:00
@service_type = ServiceType.find(service_type_data[:id])
@service_type.update(service_type_data)
end
end
redirect 'admin/service_types'
end
get '/admin/services' do
@services = Service.all
@service_types = ServiceType.all
@machines = Machine.all
2026-06-17 22:30:32 -04:00
@editing = true
2026-06-12 15:40:12 -04:00
erb :'admin/services/index'
end
get '/admin/services/edit' do
@services = Service.all
@service_types = ServiceType.all
@machines = Machine.all
2026-06-17 22:30:32 -04:00
@editing = false
2026-06-12 15:40:12 -04:00
erb :'admin/services/index'
end
post '/admin/services' do
params[:services].each do |service_data|
if service_data[:id].empty? && service_data[:name].present?
Service.create(service_data)
elsif service_data[:id].present?
@service = Service.find(service_data[:id])
@service.update(service_data)
end
end
redirect 'admin/services'
end
end