-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
75 lines (63 loc) · 2.62 KB
/
main.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
#!/usr/bin/python
import time
from threading import Thread
from logs import initLogs
from configuration import loadConfiguration, settings
from sympa.subscribers import getSubscribersFromFile, getSubscribersFromEmail
from sympa.subscribers import writeSubscribers
from sympa.mod import HackyMod
subscribedUsers = []
def getSubscribersAsync(usersReadyCallback):
global subscribedUsers
first = True
backupSubscribedUsers = getSubscribersFromFile(settings['subscribersFile'])
while True:
print('[ASYNC] - Getting subscribed users...')
subscribedUsers = getSubscribersFromEmail(
listName=settings['listName'],
sympaCommandEmail=settings['sympaCommandEmail'],
listContactEmail=settings['listContactEmail'],
moderatorEmail=settings['moderatorEmail'],
moderatorPassword=settings['moderatorPassword'],
imapServer=settings['imapSSLServer'], imapPort=settings['imapSSLPort'],
smtpServer=settings['smtpServer'], smtpPort=settings['smtpPort'])
print('[ASYNC] - Subscribed users fetched\n\n')
if len(subscribedUsers) == 0:
print(' [-] No subscribers fetched from email, using subscribers file')
subscribedUsers = backupSubscribedUsers
else:
print(' [+] Writing new subscribers to file')
writeSubscribers(settings['subscribersFile'], subscribedUsers)
if first:
first = False
t = Thread(target=usersReadyCallback)
t.start()
print('[ASYNC] - Wating for next subscribed-users retrieval...')
time.sleep(60*60*24)
def startModeration():
global subscribedUsers
mod = HackyMod(
users=subscribedUsers,
blacklistFile=settings['blacklistFile'],
sympaCommandEmail=settings['sympaCommandEmail'],
listName=settings['listName'],
listContactEmail=settings['listContactEmail'],
moderatorEmail=settings['moderatorEmail'],
moderatorPassword=settings['moderatorPassword'],
imapSSLServer=settings['imapSSLServer'],
imapSSLPort=settings['imapSSLPort'],
smtpServer=settings['smtpServer'],
smtpPort=settings['smtpPort'])
while True:
print('\n')
print('[MOD] - Starting moderation')
mod.moderate()
# get emails, parse and moderate them every X minutes
time.sleep(60*10) # cada 2 minutos
def main():
loadConfiguration('./settings.json')
initLogs(settings['logFile'], debug=settings['debug'])
t = Thread(target=getSubscribersAsync, args=(startModeration,))
t.start()
if __name__ == '__main__':
main()