init push - laying out the project
This commit is contained in:
		
							
								
								
									
										17
									
								
								proxy/Gemfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								proxy/Gemfile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
source 'https://rubygems.org'
 | 
			
		||||
ruby '2.6.5'
 | 
			
		||||
gem 'dotenv-rails'
 | 
			
		||||
 | 
			
		||||
# Reduces boot times through caching; required in config/boot.rb
 | 
			
		||||
gem 'bootsnap', '>= 1.4.2', require: false
 | 
			
		||||
 | 
			
		||||
group :development do
 | 
			
		||||
  gem 'web-console', '>= 3.3.0'
 | 
			
		||||
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
 | 
			
		||||
  gem 'spring'
 | 
			
		||||
  gem 'spring-watcher-listen', '~> 2.0.0'
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
gem 'bunny'
 | 
			
		||||
gem 'midi-smtp-server', '~> 3.0.1'
 | 
			
		||||
gem 'openssl', '~> 2.1.0'
 | 
			
		||||
							
								
								
									
										58
									
								
								proxy/bettermail_proxy.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								proxy/bettermail_proxy.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
require 'midi-smtp-server'
 | 
			
		||||
 | 
			
		||||
# Server class
 | 
			
		||||
class BettermailProxy < MidiSmtpServer::Smtpd
 | 
			
		||||
 | 
			
		||||
  # get each message after DATA <message> .
 | 
			
		||||
  def on_message_data_event(ctx)
 | 
			
		||||
    # Just decode message once to make sure, that this message ist readable
 | 
			
		||||
    mail = Mail.read_from_string(ctx[:message])
 | 
			
		||||
 | 
			
		||||
    # Publish to rabbit
 | 
			
		||||
    @bunny_exchange.publish(mail.to_s, :headers => { 'x-smtp' => mail.header.to_s }, :routing_key => "new_email")
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
# Create a new server instance for listening at localhost interfaces 127.0.0.1:2525
 | 
			
		||||
# and accepting a maximum of 4 simultaneous connections per default
 | 
			
		||||
server = MySmtpd.new
 | 
			
		||||
 | 
			
		||||
# save flag for Ctrl-C pressed
 | 
			
		||||
flag_status_ctrl_c_pressed = false
 | 
			
		||||
 | 
			
		||||
# try to gracefully shutdown on Ctrl-C
 | 
			
		||||
trap('INT') do
 | 
			
		||||
  # print an empty line right after ^C
 | 
			
		||||
  puts
 | 
			
		||||
  # notify flag about Ctrl-C was pressed
 | 
			
		||||
  flag_status_ctrl_c_pressed = true
 | 
			
		||||
  # signal exit to app
 | 
			
		||||
  exit 0
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
# Output for debug
 | 
			
		||||
server.logger.info("Starting MySmtpd [#{MidiSmtpServer::VERSION::STRING}|#{MidiSmtpServer::VERSION::DATE}] (Basic usage) ...")
 | 
			
		||||
 | 
			
		||||
# setup exit code
 | 
			
		||||
at_exit do
 | 
			
		||||
  # check to shutdown connection
 | 
			
		||||
  if server
 | 
			
		||||
    # Output for debug
 | 
			
		||||
    server.logger.info('Ctrl-C interrupted, exit now...') if flag_status_ctrl_c_pressed
 | 
			
		||||
    # info about shutdown
 | 
			
		||||
    server.logger.info('Shutdown MySmtpd...')
 | 
			
		||||
    # stop all threads and connections gracefully
 | 
			
		||||
    server.stop
 | 
			
		||||
  end
 | 
			
		||||
  # Output for debug
 | 
			
		||||
  server.logger.info('MySmtpd down!')
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
# Start the server
 | 
			
		||||
server.start
 | 
			
		||||
 | 
			
		||||
# Run on server forever
 | 
			
		||||
server.join
 | 
			
		||||
		Reference in New Issue
	
	Block a user