aboutsummaryrefslogtreecommitdiffstats
path: root/interfaces
Commit message (Collapse)AuthorAgeFilesLines
* Starting to seperate message handling in be-handle-mail.W. Trevor King2009-07-181-25/+37
| | | | | The goal being to make handling commands differently easier, rather than just passing off the whole interface to becommands.
* Normalized whitespace in be-handle-mail and send_pgp_mime.py.W. Trevor King2009-07-182-39/+37
| | | | | | | | | | | | | | | | | | | | | Also removed "commit after every message" from be-handle-mail, because a) not implemented yet b) don't want to commit spam, since we'd have to find a way to remove it later. Suggested future workflow: * "bzr diff" to poll for activity, blank output = no activity. * on activity: 1) look at changes 2) remove whatever 3) commit email-interface repo. 4) merge changes into your private repo * on private repo changes: * if activity in email-interface repo: 1) deal with email activity as above * push your private repo onto the email-interface repo (and update the email repos' working tree, if required)
* be-handle-mail now handles non-text comments.W. Trevor King2009-07-181-0/+6
| | | | | | | | | | | | This required replacing both the codec-wrapped sys.stdin _and_ the raw sys.__stdin__ with StringIO(stdin). becommands/comment will use only one or the other depending on the comment's content type. Caveat: Get_body_type only grabs the body and type of the first non-mulitpart section, which may not be what the user expects. Todo: Add multiple comments for each part of a multipart message, like we do in interfaces/xml/be-mbox-to-xml.
* In be-handle-mail, don't mess with stdin if the command doesn't need it.W. Trevor King2009-07-181-4/+6
| | | | This fixes problems with StringIO(None).
* In be-handle-mail, give new bug summary via command line.W. Trevor King2009-07-181-2/+3
| | | | | | Fixes incorrect implementation of _comment_ bodies via stdin in my wking@drexel.edu-20090718143517-mkd6toxmcoij3qwk commit.
* For be-handle-mail, pass comment body in via a temporary stdin.W. Trevor King2009-07-181-3/+9
| | | | | This avoids decode-recode issues inside libbe.cmdutil.execute(), as well as problems due to large comment bodies.
* Corrected author_addr -> info["author_addr"] in be-handle-mailW. Trevor King2009-07-181-2/+2
|
* Fixed typo in one of be-handle-mail's InvalidCommand calls.W. Trevor King2009-07-181-1/+1
| | | | | Also restored Makefile target to home (from local), which I'd accidentally committed two commits ago...
* Allow external override of libbe.encoding.get_encoding().W. Trevor King2009-07-181-2/+3
| | | | | | The previous procmail encoding fix failed, because the becommand execution checks libbe.encoding.get_encoding() on it's own, and got the procmail encoding. This one works.
* Fixed some missing references in be-handle-mail.InvalidSubjectW. Trevor King2009-07-181-2/+2
|
* Hardcoded UTF-8 encoding in be-handle-mail.W. Trevor King2009-07-181-2/+4
| | | | | | | When run by procmail, the encoding returned by libbe.encoding.get_encoding is ANSI_X3.4-1968, which chokes on unicode output. I can't think of a more elegant solution than hardcoding in the default encoding.
* Added "to_unicode" to send_pgp_mime.flatten()W. Trevor King2009-07-182-6/+10
| | | | | | | | | | | be-handle-mail wants unicode output, since all it's internal processing is done with unicode. However, the flatten calls in send_pgp_mime work with the encoded binary string output, and execute(sendmail, stdin=flatten(msg, to_unicode=True)) fails with Exception: u while executing /usr/sbin/sendmail -t sendmail: fatal: wking(1001): No recipient addresses found in message header
* send_pgp_mime.py attempts to avoid UTF-8 for MIMEText messages.W. Trevor King2009-07-182-5/+24
| | | | | | This keeps the transfer-encoding out of base64 if possible. Also added a "help" example to interafaces/email/interactive/examples.
* Added send_pgp_mime.Mail.encodedMIMEText() for unicode handling.W. Trevor King2009-07-182-5/+12
| | | | | | | | | | | | | | | | | | | | | | | | | Now be-handle-mail handles examples/unicode without crashing cat examples/unicode | ./be-handle-mail -o -l - But the output email is encoded in base64: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 From: BE Bugs <wking@thor.physics.drexel.edu> To: John Doe <jdoe@example.com> Date: Sat, 18 Jul 2009 12:22:05 +0000 Subject: [be-bug] Re: show In-reply-to: <abcd@example.com> UmVzdWx0cyBvZiBydW5uaW5nOiAoZXhpdCBjb2RlIDApCiAgc2hvdyAKCnN0ZG91dDoKCjw/eG1s IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pgo8YnVnPgogIDx1dWlkPmY3Y2NkOTE2 LWI1YzctNDg5MC1hMmUzLThjOGFjZTE3YWUzYTwvdXVpZD4KICA8c2hvcnQtbmFtZT5mN2M8L3No b3J0LW5hbWU+CiAgPHNldmVyaXR5Pm1pbm9yPC9zZXZlcml0eT4KICA8c3RhdHVzPmZpeGVkPC9z ... This is perhaps the best we can get out of python < 3.1/2.7, see http://bugs.python.org/issue1368247
* Fixed options.logfile -> logpath typo in be-handle-mail.open_logfile().W. Trevor King2009-07-181-1/+1
|
* Better unicode handling in be-handle-mail.W. Trevor King2009-07-181-16/+17
| | | | | | | | | | | | | | | | | | | | | | | be-handle-mail now gets a bit further on cat examples/unicode | ./be-handle-mail -o -l - 2>&1 1>/dev/null It successfully reads in unicode output from the command execution and successfully prints that output to the log ("-l - 2>&1 1>/dev/null" sets up the log to be printed to the terminal's stdout). However, it chokes later on with responding to John Doe <jdoe@example.com>: show Traceback (most recent call last): File "./be-handle-mail", line 274, in <module> main() File "./be-handle-mail", line 266, in main response_email = compose_response(ret, out_text, err_text, info).plain() File "./be-handle-mail", line 210, in compose_response LOGFILE.write("\n%s\n\n" % send_pgp_mime.flatten(response_email.plain())) File "/home/wking/src/fun/be/be.email/interfaces/email/interactive/send_pgp_mime.py", line 165, in flatten g.flatten(msg) File "/usr/lib/python2.5/email/generator.py" ... ... UnicodeEncodeError: 'ascii' codec can't encode character u'\ufffd' in position 2581: ordinal not in range(128)
* Added tracebacks to be-handle-mail's "uncaught exceptions".W. Trevor King2009-07-181-1/+2
|
* Added an email interface example requesting unicode comment output.W. Trevor King2009-07-171-0/+9
| | | | Indeed, be-handle-mail chokes... :(
* Added "be-handle-mail --logfile LOGFILE" for sane logfile handling.W. Trevor King2009-07-171-13/+43
| | | | | The previous setup had been pretty wimpy; now there's a degree of flexibility.
* Added symlinks to libbe and becommands in interfaces/email/interactive.W. Trevor King2009-07-172-0/+2
| | | | | With this set-up, be-handle-mail run from its own directory will load your working-state BE setup, not your system-wide BE installation.
* Setup be-handle-mail.BE_DIR to point to the BE repo by default.W. Trevor King2009-07-171-1/+1
| | | | | | | At least, it points to the directory where be-handle-mail lives. If you haven't moved it, that will be somewhere inside the BE repository. This removes my hardcoded BE_DIR.
* "be-handle-mail --output" added to support easy testing.W. Trevor King2009-07-171-2/+14
|
* Removed debugging reply-address adjustment from be-handle-mail.W. Trevor King2009-07-161-1/+0
| | | | Everything seems to be working now. On to the remote tests ;).
* be-hand-mail now catches errors and sends appropriate responses.W. Trevor King2009-07-161-27/+94
|
* Now be-handle-mail successfully catches stdout/stderr.W. Trevor King2009-07-161-1/+2
|
* Oops again, removed some old debugging loggingW. Trevor King2009-07-151-8/+0
|
* Oops, the header keys in be-handle-mail should all be unicode.W. Trevor King2009-07-151-4/+4
| | | | | Even though I convert to ascii in send_pgp_mime.Mail.__init__(), it's still good to be consistent inside each module ;).
* be-handle-mail succesfully sends replies.W. Trevor King2009-07-151-16/+49
| | | | | | | | | | | | | | | Although I'm not catching stdout/stderr yet, so the replies aren't very useful ;). Still it the send_pgp_mime.py interface is working :). I've added rudimentary logging (via LOGFILE) to keep track of what be-handle-mail is up to. There's also BE_DIR, which sets the directory that BE lives in (important ;). The author handling got more consistent, thanks to send_pgp_mime.source_email (using the new return_realname option) and email.utils.formataddr(). Now author_addr should look the same regardless of which phrasing you use to set it (e.g. "NAME <ADDR>" vs "ADDR (NAME)", and possibly others.)
* Adjusted _procmailrc to not match reply emails.W. Trevor King2009-07-151-2/+3
| | | | You might want to keep the output to read later ;).
* Add unicode-header handling to send_pgp_mime.pyW. Trevor King2009-07-151-11/+26
| | | | | | | | | | | | | | | | | | | | | | | | Also: Switched email.message_from_string() to email.parser.Parser().parsestr() for parsing the header, for access to the headersonly option. Adjusted module import order to alphebetize non-mime email modules. Added return_realname to source_email(), which makes it more useful to be-handle-mail (currently uncommitted). Added a doctest for the plain() output and removed redundant Content-Type line from the doctests (which we'd removed from the output with the last commit). Note that many doctests _will_fail_ unless me@big.edu and you@big.edu are in your gpg keyring. At some point I should make those addresses options to --test...
* Minor tweaks in send_pgp_mime.pyW. Trevor King2009-07-151-3/+1
| | | | | * No reason to set maxheaderlen to something other than the default. * MIMEText sets content-type and charset automatically.
* Added --mode=plain option to send_pgp_mime.W. Trevor King2009-07-152-10/+21
| | | | | | | | | | | | | | | Also a few more tweaks to get things working. I think be-handle-mail is parsing the incoming messages correctly now, but I'm not getting replies back for some reason. Some of the adjustments: * Moved send_pgp_mime -> send_pgp_mime.py, otherwise Python doesn't recognize it as an importable module. * I use postfix now instead of msmtp, so send_pgp_mime.sendmail now points to postfix's sendmail-compatable frontend. * Added "--mode=plain" option to send_pgp_mime.py, so I can test my procmail rules and send_pgp_mime itself without worrying about be-handle-mail. * Fixed some typos in be-handle-mail.
* First attempt at real response email.W. Trevor King2009-07-151-15/+42
|
* Added some comments to send_pgp_mimeW. Trevor King2009-07-151-1/+6
|
* Incorperated send_pgp_mime into be-handle-mail.W. Trevor King2009-07-151-3/+16
| | | | | Todo: generate a real response email to replace the current dummy email.
* Ran update_copyright.sh on be-handle-mail and send_pgp_mime.W. Trevor King2009-07-152-2/+30
|
* Added my send_pgp_mime module to the project.W. Trevor King2009-07-152-0/+547
| | | | | | | | | This is a bit of a shameless plug, since there's not much motivation for encrypting bug emails. However, I've already written it, and it does send emails, so I'm using it ;). Perhaps some company will want to keep the bug submitter's contact information securely in a BE database. Anyhow, there's very little reason to _not_ use PGP, and the module certainly doesn't force you to encrypt anything. ;)
* Added be-handle-mail and some example emails.W. Trevor King2009-07-149-0/+146
| | | | | | So far, it parses the emails and executes the specified task. Todo: email the sender back with the output/errors/exit-status/etc.
* Removed xml.sax cruft from be-mbox-to-xmlW. Trevor King2009-07-141-3/+0
|
* Added _procmailrc file for interactive email handling.W. Trevor King2009-07-141-0/+19
| | | | | | | | | | | The beginnings of an interactive email interface to BE. With a working procmail setup, copying _procmailrc to ~/.procmailrc should sort through incoming email to that user, passing all messages with subjects starting with [be-mail] on to the script be-handle-mail and deleting the rest. Now I just need to write be-handle-mail ;).
* Reorganized directory structure, mostly to put all the interfaces inW. Trevor King2009-07-1481-0/+2503
one place and make things clearer to the uninitiated. Here's my current understanding: . |-- libbe (the guts of BE) |-- becommands (plugins for all "be *" commands) |-- doc (documentation, currently just the man page) |-- interfaces (non-commandline interface implementations) | |-- web | | |-- Bugs-Everywhere-Web (in Turbogears) | |-- gui | | |-- beg (in Tkinter) | | `-- wxbe (in WX) | |-- email | `-- xml (xml <-> whatever conversion) `-- misc (random odds and ends) `-- completion (shell completion scripts) Note that I haven't attempted to use the web or gui interfaces in a while, so I'm not sure how well they're holding vs the core development.