schleuder 3.5.1 → 4.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -10
  3. data/Rakefile +12 -12
  4. data/bin/schleuder +1 -1
  5. data/db/migrate/20140501103532_create_lists.rb +1 -1
  6. data/db/migrate/20140501112859_create_subscriptions.rb +1 -1
  7. data/db/migrate/{201508092100_add_language_to_lists.rb → 20150809210000_add_language_to_lists.rb} +1 -1
  8. data/db/migrate/20150812165700_change_keywords_admin_only_defaults.rb +1 -1
  9. data/db/migrate/20150813235800_add_forward_all_incoming_to_admins.rb +1 -1
  10. data/db/migrate/{201508141727_change_send_encrypted_only_default.rb → 20150814172700_change_send_encrypted_only_default.rb} +1 -1
  11. data/db/migrate/{201508222143_add_logfiles_to_keep_to_lists.rb → 20150822214300_add_logfiles_to_keep_to_lists.rb} +1 -1
  12. data/db/migrate/{201508261723_rename_delivery_disabled_to_delivery_enabled_and_change_default.rb → 20150826172300_rename_delivery_disabled_to_delivery_enabled_and_change_default.rb} +1 -1
  13. data/db/migrate/{201508261815_strip_gpg_passphrase.rb → 20150826181500_strip_gpg_passphrase.rb} +1 -1
  14. data/db/migrate/{201508261827_remove_default_mime.rb → 20150826182700_remove_default_mime.rb} +1 -1
  15. data/db/migrate/20160501172700_fix_headers_to_meta_defaults.rb +1 -1
  16. data/db/migrate/20170713215059_add_internal_footer_to_list.rb +1 -1
  17. data/db/migrate/20180110203100_add_sig_enc_to_headers_to_meta_defaults.rb +1 -1
  18. data/db/migrate/20180723173900_add_deliver_selfsent_to_list.rb +1 -1
  19. data/db/migrate/20190906194820_add_autocrypt_header_to_list.rb +1 -1
  20. data/db/migrate/20200118170110_add_set_reply_to_to_sender_and_munge_from.rb +15 -0
  21. data/db/schema.rb +45 -45
  22. data/etc/list-defaults.yml +18 -0
  23. data/etc/postfix/schleuder_sqlite.cf +1 -1
  24. data/etc/schleuder-weekly-key-maintenance.service +9 -0
  25. data/etc/schleuder-weekly-key-maintenance.timer +9 -0
  26. data/etc/schleuder.yml +3 -3
  27. data/lib/schleuder-api-daemon/helpers/schleuder-api-daemon-helper.rb +3 -3
  28. data/lib/schleuder-api-daemon/routes/subscription.rb +4 -4
  29. data/lib/schleuder.rb +10 -12
  30. data/lib/schleuder/cli.rb +9 -188
  31. data/lib/schleuder/cli/cert.rb +2 -2
  32. data/lib/schleuder/cli/cli_helper.rb +14 -0
  33. data/lib/schleuder/cli/schleuder_cert_manager.rb +4 -4
  34. data/lib/schleuder/conf.rb +4 -4
  35. data/lib/schleuder/errors/base.rb +2 -2
  36. data/lib/schleuder/errors/decryption_failed.rb +1 -1
  37. data/lib/schleuder/errors/fatal_error.rb +1 -1
  38. data/lib/schleuder/errors/key_adduid_failed.rb +1 -1
  39. data/lib/schleuder/errors/key_generation_failed.rb +1 -1
  40. data/lib/schleuder/errors/message_empty.rb +1 -1
  41. data/lib/schleuder/errors/message_too_big.rb +1 -1
  42. data/lib/schleuder/errors/too_many_keys.rb +1 -1
  43. data/lib/schleuder/filters/post_decryption/10_request.rb +3 -3
  44. data/lib/schleuder/filters/post_decryption/20_max_message_size.rb +1 -1
  45. data/lib/schleuder/filters/post_decryption/30_forward_to_owner.rb +1 -1
  46. data/lib/schleuder/filters/post_decryption/40_receive_admin_only.rb +1 -1
  47. data/lib/schleuder/filters/post_decryption/50_receive_authenticated_only.rb +1 -1
  48. data/lib/schleuder/filters/post_decryption/60_receive_signed_only.rb +1 -1
  49. data/lib/schleuder/filters/post_decryption/70_receive_encrypted_only.rb +1 -1
  50. data/lib/schleuder/filters/post_decryption/80_receive_from_subscribed_emailaddresses_only.rb +1 -1
  51. data/lib/schleuder/filters/pre_decryption/10_forward_bounce_to_admins.rb +1 -1
  52. data/lib/schleuder/filters/pre_decryption/30_send_key.rb +1 -1
  53. data/lib/schleuder/filters/pre_decryption/40_fix_exchange_messages.rb +1 -1
  54. data/lib/schleuder/filters/pre_decryption/50_strip_html_from_alternative.rb +2 -2
  55. data/lib/schleuder/filters_runner.rb +9 -9
  56. data/lib/schleuder/gpgme/ctx.rb +15 -35
  57. data/lib/schleuder/gpgme/key.rb +4 -136
  58. data/lib/schleuder/gpgme/user_id.rb +2 -0
  59. data/lib/schleuder/keyword_handlers/attach_list_key.rb +17 -0
  60. data/lib/schleuder/keyword_handlers/base.rb +36 -0
  61. data/lib/schleuder/keyword_handlers/get_version.rb +11 -0
  62. data/lib/schleuder/keyword_handlers/key_management.rb +141 -0
  63. data/lib/schleuder/keyword_handlers/list_management.rb +19 -0
  64. data/lib/schleuder/keyword_handlers/resend.rb +208 -0
  65. data/lib/schleuder/keyword_handlers/sign_this.rb +54 -0
  66. data/lib/schleuder/keyword_handlers/subscription_management.rb +213 -0
  67. data/lib/schleuder/keyword_handlers_runner.rb +146 -0
  68. data/lib/schleuder/list.rb +28 -40
  69. data/lib/schleuder/list_builder.rb +16 -5
  70. data/lib/schleuder/listlogger.rb +1 -1
  71. data/lib/schleuder/logger.rb +1 -5
  72. data/lib/schleuder/mail/message.rb +135 -40
  73. data/lib/schleuder/runner.rb +18 -16
  74. data/lib/schleuder/subscription.rb +35 -13
  75. data/lib/schleuder/validators/boolean_validator.rb +1 -1
  76. data/lib/schleuder/validators/email_validator.rb +1 -1
  77. data/lib/schleuder/validators/fingerprint_validator.rb +1 -1
  78. data/lib/schleuder/validators/greater_than_zero_validator.rb +1 -1
  79. data/lib/schleuder/validators/no_line_breaks_validator.rb +1 -1
  80. data/lib/schleuder/version.rb +1 -1
  81. data/locales/de.yml +49 -36
  82. data/locales/en.yml +34 -21
  83. metadata +91 -53
  84. data/bin/pinentry-clearpassphrase +0 -72
  85. data/lib/schleuder/plugin_runners/base.rb +0 -91
  86. data/lib/schleuder/plugin_runners/list_plugins_runner.rb +0 -24
  87. data/lib/schleuder/plugin_runners/request_plugins_runner.rb +0 -27
  88. data/lib/schleuder/plugins/attach_listkey.rb +0 -13
  89. data/lib/schleuder/plugins/get_version.rb +0 -7
  90. data/lib/schleuder/plugins/key_management.rb +0 -138
  91. data/lib/schleuder/plugins/list_management.rb +0 -15
  92. data/lib/schleuder/plugins/resend.rb +0 -199
  93. data/lib/schleuder/plugins/sign_this.rb +0 -46
  94. data/lib/schleuder/plugins/subscription_management.rb +0 -207
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schleuder
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.1
4
+ version: 4.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - schleuder dev team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-15 00:00:00.000000000 Z
11
+ date: 2021-05-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gpgme
@@ -51,9 +51,6 @@ dependencies:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0.3'
54
- - - "<"
55
- - !ruby/object:Gem::Version
56
- version: 0.4.3
57
54
  type: :runtime
