Advertisement
Guest User

Untitled

a guest
Apr 5th, 2018
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.94 KB | None | 0 0
  1. """
  2. Código del GUI de Credenciales , captura y cálculo de métricas
  3. Autor Laury Martínez | 2013-5316
  4. Valerie Sujalkovsky | 2013-5160
  5. """
  6.  
  7. import os.path
  8. from tkinter import *
  9. from tkinter import messagebox
  10. from tests.graphs import Graphs
  11. from difflib import SequenceMatcher
  12. from tests.main import *
  13.  
  14. file = "db.txt"
  15.  
  16. root = Tk()
  17. new = Tk()
  18. new.withdraw()
  19. window_3 = Tk()
  20. window_3.withdraw()
  21. window_4 = Tk()
  22. window_4.withdraw()
  23.  
  24. database_user = None
  25. database_name = None
  26. database_password = None
  27. host = None
  28. hostip = None
  29. temp = None
  30.  
  31. metricsProcess = MainProject()
  32.  
  33. class Window(Frame):
  34.  
  35. """
  36. Clase representativa de la primera ventana
  37. """
  38.  
  39. graphs = Graphs()
  40.  
  41. def __init__(self, master):
  42. """
  43. Función que inicializa la ventana.
  44. :param master: Tk() o ventana vacía
  45. """
  46.  
  47. Frame.__init__(self, master)
  48. self.master = master
  49. self.init_window()
  50.  
  51. def init_window(self):
  52. """
  53. Función que crea los campos que aparecen en la primera ventana
  54. :return: Ventana con los campos para insertar el nombre de la base de datos, el usuario y la contraseña
  55. """
  56.  
  57. self.master.title("Migration tool")
  58. Label(text='Insert Database name:').grid(row=0, column=0, sticky=W)
  59. mySQLname = Entry(root, width=20)
  60. mySQLname.grid(row=0, column=1, sticky=W)
  61.  
  62. Label(text='Insert Database user:').grid(row=1, column=0, sticky=W)
  63. mySQLuser = Entry(root, width=20)
  64. mySQLuser.grid(row=1, column=1, sticky=W)
  65.  
  66. Label(text='Insert Database password:').grid(row=2, column=0, sticky=W)
  67. mySQLpassword = Entry(root, width=20, show='*')
  68. mySQLpassword.grid(row=2, column=1, sticky=W)
  69.  
  70. def send_values_database():
  71. """
  72. Función que manda los valores la base de datos
  73. :return: No retorna nada
  74. """
  75.  
  76. global database_user, database_name, database_password
  77.  
  78. database_name = mySQLname.get()
  79.  
  80. database_user = mySQLuser.get()
  81.  
  82. database_password = mySQLpassword.get()
  83.  
  84. if database_user != "root":
  85. messagebox.showinfo(title="Migration Tool", message="Database user or password incorrect.",
  86. icon="error")
  87. elif database_password != "root":
  88. messagebox.showinfo(title="Migration Tool", message="Database user or password incorrect.")
  89. elif database_name != "migration_tool":
  90. messagebox.showinfo(title="Migration Tool", message="This Database does not exist.")
  91. else:
  92. messagebox.showinfo(title="Migration Tool", message="Successfully connected", icon="info")
  93. insert_client_info()
  94.  
  95. def end_program():
  96. """
  97. Función para cerrar el programa
  98. :return: No retorna nada
  99. """
  100. exit()
  101.  
  102. def insert_client_info():
  103. """
  104. Función que crea la segunda Ventana para insertar al cliente
  105. :return: No retorna nada
  106. """
  107. global host, hostip, new
  108.  
  109. new.deiconify()
  110. root.withdraw()
  111.  
  112. new.title("Migration tool")
  113. Label(new, text='Insert client name:').grid(row=0, column=0, sticky=W)
  114. client_name = Entry(new, width=20)
  115. client_name.grid(row=0, column=1, sticky=W)
  116.  
  117. Label(new, text='Insert client IP address:').grid(row=1, column=0, sticky=W)
  118. client_IP = Entry(new, width=20)
  119. client_IP.grid(row=1, column=1, sticky=W)
  120.  
  121. def send_values_client():
  122. """
  123. Función que manda la información del cliente a la base de datos y lo crea
  124. :return: No returna nada
  125. """
  126. global host, hostip
  127.  
  128. host = client_name.get()
  129.  
  130. hostip = client_IP.get()
  131.  
  132. read_credentials()
  133. new.withdraw()
  134.  
  135. messagebox.showinfo(title="Migration Tool", message="Client Created Successfully", icon="info")
  136.  
  137. metricsProcess.initPro(database_name, database_user, database_password, host, hostip)
  138.  
  139. sendUserButtom = Button(new, text="Log in", command=send_values_client)
  140. sendUserButtom.grid(row=4, column=2, sticky=W)
  141.  
  142. endButtom = Button(new, text="Cancel", command=end_program)
  143. endButtom.grid(row=4, column=0, sticky=W)
  144.  
  145. def similar(a, b):
  146. """
  147. Función par ver si dos strings son similares
  148. :param a: String
  149. :param b: String
  150. :return: Returna True si son similares
  151. """
  152. return SequenceMatcher(None, a, b).ratio()
  153.  
  154. def cipherXOR(data):
  155. """
  156. Función de encriptación de las credenciales
  157. :param data: String
  158. :return: la data encriptada
  159. """
  160. ans = ""
  161. key = "valt uhdgt uio"
  162. key = key * int(len(data) / len(key)) + key * (len(data) % len(key))
  163. for i in range(0, len(data)):
  164. ans = ans + chr(ord(data[i]) ^ ord(key[i]))
  165. return ans
  166.  
  167. def read_credentials():
  168. """
  169. Función que crea o lee el archivo donde se guardan las credenciales
  170. :return: Archivo .txt con las credenciales encriptadas
  171. """
  172.  
  173. dataName = cipherXOR(database_name)
  174. dataUser = cipherXOR(database_user)
  175. dataPass = cipherXOR(database_password)
  176. encryptHost = cipherXOR(host)
  177. encryptHIP = cipherXOR(hostip)
  178. test = cipherXOR(encryptHIP)
  179.  
  180. if os.path.isfile(file):
  181.  
  182. db = open("db.txt")
  183. written = db.readlines()
  184. if similar(written[0], database_name):
  185. print('Already exists.')
  186. else:
  187. print('Not storaged.')
  188. else:
  189. db = open('db.txt', 'w')
  190. db.write(dataName + "\n")
  191. db.write(dataUser + "\n")
  192. db.write(dataPass + "\n")
  193. db.write(encryptHost + "\n")
  194. db.write(encryptHIP + "\n")
  195. db.close()
  196.  
  197. endButtom = Button(root, text="Stop test", command=end_program)
  198. endButtom.grid(row=4, column=0, sticky=W)
  199.  
  200. sendButtom = Button(root, text="Log in", command=send_values_database)
  201. sendButtom.grid(row=4, column=2, sticky=W)
  202.  
  203.  
  204. def main():
  205. """
  206. Función que crea el loop principar para poder visualizar las ventanas.
  207. :return: Muestra el Gui en pantalla
  208. """
  209.  
  210. gui = Window(root)
  211. gui.__init__(root)
  212. root.iconbitmap('icon.ico')
  213. root.mainloop()
  214.  
  215.  
  216. if __name__ == '__main__':
  217. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement