sugoi-mail 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +35 -0
- data/Rakefile +10 -0
- data/app/apis/mailservice_api.rb +178 -0
- data/app/controllers/.sugoi_admin_controller.rb.swp +0 -0
- data/app/controllers/account_controller.rb +39 -0
- data/app/controllers/address_controller.rb +49 -0
- data/app/controllers/application.rb +4 -0
- data/app/controllers/commandline_controller.rb +15 -0
- data/app/controllers/domain_controller.rb +37 -0
- data/app/controllers/mailinglist_controller.rb +51 -0
- data/app/controllers/mailservice_controller.rb +497 -0
- data/app/controllers/sugoi_admin_controller.rb +93 -0
- data/app/helpers/account_helper.rb +2 -0
- data/app/helpers/address_helper.rb +2 -0
- data/app/helpers/application_helper.rb +3 -0
- data/app/helpers/domain_helper.rb +2 -0
- data/app/helpers/mailservice_helper.rb +2 -0
- data/app/helpers/sugoi_admin_helper.rb +2 -0
- data/app/models/address.rb +110 -0
- data/app/models/admin_message.rb +45 -0
- data/app/models/confirmationcode.rb +59 -0
- data/app/models/domain.rb +76 -0
- data/app/models/mailinglist.rb +336 -0
- data/app/models/mailinglist_class.rb +39 -0
- data/app/models/message.rb +293 -0
- data/app/models/proxy_link.rb +25 -0
- data/app/models/user.rb +150 -0
- data/app/views/account/login.rhtml +22 -0
- data/app/views/account/logout.rhtml +10 -0
- data/app/views/account/signup.rhtml +17 -0
- data/app/views/account/welcome.rhtml +13 -0
- data/app/views/address/_form.rhtml +7 -0
- data/app/views/address/edit.rhtml +10 -0
- data/app/views/address/list.rhtml +27 -0
- data/app/views/address/new.rhtml +8 -0
- data/app/views/address/show.rhtml +8 -0
- data/app/views/domain/login.rhtml +22 -0
- data/app/views/domain/logout.rhtml +10 -0
- data/app/views/domain/signup.rhtml +17 -0
- data/app/views/domain/welcome.rhtml +13 -0
- data/app/views/layouts/address.rhtml +13 -0
- data/app/views/layouts/scaffold.rhtml +13 -0
- data/app/views/mailinglist/_form.rhtml +28 -0
- data/app/views/mailinglist/edit.rhtml +10 -0
- data/app/views/mailinglist/list.rhtml +27 -0
- data/app/views/mailinglist/new.rhtml +8 -0
- data/app/views/mailinglist/show.rhtml +16 -0
- data/app/views/sugoi_admin/create_domain.rhtml +1 -0
- data/app/views/sugoi_admin/list_addresses.rhtml +1 -0
- data/app/views/sugoi_admin/list_domains.rhtml +2 -0
- data/app/views/sugoi_admin/list_mailinglists.rhtml +1 -0
- data/bin/mailc +32 -0
- data/bin/maild +133 -0
- data/bin/sugoi-admin +21 -0
- data/bin/sugoi-mail +20 -0
- data/config/boot.rb +44 -0
- data/config/environment.rb +54 -0
- data/config/environments/bench.rb +21 -0
- data/config/environments/coverage.rb +21 -0
- data/config/environments/development.rb +21 -0
- data/config/environments/production.rb +18 -0
- data/config/environments/test.rb +19 -0
- data/config/lighttpd.conf +46 -0
- data/config/routes.rb +29 -0
- data/db/migrate/001_mailproxy.rb +7 -0
- data/db/migrate/002_create_users.rb +13 -0
- data/db/migrate/003_create_mailinglists.rb +13 -0
- data/db/migrate/004_create_addresses.rb +12 -0
- data/db/migrate/005_create_addresses_mailinglists.rb +13 -0
- data/db/migrate/006_alter_mailinglists.rb +9 -0
- data/db/migrate/007_create_messages.rb +25 -0
- data/db/migrate/008_add_mailinglistid_to_users.rb +14 -0
- data/db/migrate/009_add_domainadmin_to_users.rb +9 -0
- data/db/migrate/010_add_domain_to_users.rb +16 -0
- data/db/migrate/011_add_active_to_addresses.rb +14 -0
- data/db/migrate/012_create_confirmationcodes.rb +14 -0
- data/db/migrate/013_add_description_to_mailinglists.rb +9 -0
- data/db/migrate/014_create_admin_messages.rb +69 -0
- data/db/migrate/015_add_messages_to_mailinglists.rb +26 -0
- data/db/migrate/016_add_mailinglist_admin_to_users.rb +9 -0
- data/db/migrate/017_add_mailinglist_types.rb +94 -0
- data/db/migrate/018_add_bounciness_to_addresses.rb +20 -0
- data/db/migrate/019_add_archived_to_mailinglist_classes.rb +25 -0
- data/db/migrate/020_add_envelope_data_to_messages.rb +11 -0
- data/db/migrate/021_add_addresses_users.rb +14 -0
- data/db/migrate/022_add_virtual_to_users.rb +14 -0
- data/db/migrate/023_drop_openposting_from_mailinglists.rb +9 -0
- data/db/migrate/024_add_proxy_links.rb +21 -0
- data/db/migrate/025_add_proxify_to_mailinglist_classes.rb +25 -0
- data/db/schema.mysql.sql +104 -0
- data/db/schema.postgresql.sql +104 -0
- data/db/schema.rb +85 -0
- data/db/schema.sqlite.sql +104 -0
- data/db/schema.sqlserver.sql +113 -0
- data/db/schema_version +1 -0
- data/doc/README_FOR_APP +179 -0
- data/doc/mailinglist_classes description.txt +28 -0
- data/installer/rails_installer_defaults.yml +5 -0
- data/lib/daemonize.rb +56 -0
- data/lib/domain_system.rb +87 -0
- data/lib/gurgitate-rules.rb +69 -0
- data/lib/limitedfork.rb +66 -0
- data/lib/login_system.rb +87 -0
- data/public/.htaccess +40 -0
- data/public/404.html +8 -0
- data/public/500.html +8 -0
- data/public/dispatch.cgi +10 -0
- data/public/dispatch.fcgi +24 -0
- data/public/dispatch.rb +10 -0
- data/public/favicon.ico +0 -0
- data/public/images/rails.png +0 -0
- data/public/javascripts/application.js +2 -0
- data/public/javascripts/controls.js +815 -0
- data/public/javascripts/dragdrop.js +913 -0
- data/public/javascripts/effects.js +958 -0
- data/public/javascripts/prototype.js +2006 -0
- data/public/robots.txt +1 -0
- data/public/stylesheets/scaffold.css +74 -0
- data/public/stylesheets/trestle.css +74 -0
- data/script/about +3 -0
- data/script/breakpointer +3 -0
- data/script/console +3 -0
- data/script/destroy +3 -0
- data/script/fakedeliver +19 -0
- data/script/generate +3 -0
- data/script/performance/benchmarker +3 -0
- data/script/performance/profiler +3 -0
- data/script/plugin +3 -0
- data/script/process/reaper +3 -0
- data/script/process/spawner +3 -0
- data/script/runner +3 -0
- data/script/server +3 -0
- data/sugoi-mail.gemspec +36 -0
- data/test/fixtures/addresses.yml +70 -0
- data/test/fixtures/addresses_mailinglists.yml +20 -0
- data/test/fixtures/admin_messages.yml +65 -0
- data/test/fixtures/confirmationcodes.yml +13 -0
- data/test/fixtures/domains.yml +9 -0
- data/test/fixtures/mailinglist_classes.yml +45 -0
- data/test/fixtures/mailinglists.yml +80 -0
- data/test/fixtures/messages.yml +154 -0
- data/test/fixtures/proxy_links.yml +5 -0
- data/test/fixtures/users.yml +50 -0
- data/test/functional/domain_controller_test.rb +74 -0
- data/test/functional/mailservice_controller_test.rb +546 -0
- data/test/integration/test_soap.rb +413 -0
- data/test/integration/test_xmlrpc.rb +198 -0
- data/test/mocks/test/net-smtp-stub.rb +24 -0
- data/test/test_helper.rb +28 -0
- data/test/unit/address_test.rb +44 -0
- data/test/unit/admin_message_test.rb +41 -0
- data/test/unit/confirmationcode_test.rb +64 -0
- data/test/unit/domain_test.rb +128 -0
- data/test/unit/mailinglist_class_test.rb +82 -0
- data/test/unit/mailinglist_test.rb +145 -0
- data/test/unit/message_test.rb +151 -0
- data/test/unit/user_test.rb +126 -0
- data/test/units.rb +4 -0
- data/vendor/plugins/active_command/init.rb +1 -0
- data/vendor/plugins/active_command/lib/active_command/request.rb +137 -0
- data/vendor/plugins/active_command/lib/active_command/response.rb +132 -0
- data/vendor/plugins/active_command/lib/active_command.rb +2 -0
- data/vendor/plugins/ar_fixtures/CHANGELOG +10 -0
- data/vendor/plugins/ar_fixtures/MIT-LICENSE +20 -0
- data/vendor/plugins/ar_fixtures/README +19 -0
- data/vendor/plugins/ar_fixtures/Rakefile +54 -0
- data/vendor/plugins/ar_fixtures/about.yml +7 -0
- data/vendor/plugins/ar_fixtures/init.rb +1 -0
- data/vendor/plugins/ar_fixtures/lib/ar_fixtures.rb +102 -0
- data/vendor/plugins/ar_fixtures/tasks/ar_fixtures.rake +39 -0
- data/vendor/plugins/ar_fixtures/test/ar_fixtures_test.rb +53 -0
- data/vendor/plugins/ar_fixtures/test/database.yml +18 -0
- data/vendor/plugins/ar_fixtures/test/fixtures/beer.rb +5 -0
- data/vendor/plugins/ar_fixtures/test/fixtures/beers.yml +9 -0
- data/vendor/plugins/ar_fixtures/test/fixtures/beers_drunkards.yml +8 -0
- data/vendor/plugins/ar_fixtures/test/fixtures/drunkard.rb +6 -0
- data/vendor/plugins/ar_fixtures/test/fixtures/drunkards.yml +8 -0
- data/vendor/plugins/ar_fixtures/test/fixtures/glass.rb +2 -0
- data/vendor/plugins/ar_fixtures/test/fixtures/glasses.yml +9 -0
- data/vendor/plugins/ar_fixtures/test/schema.rb +21 -0
- data/vendor/plugins/ar_fixtures/test/test_helper.rb +37 -0
- metadata +320 -0
@@ -0,0 +1,13 @@
|
|
1
|
+
class CreateAddressesMailinglists < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :addresses_mailinglists, :id => false do |t|
|
4
|
+
# t.column :name, :string
|
5
|
+
t.column :address_id, :integer
|
6
|
+
t.column :mailinglist_id, :integer
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.down
|
11
|
+
drop_table :addresses_mailinglists
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class CreateMessages < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :messages do |t|
|
4
|
+
# foreign key type things first
|
5
|
+
t.column :mailinglist_id, :integer
|
6
|
+
t.column :address_id, :integer
|
7
|
+
t.column :parent_id, :integer
|
8
|
+
|
9
|
+
# Now our own things
|
10
|
+
t.column :subject, :string # just a Premature Optimization, I suspect
|
11
|
+
t.column :messageid, :string # not message_id--the message_id header from the MTA
|
12
|
+
t.column :timestamp, :timestamp # Message timestamp (used for sorting)
|
13
|
+
t.column :headers, :text # The text of the headers
|
14
|
+
t.column :body, :text # The text of the body
|
15
|
+
end
|
16
|
+
# execute <<-'SQL'
|
17
|
+
# ALTER TABLE addresses_mailinglists
|
18
|
+
# ADD PRIMARY KEY ( address_id, mailinglist_id )
|
19
|
+
# SQL
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.down
|
23
|
+
drop_table :messages
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class AddMailinglistidToUsers < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
add_column :users, :mailinglist_id, :integer
|
4
|
+
|
5
|
+
User.find_all.each do |u|
|
6
|
+
u.mailinglist_id = Mailinglist.find_by_name(u.login).id
|
7
|
+
u.save
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.down
|
12
|
+
remove_column :users, :mailinglist_id
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class AddDomainToUsers < ActiveRecord::Migration
|
2
|
+
|
3
|
+
def self.up
|
4
|
+
create_table :domains do |t|
|
5
|
+
t.column :name, :string, :null => false
|
6
|
+
t.column :password, :text, :null => false
|
7
|
+
end
|
8
|
+
|
9
|
+
add_column :users, :domain_id, :integer
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.down
|
13
|
+
remove_column :users, :domain_id
|
14
|
+
drop_table :domains
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
#------------------------------------------------------------------------
|
2
|
+
# Add the "active" column to addresses
|
3
|
+
#------------------------------------------------------------------------
|
4
|
+
|
5
|
+
class AddActiveToAddresses < ActiveRecord::Migration
|
6
|
+
def self.up
|
7
|
+
add_column :addresses, :active, :boolean, :default => true
|
8
|
+
Address.update_all "active = true"
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.down
|
12
|
+
remove_column :addresses, :active
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class CreateConfirmationcodes < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :confirmationcodes do |t|
|
4
|
+
t.column :mailinglist_id, :integer
|
5
|
+
t.column :address_id, :integer
|
6
|
+
t.column :code, :text, :null => false
|
7
|
+
t.column :confirmed, :boolean, :default => false
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.down
|
12
|
+
drop_table :confirmationcodes
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
class CreateAdminMessages < ActiveRecord::Migration
|
2
|
+
class AdminMessage < ActiveRecord::Base; end
|
3
|
+
|
4
|
+
def self.up
|
5
|
+
create_table :admin_messages do |t|
|
6
|
+
t.column "message", :text, :null => false
|
7
|
+
end
|
8
|
+
default_welcome_message=AdminMessage.new
|
9
|
+
default_welcome_message.message = <<-EOT
|
10
|
+
From: {requestaddress}
|
11
|
+
To: {address}
|
12
|
+
Subject: Subscription confirmation: {name} mailing list.
|
13
|
+
|
14
|
+
Dear {address},
|
15
|
+
|
16
|
+
This is the mailing list software manager at {domain}.
|
17
|
+
I received a subscription request to add your email address to the
|
18
|
+
"{name}" mailing list:
|
19
|
+
|
20
|
+
{name}: {description}
|
21
|
+
|
22
|
+
To confirm that you did indeed request this, please send an
|
23
|
+
email message to {requestaddress} containing the string:
|
24
|
+
|
25
|
+
{command}
|
26
|
+
|
27
|
+
Simply replying to this message should be sufficient to accomplish that.
|
28
|
+
|
29
|
+
Mailing List Manager
|
30
|
+
EOT
|
31
|
+
EOT
|
32
|
+
default_welcome_message.save
|
33
|
+
|
34
|
+
default_confirmed_message = AdminMessage.new
|
35
|
+
default_confirmed_message.message = <<-EOT
|
36
|
+
From: {requestaddress}
|
37
|
+
To: {address}
|
38
|
+
Subject: Welcome to the {name} mailing list!
|
39
|
+
|
40
|
+
Dear {address},
|
41
|
+
|
42
|
+
Thank you for confirming your subscription to the {name}
|
43
|
+
mailing list!
|
44
|
+
|
45
|
+
Mailing List Manager
|
46
|
+
EOT
|
47
|
+
default_confirmed_message.save
|
48
|
+
|
49
|
+
default_sayonara_message = AdminMessage.new
|
50
|
+
default_sayonara_message.message = <<-EOT
|
51
|
+
From: {requestaddress}
|
52
|
+
To: {address}
|
53
|
+
Subject: Good bye, and thank you for being a member of the {name} mailing list!
|
54
|
+
|
55
|
+
Dear {address},
|
56
|
+
|
57
|
+
Thank you for being a member of the {name} mailing list. We're sorry
|
58
|
+
to see you go, but this message confirms that you have been unsubscribed
|
59
|
+
from the {name} mailing list.
|
60
|
+
|
61
|
+
Mailing List Manager
|
62
|
+
EOT
|
63
|
+
default_sayonara_message.save
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.down
|
67
|
+
drop_table :admin_messages
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class AddMessagesToMailinglists < ActiveRecord::Migration
|
2
|
+
class Mailinglist < ActiveRecord::Base; end
|
3
|
+
|
4
|
+
def self.up
|
5
|
+
add_column :mailinglists, :welcome_admin_message_id, :integer, :default => 1
|
6
|
+
add_column :mailinglists, :confirmed_admin_message_id, :integer, :default => 2
|
7
|
+
add_column :mailinglists, :sayonara_admin_message_id, :integer, :default => 3
|
8
|
+
|
9
|
+
default_welcome_message = AdminMessage.find 1
|
10
|
+
default_confirmed_message = AdminMessage.find 2
|
11
|
+
default_sayonara_message = AdminMessage.find 3
|
12
|
+
|
13
|
+
Mailinglist.find_all.each do |m|
|
14
|
+
m.welcome_admin_message_id = 1
|
15
|
+
m.confirmed_admin_message_id = 2
|
16
|
+
m.sayonara_admin_message_id = 3
|
17
|
+
m.save
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.down
|
22
|
+
remove_column :mailinglists, :welcome_admin_message_id
|
23
|
+
remove_column :mailinglists, :confirmed_admin_message_id
|
24
|
+
remove_column :mailinglists, :sayonara_admin_message_id
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
# Mailing list types
|
2
|
+
#
|
3
|
+
# public: true -> anyone can post to it (spammy!)
|
4
|
+
# false -> only members can post to it <-- DEFAULT
|
5
|
+
# closed: true -> only the owner can post to it
|
6
|
+
# false -> other people can post to it <-- DEFAULT
|
7
|
+
# moderated: true -> posted messages go to the owner first
|
8
|
+
# false -> posted messages are broadcast <-- DEFAULT
|
9
|
+
# confirmation: true -> subscriptions have to be confirmed <-- DEFAULT
|
10
|
+
# false -> subscriptions happen automatically
|
11
|
+
# joinable: true -> people can subscribe to the list at will <- DEFAULT
|
12
|
+
# false -> only the owner can subscribe or unsubscribe people
|
13
|
+
|
14
|
+
# NOTE FOR JOSUIKAI!
|
15
|
+
# ******************
|
16
|
+
#
|
17
|
+
# There needs to be another kind of "joinable" which says that only
|
18
|
+
# people who already have accounts on the system can join a mailing
|
19
|
+
# list.
|
20
|
+
|
21
|
+
class AddMailinglistTypes < ActiveRecord::Migration
|
22
|
+
|
23
|
+
class MailinglistClass < ActiveRecord::Base; end
|
24
|
+
class Mailinglist < ActiveRecord::Base; end
|
25
|
+
class User < ActiveRecord::Base; end
|
26
|
+
|
27
|
+
def self.up
|
28
|
+
create_table :mailinglist_classes do |t|
|
29
|
+
t.column 'name', :text, :null => false
|
30
|
+
t.column 'description', :text
|
31
|
+
t.column 'public', :boolean, :null => false, :default => false
|
32
|
+
t.column 'closed', :boolean, :null => false, :default => false
|
33
|
+
t.column 'moderated', :boolean, :null => false, :default => false
|
34
|
+
t.column 'confirmation', :boolean, :null => false, :default => true
|
35
|
+
t.column 'joinable', :boolean, :null => false, :default => true
|
36
|
+
end
|
37
|
+
|
38
|
+
MailinglistClass.new do |mlc|
|
39
|
+
mlc.name = 'LTMA'
|
40
|
+
mlc.description = 'Lifetime Mail Address'
|
41
|
+
mlc.public = true
|
42
|
+
mlc.closed = false
|
43
|
+
mlc.moderated = false
|
44
|
+
mlc.confirmation = true
|
45
|
+
mlc.joinable = false
|
46
|
+
end.save
|
47
|
+
|
48
|
+
MailinglistClass.new do |mlc|
|
49
|
+
mlc.name = 'Mailing List'
|
50
|
+
mlc.description = 'A normal, unmoderated, private-posting mailing list'
|
51
|
+
mlc.public = false
|
52
|
+
mlc.closed = false
|
53
|
+
mlc.moderated = false
|
54
|
+
mlc.confirmation = true
|
55
|
+
mlc.joinable = true
|
56
|
+
end.save
|
57
|
+
|
58
|
+
MailinglistClass.new do |mlc|
|
59
|
+
mlc.name = 'Distribution List' # Lifetime Mail Address
|
60
|
+
mlc.description = 'A private distribution list'
|
61
|
+
mlc.public = false
|
62
|
+
mlc.closed = false
|
63
|
+
mlc.moderated = false
|
64
|
+
mlc.confirmation = false
|
65
|
+
mlc.joinable = false
|
66
|
+
end.save
|
67
|
+
|
68
|
+
add_column :mailinglists, :mailinglist_class_id, :integer
|
69
|
+
|
70
|
+
ltma_class = MailinglistClass.find_by_name 'LTMA'
|
71
|
+
ml_class = MailinglistClass.find_by_name 'Mailing List'
|
72
|
+
|
73
|
+
Mailinglist.find_all.each do |ml|
|
74
|
+
if ml.name == User.find(ml.user_id).login then
|
75
|
+
ml.mailinglist_class_id = ltma_class.id
|
76
|
+
else
|
77
|
+
ml.mailinglist_class_id = ml_class.id
|
78
|
+
end
|
79
|
+
ml.save
|
80
|
+
end
|
81
|
+
|
82
|
+
# change_column :mailinglists, :mailinglist_class_id, :integer,
|
83
|
+
# :null => false
|
84
|
+
|
85
|
+
# ltma_class = MailinglistClass.find_by_name
|
86
|
+
|
87
|
+
# Mailinglist.find_all.each do |ml|
|
88
|
+
end
|
89
|
+
|
90
|
+
def self.down
|
91
|
+
remove_column :mailinglists, :mailinglist_class_id
|
92
|
+
drop_table :mailinglist_classes
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#------------------------------------------------------------------------
|
2
|
+
# Add the "active" column to addresses
|
3
|
+
#------------------------------------------------------------------------
|
4
|
+
|
5
|
+
class AddBouncinessToAddresses < ActiveRecord::Migration
|
6
|
+
def self.up
|
7
|
+
add_column :addresses, :delivery_attempts, :integer, :default => 0
|
8
|
+
add_column :addresses, :bounces, :integer, :default => 0
|
9
|
+
Address.find_all.each do |a|
|
10
|
+
a.delivery_attempts = 0
|
11
|
+
a.bounces = 0
|
12
|
+
a.save
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.down
|
17
|
+
remove_column :addresses, :delivery_attempts
|
18
|
+
remove_column :addresses, :bounces
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class AddArchivedToMailinglistClasses < ActiveRecord::Migration
|
2
|
+
class MailinglistClass < ActiveRecord::Base; end
|
3
|
+
|
4
|
+
def self.up
|
5
|
+
add_column :mailinglist_classes, :archived, :boolean,
|
6
|
+
:default => false
|
7
|
+
|
8
|
+
|
9
|
+
MailinglistClass.find_all.each do |mailinglist_class|
|
10
|
+
mailinglist_class.archived = false;
|
11
|
+
mailinglist_class.save
|
12
|
+
end
|
13
|
+
|
14
|
+
execute "alter table mailinglist_classes alter archived set not null"
|
15
|
+
|
16
|
+
ml=MailinglistClass.find_by_name("Mailing List")
|
17
|
+
if ml
|
18
|
+
ml.archived = true
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.down
|
23
|
+
remove_column :mailinglist_classes, :archived
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class AddEnvelopeDataToMessages < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
add_column :messages, :envelope_from, :text
|
4
|
+
add_column :messages, :envelope_to, :text
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.down
|
8
|
+
remove_column :messages, :envelope_from
|
9
|
+
remove_column :messages, :envelope_to
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class AddAddressesUsers < ActiveRecord::Migration
|
2
|
+
class MailinglistClass < ActiveRecord::Base; end
|
3
|
+
|
4
|
+
def self.up
|
5
|
+
create_table :addresses_users, :id => false do |t|
|
6
|
+
t.column 'user_id', :integer, :null => false
|
7
|
+
t.column 'address_id', :integer, :null => false
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.down
|
12
|
+
drop_table :addresses_users
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class AddVirtualToUsers < ActiveRecord::Migration
|
2
|
+
class User < ActiveRecord::Base; end
|
3
|
+
|
4
|
+
def self.up
|
5
|
+
add_column :users, :virtual, :boolean, :default => false
|
6
|
+
|
7
|
+
User.find_all.each do |u|
|
8
|
+
u.virtual = false
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.down
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class AddProxyLinks < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :proxy_links do |t|
|
4
|
+
# t.foreign_key :address_id, :mailinglist_id,
|
5
|
+
# :on_delete => :set_null,
|
6
|
+
# :on_update => :cascade
|
7
|
+
t.column 'mailinglist_id', :integer, :null => false
|
8
|
+
t.column 'address_id', :integer, :null => false
|
9
|
+
end
|
10
|
+
drop_table :addresses_users
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.down
|
15
|
+
drop_table :proxy_links
|
16
|
+
create_table :addresses_users, :id => false do |t|
|
17
|
+
t.column 'user_id', :integer, :null => false
|
18
|
+
t.column 'address_id', :integer, :null => false
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class AddProxifyToMailinglistClasses < ActiveRecord::Migration
|
2
|
+
class MailinglistClass < ActiveRecord::Base; end
|
3
|
+
|
4
|
+
def self.up
|
5
|
+
add_column :mailinglist_classes, :proxify, :boolean,
|
6
|
+
:default => false
|
7
|
+
|
8
|
+
|
9
|
+
MailinglistClass.find_all.each do |mailinglist_class|
|
10
|
+
mailinglist_class.proxify = false;
|
11
|
+
mailinglist_class.save
|
12
|
+
end
|
13
|
+
|
14
|
+
# execute "alter table mailinglist_classes alter proxify set not null"
|
15
|
+
|
16
|
+
ml=MailinglistClass.find_by_name("LTMA")
|
17
|
+
if ml
|
18
|
+
ml.proxify = true
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.down
|
23
|
+
remove_column :mailinglist_classes, :proxify
|
24
|
+
end
|
25
|
+
end
|
data/db/schema.mysql.sql
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
-- This file is autogenerated by the Rail schema generator, using
|
2
|
+
-- the schema defined in db/migration/*.rb
|
3
|
+
--
|
4
|
+
-- Do not edit this file. Instead, add a new migration using
|
5
|
+
-- ./script/generate migration <name>, and then run
|
6
|
+
-- ./script/generate schema
|
7
|
+
|
8
|
+
-- tables
|
9
|
+
|
10
|
+
CREATE TABLE addresses (
|
11
|
+
`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY,
|
12
|
+
`address` text,
|
13
|
+
`active` tinyint(1) DEFAULT 1,
|
14
|
+
`delivery_attempts` int(11) DEFAULT 0,
|
15
|
+
`bounces` int(11) DEFAULT 0
|
16
|
+
) ENGINE=InnoDB;
|
17
|
+
|
18
|
+
CREATE TABLE addresses_mailinglists (
|
19
|
+
`address_id` int(11),
|
20
|
+
`mailinglist_id` int(11)
|
21
|
+
) ENGINE=InnoDB;
|
22
|
+
|
23
|
+
CREATE TABLE admin_messages (
|
24
|
+
`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY,
|
25
|
+
`message` text NOT NULL
|
26
|
+
) ENGINE=InnoDB;
|
27
|
+
|
28
|
+
CREATE TABLE confirmationcodes (
|
29
|
+
`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY,
|
30
|
+
`mailinglist_id` int(11),
|
31
|
+
`address_id` int(11),
|
32
|
+
`code` text NOT NULL,
|
33
|
+
`confirmed` tinyint(1) DEFAULT 0
|
34
|
+
) ENGINE=InnoDB;
|
35
|
+
|
36
|
+
CREATE TABLE domains (
|
37
|
+
`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY,
|
38
|
+
`name` varchar(255) NOT NULL,
|
39
|
+
`password` text NOT NULL
|
40
|
+
) ENGINE=InnoDB;
|
41
|
+
|
42
|
+
CREATE TABLE mailinglist_classes (
|
43
|
+
`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY,
|
44
|
+
`name` text NOT NULL,
|
45
|
+
`description` text,
|
46
|
+
`public` tinyint(1) DEFAULT 0 NOT NULL,
|
47
|
+
`closed` tinyint(1) DEFAULT 0 NOT NULL,
|
48
|
+
`moderated` tinyint(1) DEFAULT 0 NOT NULL,
|
49
|
+
`confirmation` tinyint(1) DEFAULT 1 NOT NULL,
|
50
|
+
`joinable` tinyint(1) DEFAULT 1 NOT NULL,
|
51
|
+
`archived` tinyint(1) DEFAULT 0,
|
52
|
+
`proxify` tinyint(1) DEFAULT 0
|
53
|
+
) ENGINE=InnoDB;
|
54
|
+
|
55
|
+
CREATE TABLE mailinglists (
|
56
|
+
`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY,
|
57
|
+
`user_id` int(11),
|
58
|
+
`name` text NOT NULL,
|
59
|
+
`description` text,
|
60
|
+
`welcome_admin_message_id` int(11) DEFAULT 1,
|
61
|
+
`confirmed_admin_message_id` int(11) DEFAULT 2,
|
62
|
+
`sayonara_admin_message_id` int(11) DEFAULT 3,
|
63
|
+
`mailinglist_class_id` int(11)
|
64
|
+
) ENGINE=InnoDB;
|
65
|
+
|
66
|
+
CREATE TABLE messages (
|
67
|
+
`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY,
|
68
|
+
`mailinglist_id` int(11),
|
69
|
+
`address_id` int(11),
|
70
|
+
`parent_id` int(11),
|
71
|
+
`subject` varchar(255),
|
72
|
+
`messageid` varchar(255),
|
73
|
+
`timestamp` datetime,
|
74
|
+
`headers` text,
|
75
|
+
`body` text,
|
76
|
+
`envelope_from` text,
|
77
|
+
`envelope_to` text
|
78
|
+
) ENGINE=InnoDB;
|
79
|
+
|
80
|
+
CREATE TABLE proxy_links (
|
81
|
+
`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY,
|
82
|
+
`mailinglist_id` int(11) NOT NULL,
|
83
|
+
`address_id` int(11) NOT NULL
|
84
|
+
) ENGINE=InnoDB;
|
85
|
+
|
86
|
+
CREATE TABLE users (
|
87
|
+
`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY,
|
88
|
+
`login` text NOT NULL,
|
89
|
+
`password` text NOT NULL,
|
90
|
+
`mailinglist_id` int(11),
|
91
|
+
`domainadmin` tinyint(1) DEFAULT 0,
|
92
|
+
`domain_id` int(11),
|
93
|
+
`mailinglistadmin` tinyint(1) DEFAULT 0,
|
94
|
+
`virtual` tinyint(1) DEFAULT 0
|
95
|
+
) ENGINE=InnoDB;
|
96
|
+
|
97
|
+
|
98
|
+
-- schema version meta-info
|
99
|
+
|
100
|
+
CREATE TABLE schema_info (
|
101
|
+
`version` int(11)
|
102
|
+
) ENGINE=InnoDB;
|
103
|
+
|
104
|
+
insert into schema_info (version) values (25);
|