diff options
Diffstat (limited to 'lib.py')
-rw-r--r-- | lib.py | 50 |
1 files changed, 49 insertions, 1 deletions
@@ -1,14 +1,62 @@ +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 * -import yarnhelper 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() |