diff --git a/Changelog b/Changelog index 2e5d122..443a545 100644 --- a/Changelog +++ b/Changelog @@ -6,13 +6,17 @@ My standard System: Linux Mint 22 Cinnamon - os import in cls_mth_fc.py replaced by other methods - If Wire-Py already runs, prevent further start - for loops with lists replaced by List Comprehensions - - Update search after start of Wire-Py + - Crypt and Decrypt Config Files in ~/.config/wire_py ### Added -07-11-2024 - -- remove classes and add methods to class FrameWidgets (removed self errors) +02-03-2025 + - Fix ipv6 in Config File on import + - Wirepy run now as user + - settings, keys and Config Files now in ~/.config/wire_py + - For new users, the required files are created and autostart service is started. + - Tunnels are now read from the directory to view them in the list. + To display only own tunnels, and read errors are minimized. ### Added 10-11-2024 @@ -62,7 +66,7 @@ My standard System: Linux Mint 22 Cinnamon ### Added 27-10-2024 - - Add Autoconnect settings to settings.conf + - Add Autoconnect settings to settings ### Added @@ -70,7 +74,7 @@ My standard System: Linux Mint 22 Cinnamon - Add run_as Bash script and open_gitea.py python script - Add Tooltip disable/enable - - Rename settings to settings.conf for theme, updates and tooltip enable in one file + - Rename settings to settings for theme, updates and tooltip enable in one file ### Added diff --git a/Wire-Py.desktop b/Wire-Py.desktop index 19e5690..cda2352 100755 --- a/Wire-Py.desktop +++ b/Wire-Py.desktop @@ -1,7 +1,7 @@ [Desktop Entry] Type=Application Name=Wire-Py -Exec=/usr/bin/wirepy.py +Exec=/usr/local/bin/wg_main.py Terminal=false Categories=Network; Icon=/usr/share/icons/wp-icons/128/wg_vpn.png diff --git a/open_gitea.py b/open_gitea.py deleted file mode 100755 index 4fdbad1..0000000 --- a/open_gitea.py +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/python3 - -import webbrowser - -webbrowser.open('https://git.ilunix.de/punix/Wire-Py') \ No newline at end of file diff --git a/org.wirepy.policy b/org.wirepy.policy deleted file mode 100644 index c4c1694..0000000 --- a/org.wirepy.policy +++ /dev/null @@ -1,16 +0,0 @@ - - - - Project Wire-Py - https://git.ilunix.de/punix/Wire-Py - wg-vpn - - - auth_admin_keep - auth_admin_keep - yes - - /usr/bin/wg_main.py - true - - diff --git a/run_as b/run_as deleted file mode 100755 index d15cff4..0000000 --- a/run_as +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -/usr/bin/./open_gitea.py \ No newline at end of file diff --git a/settings.conf b/settings similarity index 100% rename from settings.conf rename to settings diff --git a/start_wg.py b/start_wg.py index 3140e90..b11f828 100755 --- a/start_wg.py +++ b/start_wg.py @@ -2,7 +2,7 @@ from subprocess import check_call from pathlib import Path -path_to_file = Path('/etc/wire_py/settings.conf') +path_to_file = Path(Path.home() / '.config/wire_py/settings') with open(path_to_file, 'r') as a_con: lines = a_con.readlines() diff --git a/wg_main.py b/wg_main.py index 8d81627..f08a7fe 100755 --- a/wg_main.py +++ b/wg_main.py @@ -2,6 +2,7 @@ import gettext import locale +import webbrowser import os import shutil import subprocess @@ -9,7 +10,7 @@ import tkinter as tk from pathlib import Path from subprocess import check_call from tkinter import filedialog, ttk, TclError -from cls_mth_fc import (Tunnel, msg_window, GiteaUpdate, _u, wg_tips, wg_set) +from cls_mth_fc import (Tunnel, msg_window, GiteaUpdate, wg_tips, dirs_and_files, wg_set, files_for_autostart) tcl_path = Path('/usr/share/TK-Themes') @@ -26,7 +27,6 @@ gettext.bindtextdomain(APP, LOCALE_DIR) gettext.textdomain(APP) _ = gettext.gettext - class MainWindow(tk.Tk): def __init__(self, *args, **kwargs): @@ -141,9 +141,7 @@ class FrameWidgets(ttk.Frame): def info(): def link_btn(): - _u1 = str(_u[6:]) - path_to_file = Path('/usr/bin/./run_as') - check_call(['su', _u1, path_to_file]) + webbrowser.open('https://git.ilunix.de/punix/Wire-Py') """img_w, img_i, w_title, w_txt , txt2, com hand over""" iw = r'/usr/share/icons/wp-icons/48/wg_vpn.png' @@ -332,7 +330,7 @@ class FrameWidgets(ttk.Frame): ''' Listbox with Scrollbar ''' def enable_check_box(_): - + files_for_autostart() if self.l_box.size() != 0: self.wg_autostart.configure(state='normal') self.lb_rename.config(state='normal') @@ -351,7 +349,7 @@ class FrameWidgets(ttk.Frame): ''' Tunnel List ''' self.tl = Tunnel.list() for tunnels in self.tl: - self.l_box.insert("end", tunnels) + self.l_box.insert("end", tunnels[:-5]) self.l_box.update() def list_empty_enter(event): @@ -382,7 +380,7 @@ class FrameWidgets(ttk.Frame): ''' Button Vpn ''' if self.a != '': self.stop() - wg_read = Path('/etc/wire_py') / str(self.a + '.conf') + wg_read = str(Path.home()) + '/.config/wire_py/' + str(self.a + '.conf') with open(wg_read, 'r') as file: data = Tunnel.con_to_dict(file) @@ -420,7 +418,7 @@ class FrameWidgets(ttk.Frame): try: self.select_tunnel = self.l_box.curselection() select_tl = self.l_box.get(self.select_tunnel[0]) - with open('/etc/wire_py/' + select_tl + '.conf', 'r+') as file2: + with open(str(Path.home()) + '/.config/wire_py/' + select_tl + '.conf', 'r+') as file2: key = Tunnel.con_to_dict(file2) pre_key = key[3] check_call(['nmcli', 'connection', 'delete', select_tl]) @@ -434,14 +432,14 @@ class FrameWidgets(ttk.Frame): self.selected_option.set(0) self.autoconnect_var.set(_('no Autoconnect')) - Path.unlink(Path('/etc/wire_py') / str(select_tl + '.conf')) - with open('/etc/wire_py/.keys', 'r') as readfile: - with open('/etc/wire_py/.keys2', 'w') as writefile: + Path.unlink(str(Path.home()) + '/.config/wire_py/' + str(select_tl + '.conf')) + with open(str(Path.home()) + '/.config/wire_py/keys', 'r') as readfile: + with open(str(Path.home()) + '/.config/wire_py/keys2', 'w') as writefile: for line in readfile: if pre_key not in line.strip("\n"): writefile.write(line) - file_one = Path('/etc/wire_py/.keys2') - file_two = file_one.with_name('.keys') + file_one = Path(str(Path.home()) + '/.config/wire_py/keys2') + file_two = file_one.with_name('keys') file_one.replace(file_two) self.wg_autostart.configure(state='disabled') @@ -636,7 +634,7 @@ class FrameWidgets(ttk.Frame): ''' nmcli connection modify old connection.id iphone ''' check_call(['nmcli', 'connection', 'modify', select_tl, 'connection.id', self.lb_rename.get()]) - source = Path('/etc/wire_py') / str(select_tl + '.conf') + source = Path.home() / '.config/wire_py' / str(select_tl + '.conf') destination = source.with_name(str(self.lb_rename.get() + '.conf')) source.replace(destination) self.l_box.delete(self.select_tunnel[0]) @@ -738,8 +736,11 @@ class FrameWidgets(ttk.Frame): 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. """ + + dirs_and_files() + try: - filepath = filedialog.askopenfilename(initialdir=str(_u), title=_('Select Wireguard config File'), + filepath = filedialog.askopenfilename(initialdir=str(Path.home()), title=_('Select Wireguard config File'), filetypes=[(_('WG config files'), '*.conf')], ) with open(filepath, 'r') as file: @@ -753,7 +754,7 @@ class FrameWidgets(ttk.Frame): key = Tunnel.con_to_dict(file) pre_key = key[3] if len(pre_key) != 0: - with open('/etc/wire_py/.keys', 'r') as readfile: + with open(str(Path.home()) + '/.config/wire_py/keys', 'r') 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""" @@ -765,13 +766,13 @@ class FrameWidgets(ttk.Frame): else: - with open('/etc/wire_py/.keys', 'a') as keyfile: + with open(str(Path.home()) + '/.config/wire_py/keys', 'a') as keyfile: keyfile.write(pre_key + '\r') if len(path_split1) > 17: - p1 = shutil.copy(filepath, Path('/etc/wire_py/')) + p1 = shutil.copy(filepath, str(Path.home()) + '/.config/wire_py/') path_split = path_split1[len(path_split1) - 17:] - os.rename(p1, Path('/etc/wire_py') / str(path_split)) - new_conf = '/etc/wire_py/' + path_split + os.rename(p1, str(Path.home()) + '/.config/wire_py/' + str(path_split)) + new_conf = str(Path.home()) + '/.config/wire_py/' + path_split if self.a != '': check_call(['nmcli', 'connection', 'down', Tunnel.active()]) self.label_empty() @@ -780,7 +781,7 @@ class FrameWidgets(ttk.Frame): 'wireguard', 'file', new_conf], text=True) else: - shutil.copy(filepath, Path('/etc/wire_py/')) + shutil.copy(filepath, str(Path.home()) + '/.config/wire_py/') if self.a != '': check_call(['nmcli', 'connection', 'down', Tunnel.active()]) self.label_empty() @@ -865,7 +866,7 @@ class FrameWidgets(ttk.Frame): self.StrVar.set(self.a) self.color_label() self.stop() - wg_read = Path('/etc/wire_py') / str(self.a + '.conf') + wg_read = str(Path.home()) + '/.config/wire_py/' + str(self.a + '.conf') with open(wg_read, 'r') as file_for_key: data = Tunnel.con_to_dict(file_for_key) @@ -1061,7 +1062,7 @@ class FrameWidgets(ttk.Frame): self.select_tunnel = self.l_box.curselection() select_tl = self.l_box.get(self.select_tunnel[0]) check_call(['nmcli', 'connection', 'up', select_tl]) - wg_read = Path('/etc/wire_py') / str(select_tl + '.conf') + wg_read = str(Path.home()) + '/.config/wire_py/' + str(select_tl + '.conf') with open(wg_read, 'r') as file: data = Tunnel.con_to_dict(file) diff --git a/wg_start.service b/wg_start.service index cc5f2bb..0352b4e 100644 --- a/wg_start.service +++ b/wg_start.service @@ -5,6 +5,6 @@ After=network-online.target [Service] Type=oneshot ExecStartPre=/bin/sleep 5 -ExecStart=/usr/bin/start_wg.py +ExecStart=/usr/local/bin/start_wg.py [Install] -WantedBy=multi-user.target +WantedBy=default.target diff --git a/wirepy.py b/wirepy.py deleted file mode 100755 index 592fa67..0000000 --- a/wirepy.py +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/python3 -from subprocess import check_call -from pathlib import Path - -Path.write_text(Path('/tmp/_u'), str(Path.home())) -check_call(['pkexec', '/usr/bin/wg_main.py'])