58
55
  prerelease: false
59
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -61,37 +58,34 @@ dependencies:
61
58
  - - "~>"
62
59
  - !ruby/object:Gem::Version
63
60
  version: '0.3'
64
- - - "<"
65
- - !ruby/object:Gem::Version
66
- version: 0.4.3
67
61
  - !ruby/object:Gem::Dependency
68
62
  name: activerecord
69
63
  requirement: !ruby/object:Gem::Requirement
70
64
  requirements:
71
65
  - - "~>"
72
66
  - !ruby/object:Gem::Version
73
- version: '4.2'
67
+ version: 6.1.3
74
68
  type: :runtime
75
69
  prerelease: false
76
70
  version_requirements: !ruby/object:Gem::Requirement
77
71
  requirements:
78
72
  - - "~>"
79
73
  - !ruby/object:Gem::Version
80
- version: '4.2'
74
+ version: 6.1.3
81
75
  - !ruby/object:Gem::Dependency
82
- name: rack-test
76
+ name: bcrypt
83
77
  requirement: !ruby/object:Gem::Requirement
84
78
  requirements:
85
79
  - - "~>"
86
80
  - !ruby/object:Gem::Version
87
- version: 0.7.0
81
+ version: 3.1.2
88
82
  type: :runtime
89
83
  prerelease: false
