-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.py
189 lines (160 loc) · 7.03 KB
/
script.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import string
import random
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import time
import csv
import config
from retrying import retry
def send_mail(vorname, nachname, email, password, username):
sender = '[email protected]'
receiver = email
username = username.encode('utf8') + '@cct-ev.de'
text="""
<html>
<head></head>
<body>
Hallo %(vorname)s %(nachname)s,<br />
<p>auch wir von Juniter möchten dich noch einmal ganz herzlich im Verein
begrüßen. Dir wurde jetzt ein CCT-Benutzeraccount angelegt, mit dem
du vollen Zugriff auf sämtliche internen IT-Dienste des Vereins bekommst.</p>
<p>Dein Benutzername ist:
<pre>%(username)s</pre> </p>
<p>Dein vorläufiges Passwort ist:
<pre>%(password)s</pre></p>
<p>Als nächsten Schritt solltest du dich unter https://webmail.all-inkl.com
einloggen und dein Passwort unter Einstellungen ändern. Dies
dient der Sicherheit deines Accounts und ist außerdem notwendig, um einige
Funktionen deines Accounts (inklusive des Wissensmanagementsystems!)
endgültig freizuschalten. Logge dich danach auf den internen Seiten aus
und wieder ein, um die Passwortänderung zu übernehmen.</p>
<p>Um unsere IT-Systeme gut nutzen zu können, ist es wichtig, dass Du ihre
Funktionalität kennst. Nimm Dir bitte etwas Zeit und blättere durch die
Anleitungen, die im Wissensmanagement liegen: http://wms.cct-ev.de >
IT-Dokumentation (der Button oben in der Mitte). Dort findest Du neben
bebilderten Schritt-für-Schritt-Anleitungen auch kurze Videodokumentationen
zur Einrichtung der wichtigsten Systeme auf Deinem Computer, also z.B.
E-Mail und Zugriff auf CCT-Daten.</p>
<p>Bei technischen Problemen oder Fragen, z.B. dem Ausfall eines Systems, schreibe bitte
dem IT-support über Slack mit<br/>
/IT-support [deine Nachricht]</p>
<p>Viel Erfolg auf deinem weiteren Weg im Verein,<br/>
dein Team Juniter</p>
</body>
</html>""" %{"vorname":vorname, "nachname":nachname, "username":username, "password":password}
msg = MIMEMultipart('alternative')
msg['Subject'] = "Willkommen im CCT!"
msg['From'] = sender
msg['To'] = receiver
part1 = MIMEText(text, 'html')
msg.attach(part1)
s = smtplib.SMTP('w013d91b.kasserver.com')
s.login('[email protected]',config.email_pw)
s.sendmail(sender, receiver, msg.as_string())
return username
@retry(wait_exponential_multiplier=1000, wait_exponential_max=10000)
def send_signatur_mail(vorname, nachname, receiver):
sender = '[email protected]'
text= """
<html>
<head></head>
<body>
Hallo nochmal %(vorname)s %(nachname)s,<br />
<p>Willkommen in deinem neuen E-Mail Postfach.
Dein nächster Schritt sollte es sein deine Signatur einzurichten.
Wie du das anstellst findest du unter folgendem Link: <br />
https://wiki.cct-ev.de/index.php/Signatur_erstellen <br />
Die Logindaten für das Wiki sind die selben wie für die E-Mail. </p>
<p>Viele Grüße, <br />
Team Juniter </p>
</body>
</html>
""" %{"vorname":vorname, "nachname":nachname}
msg = MIMEMultipart('alternative')
msg['Subject'] = "Willkommen in deinem E-Mail Postfach!"
msg['From'] = sender
msg['To'] = receiver
part1 = MIMEText(text, 'html')
msg.attach(part1)
try:
s = smtplib.SMTP('w013d91b.kasserver.com')
s.login('[email protected]',config.email_pw)
s.sendmail(sender, receiver, msg.as_string())
print 'Signatur Email versendet'
except smtplib.SMTPException as e:
print "Couldn't send mail. Trying again..."
raise
def id_generator(size=10, chars=string.ascii_letters + string.digits):
return ''.join(random.choice(chars) for _ in range(size))
def generate_user(output):
file = open('output.txt','w+')
table = {
ord(u'ä'): u'ae',
ord(u'ö'): u'oe',
ord(u'ü'): u'ue',
ord(u'ß'): u'ss',
}
driver = webdriver.Firefox()
driver.get("http://kas.all-inkl.com")
wait = WebDriverWait(driver,10)
try:
input = wait.until(EC.presence_of_element_located((By.ID, "loginname")))
password = wait.until(EC.presence_of_element_located((By.ID, "passwort")))
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "input[type='radio'][value='english']"))).click()
#username and password have to come from a config file
input.send_keys(config.allinkl_username)
password.send_keys(config.allinkl_pw)
password.send_keys(Keys.RETURN)
wait.until(EC.presence_of_element_located((By.LINK_TEXT, "Email"))).click()
for interessent in output:
wait.until(EC.presence_of_element_located((By.LINK_TEXT, "Email Account"))).click()
wait.until(EC.presence_of_element_located((By.LINK_TEXT, "Create new mail account"))).click()
vorname = interessent[0].strip()
vorname = vorname.replace(" ", ".")
nachname = interessent[1].strip()
nachname = nachname.replace(" ",".")
email = interessent[2].strip()
mail = wait.until(EC.presence_of_element_located((By.NAME, "mail")))
username = vorname.lower().decode('utf8').translate(table)+ "." + nachname.lower().decode('utf8').translate(table)
mail.send_keys(username)
user_pw = id_generator()
pw1 = wait.until(EC.presence_of_element_located((By.ID, "pwfeld_1")))
pw2 = wait.until(EC.presence_of_element_located((By.ID, "pwfeld_2")))
pw1.send_keys(user_pw)
pw2.send_keys(user_pw)
domain = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, "domain")))
select = Select(domain)
select.select_by_visible_text("cct-ev.de")
wait.until(EC.presence_of_element_located((By.ID, "show_password_yes"))).click()
wait.until(EC.presence_of_element_located((By.NAME, "button1"))).click()
receiver = send_mail(vorname, nachname, email, user_pw, username)
file.write(username+'@cct-ev.de\n')
print username + ' erstellt mit pw ' + user_pw
time.sleep(10)
send_signatur_mail(vorname, nachname, receiver)
time.sleep(3)
finally:
driver.close()
file.close()
driver.quit()
#return user_pw, mailname
print 'Alle User erstellt'
def readFile(filename):
output =[]
with open(filename) as csvfile:
reader = csv.reader(csvfile)
for row in reader:
output.append(row)
return output
#main()
interessenten = readFile('interessenten.csv')
generate_user(interessenten)