Mercurial > p > roundup > code
annotate roundup-mailgw @ 410:3a192fe4e709
Typo fix
| author | Jürgen Hermann <jhermann@users.sourceforge.net> |
|---|---|
| date | Sun, 25 Nov 2001 10:11:14 +0000 |
| parents | 7d7cb5319fc0 |
| children | fe89e341816b |
| 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 # |
|
389
7d7cb5319fc0
re-open the database as the author in mail handling
Richard Jones <richard@users.sourceforge.net>
parents:
375
diff
changeset
|
19 # $Id: roundup-mailgw,v 1.14 2001-11-13 21:44:44 richard 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 |
|
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]) |
|
375
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
76 for i in range(1, numMessages+1): |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
77 # retr: returns |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
78 # [ pop response e.g. '+OK 459 octets', |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
79 # [ array of message lines ], |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
80 # number of octets ] |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
81 lines = server.retr(i)[1] |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
82 s = cStringIO.StringIO('\n'.join(lines)) |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
83 s.seek(0) |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
84 handler.handle_Message(Message(s)) |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
85 # delete the message |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
86 server.dele(i) |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
87 |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
88 # quit the server to commit changes. |
|
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
89 server.quit() |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
90 return 0 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
91 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
92 def usage(args, message=None): |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
93 if message is not None: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
94 print message |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
95 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
|
96 print ''' |
|
4850c86bfd89
More roundup-mailgw usage help.
Richard Jones <richard@users.sourceforge.net>
parents:
368
diff
changeset
|
97 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
|
98 . 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
|
99 . 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
|
100 . 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
|
101 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
102 PIPE: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
103 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
|
104 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
|
105 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
106 UNIX mailbox: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
107 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
|
108 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
|
109 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
|
110 specified as: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
111 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
|
112 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
113 POP: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
114 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
|
115 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
|
116 server is specified as: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
117 pop username:password@server |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
118 The username and password may be omitted: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
119 pop username@server |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
120 pop server |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
121 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
|
122 not supplied on the command-line. |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
123 ''' |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
124 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
|
125 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
126 def main(args): |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
127 '''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
|
128 ''' |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
129 # figure the instance home |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
130 if len(args) > 1: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
131 instance_home = args[1] |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
132 else: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
133 instance_home = os.environ.get('ROUNDUP_INSTANCE', '') |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
134 if not instance_home: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
135 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
|
136 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
137 # get the instance |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
138 import roundup.instance |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
139 instance = roundup.instance.open(instance_home) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
140 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
141 # get a mail handler |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
142 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
|
143 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
|
144 |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
145 # 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
|
146 if len(args) == 2: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
147 return do_pipe(handler) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
148 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
149 # 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
|
150 if len(args) < 4: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
151 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
|
152 source, specification = args[2:] |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
153 if source == 'mailbox': |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
154 return do_mailbox(handler, specification) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
155 elif source == 'pop': |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
156 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
|
157 specification) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
158 if m: |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
159 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
|
160 m.group('pass')) |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
161 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
|
162 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
163 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
|
164 |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
165 # call main |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
166 if __name__ == '__main__': |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
167 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
|
168 |
|
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 # $Log: not supported by cvs2svn $ |
|
389
7d7cb5319fc0
re-open the database as the author in mail handling
Richard Jones <richard@users.sourceforge.net>
parents:
375
diff
changeset
|
171 # 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
|
172 # 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
|
173 # gateway. |
|
7d7cb5319fc0
re-open the database as the author in mail handling
Richard Jones <richard@users.sourceforge.net>
parents:
375
diff
changeset
|
174 # |
|
375
2ff102523713
Fixed [SF#479511]: mailgw to pop
Richard Jones <richard@users.sourceforge.net>
parents:
373
diff
changeset
|
175 # 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
|
176 # 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
|
177 # 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
|
178 # |
|
373
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
179 # 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
|
180 # More roundup-mailgw usage help. |
|
ee399750fa5f
Rolled roundup-popgw into roundup-mailgw.
Richard Jones <richard@users.sourceforge.net>
parents:
369
diff
changeset
|
181 # |
|
369
4850c86bfd89
More roundup-mailgw usage help.
Richard Jones <richard@users.sourceforge.net>
parents:
368
diff
changeset
|
182 # 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
|
183 # Nicer usage message. |
|
4850c86bfd89
More roundup-mailgw usage help.
Richard Jones <richard@users.sourceforge.net>
parents:
368
diff
changeset
|
184 # |
|
368
0020819bf9b8
Nicer usage message.
Richard Jones <richard@users.sourceforge.net>
parents:
367
diff
changeset
|
185 # Revision 1.9 2001/11/07 05:29:26 richard |
|
0020819bf9b8
Nicer usage message.
Richard Jones <richard@users.sourceforge.net>
parents:
367
diff
changeset
|
186 # 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
|
187 # file. Truncates the spool file after parsing. |
|
0020819bf9b8
Nicer usage message.
Richard Jones <richard@users.sourceforge.net>
parents:
367
diff
changeset
|
188 # 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
|
189 # the popgw. |
|
0020819bf9b8
Nicer usage message.
Richard Jones <richard@users.sourceforge.net>
parents:
367
diff
changeset
|
190 # |
|
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
|
191 # 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
|
192 # 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
|
193 # 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
|
194 # . 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
|
195 # . 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
|
196 # |
|
343
ab16997d9cda
Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents:
214
diff
changeset
|
197 # 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
|
198 # stupid typo |
|
ab16997d9cda
Started work on supporting a pop3-fetching server
Richard Jones <richard@users.sourceforge.net>
parents:
214
diff
changeset
|
199 # |
| 214 | 200 # Revision 1.6 2001/08/07 00:15:51 richard |
| 201 # Added the copyright/license notice to (nearly) all files at request of | |
| 202 # Bizar Software. | |
| 203 # | |
|
213
d45384bc6420
Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents:
204
diff
changeset
|
204 # 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
|
205 # 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
|
206 # 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
|
207 # |
|
204
c1461733cbf9
Instances are now opened by a special function...
Richard Jones <richard@users.sourceforge.net>
parents:
193
diff
changeset
|
208 # 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
|
209 # 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
|
210 # |
|
193
241a0323aacb
Used the much nicer load_package, pointed out by Steve Majewski.
Richard Jones <richard@users.sourceforge.net>
parents:
190
diff
changeset
|
211 # 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
|
212 # 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
|
213 # 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
|
214 # names. |
|
241a0323aacb
Used the much nicer load_package, pointed out by Steve Majewski.
Richard Jones <richard@users.sourceforge.net>
parents:
190
diff
changeset
|
215 # |
|
190
996eaf90c01e
Instance import now imports the instance using imp.load_module...
Richard Jones <richard@users.sourceforge.net>
parents:
127
diff
changeset
|
216 # 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
|
217 # 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
|
218 # |
|
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
|
219 # 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
|
220 # 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
|
221 # |
|
27
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
222 # 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
|
223 # More Grande Splite stuff |
|
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
224 # |
|
e5e9ea306a09
moving the bin files to facilitate out-of-the-boxness
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
225 # |
|
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
|
226 # vim: set filetype=python ts=4 sw=4 et si |