90
84
  version_requirements: !ruby/object:Gem::Requirement
91
85
  requirements:
92
86
  - - "~>"
93
87
  - !ruby/object:Gem::Version
94
- version: 0.7.0
88
+ version: 3.1.2
95
89
  - !ruby/object:Gem::Dependency
96
90
  name: rake
97
91
  requirement: !ruby/object:Gem::Requirement
@@ -112,42 +106,42 @@ dependencies:
112
106
  requirements:
113
107
  - - "~>"
114
108
  - !ruby/object:Gem::Version
115
- version: 1.3.6
109
+ version: 1.4.2
116
110
  type: :runtime
117
111
  prerelease: false
118
112
  version_requirements: !ruby/object:Gem::Requirement
119
113
  requirements:
120
114
  - - "~>"
121
115
  - !ruby/object:Gem::Version
122
- version: 1.3.6
116
+ version: 1.4.2
123
117
  - !ruby/object:Gem::Dependency
124
118
  name: sinatra
125
119
  requirement: !ruby/object:Gem::Requirement
126
120
  requirements:
127
121
  - - "~>"
128
122
  - !ruby/object:Gem::Version
129
- version: '1'
123
+ version: '2'
130
124
  type: :runtime
131
125
  prerelease: false
132
126
  version_requirements: !ruby/object:Gem::Requirement
133
127
  requirements:
134
128
  - - "~>"
135
129
  - !ruby/object:Gem::Version
136
- version: '1'
130
+ version: '2'
137
131
  - !ruby/object:Gem::Dependency
138
132
  name: sinatra-contrib
139
133
  requirement: !ruby/object:Gem::Requirement
140
134
  requirements:
141
135
  - - "~>"
142
136
  - !ruby/object:Gem::Version
143
- version: '1'
137
+ version: '2'
144
138
  type: :runtime
145
139
  prerelease: false
146
140
  version_requirements: !ruby/object:Gem::Requirement
147
141
  requirements:
148
142
  - - "~>"
149
143
  - !ruby/object:Gem::Version
150
- version: '1'
144
+ version: '2'
151
145
  - !ruby/object:Gem::Dependency
152
146
  name: thor
153
147
  requirement: !ruby/object:Gem::Requirement
@@ -196,70 +190,112 @@ dependencies:
196
190
  requirements:
197
191
  - - "~>"
198
192
  - !ruby/object:Gem::Version
199
- version: 3.5.0
193
+ version: '3'
200
194
  type: :development
201
195
  prerelease: false
