Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- import smtplib
- import paramiko
- import os
- import sys
- from email.mime.text import MIMEText
- host = '127.0.0.1'
- user = 'geoolekom'
- pwd = 'WC3TFTDOTA'
- host_port = 22
- def get_bulletin():
- transport = paramiko.Transport((host, host_port))
- transport.connect(username=user, password=pwd)
- sftp = paramiko.SFTPClient.from_transport(transport)
- bulletin = sftp.file('./DGAP16/bulletin.txt', 'r')
- for line in bulletin:
- print(line, end='')
- sftp.close()
- transport.close()
- return
- def recieve_email(name):
- transport = paramiko.Transport((host, host_port))
- transport.connect(username=user, password=pwd)
- sftp = paramiko.SFTPClient.from_transport(transport)
- emails = sftp.file('./DGAP16/emails.txt', 'r')
- for line in emails:
- if len(line.split()) == 2 and line.split()[0] == name:
- email = line.split()[1]
- break
- else:
- email = 'Doesn\'t exist'
- sftp.close()
- transport.close()
- return email
- def generate_code():
- random.seed()
- code = random.randint(0, 100000)
- return code
- def send_code(code, email):
- sender = 'dgap.vote.2016'
- sender_pwd = 'Qwerty123'
- smtp_server = 'smtp.yandex.ru'
- port = 587
- msg = MIMEText('Hello. Here is your secret voter code: '+code+'\nUse your vote very carefully!\nBest regards, Electoral Commission.')
- msg['To'] = email
- msg['From'] ='dgap.vote.2016@yandex.ru'
- msg['Subject'] = 'Your secret code for election'
- mail_server = smtplib.SMTP(smtp_server, port)
- mail_server.starttls()
- mail_server.login(sender, sender_pwd)
- mail_server.sendmail(sender+'@yandex.ru', email, msg.as_string())
- mail_server.quit()
- return 1
- def verify(code):
- try:
- given_code = int(input())
- except ValueError:
- return -1
- if code == given_code:
- return 1
- else:
- return 0
- def send_vote(vote, email):
- transport = paramiko.Transport((host, host_port))
- transport.connect(username=user, password=pwd)
- sftp = paramiko.SFTPClient.from_transport(transport)
- k = 0
- bulletin = sftp.open('./DGAP16/bulletin.txt', 'r')
- size = len(bulletin.readlines())
- bulletin.close()
- for i in range(1, size+1):
- try:
- f = sftp.file('./DGAP16/votes/'+str(i)+'_'+email, 'r')
- except IOError as e:
- True
- else:
- with f:
- k+=1
- if k > 0:
- return 0
- else:
- sftp.file('./DGAP16/votes/'+vote+'_'+email, 'w')
- sftp.close()
- transport.close()
- return 1
- def main():
- get_bulletin()
- print("Enter your name:")
- name = input()
- email = recieve_email(name)
- if email == 'Doesn\'t exist':
- print("Name is invalid.")
- sys.exit()
- else:
- print("Trying to send verification code.")
- code = generate_code()
- send_code(str(code), email)
- print("Code is successfully sent.")
- print("Enter secret code:")
- v = verify(code)
- if v == 1:
- print("Access allowed. Now vote:")
- elif v == -1:
- print("This is not a number. Access denied.")
- sys.exit()
- elif v == 0:
- print("Wrong code. Access denied.")
- sys.exit()
- vote = input()
- if send_vote(vote, email) == 1:
- print("You've successfully voted. Congradulations!")
- else:
- print("Vote isn't sent. You've already voted.")
- return
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement