152 lines
4.0 KiB
Ruby
152 lines
4.0 KiB
Ruby
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 |