202
196
  version_requirements: !ruby/object:Gem::Requirement
203
197
  requirements:
204
198
  - - "~>"
205
199
  - !ruby/object:Gem::Version
206
- version: 3.5.0
200
+ version: '3'
207
201
  - !ruby/object:Gem::Dependency
208
202
  name: hirb
209
203
  requirement: !ruby/object:Gem::Requirement
210
204
  requirements:
211
- - - ">="
205
+ - - "~>"
212
206
  - !ruby/object:Gem::Version
213
207
  version: '0'
214
208
  type: :development
215
209
  prerelease: false
216
210
  version_requirements: !ruby/object:Gem::Requirement
217
211
  requirements:
218
- - - ">="
212
+ - - "~>"
219
213
  - !ruby/object:Gem::Version
220
214
  version: '0'
221
215
  - !ruby/object:Gem::Dependency
222
216
  name: factory_bot
223
217
  requirement: !ruby/object:Gem::Requirement
224
218
  requirements:
225
- - - ">="
219
+ - - "~>"
226
220
  - !ruby/object:Gem::Version
227
- version: '0'
221
+ version: '6.0'
228
222
  type: :development
229
223
  prerelease: false
230
224
  version_requirements: !ruby/object:Gem::Requirement
231
225
  requirements:
232
- - - ">="
226
+ - - "~>"
233
227
  - !ruby/object:Gem::Version
234
- version: '0'
228
+ version: '6.0'
235
229
  - !ruby/object:Gem::Dependency
236
230
  name: database_cleaner
237
231
  requirement: !ruby/object:Gem::Requirement
238
232
  requirements:
239
- - - ">="
233
+ - - "~>"
240
234
  - !ruby/object:Gem::Version
241
- version: '0'
235
+ version: '2.0'
242
236
  type: :development
243
237
  prerelease: false
244
238
  version_requirements: !ruby/object:Gem::Requirement
245
239
  requirements:
246
- - - ">="
240
+ - - "~>"
247
241
  - !ruby/object:Gem::Version
248
- version: '0'
242
+ version: '2.0'
249
243
  - !ruby/object:Gem::Dependency
250
244
  name: simplecov-console
251
245
  requirement: !ruby/object:Gem::Requirement
252
246
  requirements:
253
- - - ">="
247
+ - - "~>"
254
248
  - !ruby/object:Gem::Version
255
249
  version: '0'
256
250
  type: :development
257
251
  prerelease: false
258
252
  version_requirements: !ruby/object:Gem::Requirement
259
253
  requirements:
260
- - - ">="
254
+ - - "~>"
261
255
  - !ruby/object:Gem::Version
262
256
  version: '0'
257
+ - !ruby/object:Gem::Dependency
258
+ name: rack-test
259
+ requirement: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - "~>"
262
+ - !ruby/object:Gem::Version
263
+ version: '1'
264
+ type: :development
265
+ prerelease: false
266
+ version_requirements: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - "~>"
269
+ - !ruby/object:Gem::Version
270
+ version: '1'
271
+ - !ruby/object:Gem::Dependency
272
+ name: rubocop
273
+ requirement: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - "~>"
276
+ - !ruby/object:Gem::Version
277
+ version: '1'
278
+ type: :development
279
+ prerelease: false
280
+ version_requirements: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - "~>"
283
+ - !ruby/object:Gem::Version
284
+ version: '1'
285
+ - !ruby/object:Gem::Dependency
286
+ name: byebug
287
+ requirement: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - "~>"
290
+ - !ruby/object:Gem::Version
291
+ version: '10'
292
+ type: :development
293
+ prerelease: false
294
+ version_requirements: !ruby/object:Gem::Requirement
295
+ requirements:
296
+ - - "~>"
297
+ - !ruby/object:Gem::Version
298
+ version: '10'
263
299
  description: |-
264
300
  Schleuder is a group's email-gateway: subscribers can exchange encrypted emails among themselves, receive emails from non-subscribers and send emails to non-subscribers via the list.
265
301
 
