summaryrefslogtreecommitdiff
path: root/lib.py
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2017-04-13 22:04:09 +0300
committerLars Wirzenius <liw@liw.fi>2017-04-13 22:04:09 +0300
commite344a51b0e7becb3934ab8a3ec4b8b0659c0d712 (patch)
tree2007ac08428ed8db0f615eda106a0135bba6c5f3 /lib.py
parent44f5b81e612fc9c0b94824fb906abf2666ab3d8f (diff)
downloadserver-yarns-e344a51b0e7becb3934ab8a3ec4b8b0659c0d712.tar.gz
Copy remaining stuff from YarnHelper to lib.py
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()