sugoi-mail 0.1.0 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. data/INSTALL +94 -0
  2. data/app/apis/mailservice_api.rb +32 -22
  3. data/app/controllers/account_controller.rb +38 -22
  4. data/app/controllers/address_controller.rb +2 -0
  5. data/app/controllers/application.rb +12 -1
  6. data/app/controllers/base_user_controller.rb +29 -0
  7. data/app/controllers/domain_controller.rb +7 -8
  8. data/app/controllers/mail_admin_controller.rb +275 -0
  9. data/app/controllers/mailinglist_controller.rb +68 -14
  10. data/app/controllers/mailservice_controller.rb +116 -94
  11. data/app/controllers/navigation_controller.rb +3 -0
  12. data/app/controllers/root_admin_controller.rb +346 -0
  13. data/app/controllers/sugoi_admin_controller.rb +16 -13
  14. data/app/helpers/base_user_helper.rb +2 -0
  15. data/app/helpers/mail_admin_helper.rb +7 -0
  16. data/app/helpers/navigation_helper.rb +2 -0
  17. data/app/helpers/root_admin_helper.rb +2 -0
  18. data/app/models/address.rb +3 -4
  19. data/app/models/domain.rb +1 -1
  20. data/app/models/mail_admin.rb +2 -0
  21. data/app/models/mailinglist.rb +41 -19
  22. data/app/models/mailinglist_class.rb +1 -0
  23. data/app/models/message.rb +18 -36
  24. data/app/models/proxy_link.rb +14 -6
  25. data/app/views/account/login.rhtml +14 -12
  26. data/app/views/account/logout.rhtml +4 -8
  27. data/app/views/account/welcome.rhtml +3 -13
  28. data/app/views/base_user/add_address.rhtml +3 -0
  29. data/app/views/base_user/edit_address.rhtml +3 -0
  30. data/app/views/base_user/edit_user_list.rhtml +21 -0
  31. data/app/views/base_user/list_mailinglists.rhtml +3 -0
  32. data/app/views/base_user/remove_address.rhtml +3 -0
  33. data/app/views/base_user/unsubscribe_self.rhtml +3 -0
  34. data/app/views/layouts/application.rhtml +47 -0
  35. data/app/views/layouts/login.rhtml +34 -0
  36. data/app/views/layouts/sugoi_admin.rhtml +1 -0
  37. data/app/views/mail_admin/_form.rhtml +11 -0
  38. data/app/views/mail_admin/edit_admin_message.rhtml +12 -0
  39. data/app/views/mail_admin/list_admin_messages.rhtml +20 -0
  40. data/app/views/mail_admin/new_admin_message.rhtml +0 -0
  41. data/app/views/mailinglist/_address_form.rhtml +23 -0
  42. data/app/views/mailinglist/_form.rhtml +10 -14
  43. data/app/views/mailinglist/_new_class_form.rhtml +16 -0
  44. data/app/views/mailinglist/_new_form.rhtml +30 -0
  45. data/app/views/mailinglist/edit.rhtml +11 -5
  46. data/app/views/mailinglist/list.rhtml +15 -15
  47. data/app/views/mailinglist/list_mailinglist_classes.rhtml +18 -0
  48. data/app/views/mailinglist/new.rhtml +5 -5
  49. data/app/views/mailinglist/new_address.rhtml +10 -0
  50. data/app/views/mailinglist/new_mailinglist_class.rhtml +8 -0
  51. data/app/views/mailinglist/show.rhtml +15 -13
  52. data/app/views/navigation/_base_add_address_module.rhtml +2 -0
  53. data/app/views/navigation/_base_edit_address_module.rhtml +2 -0
  54. data/app/views/navigation/_base_edit_user_list_module.rhtml +5 -0
  55. data/app/views/navigation/_base_index_module.rhtml +2 -0
  56. data/app/views/navigation/_base_list_mailinglists_module.rhtml +3 -0
  57. data/app/views/navigation/_base_remove_address_module.rhtml +2 -0
  58. data/app/views/navigation/_base_unsubscribe_self_module.rhtml +2 -0
  59. data/app/views/navigation/_base_welcome_module.rhtml +3 -0
  60. data/app/views/navigation/_nav_module.rhtml +77 -0
  61. data/app/views/navigation/_root_add_address_module.rhtml +3 -0
  62. data/app/views/navigation/_root_add_mailinglist_module.rhtml +3 -0
  63. data/app/views/navigation/_root_add_user_module.rhtml +3 -0
  64. data/app/views/navigation/_root_change_user_password_module.rhtml +3 -0
  65. data/app/views/navigation/_root_edit_address_module.rhtml +13 -0
  66. data/app/views/navigation/_root_edit_mailinglist_module.rhtml +12 -0
  67. data/app/views/navigation/_root_edit_user_list_module.rhtml +3 -0
  68. data/app/views/navigation/_root_edit_user_module.rhtml +10 -0
  69. data/app/views/navigation/_root_index_module.rhtml +4 -0
  70. data/app/views/navigation/_root_list_addresses_module.rhtml +11 -0
  71. data/app/views/navigation/_root_list_mailinglists_module.rhtml +11 -0
  72. data/app/views/navigation/_root_list_users_module.rhtml +12 -0
  73. data/app/views/navigation/_root_remove_address_module.rhtml +12 -0
  74. data/app/views/navigation/_root_remove_mailinglist_module.rhtml +12 -0
  75. data/app/views/navigation/_root_remove_user_module.rhtml +12 -0
  76. data/app/views/navigation/_root_show_user_module.rhtml +10 -0
  77. data/app/views/navigation/_root_welcome_module.rhtml +3 -0
  78. data/app/views/navigation/chooseNav.rhtml +0 -0
  79. data/app/views/navigation/logout.rhtml +8 -0
  80. data/app/views/root_admin/_form.rhtml +21 -0
  81. data/app/views/root_admin/add_address.rhtml +3 -0
  82. data/app/views/root_admin/add_mailinglist.rhtml +3 -0
  83. data/app/views/root_admin/admin_user_list.rhtml +29 -0
  84. data/app/views/root_admin/admin_user_new.rhtml +8 -0
  85. data/app/views/root_admin/change_user_password.rhtml +3 -0
  86. data/app/views/root_admin/edit_address.rhtml +3 -0
  87. data/app/views/root_admin/edit_mailinglist.rhtml +3 -0
  88. data/app/views/root_admin/edit_user_list.rhtml +3 -0
  89. data/app/views/root_admin/list_addresses.rhtml +3 -0
  90. data/app/views/root_admin/list_mailinglists.rhtml +3 -0
  91. data/app/views/root_admin/list_users.rhtml +32 -0
  92. data/app/views/root_admin/remove_address.rhtml +3 -0
  93. data/app/views/root_admin/remove_mailinglist.rhtml +3 -0
  94. data/app/views/root_admin/remove_user.rhtml +3 -0
  95. data/app/views/root_admin/show_user.rhtml +3 -0
  96. data/app/views/sugoi_admin/_command_description.rhtml +1 -1
  97. data/app/views/sugoi_admin/_command_list.rhtml +1 -1
  98. data/app/views/sugoi_admin/create_domain.rhtml +1 -1
  99. data/app/views/sugoi_admin/create_list.rhtml +1 -1
  100. data/app/views/sugoi_admin/create_user.rhtml +1 -1
  101. data/app/views/sugoi_admin/help.rhtml +1 -1
  102. data/app/views/sugoi_admin/init.rhtml +1 -1
  103. data/app/views/sugoi_admin/list_addresses.rhtml +1 -1
  104. data/app/views/sugoi_admin/list_domains.rhtml +1 -1
  105. data/app/views/sugoi_admin/list_mailinglist_classes.rhtml +1 -1
  106. data/app/views/sugoi_admin/list_mailinglists.rhtml +1 -1
  107. data/app/views/sugoi_admin/list_users.rhtml +1 -1
  108. data/app/views/sugoi_admin/set_config.rhtml +4 -1
  109. data/app/views/sugoi_admin/show_config.rhtml +1 -1
  110. data/app/views/sugoi_admin/subscribe.rhtml +1 -1
  111. data/app/views/sugoi_admin/unsubscribe.rhtml +1 -1
  112. data/bin/maild +1 -1
  113. data/bin/sugoi-mail +1 -1
  114. data/config/environment.rb +2 -2
  115. data/config/routes.rb +4 -2
  116. data/db/migrate/028_add_sessions.rb +15 -0
  117. data/db/schema.rb +56 -48
  118. data/lib/login_system.rb +6 -6
  119. data/lib/tasks/release.rake +2 -2
  120. data/public/404.html +27 -5
  121. data/public/500.html +27 -5
  122. data/public/images/celltop1.jpg +0 -0
  123. data/public/images/title11.jpg +0 -0
  124. data/public/{index.html → index_default.html} +0 -0
  125. data/public/javascripts/dragdrop.js +1 -1
  126. data/public/javascripts/effects.js +1 -1
  127. data/public/javascripts/prototype.js +1 -1
  128. data/public/stylesheets/global.css +201 -0
  129. data/public/stylesheets/scaffold.css +176 -11
  130. data/public/stylesheets/trestle.css +176 -11
  131. data/script/cover +6 -0
  132. data/script/process/inspector +3 -0
  133. data/test/all.rb +2 -0
  134. data/test/fixtures/helps.yml +1 -1
  135. data/test/fixtures/mailinglist_classes.yml +4 -4
  136. data/test/fixtures/messages.yml +22 -2
  137. data/test/functional/base_user_controller_test.rb +18 -0
  138. data/test/functional/mail_admin_controller_test.rb +18 -0
  139. data/test/functional/mailservice_controller_test.rb +164 -19
  140. data/test/functional/navigation_controller_test.rb +18 -0
  141. data/test/functional/root_admin_controller_test.rb +18 -0
  142. data/test/functional/sugoi_admin_controller_test.rb +68 -10
  143. data/test/functionals.rb +2 -1
  144. data/test/integration/test_soap.rb +3 -1
  145. data/test/unit/address_test.rb +16 -1
  146. data/test/unit/domain_test.rb +5 -12
  147. data/test/unit/mailinglist_class_test.rb +2 -2
  148. data/test/unit/mailinglist_test.rb +138 -3
  149. data/test/unit/message_test.rb +256 -1
  150. data/test/unit/proxy_link_test.rb +37 -0
  151. data/test/unit/sys_config_test.rb +6 -0
  152. data/test/unit/user_test.rb +20 -0
  153. data/test/units.rb +2 -1
  154. metadata +94 -8
  155. data/app/views/layouts/address.rhtml +0 -13
  156. data/app/views/layouts/scaffold.rhtml +0 -13
