diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 5c5afba..f44537c 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -9,7 +9,6 @@
-
@@ -34,8 +33,7 @@
-
-
+
{
"associatedIndex": 3
@@ -48,28 +46,28 @@
- {
+ "keyToString": {
+ "ASKED_ADD_EXTERNAL_FILES": "true",
+ "Python.INSTALL.executor": "Run",
+ "Python.cls_mth_fc.executor": "Run",
+ "Python.install.executor": "Run",
+ "Python.main.executor": "Run",
+ "Python.messagebox.executor": "Run",
+ "Python.start_wg.executor": "Run",
+ "Python.testtheme.executor": "Run",
+ "Python.wg_func.executor": "Run",
+ "Python.wg_main.executor": "Run",
+ "Python.wirepy.executor": "Run",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "RunOnceActivity.git.unshallow": "true",
+ "Shell Script.install.executor": "Run",
+ "Shell Script.run_as.executor": "Run",
+ "git-widget-placeholder": "21-04-2025-new-tooltip",
+ "last_opened_file_path": "/home/punix/Pyapps/wire-py",
+ "settings.editor.selected.configurable": "ml.llm.LLMConfigurable"
}
-}]]>
+}
@@ -630,6 +628,11 @@
1128
+
+ file://$PROJECT_DIR$/ssl_decrypt.py
+ 3
+
+
diff --git a/__pycache__/cls_mth_fc.cpython-312.pyc b/__pycache__/cls_mth_fc.cpython-312.pyc
index 0321542..4879fc8 100644
Binary files a/__pycache__/cls_mth_fc.cpython-312.pyc and b/__pycache__/cls_mth_fc.cpython-312.pyc differ
diff --git a/cls_mth_fc.py b/cls_mth_fc.py
index ec49e7b..1e51c2e 100755
--- a/cls_mth_fc.py
+++ b/cls_mth_fc.py
@@ -8,11 +8,12 @@ import signal
import subprocess
import sys
import tkinter as tk
+from typing import Optional, Dict, Any, NoReturn, TextIO, Tuple, List
import zipfile
from datetime import datetime
from pathlib import Path
-from subprocess import check_call
-from tkinter import ttk
+from subprocess import check_call, CompletedProcess
+from tkinter import ttk, Toplevel
import requests
@@ -32,15 +33,15 @@ class Create:
"""
@staticmethod
- def dir_and_files():
+ def dir_and_files() -> None:
"""
check and create folders and files if not present
"""
- pth = Path.home() / ".config/wire_py"
+ pth: Path = Path.home() / ".config/wire_py"
pth.mkdir(parents=True, exist_ok=True)
- sett = Path.home() / ".config/wire_py/settings"
- ks = Path.home() / ".config/wire_py/keys"
+ sett: Path = Path.home() / ".config/wire_py/settings"
+ ks: Path = Path.home() / ".config/wire_py/keys"
if sett.exists():
pass
@@ -56,14 +57,14 @@ class Create:
ks.touch()
@staticmethod
- def files_for_autostart():
+ def files_for_autostart() -> None:
"""
- check and create file for auto start if not present and enable the service
+ check and create a file for auto start if not present and enable the service
"""
- pth2 = Path.home() / ".config/systemd/user"
+ pth2: Path = Path.home() / ".config/systemd/user"
pth2.mkdir(parents=True, exist_ok=True)
- wg_ser = Path.home() / ".config/systemd/user/wg_start.service"
+ wg_ser: Path = Path.home() / ".config/systemd/user/wg_start.service"
if wg_ser.exists():
pass
@@ -76,24 +77,24 @@ class Create:
check_call(["systemctl", "--user", "enable", "wg_start.service"])
@staticmethod
- def make_dir():
- """Dirname "tlecdewg" = Tunnel Encrypt Decrypt Wireguard"""
+ def make_dir() -> None:
+ """Folder Name "tlecdewg" = Tunnel Encrypt Decrypt Wireguard"""
- dirname = Path("/tmp/tlecdcwg/")
- if dirname.exists():
+ folder_path: Path = Path("/tmp/tlecdcwg/")
+ if folder_path.exists():
pass
else:
- dirname.mkdir()
+ folder_path.mkdir()
@staticmethod
- def decrypt():
+ def decrypt() -> None:
"""
- This start ssl_decrypt file
+ Starts SSL dencrypt
"""
- process = subprocess.run(["pkexec", "/usr/local/bin/ssl_decrypt.py"], stdout=subprocess.PIPE, text=True,
- check=True)
- path = Path.home() / ".config/wire_py/"
- file_in_path = list(path.rglob("*.dat"))
+ process: CompletedProcess[str] = subprocess.run(["pkexec", "/usr/local/bin/ssl_decrypt.py"],
+ stdout=subprocess.PIPE, text=True, check=True)
+ path: Path = Path.home() / ".config/wire_py/"
+ file_in_path: list[Path] = list(path.rglob("*.dat"))
if file_in_path:
if process.returncode == 0:
print("File successfully decrypted...")
@@ -103,12 +104,12 @@ class Create:
print(_("Ready for import"))
@staticmethod
- def encrypt():
+ def encrypt() -> None:
"""
- this start ssl_encrypt file
+ Starts SSL encryption
"""
- process = subprocess.run(["pkexec", "/usr/local/bin/ssl_encrypt.py"], stdout=subprocess.PIPE, text=True,
- check=True)
+ process: CompletedProcess[str] = subprocess.run(["pkexec", "/usr/local/bin/ssl_encrypt.py"],
+ stdout=subprocess.PIPE, text=True, check=True)
print(process.stdout)
if process.returncode == 0:
print("All Files successfully encrypted...")
@@ -121,38 +122,37 @@ class LxTools(tk.Tk):
Class LinuxTools methods that can also be used for other apps
"""
- def __init__(self, *args, **kwargs):
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
super().__init__(*args, **kwargs)
@staticmethod
- def uos():
+ def uos() -> None:
"""
-
uos = LOGIN USERNAME
- This method displays the user name of the logged-in user,
+ This method displays the username of the logged-in user,
even if you are rooted in a shell
"""
- logname = f"{Path.home()}"[6:]
- file = Path.home() / "/tmp/.loguser"
+ log_name: str = f"{Path.home()}"[6:]
+ file: Path = Path.home() / "/tmp/.log_user"
with open(file, "w", encoding="utf-8") as f:
- f.write(logname)
+ f.write(log_name)
@staticmethod
- def clean_files(dirname=None, file=None):
+ def clean_files(folder_path: Path = None, file: Path = None) -> None:
"""
method that can be added after need to delete a folder and a file when quitting.
Args:
- dirname (_folder_, optional): _path to folder_. Defaults to None.
- file (_file_, optional): _path to file_. Defaults to None.
+ :param file: default None
+ :param folder_path: default None
"""
- if dirname is not None:
- shutil.rmtree(dirname)
+ if folder_path is not None:
+ shutil.rmtree(folder_path)
if file is not None:
Path.unlink(file)
@staticmethod
- def if_tip(path):
+ def if_tip(path: Path) -> bool:
"""
method that writes in file whether tooltip is displayed or not
"""
@@ -165,83 +165,93 @@ class LxTools(tk.Tk):
return tip
@staticmethod
- def msg_window(img_w, img_i, w_title, w_txt, txt2=None, com=None):
+ def msg_window(img_w: str, img_i: str, w_title: str, w_txt: str, txt2: Optional[str] = None,
+ com: Optional[str] = None) -> None:
"""
- Method for different message windows for the user. with 4 arguments to be passed.
- To create messages with your own images, icons, and titles.
- As an alternative to Python Messagebox.
- Paths to images must be specified: r'/usr/share/icons/lx-icons/64/info.png'
- img_w = Image for Tk Window
- img_i = Image for Icon
- w_title = Windows Title
- w_txt = Text for Tk Window
- txt2 = Text for Button two
- com = function for Button command
+ Creates message windows
+
+ :argument img_w = Image for Tk Window
+ :argument img_i = Image for Icon
+ :argument w_title = Windows Title
+ :argument w_txt = Text for Tk Window
+ :argument txt2 = Text for Button two
+ :argument com = function for Button command
"""
- msg = tk.Toplevel()
+ msg: tk.Toplevel = tk.Toplevel()
msg.resizable(width=False, height=False)
msg.title(w_title)
msg.configure(pady=15, padx=15)
msg.img = tk.PhotoImage(file=img_w)
msg.i_window = tk.Label(msg, image=msg.img)
- label = tk.Label(msg, text=w_txt)
+ label: tk.Label = tk.Label(msg, text=w_txt)
label.grid(column=1, row=0)
if txt2 is not None and com is not None:
label.config(font=("Ubuntu", 11), padx=15, justify="left")
msg.i_window.grid(column=0, row=0, sticky="nw")
- button2 = ttk.Button(msg, text=f"{txt2}", command=com, padding=4)
+ button2: ttk.Button = ttk.Button(msg, text=f"{txt2}", command=com, padding=4)
button2.grid(column=0, row=1, sticky="e", columnspan=2)
- button = ttk.Button(msg, text="OK", command=msg.destroy, padding=4)
+ button: ttk.Button = ttk.Button(msg, text="OK", command=msg.destroy, padding=4)
button.grid(column=0, row=1, sticky="w", columnspan=2)
else:
label.config(font=("Ubuntu", 11), padx=15)
msg.i_window.grid(column=0, row=0)
- button = ttk.Button(msg, text="OK", command=msg.destroy, padding=4)
+ button: ttk.Button = ttk.Button(msg, text="OK", command=msg.destroy, padding=4)
button.grid(column=0, columnspan=2, row=1)
- img_i = tk.PhotoImage(file=img_i)
+ img_i: tk.PhotoImage = tk.PhotoImage(file=img_i)
msg.iconphoto(True, img_i)
msg.columnconfigure(0, weight=1)
msg.rowconfigure(0, weight=1)
msg.winfo_toplevel()
@staticmethod
- def sigi(dirname=None, file=None):
+ def sigi(file_path: Optional[Path] = None, file: Optional[Path] = None) -> None:
"""
- function for clean up after break
+ Function for cleanup after a program interruption
+
+ :param file: Optional - File to be deleted
+ :param file_path: Optional - Directory to be deleted
"""
- def signal_handler(signum, frame):
+ def signal_handler(signum: int, frame: Any) -> NoReturn:
"""
- Determine clear text names for signal numbers
+ Determines clear text names for signal numbers and handles signals
+
+ Args:
+ signum: The signal number
+ frame: The current stack frame
+
+ Returns:
+ NoReturn since the function either exits the program or continues execution
"""
- 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, f"Unnamed signal: {signum}")
+
+ signals_to_names_dict: Dict[int, str] = dict((getattr(signal, n), n) for n in dir(signal)
+ if n.startswith("SIG") and "_" not in n)
+
+ signal_name: str = signals_to_names_dict.get(signum, f"Unnamed signal: {signum}")
# End program for certain signals, report to others only reception
if signum in (signal.SIGINT, signal.SIGTERM):
- exit_code = 1
- print(f"\nSignal {signame} {(signum)} received. => Aborting with exit code {exit_code}.")
- LxTools.clean_files(dirname, file)
+ exit_code: int = 1
+ print(f"\nSignal {signal_name} {signum} received. => Aborting with exit code {exit_code}.")
+ LxTools.clean_files(file_path, file)
print("Breakdown by user...")
sys.exit(exit_code)
else:
print(f"Signal {signum} received and ignored.")
- LxTools.clean_files(dirname, file)
+ LxTools.clean_files(file_path, file)
print("Process unexpectedly ended...")
+ # Register signal handlers for various signals
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
signal.signal(signal.SIGHUP, signal_handler)
+
class GiteaUpdate:
"""
Calling download requests the download URL of the running script,
@@ -250,63 +260,76 @@ class GiteaUpdate:
"""
@staticmethod
- def api_down(update_api_url, version, file=None):
+ def api_down(update_api_url: str, version: str, file: Optional[Path] = None) -> str:
"""
- Calling api_down requests the URL and the version of the running script.
- Example: version = 'v. 1.1.1.1' GiteaUpdate.api_down(http://example.de, version)
+ Checks for updates via API
+
+ Args:
+ update_api_url: Update API URL
+ version: Current version
+ file: Optional - Configuration file
+
+ Returns:
+ New version or status message
"""
try:
- response = requests.get(update_api_url, timeout=10)
- response_dict = response.json()
- response_dict = response_dict[0]
+ response: requests.Response = requests.get(update_api_url, timeout=10)
+ response_dict: Any = response.json()
+ response_dict: Dict[str, Any] = response_dict[0]
with open(file, "r", encoding="utf-8") as set_f:
set_f = set_f.read()
if "on\n" in set_f:
if version[3:] != response_dict["tag_name"]:
- req = response_dict["tag_name"]
+ req: str = response_dict["tag_name"]
else:
- req = "No Updates"
+ req: str = "No Updates"
else:
- req = "False"
+ req: str = "False"
return req
except requests.exceptions.RequestException:
- req = "No Internet Connection!"
+ req: str = "No Internet Connection!"
return req
@staticmethod
- def download(urld, down_ok_image, down_not_ok_image, res):
+ def download(urld: str, down_ok_image: str, down_not_ok_image: str, res: str) -> None:
"""
- this is for download new Version of wirepy
+ Downloads new version of wirepy
+
+ Args:
+ urld: Download URL
+ down_ok_image: Path to success image
+ down_not_ok_image: Path to error image
+ res: Result filename
"""
try:
- to_down = f"wget -qP {Path.home()} {" "} {urld}"
- result = subprocess.call(to_down, shell=True)
+ to_down: str = f"wget -qP {Path.home()} {" "} {urld}"
+ result: int = subprocess.call(to_down, shell=True)
if result == 0:
shutil.chown(f"{Path.home()}/{res}.zip", 1000, 1000)
- # img_w, img_i, w_title, w_txt hand over
- iw = r"/usr/share/icons/lx-icons/64/info.png"
- ii = down_ok_image
- wt = _("Download Successful")
- msg_t = _("Your zip file is in home directory")
+ # Message window variables
+ iw: str = r"/usr/share/icons/lx-icons/64/info.png"
+ ii: str = down_ok_image
+ wt: str = _("Download Successful")
+ msg_t: str = _("Your zip file is in home directory")
LxTools.msg_window(iw, ii, wt, msg_t)
else:
- # img_w, img_i, w_title, w_txt hand over
- iw = r"/usr/share/icons/lx-icons/64/error.png"
- ii = down_not_ok_image
- wt = _("Download error")
- msg_t = _("Download failed! Please try again")
+ # Error message window variables
+ iw: str = r"/usr/share/icons/lx-icons/64/error.png"
+ ii: str = down_not_ok_image
+ wt: str = _("Download error")
+ msg_t: str = _("Download failed! Please try again")
LxTools.msg_window(iw, ii, wt, msg_t)
except subprocess.CalledProcessError:
- # img_w, img_i, w_title, w_txt hand over
- iw = r"/usr/share/icons/lx-icons/64/error.png"
- ii = down_not_ok_image
- wt = _("Download error")
- msg_t = _("Download failed! No internet connection!")
+ # Exception message window variables
+ iw: str = r"/usr/share/icons/lx-icons/64/error.png"
+ ii: str = down_not_ok_image
+ wt: str = _("Download error")
+ msg_t: str = _("Download failed! No internet connection!")
LxTools.msg_window(iw, ii, wt, msg_t)
@@ -316,15 +339,14 @@ class Tunnel:
"""
@classmethod
- def con_to_dict(cls, file):
+ def con_to_dict(cls, file: TextIO) -> Tuple[str, str, str, Optional[str]]:
"""
- The config file is packed into a dictionary,
- to display the values Address , DNS and Peer in the labels
+ Returns tuple of (address, dns, endpoint, pre_key)
"""
- dictlist = []
+ dictlist: List[str] = []
for lines in file.readlines():
- line_plit = lines.split()
+ line_plit: List[str] = lines.split()
dictlist = dictlist + line_plit
dictlist.remove("[Interface]")
dictlist.remove("[Peer]")
@@ -336,33 +358,33 @@ class Tunnel:
# Here is the beginning (Loop) of convert List to Dictionary
for _ in dictlist:
- a = [dictlist[0], dictlist[1]]
- b = [dictlist[2], dictlist[3]]
- c = [dictlist[4], dictlist[5]]
- d = [dictlist[6], dictlist[7]]
- e = [dictlist[8], dictlist[9]]
- f = [dictlist[10], dictlist[11]]
- g = [dictlist[12], dictlist[13]]
- h = [dictlist[14], dictlist[15]]
- new_list = [a, b, c, d, e, f, g, h]
- final_dict = {}
+ a: List[str] = [dictlist[0], dictlist[1]]
+ b: List[str] = [dictlist[2], dictlist[3]]
+ c: List[str] = [dictlist[4], dictlist[5]]
+ d: List[str] = [dictlist[6], dictlist[7]]
+ e: List[str] = [dictlist[8], dictlist[9]]
+ f: List[str] = [dictlist[10], dictlist[11]]
+ g: List[str] = [dictlist[12], dictlist[13]]
+ h: List[str] = [dictlist[14], dictlist[15]]
+ new_list: List[List[str]] = [a, b, c, d, e, f, g, h]
+ final_dict: Dict[str, str] = {}
for elements in new_list:
final_dict[elements[0]] = elements[1]
# end... result a Dictionary
- address = final_dict["Address"]
- dns = final_dict["DNS"]
+ address: str = final_dict["Address"]
+ dns: str = final_dict["DNS"]
if "," in dns:
dns = dns[:-1]
- endpoint = final_dict["Endpoint"]
- pre_key = final_dict.get("PresharedKey")
+ endpoint: str = final_dict["Endpoint"]
+ pre_key: Optional[str] = final_dict.get("PresharedKey")
if pre_key is None:
- pre_key = final_dict.get("PreSharedKey")
+ pre_key: Optional[str] = final_dict.get("PreSharedKey")
return address, dns, endpoint, pre_key
@staticmethod
- def active():
+ def active() -> str:
"""
Shows the Active Tunnel
"""
@@ -375,59 +397,59 @@ class Tunnel:
return active
@staticmethod
- def list():
+ def list() -> List[str]:
"""
- Shows all existing Wireguard tunnels a login user
+ Returns a list of Wireguard tunnel names
"""
- dirname = Path("/tmp/tlecdcwg/")
- wg_s = os.listdir(dirname)
+ folder_path: Path = Path("/tmp/tlecdcwg/")
+ wg_s: List[str] = os.listdir(folder_path)
return wg_s
@staticmethod
- def export():
+ def export() -> None:
"""
This will export the tunnels.
- A zipfile with current date and time is created
- in the user's home directory with correct right
+ A zipfile with the current date and time is created
+ in the user's home directory with the correct right
"""
- now_time = datetime.now()
- now_datetime = now_time.strftime("wg-exp-%m-%d-%Y-%H:%M")
- tl = Tunnel.list()
+ now_time: datetime = datetime.now()
+ now_datetime: str = now_time.strftime("wg-exp-%m-%d-%Y-%H:%M")
+ tl: List[str] = Tunnel.list()
try:
if len(tl) != 0:
- wg_tar = f"{Path.home()}/{now_datetime}"
+ wg_tar: str = f"{Path.home()}/{now_datetime}"
shutil.copytree("/tmp/tlecdcwg/", "/tmp/wire_py", dirs_exist_ok=True)
- source = Path("/tmp/wire_py")
+ source: Path = Path("/tmp/wire_py")
shutil.make_archive(wg_tar, "zip", source)
shutil.rmtree(source)
with zipfile.ZipFile(f"{wg_tar}.zip", "r") as zf:
if len(zf.namelist()) != 0:
- # 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_vpn.png"
- wt = _("Export Successful")
- msg_t = _("Your zip file is in home directory")
+ # Message window variables
+ iw: str = r"/usr/share/icons/lx-icons/64/info.png"
+ ii: str = r"/usr/share/icons/lx-icons/48/wg_vpn.png"
+ wt: str = _("Export Successful")
+ msg_t: str = _("Your zip file is in home directory")
LxTools.msg_window(iw, ii, wt, msg_t)
else:
- # 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 = _("Export error")
- msg_t = _("Export failed! Please try again")
+ # Error message window variables
+ iw: str = r"/usr/share/icons/lx-icons/64/error.png"
+ ii: str = r"/usr/share/icons/lx-icons/48/wg_msg.png"
+ wt: str = _("Export error")
+ msg_t: str = _("Export failed! Please try again")
LxTools.msg_window(iw, ii, wt, msg_t)
else:
- # 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")
+ # Message window variables
+ iw: str = r"/usr/share/icons/lx-icons/64/info.png"
+ ii: str = r"/usr/share/icons/lx-icons/48/wg_msg.png"
+ wt: str = _("Select tunnel")
+ msg_t: str = _("Please first import tunnel")
LxTools.msg_window(iw, ii, wt, msg_t)
except TypeError:
@@ -438,43 +460,51 @@ class Tooltip:
"""
class for Tooltip
- imoprt Tooltip
+ import Tooltip
example: Tooltip(label, "Show tooltip on label")
- examble: Tooltip(button, "Show tooltip on button")
- info: label and button is parrent.
+ example: Tooltip(button, "Show tooltip on button")
+ info: label and button are parent.
"""
- def __init__(self, widget, text, tips=None):
- self.widget = widget
- self.text = text
- self.tooltip_window = None
+ def __init__(self, widget: Any, text: str, tips: Optional[bool] = None) -> None:
+ """
+ Tooltip Class
+ """
+
+ self.widget: Any = widget
+ self.text: str = text
+ self.tooltip_window: Optional[Toplevel] = None
if tips:
self.widget.bind("", self.show_tooltip)
self.widget.bind("", self.hide_tooltip)
- def show_tooltip(self, event=None):
+ def show_tooltip(self, event: Optional[Any] = None) -> None:
"""
- shows the tooltip
+ Shows the tooltip
"""
if self.tooltip_window or not self.text:
return
- x, y, _, _ = self.widget.bbox("insert")
+ x: int
+ y: int
+ cx: int
+ cy: int
+ x, y, cx, cy = self.widget.bbox("insert")
x += self.widget.winfo_rootx() + 65
y += self.widget.winfo_rooty() + 40
self.tooltip_window = tw = tk.Toplevel(self.widget)
tw.wm_overrideredirect(True)
tw.wm_geometry(f"+{x}+{y}")
- label = tk.Label(tw, text=self.text, background="lightgreen", foreground="black", relief="solid", borderwidth=1,
- padx=5, pady=5)
+ label: tk.Label = tk.Label(tw, text=self.text, background="lightgreen", foreground="black", relief="solid",
+ borderwidth=1, padx=5, pady=5)
label.grid()
- def hide_tooltip(self, event=None):
+ def hide_tooltip(self, event: Optional[Any] = None) -> None:
"""
- hide the tooltip
+ Hides the tooltip
"""
if self.tooltip_window:
self.tooltip_window.destroy()
- self.tooltip_window = None
+ self.tooltip_window = None
\ No newline at end of file
diff --git a/ssl_decrypt.py b/ssl_decrypt.py
index c2352c9..38e6935 100755
--- a/ssl_decrypt.py
+++ b/ssl_decrypt.py
@@ -1,35 +1,35 @@
#!/usr/bin/python3
-""" This Script decrypt Wireguardfiles for Wirepy users """
+""" This Script decrypt Wireguard files for Wirepy users """
import os
import shutil
from pathlib import Path
from subprocess import check_call
-uname = Path("/tmp/.loguser")
+uname: Path = Path("/tmp/.log_user")
with open(uname, "r", encoding="utf-8") as f:
- logname = f.readline()
+ log_name = f.readline()
-# Dirname "tlecdewg" = Tunnel Encrypt Decrypt Wireguard
-dirname = Path("/tmp/tlecdcwg/")
-keyfile = Path(f"/home/{logname}/.config/wire_py/pbwgk.pem")
-PKEYFILE = "/usr/local/etc/ssl/pwgk.pem"
+# Folder Name "tlecdewg" = Tunnel Encrypt Decrypt Wireguard
+folder_path: Path = Path("/tmp/tlecdcwg/")
+keyfile: Path = Path(f"/home/{log_name}/.config/wire_py/pbwgk.pem")
+PKEYFILE: Path = "/usr/local/etc/ssl/pwgk.pem"
if not keyfile.is_file():
check_call(["openssl", "rsa", "-in", PKEYFILE, "-out", keyfile, "-outform", "PEM", "-pubout"])
shutil.chown(keyfile, 1000, 1000)
-dirname2 = f"/home/{logname}/.config/wire_py/"
-detl = os.listdir(dirname2)
-os.chdir(dirname2)
+folder_path2 = f"/home/{log_name}/.config/wire_py/"
+detl: list[str] = os.listdir(folder_path2)
+os.chdir(folder_path2)
detl.remove("keys")
detl.remove("settings")
-if os.path.exists(f"{dirname2}pbwgk.pem"):
+if os.path.exists(f"{folder_path2}pbwgk.pem"):
detl.remove("pbwgk.pem")
for detunnels in detl:
tlname2 = f"{detunnels[:-4]}.conf"
- extpath = f"{dirname}/{tlname2}"
+ extpath = f"{folder_path}/{tlname2}"
check_call(["openssl", "pkeyutl", "-decrypt", "-inkey", PKEYFILE, "-in", detunnels, "-out", extpath])
shutil.chown(extpath, 1000, 1000)
diff --git a/ssl_encrypt.py b/ssl_encrypt.py
index 3433a26..d5a73c9 100755
--- a/ssl_encrypt.py
+++ b/ssl_encrypt.py
@@ -6,13 +6,13 @@ import shutil
from pathlib import Path
from subprocess import check_call
-uname = Path("/tmp/.loguser")
+uname: Path = Path("/tmp/.log_user")
with open(uname, "r", encoding="utf-8") as f:
- logname = f.readline()
+ log_name: str = f.readline()
-keyfile = Path(f"/home/{logname}/.config/wire_py/pbwgk.pem")
-dirname = Path("/tmp/tlecdcwg/")
+keyfile: Path = Path(f"/home/{log_name}/.config/wire_py/pbwgk.pem")
+folder_path: Path = Path("/tmp/tlecdcwg/")
PKEYFILE = "/usr/local/etc/ssl/pwgk.pem"
if not keyfile.is_file():
@@ -20,28 +20,28 @@ if not keyfile.is_file():
check_call(["openssl", "rsa", "-in", PKEYFILE, "-out", keyfile, "-outform", "PEM", "-pubout"])
shutil.chown(keyfile, 1000, 1000)
- if dirname.exists():
- tl = os.listdir(f"{dirname}")
- CPTH = f"{keyfile}"
- CRYPTFILES = CPTH[:-9]
+ if folder_path.exists():
+ tl = os.listdir(f"{folder_path}")
+ CPTH: str = f"{keyfile}"
+ CRYPTFILES: str = CPTH[:-9]
if keyfile.exists() and len(tl) != 0:
for tunnels in tl:
- sourcetl = f"{dirname}/{tunnels}"
- tlname = f"{CRYPTFILES}{tunnels[:-5]}.dat"
+ sourcetl: str = f"{folder_path}/{tunnels}"
+ tlname: str = f"{CRYPTFILES}{tunnels[:-5]}.dat"
check_call(["openssl", "pkeyutl", "-encrypt", "-inkey", keyfile, "-pubin", "-in", sourcetl, "-out",
tlname,])
else:
- if dirname.exists():
- tl = os.listdir(f"{dirname}")
- CPTH = f"{keyfile}"
- CRYPTFILES = CPTH[:-9]
+ if folder_path.exists():
+ tl: list[str] = os.listdir(f"{folder_path}")
+ CPTH: str = f"{keyfile}"
+ CRYPTFILES: str = CPTH[:-9]
if keyfile.exists() and len(tl) != 0:
for tunnels in tl:
- sourcetl = f"{dirname}/{tunnels}"
- tlname = f"{CRYPTFILES}{tunnels[:-5]}.dat"
- check_call(
- ["openssl", "pkeyutl", "-encrypt", "-inkey", keyfile, "-pubin", "-in", sourcetl, "-out", tlname])
+ sourcetl: str = f"{folder_path}/{tunnels}"
+ tlname: str = f"{CRYPTFILES}{tunnels[:-5]}.dat"
+ check_call(["openssl", "pkeyutl", "-encrypt", "-inkey", keyfile, "-pubin", "-in", sourcetl, "-out",
+ tlname])
diff --git a/wirepy.py b/wirepy.py
index 4fcf804..25c9755 100755
--- a/wirepy.py
+++ b/wirepy.py
@@ -21,14 +21,14 @@ Create.dir_and_files()
Create.make_dir()
Create.decrypt()
-tcl_path = Path("/usr/share/TK-Themes")
-set_file = Path(Path.home() / ".config/wire_py/settings")
+tcl_path: Path = Path("/usr/share/TK-Themes")
+set_file: Path = Path(Path.home() / ".config/wire_py/settings")
tips = LxTools.if_tip(set_file)
-dirname = Path("/tmp/tlecdcwg/")
-userfile = Path("/tmp/.loguser")
+folder_path: Path = Path("/tmp/tlecdcwg/")
+userfile = Path("/tmp/.log_user")
# 1 = 1. Year, 09 = Month of the Year, 2924 = Day and Year of the Year
-VERSION = "v. 2.04.1725"
+VERSION: str = "v. 2.04.1725"
res = GiteaUpdate.api_down("https://git.ilunix.de/api/v1/repos/punix/Wire-Py/releases", VERSION, set_file)
@@ -40,7 +40,7 @@ gettext.bindtextdomain(APP, LOCALE_DIR)
gettext.textdomain(APP)
_ = gettext.gettext
-LxTools.sigi(dirname, userfile)
+LxTools.sigi(folder_path, userfile)
class Wirepy(tk.Tk):
@@ -917,5 +917,5 @@ if __name__ == "__main__":
window.tk.call("set", "::tk::dialog::file::showHiddenVar", "0")
window.mainloop()
-LxTools.clean_files(dirname, userfile)
+LxTools.clean_files(folder_path, userfile)
sys.exit(0)