Added postmaster@ and abuse@ to virtuals when you create a domain. Hard coded at the moment.

This commit is contained in:
Jez Caudle 2024-05-09 12:01:45 +01:00
parent e3d0e72a38
commit 1ac47de706
6 changed files with 107 additions and 93 deletions

View File

@ -1,10 +1,10 @@
source "https://rubygems.org" source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/#{repo}.git" } git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby "3.2.3" ruby "3.3.0"
# Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main" # Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"
gem "rails", "7.1.3" gem "rails", "7.1.3.2"
gem 'devise' gem 'devise'
@ -15,7 +15,7 @@ gem "sprockets-rails"
gem "mysql2", "~> 0.5" gem "mysql2", "~> 0.5"
# Use the Puma web server [https://github.com/puma/puma] # Use the Puma web server [https://github.com/puma/puma]
gem "puma", "~> 5.0" gem "puma", "~> 6.0"
# Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails] # Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails]
gem "importmap-rails" gem "importmap-rails"

View File

@ -1,35 +1,35 @@
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
actioncable (7.1.3) actioncable (7.1.3.2)
actionpack (= 7.1.3) actionpack (= 7.1.3.2)
activesupport (= 7.1.3) activesupport (= 7.1.3.2)
nio4r (~> 2.0) nio4r (~> 2.0)
websocket-driver (>= 0.6.1) websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6) zeitwerk (~> 2.6)
actionmailbox (7.1.3) actionmailbox (7.1.3.2)
actionpack (= 7.1.3) actionpack (= 7.1.3.2)
activejob (= 7.1.3) activejob (= 7.1.3.2)
activerecord (= 7.1.3) activerecord (= 7.1.3.2)
activestorage (= 7.1.3) activestorage (= 7.1.3.2)
activesupport (= 7.1.3) activesupport (= 7.1.3.2)
mail (>= 2.7.1) mail (>= 2.7.1)
net-imap net-imap
net-pop net-pop
net-smtp net-smtp
actionmailer (7.1.3) actionmailer (7.1.3.2)
actionpack (= 7.1.3) actionpack (= 7.1.3.2)
actionview (= 7.1.3) actionview (= 7.1.3.2)
activejob (= 7.1.3) activejob (= 7.1.3.2)
activesupport (= 7.1.3) activesupport (= 7.1.3.2)
mail (~> 2.5, >= 2.5.4) mail (~> 2.5, >= 2.5.4)
net-imap net-imap
net-pop net-pop
net-smtp net-smtp
rails-dom-testing (~> 2.2) rails-dom-testing (~> 2.2)
actionpack (7.1.3) actionpack (7.1.3.2)
actionview (= 7.1.3) actionview (= 7.1.3.2)
activesupport (= 7.1.3) activesupport (= 7.1.3.2)
nokogiri (>= 1.8.5) nokogiri (>= 1.8.5)
racc racc
rack (>= 2.2.4) rack (>= 2.2.4)
@ -37,35 +37,35 @@ GEM
rack-test (>= 0.6.3) rack-test (>= 0.6.3)
rails-dom-testing (~> 2.2) rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6) rails-html-sanitizer (~> 1.6)
actiontext (7.1.3) actiontext (7.1.3.2)
actionpack (= 7.1.3) actionpack (= 7.1.3.2)
activerecord (= 7.1.3) activerecord (= 7.1.3.2)
activestorage (= 7.1.3) activestorage (= 7.1.3.2)
activesupport (= 7.1.3) activesupport (= 7.1.3.2)
globalid (>= 0.6.0) globalid (>= 0.6.0)
nokogiri (>= 1.8.5) nokogiri (>= 1.8.5)
actionview (7.1.3) actionview (7.1.3.2)
activesupport (= 7.1.3) activesupport (= 7.1.3.2)
builder (~> 3.1) builder (~> 3.1)
erubi (~> 1.11) erubi (~> 1.11)
rails-dom-testing (~> 2.2) rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6) rails-html-sanitizer (~> 1.6)
activejob (7.1.3) activejob (7.1.3.2)
activesupport (= 7.1.3) activesupport (= 7.1.3.2)
globalid (>= 0.3.6) globalid (>= 0.3.6)
activemodel (7.1.3) activemodel (7.1.3.2)
activesupport (= 7.1.3) activesupport (= 7.1.3.2)
activerecord (7.1.3) activerecord (7.1.3.2)
activemodel (= 7.1.3) activemodel (= 7.1.3.2)
activesupport (= 7.1.3) activesupport (= 7.1.3.2)
timeout (>= 0.4.0) timeout (>= 0.4.0)
activestorage (7.1.3) activestorage (7.1.3.2)
actionpack (= 7.1.3) actionpack (= 7.1.3.2)
activejob (= 7.1.3) activejob (= 7.1.3.2)
activerecord (= 7.1.3) activerecord (= 7.1.3.2)
activesupport (= 7.1.3) activesupport (= 7.1.3.2)
marcel (~> 1.0) marcel (~> 1.0)
activesupport (7.1.3) activesupport (7.1.3.2)
base64 base64
bigdecimal bigdecimal
concurrent-ruby (~> 1.0, >= 1.0.2) concurrent-ruby (~> 1.0, >= 1.0.2)
@ -79,7 +79,7 @@ GEM
public_suffix (>= 2.0.2, < 6.0) public_suffix (>= 2.0.2, < 6.0)
base64 (0.2.0) base64 (0.2.0)
bcrypt (3.1.20) bcrypt (3.1.20)
bigdecimal (3.1.6) bigdecimal (3.1.8)
bindex (0.8.1) bindex (0.8.1)
bootsnap (1.18.3) bootsnap (1.18.3)
msgpack (~> 1.2) msgpack (~> 1.2)
@ -97,31 +97,30 @@ GEM
connection_pool (2.4.1) connection_pool (2.4.1)
crass (1.0.6) crass (1.0.6)
date (3.3.4) date (3.3.4)
debug (1.9.1) debug (1.9.2)
irb (~> 1.10) irb (~> 1.10)
reline (>= 0.3.8) reline (>= 0.3.8)
devise (4.9.3) devise (4.9.4)
bcrypt (~> 3.0) bcrypt (~> 3.0)
orm_adapter (~> 0.1) orm_adapter (~> 0.1)
railties (>= 4.1.0) railties (>= 4.1.0)
responders responders
warden (~> 1.2.3) warden (~> 1.2.3)
drb (2.2.0) drb (2.2.1)
ruby2_keywords
erubi (1.12.0) erubi (1.12.0)
globalid (1.2.1) globalid (1.2.1)
activesupport (>= 6.1) activesupport (>= 6.1)
i18n (1.14.1) i18n (1.14.5)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
importmap-rails (2.0.1) importmap-rails (2.0.1)
actionpack (>= 6.0.0) actionpack (>= 6.0.0)
activesupport (>= 6.0.0) activesupport (>= 6.0.0)
railties (>= 6.0.0) railties (>= 6.0.0)
io-console (0.7.2) io-console (0.7.2)
irb (1.11.1) irb (1.13.1)
rdoc rdoc (>= 4.0.0)
reline (>= 0.4.2) reline (>= 0.4.2)
jbuilder (2.11.5) jbuilder (2.12.0)
actionview (>= 5.0.0) actionview (>= 5.0.0)
activesupport (>= 5.0.0) activesupport (>= 5.0.0)
loofah (2.22.0) loofah (2.22.0)
@ -132,35 +131,35 @@ GEM
net-imap net-imap
net-pop net-pop
net-smtp net-smtp
marcel (1.0.2) marcel (1.0.4)
matrix (0.4.2) matrix (0.4.2)
mini_mime (1.1.5) mini_mime (1.1.5)
mini_portile2 (2.8.5) mini_portile2 (2.8.6)
minitest (5.21.2) minitest (5.22.3)
msgpack (1.7.2) msgpack (1.7.2)
mutex_m (0.2.0) mutex_m (0.2.0)
mysql2 (0.5.5) mysql2 (0.5.6)
net-imap (0.4.9.1) net-imap (0.4.11)
date date
net-protocol net-protocol
net-pop (0.1.2) net-pop (0.1.2)
net-protocol net-protocol
net-protocol (0.2.2) net-protocol (0.2.2)
timeout timeout
net-smtp (0.4.0.1) net-smtp (0.5.0)
net-protocol net-protocol
nio4r (2.7.0) nio4r (2.7.3)
nokogiri (1.16.0) nokogiri (1.16.4)
mini_portile2 (~> 2.8.2) mini_portile2 (~> 2.8.2)
racc (~> 1.4) racc (~> 1.4)
orm_adapter (0.5.0) orm_adapter (0.5.0)
psych (5.1.2) psych (5.1.2)
stringio stringio
public_suffix (5.0.4) public_suffix (5.0.5)
puma (5.6.8) puma (6.4.2)
nio4r (~> 2.0) nio4r (~> 2.0)
racc (1.7.3) racc (1.7.3)
rack (3.0.9) rack (3.0.10)
rack-session (2.0.0) rack-session (2.0.0)
rack (>= 3.0.0) rack (>= 3.0.0)
rack-test (2.1.0) rack-test (2.1.0)
@ -168,20 +167,20 @@ GEM
rackup (2.1.0) rackup (2.1.0)
rack (>= 3) rack (>= 3)
webrick (~> 1.8) webrick (~> 1.8)
rails (7.1.3) rails (7.1.3.2)
actioncable (= 7.1.3) actioncable (= 7.1.3.2)
actionmailbox (= 7.1.3) actionmailbox (= 7.1.3.2)
actionmailer (= 7.1.3) actionmailer (= 7.1.3.2)
actionpack (= 7.1.3) actionpack (= 7.1.3.2)
actiontext (= 7.1.3) actiontext (= 7.1.3.2)
actionview (= 7.1.3) actionview (= 7.1.3.2)
activejob (= 7.1.3) activejob (= 7.1.3.2)
activemodel (= 7.1.3) activemodel (= 7.1.3.2)
activerecord (= 7.1.3) activerecord (= 7.1.3.2)
activestorage (= 7.1.3) activestorage (= 7.1.3.2)
activesupport (= 7.1.3) activesupport (= 7.1.3.2)
bundler (>= 1.15.0) bundler (>= 1.15.0)
railties (= 7.1.3) railties (= 7.1.3.2)
rails-dom-testing (2.2.0) rails-dom-testing (2.2.0)
activesupport (>= 5.0.0) activesupport (>= 5.0.0)
minitest minitest
@ -189,27 +188,26 @@ GEM
rails-html-sanitizer (1.6.0) rails-html-sanitizer (1.6.0)
loofah (~> 2.21) loofah (~> 2.21)
nokogiri (~> 1.14) nokogiri (~> 1.14)
railties (7.1.3) railties (7.1.3.2)
actionpack (= 7.1.3) actionpack (= 7.1.3.2)
activesupport (= 7.1.3) activesupport (= 7.1.3.2)
irb irb
rackup (>= 1.0.0) rackup (>= 1.0.0)
rake (>= 12.2) rake (>= 12.2)
thor (~> 1.0, >= 1.2.2) thor (~> 1.0, >= 1.2.2)
zeitwerk (~> 2.6) zeitwerk (~> 2.6)
rake (13.1.0) rake (13.2.1)
rdoc (6.6.2) rdoc (6.6.3.1)
psych (>= 4.0.0) psych (>= 4.0.0)
regexp_parser (2.9.0) regexp_parser (2.9.0)
reline (0.4.2) reline (0.5.6)
io-console (~> 0.5) io-console (~> 0.5)
responders (3.1.1) responders (3.1.1)
actionpack (>= 5.2) actionpack (>= 5.2)
railties (>= 5.2) railties (>= 5.2)
rexml (3.2.6) rexml (3.2.6)
ruby2_keywords (0.0.5)
rubyzip (2.3.2) rubyzip (2.3.2)
selenium-webdriver (4.17.0) selenium-webdriver (4.20.1)
base64 (~> 0.2) base64 (~> 0.2)
rexml (~> 3.2, >= 3.2.5) rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0) rubyzip (>= 1.2.2, < 3.0)
@ -224,9 +222,9 @@ GEM
stimulus-rails (1.3.3) stimulus-rails (1.3.3)
railties (>= 6.0.0) railties (>= 6.0.0)
stringio (3.1.0) stringio (3.1.0)
thor (1.3.0) thor (1.3.1)
timeout (0.4.1) timeout (0.4.1)
turbo-rails (1.5.0) turbo-rails (2.0.5)
actionpack (>= 6.0.0) actionpack (>= 6.0.0)
activejob (>= 6.0.0) activejob (>= 6.0.0)
railties (>= 6.0.0) railties (>= 6.0.0)
@ -250,7 +248,7 @@ GEM
websocket-extensions (0.1.5) websocket-extensions (0.1.5)
xpath (3.2.0) xpath (3.2.0)
nokogiri (~> 1.8) nokogiri (~> 1.8)
zeitwerk (2.6.12) zeitwerk (2.6.13)
PLATFORMS PLATFORMS
x86_64-openbsd x86_64-openbsd
@ -263,8 +261,8 @@ DEPENDENCIES
importmap-rails importmap-rails
jbuilder jbuilder
mysql2 (~> 0.5) mysql2 (~> 0.5)
puma (~> 5.0) puma (~> 6.0)
rails (= 7.1.3) rails (= 7.1.3.2)
selenium-webdriver selenium-webdriver
sprockets-rails sprockets-rails
stimulus-rails stimulus-rails
@ -274,7 +272,7 @@ DEPENDENCIES
webdrivers webdrivers
RUBY VERSION RUBY VERSION
ruby 3.2.3p157 ruby 3.3.0p0
BUNDLED WITH BUNDLED WITH
2.3.26 2.3.26