@@ -273,29 +309,31 @@ extra_rdoc_files: []
273
309
  files:
274
310
  - README.md
275
311
  - Rakefile
276
- - bin/pinentry-clearpassphrase
277
312
  - bin/schleuder
278
313
  - bin/schleuder-api-daemon
279
314
  - db/migrate/20140501103532_create_lists.rb
280
315
  - db/migrate/20140501112859_create_subscriptions.rb
281
- - db/migrate/201508092100_add_language_to_lists.rb
316
+ - db/migrate/20150809210000_add_language_to_lists.rb
282
317
  - db/migrate/20150812165700_change_keywords_admin_only_defaults.rb
283
318
  - db/migrate/20150813235800_add_forward_all_incoming_to_admins.rb
284
- - db/migrate/201508141727_change_send_encrypted_only_default.rb
285
- - db/migrate/201508222143_add_logfiles_to_keep_to_lists.rb
286
- - db/migrate/201508261723_rename_delivery_disabled_to_delivery_enabled_and_change_default.rb
287
- - db/migrate/201508261815_strip_gpg_passphrase.rb
288
- - db/migrate/201508261827_remove_default_mime.rb
319
+ - db/migrate/20150814172700_change_send_encrypted_only_default.rb
320
+ - db/migrate/20150822214300_add_logfiles_to_keep_to_lists.rb
321
+ - db/migrate/20150826172300_rename_delivery_disabled_to_delivery_enabled_and_change_default.rb
322
+ - db/migrate/20150826181500_strip_gpg_passphrase.rb
323
+ - db/migrate/20150826182700_remove_default_mime.rb
289
324
  - db/migrate/20160501172700_fix_headers_to_meta_defaults.rb
290
325
  - db/migrate/20170713215059_add_internal_footer_to_list.rb
291
326
  - db/migrate/20180110203100_add_sig_enc_to_headers_to_meta_defaults.rb
292
327
  - db/migrate/20180723173900_add_deliver_selfsent_to_list.rb
293
328
  - db/migrate/20190906194820_add_autocrypt_header_to_list.rb
329
+ - db/migrate/20200118170110_add_set_reply_to_to_sender_and_munge_from.rb
294
330
  - db/schema.rb
295
331
  - etc/init.d/schleuder-api-daemon
296
332
  - etc/list-defaults.yml
297
333
  - etc/postfix/schleuder_sqlite.cf
298
334
  - etc/schleuder-api-daemon.service
335
+ - etc/schleuder-weekly-key-maintenance.service
336
+ - etc/schleuder-weekly-key-maintenance.timer
299
337
  - etc/schleuder.cron.weekly
300
338
  - etc/schleuder.yml
301
339
  - lib/schleuder-api-daemon.rb
@@ -308,6 +346,7 @@ files:
308
346
  - lib/schleuder.rb
309
347
  - lib/schleuder/cli.rb
310
348
  - lib/schleuder/cli/cert.rb
349
+ - lib/schleuder/cli/cli_helper.rb
311
350
  - lib/schleuder/cli/schleuder_cert_manager.rb
312
351
  - lib/schleuder/cli/subcommand_fix.rb
313
352
  - lib/schleuder/conf.rb
@@ -351,6 +390,15 @@ files:
351
390
  - lib/schleuder/gpgme/key.rb
352
391
  - lib/schleuder/gpgme/sub_key.rb
353
392
  - lib/schleuder/gpgme/user_id.rb
393
+ - lib/schleuder/keyword_handlers/attach_list_key.rb
394
+ - lib/schleuder/keyword_handlers/base.rb
395
+ - lib/schleuder/keyword_handlers/get_version.rb
396
+ - lib/schleuder/keyword_handlers/key_management.rb
397
+ - lib/schleuder/keyword_handlers/list_management.rb
398
+ - lib/schleuder/keyword_handlers/resend.rb
399
+ - lib/schleuder/keyword_handlers/sign_this.rb
400
+ - lib/schleuder/keyword_handlers/subscription_management.rb
401
+ - lib/schleuder/keyword_handlers_runner.rb
354
402
  - lib/schleuder/list.rb
