Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- Código del GUI de Credenciales , captura y cálculo de métricas
- Autor Laury Martínez | 2013-5316
- Valerie Sujalkovsky | 2013-5160
- """
- import os.path
- from tkinter import *
- from tkinter import messagebox
- from tests.graphs import Graphs
- from difflib import SequenceMatcher
- from tests.main import *
- file = "db.txt"
- root = Tk()
- new = Tk()
- new.withdraw()
- window_3 = Tk()
- window_3.withdraw()
- window_4 = Tk()
- window_4.withdraw()
- database_user = None
- database_name = None
- database_password = None
- host = None
- hostip = None
- temp = None
- metricsProcess = MainProject()
- class Window(Frame):
- """
- Clase representativa de la primera ventana
- """
- graphs = Graphs()
- def __init__(self, master):
- """
- Función que inicializa la ventana.
- :param master: Tk() o ventana vacía
- """
- Frame.__init__(self, master)
- self.master = master
- self.init_window()
- def init_window(self):
- """
- Función que crea los campos que aparecen en la primera ventana
- :return: Ventana con los campos para insertar el nombre de la base de datos, el usuario y la contraseña
- """
- self.master.title("Migration tool")
- Label(text='Insert Database name:').grid(row=0, column=0, sticky=W)
- mySQLname = Entry(root, width=20)
- mySQLname.grid(row=0, column=1, sticky=W)
- Label(text='Insert Database user:').grid(row=1, column=0, sticky=W)
- mySQLuser = Entry(root, width=20)
- mySQLuser.grid(row=1, column=1, sticky=W)
- Label(text='Insert Database password:').grid(row=2, column=0, sticky=W)
- mySQLpassword = Entry(root, width=20, show='*')
- mySQLpassword.grid(row=2, column=1, sticky=W)
- def send_values_database():
- """
- Función que manda los valores la base de datos
- :return: No retorna nada
- """
- global database_user, database_name, database_password
- database_name = mySQLname.get()
- database_user = mySQLuser.get()
- database_password = mySQLpassword.get()
- if database_user != "root":
- messagebox.showinfo(title="Migration Tool", message="Database user or password incorrect.",
- icon="error")
- elif database_password != "root":
- messagebox.showinfo(title="Migration Tool", message="Database user or password incorrect.")
- elif database_name != "migration_tool":
- messagebox.showinfo(title="Migration Tool", message="This Database does not exist.")
- else:
- messagebox.showinfo(title="Migration Tool", message="Successfully connected", icon="info")
- insert_client_info()
- def end_program():
- """
- Función para cerrar el programa
- :return: No retorna nada
- """
- exit()
- def insert_client_info():
- """
- Función que crea la segunda Ventana para insertar al cliente
- :return: No retorna nada
- """
- global host, hostip, new
- new.deiconify()
- root.withdraw()
- new.title("Migration tool")
- Label(new, text='Insert client name:').grid(row=0, column=0, sticky=W)
- client_name = Entry(new, width=20)
- client_name.grid(row=0, column=1, sticky=W)
- Label(new, text='Insert client IP address:').grid(row=1, column=0, sticky=W)
- client_IP = Entry(new, width=20)
- client_IP.grid(row=1, column=1, sticky=W)
- def send_values_client():
- """
- Función que manda la información del cliente a la base de datos y lo crea
- :return: No returna nada
- """
- global host, hostip
- host = client_name.get()
- hostip = client_IP.get()
- read_credentials()
- new.withdraw()
- messagebox.showinfo(title="Migration Tool", message="Client Created Successfully", icon="info")
- metricsProcess.initPro(database_name, database_user, database_password, host, hostip)
- sendUserButtom = Button(new, text="Log in", command=send_values_client)
- sendUserButtom.grid(row=4, column=2, sticky=W)
- endButtom = Button(new, text="Cancel", command=end_program)
- endButtom.grid(row=4, column=0, sticky=W)
- def similar(a, b):
- """
- Función par ver si dos strings son similares
- :param a: String
- :param b: String
- :return: Returna True si son similares
- """
- return SequenceMatcher(None, a, b).ratio()
- def cipherXOR(data):
- """
- Función de encriptación de las credenciales
- :param data: String
- :return: la data encriptada
- """
- ans = ""
- key = "valt uhdgt uio"
- key = key * int(len(data) / len(key)) + key * (len(data) % len(key))
- for i in range(0, len(data)):
- ans = ans + chr(ord(data[i]) ^ ord(key[i]))
- return ans
- def read_credentials():
- """
- Función que crea o lee el archivo donde se guardan las credenciales
- :return: Archivo .txt con las credenciales encriptadas
- """
- dataName = cipherXOR(database_name)
- dataUser = cipherXOR(database_user)
- dataPass = cipherXOR(database_password)
- encryptHost = cipherXOR(host)
- encryptHIP = cipherXOR(hostip)
- test = cipherXOR(encryptHIP)
- if os.path.isfile(file):
- db = open("db.txt")
- written = db.readlines()
- if similar(written[0], database_name):
- print('Already exists.')
- else:
- print('Not storaged.')
- else:
- db = open('db.txt', 'w')
- db.write(dataName + "\n")
- db.write(dataUser + "\n")
- db.write(dataPass + "\n")
- db.write(encryptHost + "\n")
- db.write(encryptHIP + "\n")
- db.close()
- endButtom = Button(root, text="Stop test", command=end_program)
- endButtom.grid(row=4, column=0, sticky=W)
- sendButtom = Button(root, text="Log in", command=send_values_database)
- sendButtom.grid(row=4, column=2, sticky=W)
- def main():
- """
- Función que crea el loop principar para poder visualizar las ventanas.
- :return: Muestra el Gui en pantalla
- """
- gui = Window(root)
- gui.__init__(root)
- root.iconbitmap('icon.ico')
- root.mainloop()
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement