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.
Files changed (182) hide show
  1. data/README +35 -0
  2. data/Rakefile +10 -0
  3. data/app/apis/mailservice_api.rb +178 -0
  4. data/app/controllers/.sugoi_admin_controller.rb.swp +0 -0
  5. data/app/controllers/account_controller.rb +39 -0
  6. data/app/controllers/address_controller.rb +49 -0
  7. data/app/controllers/application.rb +4 -0
  8. data/app/controllers/commandline_controller.rb +15 -0
  9. data/app/controllers/domain_controller.rb +37 -0
  10. data/app/controllers/mailinglist_controller.rb +51 -0
  11. data/app/controllers/mailservice_controller.rb +497 -0
  12. data/app/controllers/sugoi_admin_controller.rb +93 -0
  13. data/app/helpers/account_helper.rb +2 -0
  14. data/app/helpers/address_helper.rb +2 -0
  15. data/app/helpers/application_helper.rb +3 -0
  16. data/app/helpers/domain_helper.rb +2 -0
  17. data/app/helpers/mailservice_helper.rb +2 -0
  18. data/app/helpers/sugoi_admin_helper.rb +2 -0
  19. data/app/models/address.rb +110 -0
  20. data/app/models/admin_message.rb +45 -0
  21. data/app/models/confirmationcode.rb +59 -0
  22. data/app/models/domain.rb +76 -0
  23. data/app/models/mailinglist.rb +336 -0
  24. data/app/models/mailinglist_class.rb +39 -0
  25. data/app/models/message.rb +293 -0
  26. data/app/models/proxy_link.rb +25 -0
  27. data/app/models/user.rb +150 -0
  28. data/app/views/account/login.rhtml +22 -0
  29. data/app/views/account/logout.rhtml +10 -0
  30. data/app/views/account/signup.rhtml +17 -0
  31. data/app/views/account/welcome.rhtml +13 -0
  32. data/app/views/address/_form.rhtml +7 -0
  33. data/app/views/address/edit.rhtml +10 -0
  34. data/app/views/address/list.rhtml +27 -0
  35. data/app/views/address/new.rhtml +8 -0
  36. data/app/views/address/show.rhtml +8 -0
  37. data/app/views/domain/login.rhtml +22 -0
  38. data/app/views/domain/logout.rhtml +10 -0
  39. data/app/views/domain/signup.rhtml +17 -0
  40. data/app/views/domain/welcome.rhtml +13 -0
  41. data/app/views/layouts/address.rhtml +13 -0
  42. data/app/views/layouts/scaffold.rhtml +13 -0
  43. data/app/views/mailinglist/_form.rhtml +28 -0
  44. data/app/views/mailinglist/edit.rhtml +10 -0
  45. data/app/views/mailinglist/list.rhtml +27 -0
  46. data/app/views/mailinglist/new.rhtml +8 -0
  47. data/app/views/mailinglist/show.rhtml +16 -0
  48. data/app/views/sugoi_admin/create_domain.rhtml +1 -0
  49. data/app/views/sugoi_admin/list_addresses.rhtml +1 -0
  50. data/app/views/sugoi_admin/list_domains.rhtml +2 -0
  51. data/app/views/sugoi_admin/list_mailinglists.rhtml +1 -0
  52. data/bin/mailc +32 -0
  53. data/bin/maild +133 -0
  54. data/bin/sugoi-admin +21 -0
  55. data/bin/sugoi-mail +20 -0
  56. data/config/boot.rb +44 -0
  57. data/config/environment.rb +54 -0
  58. data/config/environments/bench.rb +21 -0
  59. data/config/environments/coverage.rb +21 -0
  60. data/config/environments/development.rb +21 -0
  61. data/config/environments/production.rb +18 -0
  62. data/config/environments/test.rb +19 -0
  63. data/config/lighttpd.conf +46 -0
  64. data/config/routes.rb +29 -0
  65. data/db/migrate/001_mailproxy.rb +7 -0
  66. data/db/migrate/002_create_users.rb +13 -0
  67. data/db/migrate/003_create_mailinglists.rb +13 -0
  68. data/db/migrate/004_create_addresses.rb +12 -0
  69. data/db/migrate/005_create_addresses_mailinglists.rb +13 -0
  70. data/db/migrate/006_alter_mailinglists.rb +9 -0
  71. data/db/migrate/007_create_messages.rb +25 -0
  72. data/db/migrate/008_add_mailinglistid_to_users.rb +14 -0
  73. data/db/migrate/009_add_domainadmin_to_users.rb +9 -0
  74. data/db/migrate/010_add_domain_to_users.rb +16 -0
  75. data/db/migrate/011_add_active_to_addresses.rb +14 -0
  76. data/db/migrate/012_create_confirmationcodes.rb +14 -0
  77. data/db/migrate/013_add_description_to_mailinglists.rb +9 -0
  78. data/db/migrate/014_create_admin_messages.rb +69 -0
  79. data/db/migrate/015_add_messages_to_mailinglists.rb +26 -0
  80. data/db/migrate/016_add_mailinglist_admin_to_users.rb +9 -0
  81. data/db/migrate/017_add_mailinglist_types.rb +94 -0
  82. data/db/migrate/018_add_bounciness_to_addresses.rb +20 -0
  83. data/db/migrate/019_add_archived_to_mailinglist_classes.rb +25 -0
  84. data/db/migrate/020_add_envelope_data_to_messages.rb +11 -0
  85. data/db/migrate/021_add_addresses_users.rb +14 -0
  86. data/db/migrate/022_add_virtual_to_users.rb +14 -0
  87. data/db/migrate/023_drop_openposting_from_mailinglists.rb +9 -0
  88. data/db/migrate/024_add_proxy_links.rb +21 -0
  89. data/db/migrate/025_add_proxify_to_mailinglist_classes.rb +25 -0
  90. data/db/schema.mysql.sql +104 -0
  91. data/db/schema.postgresql.sql +104 -0
  92. data/db/schema.rb +85 -0
  93. data/db/schema.sqlite.sql +104 -0
  94. data/db/schema.sqlserver.sql +113 -0
  95. data/db/schema_version +1 -0
  96. data/doc/README_FOR_APP +179 -0
  97. data/doc/mailinglist_classes description.txt +28 -0
  98. data/installer/rails_installer_defaults.yml +5 -0
  99. data/lib/daemonize.rb +56 -0
  100. data/lib/domain_system.rb +87 -0
  101. data/lib/gurgitate-rules.rb +69 -0
  102. data/lib/limitedfork.rb +66 -0
  103. data/lib/login_system.rb +87 -0
  104. data/public/.htaccess +40 -0
  105. data/public/404.html +8 -0
  106. data/public/500.html +8 -0
  107. data/public/dispatch.cgi +10 -0
  108. data/public/dispatch.fcgi +24 -0
  109. data/public/dispatch.rb +10 -0
  110. data/public/favicon.ico +0 -0
  111. data/public/images/rails.png +0 -0
  112. data/public/javascripts/application.js +2 -0
  113. data/public/javascripts/controls.js +815 -0
  114. data/public/javascripts/dragdrop.js +913 -0
  115. data/public/javascripts/effects.js +958 -0
  116. data/public/javascripts/prototype.js +2006 -0
  117. data/public/robots.txt +1 -0
  118. data/public/stylesheets/scaffold.css +74 -0
  119. data/public/stylesheets/trestle.css +74 -0
  120. data/script/about +3 -0
  121. data/script/breakpointer +3 -0
  122. data/script/console +3 -0
  123. data/script/destroy +3 -0
  124. data/script/fakedeliver +19 -0
  125. data/script/generate +3 -0
  126. data/script/performance/benchmarker +3 -0
  127. data/script/performance/profiler +3 -0
  128. data/script/plugin +3 -0
  129. data/script/process/reaper +3 -0
  130. data/script/process/spawner +3 -0
  131. data/script/runner +3 -0
  132. data/script/server +3 -0
  133. data/sugoi-mail.gemspec +36 -0
  134. data/test/fixtures/addresses.yml +70 -0
  135. data/test/fixtures/addresses_mailinglists.yml +20 -0
  136. data/test/fixtures/admin_messages.yml +65 -0
  137. data/test/fixtures/confirmationcodes.yml +13 -0
  138. data/test/fixtures/domains.yml +9 -0
  139. data/test/fixtures/mailinglist_classes.yml +45 -0
  140. data/test/fixtures/mailinglists.yml +80 -0
  141. data/test/fixtures/messages.yml +154 -0
  142. data/test/fixtures/proxy_links.yml +5 -0
  143. data/test/fixtures/users.yml +50 -0
  144. data/test/functional/domain_controller_test.rb +74 -0
  145. data/test/functional/mailservice_controller_test.rb +546 -0
  146. data/test/integration/test_soap.rb +413 -0
  147. data/test/integration/test_xmlrpc.rb +198 -0
  148. data/test/mocks/test/net-smtp-stub.rb +24 -0
  149. data/test/test_helper.rb +28 -0
  150. data/test/unit/address_test.rb +44 -0
  151. data/test/unit/admin_message_test.rb +41 -0
  152. data/test/unit/confirmationcode_test.rb +64 -0
  153. data/test/unit/domain_test.rb +128 -0
  154. data/test/unit/mailinglist_class_test.rb +82 -0
  155. data/test/unit/mailinglist_test.rb +145 -0
  156. data/test/unit/message_test.rb +151 -0
  157. data/test/unit/user_test.rb +126 -0
  158. data/test/units.rb +4 -0
  159. data/vendor/plugins/active_command/init.rb +1 -0
  160. data/vendor/plugins/active_command/lib/active_command/request.rb +137 -0
  161. data/vendor/plugins/active_command/lib/active_command/response.rb +132 -0
  162. data/vendor/plugins/active_command/lib/active_command.rb +2 -0
  163. data/vendor/plugins/ar_fixtures/CHANGELOG +10 -0
  164. data/vendor/plugins/ar_fixtures/MIT-LICENSE +20 -0
  165. data/vendor/plugins/ar_fixtures/README +19 -0
  166. data/vendor/plugins/ar_fixtures/Rakefile +54 -0
  167. data/vendor/plugins/ar_fixtures/about.yml +7 -0
  168. data/vendor/plugins/ar_fixtures/init.rb +1 -0
  169. data/vendor/plugins/ar_fixtures/lib/ar_fixtures.rb +102 -0
  170. data/vendor/plugins/ar_fixtures/tasks/ar_fixtures.rake +39 -0
  171. data/vendor/plugins/ar_fixtures/test/ar_fixtures_test.rb +53 -0
  172. data/vendor/plugins/ar_fixtures/test/database.yml +18 -0
  173. data/vendor/plugins/ar_fixtures/test/fixtures/beer.rb +5 -0
  174. data/vendor/plugins/ar_fixtures/test/fixtures/beers.yml +9 -0
  175. data/vendor/plugins/ar_fixtures/test/fixtures/beers_drunkards.yml +8 -0
  176. data/vendor/plugins/ar_fixtures/test/fixtures/drunkard.rb +6 -0
  177. data/vendor/plugins/ar_fixtures/test/fixtures/drunkards.yml +8 -0
  178. data/vendor/plugins/ar_fixtures/test/fixtures/glass.rb +2 -0
  179. data/vendor/plugins/ar_fixtures/test/fixtures/glasses.yml +9 -0
  180. data/vendor/plugins/ar_fixtures/test/schema.rb +21 -0
  181. data/vendor/plugins/ar_fixtures/test/test_helper.rb +37 -0
  182. metadata +320 -0
