29 Commits

Author SHA1 Message Date
862cc91fa1 Merge pull request '1.11.2124' (#30) from 1.11.2124 into main
Reviewed-on: #30
2024-11-17 13:04:26 +01:00
22abe9f8b9 Merge pull request '- Update Translate Files' (#29) from 1.11.1924 into main
Reviewed-on: #29
2024-11-17 12:13:23 +01:00
8754e7ecda Merge pull request '- Update Translate Files' (#28) from 1.11.1824 into main
Reviewed-on: #28
2024-11-17 11:48:24 +01:00
6b75713121 Merge pull request '1.11.1824' (#27) from 1.11.1824 into main
Reviewed-on: #27
2024-11-17 11:45:10 +01:00
b68908eaef Merge pull request '1.11.1124' (#25) from 1.11.1124 into main
Reviewed-on: #25
2024-11-13 17:51:07 +01:00
66dd27cc64 Merge pull request '1.11.1024' (#24) from 1.11.1024 into main
Reviewed-on: #24
2024-11-10 17:57:57 +01:00
03a7e48018 Merge pull request '1.11.0824' (#23) from 1.11.0824 into main
Reviewed-on: #23
2024-11-08 21:24:31 +01:00
090842ab28 wg_func.py aktualisiert 2024-11-08 21:23:59 +01:00
9eb99f0859 Changelog aktualisiert
Changelog  updated
2024-11-07 19:30:08 +01:00
feb6217637 wg_func.py aktualisiert
Version number adjusted
2024-11-07 19:27:57 +01:00
5f6aaa6cf1 Merge pull request '1.11.0724' (#22) from 1.11.0724 into main
Reviewed-on: #22
2024-11-07 19:16:22 +01:00
63ed0abc98 testtheme.py gelöscht 2024-10-26 12:31:53 +02:00
3102c685fd Merge pull request '1.10.2124' (#21) from 1.10.2124 into main
Reviewed-on: #21
2024-10-22 12:41:47 +02:00
ec10f912ea Merge pull request '- Fix a ConToDict Class when Endpoint not in Wireguard config file' (#20) from 1.10.2024 into main
Reviewed-on: #20
2024-10-20 12:20:41 +02:00
96164eb132 Merge pull request '- Add Options, Help, Update Label and Update Menubutton' (#19) from 1.10.2024 into main
Reviewed-on: #19
2024-10-20 02:15:23 +02:00
a19f889950 Merge pull request '1.10.1924' (#18) from 1.10.1924 into main
Reviewed-on: #18
2024-10-19 18:06:55 +02:00
de2929896d Merge pull request '- Create file for settings (Autoupdate)' (#17) from 1.10.1224 into main
Reviewed-on: #17
2024-10-12 13:39:04 +02:00
f9d4256679 Merge pull request 'Fix msg_window and remove x , y argument' (#16) from 1.10.0424 into main
Reviewed-on: #16
2024-10-04 21:01:26 +02:00
a0b895438c Merge pull request '28-09-2024' (#15) from 28-09-2024 into main
Reviewed-on: #15
2024-09-28 14:17:38 +02:00
4c89488950 Merge pull request 'wire-py-reformat-14-09-2024' (#14) from wire-py-reformat-14-09-2024 into main
Reviewed-on: #14
2024-09-14 23:31:00 +02:00
c0ae2d2b75 Merge pull request 'wire-py-reformat-14-08-2024' (#13) from wire-py-reformat-14-08-2024 into main
Reviewed-on: #13
2024-09-05 22:22:00 +02:00
e4774abf19 Merge pull request 'fixes on empty Listbox now is disable and now works autoconnect label with read and write, delete works now with read and write' (#12) from wire-py-reformat-14-08-2024 into main
Reviewed-on: #12
2024-09-04 20:55:51 +02:00
7b1e543428 Merge pull request 'add if question and add autoconnect, autoconnect_var to class Filehandle in box_set no finish!' (#11) from wire-py-reformat-14-08-2024 into main
Reviewed-on: #11
2024-09-04 09:20:05 +02:00
6f83fc7162 Merge pull request 'wire-py-reformat-14-08-2024' (#10) from wire-py-reformat-14-08-2024 into main
Reviewed-on: #10
2024-09-04 06:26:30 +02:00
b70400b456 Merge pull request 'wire-py-reformat-14-08-2024' (#9) from wire-py-reformat-14-08-2024 into main
Reviewed-on: #9
2024-08-25 20:32:05 +02:00
e25bc154ea Merge pull request 'wire-py-reformat-14-08-2024' (#8) from wire-py-reformat-14-08-2024 into main
Reviewed-on: #8
2024-08-23 18:00:19 +02:00
7aa3cd75fe Merge pull request 'Set Style to Clam' (#7) from wire-py-reformat-14-08-2024 into main
Reviewed-on: #7
2024-08-21 22:52:27 +02:00
0b9eec8d1d Merge pull request 'add Class StartStopBTN to wg_func.py' (#6) from wire-py-reformat-14-08-2024 into main
Reviewed-on: #6
2024-08-21 12:52:51 +02:00
b9083d4698 Merge pull request 'add file dict_to_address for' (#5) from wire-py-reformat-14-08-2024 into main
Reviewed-on: #5
2024-08-21 12:00:18 +02:00
17 changed files with 209 additions and 207 deletions

214
.idea/workspace.xml generated
View File

@ -4,9 +4,21 @@
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="940e1630-c825-4d4c-be80-bc11f543c122" name="Changes" comment=" - Update Translate Files">
<list default="true" id="940e1630-c825-4d4c-be80-bc11f543c122" name="Changes" comment="- methods from class MainWindow move to class FrameWidgets for active color_label when theme change&#10;- optimize columnconfigure, rowconfigure in class MainWindow and FrameWidgets&#10;- add new Frame for Widgets on Bottom&#10;- optimize from tkinter * to from tkinter import filedialog, ttk, TclError">
<change afterPath="$PROJECT_DIR$/lx-icons/128/error.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/lx-icons/128/info.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/lx-icons/256/error.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/lx-icons/256/info.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/lx-icons/32/error.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/lx-icons/32/info.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/lx-icons/48/error.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/lx-icons/48/info.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/lx-icons/64/error.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/lx-icons/64/info.png" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/cls_mth_fc.py" beforeDir="false" afterPath="$PROJECT_DIR$/cls_mth_fc.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/install" beforeDir="false" afterPath="$PROJECT_DIR$/install" afterDir="false" />
<change beforePath="$PROJECT_DIR$/wg_func.py" beforeDir="false" afterPath="$PROJECT_DIR$/cls_mth_fc.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/wg_main.py" beforeDir="false" afterPath="$PROJECT_DIR$/wg_main.py" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -44,25 +56,25 @@
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;ASKED_ADD_EXTERNAL_FILES&quot;: &quot;true&quot;,
&quot;Python.INSTALL.executor&quot;: &quot;Run&quot;,
&quot;Python.install.executor&quot;: &quot;Run&quot;,
&quot;Python.main.executor&quot;: &quot;Run&quot;,
&quot;Python.messagebox.executor&quot;: &quot;Run&quot;,
&quot;Python.start_wg.executor&quot;: &quot;Run&quot;,
&quot;Python.testtheme.executor&quot;: &quot;Run&quot;,
&quot;Python.wg_func.executor&quot;: &quot;Run&quot;,
&quot;Python.wg_main.executor&quot;: &quot;Run&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;Shell Script.install.executor&quot;: &quot;Run&quot;,
&quot;Shell Script.run_as.executor&quot;: &quot;Run&quot;,
&quot;git-widget-placeholder&quot;: &quot;1.11.1024&quot;,
&quot;last_opened_file_path&quot;: &quot;/home/punix/Pyapps/wire-py&quot;,
&quot;settings.editor.selected.configurable&quot;: &quot;reference.settingsdialog.IDE.editor.colors&quot;
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"ASKED_ADD_EXTERNAL_FILES": "true",
"Python.INSTALL.executor": "Run",
"Python.install.executor": "Run",
"Python.main.executor": "Run",
"Python.messagebox.executor": "Run",
"Python.start_wg.executor": "Run",
"Python.testtheme.executor": "Run",
"Python.wg_func.executor": "Run",
"Python.wg_main.executor": "Run",
"RunOnceActivity.ShowReadmeOnStart": "true",
"Shell Script.install.executor": "Run",
"Shell Script.run_as.executor": "Run",
"git-widget-placeholder": "1.11.0824",
"last_opened_file_path": "/home/punix/Pyapps/wire-py/lx-icons",
"settings.editor.selected.configurable": "reference.settingsdialog.IDE.editor.colors"
}
}</component>
}]]></component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/lx-icons" />
@ -142,6 +154,78 @@
<option name="presentableId" value="Default" />
<updated>1723279982210</updated>
</task>
<task id="LOCAL-00020" summary="columnconfigure on all widgets set">
<option name="closed" value="true" />
<created>1724778892233</created>
<option name="number" value="00020" />
<option name="presentableId" value="LOCAL-00020" />
<option name="project" value="LOCAL" />
<updated>1724778892233</updated>
</task>
<task id="LOCAL-00021" summary="little fixes a &quot; &quot; 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>
<task id="LOCAL-00022" summary="add class FileHandle,&#10;add Label to show autoconnect Tunnel&#10;disable checkbox when Listbox is empty or no select Tunnel">
<option name="closed" value="true" />
<created>1725391658456</created>
<option name="number" value="00022" />
<option name="presentableId" value="LOCAL-00022" />
<option name="project" value="LOCAL" />
<updated>1725391658456</updated>
</task>
<task id="LOCAL-00023" summary="add if question and add autoconnect, autoconnect_var to class Filehandle in box_set no finish!">
<option name="closed" value="true" />
<created>1725434328731</created>
<option name="number" value="00023" />
<option name="presentableId" value="LOCAL-00023" />
<option name="project" value="LOCAL" />
<updated>1725434328731</updated>
</task>
<task id="LOCAL-00024" summary="fixes on empty Listbox now is disable and now works autoconnect label with read and write, delete works now with read and write">
<option name="closed" value="true" />
<created>1725475967338</created>
<option name="number" value="00024" />
<option name="presentableId" value="LOCAL-00024" />
<option name="project" value="LOCAL" />
<updated>1725475967338</updated>
</task>
<task id="LOCAL-00025" summary="add Frame widget 3&#10;for Buttons and Listbox with Scrollbar.&#10;all Widgets new format&#10;delete works now of disable checkbox when Listbox empty (part two)">
<option name="closed" value="true" />
<created>1725567453540</created>
<option name="number" value="00025" />
<option name="presentableId" value="LOCAL-00025" />
<option name="project" value="LOCAL" />
<updated>1725567453540</updated>
</task>
<task id="LOCAL-00026" summary="little fixes">
<option name="closed" value="true" />
<created>1725639633873</created>
<option name="number" value="00026" />
<option name="presentableId" value="LOCAL-00026" />
<option name="project" value="LOCAL" />
<updated>1725639633873</updated>
</task>
<task id="LOCAL-00027" summary="little fixes">
<option name="closed" value="true" />
<created>1725746027132</created>
<option name="number" value="00027" />
<option name="presentableId" value="LOCAL-00027" />
<option name="project" value="LOCAL" />
<updated>1725746027132</updated>
</task>
<task id="LOCAL-00028" summary="little fixes replace os.system with check_call&#10;first steps in install Script add wg_start.service file">
<option name="closed" value="true" />
<created>1725820337669</created>
<option name="number" value="00028" />
<option name="presentableId" value="LOCAL-00028" />
<option name="project" value="LOCAL" />
<updated>1725820337669</updated>
</task>
<task id="LOCAL-00029" summary="little fixes a labels when stop and start, installer first functions works">
<option name="closed" value="true" />
<created>1725991610908</created>
@ -350,7 +434,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" />
@ -462,79 +546,7 @@
<option name="project" value="LOCAL" />
<updated>1731098372497</updated>
</task>
<task id="LOCAL-00069" summary=" - - Fix Checkbutton Autostart when first install Wire-Py">
<option name="closed" value="true" />
<created>1731690583059</created>
<option name="number" value="00069" />
<option name="presentableId" value="LOCAL-00069" />
<option name="project" value="LOCAL" />
<updated>1731690583060</updated>
</task>
<task id="LOCAL-00070" summary=" - - Fix Checkbutton Autostart when first install Wire-Py">
<option name="closed" value="true" />
<created>1731836942211</created>
<option name="number" value="00070" />
<option name="presentableId" value="LOCAL-00070" />
<option name="project" value="LOCAL" />
<updated>1731836942212</updated>
</task>
<task id="LOCAL-00071" summary=" - Update Translate Files">
<option name="closed" value="true" />
<created>1731840048762</created>
<option name="number" value="00071" />
<option name="presentableId" value="LOCAL-00071" />
<option name="project" value="LOCAL" />
<updated>1731840048763</updated>
</task>
<task id="LOCAL-00072" summary=" - Update Translate Files">
<option name="closed" value="true" />
<created>1731840089956</created>
<option name="number" value="00072" />
<option name="presentableId" value="LOCAL-00072" />
<option name="project" value="LOCAL" />
<updated>1731840089956</updated>
</task>
<task id="LOCAL-00073" summary=" - Update Translate Files">
<option name="closed" value="true" />
<created>1731840188277</created>
<option name="number" value="00073" />
<option name="presentableId" value="LOCAL-00073" />
<option name="project" value="LOCAL" />
<updated>1731840188278</updated>
</task>
<task id="LOCAL-00074" summary=" - Update Translate Files">
<option name="closed" value="true" />
<created>1731840383592</created>
<option name="number" value="00074" />
<option name="presentableId" value="LOCAL-00074" />
<option name="project" value="LOCAL" />
<updated>1731840383592</updated>
</task>
<task id="LOCAL-00075" summary=" - Update Translate Files">
<option name="closed" value="true" />
<created>1731841930614</created>
<option name="number" value="00075" />
<option name="presentableId" value="LOCAL-00075" />
<option name="project" value="LOCAL" />
<updated>1731841930615</updated>
</task>
<task id="LOCAL-00076" summary=" - Update Translate Files">
<option name="closed" value="true" />
<created>1731844213239</created>
<option name="number" value="00076" />
<option name="presentableId" value="LOCAL-00076" />
<option name="project" value="LOCAL" />
<updated>1731844213239</updated>
</task>
<task id="LOCAL-00077" summary=" - Update Translate Files">
<option name="closed" value="true" />
<created>1731844339039</created>
<option name="number" value="00077" />
<option name="presentableId" value="LOCAL-00077" />
<option name="project" value="LOCAL" />
<updated>1731844339039</updated>
</task>
<option name="localTasksCounter" value="78" />
<option name="localTasksCounter" value="69" />
<servers />
</component>
<component name="UnknownFeatures">
@ -565,6 +577,8 @@
</component>
<component name="VcsManagerConfiguration">
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
<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="replace tar with zip and Check if Zip file is empty" />
<MESSAGE value="Create your own message boxes for export" />
<MESSAGE value="chown Export File to 1000:1000" />
@ -579,7 +593,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.&#10;Start with version number 1.4.7&#10;Message window size corrected so text is displayed better" />
<MESSAGE value="Fix msg_window and remove x , y argument&#10;Install further adapted and with colored&#10;text if user is not in group sudo or wheel.&#10;Added to install Opensuse for installation" />
<MESSAGE value=" - Menu add &#10; - New Modern Dark and Light(default) Theme" />
@ -588,17 +602,15 @@
<MESSAGE value="- Optimize Class. Move to wg_main Import Start/StopBTN and Tooltip" />
<MESSAGE value="- Optimize Class and Tooltip" />
<MESSAGE value="- methods from class MainWindow move to class FrameWidgets for active color_label when theme change&#10;- optimize columnconfigure, rowconfigure in class MainWindow and FrameWidgets&#10;- add new Frame for Widgets on Bottom&#10;- optimize from tkinter * to from tkinter import filedialog, ttk, TclError" />
<MESSAGE value=" - - Fix Checkbutton Autostart when first install Wire-Py" />
<MESSAGE value=" - Update Translate Files" />
<option name="LAST_COMMIT_MESSAGE" value=" - Update Translate Files" />
<option name="LAST_COMMIT_MESSAGE" value="- methods from class MainWindow move to class FrameWidgets for active color_label when theme change&#10;- optimize columnconfigure, rowconfigure in class MainWindow and FrameWidgets&#10;- add new Frame for Widgets on Bottom&#10;- optimize from tkinter * to from tkinter import filedialog, ttk, TclError" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/wg_main.py</url>
<line>1128</line>
<option name="timeStamp" value="3" />
<url>file://$PROJECT_DIR$/start_wg.py</url>
<line>1</line>
<option name="timeStamp" value="2" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>

View File

@ -6,17 +6,13 @@ My standard System: Linux Mint 22 Cinnamon
- os import in cls_mth_fc.py replaced by other methods
- If Wire-Py already runs, prevent further start
- for loops with lists replaced by List Comprehensions
- Crypt and Decrypt Config Files in ~/.config/wire_py
- Update search after start of Wire-Py
### Added
02-03-2025
07-11-2024
- 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
10-11-2024
@ -66,7 +62,7 @@ My standard System: Linux Mint 22 Cinnamon
### Added
27-10-2024
- Add Autoconnect settings to settings
- Add Autoconnect settings to settings.conf
### Added
@ -74,7 +70,7 @@ My standard System: Linux Mint 22 Cinnamon
- Add run_as Bash script and open_gitea.py python script
- Add Tooltip disable/enable
- Rename settings to settings for theme, updates and tooltip enable in one file
- Rename settings to settings.conf for theme, updates and tooltip enable in one file
### Added

View File

@ -1,7 +1,7 @@
[Desktop Entry]
Type=Application
Name=Wire-Py
Exec=/usr/local/bin/wg_main.py
Exec=/usr/bin/wirepy.py
Terminal=false
Categories=Network;
Icon=/usr/share/icons/wp-icons/128/wg_vpn.png

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -5,7 +5,6 @@ import locale
import os
import shutil
import subprocess
from subprocess import check_call
import tkinter as tk
import zipfile
from datetime import datetime
@ -20,41 +19,8 @@ gettext.bindtextdomain(APP, LOCALE_DIR)
gettext.textdomain(APP)
_ = gettext.gettext
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')
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()
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')
wg_set = Path('/etc/wire_py/settings.conf')
_u = Path.read_text(Path('/tmp/_u'))
class GiteaUpdate:
@ -87,10 +53,10 @@ class GiteaUpdate:
@staticmethod
def download(urld, down_ok_image, down_not_ok_image, res):
try:
to_down = 'wget -qP ' + str(Path.home()) + ' ' + urld
to_down = 'wget -qP ' + str(_u) + ' ' + urld
result = subprocess.call(to_down, shell=True)
if result == 0:
shutil.chown(str(Path.home()) + f'/{res}.zip', 1000, 1000)
shutil.chown(str(_u) + f'/{res}.zip', 1000, 1000)
"""img_w, img_i, w_title, w_txt hand over"""
iw = r'/usr/share/icons/lx-icons/64/info.png'
ii = down_ok_image
@ -179,8 +145,6 @@ class Tunnel:
for items in dictlist:
if items == '=':
dictlist.remove(items)
if items == '::/0':
dictlist.remove(items)
''' Here is the beginning (Loop) of convert List to Dictionary '''
for _ in dictlist:
@ -225,16 +189,15 @@ class Tunnel:
return active
"""
Shows all existing Wireguard tunnels a login user
Shows all existing Wireguard tunnels
"""
@staticmethod
def list():
dirname = Path.home() / '.config/wire_py/'
wg_s = os.listdir(dirname)
wg_s.remove('keys')
wg_s.remove('settings')
return wg_s
wg_s = os.popen('nmcli con show | grep -iPo "(.*)(wireguard)"').read().split()
''' tl = Tunnel list # Show of 4.Element in list '''
tl = wg_s[::3]
return tl
"""
This will export the tunnels.
@ -243,20 +206,21 @@ class Tunnel:
"""
@staticmethod
def export():
_u1 = str(_u[6:])
now_time = datetime.now()
now_datetime = now_time.strftime('wg-exp-' + '%m-%d-%Y' + '-' + '%H:%M')
tl = Tunnel.list()
try:
if len(tl) != 0:
wg_tar = str(Path.home()) + '/' + now_datetime
shutil.copytree(Path.home() / '.config/wire_py/', '/tmp/wire_py', dirs_exist_ok=True)
wg_tar = str(_u) + '/' + now_datetime
shutil.copytree('/etc/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)
Path.unlink(Path(source) / '.keys', missing_ok=True)
Path.unlink(Path(source) / 'settings.conf', missing_ok=True)
shutil.make_archive(wg_tar, 'zip', source)
#shutil.chown(wg_tar + '.zip', 1000, 1000)
shutil.chown(wg_tar + '.zip', 1000, 1000)
shutil.rmtree(source)
with zipfile.ZipFile((wg_tar + '.zip'), 'r') as zf:
if len(zf.namelist()) != 0:

30
install
View File

@ -6,22 +6,24 @@ BLUE='\033[30;1;34m'
install_file_with(){
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 cp -u wg_main.py start_wg.py cls_mth_fc.py /usr/local/bin/ && \
sudo cp -u wg_main.py start_wg.py cls_mth_fc.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.conf /etc/wire_py/ && \
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 ln -sf /usr/local/bin/wg_main.py /usr/local/bin/wirepy && \
sudo cp -u Wire-Py.desktop /usr/share/applications/
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 wg_start.service /lib/systemd/system/ && \
sudo systemctl enable wg_start.service
}
install_arch_d(){
clear
sudo pacman -S --noconfirm tk python3 python-requests && \
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 /etc/wire_py/ && \
sudo cp -u wg_main.py start_wg.py cls_mth_fc.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.conf /etc/wire_py/ && \
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/ && \
@ -89,9 +91,9 @@ elif grep -i 'fedora' /etc/os-release > /dev/null 2>&1
if ! which python3-tkinter &> /dev/null
then sudo dnf install python3-tkinter -y
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 /etc/wire_py/ && \
sudo cp -u wg_main.py start_wg.py cls_mth_fc.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.conf /etc/wire_py/ && \
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 chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \
@ -106,9 +108,9 @@ elif grep -i 'suse' /etc/os-release > /dev/null 2>&1
then
if ! which python311-tk &> /dev/null
then sudo zypper install python311-tk
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 /etc/wire_py/ && \
sudo cp -u wg_main.py start_wg.py cls_mth_fc.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.conf /etc/wire_py/ && \
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 chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \

5
open_gitea.py Executable file
View File

@ -0,0 +1,5 @@
#!/usr/bin/python3
import webbrowser
webbrowser.open('https://git.ilunix.de/punix/Wire-Py')

16
org.wirepy.policy Normal file
View File

@ -0,0 +1,16 @@
<?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
run_as Executable file
View File

@ -0,0 +1,2 @@
#!/bin/bash
/usr/bin/./open_gitea.py

View File

@ -2,7 +2,7 @@
from subprocess import check_call
from pathlib import Path
path_to_file = Path(Path.home() / '.config/wire_py/settings')
path_to_file = Path('/etc/wire_py/settings.conf')
with open(path_to_file, 'r') as a_con:
lines = a_con.readlines()

View File

@ -2,7 +2,6 @@
import gettext
import locale
import webbrowser
import os
import shutil
import subprocess
@ -10,12 +9,12 @@ import tkinter as tk
from pathlib import Path
from subprocess import check_call
from tkinter import filedialog, ttk, TclError
from cls_mth_fc import (Tunnel, msg_window, GiteaUpdate, wg_tips, dirs_and_files, wg_set, files_for_autostart)
from cls_mth_fc import (Tunnel, msg_window, GiteaUpdate, _u, wg_tips, wg_set)
tcl_path = Path('/usr/share/TK-Themes')
''' 1 = 1. Year, 09 = Month of the Year, 2924 = Day and Year of the Year '''
version = 'v. 2.03.0225'
version = 'v. 1.11.1824'
res = GiteaUpdate.api_down('https://git.ilunix.de/api/v1/repos/punix/Wire-Py/releases', version)
@ -27,6 +26,7 @@ gettext.bindtextdomain(APP, LOCALE_DIR)
gettext.textdomain(APP)
_ = gettext.gettext
class MainWindow(tk.Tk):
def __init__(self, *args, **kwargs):
@ -141,7 +141,9 @@ class FrameWidgets(ttk.Frame):
def info():
def link_btn():
webbrowser.open('https://git.ilunix.de/punix/Wire-Py')
_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'
@ -330,7 +332,7 @@ class FrameWidgets(ttk.Frame):
''' Listbox with Scrollbar '''
def enable_check_box(_):
files_for_autostart()
if self.l_box.size() != 0:
self.wg_autostart.configure(state='normal')
self.lb_rename.config(state='normal')
@ -349,7 +351,7 @@ class FrameWidgets(ttk.Frame):
''' Tunnel List '''
self.tl = Tunnel.list()
for tunnels in self.tl:
self.l_box.insert("end", tunnels[:-5])
self.l_box.insert("end", tunnels)
self.l_box.update()
def list_empty_enter(event):
@ -380,7 +382,7 @@ class FrameWidgets(ttk.Frame):
''' Button Vpn '''
if self.a != '':
self.stop()
wg_read = str(Path.home()) + '/.config/wire_py/' + str(self.a + '.conf')
wg_read = Path('/etc/wire_py') / str(self.a + '.conf')
with open(wg_read, 'r') as file:
data = Tunnel.con_to_dict(file)
@ -418,7 +420,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(str(Path.home()) + '/.config/wire_py/' + select_tl + '.conf', 'r+') as file2:
with open('/etc/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])
@ -432,14 +434,14 @@ class FrameWidgets(ttk.Frame):
self.selected_option.set(0)
self.autoconnect_var.set(_('no Autoconnect'))
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:
Path.unlink(Path('/etc/wire_py') / str(select_tl + '.conf'))
with open('/etc/wire_py/.keys', 'r') as readfile:
with open('/etc/wire_py/.keys2', 'w') as writefile:
for line in readfile:
if pre_key not in line.strip("\n"):
writefile.write(line)
file_one = Path(str(Path.home()) + '/.config/wire_py/keys2')
file_two = file_one.with_name('keys')
file_one = Path('/etc/wire_py/.keys2')
file_two = file_one.with_name('.keys')
file_one.replace(file_two)
self.wg_autostart.configure(state='disabled')
@ -634,7 +636,7 @@ class FrameWidgets(ttk.Frame):
''' nmcli connection modify old connection.id iphone '''
check_call(['nmcli', 'connection', 'modify', select_tl, 'connection.id', self.lb_rename.get()])
source = Path.home() / '.config/wire_py' / str(select_tl + '.conf')
source = Path('/etc/wire_py') / str(select_tl + '.conf')
destination = source.with_name(str(self.lb_rename.get() + '.conf'))
source.replace(destination)
self.l_box.delete(self.select_tunnel[0])
@ -736,11 +738,8 @@ class FrameWidgets(ttk.Frame):
If True then the name is automatically shortened to 12 characters and then imported.
If in each case false comes out, a corresponding window comes to inform the user that something is wrong.
"""
dirs_and_files()
try:
filepath = filedialog.askopenfilename(initialdir=str(Path.home()), title=_('Select Wireguard config File'),
filepath = filedialog.askopenfilename(initialdir=str(_u), title=_('Select Wireguard config File'),
filetypes=[(_('WG config files'), '*.conf')], )
with open(filepath, 'r') as file:
@ -754,7 +753,7 @@ class FrameWidgets(ttk.Frame):
key = Tunnel.con_to_dict(file)
pre_key = key[3]
if len(pre_key) != 0:
with open(str(Path.home()) + '/.config/wire_py/keys', 'r') as readfile:
with open('/etc/wire_py/.keys', 'r') as readfile:
p_key = readfile.readlines()
if pre_key in p_key or pre_key + '\n' in p_key:
"""img_w, img_i, w_title, w_txt hand over"""
@ -766,13 +765,13 @@ class FrameWidgets(ttk.Frame):
else:
with open(str(Path.home()) + '/.config/wire_py/keys', 'a') as keyfile:
with open('/etc/wire_py/.keys', 'a') as keyfile:
keyfile.write(pre_key + '\r')
if len(path_split1) > 17:
p1 = shutil.copy(filepath, str(Path.home()) + '/.config/wire_py/')
p1 = shutil.copy(filepath, Path('/etc/wire_py/'))
path_split = path_split1[len(path_split1) - 17:]
os.rename(p1, str(Path.home()) + '/.config/wire_py/' + str(path_split))
new_conf = str(Path.home()) + '/.config/wire_py/' + path_split
os.rename(p1, Path('/etc/wire_py') / str(path_split))
new_conf = '/etc/wire_py/' + path_split
if self.a != '':
check_call(['nmcli', 'connection', 'down', Tunnel.active()])
self.label_empty()
@ -781,7 +780,7 @@ class FrameWidgets(ttk.Frame):
'wireguard', 'file', new_conf], text=True)
else:
shutil.copy(filepath, str(Path.home()) + '/.config/wire_py/')
shutil.copy(filepath, Path('/etc/wire_py/'))
if self.a != '':
check_call(['nmcli', 'connection', 'down', Tunnel.active()])
self.label_empty()
@ -866,7 +865,7 @@ class FrameWidgets(ttk.Frame):
self.StrVar.set(self.a)
self.color_label()
self.stop()
wg_read = str(Path.home()) + '/.config/wire_py/' + str(self.a + '.conf')
wg_read = Path('/etc/wire_py') / str(self.a + '.conf')
with open(wg_read, 'r') as file_for_key:
data = Tunnel.con_to_dict(file_for_key)
@ -1062,7 +1061,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 = str(Path.home()) + '/.config/wire_py/' + str(select_tl + '.conf')
wg_read = Path('/etc/wire_py') / str(select_tl + '.conf')
with open(wg_read, 'r') as file:
data = Tunnel.con_to_dict(file)

View File

@ -5,6 +5,6 @@ After=network-online.target
[Service]
Type=oneshot
ExecStartPre=/bin/sleep 5
ExecStart=/usr/local/bin/start_wg.py
ExecStart=/usr/bin/start_wg.py
[Install]
WantedBy=default.target
WantedBy=multi-user.target

6
wirepy.py Executable file
View File

@ -0,0 +1,6 @@
#!/usr/bin/python3
from subprocess import check_call
from pathlib import Path
Path.write_text(Path('/tmp/_u'), str(Path.home()))
check_call(['pkexec', '/usr/bin/wg_main.py'])