Compare commits
68 Commits
Author | SHA1 | Date | |
---|---|---|---|
13832d916f | |||
1667682c9d | |||
8771be760d | |||
97bf9df041 | |||
1bba45a6c1 | |||
a5eb6293c6 | |||
6e54529c0f | |||
e28235af4b | |||
862cc91fa1 | |||
5fe6fd3f29 | |||
48a48ffd4c | |||
1278b02a95 | |||
22abe9f8b9 | |||
52f22beec6 | |||
8754e7ecda | |||
a6742a0c0e | |||
6b75713121 | |||
762694aa94 | |||
cc54f329fe | |||
8c01c1b984 | |||
ebafdbdcb3 | |||
ce4f6c84dc | |||
b68908eaef | |||
c4565ed169 | |||
485cfff457 | |||
1a0fc74a80 | |||
971c86c97f | |||
66dd27cc64 | |||
cf71eae7d3 | |||
1f80d5342c | |||
e719a1f23f | |||
a0da356cec | |||
ac87e0a4a7 | |||
6a3a982057 | |||
aab90eec70 | |||
511d5f72df | |||
ed93e99026 | |||
10c3b07053 | |||
e9814f2b60 | |||
c470783ff2 | |||
2fac03a927 | |||
03a7e48018 | |||
090842ab28 | |||
8a32065676 | |||
bc0d46d633 | |||
80c63eaf78 | |||
9eb99f0859 | |||
feb6217637 | |||
4bfc8c318e | |||
5f6aaa6cf1 | |||
63ed0abc98 | |||
3102c685fd | |||
ec10f912ea | |||
96164eb132 | |||
a19f889950 | |||
de2929896d | |||
f9d4256679 | |||
a0b895438c | |||
4c89488950 | |||
c0ae2d2b75 | |||
e4774abf19 | |||
7b1e543428 | |||
6f83fc7162 | |||
b70400b456 | |||
e25bc154ea | |||
7aa3cd75fe | |||
0b9eec8d1d | |||
b9083d4698 |
238
.idea/workspace.xml
generated
@ -4,16 +4,9 @@
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="940e1630-c825-4d4c-be80-bc11f543c122" name="Changes" comment="- Optimize Class and Tooltip">
|
||||
<change afterPath="$PROJECT_DIR$/run_as" afterDir="false" />
|
||||
<list default="true" id="940e1630-c825-4d4c-be80-bc11f543c122" name="Changes" comment=" - Update Translate Files">
|
||||
<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$/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_main.py" beforeDir="false" afterPath="$PROJECT_DIR$/wg_main.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/cls_mth_fc.py" beforeDir="false" afterPath="$PROJECT_DIR$/cls_mth_fc.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@ -30,7 +23,7 @@
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
||||
<map>
|
||||
<entry key="$PROJECT_DIR$" value="main" />
|
||||
<entry key="$PROJECT_DIR$" value="1.11.0824" />
|
||||
</map>
|
||||
</option>
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
@ -65,13 +58,14 @@
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"Shell Script.install.executor": "Run",
|
||||
"Shell Script.run_as.executor": "Run",
|
||||
"git-widget-placeholder": "main",
|
||||
"git-widget-placeholder": "1.11.1024",
|
||||
"last_opened_file_path": "/home/punix/Pyapps/wire-py",
|
||||
"settings.editor.selected.configurable": "reference.settingsdialog.IDE.editor.colors"
|
||||
}
|
||||
}</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="$PROJECT_DIR$/lx-icons" />
|
||||
<recent name="$PROJECT_DIR$" />
|
||||
</key>
|
||||
<key name="MoveFile.RECENT_KEYS">
|
||||
@ -135,7 +129,7 @@
|
||||
<component name="SharedIndexes">
|
||||
<attachedChunks>
|
||||
<set>
|
||||
<option value="bundled-python-sdk-0e3be3396995-c546a90a8094-com.jetbrains.pycharm.community.sharedIndexes.bundled-PC-242.23339.19" />
|
||||
<option value="bundled-python-sdk-8336bb23522e-31b6be0877a2-com.jetbrains.pycharm.community.sharedIndexes.bundled-PC-241.19072.16" />
|
||||
</set>
|
||||
</attachedChunks>
|
||||
</component>
|
||||
@ -148,102 +142,6 @@
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1723279982210</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00017" summary="remove a ',' in DNS Name">
|
||||
<option name="closed" value="true" />
|
||||
<created>1724576599289</created>
|
||||
<option name="number" value="00017" />
|
||||
<option name="presentableId" value="LOCAL-00017" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1724576599289</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00018" summary="fix when Filname > 17 first copy file after rename">
|
||||
<option name="closed" value="true" />
|
||||
<created>1724593165879</created>
|
||||
<option name="number" value="00018" />
|
||||
<option name="presentableId" value="LOCAL-00018" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1724593165879</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00019" summary="add export Tunnel as zip">
|
||||
<option name="closed" value="true" />
|
||||
<created>1724610514657</created>
|
||||
<option name="number" value="00019" />
|
||||
<option name="presentableId" value="LOCAL-00019" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1724610514658</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 " " 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, add Label to show autoconnect Tunnel 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 for Buttons and Listbox with Scrollbar. all Widgets new format 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 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>
|
||||
@ -540,18 +438,109 @@
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1729938941027</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="66" />
|
||||
<task id="LOCAL-00066" summary="- methods from class MainWindow move to class FrameWidgets for active color_label when theme change - optimize columnconfigure, rowconfigure in class MainWindow and FrameWidgets - add new Frame for Widgets on Bottom - optimize from tkinter * to from tkinter import filedialog, ttk, TclError">
|
||||
<option name="closed" value="true" />
|
||||
<created>1731097309468</created>
|
||||
<option name="number" value="00066" />
|
||||
<option name="presentableId" value="LOCAL-00066" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1731097309468</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00067" summary="- methods from class MainWindow move to class FrameWidgets for active color_label when theme change - optimize columnconfigure, rowconfigure in class MainWindow and FrameWidgets - add new Frame for Widgets on Bottom - optimize from tkinter * to from tkinter import filedialog, ttk, TclError">
|
||||
<option name="closed" value="true" />
|
||||
<created>1731097969343</created>
|
||||
<option name="number" value="00067" />
|
||||
<option name="presentableId" value="LOCAL-00067" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1731097969344</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00068" summary="- methods from class MainWindow move to class FrameWidgets for active color_label when theme change - optimize columnconfigure, rowconfigure in class MainWindow and FrameWidgets - add new Frame for Widgets on Bottom - optimize from tkinter * to from tkinter import filedialog, ttk, TclError">
|
||||
<option name="closed" value="true" />
|
||||
<created>1731098372497</created>
|
||||
<option name="number" value="00068" />
|
||||
<option name="presentableId" value="LOCAL-00068" />
|
||||
<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" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="UnknownFeatures">
|
||||
<option featureType="com.intellij.fileTypeFactory" implementationName="*.policy" />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
<option name="OPEN_GENERIC_TABS">
|
||||
<map>
|
||||
<entry key="f9756e7d-0c5c-4b84-84e4-660314c46ea4" value="TOOL_WINDOW" />
|
||||
</map>
|
||||
</option>
|
||||
<option name="TAB_STATES">
|
||||
<map>
|
||||
<entry key="MAIN">
|
||||
@ -562,7 +551,7 @@
|
||||
<entry key="branch">
|
||||
<value>
|
||||
<list>
|
||||
<option value="origin/wire-py-reformat-14-08-2024" />
|
||||
<option value="1.11.0824" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
@ -571,19 +560,11 @@
|
||||
</State>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="f9756e7d-0c5c-4b84-84e4-660314c46ea4">
|
||||
<value>
|
||||
<State />
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
|
||||
<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="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" />
|
||||
@ -606,15 +587,18 @@
|
||||
<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 and Tooltip" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="- Optimize Class and Tooltip" />
|
||||
<MESSAGE value="- methods from class MainWindow move to class FrameWidgets for active color_label when theme change - optimize columnconfigure, rowconfigure in class MainWindow and FrameWidgets - add new Frame for Widgets on Bottom - 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" />
|
||||
</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" />
|
||||
<url>file://$PROJECT_DIR$/wg_main.py</url>
|
||||
<line>1128</line>
|
||||
<option name="timeStamp" value="3" />
|
||||
</line-breakpoint>
|
||||
</breakpoints>
|
||||
</breakpoint-manager>
|
||||
|
76
Changelog
@ -3,36 +3,96 @@ My standard System: Linux Mint 22 Cinnamon
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
- os import in wg_func replaced by other methods
|
||||
- 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
|
||||
- Update search after start of Wire-Py
|
||||
- Crypt and Decrypt Config Files in ~/.config/wire_py
|
||||
|
||||
### Added
|
||||
03-03-2025
|
||||
|
||||
- Fixes a new user files create
|
||||
|
||||
|
||||
### Added
|
||||
02-03-2025
|
||||
|
||||
- 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
|
||||
|
||||
- Fix Checkbutton Autostart when first install Wire-Py
|
||||
- Update Translate Files
|
||||
|
||||
### Added
|
||||
10-11-2024
|
||||
|
||||
- Translate file de_De complete
|
||||
- new FrameWidget for rename Entry and rename Button
|
||||
|
||||
|
||||
### Added
|
||||
09-11-2024
|
||||
|
||||
- Move Tips Method in separate class for Tooltips in another Apps
|
||||
- Move Version Variable in main script
|
||||
- Edit Class GiteaUpdate for requests in api_down and download
|
||||
- Description on Class GiteaUpdate
|
||||
|
||||
|
||||
### Added
|
||||
08-11-2024
|
||||
|
||||
- Preparation for language translation part 1
|
||||
- separate folder for general icons
|
||||
- install edit for new dir lx-icons
|
||||
|
||||
|
||||
### Added
|
||||
08-11-2024
|
||||
|
||||
- methods from class MainWindow move to class FrameWidgets for active color_label when theme change
|
||||
- optimize columnconfigure, rowconfigure in class MainWindow and FrameWidgets
|
||||
- add new Frame for Widgets on Bottom
|
||||
- optimize from tkinter * to from tkinter import filedialog, ttk, TclError
|
||||
|
||||
|
||||
### Added
|
||||
07-11-2024
|
||||
|
||||
- remove classes and add methods to class FrameWidgets (removed self errors)
|
||||
|
||||
|
||||
### Added
|
||||
27-10-2024
|
||||
|
||||
- Add Autoconnect settings to settings.conf
|
||||
- Add Autoconnect settings to settings
|
||||
|
||||
|
||||
### 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
|
||||
- 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
|
||||
|
||||
|
||||
### Added
|
||||
25-10-2024
|
||||
|
||||
- Optimize Class and Tooltip
|
||||
- Optimize Class and Tooltip
|
||||
|
||||
|
||||
### Added
|
||||
21-10-2024
|
||||
|
||||
- Optimize Class. Move to wg_main Import Start/StopBTN and Tooltip
|
||||
- Optimize Class. Move to wg_main Import Start/StopBTN and Tooltip
|
||||
|
||||
|
||||
### Added
|
||||
|
4
Wire-Py.desktop
Executable file → Normal file
@ -1,7 +1,7 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Wire-Py
|
||||
Exec=/usr/bin/wirepy.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
|
BIN
__pycache__/cls_mth_fc.cpython-312.pyc
Normal file
BIN
__pycache__/message.cpython-312.pyc
Normal file
BIN
__pycache__/start_wg.cpython-312.pyc
Normal file
BIN
__pycache__/wg_main.cpython-312.pyc
Normal file
@ -1,35 +1,136 @@
|
||||
""" Wireguard Classes and Method for Wire-Py """
|
||||
""" Classes Method and functions for lx apps """
|
||||
|
||||
import gettext
|
||||
import locale
|
||||
import os
|
||||
import shutil
|
||||
from subprocess import check_call
|
||||
import subprocess
|
||||
import time
|
||||
import tkinter as tk
|
||||
import zipfile
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
from subprocess import check_call
|
||||
from tkinter import ttk
|
||||
import requests
|
||||
|
||||
|
||||
''' 1 = 1. Year, 09 = Month of the Year, 2924 = Day and Year of the Year '''
|
||||
version = 'v. 1.10.2124'
|
||||
APP = 'wirepy'
|
||||
LOCALE_DIR = "/usr/share/locale/"
|
||||
locale.bindtextdomain(APP, LOCALE_DIR)
|
||||
gettext.bindtextdomain(APP, LOCALE_DIR)
|
||||
gettext.textdomain(APP)
|
||||
_ = gettext.gettext
|
||||
|
||||
path_to_file2 = Path('/etc/wire_py/settings.conf')
|
||||
_u = Path.read_text(Path('/tmp/_u'))
|
||||
wg_set = Path(Path.home() / '.config/wire_py/settings')
|
||||
|
||||
UPDATE_API_URL = 'https://git.ilunix.de/api/v1/repos/punix/Wire-Py/releases'
|
||||
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
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
def dir_and_files():
|
||||
|
||||
pth = Path.home() / '.config/wire_py'
|
||||
pth.mkdir(parents=True, exist_ok=True)
|
||||
sett = Path.home() / '.config/wire_py/settings'
|
||||
ks = Path.home() / '.config/wire_py/keys'
|
||||
|
||||
if sett.exists():
|
||||
pass
|
||||
|
||||
else:
|
||||
sett.touch()
|
||||
sett.write_text('[UPDATES]\non\n[THEME]\nlight\n[TOOLTIP]\nTrue\n[AUTOSTART ON]\noff\n')
|
||||
|
||||
if ks.exists():
|
||||
pass
|
||||
|
||||
else:
|
||||
ks.touch()
|
||||
|
||||
class WirePyUpdate:
|
||||
@staticmethod
|
||||
def api_down():
|
||||
def files_for_autostart():
|
||||
|
||||
pth2 = Path.home() / '.config/systemd/user'
|
||||
pth2.mkdir(parents=True, exist_ok=True)
|
||||
wg_ser = Path.home() / '.config/systemd/user/wg_start.service'
|
||||
|
||||
if wg_ser.exists():
|
||||
pass
|
||||
|
||||
else:
|
||||
wg_ser.touch()
|
||||
wg_ser.write_text('[Unit]\nDescription=Automatic Tunnel Start\nAfter=network-online.target'
|
||||
'\n\n[Service]\nType=oneshot\nExecStartPre=/bin/sleep 5\nExecStart=/usr/'
|
||||
'local/bin/start_wg.py\n[Install]\nWantedBy=default.target')
|
||||
check_call(['systemctl', '--user', 'enable', 'wg_start.service'])
|
||||
|
||||
@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)
|
||||
|
||||
|
||||
|
||||
class GiteaUpdate:
|
||||
"""
|
||||
Calling api_down requests the URL and the version of the running script.
|
||||
Example: version = 'v. 1.1.1.1' GiteaUpdate.api_down(http://example.de, version)
|
||||
|
||||
Calling download requests the download URL of the running script,
|
||||
the taskbar image for the “Download OK” window, the taskbar image for the
|
||||
“Download error” window and the variable res
|
||||
"""
|
||||
@staticmethod
|
||||
def api_down(update_api_url, version):
|
||||
try:
|
||||
response = requests.get(UPDATE_API_URL)
|
||||
response = requests.get(update_api_url)
|
||||
response_dict = response.json()
|
||||
response_dict = response_dict[0]
|
||||
with open(path_to_file2, 'r') as set_file:
|
||||
with open(wg_set, 'r') as set_file:
|
||||
set_file = set_file.read()
|
||||
if 'on\n' in set_file:
|
||||
if version[3:] != response_dict['tag_name']:
|
||||
@ -42,51 +143,47 @@ class WirePyUpdate:
|
||||
return 'No Internet Connection!'
|
||||
|
||||
@staticmethod
|
||||
def download():
|
||||
def download(urld, down_ok_image, down_not_ok_image, res):
|
||||
try:
|
||||
url = f'https://git.ilunix.de/punix/Wire-Py/archive/{res}.zip'
|
||||
to_down = 'wget -qP ' + str(_u) + ' ' + url
|
||||
to_down = 'wget -qP ' + str(Path.home()) + ' ' + urld
|
||||
result = subprocess.call(to_down, shell=True)
|
||||
if result == 0:
|
||||
shutil.chown(str(_u) + f'/{res}.zip', 1000, 1000)
|
||||
shutil.chown(str(Path.home()) + f'/{res}.zip', 1000, 1000)
|
||||
"""img_w, img_i, w_title, w_txt hand over"""
|
||||
iw = r'/usr/share/icons/wp-icons/64/info.png'
|
||||
ii = r'/usr/share/icons/wp-icons/48/wg_vpn.png'
|
||||
wt = 'Download Successful'
|
||||
msg_t = 'Your zip file is in home directory'
|
||||
iw = r'/usr/share/icons/lx-icons/64/info.png'
|
||||
ii = down_ok_image
|
||||
wt = _('Download Successful')
|
||||
msg_t = _('Your zip file is in home directory')
|
||||
msg_window(iw, ii, wt, msg_t)
|
||||
|
||||
else:
|
||||
"""img_w, img_i, w_title, w_txt hand over"""
|
||||
iw = r'/usr/share/icons/wp-icons/64/error.png'
|
||||
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
|
||||
wt = 'Download error'
|
||||
msg_t = 'Download failed! Please try again'
|
||||
iw = r'/usr/share/icons/lx-icons/64/error.png'
|
||||
ii = down_not_ok_image
|
||||
wt = _('Download error')
|
||||
msg_t = _('Download failed! Please try again')
|
||||
msg_window(iw, ii, wt, msg_t)
|
||||
except subprocess.CalledProcessError:
|
||||
"""img_w, img_i, w_title, w_txt hand over"""
|
||||
iw = r'/usr/share/icons/wp-icons/64/error.png'
|
||||
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
|
||||
wt = 'Download error'
|
||||
msg_t = 'Download failed! No internet connection!'
|
||||
iw = r'/usr/share/icons/lx-icons/64/error.png'
|
||||
ii = down_not_ok_image
|
||||
wt = _('Download error')
|
||||
msg_t = _('Download failed! No internet connection!')
|
||||
msg_window(iw, ii, wt, msg_t)
|
||||
|
||||
|
||||
res = WirePyUpdate.api_down()
|
||||
|
||||
|
||||
|
||||
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.
|
||||
To create messages with your own images, icons, and titles. As an alternative to Python Messagebox.
|
||||
Paths to images must be specified: r'/usr/share/icons/wp-icons/64/info.png'
|
||||
Paths to images must be specified: r'/usr/share/icons/lx-icons/64/info.png'
|
||||
img_w = Image for Tk Window
|
||||
img_i = Image for Icon
|
||||
w_title = Windows Title
|
||||
w_txt = Text for Tk Window
|
||||
txt2 = Text for Button two
|
||||
com = function for Button command
|
||||
"""
|
||||
|
||||
msg = tk.Toplevel()
|
||||
msg.resizable(width=False, height=False)
|
||||
msg.title(w_title)
|
||||
@ -98,7 +195,7 @@ def msg_window(img_w, img_i, w_title, w_txt, txt2=None, com=None):
|
||||
|
||||
label.grid(column=1, row=0)
|
||||
|
||||
if txt2 != None and com != None:
|
||||
if txt2 is not None and com is not 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)
|
||||
@ -120,7 +217,6 @@ def msg_window(img_w, img_i, w_title, w_txt, txt2=None, com=None):
|
||||
|
||||
|
||||
class Tunnel:
|
||||
|
||||
"""
|
||||
Class of Methods for Wire-Py
|
||||
"""
|
||||
@ -129,7 +225,6 @@ class Tunnel:
|
||||
The config file is packed into a dictionary,
|
||||
to display the values Address , DNS and Peer in the labels
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def con_to_dict(cls, file):
|
||||
|
||||
@ -142,6 +237,8 @@ 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:
|
||||
@ -171,11 +268,9 @@ class Tunnel:
|
||||
pre_key = final_dict['PreSharedKey']
|
||||
return address, dns, endpoint, pre_key
|
||||
|
||||
|
||||
"""
|
||||
Shows the Active Tunnel
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
def active():
|
||||
|
||||
@ -188,16 +283,15 @@ class Tunnel:
|
||||
return active
|
||||
|
||||
"""
|
||||
Shows all existing Wireguard tunnels
|
||||
Shows all existing Wireguard tunnels a login user
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
def list():
|
||||
wg_s = os.popen('nmcli con show | grep -iPo "(.*)(wireguard)"').read().split()
|
||||
|
||||
dirname = Path('/tmp/tlecdcwg/')
|
||||
wg_s = os.listdir(dirname)
|
||||
|
||||
''' tl = Tunnel list # Show of 4.Element in list '''
|
||||
tl = wg_s[::3]
|
||||
return tl
|
||||
return wg_s
|
||||
|
||||
|
||||
"""
|
||||
@ -205,66 +299,63 @@ class Tunnel:
|
||||
A zipfile with current date and time is created
|
||||
in the user's home directory with correct right
|
||||
"""
|
||||
|
||||
@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(_u) + '/' + now_datetime
|
||||
shutil.copytree('/etc/wire_py', '/tmp/wire_py', dirs_exist_ok=True)
|
||||
wg_tar = str(Path.home()) + '/' + now_datetime
|
||||
shutil.copytree('/tmp/tlecdcwg/', '/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.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:
|
||||
|
||||
"""img_w, img_i, w_title, w_txt hand over"""
|
||||
iw = r'/usr/share/icons/wp-icons/64/info.png'
|
||||
iw = r'/usr/share/icons/lx-icons/64/info.png'
|
||||
ii = r'/usr/share/icons/wp-icons/48/wg_vpn.png'
|
||||
wt = 'Export Successful'
|
||||
msg_t = 'Your zip file is in home directory'
|
||||
wt = _('Export Successful')
|
||||
msg_t = _('Your zip file is in home directory')
|
||||
msg_window(iw, ii, wt, msg_t)
|
||||
|
||||
else:
|
||||
|
||||
"""img_w, img_i, w_title, w_txt hand over"""
|
||||
iw = r'/usr/share/icons/wp-icons/64/error.png'
|
||||
iw = r'/usr/share/icons/lx-icons/64/error.png'
|
||||
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
|
||||
wt = 'Export error'
|
||||
msg_t = 'Export failed! Please try again'
|
||||
wt = _('Export error')
|
||||
msg_t = _('Export failed! Please try again')
|
||||
msg_window(iw, ii, wt, msg_t)
|
||||
|
||||
else:
|
||||
|
||||
"""img_w, img_i, w_title, w_txt hand over"""
|
||||
iw = r'/usr/share/icons/wp-icons/64/info.png'
|
||||
iw = r'/usr/share/icons/lx-icons/64/info.png'
|
||||
ii = r'/usr/share/icons/wp-icons/48/wg_msg.png'
|
||||
wt = 'Select tunnel'
|
||||
msg_t = 'Please first import tunnel.'
|
||||
wt = _('Select tunnel')
|
||||
msg_t = _('Please first import tunnel')
|
||||
msg_window(iw, ii, wt, msg_t)
|
||||
|
||||
except TypeError:
|
||||
pass
|
||||
|
||||
|
||||
class Tipi:
|
||||
"""
|
||||
Class for Tooltip setting write in File
|
||||
Calling request path to file
|
||||
"""
|
||||
@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()
|
||||
|
||||
|
||||
def if_tip(path):
|
||||
with open(path, 'r') as set_file2:
|
||||
lines2 = set_file2.readlines()
|
||||
if 'False\n' in lines2:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
46
install
@ -6,28 +6,30 @@ 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 cp -f org.sslcrypt.policy /usr/share/polkit-1/actions/ && \
|
||||
sudo apt install python3-tk && \
|
||||
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.conf /etc/wire_py/ && \
|
||||
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 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
|
||||
sudo cp -fv wg_main.py start_wg.py cls_mth_fc.py ssl_encrypt.py ssl_decrypt.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/
|
||||
}
|
||||
|
||||
install_arch_d(){
|
||||
clear
|
||||
sudo pacman -S --noconfirm tk python3 python-requests && \
|
||||
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.conf /etc/wire_py/ && \
|
||||
sudo cp -uR wp-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \
|
||||
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 -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/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
|
||||
}
|
||||
@ -89,10 +91,11 @@ 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 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.conf /etc/wire_py/ && \
|
||||
sudo cp -uR wp-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \
|
||||
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 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 && \
|
||||
sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \
|
||||
sudo cp -u org.wirepy.policy /usr/share/polkit-1/actions/ && \
|
||||
@ -105,10 +108,11 @@ 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 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.conf /etc/wire_py/ && \
|
||||
sudo cp -uR wp-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \
|
||||
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 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 && \
|
||||
sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \
|
||||
sudo cp -u org.wirepy.policy /usr/share/polkit-1/actions/ && \
|
||||
@ -124,7 +128,7 @@ else
|
||||
clear
|
||||
exit 0
|
||||
fi
|
||||
clear
|
||||
#clear
|
||||
read -n 1 -s -r -p $"To close the Window press a button"
|
||||
clear
|
||||
|
||||
|
BIN
languages/de/wirepy.mo
Normal file
BIN
lx-icons/128/error.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
lx-icons/128/info.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
lx-icons/256/error.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
lx-icons/256/info.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
lx-icons/32/error.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
lx-icons/32/info.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
lx-icons/48/error.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
lx-icons/48/info.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
lx-icons/64/error.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
lx-icons/64/info.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
@ -1,5 +0,0 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import webbrowser
|
||||
|
||||
webbrowser.open('https://git.ilunix.de/punix/Wire-Py')
|
42
org.sslcrypt.policy
Normal file
@ -0,0 +1,42 @@
|
||||
<?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,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
|
||||
<policyconfig>
|
||||
<vendor>Project Wire-Py</vendor>
|
||||
<vendor_url>https://git.ilunix.de/punix/Wire-Py</vendor_url>
|
||||
<icon_name>wg-vpn</icon_name>
|
||||
<action id="org.wirepy">
|
||||
<defaults>
|
||||
<allow_any>auth_admin_keep</allow_any>
|
||||
<allow_inactive>auth_admin_keep</allow_inactive>
|
||||
<allow_active>yes</allow_active>
|
||||
</defaults>
|
||||
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/wg_main.py</annotate>
|
||||
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
|
||||
</action>
|
||||
</policyconfig>
|
28
ssl_decrypt.py
Executable file
@ -0,0 +1,28 @@
|
||||
#!/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)
|
49
ssl_encrypt.py
Executable file
@ -0,0 +1,49 @@
|
||||
#!/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])
|
||||
|
||||
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
from subprocess import check_call
|
||||
from pathlib import Path
|
||||
|
||||
path_to_file = Path('/etc/wire_py/settings.conf')
|
||||
path_to_file = Path(Path.home() / '.config/wire_py/settings')
|
||||
|
||||
with open(path_to_file, 'r') as a_con:
|
||||
lines = a_con.readlines()
|
||||
|
559
wg_main.py
@ -5,6 +5,6 @@ After=network-online.target
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStartPre=/bin/sleep 5
|
||||
ExecStart=/usr/bin/start_wg.py
|
||||
ExecStart=/usr/local/bin/start_wg.py
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
WantedBy=default.target
|
||||
|