View File

@ -12,8 +12,9 @@ Is derived from https://github.com/OpenSMTPD/OpenSMTPD-extras/blob/master/extras
## Prerequisites ## Prerequisites
* Ruby version - 3.2.2p53 * Ruby version - 3.2.3
* Rails 7.0.5.1
* Rails 7.1.3
* System dependencies * System dependencies

View File

@ -1,6 +1,14 @@
class Domain < ApplicationRecord class Domain < ApplicationRecord
after_create :create_abuse_postmaster
has_many :credentials, dependent: :destroy has_many :credentials, dependent: :destroy
has_many :virtuals, dependent: :destroy has_many :virtuals, dependent: :destroy
validates :domain, presence: true validates :domain, presence: true
validates :domain, uniqueness: true validates :domain, uniqueness: true
private
def create_abuse_postmaster
Virtual.create(email: "abuse@#{self.domain}", destination: "jez@warwickhunt.com", domain_id: self.id)
Virtual.create(email: "postmaster@#{self.domain}", destination: "jez@warwickhunt.com", domain_id: self.id)
end
end end

View File

@ -41,4 +41,4 @@ pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
# Allow puma to be restarted by `bin/rails restart` command. # Allow puma to be restarted by `bin/rails restart` command.
plugin :tmp_restart plugin :tmp_restart
bind 'tcp://0.0.0.0:3001' bind 'tcp://0.0.0.0:3002'

View File

@ -3,7 +3,7 @@ require "test_helper"
class DomainTest < ActiveSupport::TestCase class DomainTest < ActiveSupport::TestCase
test "domain can not be blank" do test "domain can not be blank" do
@d = Domain.new @d = Domain.new
assert !@d.save assert_not @d.save
end end
test "domain can not be duplicated" do test "domain can not be duplicated" do
@ -13,6 +13,13 @@ class DomainTest < ActiveSupport::TestCase
@d2 = Domain.new @d2 = Domain.new
@d2.domain = "example.com" @d2.domain = "example.com"
assert !@d2.save assert_not @d2.save
end
test "domain created with abuse and postmaster" do
@d = Domain.new(domain: "example.org.uk")
assert @d.save
assert_equal(@d.virtuals.count,2)
end end
end end