04-06-2025_large_update #35
							
								
								
									
										3
									
								
								.idea/workspace.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										3
									
								
								.idea/workspace.xml
									
									
									
										generated
									
									
									
								
							@@ -5,10 +5,7 @@
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="ChangeListManager">
 | 
			
		||||
    <list default="true" id="940e1630-c825-4d4c-be80-bc11f543c122" name="Changes" comment=" - Update Translate Files">
 | 
			
		||||
      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
 | 
			
		||||
      <change beforePath="$PROJECT_DIR$/cls_mth_fc.py" beforeDir="false" afterPath="$PROJECT_DIR$/cls_mth_fc.py" afterDir="false" />
 | 
			
		||||
      <change beforePath="$PROJECT_DIR$/ssl_decrypt.py" beforeDir="false" afterPath="$PROJECT_DIR$/ssl_decrypt.py" afterDir="false" />
 | 
			
		||||
      <change beforePath="$PROJECT_DIR$/ssl_encrypt.py" beforeDir="false" afterPath="$PROJECT_DIR$/ssl_encrypt.py" afterDir="false" />
 | 
			
		||||
      <change beforePath="$PROJECT_DIR$/wirepy.py" beforeDir="false" afterPath="$PROJECT_DIR$/wirepy.py" afterDir="false" />
 | 
			
		||||
    </list>
 | 
			
		||||
    <option name="SHOW_DIALOG" value="false" />
 | 
			
		||||
 
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -400,7 +400,7 @@ class Tunnel:
 | 
			
		||||
        return wg_s
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def export(img_w: str = None, img_i: str = None, img_w2: str = None, img_i2: str = None) -> None:
 | 
			
		||||
    def export(img_w: str = None, img_i: str = None, img_w2: str = None, img_i2: str = None, sl: str = None, pfit:str = None) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        This will export the tunnels.
 | 
			
		||||
        A zipfile with the current date and time is created
 | 
			
		||||
@@ -425,21 +425,17 @@ class Tunnel:
 | 
			
		||||
                with zipfile.ZipFile(f"{wg_tar}.zip", "r") as zf:
 | 
			
		||||
                    if len(zf.namelist()) != 0:
 | 
			
		||||
 | 
			
		||||
                        wt: str = _("Export Successful")
 | 
			
		||||
                        msg_t: str = _("Your zip file is in home directory")
 | 
			
		||||
                        LxTools.msg_window(img_w, img_i, wt, msg_t)
 | 
			
		||||
                        LxTools.msg_window(img_w, img_i, _("Export Successful"), msg_t)
 | 
			
		||||
 | 
			
		||||
                    else:
 | 
			
		||||
 | 
			
		||||
                        wt: str = _("Export error")
 | 
			
		||||
                        msg_t: str = _("Export failed! Please try again")
 | 
			
		||||
                        LxTools.msg_window(img_w2, img_i2, wt, msg_t)
 | 
			
		||||
                        LxTools.msg_window(img_w2, img_i2, _("Export error"), msg_t)
 | 
			
		||||
 | 
			
		||||
            else:
 | 
			
		||||
 | 
			
		||||
                wt: str = _("Select tunnel")
 | 
			
		||||
                msg_t: str = _("Please first import tunnel")
 | 
			
		||||
                LxTools.msg_window(img_w, img_i2, wt, msg_t)
 | 
			
		||||
                LxTools.msg_window(img_w, img_i2, sl, pfit)
 | 
			
		||||
 | 
			
		||||
        except TypeError:
 | 
			
		||||
            pass
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										94
									
								
								wirepy.py
									
									
									
									
									
								
							
							
						
						
									
										94
									
								
								wirepy.py
									
									
									
									
									
								
							@@ -25,18 +25,13 @@ tcl_path: Path = Path("/usr/share/TK-Themes")
 | 
			
		||||
set_file: Path = Path(Path.home() / ".config/wire_py/settings")
 | 
			
		||||
tips = LxTools.if_tip(set_file)
 | 
			
		||||
folder_path: Path = Path("/tmp/tlecdcwg/")
 | 
			
		||||
userfile = Path("/tmp/.log_user")
 | 
			
		||||
