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,154 @@
1
+ ---
2
+ message_1:
3
+ id: 1
4
+ timestamp: 2006-05-26 18:04:08 +09:00
5
+ messageid: <20060526090409.021ECE7D61@foo.test>
6
+ address_id: 4
7
+ body: |
8
+
9
+ This is message 1
10
+
11
+ subject: Message 1
12
+ mailinglist_id: 1
13
+ parent_id:
14
+ headers: |
15
+ To: testuser@test.domain
16
+ From: addressmessage1@foo.test
17
+ Date: Fri, 26 May 2006 18:04:08 +0900 (JST)
18
+ Subject: Message 1
19
+ Message-ID: <20060526090409.021ECE7D61@foo.test>
20
+
21
+ message_2:
22
+ id: 2
23
+ timestamp: 2006-06-01 15:08:05 +09:00
24
+ messageid: <6ece721a-bde9-4569-b26f-2a3d08796c06@foo.test>
25
+ body: |
26
+
27
+ This is a reply to message 1
28
+
29
+ subject: Reply to message 1
30
+ mailinglist_id: 1
31
+ address_id: 5
32
+ parent_id: 1
33
+ headers: |
34
+ To: testuser@test.domain
35
+ From: addressmessage2@foo.test
36
+ Date: Fri, 01 Jul 2006 15:08:5 +0900 (JST)
37
+ Subject: Reply to message 1
38
+ Message-ID: <6ece721a-bde9-4569-b26f-2a3d08796c06@foo.test>
39
+
40
+ message_3:
41
+ id: 3
42
+ timestamp: 2006-06-08 16:32:03 +09:00
43
+ messageid: <courier.445EF3F3.0000672E@foo.test>
44
+ body: |
45
+
46
+ This is a second reply to message 1
47
+
48
+ subject: Second reply to message 1
49
+ mailinglist_id: 1
50
+ address_id: 6
51
+ parent_id: 1
52
+ headers: |
53
+ To: testuser@test.domain
54
+ From: addressmessage2@foo.test
55
+ Subject: Second reply to message 1
56
+ Date: Fri, 08 Jul 2006 16:32:03 +0900 (JST)
57
+ Message-ID: <courier.445EF3F3.0000672E@foo.test>
58
+
59
+ message_4:
60
+ id: 4
61
+ timestamp: 2006-10-26 18:35:00 +09:00
62
+ messageid: <testmessage-3@foo.test>
63
+ envelope_from: address1@foo.test
64
+ envelope_to: root@test.domain
65
+ mailinglist_id: 1
66
+ address_id: 2
67
+ parent_id: 0
68
+ headers: |
69
+ To: root@test.domain
70
+ From: address1@foo.test
71
+ Subject: Test with rewriting
72
+ Date: Thu, 26 Oct 2006 18:35:00 +0900 (JST)
73
+ Message-ID: <testmessage-3@foo.test>
74
+ body: |
75
+
76
+ This one gets rewritten
77
+
78
+ message_5:
79
+ id: 5
80
+ timestamp: 2006-11-11 19:13:00 +09:00
81
+ messageid: <testmessage-4@foo.test>
82
+ envelope_from: address1@foo.test
83
+ envelope_to: virtml@test.domain
84
+ mailinglist_id: 5
85
+ address_id: 2
86
+ parent_id: 0
87
+ headers: |
88
+ To: virtml@test.domain
89
+ From: address1@foo.test
90
+ Subject: Test with rewriting
91
+ Date: Thu, 11 Nov 2006 19:13:00 +0900 (JST)
92
+ Message-ID: <testmessage-4@foo.test>
93
+ body: |
94
+
95
+ This one gets rewritten to have a To line of virtuser, right?
96
+
97
+
98
+ message_6:
99
+ id: 6
100
+ timestamp: 2006-11-11 19:13:00 +09:00
101
+ messageid: <testmessage-6@foo.test>
102
+ envelope_from: external@foo.test
103
+ envelope_to: proxuser@test.domain
104
+ mailinglist_id: 7
105
+ address_id: 10
106
+ parent_id:
107
+ headers: |
108
+ To: proxuser@test.domain
109
+ From: external@foo.test
110
+ Subject: Test for Reply-To
111
+ Date: Thu, 11 Nov 2006 19:13:00 +0900 (JST)
112
+ Message-ID: <testmessage-6@foo.test>
113
+ body: |
114
+
115
+ This one gets an extra Reply-To header, right?
116
+
117
+ message_7:
118
+ id: 7
119
+ timestamp: 2006-11-11 19:13:00 +09:00
120
+ messageid: <testmessage-7@foo.test>
121
+ envelope_from: testuser@test.domain
122
+ envelope_to: plainrewrite#foo.test@test.domain
123
+ mailinglist_id:
124
+ address_id:
125
+ parent_id:
126
+ headers: |
127
+ To: plainrewrite#foo.test@test.domain
128
+ From: testuser@test.domain
129
+ Subject: Test for plain rewrite
130
+ Date: Thu, 11 Nov 2006 19:13:00 +0900 (JST)
131
+ Message-ID: <testmessage-7@foo.test>
132
+ body: |
133
+
134
+ This one gets rewritten, right?
135
+
136
+ message_8:
137
+ id: 8
138
+ timestamp: 2006-11-11 19:13:00 +09:00
139
+ messageid: <testmessage-8@foo.test>
140
+ envelope_from: address1@foo.test
141
+ envelope_to: nodescml@test.domain
142
+ mailinglist_id: 8
143
+ address_id: 2
144
+ parent_id: 0
145
+ headers: |
146
+ To: nodescml@test.domain
147
+ From: address1@foo.test
148
+ Subject: Test with rewriting
149
+ Date: Thu, 11 Nov 2006 19:13:00 +0900 (JST)
150
+ Message-ID: <testmessage-8@foo.test>
151
+ body: |
152
+
153
+ This one gets rewritten to have a To line of nodesc, right?
154
+
@@ -0,0 +1,5 @@
1
+ ---
2
+ testuser_address_message_1:
3
+ id: 42
4
+ address_id: 4
5
+ mailinglist_id: 1
@@ -0,0 +1,50 @@
1
+ ---
2
+ testuser:
3
+ domainadmin: false
4
+ domain_id: 1
5
+ id: 1
6
+ mailinglistadmin: false
7
+ mailinglist_id: 1
8
+ password: e7ce1e2e20ec9f11ce8e86c9c47ab9911c1d221e
9
+ login: testuser
10
+ virtual: false
11
+
12
+ root:
13
+ domainadmin: true
14
+ domain_id: 1
15
+ id: 2
16
+ mailinglistadmin: false
17
+ mailinglist_id: 2
18
+ password: e7ce1e2e20ec9f11ce8e86c9c47ab9911c1d221e
19
+ login: root
20
+ virtual: false
21
+
22
+ virtuser:
23
+ domainadmin: false
24
+ domain_id: 1
25
+ id: 3
26
+ mailinglistadmin: false
27
+ mailinglist_id: 4
28
+ password: e7ce1e2e20ec9f11ce8e86c9c47ab9911c1d221e
29
+ login: virtuser
30
+ virtual: true
31
+
32
+ proxuser:
33
+ domainadmin: false
34
+ domain_id: 1
35
+ id: 4
36
+ mailinglistadmin: false
37
+ mailinglist_id: 7
38
+ password: e7ce1e2e20ec9f11ce8e86c9c47ab9911c1d221e
39
+ login: proxuser
40
+ virtual: false
41
+
42
+ nodesc:
43
+ domainadmin: false
44
+ domain_id: 1
45
+ id: 6
46
+ mailinglistadmin: false
47
+ mailinglist_id: 6
48
+ password: e7ce1e2e20ec9f11ce8e86c9c47ab9911c1d221e
49
+ login: nodesc
50
+ virtual: true
@@ -0,0 +1,74 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+ require 'domain_controller'
3
+
4
+ # Set salt to 'change-me' because thats what the fixtures assume.
5
+ User.salt = 'change-me'
6
+
7
+ # Raise errors beyond the default web-based presentation
8
+ class DomainController; def rescue_action(e) raise e end; end
9
+
10
+ class DomainControllerTest < Test::Unit::TestCase
11
+
12
+ fixtures :domains
13
+
14
+ def setup
15
+ @controller = DomainController.new
16
+ @request, @response = ActionController::TestRequest.new, ActionController::TestResponse.new
17
+ @request.host = "localhost"
18
+ end
19
+
20
+ def test_auth_bob
21
+ @request.session[:return_to] = "/bogus/location"
22
+
23
+ post :login, :domain_name => "bob", :domain_password => "test"
24
+ assert_session_has :domain
25
+
26
+ assert_equal @bob, @response.session[:user]
27
+
28
+ assert_redirect_url "/bogus/location"
29
+ end
30
+
31
+ def test_signup
32
+ @request.session[:return_to] = "/bogus/location"
33
+
34
+ post :signup, :user => { :login => "newbob", :password => "newpassword", :password_confirmation => "newpassword" }
35
+ assert_session_has :user
36
+
37
+ assert_redirect_url "/bogus/location"
38
+ end
39
+
40
+ def test_bad_signup
41
+ @request.session[:return_to] = "/bogus/location"
42
+
43
+ post :signup, :user => { :login => "newbob", :password => "newpassword", :password_confirmation => "wrong" }
44
+ assert_invalid_column_on_record "user", :password
45
+ assert_success
46
+
47
+ post :signup, :user => { :login => "yo", :password => "newpassword", :password_confirmation => "newpassword" }
48
+ assert_invalid_column_on_record "user", :login
49
+ assert_success
50
+
51
+ post :signup, :user => { :login => "yo", :password => "newpassword", :password_confirmation => "wrong" }
52
+ assert_invalid_column_on_record "user", [:login, :password]
53
+ assert_success
54
+ end
55
+
56
+ def test_invalid_login
57
+ post :login, :user_login => "bob", :user_password => "not_correct"
58
+
59
+ assert_session_has_no :user
60
+
61
+ assert_template_has "login"
62
+ end
63
+
64
+ def test_login_logoff
65
+
66
+ post :login, :user_login => "bob", :user_password => "test"
67
+ assert_session_has :user
68
+
69
+ get :logout
70
+ assert_session_has_no :user
71
+
72
+ end
73
+
74
+ end