From dcda647e90e2dc34e94f2f3e09ecb85959360ed8 Mon Sep 17 00:00:00 2001 From: punix Date: Sat, 19 Apr 2025 23:29:06 +0200 Subject: [PATCH] format fixes --- wirepy.py | 584 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 360 insertions(+), 224 deletions(-) diff --git a/wirepy.py b/wirepy.py index 5c7e611..47cf0c3 100755 --- a/wirepy.py +++ b/wirepy.py @@ -1,5 +1,7 @@ #!/usr/bin/python3 - +""" +this script is a simple GUI for managing Wireguard Tunnels +""" import gettext import locale import webbrowser @@ -21,17 +23,17 @@ Create.decrypt() tcl_path = Path("/usr/share/TK-Themes") wg_set = Path(Path.home() / ".config/wire_py/settings") -wg_tips = if_tip(wg_set) +WG_TIPS = if_tip(wg_set) dirname = Path("/tmp/tlecdcwg/") -""" 1 = 1. Year, 09 = Month of the Year, 2924 = Day and Year of the Year """ -version = "v. 2.04.1725" +# 1 = 1. Year, 09 = Month of the Year, 2924 = Day and Year of the Year +VERSION = "v. 2.04.1725" res = GiteaUpdate.api_down( - "https://git.ilunix.de/api/v1/repos/punix/Wire-Py/releases", version + "https://git.ilunix.de/api/v1/repos/punix/Wire-Py/releases", VERSION ) -""" Translate """ +# Translate APP = "wirepy" LOCALE_DIR = "/usr/share/locale/" locale.bindtextdomain(APP, LOCALE_DIR) @@ -40,42 +42,42 @@ gettext.textdomain(APP) _ = gettext.gettext -def signalHandler(signum, frame): - """Determine clear text names for signal numbers""" - SIGNALS_TO_NAMES_DICT = dict( +def signal_handler(signum, frame): + """ + Determine clear text names for signal numbers + """ + signals_to_names_dict = dict( (getattr(signal, n), n) for n in dir(signal) if n.startswith("SIG") and "_" not in n ) - signame = SIGNALS_TO_NAMES_DICT.get(signum, "Unnamed signal: %d" % signum) + signame = signals_to_names_dict.get(signum, f"Unnamed signal: {signum}") + + # End program for certain signals, report to others only reception - """ - End program for certain signals, - report to others only reception - """ if signum in (signal.SIGINT, signal.SIGTERM): - exitCode = 1 - print( - "\nSignal '%s' (%d) received. => Aborting with exit code %d." - % (signame, signum, exitCode) - ) + exit_code = 1 + print(f"\nSignal {signame} {(signum)} received. => Aborting with exit code {exit_code}.") shutil.rmtree(dirname) Path.unlink("/tmp/.loguser") print("Breakdown by user...") - sys.exit(exitCode) + sys.exit(exit_code) else: - print("Signal %d received and ignored." % signum) + print(f"Signal {signum} received and ignored.") shutil.rmtree(dirname) Path.unlink("/tmp/.loguser") print("Process unexpectedly ended...") -signal.signal(signal.SIGINT, signalHandler) -signal.signal(signal.SIGTERM, signalHandler) -signal.signal(signal.SIGHUP, signalHandler) +signal.signal(signal.SIGINT, signal_handler) +signal.signal(signal.SIGTERM, signal_handler) +signal.signal(signal.SIGHUP, signal_handler) class Wirepy(tk.Tk): + """ + Class Wirepy this is Main Window of wirepy + """ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -83,42 +85,38 @@ class Wirepy(tk.Tk): self.my_tool_tip = None self.x_width = 600 self.y_height = 383 - self.monitor_center_x = self.winfo_screenwidth() / 2 - (self.x_width / 2) - self.monitor_center_y = self.winfo_screenheight() / 2 - (self.y_height / 2) + self.monitor_center_x = int(self.winfo_screenwidth() / 2 - (self.x_width / 2)) + self.monitor_center_y = int(self.winfo_screenheight() / 2 - (self.y_height / 2)) self.resizable(width=False, height=False) self.title("Wire-Py") - self.geometry( - "%dx%d+%d+%d" - % ( - self.x_width, - self.y_height, - self.monitor_center_x, - self.monitor_center_y, - ) - ) + self.geometry(f"{self.x_width}x{self.y_height}+{self.monitor_center_x}+{self.monitor_center_y}") + self.columnconfigure(0, weight=1) self.rowconfigure(0, weight=1) self.style = ttk.Style(self) self.tk.call("source", str(tcl_path) + "/water.tcl") - """ self.tk.call('source', 'TK-Themes/water.tcl') """ - with open(wg_set, "r") as read_file: + # self.tk.call('source', 'TK-Themes/water.tcl') + with open(wg_set, "r", encoding="utf-8") as read_file: lines = read_file.readlines() if "light\n" in lines: self.tk.call("set_theme", "light") else: self.tk.call("set_theme", "dark") - """ Load the image file from disk. """ + # Load the image file from disk self.wg_icon = tk.PhotoImage(file=r"/usr/share/icons/lx-icons/48/wg_vpn.png") - """ Set it as the window icon """ + # Set it as the window icon self.iconphoto(True, self.wg_icon) FrameWidgets(self).grid() class FrameWidgets(ttk.Frame): + """ + ttk frame class for better structure + """ def __init__(self, container, **kwargs): super().__init__(container, **kwargs) @@ -145,61 +143,67 @@ class FrameWidgets(ttk.Frame): file=r"/usr/share/icons/lx-icons/48/wg_vpn-stop.png" ) - """ Set on or off in file """ - def update(): + """ + Set on or off in file + """ if set_update.get() == 1: - with open(wg_set, "r") as set_file2: + with open(wg_set, "r", encoding="utf-8") as set_file2: lines2 = set_file2.readlines() lines2[1] = "off\n" - with open(wg_set, "w") as set_file2: + with open(wg_set, "w", encoding="utf-8") as set_file2: set_file2.writelines(lines2) if set_update.get() == 0: - with open(wg_set, "r") as set_file2: + with open(wg_set, "r", encoding="utf-8") as set_file2: lines2 = set_file2.readlines() lines2[1] = "on\n" - with open(wg_set, "w") as set_file2: + with open(wg_set, "w", encoding="utf-8") as set_file2: set_file2.writelines(lines2) - """ Set True or False in file """ - def tooltip(): + """ + Set True or False in file + """ if set_tip.get(): - with open(wg_set, "r") as set_file2: + with open(wg_set, "r", encoding="utf-8") as set_file2: lines2 = set_file2.readlines() lines2[5] = "False\n" - with open(wg_set, "w") as set_file2: + with open(wg_set, "w", encoding="utf-8") as set_file2: set_file2.writelines(lines2) else: - with open(wg_set, "r") as set_file2: + with open(wg_set, "r", encoding="utf-8") as set_file2: lines2 = set_file2.readlines() lines2[5] = "True\n" - with open(wg_set, "w") as set_file2: + with open(wg_set, "w", encoding="utf-8") as set_file2: set_file2.writelines(lines2) - """ Set dark or light """ - def theme_change_light(): + """ + Set light theme + """ if self.tk.call("ttk::style", "theme", "use") == "water-dark": - """Set light theme""" + self.tk.call("set_theme", "light") - with open(wg_set, "r") as theme_set2: + with open(wg_set, "r", encoding="utf-8") as theme_set2: lines3 = theme_set2.readlines() lines3[3] = "light\n" - with open(wg_set, "w") as theme_set2: + with open(wg_set, "w", encoding="utf-8") as theme_set2: theme_set2.writelines(lines3) self.color_label() def theme_change_dark(): + """ + Set dark theme + """ if not self.tk.call("ttk::style", "theme", "use") == "water-dark": - """Set dark theme""" + self.tk.call("set_theme", "dark") - with open(wg_set, "r") as theme_set2: + with open(wg_set, "r", encoding="utf-8") as theme_set2: lines4 = theme_set2.readlines() lines4[3] = "dark\n" - with open(wg_set, "w") as theme_set2: + with open(wg_set, "w", encoding="utf-8") as theme_set2: theme_set2.writelines(lines4) self.color_label() @@ -207,7 +211,7 @@ class FrameWidgets(ttk.Frame): def link_btn(): webbrowser.open("https://git.ilunix.de/punix/Wire-Py") - """ img_w, img_i, w_title, w_txt , txt2, com hand over """ + # img_w, img_i, w_title, w_txt , txt2, com hand over iw = r"/usr/share/icons/lx-icons/48/wg_vpn.png" ii = r"/usr/share/icons/lx-icons/48/wg_msg.png" wt = _("Info") @@ -222,39 +226,47 @@ class FrameWidgets(ttk.Frame): msg_window(iw, ii, wt, msg_t, txt2, com) - """ Frame for Menu """ + # Frame for Menu self.menu_frame = ttk.Frame(self) self.menu_frame.configure(relief="flat") self.menu_frame.grid(column=0, row=0, columnspan=4, sticky="w") - """ App Menu """ - self.version_lb = ttk.Label(self.menu_frame, text=version) + # App Menu + self.version_lb = ttk.Label(self.menu_frame, text=VERSION) self.version_lb.config(font=("Ubuntu", 11), foreground="#00c4ff") self.version_lb.grid(column=0, row=0, rowspan=4, padx=10) def version_enter(event): - """The mouse moves into the Version widget""" + """ + The mouse moves into the Version widget + """ window.my_tool_tip = MyToolTip( - event.x_root, event.y_root, f"Version: {version[2:]}" + event.x_root, event.y_root, f"Version: {VERSION[2:]}" ) def version_leave(_): - """The mouse moves from the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves from the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() self.options_btn = ttk.Menubutton(self.menu_frame, text=_("Options")) self.options_btn.grid(column=1, columnspan=1, row=0) def sets_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, _("Click for Settings") ) def sets_leave(_): - """The mouse moves from the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves from the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() self.version_lb.bind("", version_enter) @@ -275,36 +287,40 @@ class FrameWidgets(ttk.Frame): self.settings.add_command(label=_("Light"), command=theme_change_light) self.settings.add_command(label=_("Dark"), command=theme_change_dark) - """ About BTN Menu / Label """ + # About BTN Menu / Label self.about_btn = ttk.Button( self.menu_frame, text=_("About"), style="Toolbutton", command=info ) self.about_btn.grid(column=2, columnspan=2, row=0) self.readme = tk.Menu(self) - """ Update and Tooltip Label """ + # Update and Tooltip Label self.updates_lb = ttk.Label(self.menu_frame) self.updates_lb.grid(column=4, columnspan=3, row=0, padx=10) - """View Checkbox for enable or disable Tooltip """ - if wg_tips: + # View Checkbox for enable or disable Tooltip + if WG_TIPS: set_tip.set(value=False) else: set_tip.set(value=True) - """View Checkbox for enable or disable Updates """ + # View Checkbox for enable or disable Updates if res == "False": set_update.set(value=1) self.updates_lb.configure(text=_("Update search off")) def disable_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, _("Updates you have disabled") ) def disable_leave(_): - """The mouse moves from the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves from the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() self.updates_lb.bind("", disable_enter) @@ -315,7 +331,9 @@ class FrameWidgets(ttk.Frame): self.updates_lb.configure(text=_("No Updates")) def congratulations_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, @@ -323,8 +341,10 @@ class FrameWidgets(ttk.Frame): ) def congratulations_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() self.updates_lb.bind("", congratulations_enter) @@ -333,19 +353,23 @@ class FrameWidgets(ttk.Frame): set_update.set(value=0) text = f"Update {res} " + _("available!") - """ Update BTN Menu""" + # Update BTN Menu self.update_btn = ttk.Menubutton(self.menu_frame, text=text) self.update_btn.grid(column=4, columnspan=3, row=0, padx=0) def download_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, _("Click to download new version") ) def download_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() self.update_btn.bind("", download_enter) @@ -364,59 +388,60 @@ class FrameWidgets(ttk.Frame): ), ) - """ Show active Tunnel """ + # Show active Tunnel self.a = Tunnel.active() - """ Label Frame 1 """ + # Label Frame 1 self.lb_frame_btn_lbox = ttk.Frame(self) self.lb_frame_btn_lbox.configure(relief="flat") self.lb_frame_btn_lbox.grid(column=0, rowspan=3, row=1) - """ Label Frame 2 """ + # Label Frame 2 self.lb_frame = ttk.Frame(self) self.lb_frame.configure(relief="solid") self.lb_frame.grid(column=2, row=2, sticky="snew", padx=20, pady=5) - """ Label Frame 3 """ + # Label Frame 3 self.lb_frame2 = ttk.Frame(self) self.lb_frame2.configure(relief="solid") self.lb_frame2.grid(column=2, row=3, sticky="snew", padx=20, pady=5) - """ Bottom Frame 4 """ + # Bottom Frame 4 self.lb_frame3 = ttk.Frame(self) self.lb_frame3.configure(relief="flat") self.lb_frame3.grid( column=0, row=5, columnspan=4, sticky="snew", padx=2, pady=2 ) - """ Bottom Frame 5 """ + # Bottom Frame 5 self.lb_frame4 = ttk.Frame(self) self.lb_frame4.configure(relief="flat") self.lb_frame4.grid(column=2, row=5, columnspan=3, sticky="e", padx=15) - """ Show active Label """ + # Show active Label self.select_tunnel = None self.lb = ttk.Label(self, text=_("Active: ")) self.lb.config(font=("Ubuntu", 11, "bold")) self.lb.grid(column=2, row=1, padx=15, pady=4, sticky="w") - """ Label to Show active Tunnel """ + # Label to Show active Tunnel self.StrVar = tk.StringVar(value=self.a) self.color_label() - """ Interface Label """ + # Interface Label self.interface = ttk.Label(self.lb_frame, text=_("Interface")) self.interface.grid(column=0, row=3, sticky="we", padx=120) self.interface.config(font=("Ubuntu", 9)) - """ Peer Label """ + # Peer Label self.peer = ttk.Label(self.lb_frame2, text=_("Peer")) self.peer.config(font=("Ubuntu", 9)) self.peer.grid(column=0, row=4, sticky="we", padx=130) - """ Listbox with Scrollbar """ - def enable_check_box(_): + """ + checkbox for enable autostart Tunnel + """ Create.files_for_autostart() if self.l_box.size() != 0: self.wg_autostart.configure(state="normal") @@ -424,6 +449,7 @@ class FrameWidgets(ttk.Frame): self.lb_rename.delete(0, tk.END) self.btn_rename.config(state="normal") + # Listbox with Scrollbar self.l_box = tk.Listbox(self.lb_frame_btn_lbox, selectmode="single") self.l_box.config(relief="ridge", font=("Ubuntu", 12, "bold")) self.l_box.grid(column=1, rowspan=4, row=0, sticky="ns") @@ -435,15 +461,16 @@ class FrameWidgets(ttk.Frame): self.scrollbar.grid(column=1, rowspan=4, row=0, sticky="nse") self.l_box.configure(yscrollcommand=self.scrollbar.set) - """ Tunnel List """ - + # Tunnel List self.tl = Tunnel.list() for tunnels in self.tl: self.l_box.insert("end", tunnels[:-5]) self.l_box.update() def list_empty_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, @@ -451,19 +478,25 @@ class FrameWidgets(ttk.Frame): ) def list_empty_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() def list_not_empty_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, _("Select a Tunnel") ) def list_not_empty_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() if self.l_box.size() == 0: @@ -473,27 +506,27 @@ class FrameWidgets(ttk.Frame): self.l_box.bind("", list_not_empty_enter) self.l_box.bind("", list_not_empty_leave) - """ Button Vpn """ + # Button Vpn if self.a != "": self.stop() wg_read = "/tmp/tlecdcwg/" + str(self.a + ".conf") - with open(wg_read, "r") as file: + with open(wg_read, "r", encoding="utf-8") as file: data = Tunnel.con_to_dict(file) - """ Address Label """ + # Address Label self.init_and_report(data) self.show_data() else: self.start() - """ Address Label """ + # Address Label self.add = tk.StringVar() self.DNS = tk.StringVar() self.enp = tk.StringVar() self.label_empty() self.show_data() - """ Button Import """ + # Button Import self.btn_i = ttk.Button( self.lb_frame_btn_lbox, image=self.imp_pic, @@ -503,37 +536,45 @@ class FrameWidgets(ttk.Frame): self.btn_i.grid(column=0, row=1, padx=15, pady=8) def imp_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, _("Click to import a Wireguard Tunnel") ) def imp_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() self.btn_i.bind("", imp_enter) self.btn_i.bind("", imp_leave) def delete(): - + """ + delete Wireguard Tunnel + """ try: self.select_tunnel = self.l_box.curselection() select_tl = self.l_box.get(self.select_tunnel[0]) - with open("/tmp/tlecdcwg/" + select_tl + ".conf", "r+") as file2: + with open( + "/tmp/tlecdcwg/" + select_tl + ".conf", "r+", encoding="utf-8" + ) as file2: key = Tunnel.con_to_dict(file2) pre_key = key[3] check_call(["nmcli", "connection", "delete", select_tl]) self.l_box.delete(self.select_tunnel[0]) - with open(wg_set, "r") as set_file6: + with open(wg_set, "r", encoding="utf-8") as set_file6: lines6 = set_file6.readlines() if ( select_tl == lines6[7].strip() and "off\n" not in lines6[7].strip() ): lines6[7] = "off\n" - with open(wg_set, "w") as set_file7: + with open(wg_set, "w", encoding="utf-8") as set_file7: set_file7.writelines(lines6) self.selected_option.set(0) self.autoconnect_var.set(_("no Autoconnect")) @@ -543,9 +584,13 @@ class FrameWidgets(ttk.Frame): str(Path.home()) + "/.config/wire_py/" + str(select_tl + ".dat") ) Path.unlink(Path("/tmp/tlecdcwg") / str(select_tl + ".conf")) - with open(str(Path.home()) + "/.config/wire_py/keys", "r") as readfile: + with open( + str(Path.home()) + "/.config/wire_py/keys", "r", encoding="utf-8" + ) as readfile: with open( - str(Path.home()) + "/.config/wire_py/keys2", "w" + str(Path.home()) + "/.config/wire_py/keys2", + "w", + encoding="utf-8", ) as writefile: for line in readfile: if pre_key not in line.strip("\n"): @@ -555,17 +600,21 @@ class FrameWidgets(ttk.Frame): file_one.replace(file_two) self.wg_autostart.configure(state="disabled") - """ for disable checkbox when Listbox empty """ + # for disable checkbox when Listbox empty def empty_list_start_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, _("No tunnels to start in the list") ) def empty_list_start_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() if self.l_box.size() == 0: @@ -590,7 +639,7 @@ class FrameWidgets(ttk.Frame): self.start() self.l_box.update() - """ Address Label """ + # Address Label self.add.set("") self.DNS.set("") self.enp.set("") @@ -600,7 +649,7 @@ class FrameWidgets(ttk.Frame): if self.l_box.size() != 0: - """img_w, img_i, w_title, w_txt hand over""" + # img_w, img_i, w_title, w_txt hand over iw = r"/usr/share/icons/lx-icons/64/info.png" ii = r"/usr/share/icons/lx-icons/48/wg_msg.png" wt = _("Select tunnel") @@ -609,14 +658,14 @@ class FrameWidgets(ttk.Frame): else: - """img_w, img_i, w_title, w_txt hand over""" + # img_w, img_i, w_title, w_txt hand over iw = r"/usr/share/icons/lx-icons/64/info.png" ii = r"/usr/share/icons/lx-icons/48/wg_msg.png" wt = _("Select tunnel") msg_t = _("Please first import tunnel") msg_window(iw, ii, wt, msg_t) - """ Button Trash """ + # Button Trash self.btn_tr = ttk.Button( self.lb_frame_btn_lbox, image=self.tr_pic, @@ -627,18 +676,24 @@ class FrameWidgets(ttk.Frame): self.btn_tr.grid(column=0, row=2, padx=15, pady=8) def empty_list_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, _("No tunnels to delete in the list") ) def empty_list_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() def del_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, @@ -646,8 +701,10 @@ class FrameWidgets(ttk.Frame): ) def del_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() if self.l_box.size() == 0: @@ -657,25 +714,26 @@ class FrameWidgets(ttk.Frame): self.btn_tr.bind("", del_enter) self.btn_tr.bind("", del_leave) - """ Button Export """ + # Button Export self.btn_exp = ttk.Button( self.lb_frame_btn_lbox, image=self.exp_pic, command=Tunnel.export, padding=0 ) self.btn_exp.grid(column=0, row=3, padx=15, pady=8) def empty_list_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, _("No Tunnels in List for Export") ) - def empty_list_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ - window.my_tool_tip.destroy() + empty_list_leave(_) def exp_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, @@ -683,8 +741,10 @@ class FrameWidgets(ttk.Frame): ) def exp_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() if self.l_box.size() == 0: @@ -694,19 +754,23 @@ class FrameWidgets(ttk.Frame): self.btn_exp.bind("", exp_enter) self.btn_exp.bind("", exp_leave) - """ Label Entry """ + # Label Entry self.lb_rename = ttk.Entry(self.lb_frame4, width=20) self.lb_rename.grid(column=2, row=0, padx=8, pady=10, sticky="ne") self.lb_rename.insert(0, _("Max. 12 characters!")) self.lb_rename.config(state="disable") def rename_no_active_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() def rename_no_active_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, @@ -714,7 +778,9 @@ class FrameWidgets(ttk.Frame): ) def rename_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, @@ -722,8 +788,10 @@ class FrameWidgets(ttk.Frame): ) def rename_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() if self.l_box.size() != 0: @@ -734,11 +802,12 @@ class FrameWidgets(ttk.Frame): self.lb_rename.bind("", rename_no_active_leave) def tl_rename(): + special_characters = ["\\", "/", "{", "}", " "] if len(self.lb_rename.get()) > 12: - """img_w, img_i, w_title, w_txt hand over""" + # img_w, img_i, w_title, w_txt hand over iw = r"/usr/share/icons/lx-icons/64/info.png" ii = r"/usr/share/icons/lx-icons/48/wg_msg.png" wt = _("Renaming not possible") @@ -747,7 +816,7 @@ class FrameWidgets(ttk.Frame): elif len(self.lb_rename.get()) == 0: - """img_w, img_i, w_title, w_txt hand over""" + # img_w, img_i, w_title, w_txt hand over iw = r"/usr/share/icons/lx-icons/64/info.png" ii = r"/usr/share/icons/lx-icons/48/wg_msg.png" wt = _("Renaming not possible") @@ -756,7 +825,7 @@ class FrameWidgets(ttk.Frame): elif any(ch in special_characters for ch in self.lb_rename.get()): - """img_w, img_i, w_title, w_txt hand over""" + # img_w, img_i, w_title, w_txt hand over iw = r"/usr/share/icons/lx-icons/64/info.png" ii = r"/usr/share/icons/lx-icons/48/wg_msg.png" wt = _("Renaming not possible") @@ -771,7 +840,7 @@ class FrameWidgets(ttk.Frame): self.select_tunnel = self.l_box.curselection() select_tl = self.l_box.get(self.select_tunnel[0]) - """ nmcli connection modify old connection.id iphone """ + # nmcli connection modify old connection.id iphone check_call( [ "nmcli", @@ -796,14 +865,14 @@ class FrameWidgets(ttk.Frame): if self.a != "" and self.a == select_tl: self.a = Tunnel.active() self.StrVar.set(value=self.a) - with open(wg_set, "r") as set_file5: + with open(wg_set, "r", encoding="utf-8") as set_file5: lines5 = set_file5.readlines() if ( select_tl == lines5[7].strip() and "off\n" not in lines5[7].strip() ): lines5[7] = new_a_connect - with open(wg_set, "w") as theme_set5: + with open(wg_set, "w", encoding="utf-8") as theme_set5: theme_set5.writelines(lines5) self.autoconnect_var.set(value=new_a_connect) @@ -813,14 +882,14 @@ class FrameWidgets(ttk.Frame): except IndexError: - """img_w, img_i, w_title, w_txt hand over""" + # img_w, img_i, w_title, w_txt hand over iw = r"/usr/share/icons/lx-icons/64/info.png" ii = r"/usr/share/icons/lx-icons/48/wg_msg.png" wt = _("Renaming not possible") msg_t = _("Please select a tunnel from the list") msg_window(iw, ii, wt, msg_t) - """ Button Rename """ + # Button Rename self.btn_rename = ttk.Button( self.lb_frame4, text=_("Rename"), @@ -831,11 +900,11 @@ class FrameWidgets(ttk.Frame): ) self.btn_rename.grid(column=3, row=0, padx=5, pady=10, sticky="ne") - """ Check Buttons """ + # Check Buttons self.selected_option = tk.IntVar() self.autoconnect_var = tk.StringVar() self.autoconnect_var.set(self.auto_con) - """ Frame for Labels, Entry and Button""" + # Frame for Labels, Entry and Button self.autoconnect = ttk.Label( self.lb_frame3, textvariable=self.autoconnect_var, width=15 ) @@ -850,7 +919,9 @@ class FrameWidgets(ttk.Frame): self.wg_autostart.grid(column=0, row=0, pady=15, padx=15, sticky="nw") def chk_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, @@ -861,14 +932,18 @@ class FrameWidgets(ttk.Frame): ) def chk_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() if self.l_box.size() >= 1 and len(self.l_box.curselection()) >= 1: def chk_a_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, @@ -876,8 +951,10 @@ class FrameWidgets(ttk.Frame): ) def chk_a_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() self.wg_autostart.bind("", chk_a_enter) @@ -889,7 +966,9 @@ class FrameWidgets(ttk.Frame): else: def chk_a_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, @@ -897,8 +976,10 @@ class FrameWidgets(ttk.Frame): ) def chk_a_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() self.wg_autostart.bind("", chk_a_enter) @@ -912,10 +993,13 @@ class FrameWidgets(ttk.Frame): Before importing, it is checked whether PrivateKey and PublicKey are in the file. If True then it is checked whether the PreSharedKey is already in the key file to avoid an import error so that no double wgconf are imported. - Thus, tunnels can be renamed without the problems arise. If False then the key is written into the file. + Thus, tunnels can be renamed without the problems arise. + If False then the key is written into the file. Furthermore, it is checked whether the name is longer than 12 characters. - If True then the name is automatically shortened to 12 characters and then imported. - If in each case false comes out, a corresponding window comes to inform the user that something is wrong. + If True then the name is automatically shortened to 12 characters + and then imported. + If in each case false comes out, a corresponding window comes to + inform the user that something is wrong. """ Create.dir_and_files() @@ -927,7 +1011,7 @@ class FrameWidgets(ttk.Frame): filetypes=[(_("WG config files"), "*.conf")], ) - with open(filepath, "r") as file: + with open(filepath, "r", encoding="utf-8") as file: read = file.read() path_split = filepath.split("/") path_split1 = path_split[-1] @@ -938,16 +1022,18 @@ class FrameWidgets(ttk.Frame): and "PublicKey = " in read and "Endpoint =" in read ): - with open(filepath, "r") as file: + with open(filepath, "r", encoding="utf-8") as file: key = Tunnel.con_to_dict(file) pre_key = key[3] if len(pre_key) != 0: with open( - str(Path.home()) + "/.config/wire_py/keys", "r" + str(Path.home()) + "/.config/wire_py/keys", + "r", + encoding="utf-8", ) as readfile: p_key = readfile.readlines() if pre_key in p_key or pre_key + "\n" in p_key: - """img_w, img_i, w_title, w_txt hand over""" + # img_w, img_i, w_title, w_txt hand over iw = r"/usr/share/icons/lx-icons/64/error.png" ii = r"/usr/share/icons/lx-icons/48/wg_msg.png" wt = _("Import Error") @@ -959,7 +1045,9 @@ class FrameWidgets(ttk.Frame): else: with open( - str(Path.home()) + "/.config/wire_py/keys", "a" + str(Path.home()) + "/.config/wire_py/keys", + "a", + encoding="utf-8", ) as keyfile: keyfile.write(pre_key + "\r") if len(path_split1) > 17: @@ -1045,12 +1133,16 @@ class FrameWidgets(ttk.Frame): ) def chk_a_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() def list_info_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, @@ -1058,8 +1150,10 @@ class FrameWidgets(ttk.Frame): ) def list_info_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() def del_enter(event): @@ -1074,12 +1168,16 @@ class FrameWidgets(ttk.Frame): ) def del_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() def exp_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, @@ -1090,12 +1188,16 @@ class FrameWidgets(ttk.Frame): ) def exp_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() def rename_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, @@ -1106,8 +1208,10 @@ class FrameWidgets(ttk.Frame): ) def rename_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() self.wg_autostart.bind("", chk_a_enter) @@ -1126,10 +1230,12 @@ class FrameWidgets(ttk.Frame): self.color_label() self.stop() wg_read = "/tmp/tlecdcwg/" + str(self.a + ".conf") - with open(wg_read, "r") as file_for_key: + with open( + wg_read, "r", encoding="utf-8" + ) as file_for_key: data = Tunnel.con_to_dict(file_for_key) - """ Address Label """ + # Address Label self.init_and_report(data) self.show_data() check_call( @@ -1145,7 +1251,7 @@ class FrameWidgets(ttk.Frame): Path.chmod(wg_read, 0o600) if "PrivateKey = " and "Endpoint = " not in read: - """img_w, img_i, w_title, w_txt hand over""" + # img_w, img_i, w_title, w_txt hand over iw = r"/usr/share/icons/lx-icons/64/error.png" ii = r"/usr/share/icons/lx-icons/48/wg_msg.png" wt = _("Import Error") @@ -1175,10 +1281,10 @@ class FrameWidgets(ttk.Frame): select_tl = self.l_box.get(select_tunnel[0]) if self.selected_option.get() == 0: - with open(wg_set, "r") as set_file3: + with open(wg_set, "r", encoding="utf-8") as set_file3: lines3 = set_file3.readlines() lines3[7] = "off\n" - with open(wg_set, "w") as set_file3: + with open(wg_set, "w", encoding="utf-8") as set_file3: set_file3.writelines(lines3) tl = Tunnel.list() @@ -1187,10 +1293,10 @@ class FrameWidgets(ttk.Frame): self.wg_autostart.configure(state="disabled") if self.selected_option.get() >= 1: - with open(wg_set, "r") as set_file3: + with open(wg_set, "r", encoding="utf-8") as set_file3: lines3 = set_file3.readlines() lines3[7] = select_tl - with open(wg_set, "w") as set_file3: + with open(wg_set, "w", encoding="utf-8") as set_file3: set_file3.writelines(lines3) except IndexError: @@ -1204,7 +1310,7 @@ class FrameWidgets(ttk.Frame): Set (on), the selected tunnel is displayed in the label. At (off) the label is first emptied then filled with No Autoconnect """ - with open(wg_set, "r") as set_file4: + with open(wg_set, "r", encoding="utf-8") as set_file4: lines4 = set_file4.readlines() if lines4[7] != "off\n": @@ -1236,7 +1342,7 @@ class FrameWidgets(ttk.Frame): or empty it again """ - """ Address Label """ + # Address Label self.add = tk.StringVar() self.add.set(_("Address: ") + data[0]) self.DNS = tk.StringVar() @@ -1245,24 +1351,30 @@ class FrameWidgets(ttk.Frame): self.enp.set(_("Endpoint: ") + data[2]) def label_empty(self): + """ + empty labels + """ self.add.set("") self.DNS.set("") self.enp.set("") def show_data(self): - """Address Label""" + """ + shows data in the label + """ + # Address Label self.address = ttk.Label( self.lb_frame, textvariable=self.add, foreground="#0071ff" ) self.address.grid(column=0, row=5, sticky="w", padx=10, pady=6) self.address.config(font=("Ubuntu", 9)) - """ DNS Label """ + # DNS Label self.dns = ttk.Label(self.lb_frame, textvariable=self.DNS, foreground="#0071ff") self.dns.grid(column=0, row=7, sticky="w", padx=10, pady=6) self.dns.config(font=("Ubuntu", 9)) - """ Endpoint Label """ + # Endpoint Label self.endpoint = ttk.Label( self.lb_frame2, textvariable=self.enp, foreground="#0071ff" ) @@ -1270,7 +1382,9 @@ class FrameWidgets(ttk.Frame): self.endpoint.config(font=("Ubuntu", 9)) def stop(self): - """Stop Button""" + """ + Stop Button + """ self.btn_stst = ttk.Button( self.lb_frame_btn_lbox, image=self.wg_vpn_stop, @@ -1280,21 +1394,27 @@ class FrameWidgets(ttk.Frame): self.btn_stst.grid(column=0, row=0, padx=5, pady=8) def stop_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, _("Click to stop selected Wireguard Tunnel") ) def stop_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() self.btn_stst.bind("", stop_enter) self.btn_stst.bind("", stop_leave) def start(self): - """Start Button""" + """ + Start Button + """ self.btn_stst = ttk.Button( self.lb_frame_btn_lbox, image=self.wg_vpn_start, @@ -1304,18 +1424,24 @@ class FrameWidgets(ttk.Frame): self.btn_stst.grid(column=0, row=0, padx=5, pady=8) def empty_list_start_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, _("No tunnels to start in the list") ) def empty_list_start_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() def start_enter(event): - """The mouse moves into the entry widget""" + """ + The mouse moves into the entry widget + """ window.my_tool_tip = MyToolTip( event.x_root, event.y_root, @@ -1323,8 +1449,10 @@ class FrameWidgets(ttk.Frame): ) def start_leave(_): - """The mouse moves into the entry widget""" - """ Remove Tool-Tip """ + """ + The mouse moves into the entry widget + Remove Tool-Tip + """ window.my_tool_tip.destroy() tl = Tunnel.list() @@ -1336,9 +1464,11 @@ class FrameWidgets(ttk.Frame): self.btn_stst.bind("", start_leave) def color_label(self): - """View activ Tunnel in color green or yellow""" + """ + View activ Tunnel in color green or yellow + """ - with open(wg_set, "r") as read_file: + with open(wg_set, "r", encoding="utf-8") as read_file: lines = read_file.readlines() if "light\n" in lines: self.lb_tunnel = ttk.Label( @@ -1354,7 +1484,9 @@ class FrameWidgets(ttk.Frame): self.lb_tunnel.grid(column=2, padx=10, row=1) def wg_switch(self): - + """ + switch Tunnel method change from labels and buttons + """ self.a = Tunnel.active() try: if self.a == "": @@ -1364,14 +1496,14 @@ class FrameWidgets(ttk.Frame): select_tl = self.l_box.get(self.select_tunnel[0]) check_call(["nmcli", "connection", "up", select_tl]) wg_read = "/tmp/tlecdcwg/" + str(select_tl + ".conf") - with open(wg_read, "r") as file: + with open(wg_read, "r", encoding="utf-8") as file: data = Tunnel.con_to_dict(file) - """ Address Label """ + # Address Label self.init_and_report(data) self.show_data() - """ Button Start/Stop """ + # Button Start/Stop self.stop() self.a = Tunnel.active() self.StrVar = tk.StringVar() @@ -1380,17 +1512,17 @@ class FrameWidgets(ttk.Frame): elif self.a != "": - """Button Start/Stop""" + # Button Start/Stop self.stop() check_call(["nmcli", "connection", "down", self.a]) - """ Button Start/Stop """ + # Button Start/Stop self.start() self.a = Tunnel.active() self.StrVar.set("") self.color_label() - """ Address Label """ + # Address Label self.add.set("") self.DNS.set("") self.enp.set("") @@ -1400,7 +1532,7 @@ class FrameWidgets(ttk.Frame): if self.l_box.size() != 0: - """img_w, img_i, w_title, w_txt hand over""" + # img_w, img_i, w_title, w_txt hand over iw = r"/usr/share/icons/lx-icons/64/info.png" ii = r"/usr/share/icons/lx-icons/48/wg_msg.png" wt = _("Select tunnel") @@ -1409,7 +1541,7 @@ class FrameWidgets(ttk.Frame): else: - """img_w, img_i, w_title, w_txt hand over""" + # img_w, img_i, w_title, w_txt hand over iw = r"/usr/share/icons/lx-icons/64/info.png" ii = r"/usr/share/icons/lx-icons/48/wg_msg.png" wt = _("Select tunnel") @@ -1418,9 +1550,13 @@ class FrameWidgets(ttk.Frame): class MyToolTip(tk.Toplevel): + """ + Tooltip Class to view Tooltips + """ + TIP_X_OFFSET = 20 TIP_Y_OFFSET = 20 - if not wg_tips: + if not WG_TIPS: AUTO_CLEAR_TIME = 0 else: AUTO_CLEAR_TIME = 2000 # Millisecond. (1/200 sec.)