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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
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
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
200 # Revision 1.6 2001/08/07 00:15:51 richard
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
201 # Added the copyright/license notice to (nearly) all files at request of
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
202 # Bizar Software.
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
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

Roundup Issue Tracker: http://roundup-tracker.org/