diff --git a/config.py b/config.py index 6b7a7ec..23a064c 100644 --- a/config.py +++ b/config.py @@ -1,30 +1,105 @@ import os -from tkinter import Button, Entry, Label, StringVar, PhotoImage, Tk, Canvas +import pathlib +import pickle +from hashlib import sha256 +from tkinter import Button, Entry, Label, StringVar, Tk, filedialog + +from PIL import Image, ImageTk + +from misc import alert, get_os -def main(args): +def __get_config_folder(): + _os = get_os() + if _os == "linux": + folder = os.path.join(os.getenv("HOME"), ".munyal") + else: + folder = os.path.join(os.path.expandvars("%APPDATA%"), "Munyal") + return folder + + +def get_config(): + while True: + config = __get_config() + if not config: + gui_config() + else: + return config + + +def __get_config(): + folder = __get_config_folder() + config_file = os.path.join(folder, "config") + if os.path.exists(config_file): + config_bytes = open(config_file, "rb") + config = pickle.load(config_bytes) + config_bytes.close() + return config + + +def __validate_values(user, password): + return True + + +def _set_config(root, user, password, folder): + passwd_hash = sha256(password.get().encode("utf-8")).hexdigest() + if not user: + alert(root, "Introduce tu usuario de la red Munyal") + elif not password: + alert(root, "Introduce tu contraseña") + elif not folder: + alert(root, "Elige la carpeta que quieres sincronizar") + elif not __validate_values(user, passwd_hash): + alert( + root, + "Tu usuario o contraseña son incorrectos, favor de reintentarlo") + else: + password.set("") + folder_config = __get_config_folder() + path = pathlib.Path(folder_config) + path.mkdir(parents=True, exist_ok=True) + with open(os.path.join(folder_config, "config"), "wb") as config_file: + config_file.write( + pickle.dumps({ + "login": { + "user": user, + "password": passwd_hash + }, + "folder": folder + })) + root.destroy() + + +def gui_config(): root = Tk() - root.title("Munyal") - root.geometry("320x500") + root.geometry("250x420") - logo = PhotoImage(file="img/logo.png") + img_logo = Image.open("img/logo.png") + img_tk = ImageTk.PhotoImage(img_logo.resize((200, 150), Image.ANTIALIAS)) host = StringVar() - host_field = Entry(root, textvariable=host, width=30) + host.set("localhost") + host_field = Entry(root, textvariable=host) passwd = StringVar() - passwd_field = Entry(root, textvariable=passwd, show="*", width=30) + passwd_field = Entry(root, textvariable=passwd, show="*") folder = StringVar() folder.set(os.path.join(os.getenv("HOME"), "Munyal")) - folder_field = Entry(root, textvariable=folder, width=30) + folder_field = Entry(root, textvariable=folder) + btn_folder = Button(root, + text="Examinar", + command=lambda: search_folder(folder)) - connect = Button(root, text="Conectar", command=lambda: None, width=10) + connect = Button( + root, + text="Conectar", + command=lambda: _set_config(root, host.get(), passwd, folder.get())) - Label(root, image=logo).pack() - Label(root, text="MUNYAL", font=("", 30)).pack() + Label(root, text="MUNYAL").pack() + Label(root, image=img_tk).pack() Label(root, text="").pack() - Label(root, text="Nombre del servidor").pack() + Label(root, text="Ruta del servidor").pack() host_field.pack() Label(root, text="").pack() Label(root, text="Contraseña").pack() @@ -32,12 +107,17 @@ def main(args): Label(root, text="").pack() Label(root, text="Carpeta a sincronizar").pack() folder_field.pack() + btn_folder.pack() Label(root, text="").pack() connect.pack() root.mainloop() -if __name__ == '__main__': - import sys - sys.exit(main(sys.argv)) +def search_folder(field): + path = filedialog.askdirectory() + field.set(path) + + +if __name__ == "__main__": + print(get_config())