- Add Autoconnect settings to settings.conf
- 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
This commit is contained in:
parent
18e042400c
commit
9d44e7ab42
@ -4,10 +4,14 @@
|
|||||||
<option name="autoReloadType" value="SELECTIVE" />
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="940e1630-c825-4d4c-be80-bc11f543c122" name="Changes" comment="- Optimize Class. Move to wg_main Import Start/StopBTN and Tooltip">
|
<list default="true" id="940e1630-c825-4d4c-be80-bc11f543c122" name="Changes" comment="- Optimize Class and Tooltip">
|
||||||
|
<change afterPath="$PROJECT_DIR$/run_as" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Changelog" beforeDir="false" afterPath="$PROJECT_DIR$/Changelog" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/Changelog" beforeDir="false" afterPath="$PROJECT_DIR$/Changelog" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/testtheme.py" beforeDir="false" />
|
<change beforePath="$PROJECT_DIR$/install" beforeDir="false" afterPath="$PROJECT_DIR$/install" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/settings" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/start_wg.py" beforeDir="false" afterPath="$PROJECT_DIR$/start_wg.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/theme" beforeDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/wg_func.py" beforeDir="false" afterPath="$PROJECT_DIR$/wg_func.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/wg_func.py" beforeDir="false" afterPath="$PROJECT_DIR$/wg_func.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/wg_main.py" beforeDir="false" afterPath="$PROJECT_DIR$/wg_main.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/wg_main.py" beforeDir="false" afterPath="$PROJECT_DIR$/wg_main.py" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
@ -47,24 +51,25 @@
|
|||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
<option name="showLibraryContents" value="true" />
|
<option name="showLibraryContents" value="true" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent"><![CDATA[{
|
<component name="PropertiesComponent">{
|
||||||
"keyToString": {
|
"keyToString": {
|
||||||
"ASKED_ADD_EXTERNAL_FILES": "true",
|
"ASKED_ADD_EXTERNAL_FILES": "true",
|
||||||
"Python.INSTALL.executor": "Run",
|
"Python.INSTALL.executor": "Run",
|
||||||
"Python.install.executor": "Run",
|
"Python.install.executor": "Run",
|
||||||
"Python.main.executor": "Run",
|
"Python.main.executor": "Run",
|
||||||
"Python.messagebox.executor": "Run",
|
"Python.messagebox.executor": "Run",
|
||||||
"Python.start_wg.executor": "Run",
|
"Python.start_wg.executor": "Run",
|
||||||
"Python.testtheme.executor": "Run",
|
"Python.testtheme.executor": "Run",
|
||||||
"Python.wg_func.executor": "Run",
|
"Python.wg_func.executor": "Run",
|
||||||
"Python.wg_main.executor": "Run",
|
"Python.wg_main.executor": "Run",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
"Shell Script.install.executor": "Run",
|
"Shell Script.install.executor": "Run",
|
||||||
"git-widget-placeholder": "main",
|
"Shell Script.run_as.executor": "Run",
|
||||||
"last_opened_file_path": "/home/punix/Pyapps/wire-py",
|
"git-widget-placeholder": "main",
|
||||||
"settings.editor.selected.configurable": "reference.settingsdialog.IDE.editor.colors"
|
"last_opened_file_path": "/home/punix/Pyapps/wire-py",
|
||||||
|
"settings.editor.selected.configurable": "reference.settingsdialog.IDE.editor.colors"
|
||||||
}
|
}
|
||||||
}]]></component>
|
}</component>
|
||||||
<component name="RecentsManager">
|
<component name="RecentsManager">
|
||||||
<key name="CopyFile.RECENT_KEYS">
|
<key name="CopyFile.RECENT_KEYS">
|
||||||
<recent name="$PROJECT_DIR$" />
|
<recent name="$PROJECT_DIR$" />
|
||||||
@ -143,14 +148,6 @@
|
|||||||
<option name="presentableId" value="Default" />
|
<option name="presentableId" value="Default" />
|
||||||
<updated>1723279982210</updated>
|
<updated>1723279982210</updated>
|
||||||
</task>
|
</task>
|
||||||
<task id="LOCAL-00016" summary="fix label when laat Tunnel delete and fix Tuple error in delete and Start/Stop when listbox empty">
|
|
||||||
<option name="closed" value="true" />
|
|
||||||
<created>1724495688099</created>
|
|
||||||
<option name="number" value="00016" />
|
|
||||||
<option name="presentableId" value="LOCAL-00016" />
|
|
||||||
<option name="project" value="LOCAL" />
|
|
||||||
<updated>1724495688099</updated>
|
|
||||||
</task>
|
|
||||||
<task id="LOCAL-00017" summary="remove a ',' in DNS Name">
|
<task id="LOCAL-00017" summary="remove a ',' in DNS Name">
|
||||||
<option name="closed" value="true" />
|
<option name="closed" value="true" />
|
||||||
<created>1724576599289</created>
|
<created>1724576599289</created>
|
||||||
@ -535,7 +532,15 @@
|
|||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1729593628908</updated>
|
<updated>1729593628908</updated>
|
||||||
</task>
|
</task>
|
||||||
<option name="localTasksCounter" value="65" />
|
<task id="LOCAL-00065" summary="- Optimize Class and Tooltip">
|
||||||
|
<option name="closed" value="true" />
|
||||||
|
<created>1729938941026</created>
|
||||||
|
<option name="number" value="00065" />
|
||||||
|
<option name="presentableId" value="LOCAL-00065" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1729938941027</updated>
|
||||||
|
</task>
|
||||||
|
<option name="localTasksCounter" value="66" />
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="UnknownFeatures">
|
<component name="UnknownFeatures">
|
||||||
@ -576,7 +581,6 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="VcsManagerConfiguration">
|
<component name="VcsManagerConfiguration">
|
||||||
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
|
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
|
||||||
<MESSAGE value="fix set rights in install and a .conf a import Tunnel Filedialog Part 1 /home when open" />
|
|
||||||
<MESSAGE value="fix a filedialog for hidden Files work install rollback to bash for start wirepy and wirepy rollback to bash" />
|
<MESSAGE value="fix a filedialog for hidden Files work install rollback to bash for start wirepy and wirepy rollback to bash" />
|
||||||
<MESSAGE value="install rollback bash to py wirepy and wirepy rollback to py" />
|
<MESSAGE value="install rollback bash to py wirepy and wirepy rollback to py" />
|
||||||
<MESSAGE value="fix install and .desktop File Tar works now for user home and filebrowser.askfilebrowser start now in user home" />
|
<MESSAGE value="fix install and .desktop File Tar works now for user home and filebrowser.askfilebrowser start now in user home" />
|
||||||
@ -601,6 +605,18 @@
|
|||||||
<MESSAGE value=" - Theme modify to water-theme - add ttk.Menubutton vor modern Menu and automatic theme and textvariable for color on font in menu" />
|
<MESSAGE value=" - Theme modify to water-theme - add ttk.Menubutton vor modern Menu and automatic theme and textvariable for color on font in menu" />
|
||||||
<MESSAGE value=" - Add Options, Help, Update Label and Update Menubutton - Theme now separate Light and Dark" />
|
<MESSAGE value=" - Add Options, Help, Update Label and Update Menubutton - Theme now separate Light and Dark" />
|
||||||
<MESSAGE value="- Optimize Class. Move to wg_main Import Start/StopBTN and Tooltip" />
|
<MESSAGE value="- Optimize Class. Move to wg_main Import Start/StopBTN and Tooltip" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="- Optimize Class. Move to wg_main Import Start/StopBTN and Tooltip" />
|
<MESSAGE value="- Optimize Class and Tooltip" />
|
||||||
|
<option name="LAST_COMMIT_MESSAGE" value="- Optimize Class and Tooltip" />
|
||||||
|
</component>
|
||||||
|
<component name="XDebuggerManager">
|
||||||
|
<breakpoint-manager>
|
||||||
|
<breakpoints>
|
||||||
|
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||||
|
<url>file://$PROJECT_DIR$/start_wg.py</url>
|
||||||
|
<line>1</line>
|
||||||
|
<option name="timeStamp" value="2" />
|
||||||
|
</line-breakpoint>
|
||||||
|
</breakpoints>
|
||||||
|
</breakpoint-manager>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
19
Changelog
19
Changelog
@ -4,12 +4,23 @@ My standard System: Linux Mint 22 Cinnamon
|
|||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
- os import in wg_func replaced by other methods
|
- os import in wg_func replaced by other methods
|
||||||
- Guide to menu '?' with pictures
|
|
||||||
- In Gitea Readme enter text, images
|
|
||||||
- Own filedialog for import
|
|
||||||
- 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
|
||||||
- Keeping Classes Together
|
- Update search after start of Wire-Py
|
||||||
|
|
||||||
|
|
||||||
|
### Added
|
||||||
|
27-10-2024
|
||||||
|
|
||||||
|
- Add Autoconnect settings to settings.conf
|
||||||
|
|
||||||
|
|
||||||
|
### Added
|
||||||
|
26-10-2024
|
||||||
|
|
||||||
|
- 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
|
||||||
|
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
16
install
16
install
@ -7,8 +7,8 @@ BLUE='\033[30;1;34m'
|
|||||||
install_file_with(){
|
install_file_with(){
|
||||||
clear
|
clear
|
||||||
sudo apt install python3-tk && \
|
sudo apt install python3-tk && \
|
||||||
sudo cp -u wg_main.py start_wg.py wg_func.py wirepy.py /usr/bin/ && \
|
sudo cp -u wg_main.py start_wg.py wg_func.py wirepy.py run_as open_gitea.py /usr/bin/ && \
|
||||||
sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && sudo cp -u settings theme /etc/wire_py/ && \
|
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 /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \
|
sudo cp -uR wp-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 ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \
|
sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \
|
||||||
@ -21,8 +21,8 @@ install_file_with(){
|
|||||||
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 wg_func.py wirepy.py /usr/bin/ && \
|
sudo cp -u wg_main.py start_wg.py wg_func.py wirepy.py run_as open_gitea.py /usr/bin/ && \
|
||||||
sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && sudo cp -u settings theme /etc/wire_py/ && \
|
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 /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \
|
sudo cp -uR wp-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 ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \
|
sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \
|
||||||
@ -89,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 wg_func.py wirepy.py /usr/bin/ && \
|
sudo cp -u wg_main.py start_wg.py wg_func.py wirepy.py run_as open_gitea.py /usr/bin/ && \
|
||||||
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 theme /etc/wire_py/ && \
|
sudo cp -u settings.conf /etc/wire_py/ && \
|
||||||
sudo cp -uR wp-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \
|
sudo cp -uR wp-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 ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \
|
sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \
|
||||||
@ -105,9 +105,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 wg_func.py wirepy.py /usr/bin/ && \
|
sudo cp -u wg_main.py start_wg.py wg_func.py wirepy.py run_as open_gitea.py /usr/bin/ && \
|
||||||
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 theme /etc/wire_py/ && \
|
sudo cp -u settings.conf /etc/wire_py/ && \
|
||||||
sudo cp -uR wp-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \
|
sudo cp -uR wp-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 ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \
|
sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \
|
||||||
|
@ -2,10 +2,12 @@
|
|||||||
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/wg_py')
|
path_to_file = Path('/etc/wire_py/settings.conf')
|
||||||
|
|
||||||
if Path.exists(path_to_file):
|
with open(path_to_file, 'r') as a_con:
|
||||||
a_con = Path.read_text(path_to_file)
|
lines = a_con.readlines()
|
||||||
|
a_con = lines[7].strip()
|
||||||
|
if a_con != 'off':
|
||||||
check_call(['nmcli', 'connection', 'up', a_con])
|
check_call(['nmcli', 'connection', 'up', a_con])
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
|
67
wg_func.py
67
wg_func.py
@ -16,14 +16,11 @@ import requests
|
|||||||
''' 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. 1.10.2124'
|
version = 'v. 1.10.2124'
|
||||||
|
|
||||||
path_to_file = Path('/etc/wire_py/wg_py')
|
path_to_file2 = Path('/etc/wire_py/settings.conf')
|
||||||
path_to_file2 = Path('/etc/wire_py/settings')
|
|
||||||
path_to_file3 = Path('/etc/wire_py/theme')
|
|
||||||
_u = Path.read_text(Path('/tmp/_u'))
|
_u = Path.read_text(Path('/tmp/_u'))
|
||||||
|
|
||||||
UPDATE_API_URL = 'https://git.ilunix.de/api/v1/repos/punix/Wire-Py/releases'
|
UPDATE_API_URL = 'https://git.ilunix.de/api/v1/repos/punix/Wire-Py/releases'
|
||||||
|
|
||||||
tips = True
|
|
||||||
|
|
||||||
class WirePyUpdate:
|
class WirePyUpdate:
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -34,7 +31,7 @@ class WirePyUpdate:
|
|||||||
response_dict = response_dict[0]
|
response_dict = response_dict[0]
|
||||||
with open(path_to_file2, 'r') as set_file:
|
with open(path_to_file2, 'r') as set_file:
|
||||||
set_file = set_file.read()
|
set_file = set_file.read()
|
||||||
if 'Update on' in set_file:
|
if 'on\n' in set_file:
|
||||||
if version[3:] != response_dict['tag_name']:
|
if version[3:] != response_dict['tag_name']:
|
||||||
return response_dict['tag_name']
|
return response_dict['tag_name']
|
||||||
else:
|
else:
|
||||||
@ -78,7 +75,8 @@ class WirePyUpdate:
|
|||||||
res = WirePyUpdate.api_down()
|
res = WirePyUpdate.api_down()
|
||||||
|
|
||||||
|
|
||||||
def msg_window(img_w, img_i, w_title, w_txt):
|
|
||||||
|
def msg_window(img_w, img_i, w_title, w_txt, txt2=None, com=None):
|
||||||
"""
|
"""
|
||||||
Function for different message windows for the user. with 4 arguments to be passed.
|
Function for different message windows for the user. with 4 arguments to be passed.
|
||||||
To create messages with your own images, icons, and titles. As an alternative to Python Messagebox.
|
To create messages with your own images, icons, and titles. As an alternative to Python Messagebox.
|
||||||
@ -95,13 +93,25 @@ def msg_window(img_w, img_i, w_title, w_txt):
|
|||||||
msg.configure(pady=15, padx=15)
|
msg.configure(pady=15, padx=15)
|
||||||
msg.img = tk.PhotoImage(file=img_w)
|
msg.img = tk.PhotoImage(file=img_w)
|
||||||
msg.i_window = tk.Label(msg, image=msg.img)
|
msg.i_window = tk.Label(msg, image=msg.img)
|
||||||
msg.i_window.grid(column=0, row=0)
|
|
||||||
label = tk.Label(msg, text=w_txt)
|
label = tk.Label(msg, text=w_txt)
|
||||||
label.config(font=('Ubuntu', 11), padx=15)
|
|
||||||
label.grid(column=1, row=0)
|
label.grid(column=1, row=0)
|
||||||
|
|
||||||
|
if txt2 != None and com != None:
|
||||||
|
label.config(font=('Ubuntu', 11), padx=15, justify='left')
|
||||||
|
msg.i_window.grid(column=0, row=0, sticky='nw')
|
||||||
|
button2 = ttk.Button(msg, text=f'{txt2}', command=com, padding=4)
|
||||||
|
button2.grid(column=0, row=1, sticky='e', columnspan=2)
|
||||||
|
button = ttk.Button(msg, text='OK', command=msg.destroy, padding=4)
|
||||||
|
button.grid(column=0, row=1, sticky='w', columnspan=2)
|
||||||
|
|
||||||
|
else:
|
||||||
|
label.config(font=('Ubuntu', 11), padx=15)
|
||||||
|
msg.i_window.grid(column=0, row=0)
|
||||||
button = ttk.Button(msg, text='OK', command=msg.destroy, padding=4)
|
button = ttk.Button(msg, text='OK', command=msg.destroy, padding=4)
|
||||||
button.config()
|
|
||||||
button.grid(column=0, columnspan=2, row=1)
|
button.grid(column=0, columnspan=2, row=1)
|
||||||
|
|
||||||
img_i = tk.PhotoImage(file=img_i)
|
img_i = tk.PhotoImage(file=img_i)
|
||||||
msg.iconphoto(True, img_i)
|
msg.iconphoto(True, img_i)
|
||||||
msg.columnconfigure(0, weight=1)
|
msg.columnconfigure(0, weight=1)
|
||||||
@ -128,8 +138,9 @@ class Tunnel:
|
|||||||
self.add = None
|
self.add = None
|
||||||
|
|
||||||
def color(self):
|
def color(self):
|
||||||
with open(path_to_file3, 'r') as read_file:
|
with open(path_to_file2, 'r') as read_file:
|
||||||
if 'light' in read_file:
|
lines = read_file.readlines()
|
||||||
|
if 'light\n' in lines:
|
||||||
self.lb_tunnel = ttk.Label(self, textvariable=self.StrVar, foreground='green')
|
self.lb_tunnel = ttk.Label(self, textvariable=self.StrVar, foreground='green')
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@ -280,8 +291,7 @@ class Tunnel:
|
|||||||
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', missing_ok=True)
|
Path.unlink(Path(source) / 'settings.conf', missing_ok=True)
|
||||||
Path.unlink(Path(source) / 'theme', 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)
|
||||||
@ -316,6 +326,16 @@ class Tunnel:
|
|||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def if_tip():
|
||||||
|
with open(path_to_file2, 'r') as set_file2:
|
||||||
|
lines2 = set_file2.readlines()
|
||||||
|
if 'False\n' in lines2:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return True
|
||||||
|
|
||||||
|
tips = Tunnel.if_tip()
|
||||||
|
|
||||||
class FileHandle:
|
class FileHandle:
|
||||||
"""
|
"""
|
||||||
@ -341,14 +361,23 @@ class FileHandle:
|
|||||||
select_tl = self.l_box.get(select_tunnel[0])
|
select_tl = self.l_box.get(select_tunnel[0])
|
||||||
|
|
||||||
if self.selected_option.get() == 0:
|
if self.selected_option.get() == 0:
|
||||||
Path.unlink(path_to_file)
|
with open(path_to_file2, 'r') as set_file3:
|
||||||
|
lines3 = set_file3.readlines()
|
||||||
|
lines3[7] = 'off'
|
||||||
|
with open(path_to_file2, 'w') as set_file3:
|
||||||
|
set_file3.writelines(lines3)
|
||||||
|
|
||||||
tl = Tunnel.list()
|
tl = Tunnel.list()
|
||||||
|
|
||||||
if len(tl) == 0:
|
if len(tl) == 0:
|
||||||
self.wg_autostart.configure(state='disabled')
|
self.wg_autostart.configure(state='disabled')
|
||||||
|
|
||||||
if self.selected_option.get() >= 1:
|
if self.selected_option.get() >= 1:
|
||||||
Path.write_text(path_to_file, select_tl)
|
with open(path_to_file2, 'r') as set_file3:
|
||||||
|
lines3 = set_file3.readlines()
|
||||||
|
lines3[7] = select_tl
|
||||||
|
with open(path_to_file2, 'w') as set_file3:
|
||||||
|
set_file3.writelines(lines3)
|
||||||
|
|
||||||
except IndexError:
|
except IndexError:
|
||||||
self.selected_option.set(1)
|
self.selected_option.set(1)
|
||||||
@ -373,13 +402,13 @@ class OnOff:
|
|||||||
self.lb_frame_buttons = None
|
self.lb_frame_buttons = None
|
||||||
|
|
||||||
def on_off(self):
|
def on_off(self):
|
||||||
|
with open(path_to_file2, 'r') as set_file4:
|
||||||
|
lines4 = set_file4.readlines()
|
||||||
|
|
||||||
if Path.exists(path_to_file):
|
if lines4[7] != 'off':
|
||||||
self.selected_option.set(1)
|
self.selected_option.set(1)
|
||||||
self.autoconnect_var.set('')
|
self.autoconnect_var.set('')
|
||||||
if not Path.is_dir(Path('/etc/wire_py')):
|
self.auto_con = lines4[7]
|
||||||
Path.mkdir(Path('/etc/wire_py'))
|
|
||||||
self.auto_con = Path.read_text(path_to_file)
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
|
133
wg_main.py
133
wg_main.py
@ -8,8 +8,7 @@ from subprocess import check_call
|
|||||||
from tkinter import *
|
from tkinter import *
|
||||||
from tkinter import filedialog, ttk
|
from tkinter import filedialog, ttk
|
||||||
|
|
||||||
from wg_func import (Tunnel, FileHandle, OnOff, msg_window, WirePyUpdate, res, _u, version, path_to_file2,
|
from wg_func import (Tunnel, FileHandle, OnOff, msg_window, WirePyUpdate, res, _u, version, path_to_file2, tips)
|
||||||
path_to_file3, tips)
|
|
||||||
|
|
||||||
tcl_path = Path('/usr/share/TK-Themes')
|
tcl_path = Path('/usr/share/TK-Themes')
|
||||||
|
|
||||||
@ -31,8 +30,9 @@ class MainWindow(tk.Tk):
|
|||||||
self.style = ttk.Style(self)
|
self.style = ttk.Style(self)
|
||||||
self.tk.call('source', str(tcl_path) + '/water.tcl')
|
self.tk.call('source', str(tcl_path) + '/water.tcl')
|
||||||
#self.tk.call('source', 'TK-Themes/water.tcl')
|
#self.tk.call('source', 'TK-Themes/water.tcl')
|
||||||
with open(path_to_file3, 'r') as read_file:
|
with open(path_to_file2, 'r') as read_file:
|
||||||
if 'light' in read_file:
|
lines = read_file.readlines()
|
||||||
|
if 'light\n' in lines:
|
||||||
self.tk.call('set_theme', 'light')
|
self.tk.call('set_theme', 'light')
|
||||||
else:
|
else:
|
||||||
self.tk.call('set_theme', 'dark')
|
self.tk.call('set_theme', 'dark')
|
||||||
@ -44,42 +44,77 @@ class MainWindow(tk.Tk):
|
|||||||
self.iconphoto(True, self.wg_icon)
|
self.iconphoto(True, self.wg_icon)
|
||||||
|
|
||||||
#Set on or off in file
|
#Set on or off in file
|
||||||
def on_off():
|
def update():
|
||||||
if set_option.get() == 1:
|
if set_update.get() == 1:
|
||||||
|
with open(path_to_file2, 'r') as set_file2:
|
||||||
|
lines2 = set_file2.readlines()
|
||||||
|
lines2[1] = 'off\n'
|
||||||
with open(path_to_file2, 'w') as set_file2:
|
with open(path_to_file2, 'w') as set_file2:
|
||||||
set_file2.write('Update off')
|
set_file2.writelines(lines2)
|
||||||
|
|
||||||
if set_option.get() == 0:
|
if set_update.get() == 0:
|
||||||
|
with open(path_to_file2, 'r') as set_file2:
|
||||||
|
lines2 = set_file2.readlines()
|
||||||
|
lines2[1] = 'on\n'
|
||||||
with open(path_to_file2, 'w') as set_file2:
|
with open(path_to_file2, 'w') as set_file2:
|
||||||
set_file2.write('Update on')
|
set_file2.writelines(lines2)
|
||||||
|
|
||||||
|
#Set on or off in file
|
||||||
|
def tooltip():
|
||||||
|
if set_tip.get():
|
||||||
|
print(set_tip.get())
|
||||||
|
with open(path_to_file2, 'r') as set_file2:
|
||||||
|
lines2 = set_file2.readlines()
|
||||||
|
lines2[5] = 'False\n'
|
||||||
|
with open(path_to_file2, 'w') as set_file2:
|
||||||
|
set_file2.writelines(lines2)
|
||||||
|
|
||||||
|
else:
|
||||||
|
with open(path_to_file2, 'r') as set_file2:
|
||||||
|
lines2 = set_file2.readlines()
|
||||||
|
lines2[5] = 'True\n'
|
||||||
|
with open(path_to_file2, 'w') as set_file2:
|
||||||
|
set_file2.writelines(lines2)
|
||||||
|
|
||||||
# Set dark or light
|
# Set dark or light
|
||||||
def theme_change_light():
|
def theme_change_light():
|
||||||
if self.tk.call("ttk::style", "theme", "use") == "water-dark":
|
if self.tk.call("ttk::style", "theme", "use") == "water-dark":
|
||||||
# Set light theme
|
# Set light theme
|
||||||
self.tk.call('set_theme', 'light')
|
self.tk.call('set_theme', 'light')
|
||||||
with open(path_to_file3, 'w') as theme_set2:
|
with open(path_to_file2, 'r') as theme_set2:
|
||||||
theme_set2.write('light')
|
lines3 = theme_set2.readlines()
|
||||||
|
lines3[3] = 'light\n'
|
||||||
|
with open(path_to_file2, 'w') as theme_set2:
|
||||||
|
theme_set2.writelines(lines3)
|
||||||
|
|
||||||
def theme_change_dark():
|
def theme_change_dark():
|
||||||
if not self.tk.call("ttk::style", "theme", "use") == "water-dark":
|
if not self.tk.call("ttk::style", "theme", "use") == "water-dark":
|
||||||
# Set dark theme
|
# Set dark theme
|
||||||
self.tk.call('set_theme', 'dark')
|
self.tk.call('set_theme', 'dark')
|
||||||
with open(path_to_file3, 'w') as theme_set2:
|
with open(path_to_file2, 'r') as theme_set2:
|
||||||
theme_set2.write('dark')
|
lines4 = theme_set2.readlines()
|
||||||
|
lines4[3] = 'dark\n'
|
||||||
|
with open(path_to_file2, 'w') as theme_set2:
|
||||||
|
theme_set2.writelines(lines4)
|
||||||
|
|
||||||
def info():
|
def info():
|
||||||
"""img_w, img_i, w_title, w_txt hand over"""
|
def link_btn():
|
||||||
|
_u1 = str(_u[6:])
|
||||||
|
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"""
|
||||||
iw = r'/usr/share/icons/wp-icons/48/wg_vpn.png'
|
iw = r'/usr/share/icons/wp-icons/48/wg_vpn.png'
|
||||||
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
|
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
|
||||||
wt = 'Instruction'
|
wt = 'Info'
|
||||||
msg_t = ('Wire-Py: Wireguard Gui for Linux systems.\n\n'
|
msg_t = ('Wire-Py a simple Wireguard Gui for Linux systems.\n\n'
|
||||||
'Wire-Py is open source software written in Python.\n\n'
|
'Wire-Py is open source software written in Python.\n\n'
|
||||||
'Email: polunga40@unity-mail.de also likes for donation.\n\n'
|
'Email: polunga40@unity-mail.de also likes for donation.\n\n'
|
||||||
'https://git.ilunix.de/punix/Wire-P\n\n'
|
|
||||||
'Use without warranty!\n')
|
'Use without warranty!\n')
|
||||||
|
txt2 = 'Go to Wire-Py git'
|
||||||
|
com = link_btn
|
||||||
|
|
||||||
msg_window(iw, ii, wt, msg_t)
|
msg_window(iw, ii, wt, msg_t, txt2, com)
|
||||||
|
|
||||||
''' Frame for Menu '''
|
''' Frame for Menu '''
|
||||||
self.menu_frame = ttk.Frame(self)
|
self.menu_frame = ttk.Frame(self)
|
||||||
@ -119,39 +154,34 @@ class MainWindow(tk.Tk):
|
|||||||
self.options_btn.bind('<Enter>', sets_enter)
|
self.options_btn.bind('<Enter>', sets_enter)
|
||||||
self.options_btn.bind('<Leave>', sets_leave)
|
self.options_btn.bind('<Leave>', sets_leave)
|
||||||
|
|
||||||
set_option = tk.IntVar()
|
set_update = tk.IntVar()
|
||||||
|
set_tip = tk.BooleanVar()
|
||||||
self.settings = tk.Menu(self)
|
self.settings = tk.Menu(self, relief='flat')
|
||||||
self.options_btn.configure(menu=self.settings, style='Toolbutton')
|
self.options_btn.configure(menu=self.settings, style='Toolbutton')
|
||||||
self.settings.add_checkbutton(label='Disable updates', command=on_off, variable=set_option)
|
self.settings.add_checkbutton(label='Disable Updates', command=update, variable=set_update)
|
||||||
|
self.settings.add_checkbutton(label='Disable Tooltips', command=tooltip, variable=set_tip)
|
||||||
self.settings.add_command(label='Light', command=theme_change_light)
|
self.settings.add_command(label='Light', command=theme_change_light)
|
||||||
self.settings.add_command(label='Dark', command=theme_change_dark)
|
self.settings.add_command(label='Dark', command=theme_change_dark)
|
||||||
|
|
||||||
''' About BTN Menu / Label '''
|
''' About BTN Menu / Label '''
|
||||||
self.about_btn = ttk.Menubutton(self.menu_frame, text='About')
|
self.about_btn = ttk.Button(self.menu_frame, text='About', style='Toolbutton', command=info)
|
||||||
self.about_btn.grid(column=2, row=0)
|
self.about_btn.grid(column=2, row=0)
|
||||||
|
|
||||||
def about_enter(event):
|
|
||||||
""" The mouse moves into the entry widget """
|
|
||||||
window.my_tool_tip = MyToolTip(event.x_root, event.y_root, 'Click for Info')
|
|
||||||
|
|
||||||
def about_leave(_):
|
|
||||||
""" The mouse moves from the entry widget """
|
|
||||||
''' Remove Tool-Tip '''
|
|
||||||
window.my_tool_tip.destroy()
|
|
||||||
|
|
||||||
self.about_btn.bind('<Enter>', about_enter)
|
|
||||||
self.about_btn.bind('<Leave>', about_leave)
|
|
||||||
self.readme = tk.Menu(self)
|
self.readme = tk.Menu(self)
|
||||||
self.about_btn.configure(menu=self.readme, style='Toolbutton')
|
|
||||||
self.readme.add_command(label='Info', command=info)
|
|
||||||
|
|
||||||
''' Update Label '''
|
''' Update and Tooltip Label '''
|
||||||
self.updates_lb = ttk.Label(self.menu_frame)
|
self.updates_lb = ttk.Label(self.menu_frame)
|
||||||
self.updates_lb.grid(column=3, row=0, padx=10)
|
self.updates_lb.grid(column=3, row=0, padx=10)
|
||||||
|
|
||||||
|
'''View Checkbox for enable or disable Tooltip '''
|
||||||
|
if tips:
|
||||||
|
set_tip.set(value=False)
|
||||||
|
else:
|
||||||
|
set_tip.set(value=True)
|
||||||
|
|
||||||
|
'''View Checkbox for enable or disable Updates '''
|
||||||
if res == 'False':
|
if res == 'False':
|
||||||
set_option.set(value=1)
|
set_update.set(value=1)
|
||||||
self.updates_lb.configure(text='Update search off')
|
self.updates_lb.configure(text='Update search off')
|
||||||
|
|
||||||
def disable_enter(event):
|
def disable_enter(event):
|
||||||
@ -183,11 +213,10 @@ class MainWindow(tk.Tk):
|
|||||||
self.updates_lb.bind('<Enter>', congratulations_enter)
|
self.updates_lb.bind('<Enter>', congratulations_enter)
|
||||||
self.updates_lb.bind('<Leave>', congratulations_leave)
|
self.updates_lb.bind('<Leave>', congratulations_leave)
|
||||||
else:
|
else:
|
||||||
set_option.set(value=0)
|
set_update.set(value=0)
|
||||||
text = f'Update {res} available!'
|
text = f'Update {res} available!'
|
||||||
|
|
||||||
''' Update BTN Menu'''
|
''' Update BTN Menu'''
|
||||||
|
|
||||||
self.update_btn = ttk.Menubutton(self.menu_frame, text=text)
|
self.update_btn = ttk.Menubutton(self.menu_frame, text=text)
|
||||||
self.update_btn.grid(column=4, row=0, padx=0)
|
self.update_btn.grid(column=4, row=0, padx=0)
|
||||||
|
|
||||||
@ -204,7 +233,7 @@ class MainWindow(tk.Tk):
|
|||||||
self.update_btn.bind('<Enter>', download_enter)
|
self.update_btn.bind('<Enter>', download_enter)
|
||||||
self.update_btn.bind('<Leave>', download_leave)
|
self.update_btn.bind('<Leave>', download_leave)
|
||||||
|
|
||||||
self.download = tk.Menu(self)
|
self.download = tk.Menu(self, relief='flat')
|
||||||
|
|
||||||
self.update_btn.configure(menu=self.download, style='Toolbutton')
|
self.update_btn.configure(menu=self.download, style='Toolbutton')
|
||||||
self.download.add_command(label='Download', command=WirePyUpdate.download)
|
self.download.add_command(label='Download', command=WirePyUpdate.download)
|
||||||
@ -631,14 +660,15 @@ class FrameWidgets(ttk.Frame):
|
|||||||
pre_key = key[3]
|
pre_key = key[3]
|
||||||
check_call(['nmcli', 'connection', 'delete', select_tl])
|
check_call(['nmcli', 'connection', 'delete', select_tl])
|
||||||
self.l_box.delete(self.select_tunnel[0])
|
self.l_box.delete(self.select_tunnel[0])
|
||||||
if Path.is_file(Path('/etc/wire_py/wg_py')):
|
with open(path_to_file2, 'r') as set_file6:
|
||||||
path_to_file = Path('/etc/wire_py') / 'wg_py'
|
lines6 = set_file6.readlines()
|
||||||
a_con = Path.read_text(path_to_file)
|
if select_tl == lines6[7].strip() and not 'off' in lines6[7].strip():
|
||||||
if select_tl == a_con:
|
lines6[7] = 'off'
|
||||||
|
with open(path_to_file2, 'w') as set_file7:
|
||||||
|
set_file7.writelines(lines6)
|
||||||
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_to_file)
|
|
||||||
Path.unlink(Path('/etc/wire_py') / str(select_tl + '.conf'))
|
Path.unlink(Path('/etc/wire_py') / str(select_tl + '.conf'))
|
||||||
with open('/etc/wire_py/.keys', 'r') as readfile:
|
with open('/etc/wire_py/.keys', 'r') as readfile:
|
||||||
with open('/etc/wire_py/.keys2', 'w') as writefile:
|
with open('/etc/wire_py/.keys2', 'w') as writefile:
|
||||||
@ -853,12 +883,13 @@ class FrameWidgets(ttk.Frame):
|
|||||||
if self.a != '' and self.a == select_tl:
|
if self.a != '' and self.a == select_tl:
|
||||||
self.a = Tunnel.active()
|
self.a = Tunnel.active()
|
||||||
self.StrVar.set(value=self.a)
|
self.StrVar.set(value=self.a)
|
||||||
if Path.is_file(Path('/etc/wire_py/wg_py')):
|
with open(path_to_file2, 'r') as set_file5:
|
||||||
path_to_file = Path('/etc/wire_py') / 'wg_py'
|
lines5 = set_file5.readlines()
|
||||||
a_con = Path.read_text(path_to_file)
|
if select_tl == lines5[7].strip() and not 'off' in lines5[7].strip():
|
||||||
if select_tl == a_con:
|
lines5[7] = new_a_connect
|
||||||
|
with open(path_to_file2, 'w') as theme_set5:
|
||||||
|
theme_set5.writelines(lines5)
|
||||||
self.autoconnect_var.set(value=new_a_connect)
|
self.autoconnect_var.set(value=new_a_connect)
|
||||||
Path.write_text(path_to_file, new_a_connect)
|
|
||||||
|
|
||||||
return select_tl
|
return select_tl
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user