Compare commits
1 Commits
2.03.0325
...
24-02-2025
Author | SHA1 | Date | |
---|---|---|---|
7881355f00 |
4
.idea/workspace.xml
generated
4
.idea/workspace.xml
generated
@ -350,7 +350,7 @@
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1727379755537</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00055" summary="fix installer add .keys file">
|
||||
<task id="LOCAL-00055" summary="fix installer add keys file">
|
||||
<option name="closed" value="true" />
|
||||
<created>1727380793216</created>
|
||||
<option name="number" value="00055" />
|
||||
@ -579,7 +579,7 @@
|
||||
<MESSAGE value="info icon shadow fix end msg Export fix to" />
|
||||
<MESSAGE value="little fixes" />
|
||||
<MESSAGE value="fix msg_boxes when tunnel list = 0 a Start, Delete and Export" />
|
||||
<MESSAGE value="fix installer add .keys file" />
|
||||
<MESSAGE value="fix installer add keys file" />
|
||||
<MESSAGE value="Changelog create When exporting, the folder is now copied to /tmp and the non .conf files are deleted before the zip file is created. In main.py os import removed. Since os have been replaced by pathlib and shutil. Start with version number 1.4.7 Message window size corrected so text is displayed better" />
|
||||
<MESSAGE value="Fix msg_window and remove x , y argument Install further adapted and with colored text if user is not in group sudo or wheel. Added to install Opensuse for installation" />
|
||||
<MESSAGE value=" - Menu add - New Modern Dark and Light(default) Theme" />
|
||||
|
@ -8,12 +8,6 @@ My standard System: Linux Mint 22 Cinnamon
|
||||
- for loops with lists replaced by List Comprehensions
|
||||
- Crypt and Decrypt Config Files in ~/.config/wire_py
|
||||
|
||||
### Added
|
||||
03-03-2025
|
||||
|
||||
- Fixes a new user files create
|
||||
|
||||
|
||||
### Added
|
||||
02-03-2025
|
||||
|
||||
|
2
Wire-Py.desktop
Normal file → Executable file
2
Wire-Py.desktop
Normal file → Executable file
@ -4,4 +4,4 @@ Name=Wire-Py
|
||||
Exec=/usr/local/bin/wg_main.py
|
||||
Terminal=false
|
||||
Categories=Network;
|
||||
Icon=/usr/share/icons/wp-icons/128/wg_vpn.png
|
||||
Icon=/usr/share/icons/wp-icons/128/wg_vpn.png
|
||||
|
Binary file not shown.
Binary file not shown.
125
cls_mth_fc.py
125
cls_mth_fc.py
@ -4,8 +4,8 @@ import gettext
|
||||
import locale
|
||||
import os
|
||||
import shutil
|
||||
from subprocess import check_call
|
||||
import subprocess
|
||||
from subprocess import check_call
|
||||
import tkinter as tk
|
||||
import zipfile
|
||||
from datetime import datetime
|
||||
@ -13,7 +13,6 @@ from pathlib import Path
|
||||
from tkinter import ttk
|
||||
import requests
|
||||
|
||||
|
||||
APP = 'wirepy'
|
||||
LOCALE_DIR = "/usr/share/locale/"
|
||||
locale.bindtextdomain(APP, LOCALE_DIR)
|
||||
@ -21,98 +20,41 @@ gettext.bindtextdomain(APP, LOCALE_DIR)
|
||||
gettext.textdomain(APP)
|
||||
_ = gettext.gettext
|
||||
|
||||
wg_set = Path(Path.home() / '.config/wire_py/settings')
|
||||
def dirs_and_files():
|
||||
|
||||
class Create():
|
||||
"""
|
||||
This class is for the creation of the folders and files
|
||||
required by Wire-Py, as well as for decryption
|
||||
the tunnel from the user's home directory
|
||||
"""
|
||||
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'
|
||||
|
||||
@staticmethod
|
||||
def dir_and_files():
|
||||
if sett.exists():
|
||||
pass
|
||||
|
||||
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'
|
||||
else:
|
||||
sett.touch()
|
||||
sett.write_text('[UPDATES]\non\n[THEME]\nlight\n[TOOLTIP]\nTrue\n[AUTOSTART ON]\noff')
|
||||
|
||||
if sett.exists():
|
||||
pass
|
||||
if ks.exists():
|
||||
pass
|
||||
|
||||
else:
|
||||
sett.touch()
|
||||
sett.write_text('[UPDATES]\non\n[THEME]\nlight\n[TOOLTIP]\nTrue\n[AUTOSTART ON]\noff\n')
|
||||
else:
|
||||
ks.touch()
|
||||
|
||||
if ks.exists():
|
||||
pass
|
||||
def files_for_autostart():
|
||||
|
||||
else:
|
||||
ks.touch()
|
||||
pth2 = Path.home() / '.config/systemd/user'
|
||||
pth2.mkdir(parents=True, exist_ok=True)
|
||||
wg_ser = Path.home() / '.config/systemd/user/wg_start.service'
|
||||
|
||||
@staticmethod
|
||||
def files_for_autostart():
|
||||
if wg_ser.exists():
|
||||
pass
|
||||
|
||||
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'])
|
||||
|
||||
@staticmethod
|
||||
def make_dir():
|
||||
''' Dirname "tlecdewg" = Tunnel Encrypt Decrypt Wireguard '''
|
||||
|
||||
dirname = Path('/tmp/tlecdcwg/')
|
||||
if dirname.exists():
|
||||
pass
|
||||
else:
|
||||
dirname.mkdir()
|
||||
|
||||
@staticmethod
|
||||
def decrypt():
|
||||
process = subprocess.run(['pkexec', '/usr/local/bin/ssl_decrypt.py'], stdout=subprocess.PIPE, text=True)
|
||||
#print(process.stdout)
|
||||
if process.returncode == 0:
|
||||
print('File successfully decrypted...')
|
||||
else:
|
||||
print(f'Error with the following code... {process.returncode}')
|
||||
|
||||
@staticmethod
|
||||
def encrypt():
|
||||
process = subprocess.run(['pkexec', '/usr/local/bin/ssl_encrypt.py'], stdout=subprocess.PIPE, text=True)
|
||||
print(process.stdout)
|
||||
if process.returncode == 0:
|
||||
print('All Files successfully encrypted...')
|
||||
else:
|
||||
print(f'Error with the following code... {process.returncode}')
|
||||
|
||||
class UOS:
|
||||
"""
|
||||
The class is only for unixoidal systems "UOS" = UnixOS
|
||||
|
||||
"""
|
||||
|
||||
"""
|
||||
This method displays the user name of the logged-in user,
|
||||
even if you are rooted in a shell
|
||||
"""
|
||||
@staticmethod
|
||||
def username():
|
||||
logname = str(Path.home())[6:]
|
||||
file = Path.home() / '/tmp/.loguser'
|
||||
with open(file, "w") as f:
|
||||
f.write(logname)
|
||||
else:
|
||||
wg_ser.touch()
|
||||
sett.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])
|
||||
|
||||
wg_set = Path(Path.home() / '.config/wire_py/settings')
|
||||
|
||||
|
||||
class GiteaUpdate:
|
||||
@ -287,13 +229,13 @@ class Tunnel:
|
||||
"""
|
||||
@staticmethod
|
||||
def list():
|
||||
|
||||
dirname = Path('/tmp/tlecdcwg/')
|
||||
dirname = Path.home() / '.config/wire_py/'
|
||||
wg_s = os.listdir(dirname)
|
||||
|
||||
wg_s.remove('keys')
|
||||
wg_s.remove('settings')
|
||||
|
||||
return wg_s
|
||||
|
||||
|
||||
"""
|
||||
This will export the tunnels.
|
||||
A zipfile with current date and time is created
|
||||
@ -308,8 +250,11 @@ class Tunnel:
|
||||
try:
|
||||
if len(tl) != 0:
|
||||
wg_tar = str(Path.home()) + '/' + now_datetime
|
||||
shutil.copytree('/tmp/tlecdcwg/', '/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')
|
||||
Path.unlink(Path(source) / 'wg_py', missing_ok=True)
|
||||
Path.unlink(Path(source) / 'keys', missing_ok=True)
|
||||
Path.unlink(Path(source) / 'settings', missing_ok=True)
|
||||
shutil.make_archive(wg_tar, 'zip', source)
|
||||
#shutil.chown(wg_tar + '.zip', 1000, 1000)
|
||||
shutil.rmtree(source)
|
||||
@ -359,3 +304,5 @@ class Tipi:
|
||||
else:
|
||||
return True
|
||||
|
||||
|
||||
wg_tips = Tipi.if_tip(wg_set)
|
||||
|
8
install
8
install
@ -9,13 +9,12 @@ install_file_with(){
|
||||
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 cp -f org.sslcrypt.policy /usr/share/polkit-1/actions/ && \
|
||||
sudo apt install python3-tk && \
|
||||
sudo cp -fv wg_main.py start_wg.py cls_mth_fc.py ssl_encrypt.py ssl_decrypt.py /usr/local/bin/ && \
|
||||
sudo cp -u wg_main.py start_wg.py cls_mth_fc.py /usr/local/bin/ && \
|
||||
sudo cp -uR wp-icons lx-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \
|
||||
sudo cp -u languages/de/*.mo /usr/share/locale/de/LC_MESSAGES/ && \
|
||||
sudo ln -sf /usr/local/bin/wg_main.py /usr/local/bin/wirepy && \
|
||||
sudo cp -f Wire-Py.desktop /usr/share/applications/
|
||||
sudo cp -u Wire-Py.desktop /usr/share/applications/
|
||||
}
|
||||
|
||||
install_arch_d(){
|
||||
@ -29,7 +28,6 @@ install_arch_d(){
|
||||
sudo ln -sf /usr/bin/wirepy.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 org.sslcrypt.policy /usr/share/polkit-1/actions/ && \
|
||||
sudo cp -u wg_start.service /lib/systemd/system/ && \
|
||||
sudo systemctl enable wg_start.service
|
||||
}
|
||||
@ -128,7 +126,7 @@ else
|
||||
clear
|
||||
exit 0
|
||||
fi
|
||||
#clear
|
||||
clear
|
||||
read -n 1 -s -r -p $"To close the Window press a button"
|
||||
clear
|
||||
|
||||
|
@ -1,42 +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">
|
||||
|
||||
<!--
|
||||
Policy definitions for ssl_encrypt and ssl_decrypt
|
||||
|
||||
Copyright (C) 2025 Désiré Werner Menrath <polunga40@unity-mail.de>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library. If not, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<policyconfig>
|
||||
<action id="org.ssl_encrypt">
|
||||
<defaults>
|
||||
<allow_any>auth_admin_keep</allow_any>
|
||||
<allow_active>yes</allow_active>
|
||||
</defaults>
|
||||
<annotate key="org.freedesktop.policykit.exec.path">/usr/local/bin/ssl_encrypt.py</annotate>
|
||||
</action>
|
||||
|
||||
<action id="org.ssl_decrypt">
|
||||
<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/local/bin/ssl_decrypt.py</annotate>
|
||||
|
||||
</action>
|
||||
</policyconfig>
|
@ -1,28 +0,0 @@
|
||||
#!/usr/bin/python3
|
||||
''' This Script decrypt Wireguardfiles for Wirepy users '''
|
||||
|
||||
import os
|
||||
from subprocess import check_call
|
||||
from pathlib import Path
|
||||
import shutil
|
||||
uname = Path('/tmp/.loguser')
|
||||
|
||||
with open(uname, 'r') as f:
|
||||
logname = f.readline()
|
||||
|
||||
''' Dirname "tlecdewg" = Tunnel Encrypt Decrypt Wireguard '''
|
||||
dirname = Path('/tmp/tlecdcwg/')
|
||||
keyfile = '/usr/local/etc/ssl/pwgk.pem'
|
||||
|
||||
dirname2 = ('/home/' + logname + '/.config/wire_py/')
|
||||
detl = os.listdir(dirname2)
|
||||
os.chdir(dirname2)
|
||||
detl.remove('keys')
|
||||
detl.remove('settings')
|
||||
if os.path.exists(dirname2 + 'pbwgk.pem'):
|
||||
detl.remove('pbwgk.pem')
|
||||
for detunnels in detl:
|
||||
tlname2 = detunnels[:-4] + '.conf'
|
||||
extpath = str(dirname) + '/' + tlname2
|
||||
check_call(['openssl', 'pkeyutl', '-decrypt', '-inkey', keyfile, '-in', detunnels, '-out', extpath])
|
||||
shutil.chown(extpath, 1000, 1000)
|
@ -1,49 +0,0 @@
|
||||
#!/usr/bin/python3
|
||||
''' This Script encrypt Wireguardfiles for Wirepy users for more Security'''
|
||||
|
||||
import os
|
||||
from subprocess import check_call
|
||||
from pathlib import Path
|
||||
import shutil
|
||||
|
||||
uname = Path('/tmp/.loguser')
|
||||
|
||||
with open(uname, 'r') as f:
|
||||
logname = f.readline()
|
||||
|
||||
keyfile = Path(f'/home/{logname}/.config/wire_py/pbwgk.pem')
|
||||
dirname = Path('/tmp/tlecdcwg/')
|
||||
pkeyfile = '/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)
|
||||
|
||||
if dirname.exists():
|
||||
tl = os.listdir(str(dirname))
|
||||
cpth = str(keyfile)
|
||||
cryptfiles = cpth[:-9]
|
||||
|
||||
if keyfile.exists() and len(tl) != 0:
|
||||
for tunnels in tl:
|
||||
sourcetl = str(dirname) + '/' + tunnels
|
||||
tlname = cryptfiles + tunnels[:-5] + '.dat'
|
||||
check_call(['openssl', 'pkeyutl', '-encrypt', '-inkey', keyfile, '-pubin', '-in', sourcetl, '-out', tlname])
|
||||
|
||||
else:
|
||||
|
||||
if dirname.exists():
|
||||
tl = os.listdir(str(dirname))
|
||||
cpth = str(keyfile)
|
||||
cryptfiles = cpth[:-9]
|
||||
|
||||
if keyfile.exists() and len(tl) != 0:
|
||||
for tunnels in tl:
|
||||
sourcetl = str(dirname) + '/' + tunnels
|
||||
tlname = cryptfiles + tunnels[:-5] + '.dat'
|
||||
check_call(['openssl', 'pkeyutl', '-encrypt', '-inkey', keyfile, '-pubin', '-in', sourcetl, '-out', tlname])
|
||||
|
||||
|
||||
|
||||
|
89
wg_main.py
89
wg_main.py
@ -4,28 +4,18 @@ import gettext
|
||||
import locale
|
||||
import webbrowser
|
||||
import os
|
||||
import sys
|
||||
import signal
|
||||
import subprocess
|
||||
import shutil
|
||||
import subprocess
|
||||
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, Create, msg_window, Tipi, GiteaUpdate, UOS)
|
||||
|
||||
UOS.username()
|
||||
Create.dir_and_files()
|
||||
Create.make_dir()
|
||||
Create.decrypt()
|
||||
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')
|
||||
wg_set = Path(Path.home() / '.config/wire_py/settings')
|
||||
wg_tips = Tipi.if_tip(wg_set)
|
||||
dirname = Path('/tmp/tlecdcwg/')
|
||||
|
||||
''' 1 = 1. Year, 09 = Month of the Year, 2924 = Day and Year of the Year '''
|
||||
version = 'v. 2.03.0325'
|
||||
version = 'v. 2.03.0225'
|
||||
|
||||
res = GiteaUpdate.api_down('https://git.ilunix.de/api/v1/repos/punix/Wire-Py/releases', version)
|
||||
|
||||
@ -37,31 +27,6 @@ gettext.bindtextdomain(APP, LOCALE_DIR)
|
||||
gettext.textdomain(APP)
|
||||
_ = gettext.gettext
|
||||
|
||||
def signalHandler(signum, frame):
|
||||
''' Determine clear text names for signal numbers '''
|
||||
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, "Unnamed signal: %d" % signum)
|
||||
|
||||
'''
|
||||
End program for certain signals,
|
||||
report to others only reception
|
||||
'''
|
||||
if signum in (signal.SIGINT, signal.SIGTERM):
|
||||
exitCode = 1
|
||||
print("\nSignal '%s' (%d) received. => Aborting with exit code %d." % (signame, signum, exitCode))
|
||||
shutil.rmtree(dirname)
|
||||
Path.unlink('/tmp/.loguser')
|
||||
print('Breakdown by user...')
|
||||
sys.exit(exitCode)
|
||||
else:
|
||||
print("Signal %d received and ignored." % signum)
|
||||
shutil.rmtree(dirname)
|
||||
Path.unlink('/tmp/.loguser')
|
||||
print('Process unexpectedly ended...')
|
||||
signal.signal(signal.SIGINT, signalHandler)
|
||||
signal.signal(signal.SIGTERM, signalHandler)
|
||||
signal.signal(signal.SIGHUP, signalHandler)
|
||||
class MainWindow(tk.Tk):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
@ -93,9 +58,9 @@ class MainWindow(tk.Tk):
|
||||
|
||||
''' Set it as the window icon '''
|
||||
self.iconphoto(True, self.wg_icon)
|
||||
|
||||
|
||||
FrameWidgets(self).grid()
|
||||
|
||||
|
||||
|
||||
class FrameWidgets(ttk.Frame):
|
||||
def __init__(self, container, **kwargs):
|
||||
@ -365,7 +330,7 @@ class FrameWidgets(ttk.Frame):
|
||||
''' Listbox with Scrollbar '''
|
||||
|
||||
def enable_check_box(_):
|
||||
Create.files_for_autostart()
|
||||
files_for_autostart()
|
||||
if self.l_box.size() != 0:
|
||||
self.wg_autostart.configure(state='normal')
|
||||
self.lb_rename.config(state='normal')
|
||||
@ -382,7 +347,6 @@ class FrameWidgets(ttk.Frame):
|
||||
self.l_box.configure(yscrollcommand=self.scrollbar.set)
|
||||
|
||||
''' Tunnel List '''
|
||||
|
||||
self.tl = Tunnel.list()
|
||||
for tunnels in self.tl:
|
||||
self.l_box.insert("end", tunnels[:-5])
|
||||
@ -416,7 +380,7 @@ class FrameWidgets(ttk.Frame):
|
||||
''' Button Vpn '''
|
||||
if self.a != '':
|
||||
self.stop()
|
||||
wg_read = '/tmp/tlecdcwg/' + 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)
|
||||
|
||||
@ -454,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('/tmp/tlecdcwg/' + 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])
|
||||
@ -467,10 +431,8 @@ class FrameWidgets(ttk.Frame):
|
||||
set_file7.writelines(lines6)
|
||||
self.selected_option.set(0)
|
||||
self.autoconnect_var.set(_('no Autoconnect'))
|
||||
is_encrypt = Path.home() / '.config/wire_py' / str(select_tl + '.dat')
|
||||
if is_encrypt.is_file():
|
||||
Path.unlink(str(Path.home()) + '/.config/wire_py/' + str(select_tl + '.dat'))
|
||||
Path.unlink(Path('/tmp/tlecdcwg') / str(select_tl + '.conf'))
|
||||
|
||||
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:
|
||||
@ -672,10 +634,9 @@ 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('/tmp/tlecdcwg') / 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)
|
||||
Path.unlink(str(Path.home()) + '/.config/wire_py/' + str(select_tl + '.dat'))
|
||||
self.l_box.delete(self.select_tunnel[0])
|
||||
self.l_box.insert("end", self.lb_rename.get())
|
||||
self.l_box.update()
|
||||
@ -691,8 +652,6 @@ class FrameWidgets(ttk.Frame):
|
||||
with open(wg_set, 'w') as theme_set5:
|
||||
theme_set5.writelines(lines5)
|
||||
self.autoconnect_var.set(value=new_a_connect)
|
||||
|
||||
Create.encrypt()
|
||||
|
||||
return select_tl
|
||||
|
||||
@ -778,7 +737,7 @@ class FrameWidgets(ttk.Frame):
|
||||
If in each case false comes out, a corresponding window comes to inform the user that something is wrong.
|
||||
"""
|
||||
|
||||
Create.dir_and_files()
|
||||
dirs_and_files()
|
||||
|
||||
try:
|
||||
filepath = filedialog.askopenfilename(initialdir=str(Path.home()), title=_('Select Wireguard config File'),
|
||||
@ -810,10 +769,10 @@ class FrameWidgets(ttk.Frame):
|
||||
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, '/tmp/tlecdcwg/')
|
||||
p1 = shutil.copy(filepath, str(Path.home()) + '/.config/wire_py/')
|
||||
path_split = path_split1[len(path_split1) - 17:]
|
||||
os.rename(p1, '/tmp/tlecdcwg/' + str(path_split))
|
||||
new_conf = '/tmp/tlecdcwg/' + 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()
|
||||
@ -821,10 +780,8 @@ class FrameWidgets(ttk.Frame):
|
||||
subprocess.check_output(['nmcli', 'connection', 'import', 'type',
|
||||
'wireguard', 'file', new_conf], text=True)
|
||||
|
||||
Create.encrypt()
|
||||
|
||||
else:
|
||||
shutil.copy(filepath, '/tmp/tlecdcwg/')
|
||||
shutil.copy(filepath, str(Path.home()) + '/.config/wire_py/')
|
||||
if self.a != '':
|
||||
check_call(['nmcli', 'connection', 'down', Tunnel.active()])
|
||||
self.label_empty()
|
||||
@ -832,8 +789,6 @@ class FrameWidgets(ttk.Frame):
|
||||
subprocess.check_output(['nmcli', 'connection', 'import', 'type',
|
||||
'wireguard', 'file', filepath], text=True)
|
||||
|
||||
Create.encrypt()
|
||||
|
||||
self.StrVar.set('')
|
||||
self.a = Tunnel.active()
|
||||
self.l_box.insert(0, self.a)
|
||||
@ -911,7 +866,7 @@ class FrameWidgets(ttk.Frame):
|
||||
self.StrVar.set(self.a)
|
||||
self.color_label()
|
||||
self.stop()
|
||||
wg_read = '/tmp/tlecdcwg/' + 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)
|
||||
|
||||
@ -938,7 +893,7 @@ class FrameWidgets(ttk.Frame):
|
||||
except subprocess.CalledProcessError:
|
||||
|
||||
print('Tunnel exist!')
|
||||
|
||||
|
||||
def box_set(self):
|
||||
"""
|
||||
This Method will display the autostart label which
|
||||
@ -1107,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 = '/tmp/tlecdcwg/' + 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)
|
||||
|
||||
@ -1190,7 +1145,7 @@ class MyToolTip(tk.Toplevel):
|
||||
def clear_tip(self):
|
||||
"""Remove Tool-Tip"""
|
||||
self.destroy()
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
window = MainWindow()
|
||||
@ -1205,7 +1160,3 @@ if __name__ == '__main__':
|
||||
window.tk.call('set', '::tk::dialog::file::showHiddenBtn', '0')
|
||||
window.tk.call('set', '::tk::dialog::file::showHiddenVar', '0')
|
||||
window.mainloop()
|
||||
|
||||
shutil.rmtree(dirname)
|
||||
Path.unlink('/tmp/.loguser')
|
||||
sys.exit(0)
|
Reference in New Issue
Block a user