Initial Redmine tooling and local plugin forks
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
class MailFetcherController < ApplicationController
|
||||
unloadable
|
||||
require 'timeout'
|
||||
|
||||
before_filter :check_credential
|
||||
|
||||
def receive_imap
|
||||
imap_options = {:host => params['host'],
|
||||
:port => params['port'],
|
||||
:ssl => params['ssl'],
|
||||
:username => params['username'],
|
||||
:password => params['password'],
|
||||
:folder => params['folder'],
|
||||
:move_on_success => params['move_on_success'],
|
||||
:move_on_failure => params['move_on_failure']}
|
||||
|
||||
options = { :issue => {} }
|
||||
%w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = params[a] if params[a] }
|
||||
options[:allow_override] = params['allow_override'] if params['allow_override']
|
||||
options[:unknown_user] = params['unknown_user'] if params['unknown_user']
|
||||
options[:no_permission_check] = params['no_permission_check'] if params['no_permission_check']
|
||||
|
||||
begin
|
||||
Timeout::timeout(15){ Redmine::IMAP.check(imap_options, options) }
|
||||
rescue Exception => e
|
||||
@error_messages = [e.message]
|
||||
end
|
||||
|
||||
|
||||
if @error_messages.blank?
|
||||
respond_to do |format|
|
||||
format.html { render :nothing => true, :status => :ok }
|
||||
format.api { render_api_ok }
|
||||
end
|
||||
else
|
||||
respond_to do |format|
|
||||
format.html { render :text => @error_messages, :status => :unprocessable_entity, :layout => nil }
|
||||
format.api { render :template => 'common/error_messages.api', :status => :unprocessable_entity, :layout => nil}
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def receive_pop3
|
||||
pop_options = {:host => params['host'],
|
||||
:port => params['port'],
|
||||
:apop => params['apop'],
|
||||
:username => params['username'],
|
||||
:password => params['password'],
|
||||
:delete_unprocessed => params['delete_unprocessed']}
|
||||
|
||||
options = { :issue => {} }
|
||||
%w(project status tracker category priority).each { |a| options[:issue][a.to_sym] = params[a] if params[a] }
|
||||
options[:allow_override] = params['allow_override'] if params['allow_override']
|
||||
options[:unknown_user] = params['unknown_user'] if params['unknown_user']
|
||||
options[:no_permission_check] = params['no_permission_check'] if params['no_permission_check']
|
||||
|
||||
begin
|
||||
Timeout::timeout(15){ Redmine::POP3.check(pop_options, options) }
|
||||
rescue Exception => e
|
||||
@error_messages = [e.message]
|
||||
end
|
||||
|
||||
|
||||
if @error_messages.blank?
|
||||
respond_to do |format|
|
||||
format.html { render :nothing => true, :status => :ok }
|
||||
format.api { render_api_ok }
|
||||
end
|
||||
else
|
||||
respond_to do |format|
|
||||
format.html { render :text => @error_messages, :status => :unprocessable_entity, :layout => nil }
|
||||
format.api { render :template => 'common/error_messages.api', :status => :unprocessable_entity, :layout => nil}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def check_credential
|
||||
User.current = nil
|
||||
unless Setting.mail_handler_api_enabled? && params[:key].to_s == Setting.mail_handler_api_key
|
||||
render :text => 'Access denied. Incoming emails WS is disabled or key is invalid.', :status => 403
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user