Compare commits
	
		
			4 Commits
		
	
	
		
			2.02.2425
			...
			8771be760d
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8771be760d | |||
| 97bf9df041 | |||
| 1bba45a6c1 | |||
| a5eb6293c6 | 
							
								
								
									
										22
									
								
								Changelog
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								Changelog
									
									
									
									
									
								
							| @@ -6,13 +6,23 @@ My standard System: Linux Mint 22 Cinnamon | |||||||
|  - os import in cls_mth_fc.py replaced by other methods |  - os import in cls_mth_fc.py replaced by other methods | ||||||
|  - If Wire-Py already runs, prevent further start |  - If Wire-Py already runs, prevent further start | ||||||
|  - for loops with lists replaced by List Comprehensions |  - 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 | ||||||
|  | 03-03-2025 | ||||||
|  |  | ||||||
|  |  - Fixes a new user files create | ||||||
|  |  | ||||||
|  |  | ||||||
|   ### Added |   ### Added | ||||||
| 07-11-2024 | 02-03-2025 | ||||||
|  |  | ||||||
| - remove classes and add methods to class FrameWidgets (removed self errors) |  | ||||||
|  |  | ||||||
|  |  - 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 |   ### Added | ||||||
| 10-11-2024 | 10-11-2024 | ||||||
| @@ -62,7 +72,7 @@ My standard System: Linux Mint 22 Cinnamon | |||||||
|   ### Added |   ### Added | ||||||
| 27-10-2024 | 27-10-2024 | ||||||
|  |  | ||||||
|  - Add Autoconnect settings to settings.conf |  - Add Autoconnect settings to settings | ||||||
|  |  | ||||||
|  |  | ||||||
|   ### Added |   ### Added | ||||||
| @@ -70,7 +80,7 @@ My standard System: Linux Mint 22 Cinnamon | |||||||
|  |  | ||||||
|  - Add run_as Bash script and open_gitea.py python script |  - Add run_as Bash script and open_gitea.py python script | ||||||
|  - Add Tooltip disable/enable |  - 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 |   ### Added | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| [Desktop Entry] | [Desktop Entry] | ||||||
| Type=Application | Type=Application | ||||||
| Name=Wire-Py | Name=Wire-Py | ||||||
| Exec=/usr/bin/wirepy.py | Exec=/usr/local/bin/wg_main.py | ||||||
| Terminal=false | Terminal=false | ||||||
| Categories=Network; | Categories=Network; | ||||||
| Icon=/usr/share/icons/wp-icons/128/wg_vpn.png | Icon=/usr/share/icons/wp-icons/128/wg_vpn.png | ||||||
|   | |||||||
| @@ -5,6 +5,7 @@ import locale | |||||||
| import os | import os | ||||||
| import shutil | import shutil | ||||||
| import subprocess | import subprocess | ||||||
|  | from subprocess import check_call | ||||||
| import tkinter as tk | import tkinter as tk | ||||||
| import zipfile | import zipfile | ||||||
| from datetime import datetime | from datetime import datetime | ||||||
| @@ -19,8 +20,41 @@ gettext.bindtextdomain(APP, LOCALE_DIR) | |||||||
| gettext.textdomain(APP) | gettext.textdomain(APP) | ||||||
| _ = gettext.gettext | _ = gettext.gettext | ||||||
|  |  | ||||||
| wg_set = Path('/etc/wire_py/settings.conf') | wg_set = Path(Path.home() / '.config/wire_py/settings') | ||||||
| _u = Path.read_text(Path('/tmp/_u')) |  | ||||||
|  | def dirs_and_files(): | ||||||
|  |  | ||||||
|  |     pth = 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' | ||||||
|  |  | ||||||
|  |     if sett.exists(): | ||||||
|  |         pass | ||||||
|  |  | ||||||
|  |     else: | ||||||
|  |         sett.touch() | ||||||
|  |         sett.write_text('[UPDATES]\non\n[THEME]\nlight\n[TOOLTIP]\nTrue\n[AUTOSTART ON]\noff\n') | ||||||
|  |  | ||||||
|  |     if ks.exists(): | ||||||
|  |         pass | ||||||
|  |  | ||||||
|  |     else: | ||||||
|  |         ks.touch() | ||||||
|  |  | ||||||
|  | def files_for_autostart(): | ||||||
|  |  | ||||||
|  |     pth2 = Path.home() / '.config/systemd/user' | ||||||
|  |     pth2.mkdir(parents=True, exist_ok=True) | ||||||
|  |     wg_ser = Path.home() / '.config/systemd/user/wg_start.service' | ||||||
|  |  | ||||||
|  |     if wg_ser.exists(): | ||||||
|  |         pass | ||||||
|  |  | ||||||
|  |     else: | ||||||
|  |         wg_ser.touch() | ||||||
|  |         wg_ser.write_text('[Unit]\nDescription=Automatic Tunnel Start\nAfter=network-online.target\n\n[Service]\nType=oneshot\nExecStartPre=/bin/sleep 5\nExecStart=/usr/local/bin/start_wg.py\n[Install]\nWantedBy=default.target') | ||||||
|  |         check_call(['systemctl', '--user', 'enable', 'wg_start.service']) | ||||||
|  |  | ||||||
|  |  | ||||||
| class GiteaUpdate: | class GiteaUpdate: | ||||||
| @@ -53,10 +87,10 @@ class GiteaUpdate: | |||||||
|     @staticmethod |     @staticmethod | ||||||
|     def download(urld, down_ok_image, down_not_ok_image, res): |     def download(urld, down_ok_image, down_not_ok_image, res): | ||||||
|         try: |         try: | ||||||
|             to_down = 'wget -qP ' + str(_u) + ' ' + urld |             to_down = 'wget -qP ' + str(Path.home()) + ' ' + urld | ||||||
|             result = subprocess.call(to_down, shell=True) |             result = subprocess.call(to_down, shell=True) | ||||||
|             if result == 0: |             if result == 0: | ||||||
|                 shutil.chown(str(_u) + f'/{res}.zip', 1000, 1000) |                 shutil.chown(str(Path.home()) + f'/{res}.zip', 1000, 1000) | ||||||
|                 """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' |                 iw = r'/usr/share/icons/lx-icons/64/info.png' | ||||||
|                 ii = down_ok_image |                 ii = down_ok_image | ||||||
| @@ -145,6 +179,8 @@ class Tunnel: | |||||||
|         for items in dictlist: |         for items in dictlist: | ||||||
|             if items == '=': |             if items == '=': | ||||||
|                 dictlist.remove(items) |                 dictlist.remove(items) | ||||||
|  |             if items == '::/0': | ||||||
|  |                 dictlist.remove(items)     | ||||||
|  |  | ||||||
|         ''' Here is the beginning (Loop) of convert List to Dictionary ''' |         ''' Here is the beginning (Loop) of convert List to Dictionary ''' | ||||||
|         for _ in dictlist: |         for _ in dictlist: | ||||||
| @@ -189,15 +225,16 @@ class Tunnel: | |||||||
|         return active |         return active | ||||||
|  |  | ||||||
|     """ |     """ | ||||||
|     Shows all existing Wireguard tunnels |     Shows all existing Wireguard tunnels a login user | ||||||
|     """ |     """ | ||||||
|     @staticmethod |     @staticmethod | ||||||
|     def list(): |     def list(): | ||||||
|         wg_s = os.popen('nmcli con show | grep -iPo "(.*)(wireguard)"').read().split() |         dirname = Path.home() / '.config/wire_py/' | ||||||
|  |         wg_s = os.listdir(dirname) | ||||||
|         ''' tl = Tunnel list # Show of 4.Element in list ''' |         wg_s.remove('keys') | ||||||
|         tl = wg_s[::3] |         wg_s.remove('settings') | ||||||
|         return tl |          | ||||||
|  |         return wg_s | ||||||
|  |  | ||||||
|     """ |     """ | ||||||
|     This will export the tunnels. |     This will export the tunnels. | ||||||
| @@ -206,21 +243,20 @@ class Tunnel: | |||||||
|     """ |     """ | ||||||
|     @staticmethod |     @staticmethod | ||||||
|     def export(): |     def export(): | ||||||
|         _u1 = str(_u[6:]) |  | ||||||
|         now_time = datetime.now() |         now_time = datetime.now() | ||||||
|         now_datetime = now_time.strftime('wg-exp-' + '%m-%d-%Y' + '-' + '%H:%M') |         now_datetime = now_time.strftime('wg-exp-' + '%m-%d-%Y' + '-' + '%H:%M') | ||||||
|         tl = Tunnel.list() |         tl = Tunnel.list() | ||||||
|  |  | ||||||
|         try: |         try: | ||||||
|             if len(tl) != 0: |             if len(tl) != 0: | ||||||
|                 wg_tar = str(_u) + '/' + now_datetime |                 wg_tar = str(Path.home()) + '/' + now_datetime | ||||||
|                 shutil.copytree('/etc/wire_py', '/tmp/wire_py', dirs_exist_ok=True) |                 shutil.copytree(Path.home() / '.config/wire_py/', '/tmp/wire_py', dirs_exist_ok=True) | ||||||
|                 source = Path('/tmp/wire_py') |                 source = Path('/tmp/wire_py') | ||||||
|                 Path.unlink(Path(source) / 'wg_py', missing_ok=True) |                 Path.unlink(Path(source) / 'wg_py', missing_ok=True) | ||||||
|                 Path.unlink(Path(source) / '.keys', missing_ok=True) |                 Path.unlink(Path(source) / 'keys', missing_ok=True) | ||||||
|                 Path.unlink(Path(source) / 'settings.conf', missing_ok=True) |                 Path.unlink(Path(source) / 'settings', missing_ok=True) | ||||||
|                 shutil.make_archive(wg_tar, 'zip', source) |                 shutil.make_archive(wg_tar, 'zip', source) | ||||||
|                 shutil.chown(wg_tar + '.zip', 1000, 1000) |                 #shutil.chown(wg_tar + '.zip', 1000, 1000) | ||||||
|                 shutil.rmtree(source) |                 shutil.rmtree(source) | ||||||
|                 with zipfile.ZipFile((wg_tar + '.zip'), 'r') as zf: |                 with zipfile.ZipFile((wg_tar + '.zip'), 'r') as zf: | ||||||
|                     if len(zf.namelist()) != 0: |                     if len(zf.namelist()) != 0: | ||||||
| @@ -267,6 +303,3 @@ class Tipi: | |||||||
|                 return False |                 return False | ||||||
|             else: |             else: | ||||||
|                 return True |                 return True | ||||||
|  |  | ||||||
|  |  | ||||||
| wg_tips = Tipi.if_tip(wg_set) |  | ||||||
|   | |||||||
							
								
								
									
										30
									
								
								install
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								install
									
									
									
									
									
								
							| @@ -6,24 +6,22 @@ BLUE='\033[30;1;34m' | |||||||
|  |  | ||||||
| install_file_with(){ | install_file_with(){ | ||||||
|   clear |   clear | ||||||
|  |   mkdir -p ~/.config/wire_py && touch ~/.config/wire_py/keys && cp -u settings ~/.config/wire_py/ && \ | ||||||
|  |   mkdir -p ~/.config/systemd/user && cp -u wg_start.service ~/.config/systemd/user/ && \ | ||||||
|  |   systemctl --user enable wg_start.service | ||||||
|   sudo apt install python3-tk && \ |   sudo apt install python3-tk && \ | ||||||
|   sudo cp -u wg_main.py start_wg.py cls_mth_fc.py wirepy.py run_as open_gitea.py /usr/bin/ && \ |   sudo cp -u wg_main.py start_wg.py cls_mth_fc.py /usr/local/bin/ && \ | ||||||
|   sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && sudo cp -u settings.conf /etc/wire_py/ && \ |  | ||||||
|   sudo cp -uR wp-icons lx-icons /usr/share/icons/ &&  sudo cp -uR TK-Themes /usr/share/ && \ |   sudo cp -uR wp-icons lx-icons /usr/share/icons/ &&  sudo cp -uR TK-Themes /usr/share/ && \ | ||||||
|   sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \ |  | ||||||
|   sudo cp -u languages/de/*.mo /usr/share/locale/de/LC_MESSAGES/ && \ |   sudo cp -u languages/de/*.mo /usr/share/locale/de/LC_MESSAGES/ && \ | ||||||
|   sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \ |   sudo ln -sf /usr/local/bin/wg_main.py /usr/local/bin/wirepy && \ | ||||||
|   sudo cp -u org.wirepy.policy /usr/share/polkit-1/actions/ && \ |   sudo cp -u Wire-Py.desktop /usr/share/applications/  | ||||||
|   sudo cp -u Wire-Py.desktop /usr/share/applications/ && \ |  | ||||||
|   sudo cp -u wg_start.service /lib/systemd/system/ && \ |  | ||||||
|   sudo systemctl enable wg_start.service |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
| install_arch_d(){ | install_arch_d(){ | ||||||
|   clear |   clear | ||||||
|   sudo pacman -S --noconfirm tk python3 python-requests && \ |   sudo pacman -S --noconfirm tk python3 python-requests && \ | ||||||
|   sudo cp -u wg_main.py start_wg.py cls_mth_fc.py wirepy.py run_as open_gitea.py /usr/bin/ && \ |   sudo cp -u wg_main.py start_wg.py cls_mth_fc.py && \ | ||||||
|   sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && sudo cp -u settings.conf  /etc/wire_py/ && \ |   sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/keys && sudo cp -u settings  /etc/wire_py/ && \ | ||||||
|   sudo cp -uR wp-icons lx-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \ |   sudo cp -uR wp-icons lx-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \ | ||||||
|   sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \ |   sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \ | ||||||
|   sudo cp -u languages/de/*.mo /usr/share/locale/de/LC_MESSAGES/ && \ |   sudo cp -u languages/de/*.mo /usr/share/locale/de/LC_MESSAGES/ && \ | ||||||
| @@ -91,9 +89,9 @@ elif grep -i 'fedora' /etc/os-release > /dev/null 2>&1 | |||||||
|         if ! which python3-tkinter &> /dev/null |         if ! which python3-tkinter &> /dev/null | ||||||
|             then sudo dnf install python3-tkinter -y |             then sudo dnf install python3-tkinter -y | ||||||
|  |  | ||||||
|                 sudo cp -u wg_main.py start_wg.py cls_mth_fc.py wirepy.py run_as open_gitea.py /usr/bin/ && \ |                 sudo cp -u wg_main.py start_wg.py cls_mth_fc.py && \ | ||||||
|                 sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && \ |                 sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/keys && \ | ||||||
|                 sudo cp -u settings.conf /etc/wire_py/ && \ |                 sudo cp -u settings /etc/wire_py/ && \ | ||||||
|                 sudo cp -u languages/de/*.mo /usr/share/locale/de/LC_MESSAGES/ && \ |                 sudo cp -u languages/de/*.mo /usr/share/locale/de/LC_MESSAGES/ && \ | ||||||
|                 sudo cp -uR wp-icons lx-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \ |                 sudo cp -uR wp-icons lx-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \ | ||||||
|                 sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \ |                 sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \ | ||||||
| @@ -108,9 +106,9 @@ elif grep -i 'suse' /etc/os-release > /dev/null 2>&1 | |||||||
|     then |     then | ||||||
|         if ! which python311-tk &> /dev/null |         if ! which python311-tk &> /dev/null | ||||||
|             then sudo zypper install python311-tk |             then sudo zypper install python311-tk | ||||||
|                  sudo cp -u wg_main.py start_wg.py cls_mth_fc.py wirepy.py run_as open_gitea.py /usr/bin/ && \ |                  sudo cp -u wg_main.py start_wg.py cls_mth_fc.py && \ | ||||||
|                  sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && \ |                  sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/keys && \ | ||||||
|                  sudo cp -u settings.conf /etc/wire_py/ && \ |                  sudo cp -u settings /etc/wire_py/ && \ | ||||||
|                  sudo cp -u languages/de/*.mo /usr/share/locale/de/LC_MESSAGES/ && \ |                  sudo cp -u languages/de/*.mo /usr/share/locale/de/LC_MESSAGES/ && \ | ||||||
|                  sudo cp -uR wp-icons lx-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \ |                  sudo cp -uR wp-icons lx-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \ | ||||||
|                  sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \ |                  sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \ | ||||||
|   | |||||||
| @@ -1,5 +0,0 @@ | |||||||
| #!/usr/bin/python3 |  | ||||||
|  |  | ||||||
| import webbrowser |  | ||||||
|  |  | ||||||
| webbrowser.open('https://git.ilunix.de/punix/Wire-Py') |  | ||||||
| @@ -1,16 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd"> |  | ||||||
| <policyconfig> |  | ||||||
|   <vendor>Project Wire-Py</vendor> |  | ||||||
|   <vendor_url>https://git.ilunix.de/punix/Wire-Py</vendor_url> |  | ||||||
|   <icon_name>wg-vpn</icon_name> |  | ||||||
|   <action id="org.wirepy"> |  | ||||||
|     <defaults> |  | ||||||
|       <allow_any>auth_admin_keep</allow_any> |  | ||||||
|       <allow_inactive>auth_admin_keep</allow_inactive> |  | ||||||
|       <allow_active>yes</allow_active> |  | ||||||
|     </defaults> |  | ||||||
|     <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/wg_main.py</annotate> |  | ||||||
|     <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate> |  | ||||||
|   </action> |  | ||||||
| </policyconfig> |  | ||||||
| @@ -2,7 +2,7 @@ | |||||||
| from subprocess import check_call | from subprocess import check_call | ||||||
| from pathlib import Path | 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: | with open(path_to_file, 'r') as a_con: | ||||||
|     lines = a_con.readlines() |     lines = a_con.readlines() | ||||||
|   | |||||||
							
								
								
									
										53
									
								
								wg_main.py
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								wg_main.py
									
									
									
									
									
								
							| @@ -2,6 +2,7 @@ | |||||||
|  |  | ||||||
| import gettext | import gettext | ||||||
| import locale | import locale | ||||||
|  | import webbrowser | ||||||
| import os | import os | ||||||
| import shutil | import shutil | ||||||
| import subprocess | import subprocess | ||||||
| @@ -9,12 +10,14 @@ import tkinter as tk | |||||||
| from pathlib import Path | from pathlib import Path | ||||||
| from subprocess import check_call | from subprocess import check_call | ||||||
| from tkinter import filedialog, ttk, TclError | 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, dirs_and_files, msg_window, Tipi, GiteaUpdate ,files_for_autostart) | ||||||
|  |  | ||||||
| tcl_path = Path('/usr/share/TK-Themes') | tcl_path = Path('/usr/share/TK-Themes') | ||||||
|  | wg_set = Path(Path.home() / '.config/wire_py/settings') | ||||||
|  | wg_tips = Tipi.if_tip(wg_set) | ||||||
|  |  | ||||||
| ''' 1 = 1. Year, 09 = Month of the Year, 2924 = Day and Year of the Year ''' | ''' 1 = 1. Year, 09 = Month of the Year, 2924 = Day and Year of the Year ''' | ||||||
| version = 'v. 2.02.2425' | version = 'v. 2.03.0325' | ||||||
|  |  | ||||||
| res = GiteaUpdate.api_down('https://git.ilunix.de/api/v1/repos/punix/Wire-Py/releases', version) | res = GiteaUpdate.api_down('https://git.ilunix.de/api/v1/repos/punix/Wire-Py/releases', version) | ||||||
|  |  | ||||||
| @@ -26,7 +29,6 @@ gettext.bindtextdomain(APP, LOCALE_DIR) | |||||||
| gettext.textdomain(APP) | gettext.textdomain(APP) | ||||||
| _ = gettext.gettext | _ = gettext.gettext | ||||||
|  |  | ||||||
|  |  | ||||||
| class MainWindow(tk.Tk): | class MainWindow(tk.Tk): | ||||||
|  |  | ||||||
|     def __init__(self, *args, **kwargs): |     def __init__(self, *args, **kwargs): | ||||||
| @@ -141,9 +143,7 @@ class FrameWidgets(ttk.Frame): | |||||||
|  |  | ||||||
|         def info(): |         def info(): | ||||||
|             def link_btn(): |             def link_btn(): | ||||||
|                 _u1 = str(_u[6:]) |                 webbrowser.open('https://git.ilunix.de/punix/Wire-Py') | ||||||
|                 path_to_file = Path('/usr/bin/./run_as') |  | ||||||
|                 check_call(['su', _u1, path_to_file]) |  | ||||||
|  |  | ||||||
|             """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/wp-icons/48/wg_vpn.png' |             iw = r'/usr/share/icons/wp-icons/48/wg_vpn.png' | ||||||
| @@ -332,7 +332,7 @@ class FrameWidgets(ttk.Frame): | |||||||
|         ''' Listbox with Scrollbar ''' |         ''' Listbox with Scrollbar ''' | ||||||
|  |  | ||||||
|         def enable_check_box(_): |         def enable_check_box(_): | ||||||
|  |             files_for_autostart()     | ||||||
|             if self.l_box.size() != 0: |             if self.l_box.size() != 0: | ||||||
|                 self.wg_autostart.configure(state='normal') |                 self.wg_autostart.configure(state='normal') | ||||||
|                 self.lb_rename.config(state='normal') |                 self.lb_rename.config(state='normal') | ||||||
| @@ -351,7 +351,7 @@ class FrameWidgets(ttk.Frame): | |||||||
|         ''' Tunnel List ''' |         ''' Tunnel List ''' | ||||||
|         self.tl = Tunnel.list() |         self.tl = Tunnel.list() | ||||||
|         for tunnels in self.tl: |         for tunnels in self.tl: | ||||||
|             self.l_box.insert("end", tunnels) |             self.l_box.insert("end", tunnels[:-5]) | ||||||
|             self.l_box.update() |             self.l_box.update() | ||||||
|  |  | ||||||
|         def list_empty_enter(event): |         def list_empty_enter(event): | ||||||
| @@ -382,7 +382,7 @@ class FrameWidgets(ttk.Frame): | |||||||
|         ''' Button Vpn ''' |         ''' Button Vpn ''' | ||||||
|         if self.a != '': |         if self.a != '': | ||||||
|             self.stop() |             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: |             with open(wg_read, 'r') as file: | ||||||
|                 data = Tunnel.con_to_dict(file) |                 data = Tunnel.con_to_dict(file) | ||||||
|  |  | ||||||
| @@ -420,7 +420,7 @@ class FrameWidgets(ttk.Frame): | |||||||
|             try: |             try: | ||||||
|                 self.select_tunnel = self.l_box.curselection() |                 self.select_tunnel = self.l_box.curselection() | ||||||
|                 select_tl = self.l_box.get(self.select_tunnel[0]) |                 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) |                     key = Tunnel.con_to_dict(file2) | ||||||
|                     pre_key = key[3] |                     pre_key = key[3] | ||||||
|                 check_call(['nmcli', 'connection', 'delete', select_tl]) |                 check_call(['nmcli', 'connection', 'delete', select_tl]) | ||||||
| @@ -434,14 +434,14 @@ class FrameWidgets(ttk.Frame): | |||||||
|                         self.selected_option.set(0) |                         self.selected_option.set(0) | ||||||
|                         self.autoconnect_var.set(_('no Autoconnect')) |                         self.autoconnect_var.set(_('no Autoconnect')) | ||||||
|  |  | ||||||
|                 Path.unlink(Path('/etc/wire_py') / str(select_tl + '.conf')) |                 Path.unlink(str(Path.home()) + '/.config/wire_py/' + str(select_tl + '.conf')) | ||||||
|                 with open('/etc/wire_py/.keys', 'r') as readfile: |                 with open(str(Path.home()) + '/.config/wire_py/keys', 'r') as readfile: | ||||||
|                     with open('/etc/wire_py/.keys2', 'w') as writefile: |                     with open(str(Path.home()) +  '/.config/wire_py/keys2', 'w') as writefile: | ||||||
|                         for line in readfile: |                         for line in readfile: | ||||||
|                             if pre_key not in line.strip("\n"): |                             if pre_key not in line.strip("\n"): | ||||||
|                                 writefile.write(line) |                                 writefile.write(line) | ||||||
|                 file_one = Path('/etc/wire_py/.keys2') |                 file_one = Path(str(Path.home()) +  '/.config/wire_py/keys2') | ||||||
|                 file_two = file_one.with_name('.keys') |                 file_two = file_one.with_name('keys') | ||||||
|                 file_one.replace(file_two) |                 file_one.replace(file_two) | ||||||
|                 self.wg_autostart.configure(state='disabled') |                 self.wg_autostart.configure(state='disabled') | ||||||
|  |  | ||||||
| @@ -636,7 +636,7 @@ class FrameWidgets(ttk.Frame): | |||||||
|  |  | ||||||
|                     ''' nmcli connection modify old connection.id iphone ''' |                     ''' nmcli connection modify old connection.id iphone ''' | ||||||
|                     check_call(['nmcli', 'connection', 'modify', select_tl, 'connection.id', self.lb_rename.get()]) |                     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')) |                     destination = source.with_name(str(self.lb_rename.get() + '.conf')) | ||||||
|                     source.replace(destination) |                     source.replace(destination) | ||||||
|                     self.l_box.delete(self.select_tunnel[0]) |                     self.l_box.delete(self.select_tunnel[0]) | ||||||
| @@ -738,8 +738,11 @@ class FrameWidgets(ttk.Frame): | |||||||
|         If True then the name is automatically shortened to 12 characters and then imported. |         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 in each case false comes out, a corresponding window comes to inform the user that something is wrong. | ||||||
|         """ |         """ | ||||||
|  |  | ||||||
|  |         dirs_and_files() | ||||||
|  |  | ||||||
|         try: |         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')], ) |                                                   filetypes=[(_('WG config files'), '*.conf')], ) | ||||||
|  |  | ||||||
|             with open(filepath, 'r') as file: |             with open(filepath, 'r') as file: | ||||||
| @@ -753,7 +756,7 @@ class FrameWidgets(ttk.Frame): | |||||||
|                     key = Tunnel.con_to_dict(file) |                     key = Tunnel.con_to_dict(file) | ||||||
|                     pre_key = key[3] |                     pre_key = key[3] | ||||||
|                     if len(pre_key) != 0: |                     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() |                             p_key = readfile.readlines() | ||||||
|                             if pre_key in p_key or pre_key + '\n' in p_key: |                             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""" | ||||||
| @@ -765,13 +768,13 @@ class FrameWidgets(ttk.Frame): | |||||||
|  |  | ||||||
|                             else: |                             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') |                                     keyfile.write(pre_key + '\r') | ||||||
|                                     if len(path_split1) > 17: |                                     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:] |                                         path_split = path_split1[len(path_split1) - 17:] | ||||||
|                                         os.rename(p1, Path('/etc/wire_py') / str(path_split)) |                                         os.rename(p1, str(Path.home()) + '/.config/wire_py/' + str(path_split)) | ||||||
|                                         new_conf = '/etc/wire_py/' + path_split |                                         new_conf = str(Path.home()) + '/.config/wire_py/' + path_split | ||||||
|                                         if self.a != '': |                                         if self.a != '': | ||||||
|                                             check_call(['nmcli', 'connection', 'down', Tunnel.active()]) |                                             check_call(['nmcli', 'connection', 'down', Tunnel.active()]) | ||||||
|                                             self.label_empty() |                                             self.label_empty() | ||||||
| @@ -780,7 +783,7 @@ class FrameWidgets(ttk.Frame): | |||||||
|                                                                  'wireguard', 'file', new_conf], text=True) |                                                                  'wireguard', 'file', new_conf], text=True) | ||||||
|  |  | ||||||
|                                     else: |                                     else: | ||||||
|                                         shutil.copy(filepath, Path('/etc/wire_py/')) |                                         shutil.copy(filepath, str(Path.home()) + '/.config/wire_py/') | ||||||
|                                         if self.a != '': |                                         if self.a != '': | ||||||
|                                             check_call(['nmcli', 'connection', 'down', Tunnel.active()]) |                                             check_call(['nmcli', 'connection', 'down', Tunnel.active()]) | ||||||
|                                             self.label_empty() |                                             self.label_empty() | ||||||
| @@ -865,7 +868,7 @@ class FrameWidgets(ttk.Frame): | |||||||
|                                     self.StrVar.set(self.a) |                                     self.StrVar.set(self.a) | ||||||
|                                     self.color_label() |                                     self.color_label() | ||||||
|                                     self.stop() |                                     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: |                                     with open(wg_read, 'r') as file_for_key: | ||||||
|                                         data = Tunnel.con_to_dict(file_for_key) |                                         data = Tunnel.con_to_dict(file_for_key) | ||||||
|  |  | ||||||
| @@ -1061,7 +1064,7 @@ class FrameWidgets(ttk.Frame): | |||||||
|                 self.select_tunnel = self.l_box.curselection() |                 self.select_tunnel = self.l_box.curselection() | ||||||
|                 select_tl = self.l_box.get(self.select_tunnel[0]) |                 select_tl = self.l_box.get(self.select_tunnel[0]) | ||||||
|                 check_call(['nmcli', 'connection', 'up', select_tl]) |                 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: |                 with open(wg_read, 'r') as file: | ||||||
|                     data = Tunnel.con_to_dict(file) |                     data = Tunnel.con_to_dict(file) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -5,6 +5,6 @@ After=network-online.target | |||||||
| [Service] | [Service] | ||||||
| Type=oneshot | Type=oneshot | ||||||
| ExecStartPre=/bin/sleep 5 | ExecStartPre=/bin/sleep 5 | ||||||
| ExecStart=/usr/bin/start_wg.py | ExecStart=/usr/local/bin/start_wg.py | ||||||
| [Install] | [Install] | ||||||
| WantedBy=multi-user.target | WantedBy=default.target | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user