summaryrefslogtreecommitdiff
path: root/lib.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib.py')
-rw-r--r--lib.py50
1 files changed, 49 insertions, 1 deletions
diff --git a/lib.py b/lib.py
index e0bc8cf..c97ff04 100644
--- a/lib.py
+++ b/lib.py
@@ -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()