355
403
  - lib/schleuder/list_builder.rb
356
404
  - lib/schleuder/listlogger.rb
@@ -360,16 +408,6 @@ files:
360
408
  - lib/schleuder/mail/gpg.rb
361
409
  - lib/schleuder/mail/message.rb
362
410
  - lib/schleuder/mail/parts_list.rb
363
- - lib/schleuder/plugin_runners/base.rb
364
- - lib/schleuder/plugin_runners/list_plugins_runner.rb
365
- - lib/schleuder/plugin_runners/request_plugins_runner.rb
366
- - lib/schleuder/plugins/attach_listkey.rb
367
- - lib/schleuder/plugins/get_version.rb
368
- - lib/schleuder/plugins/key_management.rb
369
- - lib/schleuder/plugins/list_management.rb
370
- - lib/schleuder/plugins/resend.rb
371
- - lib/schleuder/plugins/sign_this.rb
372
- - lib/schleuder/plugins/subscription_management.rb
373
411
  - lib/schleuder/runner.rb
374
412
  - lib/schleuder/subscription.rb
375
413
  - lib/schleuder/validators/boolean_validator.rb
@@ -386,7 +424,7 @@ licenses:
386
424
  metadata:
387
425
  homepage_uri: https://schleuder.org/
388
426
  documentation_uri: https://schleuder.org/docs/
389
- changelog_uri: https://0xacab.org/schleuder/schleuder/blob/master/CHANGELOG.md
427
+ changelog_uri: https://0xacab.org/schleuder/schleuder/blob/main/CHANGELOG.md
390
428
  source_code_uri: https://0xacab.org/schleuder/schleuder/
391
429
  bug_tracker_uri: https://0xacab.org/schleuder/schleuder/issues
392
430
  mailing_list_uri: https://lists.nadir.org/mailman/listinfo/schleuder-announce/
@@ -400,7 +438,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
400
438
  requirements:
401
439
  - - ">="
402
440
  - !ruby/object:Gem::Version
403
- version: 2.1.0
441
+ version: 2.5.0
404
442
  required_rubygems_version: !ruby/object:Gem::Requirement
405
443
  requirements:
406
444
  - - ">="
@@ -411,5 +449,5 @@ rubyforge_project:
411
449
  rubygems_version: 2.7.6.2
412
450
  signing_key:
413
451
  specification_version: 4
414
- summary: Schleuder is a gpg-enabled mailing list manager with remailing-capabilities.
452
+ summary: Schleuder is an encrypting mailing list manager with remailing-capabilities.
415
453
  test_files: []