user_file = Path("/tmp/.log_user")
 | 
			
		||||
 | 
			
		||||
# 1 = 1. Year, 09 = Month of the Year, 2924 = Day and Year of the Year
 | 
			
		||||
VERSION: str = "v. 2.04.1725"
 | 
			
		||||
 | 
			
		||||
res = GiteaUpdate.api_down("https://git.ilunix.de/api/v1/repos/punix/Wire-Py/releases", VERSION, set_file)
 | 
			
		||||
 | 
			
		||||
img_w: str = r"/usr/share/icons/lx-icons/64/info.png"
 | 
			
		||||
img_i: str = r"/usr/share/icons/lx-icons/48/wg_vpn.png"
 | 
			
		||||
img_w2: str = r"/usr/share/icons/lx-icons/64/error.png"
 | 
			
		||||
img_i2: str = r"/usr/share/icons/lx-icons/48/wg_msg.png"
 | 
			
		||||
 | 
			
		||||
# Translate
 | 
			
		||||
APP = "wirepy"
 | 
			
		||||
LOCALE_DIR = "/usr/share/locale/"
 | 
			
		||||
@@ -45,12 +40,21 @@ gettext.bindtextdomain(APP, LOCALE_DIR)
 | 
			
		||||
gettext.textdomain(APP)
 | 
			
		||||
_ = gettext.gettext
 | 
			
		||||
 | 
			
		||||
LxTools.sigi(folder_path, userfile)
 | 
			
		||||
img_w: str = r"/usr/share/icons/lx-icons/64/info.png"
 | 
			
		||||
img_i: str = r"/usr/share/icons/lx-icons/48/wg_vpn.png"
 | 
			
		||||
img_w2: str = r"/usr/share/icons/lx-icons/64/error.png"
 | 
			
		||||
img_i2: str = r"/usr/share/icons/lx-icons/48/wg_msg.png"
 | 
			
		||||
sl: str = _("Select tunnel")
 | 
			
		||||
rnp: str = _("Renaming not possible")
 | 
			
		||||
ie:str = _("Import Error")
 | 
			
		||||
pfit: str = _("Please first import tunnel")
 | 
			
		||||
pstl: str = _("Please select a tunnel from the list")
 | 
			
		||||
 | 
			
		||||
LxTools.sigi(folder_path, user_file)
 | 
			
		||||
 | 
			
		||||
