diff --git a/app/controllers/integrations_controller.rb b/app/controllers/integrations_controller.rb index dcc86187..3e121e02 100644 --- a/app/controllers/integrations_controller.rb +++ b/app/controllers/integrations_controller.rb @@ -33,17 +33,12 @@ class IntegrationsController < ApplicationController end def cloudmailin - # verify cloudmailin signature - provided = request.request_parameters.delete(:signature) - signature = Digest::MD5.hexdigest(request.request_parameters.sort{|a,b| a[0].to_s <=> b[0].to_s}.map{|k,v| v}.join + SITE_CONFIG['cloudmailin']) - - # if signature does not match, return 403 - if provided != signature + if !verify_cloudmailin_signature render :text => "Message signature verification failed.", :status => 403 return false end - if MessageGateway::receive(Mail.new(params[:message])) + if process_message(params[:message]) render :text => 'success', :status => 200 else render :text => "No user found or other error", :status => 404 @@ -51,6 +46,16 @@ class IntegrationsController < ApplicationController end private + + def process_message(message) + MessageGateway::receive(Mail.new(message)) + end + + def verify_cloudmailin_signature + provided = request.request_parameters.delete(:signature) + signature = Digest::MD5.hexdigest(request.request_parameters.sort{|a,b| a[0].to_s <=> b[0].to_s}.map{|k,v| v}.join + SITE_CONFIG['cloudmailin']) + return provided == signature + end def get_applescript(partial_name) context = current_user.contexts.find params[:context_id]