data/INSTALL CHANGED
@@ -63,3 +63,97 @@ you already have) and say:
63
63
  $ sugoi-mail install sugoi
64
64
 
65
65
  This should, all being well, set up and start a sugoi-mail installation.
66
+
67
+
68
+ LUNAR LINUX
69
+
70
+ # lin rubygems sqlite3
71
+ # gem install -y sugoi-mail
72
+ $ sugoi-mail install <your-directory>
73
+
74
+ This is part of why I like Lunar Linux so much.
75
+
76
+
77
+ POSTFIX CONFIGURATION (with optional mail-jail) ------------------------------
78
+ - send questions to aavdacev@invio.co.jp before bothering dagbrown :)
79
+
80
+ 1. Ensure Postfix is installed: ---
81
+ Postfix is the SMTP mail-server with which sugoi-mail will interface. Before proceeding you must ensure you have postfix installed. If it is not installed, run "sudo apt-get install postfix". When the installer asks for configuration types, select the "Internet" configuration and follow the prompts. By default postfix is installed into "/etc/postfix/", which is where you will find the configuration files (master.cf, main.cf).
82
+
83
+ 2. Setup the transport for the sugoi-mail domain(s): ---
84
+ A transport specification tells the mail-server to pass an outgoing mail message to a client software. The default transport is SMTP (which sends mail to the Internet). All of the mail addressed to the domain(s) specified in this step will be directed into sugoi-mail's client (mailc) and then be processed by sugoi-mail. The transport files are to be put into the postfix directory (/etc/postfix/)
85
+
86
+ a) Configure postfix to recognize sugoi-mail and it's client (mailc). In the code below, replace USERNAME with the unix user account that will be running the application, and ensure this user exists on the system. A good default setting is your own username. Do not forget to specify the filepath of your sugoi-mail installation. Append the following into master.cf, as two lines: the first starting with "sugoi..." and the second, indented 2 spaces, starting with "flags..". This is the same format as already existing in master.cf
87
+
88
+ sugoi unix - n n - - pipe
89
+ flags=FDRq user=USERNAME argv=/[sugoi-mail-installpath]/bin/mailc --sender $sender $recipient
90
+
91
+ b) Create a file called "transport" in /etc/postfix/, to assign the domains for transports. This every entry in this file is formatted like so: "[domain] (whitespace) [transport]:[nexthop]" where [nexthop] is often left blank. A suggested 'transport' for sugoi-mail can look like so:
92
+
93
+ "my.domain.jp sugoi:"
94
+
95
+ where my.domain.jp can be changed to your liking, and "sugoi" is the name specified in step 2a. This would mean that all mail to xxx@my.domain.jp will be handled by sugoi mail's mailc client. You may add more domains on separate lines in the same format.
96
+
97
+ c) Postfix reads transport configuration files in binary format, text. This means you need to convert the file you just created into the proper format. Run the following to create 'transport.db', a postfix-readable file:
98
+
99
+ "sudo postmap transport"
100
+
101
+ d) Finally, Postfix need to know where to look for your transport specification. Append the following into the main.cf file (this is the configuration file you generated during installation):
102
+
103
+ "transport_maps = hash:/etc/postfix/transport"
104
+
105
+ NOTE: if this fails saying main.cf is missing, you may have skipped configuration and need to run "sudo dpkg-reconfigure postfix" to generate the default main.cf
106
+
107
+ e) Reload postfix to accept the new cofiguration by running:
108
+
109
+ "sudo postfix reload"
110
+
111
+ If postfix wasn't running, try "sudo postfix start"
112
+
113
+ f) Congratulations, (in theory) all mail sent to the domains you specified should now be handled by sugoi-mail. If something fails, checking /var/log/mail.log is a good idea
114
+
115
+
116
+
117
+ 3. Optional 'Mail-Jail' Configuration For Testing:---
118
+ When testing a mail-software installating (such as sugoi-mail) it is a good idea to set up a mail-jail. A mail-jail is simply a mail-server configuration that prevents all outgoing mail to ever make it to the internet. Instead it dumps all of the mail sent to a folder on the system to use for testing. To configure the mail-jail on Postfix, follow these steps:
119
+
120
+ a) Create the text-file '/root/bin/dumpintofile', which is script that will create a new textfile for every email message that is forwarded to it. This file can be placed anywhere, the /root/bin/ is a good default location. This file will contain the following:
121
+ --------------------
122
+
123
+ #!/bin/sh
124
+
125
+ mkdir -p /tmp/maildumps
126
+ echo "$@" > /tmp/maildumps/dumptofile.$$
127
+ cat >> /tmp/maildumps/dumptofile.$$
128
+
129
+ --------------------
130
+ b) The permissions on this file must be set to read, write, and execute. Use the chmod command to set the permissions:
131
+
132
+ "sudo chmod a=rwx dumpintofile"
133
+
134
+ c) Now the transport for dumpintofile needs to be set up. Brief instructions are provided. For verbose instructions on setting up a transport read section 2 of this document.
135
+
136
+ i. Add the dumptofile catch-all entry to master.cf. Don't forget to set the username, change the filepath (if you created dumpintofile in something other than /root/bin, and indent "flags.." by two spaces:
137
+
138
+ dumpintofile unix - n n - - pipe
139
+ flags=FDRq user=USERNAME argv=/root/bin/dumpintofile --sender $sender $recipient
140
+
141
+ ii. Now set it such that all the mail not that does not have a specified transport in the transport.db file, will go to the file-dumping script, instead of SMPT (send to internet). Append the following to /etc/postfix/main.cf
142
+
143
+ “default_transport = dumpintofile:”
144
+
145
+ IMPORTANT: This will disable all outgoing mail from the server. Comment this line out to re-set SMTP as the default transport.
146
+
147
+ iii. Finally, if postfix was set up for a local-delivery system, reduce the number of aliases by commenting out the line in /etc/postfix/main.cf that looks like:
148
+
149
+ "mydestination = somedomain.com, sub.domain.com, localhost, localhost.localdomain ..."
150
+
151
+ This change will prevent mail to be delivered if it is sent to the current server's hostname. However, mail sent to user@localhost will still be delivered, so beware of this during testing.
152
+
153
+ d) Reload postfix for changes to take effect:
154
+
155
+ "sudo postfix reload"
156
+
157
+ e) Congratulations, your mail-jail is set up. Now all mail sent to domains not specified in the transport you set up in section 2 of this document will be sent into a file. You can find the messages in the directory: /tmp/maildumps/ , they will be text-files with the name "dumptofile.####". If the mail does not appear in that directory, try running "mailq" or viewing the logs found in /var/log/mail.log.
158
+
159
+ ------------------------------------------------------------------------
@@ -30,12 +30,18 @@ class MailserviceApi < ActionWebService::API::Base
30
30
 
