redirect to mail.hackclub.com

This commit is contained in:
24c02 2025-05-27 16:06:54 -04:00
parent c9a3bed80e
commit 63612e5d6e

View file

@ -1,16 +1,16 @@
require 'sinatra/base' require "sinatra/base"
require "sinatra/content_for" require "sinatra/content_for"
require "sinatra/cookies" require "sinatra/cookies"
require 'securerandom' require "securerandom"
require 'active_support' require "active_support"
require 'active_support/core_ext/object/blank' require "active_support/core_ext/object/blank"
require_relative './helpers' require_relative "./helpers"
require_relative './awawawa' require_relative "./awawawa"
require_relative './signage' require_relative "./signage"
if ENV['SEND_REAL_EMAILS'] if ENV["SEND_REAL_EMAILS"]
require_relative './loops' require_relative "./loops"
end end
class ShipmentViewer < Sinatra::Base class ShipmentViewer < Sinatra::Base
@ -23,22 +23,22 @@ class ShipmentViewer < Sinatra::Base
set :host_authorization, permitted_hosts: [] set :host_authorization, permitted_hosts: []
def footer_commit def footer_commit
@footer_commit ||= if ENV['SOURCE_COMMIT'] @footer_commit ||= if ENV["SOURCE_COMMIT"]
"rev #{ENV['SOURCE_COMMIT'][...7]}" "rev #{ENV["SOURCE_COMMIT"][...7]}"
else else
"development!" "development!"
end end
end end
def gen_url(email) def gen_url(email)
"#{ENV['BASE_URL']}/dyn/shipments/#{email}?signature=#{sign(email)}" "#{ENV["BASE_URL"]}/dyn/shipments/#{email}?signature=#{sign(email)}"
end end
def mail_out_link(email) def mail_out_link(email)
link = gen_url email link = gen_url email
if ENV['SEND_REAL_EMAILS'] if ENV["SEND_REAL_EMAILS"]
raise 'no transactional_id?' unless ENV['TRANSACTIONAL_ID'] raise "no transactional_id?" unless ENV["TRANSACTIONAL_ID"]
loops_send_transactional(email, ENV['TRANSACTIONAL_ID'], {link:}) loops_send_transactional(email, ENV["TRANSACTIONAL_ID"], { link: })
else else
puts "[EMAIL] to: #{email}, link: #{link}" puts "[EMAIL] to: #{email}, link: #{link}"
end end
@ -52,25 +52,14 @@ class ShipmentViewer < Sinatra::Base
def external_link(text, href) def external_link(text, href)
"<a target='_blank' href='#{href}'>#{text} <i class='fa-solid fa-arrow-up-right-from-square'></i></a>" "<a target='_blank' href='#{href}'>#{text} <i class='fa-solid fa-arrow-up-right-from-square'></i></a>"
end end
set :sessions, true set :sessions, true
get '/' do get "/*" do
erb :index redirect to("https://mail.hackclub.com/")
end end
get '/internal' do get "/dyn/jason/:email" do
@internal = true
erb :index
end
get '/dyn/shipments/:email' do
@show_ids = !!params[:ids]
bounce_to_index! "invalid signature...? weird...." unless params[:signature] && sig_checks_out?(params[:email], params[:signature])
@shipments = get_shipments_for_user params[:email]
erb :shipments
end
get '/dyn/jason/:email' do
content_type :json content_type :json
bounce_to_index! "just what are you trying to pull?" unless params[:signature] && sig_checks_out?(params[:email], params[:signature]) bounce_to_index! "just what are you trying to pull?" unless params[:signature] && sig_checks_out?(params[:email], params[:signature])
@ -81,62 +70,14 @@ class ShipmentViewer < Sinatra::Base
@shipments.to_json @shipments.to_json
end end
post '/dyn/internal' do post "/api/presign" do
@internal = true
unless cookies[:internal_key] && ENV["INTERNAL_KEYS"]&.split(',').include?(cookies[:internal_key])
bounce_to_index! "not the right key ya goof"
end
@shipments = get_shipments_for_user params[:email]
bounce_to_index! "couldn't find any shipments for #{params[:email]}" if @shipments.empty?
@show_ids = true
erb :shipments
end
post '/dyn/send_mail' do
bounce_to_index! "couldn't find any shipments for that email! try another?" unless params[:email] && user_has_any_shipments?(params[:email])
mail_out_link params[:email]
erb :check_ur_email
end
get '/set_internal_key' do
@internal = true
erb :set_internal_key
end
post '/api/presign' do
request.body.rewind request.body.rewind
key = request.env["HTTP_AUTHORIZATION"] key = request.env["HTTP_AUTHORIZATION"]
unless key && ENV["PRESIGNING_KEYS"]&.split(',').include?(key) unless key && ENV["PRESIGNING_KEYS"]&.split(",").include?(key)
bounce_to_index! "not the right key ya goof" bounce_to_index! "not the right key ya goof"
end end
email = request.body.read email = request.body.read
puts "#{key.split('@').last} is presigning a link for #{email}..." puts "#{key.split("@").last} is presigning a link for #{email}..."
gen_url email gen_url email
end end
error 404 do
erb :notfound
end
error do
req_id = SecureRandom.urlsafe_base64(20)
puts "LOGGING REQUEST ID: #{req_id}"
bounce_to_index! "#{env['sinatra.error'].message} (request ID: #{req_id})"
end
get '/shipments' do
email = params['email']
signature = params['signature']
if email && signature
redirect to("/dyn/shipments/#{email}?signature=#{signature}"), 301
else
bounce_to_index! "lol wut"
end
end
end end