class Wirepy(tk.Tk):
 | 
			
		||||
    """
 | 
			
		||||
    Class Wirepy this is Main Window of wirepy
 | 
			
		||||
    Class Wirepy this is the Main Window of wirepy
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def __init__(self, *args, **kwargs):
 | 
			
		||||
@@ -76,7 +80,7 @@ class Wirepy(tk.Tk):
 | 
			
		||||
            else:
 | 
			
		||||
                self.tk.call("set_theme", "dark")
 | 
			
		||||
 | 
			
		||||
        # Load the image file from disk
 | 
			
		||||
        # Load the image file from the disk
 | 
			
		||||
        self.wg_icon = tk.PhotoImage(file=r"/usr/share/icons/lx-icons/48/wg_vpn.png")
 | 
			
		||||
 | 
			
		||||
        # Set it as the window icon
 | 
			
		||||
@@ -126,7 +130,7 @@ class FrameWidgets(ttk.Frame):
 | 
			
		||||
 | 
			
		||||
        def theme_change_light():
 | 
			
		||||
            """
 | 
			
		||||
            Set light theme
 | 
			
		||||
            Set a light theme
 | 
			
		||||
            """
 | 
			
		||||
            if self.tk.call("ttk::style", "theme", "use") == "water-dark":
 | 
			
		||||
                self.tk.call("set_theme", "light")
 | 
			
		||||
@@ -139,7 +143,7 @@ class FrameWidgets(ttk.Frame):
 | 
			
		||||
 | 
			
		||||
        def theme_change_dark():
 | 
			
		||||
            """
 | 
			
		||||
            Set dark theme
 | 
			
		||||
            Set a dark theme
 | 
			
		||||
            """
 | 
			
		||||
            if not self.tk.call("ttk::style", "theme", "use") == "water-dark":
 | 
			
		||||
                self.tk.call("set_theme", "dark")
 | 
			
		||||
@@ -152,7 +156,7 @@ class FrameWidgets(ttk.Frame):
 | 
			
		||||
 | 
			
		||||
        def tooltip():
 | 
			
		||||
            """
 | 
			
		||||
            Set True or False in file
 | 
			
		||||
            Set True or False in a file
 | 
			
		||||
            """
 | 
			
		||||
            if set_tip.get():
 | 
			
		||||
                with open(set_file, "r", encoding="utf-8") as set_f2:
 | 
			
		||||
@@ -172,15 +176,12 @@ class FrameWidgets(ttk.Frame):
 | 
			
		||||
            def link_btn():
 | 
			
		||||
                webbrowser.open("https://git.ilunix.de/punix/Wire-Py")
 | 
			
		||||
 | 
			
		||||
            wt = _("Info")
 | 
			
		||||
            msg_t = _("Wire-Py a simple Wireguard Gui for Linux systems.\n\n"
 | 
			
		||||
                    "Wire-Py is open source software written in Python.\n\n"
 | 
			
		||||
                    "Email: polunga40@unity-mail.de also likes for donation.\n\n"
 | 
			
		||||
                    "Use without warranty!\n")
 | 
			
		||||
            txt2 = _("Go to Wire-Py git")
 | 
			
		||||
            com = link_btn
 | 
			
		||||
 | 
			
		||||
            LxTools.msg_window(img_i, img_i, wt, msg_t, txt2, com)
 | 
			
		||||
            LxTools.msg_window(img_i, img_i, _("Info"), msg_t, _("Go to Wire-Py git"), link_btn)
 | 
			
		||||
 | 
			
		||||
        # Frame for Menu
 | 
			
		||||
        self.menu_frame = ttk.Frame(self)
 | 
			
		||||
@@ -219,7 +220,7 @@ class FrameWidgets(ttk.Frame):
 | 
			
		||||
        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
 | 
			
		||||
        # View Checkbox to enable or disable Tooltip
 | 
			
		||||
        if tips:
 | 
			
		||||
            set_tip.set(value=False)
 | 
			
		||||
        else:
 | 
			
		||||
@@ -254,7 +255,8 @@ class FrameWidgets(ttk.Frame):
 | 
			
		||||
            self.update_btn.configure(menu=self.download, style="Toolbutton")
 | 
			
		||||
            self.download.add_command(
 | 
			
		||||
                label=_("Download"),
 | 
			
		||||
                command=lambda: GiteaUpdate.download(f"https://git.ilunix.de/punix/Wire-Py/archive/{res}.zip", res, img_w, img_i, img_w2, img_i2))
 | 
			
		||||
                command=lambda: GiteaUpdate.download(f"https://git.ilunix.de/punix/Wire-Py/archive/{res}.zip", 
 | 
			
		||||
                                                    res, img_w, img_i, img_w2, img_i2))
 | 
			
		||||
 | 
			
		||||
        # Show active Tunnel
 | 
			
		||||
        self.a = Tunnel.active()
 | 
			
		||||
@@ -394,7 +396,7 @@ class FrameWidgets(ttk.Frame):
 | 
			
		||||
                file_one.replace(file_two)
 | 
			
		||||
                self.wg_autostart.configure(state="disabled")
 | 
			
		||||
 | 
			
		||||
                # for disable checkbox when Listbox empty
 | 
			
		||||
                # for disabling checkbox when Listbox empty
 | 
			
		||||
                if self.l_box.size() == 0:
 | 
			
		||||
                    self.wg_autostart.configure(state="disabled")
 | 
			
		||||
                    self.lb_rename.configure(state="disabled")
 | 
			
		||||
@@ -420,15 +422,11 @@ class FrameWidgets(ttk.Frame):
 | 
			
		||||
 | 
			
		||||
                if self.l_box.size() != 0:
 | 
			
		||||
 | 
			
		||||
                    wt = _("Select tunnel")
 | 
			
		||||
                    msg_t = _("Please select a tunnel from the list")
 | 
			
		||||
                    LxTools.msg_window(img_w, img_i2, wt, msg_t)
 | 
			
		||||
                    LxTools.msg_window(img_w, img_i2, sl, pstl)
 | 
			
		||||
 | 
			
		||||
                else:
 | 
			
		||||
 | 
			
		||||
                    wt = _("Select tunnel")
 | 
			
		||||
                    msg_t = _("Please first import tunnel")
 | 
			
		||||
                    LxTools.msg_window(img_w, img_i2, wt, msg_t)
 | 
			
		||||
                    LxTools.msg_window(img_w, img_i2, sl, pfit)
 | 
			
		||||
 | 
			
		||||
        # Button Trash
 | 
			
		||||
        self.btn_tr = ttk.Button(self.lb_frame_btn_lbox, image=self.tr_pic, command=delete, padding=0,
 | 
			
		||||
@@ -441,7 +439,8 @@ class FrameWidgets(ttk.Frame):
 | 
			
		||||
            Tooltip(self.btn_tr, _("Click to delete a Wireguard Tunnel\nSelect from the list!"), tips)
 | 
			
		||||
 | 
			
		||||
        # Button Export
 | 
			
		||||
        self.btn_exp = ttk.Button(self.lb_frame_btn_lbox, image=self.exp_pic, command=lambda: Tunnel.export(img_w, img_i, img_w2, img_i2), padding=0)
 | 
			
		||||
        self.btn_exp = ttk.Button(self.lb_frame_btn_lbox, image=self.exp_pic,
 | 
			
		||||
                                  command=lambda: Tunnel.export(img_w, img_i, img_w2, img_i2, sl, pfit), padding=0)
 | 
			
		||||
        self.btn_exp.grid(column=0, row=3, padx=15, pady=8)
 | 
			
		||||
 | 
			
		||||
        if self.l_box.size() == 0:
 | 
			
		||||
@@ -466,21 +465,16 @@ class FrameWidgets(ttk.Frame):
 | 
			
		||||
 | 
			
		||||
            if len(self.lb_rename.get()) > 12:
 | 
			
		||||
 | 
			
		||||
                wt = _("Renaming not possible")
 | 
			
		||||
                msg_t = _("The new name may contain only 12 characters")
 | 
			
		||||
                LxTools.msg_window(img_w, img_i2, wt, msg_t)
 | 
			
		||||
                LxTools.msg_window(img_w, img_i2, rnp, _("The new name may contain only 12 characters"))
 | 
			
		||||
 | 
			
		||||
            elif len(self.lb_rename.get()) == 0:
 | 
			
		||||
 | 
			
		||||
                wt = _("Renaming not possible")
 | 
			
		||||
                msg_t = _("At least one character must be entered")
 | 
			
		||||
                LxTools.msg_window(img_w, img_i2, wt, msg_t)
 | 
			
		||||
                LxTools.msg_window(img_w, img_i2, rnp, _("At least one character must be entered"))
 | 
			
		||||
 | 
			
		||||
            elif any(ch in special_characters for ch in self.lb_rename.get()):
 | 
			
		||||
 | 
			
		||||
                wt = _("Renaming not possible")
 | 
			
		||||
                msg_t = _("No valid sign. These must not be used.\nBlank, Slash, Backslash and { }\n")
 | 
			
		||||
                LxTools.msg_window(img_w, img_i2, wt, msg_t)
 | 
			
		||||
                LxTools.msg_window(img_w, img_i2, rnp, msg_t)
 | 
			
		||||
 | 
			
		||||
            else:
 | 
			
		||||
 | 
			
		||||
@@ -515,9 +509,7 @@ class FrameWidgets(ttk.Frame):
 | 
			
		||||
 | 
			
		||||
                except IndexError:
 | 
			
		||||
 | 
			
		||||
                    wt = _("Renaming not possible")
 | 
			
		||||
                    msg_t = _("Please select a tunnel from the list")
 | 
			
		||||
                    LxTools.msg_window(img_w, img_i2, wt, msg_t)
 | 
			
		||||
                    LxTools.msg_window(img_w, img_i2, rnp, pstl)
 | 
			
		||||
 | 
			
		||||
        # Button Rename
 | 
			
		||||
        self.btn_rename = ttk.Button(self.lb_frame4, text=_("Rename"), state="disable", command=tl_rename, padding=4,
 | 
			
		||||
@@ -553,12 +545,12 @@ class FrameWidgets(ttk.Frame):
 | 
			
		||||
        """
 | 
			
		||||
        Import Methode for Wireguard config Files.
 | 
			
		||||
        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
 | 
			
		||||
        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 arising.
 | 
			
		||||
        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
 | 
			
		||||
        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.
 | 
			
		||||