31
31
  api_method :admin_user_signup, :returns => [ :bool ],
32
32
  :expects => [ { :login => :string },
33
+ { :description => :string },
33
34
  { :password => :string },
34
- { :password_confirmation => :string } ]
35
+ { :password_confirmation => :string },
36
+ { :mailinglist_admin => :boolean },
37
+ { :domain_admin => :boolean } ]
35
38
 
36
39
  api_method :admin_user_list, :returns => [ [ [:string, :string] ] ],
37
40
  :expects => [ ]
38
41
 
42
+ api_method :admin_user_collection, :returns => [ [ User ] ],
43
+ :expects => [ ]
44
+
39
45
  api_method :admin_user_reset_password, :returns => [ :bool ],
40
46
  :expects => [
41
47
  { :login => :string },
@@ -51,6 +57,9 @@ class MailserviceApi < ActionWebService::API::Base
51
57
  :expects => [ { :mailinglist_name => :string },
52
58
  { :address => :string } ]
53
59
 
60
+ api_method :admin_mailinglists_all, :returns => [ [ Mailinglist ]],
61
+ :expects => [ ]
62
+
54
63
  #------------------------------------------------------------------------
55
64
  # user methods
56
65
  #------------------------------------------------------------------------
@@ -64,7 +73,7 @@ class MailserviceApi < ActionWebService::API::Base
64
73
  api_method :user_logged_in, :returns => [ :bool ], :expects => []
65
74
  api_method :user_name, :returns => [ :string ], :expects => []
66
75
 
67
- api_method :user_mailinglists, :returns => [ [ :integer ] ],
76
+ api_method :user_mailinglists, :returns => [ [ Mailinglist ] ],
68
77
  :expects => []
69
78
 
70
79
  api_method :user_email_address, :returns => [ :string ], :expects => []
@@ -108,7 +117,7 @@ class MailserviceApi < ActionWebService::API::Base
108
117
  # mailing list methods
109
118
  #------------------------------------------------------------------------
110
119
 
111
- api_method :mailinglist_create, :returns => [ :string ],
120
+ api_method :mailinglist_create, :returns => [ :boolean ],
112
121
  :expects => [ { :name => :string },
113
122
  { :mailinglist_class => :string } ]
114
123
 
@@ -156,23 +165,24 @@ class MailserviceApi < ActionWebService::API::Base
156
165
  { :address => :string }
157
166
  ]
