Mercurial > p > roundup > code
annotate roundup-mailgw @ 373:ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Cleaned mailgw up significantly, tested unix mailbox some more. POP
still untested.
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Thu, 08 Nov 2001 05:16:55 +0000 |
| parents | 4850c86bfd89 |
| children | 2ff102523713 |
| rev | line source |
|---|---|
|
27
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1 #! /usr/bin/python |
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
2 # |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
3 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/) |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
4 # This module is free software, and you may redistribute it and/or modify |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
5 # under the same terms as Python, so long as this copyright message and |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
6 # disclaimer are retained in their original form. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
7 # |
| 214 | 8 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR |
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
9 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
10 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
11 # POSSIBILITY OF SUCH DAMAGE. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
12 # |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
13 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
14 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
15 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
16 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
17 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
18 # |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
19 # $Id: roundup-mailgw,v 1.12 2001-11-08 05:16:55 richard Exp $ |
|
27
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
20 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
21 import sys, os, re |
|
27
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
22 if int(sys.version[0]) < 2: |
|
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
23 print "Roundup requires Python 2.0 or newer." |
|
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
24 sys.exit(1) |
|
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
25 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
26 from mimetools import Message |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
27 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
28 def do_pipe(handler): |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
29 '''Read a message from standard input and pass it to the mail handler. |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
30 ''' |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
31 handler.main(sys.stdin) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
32 return 0 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
33 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
34 def do_mailbox(handler, filename): |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
35 '''Read a series of messages from the specified unix mailbox file and |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
36 pass each to the mail handler. |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
37 ''' |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
38 # open the spool file and lock it |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
39 import fcntl, FCNTL |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
40 f = open(filename, 'r+') |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
41 fcntl.flock(f.fileno(), FCNTL.LOCK_EX) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
42 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
43 # handle and clear the mailbox |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
44 try: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
45 from mailbox import UnixMailbox |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
46 mailbox = UnixMailbox(f, factory=Message) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
47 # grab one message |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
48 message = mailbox.next() |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
49 while message: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
50 # call the instance mail handler |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
51 handler.handle_Message(message) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
52 message = mailbox.next() |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
53 # nuke the file contents |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
54 os.ftruncate(f.fileno(), 0) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
55 except: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
56 import traceback |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
57 traceback.print_exc() |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
58 return 1 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
59 fcntl.flock(f.fileno(), FCNTL.LOCK_UN) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
60 return 0 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
61 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
62 def do_pop(handler, server, user='', password=''): |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
63 '''Read a series of messages from the specified POP server. |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
64 ''' |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
65 import getpass, poplib |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
66 if not user: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
67 user = raw_input('User: ') |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
68 if not password: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
69 password = getpass.getpass() |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
70 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
71 # open a connection to the server and retrieve all messages |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
72 server = poplib.POP3(server) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
73 server.user(user) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
74 server.pass_(password) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
75 numMessages = len(server.list()[1]) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
76 for i in range(numMessages): |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
77 for j in server.retr(i+1)[1]: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
78 s = cStringIO.StringIO('\n'.join(j)) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
79 s.seek(0) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
80 handler.handle_Message(Message(s)) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
81 return 0 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
82 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
83 def usage(args, message=None): |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
84 if message is not None: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
85 print message |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
86 print 'Usage: %s <instance home> [source spec]'%args[0] |
|
369
4850c86bfd89
More roundup-mailgw usage help.
Richard Jones <richard@users.sourceforge.net>
parents:
368
diff
changeset
|
87 print ''' |
|
4850c86bfd89
More roundup-mailgw usage help.
Richard Jones <richard@users.sourceforge.net>
parents:
368
diff
changeset
|
88 The roundup mail gateway may be called in one of two ways: |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
89 . with an instance home as the only argument, |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
90 . with both an instance home and a mail spool file, or |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
91 . with both an instance home and a pop server account. |
|
369
4850c86bfd89
More roundup-mailgw usage help.
Richard Jones <richard@users.sourceforge.net>
parents:
368
diff
changeset
|
92 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
93 PIPE: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
94 In the first case, the mail gateway reads a single message from the |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
95 standard input and submits the message to the roundup.mailgw module. |
|
27
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
96 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
97 UNIX mailbox: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
98 In the second case, the gateway reads all messages from the mail spool |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
99 file and submits each in turn to the roundup.mailgw module. The file is |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
100 emptied once all messages have been successfully handled. The file is |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
101 specified as: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
102 mailbox /path/to/mailbox |
|
27
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
103 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
104 POP: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
105 In the third case, the gateway reads all messages from the POP server |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
106 specified and submits each in turn to the roundup.mailgw module. The |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
107 server is specified as: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
108 pop username:password@server |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
109 The username and password may be omitted: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
110 pop username@server |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
111 pop server |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
112 are both valid. The username and/or password will be prompted for if |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
113 not supplied on the command-line. |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
114 ''' |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
115 return 1 |
|
367
5140ccaaab1b
Modified roundup-mailgw so it can read e-mails from a local mail spool file.
Richard Jones <richard@users.sourceforge.net>
parents:
343
diff
changeset
|
116 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
117 def main(args): |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
118 '''Handle the arguments to the program and initialise environment. |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
119 ''' |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
120 # figure the instance home |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
121 if len(args) > 1: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
122 instance_home = args[1] |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
123 else: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
124 instance_home = os.environ.get('ROUNDUP_INSTANCE', '') |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
125 if not instance_home: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
126 return usage(args) |
|
367
5140ccaaab1b
Modified roundup-mailgw so it can read e-mails from a local mail spool file.
Richard Jones <richard@users.sourceforge.net>
parents:
343
diff
changeset
|
127 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
128 # get the instance |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
129 import roundup.instance |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
130 instance = roundup.instance.open(instance_home) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
131 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
132 # get a mail handler |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
133 db = instance.open('admin') |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
134 handler = instance.MailGW(db) |
|
367
5140ccaaab1b
Modified roundup-mailgw so it can read e-mails from a local mail spool file.
Richard Jones <richard@users.sourceforge.net>
parents:
343
diff
changeset
|
135 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
136 # if there's no more arguments, read a single message from stdin |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
137 if len(args) == 2: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
138 return do_pipe(handler) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
139 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
140 # otherwise, figure what sort of mail source to handle |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
141 if len(args) < 4: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
142 return usage(args, 'Error: not enough source specification information') |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
143 source, specification = args[2:] |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
144 if source == 'mailbox': |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
145 return do_mailbox(handler, specification) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
146 elif source == 'pop': |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
147 m = re.match(r'((?P<user>[^:]+)(:(?P<pass>.+))?@)?(?P<server>.+)', |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
148 specification) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
149 if m: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
150 return do_pop(handler, m.group('server'), m.group('user'), |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
151 m.group('pass')) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
152 return usage(args, 'Error: pop specification not valid') |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
153 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
154 return usage(args, 'Error: The source must be either "mailbox" or "pop"') |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
155 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
156 # call main |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
157 if __name__ == '__main__': |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
158 sys.exit(main(sys.argv)) |
|
27
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
159 |
|
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
160 # |
|
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
161 # $Log: not supported by cvs2svn $ |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
162 # Revision 1.11 2001/11/07 05:32:58 richard |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
163 # More roundup-mailgw usage help. |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
164 # |
|
369
4850c86bfd89
More roundup-mailgw usage help.
Richard Jones <richard@users.sourceforge.net>
parents:
368
diff
changeset
|
165 # Revision 1.10 2001/11/07 05:30:11 richard |
|
4850c86bfd89
More roundup-mailgw usage help.
Richard Jones <richard@users.sourceforge.net>
parents:
368
diff
changeset
|
166 # Nicer usage message. |
|
4850c86bfd89
More roundup-mailgw usage help.
Richard Jones <richard@users.sourceforge.net>
parents:
368
diff
changeset
|
167 # |
|
368
0020819bf9b8
Nicer usage message.
Richard Jones <richard@users.sourceforge.net>
parents:
367
diff
changeset
|
168 # Revision 1.9 2001/11/07 05:29:26 richard |
|
0020819bf9b8
Nicer usage message.
Richard Jones <richard@users.sourceforge.net>
parents:
367
diff
changeset
|
169 # Modified roundup-mailgw so it can read e-mails from a local mail spool |
|
0020819bf9b8
Nicer usage message.
Richard Jones <richard@users.sourceforge.net>
parents:
367
diff
changeset
|
170 # file. Truncates the spool file after parsing. |
|
0020819bf9b8
Nicer usage message.
Richard Jones <richard@users.sourceforge.net>
parents:
367
diff
changeset
|
171 # Fixed a couple of small bugs introduced in roundup.mailgw when I started |
|
0020819bf9b8
Nicer usage message.
Richard Jones <richard@users.sourceforge.net>
parents:
367
diff
changeset
|
172 # the popgw. |
|
0020819bf9b8
Nicer usage message.
Richard Jones <richard@users.sourceforge.net>
parents:
367
diff
changeset
|
173 # |
|
367
5140ccaaab1b
Modified roundup-mailgw so it can read e-mails from a local mail spool file.
Richard Jones <richard@users.sourceforge.net>
parents:
343
diff
changeset
|
174 # Revision 1.8 2001/11/01 22:04:37 richard |
|
5140ccaaab1b
Modified roundup-mailgw so it can read e-mails from a local mail spool file.
Richard Jones <richard@users.sourceforge.net>
parents:
343
diff
changeset
|
175 # Started work on supporting a pop3-fetching server |
|
5140ccaaab1b
Modified roundup-mailgw so it can read e-mails from a local mail spool file.
Richard Jones <richard@users.sourceforge.net>
parents:
343
diff
changeset
|
176 # Fixed bugs: |
|
5140ccaaab1b
Modified roundup-mailgw so it can read e-mails from a local mail spool file.
Richard Jones <richard@users.sourceforge.net>
parents:
343
diff
changeset
|
177 # . bug #477104 ] HTML tag error in roundup-server |
|
5140ccaaab1b
Modified roundup-mailgw so it can read e-mails from a local mail spool file.
Richard Jones <richard@users.sourceforge.net>
parents:
343
diff
changeset
|
178 # . bug #477107 ] HTTP header problem |
|
5140ccaaab1b
Modified roundup-mailgw so it can read e-mails from a local mail spool file.
Richard Jones <richard@users.sourceforge.net>
parents:
343
diff
changeset
|
179 # |
|
343
ab16997d9cda
Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents:
214
diff
changeset
|
180 # Revision 1.7 2001/08/07 00:24:42 richard |
|
ab16997d9cda
Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents:
214
diff
changeset
|
181 # stupid typo |
|
ab16997d9cda
Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents:
214
diff
changeset
|
182 # |
| 214 | 183 # Revision 1.6 2001/08/07 00:15:51 richard |
| 184 # Added the copyright/license notice to (nearly) all files at request of | |
| 185 # Bizar Software. | |
| 186 # | |
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
187 # Revision 1.5 2001/08/05 07:44:25 richard |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
188 # Instances are now opened by a special function that generates a unique |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
189 # module name for the instances on import time. |
|
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
190 # |
|
204
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
193
diff
changeset
|
191 # Revision 1.4 2001/08/03 01:28:33 richard |
|
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
193
diff
changeset
|
192 # Used the much nicer load_package, pointed out by Steve Majewski. |
|
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
193
diff
changeset
|
193 # |
|
193
241a0323aacb
Used the much nicer load_package, pointed out by Steve Majewski.
Richard Jones <richard@users.sourceforge.net>
parents:
190
diff
changeset
|
194 # Revision 1.3 2001/08/03 00:59:34 richard |
|
241a0323aacb
Used the much nicer load_package, pointed out by Steve Majewski.
Richard Jones <richard@users.sourceforge.net>
parents:
190
diff
changeset
|
195 # Instance import now imports the instance using imp.load_module so that |
|
241a0323aacb
Used the much nicer load_package, pointed out by Steve Majewski.
Richard Jones <richard@users.sourceforge.net>
parents:
190
diff
changeset
|
196 # we can have instance homes of "roundup" or other existing python package |
|
241a0323aacb
Used the much nicer load_package, pointed out by Steve Majewski.
Richard Jones <richard@users.sourceforge.net>
parents:
190
diff
changeset
|
197 # names. |
|
241a0323aacb
Used the much nicer load_package, pointed out by Steve Majewski.
Richard Jones <richard@users.sourceforge.net>
parents:
190
diff
changeset
|
198 # |
|
190
996eaf90c01e
Instance import now imports the instance using imp.load_module...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
199 # Revision 1.2 2001/07/29 07:01:39 richard |
|
996eaf90c01e
Instance import now imports the instance using imp.load_module...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
200 # Added vim command to all source so that we don't get no steenkin' tabs :) |
|
996eaf90c01e
Instance import now imports the instance using imp.load_module...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
201 # |
|
127
0791d13baea7
Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents:
27
diff
changeset
|
202 # Revision 1.1 2001/07/23 03:46:48 richard |
|
0791d13baea7
Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents:
27
diff
changeset
|
203 # moving the bin files to facilitate out-of-the-boxness |
|
0791d13baea7
Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents:
27
diff
changeset
|
204 # |
|
27
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
205 # Revision 1.1 2001/07/22 11:15:45 richard |
|
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
206 # More Grande Splite stuff |
|
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
207 # |
|
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
208 # |
|
127
0791d13baea7
Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents:
27
diff
changeset
|
209 # vim: set filetype=python ts=4 sw=4 et si |
