root/trunk/scalemail-courier-map-percent-to-at

Revision 16, 1.3 kB (checked in by tv, 6 years ago)

Import version 0.8

  • Property svn:executable set to *
Line 
1 #!/usr/bin/python
2 # "pop3\nlogin\ntest%example.com\npassword\n\n"
3
4 import os, sys, traceback
5
6 EX_OK=0
7 EX_TEMPFAIL=75
8 EX_USAGE=64
9 EX_NOUSER=67
10 EX_NOHOST=68
11
12 def die(s):
13     print >>sys.stderr, "scalemail-courier-map-percent-to-at: %s" % s
14     sys.exit(EX_USAGE)
15
16 def main():
17     if not sys.argv[1:]:
18         die("Need to provide some arguments")
19     if os.getenv('AUTHENTICATED'):
20         os.execlp(sys.argv[1], *sys.argv[1:])
21         die("Something is very wrong")
22
23     f = os.fdopen(3)
24     service = f.readline()
25     authtype = f.readline()
26     authdata = f.read()
27     f.close()
28
29     if authtype.rstrip() == 'login':   
30         lines = authdata.splitlines(True)
31         lines[0] = lines[0].replace('%', '@')
32         authdata = ''.join(lines)
33     data = ''.join([service, authtype, authdata])
34
35     r, w = os.pipe()
36     pid = os.fork()
37     if pid:
38         # parent
39         os.close(w)
40         os.dup2(r, 3)
41         os.execlp(sys.argv[1], *sys.argv[1:])
42         die("Something is very wrong")
43     else:
44         # child
45         while data:
46             n = os.write(w, data)
47             data = data[n:]
48         sys.exit(0)
49
50 if __name__=='__main__':
51     try:
52         main()
53     except SystemExit:
54         raise
55     except:
56         try:
57             traceback.print_exc(file=sys.stderr)
58         finally:
59             sys.exit(EX_TEMPFAIL)
60
Note: See TracBrowser for help on using the browser.