158
167
 
159
- api_method :mailinglist_messages, :returns => [ [ :integer ] ],
160
- :expects => [
161
- { :mailinglist_id => :integer }
162
- ]
163
-
164
- api_method :message, :returns => [ Message ],
165
- :expects => [
166
- { :message_id => :integer }
167
- ]
168
-
169
- api_method :message_parent, :returns => [ :integer ],
170
- :expects => [
171
- { :message_id => :integer }
172
- ]
173
-
174
- api_method :message_responses, :returns => [ [ :integer ] ],
175
- :expects => [
176
- { :message_id => :integer }
177
- ]
168
+ ## TODO: Implement message handling functionality
169
+ ## api_method :mailinglist_messages, :returns => [ [ :integer ] ],
170
+ ## :expects => [
171
+ ## { :mailinglist_id => :integer }
172
+ ## ]
173
+ ##
174
+ ## api_method :message, :returns => [ Message ],
175
+ ## :expects => [
176
+ ## { :message_id => :integer }
177
+ ## ]
178
+ ##
179
+ ## api_method :message_parent, :returns => [ :integer ],
180
+ ## :expects => [
181
+ ## { :message_id => :integer }
182
+ ## ]
183
+ ##
184
+ ## api_method :message_responses, :returns => [ [ :integer ] ],
185
+ ## :expects => [
186
+ ## { :message_id => :integer }
187
+ ## ]
178
188
  end
