#!/usr/bin/env python2 import sys import email import rfc822 from cStringIO import StringIO import os os.setgid(7004) os.setuid(1000) in_ = sys.stdin mail = in_.read() msg = email.message_from_string(mail) body = msg.get_payload(decode=True) m = rfc822.Message(StringIO(body)) author = m.getheader('Author') new_rev = m.getheader('New Revision') subject = msg.get('Subject') if not subject.startswith('['): sys.exit(0) proj = subject.split(']', 1)[0][1:] bd = m.fp.read() bd_lines = bd.splitlines() in_message = False last_modified = None sep = '==========================================================================' log_msg = [] for idx, line in enumerate(bd_lines): if line.startswith('Log:'): in_message = True continue if in_message: if line.strip().startswith(sep): break if line.strip(): log_msg.append(line.strip()) log_msg = log_msg[:-1] log = ' '.join(log_msg) msg = """Author: %s - Proj: %s - Rev: %s - Message: %s""" to_send = msg % (author, proj, new_rev, log[:200]) import socket as sk s = sk.socket() s.connect(('127.0.0.1', 7890)) s.sendall(proj+'\r\n') s.sendall(to_send) s.sendall('\r\n') s.close()