mailcvt 0.1.43 → 0.1.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/bin/runmailcvt CHANGED
@@ -43,8 +43,8 @@ fi
43
43
  copyonly1 $maildir
44
44
  allmail=$maildir/*
45
45
  grepexp="^Date: |^Message-ID: |^Subject: |^From: |^To: |^Cc: |^Content-Disposition: attachment;"
46
- echo "[$(now)] grep -E -A9 \"$grepexp\" $allmail > $grepout"
47
- grep -E -A9 "$grepexp" $allmail > $grepout
46
+ echo "[$(now)] grep -i -E -A9 \"$grepexp\" $allmail > $grepout"
47
+ grep -i -E -A9 "$grepexp" $allmail > $grepout
48
48
 
49
49
  bindir=$(cd $(dirname $0) && pwd)
50
50
  rubydir=$(cd $(dirname $(dirname $(dirname $bindir))) && pwd)
@@ -60,8 +60,8 @@ dtocc="$dailydir/dtocc$timestamp"
60
60
  if [ -d $dtocc ]; then
61
61
  copyonly1 $dtocc
62
62
  alldtocc="$dtocc/*"
63
- echo "[$(now)] grep -E -A500 \"^To: |^Cc: \" $alldtocc > $grepout.tocc"
64
- grep -E -A500 "^To: |^Cc: " $alldtocc > "$grepout.tocc"
63
+ echo "[$(now)] grep -i -E -A300 \"^To: |^Cc: \" $alldtocc > $grepout.tocc"
64
+ grep -i -E -A300 "^To: |^Cc: " $alldtocc > "$grepout.tocc"
65
65
 
66
66
  echo "[$(now)] mailcvt parsetocc $dailydir $timestamp"
67
67
  mailcvt parsetocc $dailydir $timestamp
@@ -70,13 +70,5 @@ if [ -d $dtocc ]; then
70
70
  mailcvt cleantocc $dailydir $timestamp
71
71
  fi
72
72
 
73
- echo "[$(now)] update reject size."
74
- recipient=/etc/postfix/recipient_access
75
- size=$({ du -sh $maildir; du -sh $dailydir; } | sed "s/\t.*$//g" | tr '\n' ' ')
76
- cursec=$(date +"%m%d%H%M%S")
77
- sed -i "s/REJECT\t.*$/REJECT\t$size$cursec/g" $recipient
78
- postmap $recipient
79
-
80
-
81
73
  echo "[$(now)] runmailcvt finished."
82
74
  echo "-------------------------------------------------------------------------------"
data/bin/updatesize ADDED
@@ -0,0 +1,12 @@
1
+ #!/bin/bash
2
+
3
+ set -e
4
+ maildir=$(cd $1 && pwd)
5
+ dailydir=$(cd $2 && pwd)/$(date +"%Y%m%d")
6
+
7
+ recipient=/etc/postfix/recipient_access
8
+ size=$({ du -sh $maildir; du -sh $dailydir; } | sed "s/\t.*$//g" | tr '\n' ' ')
9
+ cursec=$(date +"%m%d%H%M%S")
10
+ sed -i "s/REJECT\t.*$/REJECT\t$size$cursec/g" $recipient
11
+ postmap $recipient
12
+ postfix reload
data/lib/grep_mail.rb CHANGED
@@ -4,9 +4,9 @@ require 'log_helper'
4
4
 
5
5
  class GrepMail
6
6
  def initialize(file, lines, maxval)
7
+ @maxval = maxval
7
8
  @pcontent= file.length + 1
8
9
  grouplines(lines)
9
- @maxval = maxval
10
10
  end
11
11
 
12
12
  def grouplines(lines)
@@ -43,7 +43,7 @@ class GrepMail
43
43
  end
44
44
 
45
45
  def keyvalue(line)
46
- if line[@pcontent] == 'C' and line[@pcontent] == 'o'
46
+ if is_content_key?(@pcontent)
47
47
  dlm = ';'
48
48
  else
49
49
  dlm = ':'
@@ -54,15 +54,26 @@ class GrepMail
54
54
  return line[@pcontent..pos], line[(pos+2)..-2]
55
55
  end
56
56
 
57
+ def is_content_key?(line, start)
58
+ return false unless line and line.length > start + 1
59
+ return false unless line[start].upcase == 'C' and line[start+1].downcase == 'o'
60
+ true
61
+ end
62
+
57
63
  def valueonly(line)
58
64
  cap = line[@pcontent]
59
65
  return nil if cap != ' ' and cap != "\t"
60
- line[(@pcontent+1)..-2].strip
66
+ line[(@pcontent+1)..-2]
61
67
  end
62
68
 
63
69
  def tolog
70
+ cols = tocols
71
+ cols.join("\t")
72
+ end
73
+
74
+ def tocols
64
75
  lh = LogHelper.new(@groups)
65
- mlog = lh.tolog
76
+ cols = lh.tocols
66
77
 
67
78
  toccok = lh.tocc_complete?
68
79
  othersok = lh.others_complete?
@@ -73,7 +84,7 @@ class GrepMail
73
84
  elsif othersok
74
85
  @istocc = true
75
86
  end
76
- mlog
87
+ cols
77
88
  end
78
89
 
79
90
  def iscomplete?
data/lib/log_helper.rb CHANGED
@@ -22,16 +22,18 @@ class LogHelper
22
22
  @valends[0] && @valends[1] && @valends[2] && @valends[3] && @valends[6]
23
23
  end
24
24
 
25
- def tolog
25
+ def tocols
26
26
  @valends = Array.new(7, true)
27
27
  cols = Array.new(6)
28
28
 
29
29
  @groups.each do |g|
30
- next if g[:key].nil? or g[:key].length < 2
31
- cap = g[:key][0]
30
+ key = g[:key]
31
+ next unless key and key.length > 1
32
+
33
+ cap = key[0].upcase
32
34
  next unless @@ids.has_key?(cap)
33
35
 
34
- if cap == 'C' and g[:key][1] == 'o'
36
+ if cap == 'C' and key[1].downcase == 'o'
35
37
  cols << concatattach(g)
36
38
  @valends[-1] &= isvalend?(g)
37
39
  else
@@ -42,7 +44,7 @@ class LogHelper
42
44
  end
43
45
  end
44
46
 
45
- cols.join("\t")
47
+ cols
46
48
  end
47
49
 
48
50
  def isvalend?(group)
data/lib/mail_parser.rb CHANGED
@@ -21,6 +21,8 @@ class MailParser
21
21
  @fh.output(mlog, fok) do |omlog, ofok|
22
22
  File.foreach(grep) do |line|
23
23
  curfile = @fh.getfile(line) unless curfile
24
+ next unless curfile
25
+
24
26
  if line != "--\n" and !line.start_with?(curfile)
25
27
  convert curfile, lines, omlog, ofok
26
28
 
@@ -1,3 +1,3 @@
1
1
  module Mailcvt
2
- VERSION = '0.1.43'
2
+ VERSION = '0.1.44'
3
3
  end
data/lib/output_helper.rb CHANGED
@@ -8,7 +8,7 @@ class OutputHelper
8
8
 
9
9
  def getfile(line)
10
10
  pos = line.index(':')
11
- return "" if pos.nil?
11
+ return nil unless pos
12
12
  line[0..(pos-1)]
13
13
  end
14
14
 
@@ -42,7 +42,7 @@ class OutputHelper
42
42
  end
43
43
 
44
44
  @oftocc.puts mailpath
45
- @omlogtocc.puts "#{mailpath}\t#{mlog}"
45
+ @omlogtocc.puts "#{File.basename(mailpath)}\t#{mlog}"
46
46
  end
47
47
 
48
48
  def closetocc
data/lib/setup_mailcvt.rb CHANGED
@@ -16,7 +16,7 @@ class SetupMailcvt
16
16
  File.delete jobfile if File.exist?(jobfile)
17
17
 
18
18
  newmaildir = File.join(Dir.home, 'Maildir/new')
19
- File.open(jobfile, 'w') { |f| f.puts "* * * * * #{get_run_path} #{newmaildir} #{@output}" }
19
+ File.open(jobfile, 'w') { |f| f.puts "5 * * * * #{get_run_path} #{newmaildir} #{@output}" }
20
20
  `crontab #{jobfile}`
21
21
  File.delete jobfile
22
22
  end
data/lib/to_cc_parser.rb CHANGED
@@ -21,23 +21,28 @@ class ToCcParser
21
21
 
22
22
  File.open(mlog, 'a') do |omlog|
23
23
  File.foreach(mtocc) do |line|
24
- oldlog = line[0..-2]
24
+ cols = splitmlog(line)
25
+ next unless cols
25
26
 
26
- next unless oldlog
27
- parts = oldlog.split("\t")
28
- next if parts.nil? or parts.length < 7
29
-
30
- fn = parts[0]
27
+ fn = cols[0]
31
28
  if @toccs.has_key?(fn)
32
29
  tocc = @toccs[fn]
33
- parts[4+1] = tocc[4]
34
- parts[5+1] = tocc[5]
30
+ cols[4+1] = tocc[4]
31
+ cols[5+1] = tocc[5]
35
32
  end
36
- omlog.puts parts[1..-1].join("\t")
33
+ omlog.puts cols[1..-1].join("\t")
37
34
  end
38
35
  end
39
36
  end
40
37
 
38
+ def splitmlog(linehasn, colcount = 7)
39
+ return nil unless linehasn and linehasn.length >= colcount
40
+ cols = linehasn.split("\t")
41
+ return nil if cols.length < colcount
42
+ cols[-1] = cols[-1][0..-2]
43
+ cols
44
+ end
45
+
41
46
  def parsetocc(grep)
42
47
  @toccs = {}
43
48
  lines = []
@@ -59,12 +64,13 @@ class ToCcParser
59
64
  def convert(curfile, lines)
60
65
  return if lines.length == 0
61
66
 
62
- gm = GrepMail.new(curfile, lines, 500)
63
- mlog = gm.tolog
67
+ gm = GrepMail.new(curfile, lines, 300)
68
+ cols = gm.tocols
64
69
  if gm.istocc?
65
70
  @fh.outputtocc2(curfile)
66
71
  else
67
- @toccs[curfile] = mlog unless @toccs.has_key?(curfile)
72
+ key = File.basename(curfile)
73
+ @toccs[key] = cols unless @toccs.has_key?(key)
68
74
  end
69
75
  end
70
76
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailcvt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.43
4
+ version: 0.1.44
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-23 00:00:00.000000000 Z
12
+ date: 2013-07-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -84,20 +84,20 @@ extra_rdoc_files:
84
84
  - README.rdoc
85
85
  - mailcvt.rdoc
86
86
  files:
87
- - bin/mailcvt
88
87
  - bin/lock-runmailcvt
88
+ - bin/mailcvt
89
89
  - bin/runmailcvt
90
- - lib/mailcvt/version.rb
91
- - lib/mailcvt.rb
90
+ - bin/updatesize
92
91
  - lib/big_mail_generator.rb
93
- - lib/mail_parser.rb
94
- - lib/line_converter.rb
95
92
  - lib/grep_mail.rb
96
93
  - lib/log_helper.rb
94
+ - lib/mail_cleaner.rb
95
+ - lib/mail_parser.rb
96
+ - lib/mailcvt.rb
97
97
  - lib/output_helper.rb
98
98
  - lib/setup_mailcvt.rb
99
- - lib/mail_cleaner.rb
100
99
  - lib/to_cc_parser.rb
100
+ - lib/mailcvt/version.rb
101
101
  - README.rdoc
102
102
  - mailcvt.rdoc
103
103
  homepage: http://github.com/ryu-kahou/mailcvt
@@ -120,7 +120,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
120
120
  version: '0'
121
121
  segments:
122
122
  - 0
123
- hash: 2352089024322406467
123
+ hash: -4130757654178801639
124
124
  required_rubygems_version: !ruby/object:Gem::Requirement
125
125
  none: false
126
126
  requirements:
@@ -129,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
129
  version: '0'
130
130
  segments:
131
131
  - 0
132
- hash: 2352089024322406467
132
+ hash: -4130757654178801639
133
133
  requirements: []
134
134
  rubyforge_project:
135
135
  rubygems_version: 1.8.25
@@ -1,58 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- class LineConverter
4
- @@hkeys = {
5
- 'D' => {key: 'Date:', begin: 5, id: 0},
6
- 'M' => {key: 'Message-ID:', begin: 11, id: 1},
7
- 'S' => {key: 'Subject:', begin: 8, id: 2},
8
- 'F' => {key: 'From:', begin: 5, id: 3},
9
- 'T' => {key: 'To:', begin: 3, id: 4}
10
- }
11
- ATTACH = 'Content-Disposition: attachment; filename="'
12
-
13
- def initialize
14
- @hvals = Array.new(5, "")
15
- @attach = ""
16
- end
17
-
18
- def log
19
- line = ""
20
- @hvals.each {|v| line << "#{v}\t"}
21
- line << @attach
22
- end
23
-
24
- def convert(line)
25
- cap = line[0]
26
- if not @hfinished
27
- convertheader(cap, line)
28
- else
29
- convertbody(cap, line)
30
- end
31
- end
32
-
33
- def convertheader(cap, line)
34
- if cap == nil or cap == "\n" or cap == ''
35
- @hfinished = true
36
- return
37
- end
38
-
39
- if cap == "\t" or cap == ' '
40
- @hvals[@hk[:id]] += "\a#{line.strip}" if @hk
41
- else
42
- if @@hkeys.has_key?(cap)
43
- @hk = @@hkeys[cap]
44
- @hvals[@hk[:id]] = line[@hk[:begin]..-1].strip if line.start_with?(@hk[:key])
45
- else
46
- @hk = nil
47
- end
48
- end
49
- end
50
-
51
- def convertbody(cap, line)
52
- if cap == 'C' and line.start_with?(ATTACH)
53
- @attach << "\a" if not @attach.empty?
54
- @attach << line[43..-3] # filename"\n
55
- end
56
- end
57
- end
58
-