@@ -1,28 +1,11 @@
1
1
  class AccountController < ApplicationController
2
- layout 'scaffold'
3
-
4
2
  include LoginSystem
5
-
6
- def login
7
- case @request.method
8
- when :post
9
- if @session[:user] = User.authenticate(@params[:user_login], @params[:user_password])
10
-
11
- flash['notice'] = "Login successful"
12
- redirect_back_or_default :action => "welcome"
13
- else
14
- flash.now['notice'] = "Login unsuccessful"
15
-
16
- @login = @params[:user_login]
17
- end
18
- end
19
- end
20
3
 
21
4
  def signup
22
- if @request.post?
23
- @user = User.new(@params[:user])
5
+ if request.post?
6
+ @user = User.new(params[:user])
24
7
  if @user.save
25
- @session[:user] = User.authenticate(@user.login, @params[:user][:password])
8
+ session[:user] = User.authenticate(@user.login, params[:user][:password])
26
9
  flash['notice'] = "Signup successful"
27
10
  redirect_back_or_default :action => "welcome"
28
11
  end
@@ -30,10 +13,43 @@ class AccountController < ApplicationController
30
13
  end
31
14
 
32
15
  def logout
33
- @session[:user] = nil
16
+ session[:navList] = :logout
17
+ session[:user] = nil
18
+ redirect_back_or_default :action => "login"
34
19
  end
35
20
 