@@ -0,0 +1,12 @@
1
+ class CreateAddresses < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :addresses do |t|
4
+ # t.column :name, :string
5
+ t.column :address, :text
6
+ end
7
+ end
8
+
9
+ def self.down
10
+ drop_table :addresses
11
+ end
12
+ end
@@ -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,9 @@
1
+ class AlterMailinglists < ActiveRecord::Migration
2
+ def self.up
3
+ rename_column(:mailinglists, :open, :openposting)
4
+ end
5
+
6
+ def self.down
7
+ rename_column(:mailinglists, :openposting, :open)
8
+ end
9
+ 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,9 @@
1
+ class AddDomainadminToUsers < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :users, :domainadmin, :boolean, :default => false
4
+ end
5
+
6
+ def self.down
7
+ remove_column :users, :domainadmin
8
+ end
9
+ 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,9 @@
1
+ class AddDescriptionToMailinglists < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :mailinglists, :description, :text
4
+ end
5
+
6
+ def self.down
7
+ remove_column :mailinglists, :description
8
+ end
9
+ 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,9 @@
1
+ class AddMailinglistAdminToUsers < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :users, :mailinglistadmin, :boolean, :default => false
4
+ end
5
+
6
+ def self.down
7
+ remove_column :users, :mailinglistadmin
8
+ end
9
+ 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,9 @@
1
+ class DropOpenpostingFromMailinglists < ActiveRecord::Migration
2
+ def self.up
3
+ remove_column :mailinglists, :openposting
4
+ end
5
+
6
+ def self.down
7
+ add_column :mailinglists, :openposting, :boolean
8
+ end
9
+ 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
@@ -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);