app/controllers/lookup_controller.rb in local_pac-0.6.3 vs app/controllers/lookup_controller.rb in local_pac-0.7.0

- old
+ new

@@ -1,35 +1,70 @@ module LocalPac module App class LookupController < ApplicationController + helpers Sinatra::Param + get '/' do redirect to('/proxy.pac') end get '/:name' do file = local_storage.find(params[:name].to_s) - fail Sinatra::NotFound, params[:name].to_s if file.nil? + fail Sinatra::NotFound, name: params[:name].to_s if file.nil? + @client_ip = IPAddr.new(remote_addr).to_s + @time = Time.now.strftime "%Y-%m-%d %H:%M:%S" + haml :lookup, layout: :application end post '/:name' do - @file = local_storage.find(params[:name].to_s) - @uri = Addressable::URI.heuristic_parse(params[:url].to_s) + param :name, String, required: true + param :url, String, required: true + param :client_ip, String + param :time, String + parse_env = {} - fail Sinatra::NotFound, params[:name].to_s if @file.nil? + @file = local_storage.find(params[:name]) + @uri = Addressable::URI.heuristic_parse(params[:url]) - parser = LocalPac::ProxyPac::PacParser.new(file: @file) + fail Sinatra::NotFound, name: params[:name].to_s if @file.nil? + fail Exceptions::GivenUrlInvalid, JSON.dump(url: params[:url]) if @uri.host.blank? begin + parse_env[:time] = @time = Time.parse(params[:time]).to_s unless params[:time].blank? + rescue ArgumentError + raise Exceptions::GivenTimeInvalid, JSON.dump(time: params[:time]) + end + + begin + parse_env[:client_ip] = @client_ip = IPAddr.new(params[:client_ip]).to_s unless params[:client_ip].blank? + rescue ArgumentError + raise Exceptions::GivenClientIpInvalid, JSON.dump(client_ip: params[:client_ip]) + end + + + parser = LocalPac::ProxyPac::PacParser.new(file: @file, environment: parse_env) + + begin @result = parser.find(@uri) rescue Exceptions::PacFileInvalid - fail I18n.t('errors.invalid_proxy_pac', name: params[:name] ) + raise Exceptions::PacFileInvalid, name: params[:name] end haml :lookup_result, layout: :application end + + helpers do + def remote_addr + return '127.0.0.1' if env['REMOTE_ADDR'] == '' + return env['REMOTE_ADDR'] if env['REMOTE_ADDR'] + + '127.0.0.1' + end + end + end end end