36
- def welcome
21
+ def login
22
+ case request.method
23
+ when :post
24
+ if session[:user] = User.authenticate(params[:user_login], params[:user_password])
25
+ session[:user_id] = :id # THIS MIGHT BE WRONG, SUPPOSED TO BE ABLE TO ACCESS USER'S BY ID STORED IN SESSION
26
+ flash['notice'] = "Login successful"
27
+ redirect_back_or_default :action => "welcome"
28
+ else
29
+ flash.now['notice'] = "Login unsuccessful"
30
+
31
+ @login = params[:user_login]
32
+ end
33
+ end
34
+ end
35
+
36
+ def welcome
37
+ @controller_name = controller_name
38
+ @action_name = action_name
39
+ session[:user] = User.find session[:user].id
40
+
41
+ @mailinglists = session[:user].mailinglists
42
+
43
+ @mailinglist_classes = MailinglistClass.find(:all)
44
+
45
+ domain_name = session[:domain]
46
+ domain = Domain.find_by_name domain_name
47
+ if domain then
48
+ @users = User.find_all_by_domain_id domain.id
49
+ else
50
+ # error "Domain \"#{domain_name}\" does not exist."
51
+ end
52
+ #session[:navList] = :welcome //not needed??
37
53
  end
38
54
 
39
55
  end
@@ -28,7 +28,9 @@ class AddressController < ApplicationController
28
28
  end
29
29
 
30
30
  def list
31
+ session[:navList] = :logout
31
32
  @address_pages, @addresses = paginate(:addresses)
33
+
32
34
  end
33
35
 
34
36
  def new
@@ -1,4 +1,15 @@
1
1
  # Filters added to this controller will be run for all controllers in the application.
2
2
  # Likewise, all the methods added will be available for all controllers.
3
3
  class ApplicationController < ActionController::Base
4
- end
4
+ before_filter :initialize_variables
5
+
6
+ protected
7
+
8
+ def initialize_variables
9
+ @controller_name = controller_name
10
+ @action_name = action_name
11
+ @users = User.find(:all)
12
+ @mailinglist_classes = MailinglistClass.find(:all)
13
+ end
14
+
15
+ end
@@ -0,0 +1,29 @@
1
+ class BaseUserController < ApplicationController
2
+
3
+ def edit_user_list
4
+ @mailinglists = session[:user].mailinglists
5
+ end
6
+
7
+ def list_mailinglists
8
+ end
9
+
10
+ def unsubscribe_self
11
+ end
12
+
13
+ def add_address
14
+ end
15
+
16
+ def remove_address
17
+ end
18
+
19
+ def show_address
20
+ end
21
+
22
+ def edit_address
23
+ end
24
+
25
+ def show_mailinglist
26
+
27
+ end
28
+
29
+ end
@@ -1,34 +1,33 @@
1
1
  class DomainController < ApplicationController
2
2
  include DomainSystem
3
- layout 'scaffold'
4
3
 
5
4
  def login
6
- case @request.method
5
+ case request.method
7
6
  when :post
8
- if @session[:domain] = Domain.authenticate(@params[:domain_name], @params[:domain_password])
7
+ if session[:domain] = Domain.authenticate(params[:domain_name], params[:domain_password])
9
8
 
10
9
  flash['notice'] = "Login successful"
11
10
  redirect_back_or_default :action => "welcome"
12
11
  else
13
12
  flash.now['notice'] = "Login unsuccessful"
14
13
 
15
- @login = @params[:domain_login]
14
+ @login = params[:domain_login]
16
15
  end
17
16
  end
18
17
  end
19
18
 
20
19
  def signup
21
- @domain = Domain.new(@params[:domain])
20
+ @domain = Domain.new(params[:domain])
22
21
 
23
- if @request.post? and @domain.save
24
- @session[:domain] = Domain.authenticate(@domain.name, @params[:domain][:password])
22
+ if request.post? and @domain.save
23
+ session[:domain] = Domain.authenticate(@domain.name, params[:domain][:password])
25
24
  flash['notice'] = "Signup successful"
26
25
  redirect_back_or_default :action => "welcome"
27
26
  end
28
27
  end
29
28
 
30
29
  def logout
31
- @session[:domain] = nil
30
+ session[:domain] = nil
32
31
  end
33
32
 
34
33
  def welcome