@@ -585,9 +577,8 @@ class FrameWidgets(ttk.Frame):
 | 
			
		||||
                            p_key = readfile.readlines()
 | 
			
		||||
                            if pre_key in p_key or f"{pre_key}\n" in p_key:
 | 
			
		||||
 | 
			
		||||
                                wt = _("Import Error")
 | 
			
		||||
                                msg_t = _("Tunnel already available!\nPlease use another file for import")
 | 
			
		||||
                                LxTools.msg_window(img_w2, img_i2, wt, msg_t)
 | 
			
		||||
                                LxTools.msg_window(img_w2, img_i2, ie, msg_t)
 | 
			
		||||
 | 
			
		||||
                            else:
 | 
			
		||||
 | 
			
		||||
@@ -658,9 +649,8 @@ class FrameWidgets(ttk.Frame):
 | 
			
		||||
                pass
 | 
			
		||||
            else:
 | 
			
		||||
 | 
			
		||||
                wt = _("Import Error")
 | 
			
		||||
                msg_t = _("Oh... no valid Wireguard File!\nPlease select a valid Wireguard File")
 | 
			
		||||
                LxTools.msg_window(img_w2, img_i2, wt, msg_t)
 | 
			
		||||
                LxTools.msg_window(img_w2, img_i2, ie, msg_t)
 | 
			
		||||
 | 
			
		||||
        except EOFError as e:
 | 
			
		||||
            print(e)
 | 
			
		||||
