Files
directory/app/controllers/application_controller.rb
T

152 lines
4.0 KiB
Ruby
Raw 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
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
@is_readonly = true
erb :'admin/local_network/index'
end
get '/admin/local_network/edit' do
@local_network = LocalNetwork.first || LocalNetwork.create
@is_readonly = false
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
@is_readonly = true
erb :'admin/machines/index'
end
get '/admin/machines/edit' do
@machines = Machine.all
@is_readonly = false
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
@is_readonly = true
erb :'admin/service_types/index'
end
get '/admin/service_types/edit' do
@service_types = ServiceType.all
@is_readonly = false
erb :'admin/service_types/index'
end
get '/admin/service_types/media' do
@service_type = ServiceType.media
erb :'admin/service_types/position'
end
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
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)
elsif service_type_data[:id].present?
@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
@is_readonly = true
erb :'admin/services/index'
end
get '/admin/services/edit' do
@services = Service.all
@service_types = ServiceType.all
@machines = Machine.all
@is_readonly = false
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