@@ -0,0 +1,275 @@
1
+ class MailAdminController < ApplicationController
2
+ def list_admin_messages
3
+ @mailinglist = Mailinglist.find_by_id(params[:id])
4
+ @adminmessages = AdminMessage.find(@mailinglist.welcome_admin_message_id, @mailinglist.confirmed_admin_message_id, @mailinglist.sayonara_admin_message_id)
5
+ end
6
+
7
+ def edit_admin_message
8
+ if request.post?
9
+ @adminmessage = AdminMessage.find(params[:id])
10
+ if @adminmessage.update_attributes(params[:adminmessage])
11
+ if @adminmessage.save
12
+ flash[:notice] = 'The admin message was successfully edited.'
13
+ session[:user] = User.find session[:user].id
14
+ redirect_to :controller => 'mailinglist',
15
+ :action => 'show',
16
+ :id => params[:id]
17
+ end
18
+ end
19
+ else
20
+ @adminmessage = AdminMessage.find(params[:id])
21
+ end
22
+ end
23
+
24
+ def new_admin_message
25
+
26
+ end
27
+
28
+ def remove_admin_message
29
+ end
30
+
31
+ #
32
+ # private
33
+ # def get_password
34
+ # password = ask "Password: " do |q| q.echo = false end
35
+ # confirmation = ask "Confirm: " do |q| q.echo = false end
36
+ #
37
+ # return [ password, confirmation ]
38
+ # end
39
+ #
40
+ # def format_errors errors
41
+ # errors.map do |facility, text|
42
+ # " #{facility}: #{text}\n"
43
+ # end
44
+ # end
45
+ #
46
+ # def error(error_text)
47
+ # callername = caller[0].gsub(/.*\`(\w+)\'.*/, '\1')
48
+ # @error = "#{callername}: #{error_text}"
49
+ # nil
50
+ # end
51
+ #
52
+ # def message(message_text)
53
+ # callername = caller[0].gsub(/.*\`(\w+)\'.*/, '\1')
54
+ # @messages ||= []
55
+ # @messages << "#{callername}: #{message_text}"
56
+ # end
57
+ #
58
+ # def ask_description(thing)
59
+ # description = ask "Description for #{thing}: "
60
+ # if description == "" then description = nil end
61
+ # description
62
+ # end
63
+ #
64
+ # public
65
+ #
66
+ # def init
67
+ # @alreadythere = []
68
+ # [ MailinglistClass, AdminMessage, SysConfig, Help ].each do |table|
69
+ # fixture = YAML.load(File.read(File.join(RAILS_ROOT,
70
+ # "test",
71
+ # "fixtures",
72
+ # table.name.tableize +
73
+ # ".yml")))
74
+ # fixture.values.sort_by do |values| values["id"].to_i end .
75
+ # each do |values|
76
+ # begin
77
+ # table.find values["id"]
78
+ # @alreadythere << "%s[%s]" % [ table.name, values["id"] ]
79
+ # rescue ActiveRecord::RecordNotFound
80
+ # configvar = table.new values
81
+ # configvar.id = values["id"].to_i # hohoho
82
+ # configvar.save
83
+ # end
84
+ # end
85
+ # end
86
+ # end
87
+ #
88
+ # def show_config(var_name=nil)
89
+ # unless var_name
90
+ # @config_vars = SysConfig.find_all
91
+ # else
92
+ # @config_vars = SysConfig.find_all_by_name(var_name)
93
+ # end
94
+ # end
95
+ #
96
+ # def set_config(var_name, new_value)
97
+ # @config_var = SysConfig.find_by_name(var_name)
98
+ # @config_var.value = new_value
99
+ # @config_var.save
100
+ # end
101
+ #
102
+ # def list_domains
103
+ # @domains = Domain.find_all
104
+ # end
105
+ #
106
+ # def list_mailinglists(domain_name)
107
+ # domain = Domain.find_by_name(domain_name)
108
+ # if domain then
109
+ # @mailinglists = domain.mailinglists
110
+ # else
111
+ # error "#{domain_name}: not found"
112
+ # end
113
+ # end
114
+ #
115
+ # def list_addresses(mailinglist_address)
116
+ # @mailinglist = Mailinglist.find_by_address(mailinglist_address)
117
+ # if @mailinglist then
118
+ # @mailinglist=@mailinglist[0]
119
+ # @addresses = @mailinglist.addresses
120
+ # else
121
+ # error "#{mailinglist_address}: not found"
122
+ # end
123
+ # end
124
+ #
125
+ # def create_domain(domain_name)
126
+ # @messages = []
127
+ #
128
+ # domain = Domain.find_by_name domain_name
129
+ # if domain == nil then
130
+ # password, confirmation = get_password
131
+ # domain = Domain.new
132
+ # domain.name = domain_name
133
+ # domain.password = password
134
+ # domain.password_confirmation = confirmation
135
+ # if domain.save then
136
+ # message "Domain \"#{domain_name}\" created successfully."
137
+ # else
138
+ # error "Could not create domain \"#{domain_name}\":\n" +
139
+ # format_errors(domain.errors).join
140
+ # end
141
+ # else
142
+ # error "Domain \"#{domain_name}\" already exists."
143
+ # end
144
+ # end
145
+ #
146
+ # def create_user domain_name, username,
147
+ # email_address = nil,
148
+ # description = nil
149
+ # domain = Domain.find_by_name domain_name
150
+ # if domain then
151
+ # password, password_confirmation = get_password
152
+ #
153
+ # if email_address == nil then
154
+ # email_address = ask "Address to forward #{username}'s email to: "
155
+ # if email_address == "" then email_address = nil end
156
+ # end
157
+ #
158
+ # description ||= ask_description(username)
159
+ #
160
+ # user = User.new
161
+ # user.domain = domain
162
+ # user.login = username
163
+ # user.password = password
164
+ # user.password_confirmation = password_confirmation
165
+ # user.description = description
166
+ # user.domainadmin = false
167
+ # user.mailadmin = false
168
+ #
169
+ # if user.save then
170
+ # message "User \"#{username}@#{domain_name}\" created successfully"
171
+ # if email_address then
172
+ # addr=Address.find_or_create_by_address(email_address)
173
+ # user.addresses << addr
174
+ # end
175
+ # else
176
+ # error "User \"#{username}@#{domain_name}\" was not created:\n" +
177
+ # format_errors(user.errors).join("\n")
178
+ # end
179
+ # else
180
+ # error "Domain \"#{domain_name}\" does not exist."
181
+ # end
182
+ # end
183
+ #
184
+ # def list_users domain_name
185
+ # domain = Domain.find_by_name domain_name
186
+ # if domain then
187
+ # @users = User.find_all_by_domain_id domain.id
188
+ # else
189
+ # error "Domain \"#{domain_name}\" does not exist."
190
+ # end
191
+ # end
192
+ #
193
+ # def list_mailinglist_classes
194
+ # @mailinglist_classes = MailinglistClass.find :all, :order => :id
195
+ # end
196
+ #
197
+ # def list_mlclasses
198
+ # list_mailinglist_classes
199
+ # render "sugoi_admin/list_mailinglist_classes"
200
+ # end
201
+ #
202
+ # def create_list mailinglist_name,
203
+ # domain_name, user_name, description = nil, mailinglist_class_id = 2
204
+ #
205
+ # mlclass = begin
206
+ # MailinglistClass.find mailinglist_class_id.to_i
207
+ # rescue ActiveRecord::RecordNotFound
208
+ # nil
209
+ # end
210
+ # unless mlclass
211
+ # return error("Invalid mailing list class: #{mailinglist_class_id}")
212
+ # end
213
+ #
214
+ # domain = Domain.find_by_name domain_name
215
+ # unless domain
216
+ # return error("Domain \"#{domain_name}\" not found.")
217
+ # end
218
+ #
219
+ # user = User.find_by_login_and_domain_id user_name, domain.id
220
+ # unless user
221
+ # return error("User \"#{user_name}\" not found "+
222
+ # "in domain \"#{domain_name}\".")
223
+ # end
224
+ #
225
+ # ml=Mailinglist.new
226
+ # ml.user = user
227
+ # ml.description = description
228
+ # ml.mailinglist_class = mlclass
229
+ # ml.name = mailinglist_name
230
+ #
231
+ # if ml.save then
232
+ # message "Mailing list \"#{ml.address}\" created successfully."
233
+ # end
234
+ # end
235
+ #
236
+ # def subscribe(mailinglist_address, new_address)
237
+ # address=Address.find_or_create_by_address new_address
238
+ # ml=Mailinglist.find_by_address(mailinglist_address)
239
+ # unless ml
240
+ # return error("Mailing list \"#{mailinglist_address}\" not found.")
241
+ # end
242
+ # ml=ml[0]
243
+ # ml.addresses << address
244
+ # message "Subscribed \"#{new_address}\" to \"#{mailinglist_address}\""
245
+ # end
246
+ #
247
+ # def unsubscribe(mailinglist_address, address_to_remove)
248
+ # address = Address.find_by_address address_to_remove
249
+ # unless address
250
+ # return error("Address \"#{address_to_remove}\" unknown.")
251
+ # end
252
+ #
253
+ # mailinglist = Mailinglist.find_by_address mailinglist_address
254
+ # unless mailinglist
255
+ # return error("Mailing list \"#{mailinglist_address}\" unknown.")
256
+ # end
257
+ #
258
+ # @mailinglist = mailinglist[0]
259
+ #
260
+ # unless @mailinglist.addresses.member? address
261
+ # return error("Address \"#{address}\" not in " + "
262
+ # mailing list \"#{mailinglist_address}\"")
263
+ # end
264
+ #
265
+ # @removed_addresses=@mailinglist.remove_addresses address
266
+ # end
267
+ #
268
+ # def help(command=nil)
269
+ # if command
270
+ # @help = Help.find_by_facility_and_command self.class.name, command
271
+ # else
272
+ # @help = Help.find_all_by_facility self.class.name
273
+ # end
274
+ # end
275
+ end