add class FileHandle,
add Label to show autoconnect Tunnel disable checkbox when Listbox is empty or no select Tunnel
This commit is contained in:
parent
b82bd6d9e7
commit
00a9436dad
16
.idea/workspace.xml
generated
16
.idea/workspace.xml
generated
@ -4,7 +4,8 @@
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="940e1630-c825-4d4c-be80-bc11f543c122" name="Changes" comment="columnconfigure on all widgets set">
|
||||
<list default="true" id="940e1630-c825-4d4c-be80-bc11f543c122" name="Changes" comment="little fixes a " " to ' '">
|
||||
<change afterPath="$PROJECT_DIR$/wg_py.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/wg_func.py" beforeDir="false" afterPath="$PROJECT_DIR$/wg_func.py" afterDir="false" />
|
||||
@ -251,7 +252,15 @@
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1724778892233</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="21" />
|
||||
<task id="LOCAL-00021" summary="little fixes a " " to ' '">
|
||||
<option name="closed" value="true" />
|
||||
<created>1725119445803</created>
|
||||
<option name="number" value="00021" />
|
||||
<option name="presentableId" value="LOCAL-00021" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1725119445803</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="22" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
@ -298,6 +307,7 @@
|
||||
<MESSAGE value="fix when Filname > 17 first copy file after rename" />
|
||||
<MESSAGE value="add export Tunnel as zip" />
|
||||
<MESSAGE value="columnconfigure on all widgets set" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="columnconfigure on all widgets set" />
|
||||
<MESSAGE value="little fixes a " " to ' '" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="little fixes a " " to ' '" />
|
||||
</component>
|
||||
</project>
|
94
main.py
94
main.py
@ -4,9 +4,10 @@ import tkinter as tk
|
||||
from tkinter import ttk
|
||||
|
||||
from wg_func import (TunnelActiv, ListTunnels, ImportTunnel, ConToDict, GreenLabel, StartStopBTN, ShowAddress,
|
||||
ExportTunnels)
|
||||
FileHandle, ExportTunnels)
|
||||
|
||||
font_color = '#4011a7'
|
||||
replacement = ''
|
||||
|
||||
|
||||
class MainWindow(tk.Tk):
|
||||
@ -60,21 +61,18 @@ class FrameWidgets(ttk.Frame):
|
||||
self.lb_frame = ttk.Frame(self)
|
||||
self.lb_frame.configure(relief='solid')
|
||||
self.lb_frame.grid(column=2, row=2, sticky='snew', padx=20, pady=5)
|
||||
self.columnconfigure(2, weight=1)
|
||||
self.rowconfigure(2, weight=1)
|
||||
|
||||
# Label Frame 2
|
||||
self.lb_frame2 = ttk.Frame(self)
|
||||
self.lb_frame2.configure(relief='solid')
|
||||
self.lb_frame2.grid(column=2, row=3, sticky='snew', padx=20, pady=5)
|
||||
self.columnconfigure(2, weight=1)
|
||||
self.rowconfigure(3, weight=1)
|
||||
|
||||
# Show active Label
|
||||
self.select_tunnel = None
|
||||
self.lb = tk.Label(self, text='Active: ')
|
||||
self.lb.config(font=('Ubuntu', 11, 'bold'))
|
||||
self.lb.grid(column=2, row=1, padx=15, sticky='w')
|
||||
self.columnconfigure(2, weight=1)
|
||||
self.rowconfigure(1, weight=1)
|
||||
|
||||
# Label to Show active Tunnel
|
||||
self.StrVar = tk.StringVar(value=self.a)
|
||||
GreenLabel.green_show_label(self)
|
||||
@ -82,23 +80,28 @@ class FrameWidgets(ttk.Frame):
|
||||
self.interface = tk.Label(self.lb_frame, text='Interface', fg=font_color)
|
||||
self.interface.grid(column=0, row=4, sticky='we', padx=120)
|
||||
self.interface.config(font=('Ubuntu', 9))
|
||||
self.columnconfigure(0, weight=1)
|
||||
self.rowconfigure(4, weight=1)
|
||||
|
||||
# Peer Label
|
||||
self.peer = tk.Label(self.lb_frame2, text='Peer', fg=font_color)
|
||||
self.peer.config(font=('Ubuntu', 9))
|
||||
self.peer.grid(column=0, row=7, sticky='we', padx=130)
|
||||
self.columnconfigure(0, weight=1)
|
||||
self.rowconfigure(7, weight=1)
|
||||
|
||||
# Listbox with Scrollbar
|
||||
def enable_check_box(event):
|
||||
tl = ListTunnels.tl_list()
|
||||
print(len(tl))
|
||||
if len(tl) != 0:
|
||||
self.wg_autostart.configure(state='normal')
|
||||
|
||||
self.scrollbar = ttk.Scrollbar(self)
|
||||
self.l_box = tk.Listbox(self, fg='#606060', selectmode='single')
|
||||
self.l_box.config(highlightthickness=0, relief='flat')
|
||||
self.scrollbar.config(command=self.l_box.yview)
|
||||
self.l_box.config(font=('Ubuntu', 12, 'bold'))
|
||||
self.l_box.grid(column=1, rowspan=3, row=1)
|
||||
self.columnconfigure(1, weight=1)
|
||||
self.rowconfigure(1, weight=1)
|
||||
self.l_box.event_add('<<ClickEvent>>', '<Button-1>')
|
||||
self.l_box.bind('<<ClickEvent>>', enable_check_box)
|
||||
|
||||
# Tunnel List
|
||||
self.tl = ListTunnels.tl_list()
|
||||
for tunnels in self.tl:
|
||||
@ -125,8 +128,6 @@ class FrameWidgets(ttk.Frame):
|
||||
# Button Import
|
||||
self.btn_i = tk.Button(self, image=self.imp_pic, bd=0, command=lambda: ImportTunnel.wg_import_select(self))
|
||||
self.btn_i.grid(column=0, row=2, padx=15, pady=15)
|
||||
self.columnconfigure(0, weight=1)
|
||||
self.rowconfigure(2, weight=1)
|
||||
|
||||
def delete():
|
||||
try:
|
||||
@ -135,45 +136,78 @@ class FrameWidgets(ttk.Frame):
|
||||
os.system('nmcli connection delete ' + str(select_tl))
|
||||
self.l_box.delete(self.select_tunnel[0])
|
||||
os.remove(os.environ['HOME'] + '/tester/' + str(select_tl) + '.conf')
|
||||
try:
|
||||
with open('wg_py.xml', 'r') as fr:
|
||||
lines = fr.readlines()
|
||||
|
||||
with open('wg_py.xml_2', 'w') as fw:
|
||||
for line in lines:
|
||||
|
||||
# strip() is used to remove '\n'
|
||||
# present at the end of each line
|
||||
if line.strip('\n') != select_tl:
|
||||
fw.write(line)
|
||||
print("Deleted")
|
||||
except:
|
||||
print("Oops! someting error")
|
||||
|
||||
if self.a != '' and self.a == select_tl:
|
||||
self.StrVar.set(value='')
|
||||
StartStopBTN.button_start(self)
|
||||
self.l_box.update()
|
||||
# Address Label
|
||||
ShowAddress.label_empty(self)
|
||||
return select_tl
|
||||
except IndexError:
|
||||
pass
|
||||
|
||||
# Button Trash
|
||||
self.btn_tr = tk.Button(self, image=self.tr_pic, bd=0, command=delete)
|
||||
self.btn_tr.grid(column=0, row=3, padx=15, pady=15)
|
||||
self.columnconfigure(0, weight=1)
|
||||
self.rowconfigure(3, weight=1)
|
||||
|
||||
# Button Export
|
||||
self.btn_exp = tk.Button(self, image=self.exp_pic, bd=0, command=ExportTunnels.wg_export)
|
||||
self.btn_exp.grid(column=0, row=4, padx=15, pady=15)
|
||||
self.columnconfigure(0, weight=1)
|
||||
self.rowconfigure(4, weight=1)
|
||||
|
||||
# Button Rename
|
||||
self.btn_rename = ttk.Button(self, text='Rename')
|
||||
self.btn_rename.grid(column=2, row=4, padx=20, pady=15, sticky='e')
|
||||
self.columnconfigure(3, weight=1)
|
||||
self.rowconfigure(4, weight=1)
|
||||
# Check Buttons
|
||||
self.wg_autostart = tk.Checkbutton(self, text='Autoconnect on PC Start')
|
||||
self.wg_autostart.grid(column=1, rowspan=3, row=3)
|
||||
|
||||
self.columnconfigure(1, weight=1)
|
||||
self.rowconfigure(3, weight=1)
|
||||
self.wg_update = tk.Checkbutton(self, text='Search automatically for\nWire-Py updates')
|
||||
self.wg_update.grid(column=1, rowspan=3, row=4)
|
||||
self.columnconfigure(1, weight=1)
|
||||
self.rowconfigure(4, weight=1)
|
||||
# Check Buttons
|
||||
self.selected_option = tk.IntVar()
|
||||
|
||||
self.wg_autostart = tk.Checkbutton(self,
|
||||
text='Autoconnect on:',
|
||||
variable=self.selected_option,
|
||||
command=lambda: FileHandle.box_set(self))
|
||||
on_or_off = open('wg_py.xml', 'r')
|
||||
res = on_or_off.read()
|
||||
if 'true' in res:
|
||||
self.selected_option.set(1)
|
||||
self.auto_con = res
|
||||
self.auto_con = self.auto_con[5:]
|
||||
print(self.auto_con)
|
||||
else:
|
||||
self.wg_autostart.configure(state='disabled')
|
||||
self.auto_con = 'no Autoconnect'
|
||||
on_or_off.close()
|
||||
|
||||
self.wg_autostart.grid(column=1, row=4, sticky='nw')
|
||||
|
||||
self.autoconnect_var = tk.StringVar()
|
||||
self.autoconnect_var.set(self.auto_con)
|
||||
self.autoconnect = tk.Label(self, textvariable=self.autoconnect_var, bd=2, fg='blue', padx=5)
|
||||
self.autoconnect.config(font=('Ubuntu', 11))
|
||||
self.autoconnect.grid(column=1, row=4, sticky='we')
|
||||
|
||||
#self.wg_update = tk.Checkbutton(self, tex='Search automatically for\nWire-Py updates')
|
||||
#self.wg_update.grid(column=1, rowspan=3, row=5)
|
||||
|
||||
def wg_switch(self):
|
||||
self.a = TunnelActiv.active()
|
||||
try:
|
||||
if self.a == '':
|
||||
|
||||
StartStopBTN.button_start(self)
|
||||
self.select_tunnel = self.l_box.curselection()
|
||||
select_tl = self.l_box.get(self.select_tunnel[0])
|
||||
|
50
wg_func.py
50
wg_func.py
@ -216,6 +216,9 @@ class ImportTunnel:
|
||||
ShowAddress.show_data(self)
|
||||
file.close()
|
||||
os.system('nmcli con mod ' + str(self.a) + ' connection.autoconnect no')
|
||||
new_tl = open('wg_py.xml', 'a')
|
||||
new_tl.write('false ' + str(self.a))
|
||||
new_tl.close()
|
||||
if 'PrivateKey = ' not in read:
|
||||
Message()
|
||||
except EOFError:
|
||||
@ -226,6 +229,53 @@ class ImportTunnel:
|
||||
pass
|
||||
|
||||
|
||||
class FileHandle:
|
||||
|
||||
def __init__(self):
|
||||
|
||||
self.auto_con = None
|
||||
self.autoconnect_var = None
|
||||
self.tl = None
|
||||
self.selected_option = None
|
||||
self.l_box = None
|
||||
self.select_tunnel = None
|
||||
|
||||
def box_set(self):
|
||||
|
||||
global replacement
|
||||
try:
|
||||
self.select_tunnel = self.l_box.curselection()
|
||||
select_tl = self.l_box.get(self.select_tunnel[0])
|
||||
if self.selected_option.get() == 0:
|
||||
set_on = open('wg_py.xml', 'r')
|
||||
replacement = ""
|
||||
# using the for loop
|
||||
for line in set_on:
|
||||
line = line.strip()
|
||||
changes = line.replace('true ' + select_tl, 'false ' + select_tl)
|
||||
for tl in self.tl:
|
||||
os.system('nmcli con mod ' + str(tl) + ' connection.autoconnect no')
|
||||
replacement = replacement + changes + "\n"
|
||||
set_on.close()
|
||||
self.autoconnect_var.set('')
|
||||
if self.selected_option.get() == 1:
|
||||
set_on = open('wg_py.xml', 'r')
|
||||
replacement = ""
|
||||
# using the for loop
|
||||
for line in set_on:
|
||||
line = line.strip()
|
||||
changes = line.replace('false ' + select_tl, 'true ' + select_tl)
|
||||
os.system('nmcli con mod ' + str(select_tl) + ' connection.autoconnect yes')
|
||||
replacement = replacement + changes + "\n"
|
||||
set_on.close()
|
||||
set_off = open('wg_py.xml', 'w')
|
||||
set_off.write(replacement)
|
||||
set_off.close()
|
||||
self.autoconnect_var.set(self.auto_con)
|
||||
except IndexError:
|
||||
self.selected_option.set(1)
|
||||
|
||||
|
||||
class ExportTunnels:
|
||||
@staticmethod
|
||||
def wg_export():
|
||||
|
Loading…
x
Reference in New Issue
Block a user