eplace msg_window with MassageDialog vpn stop icon corrected new icons question and warning , info and error revised #37
@ -9,6 +9,11 @@ My standard System: Linux Mint 22 Cinnamon
|
||||
- Tunnel in tk.canvas for modern look
|
||||
- Replace Download Button with Lx Tools installer
|
||||
|
||||
### Added
|
||||
14-06-2025
|
||||
|
||||
- replace msg_window with MassageDialog
|
||||
- vpn stop icon corrected
|
||||
|
||||
### Added
|
||||
07-06-2025
|
||||
|
BIN
lx-icons/128/Lunix_Tools.png
Normal file
After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.5 KiB |
BIN
lx-icons/128/question_mark.png
Normal file
After Width: | Height: | Size: 7.0 KiB |
BIN
lx-icons/128/warning.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 10 KiB |
BIN
lx-icons/256/Lunix_Tools.png
Normal file
After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 9.8 KiB |
BIN
lx-icons/256/question_mark.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
lx-icons/256/warning.png
Normal file
After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 20 KiB |
BIN
lx-icons/32/Lunix_Tools.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.2 KiB |
BIN
lx-icons/32/question_mark.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
lx-icons/32/warning.png
Normal file
After Width: | Height: | Size: 838 B |
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 1.9 KiB |
BIN
lx-icons/32/wg_vpn.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
lx-icons/48/Lunix_Tools.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.9 KiB |
BIN
lx-icons/48/question_mark.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
lx-icons/48/warning.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 3.1 KiB |
BIN
lx-icons/64/Lunix_Tools.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.5 KiB |
BIN
lx-icons/64/question_mark.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
lx-icons/64/warning.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 4.5 KiB |
@ -7,24 +7,22 @@ import shutil
|
||||
from subprocess import CompletedProcess, run
|
||||
from shared_libs.wp_app_config import AppConfig
|
||||
from shared_libs.common_tools import LxTools
|
||||
from shared_libs.message import MessageDialog
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--user", required=True, help="Username of the target file system")
|
||||
args = parser.parse_args()
|
||||
|
||||
_ = AppConfig.setup_translations()
|
||||
try:
|
||||
# Retrieve UID and GID
|
||||
user_info = pwd.getpwnam(args.user)
|
||||
uid = user_info.pw_uid # User ID (e.g., 1000)
|
||||
gid = user_info.pw_gid # Group ID (e.g., 1000)
|
||||
except KeyError:
|
||||
LxTools.msg_window(
|
||||
AppConfig.IMAGE_PATHS["icon_error"],
|
||||
AppConfig.IMAGE_PATHS["icon_error"],
|
||||
"Error decrypt",
|
||||
f"User '{args.user}' not found.",
|
||||
exc_info=True,
|
||||
)
|
||||
MessageDialog("error", _(f"User '{args.user}' not found."), title="Error decrypt")
|
||||
|
||||
exit(1)
|
||||
|
||||
crypted_tunnel: Path = Path(f"/home/{args.user}/.config/wire_py")
|
||||
@ -58,9 +56,10 @@ else:
|
||||
|
||||
# Output from Openssl Error
|
||||
if process.stderr:
|
||||
LxTools.msg_window(
|
||||
AppConfig.IMAGE_PATHS["icon_error"],
|
||||
AppConfig.IMAGE_PATHS["icon_error"],
|
||||
"Error decrypt",
|
||||
f"{process.stderr} Error by [{tunnel_path}] Code: {process.returncode}",
|
||||
MessageDialog(
|
||||
"erro",
|
||||
_(
|
||||
f"{process.stderr} Error by [{tunnel_path}] Code: {process.returncode}"
|
||||
),
|
||||
title="Error decrypt",
|
||||
)
|
||||
|
32
tunnel.py
@ -9,6 +9,7 @@ from subprocess import run, CompletedProcess
|
||||
import secrets
|
||||
from shared_libs.wp_app_config import AppConfig, Msg
|
||||
from shared_libs.common_tools import LxTools, CryptoUtil
|
||||
from shared_libs.message import MessageDialog
|
||||
|
||||
# Translate
|
||||
_ = AppConfig.setup_translations()
|
||||
@ -172,12 +173,8 @@ class Tunnel:
|
||||
CryptoUtil.decrypt(getpass.getuser())
|
||||
if len([file.name for file in AppConfig.TEMP_DIR.glob("*.conf")]) == 0:
|
||||
|
||||
LxTools.msg_window(
|
||||
AppConfig.IMAGE_PATHS["icon_info"],
|
||||
AppConfig.IMAGE_PATHS["icon_msg"],
|
||||
Msg.STR["sel_tl"],
|
||||
Msg.STR["tl_first"],
|
||||
)
|
||||
MessageDialog("info", Msg.STR["tl_first"], title=Msg.STR["sel_tl"])
|
||||
|
||||
return False
|
||||
else:
|
||||
wg_tar: str = f"{AppConfig.BASE_DIR}/{now_datetime}"
|
||||
@ -186,22 +183,20 @@ class Tunnel:
|
||||
with zipfile.ZipFile(f"{wg_tar}.zip", "r") as zf:
|
||||
if zf.namelist():
|
||||
|
||||
LxTools.msg_window(
|
||||
AppConfig.IMAGE_PATHS["icon_info"],
|
||||
AppConfig.IMAGE_PATHS["icon_vpn"],
|
||||
Msg.STR["exp_succ"],
|
||||
MessageDialog(
|
||||
"info",
|
||||
Msg.STR["exp_in_home"],
|
||||
title=Msg.STR["exp_succ"],
|
||||
)
|
||||
|
||||
else:
|
||||
logging.error(
|
||||
"There was a mistake at creating the Zip file. File is empty."
|
||||
)
|
||||
LxTools.msg_window(
|
||||
AppConfig.IMAGE_PATHS["icon_error"],
|
||||
AppConfig.IMAGE_PATHS["icon_msg"],
|
||||
Msg.STR["exp_err"],
|
||||
Msg.STR["exp_zip"],
|
||||
MessageDialog(
|
||||
"error", Msg.STR["exp_zip"], title=Msg.STR["exp_err"]
|
||||
)
|
||||
|
||||
return False
|
||||
return True
|
||||
except PermissionError:
|
||||
@ -217,12 +212,7 @@ class Tunnel:
|
||||
pass
|
||||
except Exception as e:
|
||||
logging.error(f"Export failed: {str(e)}")
|
||||
LxTools.msg_window(
|
||||
AppConfig.IMAGE_PATHS["icon_error"],
|
||||
AppConfig.IMAGE_PATHS["icon_msg"],
|
||||
Msg.STR["exp_err"],
|
||||
Msg.STR["exp_try"],
|
||||
)
|
||||
MessageDialog("error", Msg.STR["exp_try"], title=Msg.STR["exp_err"])
|
||||
return False
|
||||
|
||||
finally:
|
||||
|
23
wirepy.py
@ -8,11 +8,12 @@ import shutil
|
||||
import sys
|
||||
import tkinter as tk
|
||||
import webbrowser
|
||||
from functools import partial
|
||||
from pathlib import Path
|
||||
from subprocess import CompletedProcess, run
|
||||
from tkinter import TclError, filedialog, ttk
|
||||
from tunnel import Tunnel
|
||||
|
||||
from shared_libs.message import MessageDialog
|
||||
from shared_libs.gitea import GiteaUpdate
|
||||
from shared_libs.common_tools import (
|
||||
LxTools,
|
||||
@ -462,10 +463,6 @@ class FrameWidgets(ttk.Frame):
|
||||
"""
|
||||
a tk.Toplevel window
|
||||
"""
|
||||
|
||||
def link_btn() -> None:
|
||||
webbrowser.open("https://git.ilunix.de/punix/Wire-Py")
|
||||
|
||||
msg_t = _(
|
||||
"Wire-Py a simple Wireguard Gui for Linux systems.\n\n"
|
||||
"Wire-Py is open source software written in Python.\n\n"
|
||||
@ -473,13 +470,17 @@ class FrameWidgets(ttk.Frame):
|
||||
"Use without warranty!\n"
|
||||
)
|
||||
|
||||
LxTools.msg_window(
|
||||
AppConfig.IMAGE_PATHS["icon_vpn"],
|
||||
AppConfig.IMAGE_PATHS["icon_vpn"],
|
||||
_("Info"),
|
||||
MessageDialog(
|
||||
"info",
|
||||
msg_t,
|
||||
_("Go to Wire-Py git"),
|
||||
link_btn,
|
||||
buttons=["OK", _("Go to Wire-Py git")],
|
||||
title=_("Info"),
|
||||
commands=[
|
||||
None,
|
||||
partial(webbrowser.open, "https://git.ilunix.de/punix/Wire-Py"),
|
||||
],
|
||||
icon=AppConfig.IMAGE_PATHS["icon_vpn"],
|
||||
wraplength=420,
|
||||
)
|
||||
|
||||
def update_setting(self, update_res) -> None:
|
||||
|