@@ -1,72 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # This file can be deleted once we cease to support gnupg 2.0.
4
-
5
- require 'fileutils'
6
- require 'cgi'
7
- require 'openssl'
8
-
9
- def respond(msg, flush=true)
10
- $stdout.puts msg
11
- if flush
12
- $stdout.flush
13
- end
14
- end
15
-
16
- def send_ok(flush=true)
17
- respond 'OK', flush
18
- end
19
-
20
- def send_password
21
- if File.exist?(OLDPWDSENTFILE)
22
- pwd = ''
23
- if File.exist?(EMPTYPWDSENTFILE1)
24
- FileUtils.touch(EMPTYPWDSENTFILE2)
25
- else
26
- FileUtils.touch(EMPTYPWDSENTFILE1)
27
- end
28
- else
29
- pwd = OLDPASSWD
30
- FileUtils.touch(OLDPWDSENTFILE)
31
- end
32
- respond "D #{pwd}"
33
- end
34
-
35
- def do_exit
36
- if File.exist?(EMPTYPWDSENTFILE2)
37
- FileUtils.rm_rf(TMPDIR)
38
- end
39
- exit 0
40
- end
41
-
42
- OLDPASSWD = CGI.escape(ENV['PINENTRY_USER_DATA'].to_s)
43
- if OLDPASSWD.empty?
44
- respond "Fatal error: passed PINENTRY_USER_DATA was empty, cannot continue"
45
- exit 1
46
- end
47
-
48
- # We need a static directory name to maintain the state across invocations of
49
- # this file.
50
- TMPDIR = File.join(ENV['GNUPGHOME'], '.tmp-pinentry-clearpassphrase')
51
- OLDPWDSENTFILE = File.join(TMPDIR, '1')
52
- EMPTYPWDSENTFILE1 = File.join(TMPDIR, '2')
53
- EMPTYPWDSENTFILE2 = File.join(TMPDIR, '3')
54
- if ! Dir.exist?(TMPDIR)
55
- Dir.mkdir(TMPDIR)
56
- end
57
-
58
- respond "OK - what's up?"
59
-
60
- while line = $stdin.gets do
61
- case line
62
- when /^GETPIN/
63
- send_password
64
- send_ok
65
- when /^BYE/
66
- send_ok false
67
- do_exit
68
- else
69
- send_ok
70
- end
71
- end
72
-
@@ -1,91 +0,0 @@
1
- module Schleuder
2
- module PluginRunners
3
- module Base
4
- def run(list, mail)
5
- list.logger.debug "Starting #{self}"
6
- @list = list
7
- @mail = mail
8
- setup
9
-
10
- output = mail.keywords.map do |keyword, arguments|
11
- run_plugin(keyword, arguments)
12
- end
13
-
14
- output.flatten.compact
15
- end
16
-
17
-
18
- private
19
-
20
-
21
- def run_plugin(keyword, arguments)
22
- @list.logger.debug "Running keyword '#{keyword}'"
23
-
24
- error = check_admin_only(keyword)
25
- return error if error
26
-
27
- command = keyword.gsub('-', '_')
28
- if ['list_name', 'listname'].include? (command)
29
- return nil
30
- elsif ! @plugin_module.respond_to?(command)
31
- return I18n.t('plugins.unknown_keyword', keyword: keyword)
32
- else
33
- response = run_command(command, arguments)
34
- if @list.keywords_admin_notify.include?(keyword)
35
- notify_admins(keyword, arguments, response)
36
- end
37
- return response
38
- end
39
- rescue => exc
40
- # Log to system, this information is probably more useful for
41
- # system-admins than for list-admins.
42
- Schleuder.logger.error(exc.message_with_backtrace)
43
- I18n.t("plugins.plugin_failed", keyword: keyword)
44
- end
45
-
46
- def run_command(command, arguments)
47
- out = @plugin_module.send(command, arguments, @list, @mail)
48
- Array(out).flatten
49
- end
50
-
51
- def check_admin_only(keyword)
52
- if @list.admin_only?(keyword) && ! @list.from_admin?(@mail)
53
- @list.logger.debug "Error: Keyword is admin-only, sent by non-admin"
54
- Schleuder::Errors::KeywordAdminOnly.new(keyword).to_s
55
- else
56
- false
57
- end
58
- end
59
-
60
- def setup
61
- check_listname_keyword
62
- load_plugin_files
63
- @plugin_module = self.name.demodulize.gsub("Runner", "").constantize
64
- end
65
-
66
- def check_listname_keyword
67
- return nil if @mail.keywords.blank?
68
-
69
- listname_kw = @mail.keywords.assoc('list-name') || @mail.keywords.assoc('listname')
70
- if listname_kw.blank?
71
- @mail.reply_to_signer I18n.t(:missing_listname_keyword_error)
72
- exit
73
- else
74
- listname_args = listname_kw.last
75
- if ! [@list.email, @list.request_address].include?(listname_args.first)
76
- @mail.reply_to_signer I18n.t(:wrong_listname_keyword_error)
77
- exit
78
- end
79
- end
80
- end
81
-
82
- def load_plugin_files
83
- @list.logger.debug "Loading plugins"
84
- Dir["#{Schleuder::Conf.plugins_dir}/*.rb"].each do |file|
85
- require file
86
- end
87
- end
88
-
89
- end
90
- end
91
- end