Mercurial > p > roundup > code
annotate roundup-mailgw @ 426:fe89e341816b
Fixed bug. Mail gateway was not using the extended Message class...
...resulting in failed submissions when mails were processed from a Unix
mailbox
| author | Roche Compaan <rochecompaan@users.sourceforge.net> |
|---|---|
| date | Fri, 30 Nov 2001 13:16:37 +0000 |
| parents | 7d7cb5319fc0 |
| children | 5164f3141159 |
| 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 # |
|
426
fe89e341816b
Fixed bug. Mail gateway was not using the extended Message class...
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
389
diff
changeset
|
19 # $Id: roundup-mailgw,v 1.15 2001-11-30 13:16:37 rochecompaan Exp $ |
|
27
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
20 |
|
375
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
21 import sys, os, re, cStringIO |
|
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 |
|
426
fe89e341816b
Fixed bug. Mail gateway was not using the extended Message class...
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
389
diff
changeset
|
26 from roundup import mailgw |
|
fe89e341816b
Fixed bug. Mail gateway was not using the extended Message class...
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
389
diff
changeset
|
27 Message = mailgw.Message |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
28 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
29 def do_pipe(handler): |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
30 '''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
|
31 ''' |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
32 handler.main(sys.stdin) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
33 return 0 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
34 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
35 def do_mailbox(handler, filename): |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
36 '''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
|
37 pass each to the mail handler. |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
38 ''' |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
39 # open the spool file and lock it |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
40 import fcntl, FCNTL |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
41 f = open(filename, 'r+') |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
42 fcntl.flock(f.fileno(), FCNTL.LOCK_EX) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
43 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
44 # handle and clear the mailbox |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
45 try: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
46 from mailbox import UnixMailbox |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
47 mailbox = UnixMailbox(f, factory=Message) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
48 # grab one message |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
49 message = mailbox.next() |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
50 while message: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
51 # call the instance mail handler |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
52 handler.handle_Message(message) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
53 message = mailbox.next() |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
54 # nuke the file contents |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
55 os.ftruncate(f.fileno(), 0) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
56 except: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
57 import traceback |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
58 traceback.print_exc() |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
59 return 1 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
60 fcntl.flock(f.fileno(), FCNTL.LOCK_UN) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
61 return 0 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
62 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
63 def do_pop(handler, server, user='', password=''): |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
64 '''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
|
65 ''' |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
66 import getpass, poplib |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
67 if not user: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
68 user = raw_input('User: ') |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
69 if not password: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
70 password = getpass.getpass() |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
71 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
72 # 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
|
73 server = poplib.POP3(server) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
74 server.user(user) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
75 server.pass_(password) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
76 numMessages = len(server.list()[1]) |
|
375
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
77 for i in range(1, numMessages+1): |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
78 # retr: returns |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
79 # [ pop response e.g. '+OK 459 octets', |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
80 # [ array of message lines ], |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
81 # number of octets ] |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
82 lines = server.retr(i)[1] |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
83 s = cStringIO.StringIO('\n'.join(lines)) |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
84 s.seek(0) |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
85 handler.handle_Message(Message(s)) |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
86 # delete the message |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
87 server.dele(i) |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
88 |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
89 # quit the server to commit changes. |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
90 server.quit() |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
91 return 0 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
92 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
93 def usage(args, message=None): |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
94 if message is not None: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
95 print message |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
96 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
|
97 print ''' |
|
4850c86bfd89
More roundup-mailgw usage help.
Richard Jones <richard@users.sourceforge.net>
parents:
368
diff
changeset
|
98 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
|
99 . 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
|
100 . 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
|
101 . 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
|
102 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
103 PIPE: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
104 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
|
105 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
|
106 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
107 UNIX mailbox: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
108 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
|
109 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
|
110 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
|
111 specified as: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
112 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
|
113 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
114 POP: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
115 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
|
116 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
|
117 server is specified as: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
118 pop username:password@server |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
119 The username and password may be omitted: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
120 pop username@server |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
121 pop server |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
122 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
|
123 not supplied on the command-line. |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
124 ''' |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
125 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
|
126 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
127 def main(args): |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
128 '''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
|
129 ''' |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
130 # figure the instance home |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
131 if len(args) > 1: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
132 instance_home = args[1] |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
133 else: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
134 instance_home = os.environ.get('ROUNDUP_INSTANCE', '') |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
135 if not instance_home: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
136 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
|
137 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
138 # get the instance |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
139 import roundup.instance |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
140 instance = roundup.instance.open(instance_home) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
141 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
142 # get a mail handler |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
143 db = instance.open('admin') |
|
389
7d7cb5319fc0
re-open the database as the author in mail handling
Richard Jones <richard@users.sourceforge.net>
parents:
375
diff
changeset
|
144 handler = instance.MailGW(instance, 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
|
145 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
146 # 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
|
147 if len(args) == 2: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
148 return do_pipe(handler) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
149 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
150 # 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
|
151 if len(args) < 4: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
152 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
|
153 source, specification = args[2:] |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
154 if source == 'mailbox': |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
155 return do_mailbox(handler, specification) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
156 elif source == 'pop': |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
157 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
|
158 specification) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
159 if m: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
160 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
|
161 m.group('pass')) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
162 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
|
163 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
164 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
|
165 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
166 # call main |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
167 if __name__ == '__main__': |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
168 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
|
169 |
|
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
170 # |
|
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
171 # $Log: not supported by cvs2svn $ |
|
426
fe89e341816b
Fixed bug. Mail gateway was not using the extended Message class...
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
389
diff
changeset
|
172 # Revision 1.14 2001/11/13 21:44:44 richard |
|
fe89e341816b
Fixed bug. Mail gateway was not using the extended Message class...
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
389
diff
changeset
|
173 # . re-open the database as the author in mail handling |
|
fe89e341816b
Fixed bug. Mail gateway was not using the extended Message class...
Roche Compaan <rochecompaan@users.sourceforge.net>
parents:
389
diff
changeset
|
174 # |
|
389
7d7cb5319fc0
re-open the database as the author in mail handling
Richard Jones <richard@users.sourceforge.net>
parents:
375
diff
changeset
|
175 # Revision 1.13 2001/11/09 01:05:55 richard |
|
7d7cb5319fc0
re-open the database as the author in mail handling
Richard Jones <richard@users.sourceforge.net>
parents:
375
diff
changeset
|
176 # Fixed bug #479511 ] mailgw to pop once engelbert gruber tested the POP |
|
7d7cb5319fc0
re-open the database as the author in mail handling
Richard Jones <richard@users.sourceforge.net>
parents:
375
diff
changeset
|
177 # gateway. |
|
7d7cb5319fc0
re-open the database as the author in mail handling
Richard Jones <richard@users.sourceforge.net>
parents:
375
diff
changeset
|
178 # |
|
375
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
179 # Revision 1.12 2001/11/08 05:16:55 richard |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
180 # Rolled roundup-popgw into roundup-mailgw. Cleaned mailgw up significantly, |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
181 # tested unix mailbox some more. POP still untested. |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
182 # |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
183 # 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
|
184 # More roundup-mailgw usage help. |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
185 # |
|
369
4850c86bfd89
More roundup-mailgw usage help.
Richard Jones <richard@users.sourceforge.net>
parents:
368
diff
changeset
|
186 # 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
|
187 # Nicer usage message. |
|
4850c86bfd89
More roundup-mailgw usage help.
Richard Jones <richard@users.sourceforge.net>
parents:
368
diff
changeset
|
188 # |
|
368
0020819bf9b8
Nicer usage message.
Richard Jones <richard@users.sourceforge.net>
parents:
367
diff
changeset
|
189 # Revision 1.9 2001/11/07 05:29:26 richard |
|
0020819bf9b8
Nicer usage message.
Richard Jones <richard@users.sourceforge.net>
parents:
367
diff
changeset
|
190 # 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
|
191 # file. Truncates the spool file after parsing. |
|
0020819bf9b8
Nicer usage message.
Richard Jones <richard@users.sourceforge.net>
parents:
367
diff
changeset
|
192 # 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
|
193 # the popgw. |
|
0020819bf9b8
Nicer usage message.
Richard Jones <richard@users.sourceforge.net>
parents:
367
diff
changeset
|
194 # |
|
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
|
195 # 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
|
196 # 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
|
197 # 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
|
198 # . 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
|
199 # . 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
|
200 # |
|
343
ab16997d9cda
Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents:
214
diff
changeset
|
201 # 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
|
202 # stupid typo |
|
ab16997d9cda
Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents:
214
diff
changeset
|
203 # |
| 214 | 204 # Revision 1.6 2001/08/07 00:15:51 richard |
| 205 # Added the copyright/license notice to (nearly) all files at request of | |
| 206 # Bizar Software. | |
| 207 # | |
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
208 # 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
|
209 # 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
|
210 # 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
|
211 # |
|
204
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
193
diff
changeset
|
212 # 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
|
213 # 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
|
214 # |
|
193
241a0323aacb
Used the much nicer load_package, pointed out by Steve Majewski.
Richard Jones <richard@users.sourceforge.net>
parents:
190
diff
changeset
|
215 # 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
|
216 # 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
|
217 # 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
|
218 # names. |
|
241a0323aacb
Used the much nicer load_package, pointed out by Steve Majewski.
Richard Jones <richard@users.sourceforge.net>
parents:
190
diff
changeset
|
219 # |
|
190
996eaf90c01e
Instance import now imports the instance using imp.load_module...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
220 # 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
|
221 # 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
|
222 # |
|
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
|
223 # 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
|
224 # 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
|
225 # |
|
27
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
226 # 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
|
227 # More Grande Splite stuff |
|
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
228 # |
|
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
229 # |
|
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
|
230 # vim: set filetype=python ts=4 sw=4 et si |
