import email import imaplib import os import random import re import smtplib import subprocess import sys import urlparse import cliapp import requests import yaml from yarnutils import * srcdir = os.environ['SRCDIR'] datadir = os.environ['DATADIR'] vars = Variables(datadir) def construct_aliased_http_request(address, method, url): parts = list(urlparse.urlparse(url)) headers = { 'Host': parts[1], } parts[1] = address aliased_url = urlparse.urlunparse(parts) r = requests.Request(method, aliased_url, headers=headers) return r.prepare() def http_get(address, url): r = construct_aliased_http_request(address, 'GET', url) s = requests.Session() resp = s.send(r) return resp.status_code, resp.content def get_password_with_pass(pass_home, pass_name): p = subprocess.Popen( ['env', 'HOME={}'.format(pass_home), 'pass', 'show', pass_name], stdout=subprocess.PIPE) stdout, stderr = p.communicate() password = stdout.rstrip() return password def iterate_mails_in_imap_mailbox(address, user, password, callback, exp): m = imaplib.IMAP4_SSL(address) m.login(user, password) m.select('INBOX', False) typ, data = m.search(None, 'ALL') for num in data[0].split(): typ, data = m.fetch(num, '(RFC822)') typ, text = data[0] msg = email.message_from_string(text) callback(m, num, msg) if exp: m.expunge() m.close() m.logout()