@@ -707,7 +697,7 @@ class FrameWidgets(ttk.Frame):
 | 
			
		||||
 | 
			
		||||
    def on_off(self):
 | 
			
		||||
        """
 | 
			
		||||
        Here it is checked whether the path to the file is there if not it is created.
 | 
			
		||||
        Here it is checked whether the path to the file is there, if not, it is created.
 | 
			
		||||
        Set (on), the selected tunnel is displayed in the label.
 | 
			
		||||
        At (off) the label is first emptied then filled with No Autoconnect
 | 
			
		||||
        """
 | 
			
		||||
@@ -798,7 +788,7 @@ class FrameWidgets(ttk.Frame):
 | 
			
		||||
 | 
			
		||||
    def color_label(self):
 | 
			
		||||
        """
 | 
			
		||||
        View activ Tunnel in color green or yellow
 | 
			
		||||
        View activ Tunnel in the color green or yellow
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        with open(set_file, "r", encoding="utf-8") as read_file:
 | 
			
		||||
@@ -861,15 +851,11 @@ class FrameWidgets(ttk.Frame):
 | 
			
		||||
 | 
			
		||||
            if self.l_box.size() != 0:
 | 
			
		||||
 | 
			
		||||
                wt = _("Select tunnel")
 | 
			
		||||
                msg_t = _("Please select a tunnel from the list")
 | 
			
		||||
                LxTools.msg_window(img_w, img_i2, wt, msg_t)
 | 
			
		||||
                LxTools.msg_window(img_w, img_i2, sl, pstl)
 | 
			
		||||
 | 
			
		||||
            else:
 | 
			
		||||
 | 
			
		||||
                wt = _("Select tunnel")
 | 
			
		||||
                msg_t = _("Please first import tunnel")
 | 
			
		||||
                LxTools.msg_window(img_w, img_i2, wt, msg_t)
 | 
			
		||||
                LxTools.msg_window(img_w, img_i2, sl, pfit)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
@@ -885,5 +871,5 @@ if __name__ == "__main__":
 | 
			
		||||
    window.tk.call("set", "::tk::dialog::file::showHiddenVar", "0")
 | 
			
		||||
    window.mainloop()
 | 
			
		||||
 | 
			
		||||
LxTools.clean_files(folder_path, userfile)
 | 
			
		||||
LxTools.clean_files(folder_path, user_file)
 | 
			
		||||
sys.exit(0)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user