├── LICENSE ├── README.md ├── Screenshot3.png └── xraygui ├── all ├── etc │ └── systemd │ │ └── user │ │ ├── xray-swproxy.service │ │ ├── xray-update.service │ │ └── xray.service └── usr │ ├── bin │ ├── xray-update │ └── xraygui │ └── share │ ├── applications │ └── xraygui.desktop │ ├── doc │ └── xraygui │ │ └── repack.txt │ └── icons │ └── xraygui.png ├── backup ├── portscan_trd.pas ├── reality_gen.lfm ├── reality_gen.pas ├── start_trd.pas ├── unit1.lfm ├── unit1.pas ├── update_trd.pas ├── xraygui.lpi ├── xraygui.lps └── xraygui.pas ├── ico ├── copy.png ├── floppy-disk (1).png ├── folder.png ├── reality.png └── xraygui.png ├── languages ├── lclstrconsts.po ├── lclstrconsts.ru.po ├── xraygui.pot ├── xraygui.ru.mo └── xraygui.ru.po ├── lib └── x86_64-linux │ ├── portscan_trd.o │ ├── portscan_trd.ppu │ ├── reality_gen.lfm │ ├── reality_gen.o │ ├── reality_gen.ppu │ ├── start_trd.o │ ├── start_trd.ppu │ ├── unit1.lfm │ ├── unit1.o │ ├── unit1.ppu │ ├── unit1.rsj │ ├── update_trd.o │ ├── update_trd.ppu │ ├── vmessgui.compiled │ ├── vmessgui.o │ ├── vmessgui.or │ ├── vmessgui.res │ ├── xraygui.compiled │ ├── xraygui.o │ ├── xraygui.or │ └── xraygui.res ├── package_project └── xraygui.prj ├── portscan_trd.pas ├── reality_gen.lfm ├── reality_gen.lrj ├── reality_gen.pas ├── start_trd.pas ├── unit1.lfm ├── unit1.lrj ├── unit1.pas ├── update_trd.pas ├── xraygui ├── xraygui.ico ├── xraygui.lpi ├── xraygui.lps ├── xraygui.pas └── xraygui.res /README.md: -------------------------------------------------------------------------------- 1 | # XRayGUI 2 | **Dependencies:** systemd gtk2 p7zip zenity curl lib64proxy-gnome lib64proxy-kde qrencode 3 | 4 | **Ports used:** `SOCKS` - 127.0.0.1:1080 (can be changed), `HTTP` - 127.0.0.1:8889 (fixed) 5 | 6 | A small and nimble GUI for [XRay-core](https://github.com/XTLS/Xray-core): launch, find `VMESS`, `VLESS`, `SS (Shadowsocks)` or `Trojan` configurations on the network, copy to the buffer, paste into `XRayGUI` (`Paste` button) and click `Start`. If the green indicator lights up and the logs run, the connection is established. In the browser, set the SOCKS5 - `127.0.0.1`:`1080` proxy and redirect DNS via proxy (check the box there). The list of configurations can be saved to a file and downloaded from a file (PopUp Menu). You can check your new location here: https://whoer.net 7 | 8 | **Support:** 9 | + Shadowsocks (without obfs) 10 | + VMESS: +TLS, +WS, +WS+TLS, +KCP, +gRPC, +HTTPUpgrade 11 | + VLESS: +TLS, +WS, +WS+TLS, +gRPC, +gRPC+TLS, +KCP, +REALITY, +XHTTP, +HTTPUpgrade 12 | + Trojan: +WS, +gRPC 13 | 14 | Starting with `XRayGUI-v1.6`, support for `XTLS-Reality` and a generator of simple but reliable Client-Server configurations have been introduced ("R" button). 15 | 16 | System-Wide Proxy 17 | -- 18 | Starting from `XRayGUI-v1.5`, it became possible to use the connection as a global proxy for the entire system (`SWP` checkbox). This allows you to redirect all traffic through Socks5 without manually interfering with browser settings. The mode is guaranteed to work in GNOME, Budgie, Cinnamon, MATE (package required: `lib64proxy-gnome`) and KDE-5 (package required: `lib64proxy-kde`). 19 | 20 | In Mageia Linux for XFCE, LXDE and LXQt the global proxy is specified in `Mageia Control Center->Network->Proxy`. On other OSes, you can create a file `/etc/profile.d/proxy.sh`. Execute under `su` and relogin: 21 | ``` 22 | echo -e "export {http_proxy,https_proxy,ftp_proxy}=http://127.0.0.1:8889\nexport {HTTP_PROXY,HTTPS_PROXY,FTP_PROXY}=\$http_proxy" > /etc/profile.d/proxy.sh; chmod +x /etc/profile.d/proxy.sh 23 | ``` 24 | **Note:** Starting with `XRayGUI-v1.1`, the binary `xray-core` removed from the rpm package is downloaded and updated directly from the developer's GitHub to the directory `~/.config/xraygui/xray`. 25 | 26 | ![](https://github.com/AKotov-dev/XRayGUI/blob/main/Screenshot3.png) 27 | 28 | Tested in Mageia-9 and Linux Mint. 29 | -------------------------------------------------------------------------------- /Screenshot3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/Screenshot3.png -------------------------------------------------------------------------------- /xraygui/all/etc/systemd/user/xray-swproxy.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=XRay Service 3 | Documentation=https://github.com/xtls 4 | After=network.target nss-lookup.target 5 | 6 | [Service] 7 | Type=simple 8 | ExecStart=/bin/bash -c 'cd ~/.config/xraygui; source ./swproxy.sh set' 9 | ExecStop=/bin/bash -c 'cd ~/.config/xraygui; source ./swproxy.sh unset' 10 | 11 | RemainAfterExit=yes 12 | 13 | [Install] 14 | WantedBy=default.target 15 | -------------------------------------------------------------------------------- /xraygui/all/etc/systemd/user/xray-update.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Xray-Core Update Service 3 | 4 | [Service] 5 | Type=simple 6 | ExecStart=xray-update 7 | KillMode=mixed 8 | 9 | [Install] 10 | WantedBy=default.target 11 | -------------------------------------------------------------------------------- /xraygui/all/etc/systemd/user/xray.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=XRay Service 3 | Documentation=https://github.com/xtls 4 | After=network.target nss-lookup.target 5 | 6 | [Service] 7 | ExecStart=/bin/bash -c 'cd ~/.config/xraygui/xray && \ 8 | ./xray run -config ~/.config/xraygui/config.json > ~/.config/xraygui/xraygui.log' 9 | 10 | Restart=on-failure 11 | RestartPreventExitStatus=23 12 | 13 | [Install] 14 | WantedBy=default.target 15 | -------------------------------------------------------------------------------- /xraygui/all/usr/bin/xray-update: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # XRay-Core update script 4 | # Dependencies: curl p7zip zenity 5 | 6 | #Если сайт доступен - продолжить 7 | #[[ $(fping github.com) ]] || exit; 8 | 9 | #Language select 10 | case $LANG in 11 | ru_RU.UTF-8) 12 | str=('Обновление XRay-Core' 'Обновить XRay-Core до последней версии?' \ 13 | '1. Обновление займёт примерно 10-15 секунд' \ 14 | '2. Программа будет открыта после обновления') 15 | ;; 16 | *) 17 | str=('XRay-Core Update' 'Update XRay-Core to the latest version?' \ 18 | '1. The update will take about 10-15 seconds' \ 19 | '2. The program will be opened after the update') 20 | ;; 21 | esac 22 | 23 | #Запуск обновления без GUI 24 | test -d ~/.config/xraygui/xray || mkdir -p ~/.config/xraygui/xray 25 | 26 | #Версия локального xray 27 | test -f ~/.config/xraygui/xray/xray && lversion=$(~/.config/xraygui/xray/xray --version | head -n1 | awk '{print $2}') || lversion="0" 28 | echo "lversion: Локальная версия: $lversion" 29 | #read a 30 | 31 | #URL новейшего архива Xray-linux-64.zip на GitHub (содержимое latest может быть представлено одной строкой) 32 | cd ~/.config/xraygui; curl -m 10 -OL https://api.github.com/repos/XTLS/Xray-core/releases/latest || exit 33 | #Кол-во попыток доступа к API 34 | if [ "$(grep 'limit exceeded' ./latest)" ]; then cat ./latest; exit; fi 35 | 36 | archurl=$(cat ./latest | tr -d " \n\"{}[]" | tr "," "\n" | \ 37 | grep browser_download_url | grep 'Xray-linux-64.zip$' | cut -f2- -d":") 38 | echo "URL архива на гите: $archurl" 39 | #read a 40 | 41 | #Версия Xray-linux-64.zip на гите из URL 42 | rversion=$(echo $archurl | cut -d "/" -f8 | sed 's/[[:alpha:]]*//g') 43 | echo "rversion: Версия на гите: $rversion" 44 | #read a 45 | 46 | #Сравнение локальной версии xray и на гите из URL 47 | if [[ $lversion != $rversion ]]; then 48 | zenity --question --title="${str[0]}" --text="${str[1]}\n\n${str[2]}\n${str[3]}" --no-wrap 49 | if [[ $? -eq 0 ]]; then 50 | killall xraygui; systemctl --user stop xray; killall xray 51 | 52 | cd ~/.config/xraygui/xray 53 | curl -OL $archurl 54 | 7z e -y ./*.zip 55 | rm -f ./*.zip* 56 | sleep 2; if [[ -z $(pidof xraygui) ]]; then xraygui; fi; 57 | fi; 58 | fi; 59 | 60 | exit 0 61 | -------------------------------------------------------------------------------- /xraygui/all/usr/bin/xraygui: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ -f "/home/$LOGNAME/.config/xraygui/clear" ]; then 4 | #zenity --question --no-wrap --title="Browser Сleaner" \ 5 | # --text="Clear the Cache and Cookies of installed Browsers?" 6 | 7 | #if [ "$?" -eq "0" ]; then 8 | # Caches (Mozilla, Chrome, Opera, Chromium, Palemoon) 9 | rm -rf ~/.cache/mozilla/* \ 10 | ~/.cache/google-chrome/* \ 11 | ~/.cache/opera/* \ 12 | ~/.cache/chromium/* \ 13 | ~/.cache/moonchild\ productions/* 14 | 15 | # Cookies 16 | rm -f $(find ~/.mozilla/* -type f -name "cookies.sqlite") \ 17 | ~/.config/google-chrome/Default/Cookies* \ 18 | ~/.config/opera/Cookies* \ 19 | ~/.config/chromium/Default/Cookies* \ 20 | "$(find ~/.moonchild\ productions/pale\ moon/* -type f -name "cookies.sqlite")" 21 | #fi; 22 | fi; 23 | # --- 24 | 25 | /usr/share/xraygui/xraygui 26 | 27 | exit 0; 28 | -------------------------------------------------------------------------------- /xraygui/all/usr/share/applications/xraygui.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=XRayGUI (Proxy connector) 3 | Name[ru]=XRayGUI (Прокси коннектор) 4 | Comment=VMESS, VLESS, Shadowsocks 5 | Icon=xraygui 6 | Exec=xraygui 7 | Type=Application 8 | Categories=System; 9 | Terminal=false 10 | -------------------------------------------------------------------------------- /xraygui/all/usr/share/doc/xraygui/repack.txt: -------------------------------------------------------------------------------- 1 | This repack.txt file was created automatically by RPMCreator v2.2 2 | It contains the necessary information to recreation the program from the source code 3 | 4 | Information about the program: 5 | --- 6 | Name of program: XRayGUI 7 | Version of program: 1.2 8 | Program development tool: Lazarus 9 | Version of program development tool: 2.2.4 10 | URL the sources + binaries of the author: https://github.com/AKotov-dev/XRayGUI 11 | 12 | Information about the rpm-package: 13 | --- 14 | Build method: Portable RPM 15 | Time stamp: 19-3-23 07:49:49 16 | 17 | Name: xraygui 18 | Version: 1.2 19 | Release: 0.mrx9 20 | Group: Applications/System 21 | License: GPLv3 22 | Maintainer: Alex Kotov 23 | Vendor: alex_q_2000 (C) 2022 24 | URL of the copy source codes: https://github.com/AKotov-dev/XRayGUI 25 | 26 | Summary: GUI for XRay 27 | 28 | Description: 29 | --- 30 | A small and nimble GUI for XRay-core 31 | --- 32 | More information: /usr/share/doc/package_name/repack.txt 33 | 34 | Package dependencies: 35 | --- 36 | systemd gtk2 fping wget p7zip zenity 37 | 38 | Additionally information: 39 | --- 40 | v1.2 41 | + Default: "allowInsecure": true 42 | + Default connection: 127.0.0.1:1080 43 | + Improved Сonfiguration building 44 | + Improved startup/update services 45 | + Switching logging to the "warning" level 46 | + RPM packages for Mageia-8 and Mageia-9 47 | 48 | v1.1 49 | + Installing xray-core from the GitHub 50 | + xray-core installation/update directory ~/.config/xraygui/xray 51 | + RPM packages for Mageia-8 and Mageia-9 52 | 53 | v1.0 54 | + Update Xray-core v1.6.0 55 | + Auto-update Xray-Core at GUI startup 56 | + RPM packages for Mageia-8 and Mageia-9 57 | 58 | v0.9 59 | + Improved startup control (xray/port) 60 | + Prevention the launch of the second copy of the program 61 | 62 | v0.8-1 63 | + Update: Xray-core v1.5.9 64 | 65 | v0.8 66 | + Switching to systemd (autostart from the user) 67 | + Correction of the spec file (rpm/deb) 68 | + Autostart testing in Mageia/LUbuntu - passed 69 | 70 | v0.7 71 | + Vless+gRPC and Trojan+gRPC support 72 | + General test: 73 | VMESS TLS - passed 74 | VMESS non TLS - passed 75 | 76 | VLESS TLS - passed 77 | VLESS non TLS - passed 78 | VLESS + WS TLS - passed 79 | VLESS + WS non TLS - passed 80 | VLESS + gRPC - passed 81 | 82 | Trojan - passed 83 | Trojan + WS - passed 84 | Trojan + gRPC - passed 85 | 86 | v0.6 87 | + Trojan protocol support 88 | + Proxy launch control in a separate thread 89 | + Optimization of Vmess/Vless/SS/Trojan configurations 90 | 91 | v0.5 92 | + Supported protocols: VMESS/VLESS (ws, ws+tls) and SS (without obfs) 93 | + Changed the file type of uploading/saving the list of configurations to *.proxy 94 | + Excluded URL insertion from PopUp menu to save duplicate search 95 | 96 | v0.4 97 | + Optimization of log output 98 | + Optimization of general perception (visual load) 99 | 100 | v0.3 101 | + Autostart proxy after reboot 102 | + Disabling xray before updating/deleting rpm/deb (spec) 103 | 104 | v0.2 105 | + PopUp menu: Paste from clipboard 106 | + Cosmetic edits, hints, etc... 107 | 108 | v0.1 - initial release 109 | -------------------------------------------------------------------------------- /xraygui/all/usr/share/icons/xraygui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/all/usr/share/icons/xraygui.png -------------------------------------------------------------------------------- /xraygui/backup/portscan_trd.pas: -------------------------------------------------------------------------------- 1 | unit portscan_trd; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, Forms, Controls, SysUtils, Process, Graphics; 9 | 10 | type 11 | PortScan = class(TThread) 12 | private 13 | 14 | { Private declarations } 15 | protected 16 | var 17 | ResultStr: TStringList; 18 | 19 | procedure Execute; override; 20 | procedure ShowStatus; 21 | 22 | end; 23 | 24 | implementation 25 | 26 | uses unit1; 27 | 28 | { TRD } 29 | 30 | procedure PortScan.Execute; 31 | var 32 | ScanProcess: TProcess; 33 | begin 34 | FreeOnTerminate := True; //Уничтожать по завершении 35 | 36 | while not Terminated do 37 | try 38 | ResultStr := TStringList.Create; 39 | 40 | ScanProcess := TProcess.Create(nil); 41 | 42 | ScanProcess.Executable := 'bash'; 43 | ScanProcess.Parameters.Add('-c'); 44 | ScanProcess.Options := [poUsePipes, poWaitOnExit]; 45 | 46 | ScanProcess.Parameters.Add( 47 | 'if [[ $(ss -ltn | grep ' + MainForm.PortEdit.Text + 48 | ') && $(pidof xray) ]]; then echo "yes"; else echo "no"; fi'); 49 | 50 | ScanProcess.Execute; 51 | 52 | ResultStr.LoadFromStream(ScanProcess.Output); 53 | Synchronize(@ShowStatus); 54 | 55 | Sleep(1000); 56 | finally 57 | ResultStr.Free; 58 | ScanProcess.Free; 59 | end; 60 | end; 61 | 62 | //Отображение статуса 63 | procedure PortScan.ShowStatus; 64 | begin 65 | with MainForm do 66 | begin 67 | if ResultStr[0] = 'yes' then 68 | begin 69 | Shape1.Brush.Color := clLime; 70 | PortEdit.Enabled := False; 71 | LoadItem.Enabled := False; 72 | end 73 | else 74 | begin 75 | Shape1.Brush.Color := clYellow; 76 | if ConfigBox.Count <> 0 then 77 | PortEdit.Enabled := True; 78 | LoadItem.Enabled := True; 79 | end; 80 | 81 | Shape1.Repaint; 82 | end; 83 | end; 84 | 85 | end. 86 | -------------------------------------------------------------------------------- /xraygui/backup/reality_gen.lfm: -------------------------------------------------------------------------------- 1 | object RealityForm: TRealityForm 2 | Left = 295 3 | Height = 533 4 | Top = 130 5 | Width = 611 6 | ActiveControl = Edit1 7 | Caption = 'REALITY configurations generator (Client-Server)' 8 | ClientHeight = 533 9 | ClientWidth = 611 10 | OnCreate = FormCreate 11 | Position = poMainFormCenter 12 | SessionProperties = 'ComboBox1.Text;ComboBox2.Text;ComboBox3.Text;Edit1.Text;Edit2.Text;Edit3.Text;Edit4.Text;Edit5.Text;Edit6.Text;Memo1.Lines;SaveDialog1.InitialDir' 13 | LCLVersion = '2.2.4.0' 14 | object Label1: TLabel 15 | AnchorSideLeft.Control = Owner 16 | AnchorSideTop.Side = asrCenter 17 | Left = 8 18 | Height = 17 19 | Top = 18 20 | Width = 66 21 | BorderSpacing.Left = 8 22 | Caption = 'Server:Port' 23 | ParentColor = False 24 | end 25 | object Edit1: TEdit 26 | AnchorSideLeft.Control = Label1 27 | AnchorSideLeft.Side = asrBottom 28 | AnchorSideTop.Control = Label1 29 | AnchorSideTop.Side = asrCenter 30 | Left = 79 31 | Height = 37 32 | Top = 8 33 | Width = 238 34 | BorderSpacing.Left = 5 35 | OnChange = Edit1Change 36 | TabOrder = 0 37 | end 38 | object Label2: TLabel 39 | AnchorSideLeft.Control = Edit1 40 | AnchorSideLeft.Side = asrBottom 41 | AnchorSideTop.Control = Label1 42 | AnchorSideTop.Side = asrCenter 43 | Left = 319 44 | Height = 17 45 | Top = 18 46 | Width = 3 47 | BorderSpacing.Left = 2 48 | Caption = ':' 49 | ParentColor = False 50 | end 51 | object Edit2: TEdit 52 | AnchorSideLeft.Control = Label2 53 | AnchorSideLeft.Side = asrBottom 54 | AnchorSideTop.Control = Label1 55 | AnchorSideTop.Side = asrCenter 56 | Left = 324 57 | Height = 37 58 | Hint = 'Strictly recommended 443' 59 | Top = 8 60 | Width = 82 61 | BorderSpacing.Left = 2 62 | OnChange = Edit1Change 63 | ParentShowHint = False 64 | ShowHint = True 65 | TabOrder = 1 66 | Text = '443' 67 | end 68 | object Label3: TLabel 69 | AnchorSideLeft.Control = Owner 70 | Left = 8 71 | Height = 17 72 | Top = 208 73 | Width = 31 74 | BorderSpacing.Left = 8 75 | Caption = 'UUID' 76 | ParentColor = False 77 | end 78 | object Edit3: TEdit 79 | AnchorSideLeft.Control = Edit5 80 | AnchorSideTop.Control = Label3 81 | AnchorSideTop.Side = asrCenter 82 | AnchorSideRight.Control = SpeedButton1 83 | Left = 81 84 | Height = 37 85 | Top = 198 86 | Width = 434 87 | Anchors = [akTop, akLeft, akRight] 88 | OnChange = Edit1Change 89 | TabOrder = 5 90 | end 91 | object Label4: TLabel 92 | AnchorSideLeft.Control = Owner 93 | Left = 8 94 | Height = 17 95 | Top = 64 96 | Width = 30 97 | BorderSpacing.Left = 8 98 | Caption = 'Flow' 99 | ParentColor = False 100 | end 101 | object ComboBox1: TComboBox 102 | AnchorSideLeft.Control = Label4 103 | AnchorSideLeft.Side = asrBottom 104 | AnchorSideTop.Control = Label4 105 | AnchorSideTop.Side = asrCenter 106 | AnchorSideRight.Control = Edit2 107 | AnchorSideRight.Side = asrBottom 108 | Left = 58 109 | Height = 37 110 | Top = 54 111 | Width = 348 112 | Anchors = [akTop, akLeft, akRight] 113 | BorderSpacing.Left = 20 114 | ItemHeight = 0 115 | ItemIndex = 0 116 | Items.Strings = ( 117 | 'xtls-rprx-vision' 118 | 'xtls-rprx-vision-udp443' 119 | ) 120 | OnChange = Edit1Change 121 | TabOrder = 2 122 | Text = 'xtls-rprx-vision' 123 | end 124 | object Label5: TLabel 125 | AnchorSideLeft.Control = Owner 126 | Left = 8 127 | Height = 17 128 | Top = 112 129 | Width = 21 130 | BorderSpacing.Left = 8 131 | Caption = 'SNI' 132 | ParentColor = False 133 | end 134 | object ComboBox2: TComboBox 135 | AnchorSideLeft.Control = ComboBox1 136 | AnchorSideTop.Control = Label5 137 | AnchorSideTop.Side = asrCenter 138 | AnchorSideRight.Control = Edit2 139 | AnchorSideRight.Side = asrBottom 140 | Left = 58 141 | Height = 37 142 | Top = 102 143 | Width = 348 144 | Anchors = [akTop, akLeft, akRight] 145 | ItemHeight = 0 146 | ItemIndex = 7 147 | Items.Strings = ( 148 | 'www.asus.com' 149 | 'www.bing.com' 150 | 'www.cisco.com' 151 | 'www.linksys.com' 152 | 'www.microsoft.com' 153 | 'www.nvidia.com' 154 | 'www.samsung.com' 155 | 'www.yahoo.com' 156 | ) 157 | OnChange = Edit1Change 158 | TabOrder = 3 159 | Text = 'www.yahoo.com' 160 | end 161 | object Label6: TLabel 162 | AnchorSideLeft.Control = Owner 163 | Left = 8 164 | Height = 17 165 | Top = 160 166 | Width = 37 167 | BorderSpacing.Left = 8 168 | Caption = 'FPrint' 169 | ParentColor = False 170 | end 171 | object ComboBox3: TComboBox 172 | AnchorSideLeft.Control = ComboBox1 173 | AnchorSideTop.Control = Label6 174 | AnchorSideTop.Side = asrCenter 175 | AnchorSideRight.Control = Edit2 176 | AnchorSideRight.Side = asrBottom 177 | Left = 58 178 | Height = 37 179 | Top = 150 180 | Width = 348 181 | Anchors = [akTop, akLeft, akRight] 182 | ItemHeight = 0 183 | Items.Strings = ( 184 | 'chrome' 185 | 'firefox' 186 | 'edge' 187 | 'safari' 188 | '360' 189 | 'ios' 190 | 'android' 191 | ) 192 | OnChange = Edit1Change 193 | TabOrder = 4 194 | Text = 'chrome' 195 | end 196 | object Label7: TLabel 197 | AnchorSideLeft.Control = Owner 198 | Left = 8 199 | Height = 17 200 | Top = 304 201 | Width = 60 202 | BorderSpacing.Left = 8 203 | Caption = 'Public Key' 204 | ParentColor = False 205 | end 206 | object Edit4: TEdit 207 | AnchorSideLeft.Control = Edit5 208 | AnchorSideTop.Control = Label7 209 | AnchorSideTop.Side = asrCenter 210 | AnchorSideRight.Control = SpeedButton2 211 | Left = 81 212 | Height = 37 213 | Top = 294 214 | Width = 434 215 | Anchors = [akTop, akLeft, akRight] 216 | OnChange = Edit1Change 217 | TabOrder = 7 218 | end 219 | object Label8: TLabel 220 | AnchorSideLeft.Control = Owner 221 | Left = 8 222 | Height = 17 223 | Top = 256 224 | Width = 65 225 | BorderSpacing.Left = 8 226 | Caption = 'Private Key' 227 | ParentColor = False 228 | end 229 | object Edit5: TEdit 230 | AnchorSideLeft.Control = Label8 231 | AnchorSideLeft.Side = asrBottom 232 | AnchorSideTop.Control = Label8 233 | AnchorSideTop.Side = asrCenter 234 | AnchorSideRight.Control = SpeedButton2 235 | Left = 81 236 | Height = 37 237 | Top = 246 238 | Width = 434 239 | Anchors = [akTop, akLeft, akRight] 240 | BorderSpacing.Left = 8 241 | OnChange = Edit1Change 242 | TabOrder = 6 243 | end 244 | object SpeedButton1: TSpeedButton 245 | AnchorSideLeft.Control = Edit3 246 | AnchorSideLeft.Side = asrBottom 247 | AnchorSideTop.Control = Edit3 248 | AnchorSideRight.Control = Owner 249 | AnchorSideRight.Side = asrBottom 250 | AnchorSideBottom.Control = Edit3 251 | AnchorSideBottom.Side = asrBottom 252 | Left = 515 253 | Height = 37 254 | Top = 198 255 | Width = 88 256 | Anchors = [akTop, akRight, akBottom] 257 | BorderSpacing.Right = 8 258 | Caption = 'NEW' 259 | OnClick = SpeedButton1Click 260 | end 261 | object SpeedButton2: TSpeedButton 262 | AnchorSideLeft.Control = Edit4 263 | AnchorSideLeft.Side = asrBottom 264 | AnchorSideTop.Control = Edit5 265 | AnchorSideRight.Control = Owner 266 | AnchorSideRight.Side = asrBottom 267 | AnchorSideBottom.Control = Edit4 268 | AnchorSideBottom.Side = asrBottom 269 | Left = 515 270 | Height = 85 271 | Top = 246 272 | Width = 88 273 | Anchors = [akTop, akRight, akBottom] 274 | BorderSpacing.Right = 8 275 | Caption = 'NEW' 276 | OnClick = SpeedButton2Click 277 | end 278 | object Label9: TLabel 279 | AnchorSideLeft.Control = Owner 280 | Left = 8 281 | Height = 17 282 | Top = 352 283 | Width = 20 284 | BorderSpacing.Left = 8 285 | Caption = 'SID' 286 | ParentColor = False 287 | end 288 | object Edit6: TEdit 289 | AnchorSideTop.Control = Label9 290 | AnchorSideTop.Side = asrCenter 291 | AnchorSideRight.Control = Edit2 292 | AnchorSideRight.Side = asrBottom 293 | Left = 40 294 | Height = 37 295 | Top = 342 296 | Width = 366 297 | Anchors = [akTop, akLeft, akRight] 298 | OnChange = Edit1Change 299 | TabOrder = 8 300 | end 301 | object SpeedButton3: TSpeedButton 302 | AnchorSideLeft.Control = Edit6 303 | AnchorSideLeft.Side = asrBottom 304 | AnchorSideTop.Control = Edit6 305 | AnchorSideBottom.Control = Edit6 306 | AnchorSideBottom.Side = asrBottom 307 | Left = 406 308 | Height = 37 309 | Top = 342 310 | Width = 88 311 | Anchors = [akTop, akLeft, akBottom] 312 | Caption = 'NEW' 313 | OnClick = SpeedButton3Click 314 | end 315 | object Memo1: TMemo 316 | AnchorSideLeft.Control = Owner 317 | AnchorSideRight.Control = Owner 318 | AnchorSideRight.Side = asrBottom 319 | AnchorSideBottom.Control = Owner 320 | AnchorSideBottom.Side = asrBottom 321 | Left = 8 322 | Height = 101 323 | Top = 424 324 | Width = 595 325 | Anchors = [akTop, akLeft, akRight, akBottom] 326 | BorderSpacing.Left = 8 327 | BorderSpacing.Right = 8 328 | BorderSpacing.Bottom = 8 329 | Font.Height = -12 330 | Font.Name = 'Monospace' 331 | ParentFont = False 332 | ReadOnly = True 333 | ScrollBars = ssVertical 334 | TabOrder = 9 335 | end 336 | object CopyBtn: TSpeedButton 337 | AnchorSideRight.Control = Memo1 338 | AnchorSideRight.Side = asrBottom 339 | AnchorSideBottom.Control = Memo1 340 | Left = 498 341 | Height = 35 342 | Top = 387 343 | Width = 105 344 | Anchors = [akRight, akBottom] 345 | BorderSpacing.Bottom = 2 346 | Caption = 'Copy' 347 | Enabled = False 348 | OnClick = CopyBtnClick 349 | end 350 | object Label10: TLabel 351 | AnchorSideLeft.Control = Memo1 352 | AnchorSideBottom.Control = CopyBtn 353 | AnchorSideBottom.Side = asrBottom 354 | Left = 8 355 | Height = 17 356 | Top = 405 357 | Width = 325 358 | Anchors = [akLeft, akBottom] 359 | Caption = 'Connection string to insert into XRayGUI via Clipboard' 360 | ParentColor = False 361 | end 362 | object SaveBtn: TSpeedButton 363 | AnchorSideRight.Control = Owner 364 | AnchorSideRight.Side = asrBottom 365 | Left = 434 366 | Height = 64 367 | Top = 8 368 | Width = 169 369 | Anchors = [akTop, akRight] 370 | BorderSpacing.Right = 8 371 | Caption = 'Save server.json' 372 | Enabled = False 373 | OnClick = SaveBtnClick 374 | end 375 | object IniPropStorage1: TIniPropStorage 376 | StoredValues = <> 377 | Left = 456 378 | Top = 104 379 | end 380 | object SaveDialog1: TSaveDialog 381 | DefaultExt = '.*.json' 382 | FileName = 'server.json' 383 | Filter = 'JSON files (*.json)|*.json' 384 | Options = [ofOverwritePrompt, ofEnableSizing, ofViewDetail] 385 | Left = 544 386 | Top = 104 387 | end 388 | end 389 | -------------------------------------------------------------------------------- /xraygui/backup/reality_gen.pas: -------------------------------------------------------------------------------- 1 | unit reality_gen; 2 | 3 | {$mode ObjFPC}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Process, 9 | StdCtrls, Buttons, IniPropStorage, Clipbrd; 10 | 11 | type 12 | 13 | { TRealityForm } 14 | 15 | TRealityForm = class(TForm) 16 | ComboBox1: TComboBox; 17 | ComboBox2: TComboBox; 18 | ComboBox3: TComboBox; 19 | Edit1: TEdit; 20 | Edit2: TEdit; 21 | Edit3: TEdit; 22 | Edit4: TEdit; 23 | Edit5: TEdit; 24 | Edit6: TEdit; 25 | IniPropStorage1: TIniPropStorage; 26 | Label1: TLabel; 27 | Label10: TLabel; 28 | Label2: TLabel; 29 | Label3: TLabel; 30 | Label4: TLabel; 31 | Label5: TLabel; 32 | Label6: TLabel; 33 | Label7: TLabel; 34 | Label8: TLabel; 35 | Label9: TLabel; 36 | Memo1: TMemo; 37 | SaveDialog1: TSaveDialog; 38 | SpeedButton1: TSpeedButton; 39 | SpeedButton2: TSpeedButton; 40 | SpeedButton3: TSpeedButton; 41 | CopyBtn: TSpeedButton; 42 | SaveBtn: TSpeedButton; 43 | procedure Edit1Change(Sender: TObject); 44 | procedure FormCreate(Sender: TObject); 45 | procedure SpeedButton1Click(Sender: TObject); 46 | procedure SpeedButton2Click(Sender: TObject); 47 | procedure SpeedButton3Click(Sender: TObject); 48 | procedure CopyBtnClick(Sender: TObject); 49 | procedure SaveBtnClick(Sender: TObject); 50 | private 51 | 52 | public 53 | 54 | end; 55 | 56 | var 57 | RealityForm: TRealityForm; 58 | 59 | implementation 60 | 61 | uses unit1; 62 | 63 | {$R *.lfm} 64 | 65 | { TRealityForm } 66 | 67 | //Get UUID 68 | procedure TRealityForm.SpeedButton1Click(Sender: TObject); 69 | var 70 | S: ansistring; 71 | begin 72 | if RunCommand('bash', ['-c', '~/.config/xraygui/xray/xray uuid'], S) then 73 | Edit3.Text := Trim(S); 74 | end; 75 | 76 | //Get Pub/Priv Keys 77 | procedure TRealityForm.SpeedButton2Click(Sender: TObject); 78 | var 79 | S: ansistring; 80 | begin 81 | //Список ключей 82 | if RunCommand('/bin/bash', ['-c', 83 | '~/.config/xraygui/xray/xray x25519 | cut -f2 -d":"'], S) then 84 | begin 85 | //Private Key 86 | Edit5.Text := Trim(Copy(S, 0, Pos(#10, S) - 1)); 87 | //Public Key 88 | Edit4.Text := Trim(Copy(S, Pos(#10, S), Length(S))); 89 | end; 90 | end; 91 | 92 | //Get Sid 93 | procedure TRealityForm.SpeedButton3Click(Sender: TObject); 94 | var 95 | S: ansistring; 96 | begin 97 | if RunCommand('/bin/bash', ['-c', 'openssl rand -hex 8'], S) then 98 | Edit6.Text := Trim(S); 99 | end; 100 | 101 | //Однострочная конфигурация клиента в Буфер 102 | procedure TRealityForm.CopyBtnClick(Sender: TObject); 103 | begin 104 | Clipboard.AsText := Memo1.Text; 105 | end; 106 | 107 | //Save server.json 108 | procedure TRealityForm.SaveBtnClick(Sender: TObject); 109 | var 110 | S: TStringList; 111 | begin 112 | try 113 | S := TStringList.Create; 114 | if SaveDialog1.Execute then 115 | begin 116 | S.Add('{'); 117 | S.Add(' "log": {'); 118 | S.Add(' "loglevel": "warning"'); 119 | S.Add(' },'); 120 | S.Add(' "routing": {'); 121 | S.Add(' "rules": [],'); 122 | S.Add(' "domainStrategy": "AsIs"'); 123 | S.Add(' },'); 124 | S.Add(' "inbounds": ['); 125 | S.Add(' {'); 126 | S.Add(' "port": ' + Edit2.Text + ','); 127 | S.Add(' "protocol": "vless",'); 128 | S.Add(' "tag": "vless_tls",'); 129 | S.Add(' "settings": {'); 130 | S.Add(' "clients": ['); 131 | S.Add(' {'); 132 | S.Add(' "id": "' + Edit3.Text + '",'); 133 | S.Add(' "email": "user1@myserver",'); 134 | S.Add(' "flow": "' + ComboBox1.Text + '"'); 135 | S.Add(' }'); 136 | S.Add(' ],'); 137 | S.Add(' "decryption": "none"'); 138 | S.Add(' },'); 139 | S.Add(' "streamSettings": {'); 140 | S.Add(' "network": "tcp",'); 141 | S.Add(' "security": "reality",'); 142 | S.Add(' "realitySettings": {'); 143 | S.Add(' "show": false,'); 144 | S.Add(' "dest": "' + ComboBox2.Text + ':443",'); 145 | S.Add(' "serverNames": ['); 146 | S.Add(' "' + ComboBox2.Text + '"'); 147 | S.Add(' ],'); 148 | S.Add(' "privateKey": "' + Edit5.Text + '",'); 149 | S.Add(' "shortIds": ['); 150 | S.Add(' "' + Edit6.Text + '"'); 151 | S.Add(' ]'); 152 | S.Add(' }'); 153 | S.Add(' },'); 154 | S.Add(' "sniffing": {'); 155 | S.Add(' "enabled": true,'); 156 | S.Add(' "destOverride": ['); 157 | S.Add(' "http",'); 158 | S.Add(' "tls",'); 159 | S.Add(' "quic"'); 160 | S.Add(' ]'); 161 | S.Add(' }'); 162 | S.Add(' }'); 163 | S.Add(' ],'); 164 | S.Add(' "outbounds": ['); 165 | S.Add(' {'); 166 | S.Add(' "protocol": "freedom",'); 167 | S.Add(' "tag": "direct"'); 168 | S.Add(' },'); 169 | S.Add(' {'); 170 | S.Add(' "protocol": "blackhole",'); 171 | S.Add(' "tag": "block"'); 172 | S.Add(' }'); 173 | S.Add(' ]'); 174 | S.Add('}'); 175 | S.Add(''); 176 | 177 | S.SaveToFile(SaveDialog1.FileName); 178 | end; 179 | 180 | finally 181 | S.Free; 182 | end; 183 | end; 184 | 185 | procedure TRealityForm.FormCreate(Sender: TObject); 186 | begin 187 | IniPropStorage1.IniFileName := MainForm.IniPropStorage1.IniFileName; 188 | end; 189 | 190 | //Пересоздаём однострочную конфигурацию клиента 191 | procedure TRealityForm.Edit1Change(Sender: TObject); 192 | begin 193 | if Edit2.Text <> '443' then Edit2.Font.Color := clRed 194 | else 195 | Edit2.Font.Color := clDefault; 196 | 197 | if ComboBox1.Text <> 'xtls-rprx-vision' then ComboBox1.Font.Color := clRed 198 | else 199 | ComboBox1.Font.Color := clDefault; 200 | 201 | //Кнопки Save и Copy 202 | if (Edit1.Text = '') or (Edit2.Text = '') or (Edit3.Text = '') or 203 | (Edit4.Text = '') or (Edit5.Text = '') or (Edit6.Text = '') or 204 | (ComboBox1.Text = '') or (ComboBox2.Text = '') or (ComboBox3.Text = '') then 205 | begin 206 | SaveBtn.Enabled := False; 207 | CopyBtn.Enabled := False; 208 | end 209 | else 210 | begin 211 | SaveBtn.Enabled := True; 212 | CopyBtn.Enabled := True; 213 | end; 214 | 215 | Memo1.Text := 'vless://' + Edit3.Text + '@' + Edit1.Text + ':' + 216 | Edit2.Text + '?encryption=none&flow=' + ComboBox1.Text + 217 | '&security=reality&sni=' + ComboBox2.Text + '&fp=' + ComboBox3.Text + 218 | '&pbk=' + Edit4.Text + '&sid=' + Edit6.Text + 219 | '&type=tcp&headerType=none#VLESS%20West'; 220 | end; 221 | 222 | end. 223 | -------------------------------------------------------------------------------- /xraygui/backup/start_trd.pas: -------------------------------------------------------------------------------- 1 | unit start_trd; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, Process; 9 | 10 | type 11 | ShowLogTRD = class(TThread) 12 | private 13 | 14 | { Private declarations } 15 | protected 16 | var 17 | Result: TStringList; 18 | 19 | procedure Execute; override; 20 | 21 | procedure ShowLog; 22 | procedure StartTrd; 23 | 24 | end; 25 | 26 | implementation 27 | 28 | uses Unit1; 29 | 30 | { TRD } 31 | 32 | 33 | procedure ShowLogTRD.Execute; 34 | var 35 | ExProcess: TProcess; 36 | begin 37 | try //Старт вывода 38 | Synchronize(@StartTRD); 39 | 40 | FreeOnTerminate := True; //Уничтожить по завершении 41 | Result := TStringList.Create; 42 | 43 | //Рабочий процесс 44 | ExProcess := TProcess.Create(nil); 45 | 46 | ExProcess.Executable := 'bash'; 47 | ExProcess.Parameters.Add('-c'); 48 | 49 | //Если файл лога отсутствует - создаём пустой и читаем до Terminate 50 | ExProcess.Parameters.Add('[[ -f ~/.config/xraygui/xraygui.log ]] || touch ' + 51 | '~/.config/xraygui/xraygui.log && tail -n 100 -f ~/.config/xraygui/xraygui.log 2> >(grep -v truncated >&2)'); 52 | 53 | ExProcess.Options := [poUsePipes, poStderrToOutPut]; 54 | //, poWaitOnExit (синхронный вывод) 55 | 56 | ExProcess.Execute; 57 | 58 | //Выводим лог динамически 59 | while ExProcess.Running do 60 | begin 61 | Result.LoadFromStream(ExProcess.Output); 62 | 63 | //Выводим лог 64 | if Result.Count <> 0 then 65 | Synchronize(@ShowLog); 66 | end; 67 | 68 | finally 69 | Result.Free; 70 | ExProcess.Free; 71 | Terminate; 72 | end; 73 | end; 74 | 75 | { БЛОК ОТОБРАЖЕНИЯ ЛОГА } 76 | 77 | //Старт вывода 78 | procedure ShowLogTRD.StartTRD; 79 | begin 80 | //Промотать список вниз (до вывода tail) 81 | MainForm.LogMemo.SelStart := Length(MainForm.LogMemo.Text); 82 | MainForm.LogMemo.SelLength := 0; 83 | end; 84 | 85 | //Вывод лога 86 | procedure ShowLogTRD.ShowLog; 87 | var 88 | i: integer; 89 | begin 90 | //Вывод построчно 91 | for i := 0 to Result.Count - 1 do 92 | MainForm.LogMemo.Lines.Append(' ' + Result[i]); 93 | 94 | //Выводим последние записи минус 100 95 | if MainForm.LogMemo.Lines.Count > 500 then 96 | for i := 0 to 500 do 97 | MainForm.LogMemo.Lines.Delete(i); 98 | 99 | //Промотать список вниз 100 | MainForm.LogMemo.SelStart := Length(MainForm.LogMemo.Text); 101 | MainForm.LogMemo.SelLength := 0; 102 | end; 103 | 104 | end. 105 | -------------------------------------------------------------------------------- /xraygui/backup/unit1.lfm: -------------------------------------------------------------------------------- 1 | object MainForm: TMainForm 2 | Left = 299 3 | Height = 722 4 | Top = 110 5 | Width = 1003 6 | ActiveControl = Panel1 7 | Caption = 'XRayGUI' 8 | ClientHeight = 722 9 | ClientWidth = 1003 10 | OnClose = FormClose 11 | OnCreate = FormCreate 12 | OnShow = FormShow 13 | SessionProperties = 'ConfigBox.ItemIndex;GroupBox1.Width;Height;Left;OpenDialog1.InitialDir;Panel1.Height;PortEdit.Value;SaveDialog1.InitialDir;Top;Width;DomainBox.Text' 14 | LCLVersion = '3.6.0.0' 15 | object GroupBox1: TGroupBox 16 | Left = 0 17 | Height = 702 18 | Top = 0 19 | Width = 272 20 | Align = alLeft 21 | Caption = 'Configurations [vmess/vless/ss/trojan]' 22 | ClientHeight = 684 23 | ClientWidth = 270 24 | TabOrder = 0 25 | object Panel1: TPanel 26 | Left = 0 27 | Height = 54 28 | Top = 0 29 | Width = 270 30 | Align = alTop 31 | BevelOuter = bvNone 32 | ClientHeight = 54 33 | ClientWidth = 270 34 | TabOrder = 0 35 | OnResize = Panel1Resize 36 | object DeleteBtn: TSpeedButton 37 | AnchorSideRight.Side = asrBottom 38 | Left = 6 39 | Height = 36 40 | Top = 8 41 | Width = 85 42 | Caption = 'Delete' 43 | OnClick = DeleteBtnClick 44 | ShowHint = True 45 | ParentShowHint = False 46 | end 47 | object SelAllBtn: TSpeedButton 48 | AnchorSideLeft.Control = DeleteBtn 49 | AnchorSideLeft.Side = asrBottom 50 | Left = 92 51 | Height = 36 52 | Hint = 'Select all' 53 | Top = 8 54 | Width = 36 55 | BorderSpacing.Left = 1 56 | Caption = '*' 57 | OnClick = SelAllBtnClick 58 | ShowHint = True 59 | ParentShowHint = False 60 | end 61 | object PasteBtn: TSpeedButton 62 | AnchorSideRight.Side = asrBottom 63 | Left = 178 64 | Height = 36 65 | Hint = 'Paste from clipboard' 66 | Top = 8 67 | Width = 85 68 | Anchors = [akTop, akRight] 69 | BorderSpacing.Right = 5 70 | Caption = 'Paste' 71 | OnClick = PasteBtnClick 72 | ShowHint = True 73 | ParentShowHint = False 74 | end 75 | end 76 | object Splitter2: TSplitter 77 | Cursor = crVSplit 78 | Left = 0 79 | Height = 6 80 | Top = 54 81 | Width = 270 82 | Align = alTop 83 | ResizeAnchor = akTop 84 | end 85 | object ConfigBox: TCheckListBox 86 | AnchorSideBottom.Control = Image1 87 | Left = 0 88 | Height = 474 89 | Top = 60 90 | Width = 270 91 | Align = alTop 92 | Anchors = [akTop, akLeft, akRight, akBottom] 93 | Font.Height = -13 94 | Font.Name = 'Monospace' 95 | ItemHeight = 0 96 | MultiSelect = True 97 | ParentFont = False 98 | PopupMenu = PopupMenu1 99 | TabOrder = 2 100 | TopIndex = -1 101 | OnClick = ConfigBoxClick 102 | OnClickCheck = ConfigBoxClickCheck 103 | OnDblClick = StartBtnClick 104 | end 105 | object Image1: TImage 106 | AnchorSideLeft.Control = GroupBox1 107 | AnchorSideLeft.Side = asrCenter 108 | AnchorSideBottom.Control = GroupBox1 109 | AnchorSideBottom.Side = asrBottom 110 | Left = 60 111 | Height = 150 112 | Top = 534 113 | Width = 150 114 | Anchors = [akLeft, akBottom] 115 | Stretch = True 116 | end 117 | end 118 | object Splitter1: TSplitter 119 | Left = 272 120 | Height = 702 121 | Top = 0 122 | Width = 4 123 | end 124 | object GroupBox2: TGroupBox 125 | Left = 276 126 | Height = 702 127 | Top = 0 128 | Width = 727 129 | Align = alClient 130 | Caption = 'Management/Logging' 131 | ClientHeight = 684 132 | ClientWidth = 725 133 | TabOrder = 2 134 | object Panel2: TPanel 135 | Left = 0 136 | Height = 54 137 | Top = 0 138 | Width = 725 139 | Align = alTop 140 | BevelOuter = bvNone 141 | ClientHeight = 54 142 | ClientWidth = 725 143 | TabOrder = 0 144 | OnResize = Panel2Resize 145 | object Shape1: TShape 146 | AnchorSideLeft.Side = asrBottom 147 | AnchorSideTop.Control = StopBtn 148 | AnchorSideTop.Side = asrCenter 149 | Left = 8 150 | Height = 12 151 | Top = 20 152 | Width = 12 153 | BorderSpacing.Left = 10 154 | Brush.Color = clYellow 155 | Shape = stCircle 156 | end 157 | object PortEdit: TSpinEdit 158 | AnchorSideLeft.Side = asrBottom 159 | AnchorSideTop.Control = StopBtn 160 | AnchorSideTop.Side = asrCenter 161 | AnchorSideRight.Control = DomainBox 162 | AnchorSideBottom.Side = asrBottom 163 | Left = 105 164 | Height = 37 165 | Hint = '127.0.0.1:Port (SOCKS)'#10'127.0.0.1:8889 (HTTP)' 166 | Top = 8 167 | Width = 91 168 | Anchors = [akTop, akRight] 169 | BorderSpacing.Right = 5 170 | MinValue = 1000 171 | ParentShowHint = False 172 | ShowHint = True 173 | TabOrder = 0 174 | Value = 1080 175 | end 176 | object StopBtn: TSpeedButton 177 | AnchorSideRight.Control = StartBtn 178 | Left = 547 179 | Height = 36 180 | Top = 8 181 | Width = 85 182 | Anchors = [akTop, akRight] 183 | BorderSpacing.Right = 1 184 | Caption = 'Stop' 185 | OnClick = StopBtnClick 186 | end 187 | object StartBtn: TSpeedButton 188 | AnchorSideRight.Side = asrBottom 189 | Left = 633 190 | Height = 36 191 | Top = 8 192 | Width = 85 193 | Anchors = [akTop, akRight] 194 | BorderSpacing.Right = 5 195 | Caption = 'Start' 196 | OnClick = StartBtnClick 197 | end 198 | object ClearBox: TCheckBox 199 | AnchorSideLeft.Control = Shape1 200 | AnchorSideTop.Control = StopBtn 201 | AnchorSideTop.Side = asrCenter 202 | AnchorSideRight.Control = RealityBtn 203 | Left = 416 204 | Height = 32 205 | Hint = 'Clearing Cookies after starting the GUI (Mageia only)' 206 | Top = 10 207 | Width = 66 208 | Anchors = [akTop, akRight] 209 | BorderSpacing.Right = 5 210 | Caption = 'Clear' 211 | ParentShowHint = False 212 | ShowHint = True 213 | TabOrder = 4 214 | OnChange = ClearBoxChange 215 | end 216 | object Label1: TLabel 217 | AnchorSideTop.Control = StopBtn 218 | AnchorSideTop.Side = asrCenter 219 | AnchorSideRight.Control = PortEdit 220 | Left = 73 221 | Height = 17 222 | Top = 18 223 | Width = 29 224 | Anchors = [akTop, akRight] 225 | BorderSpacing.Right = 3 226 | Caption = 'Port:' 227 | ParentColor = False 228 | end 229 | object AutoStartBox: TCheckBox 230 | AnchorSideTop.Control = StopBtn 231 | AnchorSideTop.Side = asrCenter 232 | AnchorSideRight.Control = ClearBox 233 | Left = 349 234 | Height = 32 235 | Hint = 'AutoStart proxy after reboot' 236 | Top = 10 237 | Width = 62 238 | Anchors = [akTop, akRight] 239 | BorderSpacing.Right = 5 240 | Caption = 'Auto' 241 | ParentShowHint = False 242 | ShowHint = True 243 | TabOrder = 3 244 | OnChange = AutoStartBoxChange 245 | end 246 | object SWPBox: TCheckBox 247 | AnchorSideTop.Control = StopBtn 248 | AnchorSideTop.Side = asrCenter 249 | AnchorSideRight.Control = AutoStartBox 250 | Left = 282 251 | Height = 32 252 | Hint = 'System-Wide Proxy:'#10'Budgie, GNOME, Cinnamon, KDE, MATE' 253 | Top = 10 254 | Width = 62 255 | Anchors = [akTop, akRight] 256 | BorderSpacing.Right = 5 257 | Caption = 'SWP' 258 | ParentShowHint = False 259 | ShowHint = True 260 | TabOrder = 2 261 | OnChange = SWPBoxChange 262 | end 263 | object RealityBtn: TSpeedButton 264 | AnchorSideTop.Control = StopBtn 265 | AnchorSideRight.Control = StopBtn 266 | AnchorSideBottom.Control = StopBtn 267 | AnchorSideBottom.Side = asrBottom 268 | Left = 487 269 | Height = 36 270 | Hint = 'REALITY configurations generator (Client-Server)' 271 | Top = 8 272 | Width = 50 273 | Anchors = [akTop, akRight, akBottom] 274 | BorderSpacing.Right = 10 275 | Glyph.Data = { 276 | 360C0000424D360C000000000000360000002800000020000000180000000100 277 | 200000000000000C000064000000640000000000000000000000000000000000 278 | 0000000000000000000000000000000000000000000000000000000000000000 279 | 000000000000B7651F00B7651F0BB7651FC3B6641EFFB6641EFFB5631DFFB463 280 | 1DFFB4631D9FA8531400B3621D00B0611C00B0601A00B0601A32AF601AE5AF5F 281 | 19FFAE5F19FFAD5E18FFAD5E18FFAC5D17D8AB5D1725AB5D1700000000000000 282 | 0000000000000000000000000000000000000000000000000000000000000000 283 | 000000000000B8651F00B8651F0AB8651FC2B7651FFFB6641EFFB6641EFFB563 284 | 1DFFB4631D9FA4510300B4621C00B1611B00B2621C04B1611B98B0601AFFAF60 285 | 1AFFAF5F19FFAE5F19FFAD5E18FBAD5E186CAE5F1900AC5D1700000000000000 286 | 00000000000000000000000000000000000000000000A6A09E00A9A3A400A8A2 287 | A107A7A2A123A6A1A148A79B9472B66E31E0B8651EFFB7651FFFB6641EFFB663 288 | 1DFFB0713BD0A19B9B6EA09A9A499EA0A720B0682941B2611BEBB1611BFFB060 289 | 1AFFAF601AFFAF5F19FFAE5F19BCAD5E1812AE5E180000000000000000000000 290 | 0000000000000000000000000000ABA5A500ABA5A502AAA5A425A9A4A36DA8A3 291 | A2B4A8A2A2E2A7A2A1F8A79E9BFFB5743EFFB9651EFFB8651FFFB7651FFFB763 292 | 1CFFAE794DFFA29C9BFFA19B9BFAA19997E1AE713DDEB2611AFFB2611BFFB161 293 | 1BFFB0601AFFAF601AF1AF5F194AAF5F1900AE5F190000000000000000000000 294 | 000000000000ADA8A600AEAAA800ACA7A628ACA6A58CABA5A5E0AAA5A4FEA9A4 295 | A3FFA9A3A2FFA8A3A2FFA89F9CFFB5753FFFB9651EFFB86620FFB8651FFFB764 296 | 1DFFB07849F0A29D9DD9A19D9EE0A78B77F6B26624FFB3621CFFB2621CFFB261 297 | 1BFFB1601AFFB15F1899B15A0E05B15C11000000000000000000000000000000 298 | 0000AFAAA900AFAAA909AEA9A867ADA8A7DCACA7A6FFACA6A6FFABA6A5FFAAA5 299 | A4FFAAA4A4FFA9A4A3F6A9A09CD0B77138ECBA6620FFB96620FFB86620FFB865 300 | 1FFFB66825ACA98C7624AD7E5849B3692ADAB4631DFFB4631DFFB3621CFFB261 301 | 1BFFAF692DFEA5866E8298ACC6079E9B9D00000000000000000000000000B0AB 302 | AA00B0ABAA11AFABA993AFAAA9F8AEA9A8FFADA8A7FFADA8A7FFACA7A6FFABA6 303 | A5F6AAA5A4B1A9A5A54EB08E741DBB6822C3BB6721FFBA6721FFB96620FFB866 304 | 20FFB8651FE9B7651EC3B7641DDAB6641DFEB5631DFFB4631DFFB4631DF5B361 305 | 1BB7A88162969F9999E29F9999959F9898119F98980000000000B2ADAC00B2AD 306 | AC0CB1ACAB99B0ACAAFDB0ABAAFFAFAAA9FFAEA9A8FFAEA9A8FFADA8A7DDACA7 307 | A65FABA6A50AB4845D00BC68220BBC6822C2BB6822FFBB6721FFBA6721FFB966 308 | 20FFB86620FFB8651FFFB7651FFFB6641EFFB6641EFFB5641EFFB4631DEBB463 309 | 1D96B3652239A09896469F999AD49F99999C9F99990C9F999900C6C4C300B3AE 310 | AD74B2ADACFBB1ADABFFB1ACABFFB0ABAAFFAFAAA9FFAFAAA9D6AEA9A83BB0AB 311 | AA00AEA8A700BD692300BD69230BBD6923C3BC6822FFBB6822FFBB6721FFBA67 312 | 21FFB96620FFB96620FFB8651FFFB7651FFFB6641EFFB6641EFFB5631DFFB463 313 | 1DFFB4631CECB4601875A2948E45A09A9AE0A0999975A1989400B4B0AE33B4AF 314 | AEE0B3AEADFFB2AEACFFB2ADACFFB1ACABFFB0ABAAEFB0ABAA4DB0ACAA00AFAA 315 | A90000000000BD692300BD69230BBD6923C3BD6923FFBC6822FFBB6822FFBB67 316 | 21FFBA6721FCB96620F6B86620F6B8651FF6B7651FFBB6641EFFB6641EFFB563 317 | 1DFFB4631DFFB4631CF7B4611A60A09B9C81A09A9AE1A09A9A33B5B1AF93B5B0 318 | AFFFB4AFAEFFB3AFADFFB3AEADFFB2ADACFFB1ADABA6B0ABAA05B1ACAB000000 319 | 000000000000BE6A2400BE6A240BBE6A24C3BD6923FFBD6923FFBC6822FFBB68 320 | 22FFBB6721BEBA672141B966203FB866203FB7651F5FB7651FDBB6641EFFB664 321 | 1EFFB5641EFFB4631DFFB4621BC0A58F8043A19B9BEDA19B9A94B6B2B0DAB6B1 322 | B0FFB5B1AFFFB4B0AEFFB4AFAEFFB3AEADFFB2AEAD66B3AEAD00B2ADAB000000 323 | 000000000000BF6A2400BF6A240BBF6A24C3BE6A24FFBD6923FFBD6923FFBC68 324 | 22FFBB6822A9BA682202BB682200B7651F00B8651F00B8651F88B7651FFFB664 325 | 1EFFB6641EFFB5641EFFB4631CE7AE784B40A29D9DD6A29C9BDDB7B3B1F9B7B2 326 | B1FFB6B2B0FFB5B1AFFFB5B0AFFFB4AFAEFDB4AFAE56B4AFAE00000000000000 327 | 000000000000C06B2500C06B250BBF6B25C3BF6A24FFBE6A24FFBD6923FFBD69 328 | 23FFBC6822AABB672105BA672103BA672103BA67210DB86620A6B8651FFFB765 329 | 1FFFB6641EFFB6641EFFB5631DEEB0733F43A39E9FCDA39D9CFCB8B4B2FCB8B3 330 | B2FFB7B3B1FFB6B2B0FFB6B1B0FFB5B0AFFFB4B0AF76B4B0AF00B5B0AF000000 331 | 000000000000C16B2500C16B250BC06B25C3BF6B25FFBF6A24FFBE6A24FFBD69 332 | 23FFBD6923E3BC6822ADBB6822ADBB6721ADBA6721C2B96620F7B96620FFB865 333 | 1FFFB7651FFFB6641EFFB6641DDFAD7F5A3FA49F9FDCA49E9DFEB9B5B3E6B9B5 334 | B3FFB8B4B2FFB7B3B1FFB7B2B1FFB6B2B0FFB5B1B0C2B5B1B012B5B1B0000000 335 | 000000000000C16C2600C16C260BC16B25C3C06B25FFBF6B25FFBF6A24FFBE6A 336 | 24FFBD6923FFBD6923FFBC6822FFBB6822FFBB6721FFBA6721FFB96620FFB966 337 | 20FFB8651FFFB7651FFFB7631CA3A79B964EA5A09FF7A59F9EE7BAB6B4ABBAB6 338 | B4FFB9B5B3FFB8B4B2FFB8B3B2FFB7B3B1FFB6B2B0FBB6B2B07BB6B2AF03B6B2 339 | B00000000000C26C2600C26C260BC16C26C3C16C26FFC06B25FFBF6B25FFBF6A 340 | 24FFBE6A24FFBD6923FFBD6923FFBC6822FFBB6822FFBB6721FFBA6721FFB966 341 | 20FFB96620FFB8651FD4B56C2F3AA7A2A3A3A6A1A0FFA6A09FABBBB7B54DBAB7 342 | B5EFBAB6B4FFB9B5B4FFB8B4B3FFB8B4B2FFB7B3B1FFB7B2B1F2B6B2B073B6B2 343 | B009B6B2B000C36D2700C36D270AC26C26BEC26C26FCC16C26F9C06B25F9BF6B 344 | 25F9BF6A24F9BE6A24F9BD6923F9BD6923F9BC6822F9BB6822F9BB6721F6BA67 345 | 21E1B9661F9DB868242FA8A4A56DA8A2A2F7A7A2A1EFA7A1A04DBBB7B607BBB7 346 | B699BBB7B5FFBAB6B5FFB9B6B4FFB9B5B3FFB8B4B2FFB7B3B2FFB7B3B1F7B6B2 347 | B1A2B6B2B02FB4B7BA02C5651803C36C2536C26C2648C16C2647C16B2547C06B 348 | 2547BF6A2447BE6A2447BE692347BD692347BC682247BC672147BC651C3DBC5F 349 | 111EAD9E941AAAA6A780A9A4A3F2A9A3A3FFA8A3A299A7A1A107BCB8B600BCB8 350 | B61FBCB8B6C2BBB7B6FFBAB7B5FFBAB6B4FFB9B5B3FFB8B4B3FFB8B4B2FFB7B3 351 | B1FFB7B2B1E5B6B2B096B6B1B045B3BCC3129DFFFF01A8E3F800000000000000 352 | 00000000000000000000000000007DFFFF00B89AAD00A7C6DB06ACAFB526ACA9 353 | A96CACA7A6CAABA6A5FCAAA5A4FFAAA4A4C2A9A4A31FA9A4A300BDB8B700BCB8 354 | B700BCB8B72BBCB8B6C2BBB8B6FFBBB7B5FFBAB6B4FFB9B5B4FFB9B5B3FFB8B4 355 | B2FFB7B3B2FFB7B3B1FFB6B2B0F5B6B1B0D2B5B1AFA6B4B0AF7EB4AFAE62B3AF 356 | AD52B3AEAD4EB2ADAC52B1ACAB5EB0ACAB73B0ABAA94AFAAA9BEAEA9A8E7ADA8 357 | A7FDADA8A7FFACA7A6FFABA6A5C2ABA5A52BABA6A500ABA5A50000000000BCBA 358 | B900BCB8B700BCB9B71EBCB8B79DBCB8B6F6BBB7B6FFBAB7B5FFBAB6B4FFB9B5 359 | B3FFB8B4B3FFB8B4B2FFB7B3B1FFB6B2B1FFB6B1B0FFB5B1AFFFB4B0AFFEB4AF 360 | AEFCB3AFADFBB2AEADFCB2ADACFEB1ACABFFB0ACAAFFB0ABAAFFAFAAA9FFAEAA 361 | A8FFAEA9A8F6ADA8A79EACA7A61FACA7A600ACA7A60000000000000000000000 362 | 000000000000BCB9B700BDB9B709BCB9B756BCB8B6C3BBB8B6F9BBB7B5FFBAB6 363 | B4FFB9B5B4FFB9B5B3FFB8B4B2FFB7B3B2FFB7B3B1FFB6B2B0FFB5B1B0FFB5B0 364 | AFFFB4B0AEFFB3AFAEFFB3AEADFFB2ADACFFB1ADACFFB1ACABFFB0ABAAF9AFAA 365 | A9C4AFAAA957AEA9A809AEA9A800AEBCB2000000000000000000000000000000 366 | 00000000000000000000BCBAB800BCB7B600BCB9B711BCB8B655BCB8B6A8BBB7 367 | B5E0BAB7B5F9BAB6B4FFB9B5B3FFB8B4B3FFB8B4B2FFB7B3B1FFB6B2B1FFB6B1 368 | B0FFB5B1AFFFB4B0AFFFB4AFAEFFB3AFADFAB2AEACE1B2ADACA8B1ACAB56B0AB 369 | AA12B1ACAB00AFABA90000000000000000000000000000000000000000000000 370 | 000000000000000000000000000000000000C0B8B600BCB8B600BCB8B606BBB8 371 | B629BBB7B560BAB7B597BAB6B4C2B9B5B4DFB9B5B3F0B8B4B2F7B7B3B2F7B7B2 372 | B1F0B6B2B0DFB5B1AFC3B4B0AF97B4AFAE60B3AEAD29B2AEAD06B2AEAC00B8B2 373 | B300000000000000000000000000000000000000000000000000 374 | } 375 | OnClick = RealityBtnClick 376 | ShowHint = True 377 | ParentShowHint = False 378 | end 379 | object DomainBox: TComboBox 380 | AnchorSideTop.Control = StopBtn 381 | AnchorSideTop.Side = asrCenter 382 | AnchorSideRight.Control = SWPBox 383 | AnchorSideBottom.Side = asrBottom 384 | Left = 201 385 | Height = 37 386 | Hint = 'Bypassing domain zones' 387 | Top = 8 388 | Width = 76 389 | Anchors = [akTop, akRight] 390 | BorderSpacing.Right = 5 391 | Font.Height = -13 392 | Font.Name = 'Sans' 393 | Font.Style = [fsBold] 394 | ItemHeight = 0 395 | Items.Strings = ( 396 | 'by' 397 | 'cn' 398 | 'er' 399 | 'ir' 400 | 'pk' 401 | 'ru' 402 | 'sa' 403 | 'so' 404 | 'tm' 405 | 'tr' 406 | 'ua' 407 | 'uz' 408 | ) 409 | ParentFont = False 410 | ParentShowHint = False 411 | ShowHint = True 412 | TabOrder = 1 413 | Text = 'cn' 414 | end 415 | end 416 | object Splitter3: TSplitter 417 | Cursor = crVSplit 418 | Left = 0 419 | Height = 6 420 | Top = 54 421 | Width = 725 422 | Align = alTop 423 | ResizeAnchor = akTop 424 | end 425 | object LogMemo: TMemo 426 | Left = 0 427 | Height = 624 428 | Top = 60 429 | Width = 725 430 | Align = alClient 431 | Font.Height = -12 432 | Font.Name = 'Monospace' 433 | ParentFont = False 434 | ReadOnly = True 435 | ScrollBars = ssVertical 436 | TabOrder = 2 437 | WantReturns = False 438 | end 439 | end 440 | object StaticText1: TStaticText 441 | Left = 0 442 | Height = 20 443 | Top = 702 444 | Width = 1003 445 | Align = alBottom 446 | Caption = 'License: GPLv3 Author: alex_q_2000 (C) 2023 URL: https://github.com/AKotov-dev' 447 | Font.Color = clGray 448 | Font.Height = -11 449 | Font.Name = 'Sans' 450 | ParentFont = False 451 | TabOrder = 3 452 | end 453 | object IniPropStorage1: TIniPropStorage 454 | StoredValues = < 455 | item 456 | Name = 'findex' 457 | Value = '100' 458 | end> 459 | OnRestoreProperties = IniPropStorage1RestoreProperties 460 | Left = 320 461 | Top = 104 462 | end 463 | object PopupMenu1: TPopupMenu 464 | Images = ImageList1 465 | OnPopup = PopupMenu1Popup 466 | Left = 121 467 | Top = 104 468 | object CopyItem: TMenuItem 469 | Caption = 'Copy' 470 | ImageIndex = 0 471 | OnClick = CopyItemClick 472 | end 473 | object Separator1: TMenuItem 474 | Caption = '-' 475 | end 476 | object SaveItem: TMenuItem 477 | Caption = 'Save to file' 478 | ImageIndex = 2 479 | OnClick = SaveItemClick 480 | end 481 | object LoadItem: TMenuItem 482 | Caption = 'Load from file' 483 | ImageIndex = 1 484 | OnClick = LoadItemClick 485 | end 486 | end 487 | object OpenDialog1: TOpenDialog 488 | DefaultExt = '.*.proxy' 489 | Filter = 'XRayGUI files (*.proxy)|*.proxy' 490 | Options = [ofNoNetworkButton, ofEnableSizing] 491 | Left = 64 492 | Top = 176 493 | end 494 | object SaveDialog1: TSaveDialog 495 | DefaultExt = '.*.proxy' 496 | Filter = 'XRayGUI file (*.proxy)|*.proxy' 497 | Options = [ofOverwritePrompt, ofEnableSizing] 498 | Left = 168 499 | Top = 176 500 | end 501 | object ImageList1: TImageList 502 | Left = 208 503 | Top = 104 504 | Bitmap = { 505 | 4C7A030000001000000010000000130400000000000078DAEDD35D4C93571807 506 | F03772B5C2EDB6645920CB2E77B5AB99E904C1AA14615268295018938F02A515 507 | 65F413280205DAD2A201943A758EB81951B74874C28C37F225149A6D0AE342F0 508 | 6250966CC1AC74A55936FF7BCE5B31B016292C4BB6646FF24F9B3CE7779E73DE 509 | 735E8E0B7DBA12B8984E6194A8431825091756B3EDE7A2B98DECBE1D331DFB76 510 | 60934C879B83EFCBEAFBB937B80D1E56E3C7244625FFB576531B6F603578867B 511 | D76571F032168655406F143F07F3B417F61F5D2FC7A0334E848E58C9FCC977BA 512 | 5D86B77EC6BDDA91E7196B1DC70F777DF00C81CDB1D6076DEC0C59BC305D6FCE 513 | F273D03AD6F9605F1A13B7E17E598D1F73DFE2627B59E769CDACC66DF2F09EED 514 | E55FE0D79EDF563C3B9735F767CA99CA09B6E2D9D9DED4EC31B2BEAB776F4BEB 515 | A7B161CE2639E2F3A3B12135DBABD1549BDEF4FE74C44EC1F99A20ECFCFC1C71 516 | ABEF324CA84663B87FE011D8164C94A5F5F1DC8AB1FDF84A84FE0E05A1F17804 517 | 6D0BE705D679E74689B6CF2731FF7AE722CCC35ED8C796230A1BCB0CD981971C 518 | 8B7725FD5EB87FC196C20CB3821BBFB9A30780EDE499BDB35DFFCCFEEFFFC35E 519 | 300013FD2E6D27CCFEDDEFB7A8405ADF502D0F588D721C5715C3DA6C82C55C87 520 | D6A65AB434D6C07CC280A67A3D1A4D3A545614E2884CF87B7AEA5E35008EA551 521 | 230FF8278EE2A7A10A384F9F84CFE75B178F67013D179CE8FBF22A6E7FD5877E 522 | 67061C5AD1D3C329F12AE6DBEBF31170931F54A2FB747B881F1D1DC439B31806 523 | B514B76FF5E1EBB362F847E468D31C7C7AE8C0AE0A87298FBC9A7C39BABBC2F8 524 | 91415C3F2581E918F337781F18CD857F3807EA82F83F1C75E42755E4CB70A6D3 525 | 1EE2DD13E3D0948A50A5CC0D7A673AEF5746B2612C4B84BD4ECE7BBF4B0963D5 526 | 8798A4F133D3539487F87E8AE50126C646E09E1C8741A3C2F41752F239E46541 527 | 5F9B4BBE02810925E6FA8BD07B2A1B97EC325C6A93A2C79A891E4B063E6D4DC7 528 | C596F731DA9319EC3D9A4D3E0B86D2BD68ABC921AF245F8E80AB945242294660 529 | BC1081B123940204EE7F40C9E36DB0F7AA4F087AEA6DD1CB70B1BD129F38D4B8 530 | 6057E1BC4D8973D6727C6C29C3D956059C2DC5E86E2EC2197321AD5B88956129 531 | F48A78D88CD97C6F87291F8FAF1FC6E36B6998BB9A8AB95E11E6AE2463F6CA01 532 | CC5E165292F0E8F3443CFA2C010D9587C84BA02FD9435E46BE0CCDFA7C3C597C 533 | 88279ED53C0866E13B2CF1F93698F96FA02B4FE1BD8EBCD590C57BB32EEFF999 534 | 2D2F2FBF30DA32E633A12B7E0F563D7997024D5A79449685DD8795A10C688B76 535 | D37B93F2EFBC499B1B91F77ABDD02892C98BC9EF8251255EF975AC048D9ADC88 536 | 7A335FAD3808DF3D3114593BFD3999A21ABD326DA5282F8DFF461BEA34385153 537 | 0D93F123D4198EA356770C35DAA3306AD4D057ABA0AB52429CF22E4A653BFD49 538 | BBDFAEFA13A9CD7CB4 539 | } 540 | end 541 | object GetQR: TAsyncProcess 542 | Active = False 543 | Executable = 'bash' 544 | Parameters.Strings = ( 545 | '' 546 | ) 547 | Options = [poWaitOnExit] 548 | Priority = ppNormal 549 | StartupOptions = [] 550 | ShowWindow = swoNone 551 | WindowColumns = 0 552 | WindowHeight = 0 553 | WindowLeft = 0 554 | WindowRows = 0 555 | WindowTop = 0 556 | WindowWidth = 0 557 | FillAttribute = 0 558 | Left = 320 559 | Top = 176 560 | end 561 | end 562 | -------------------------------------------------------------------------------- /xraygui/backup/update_trd.pas: -------------------------------------------------------------------------------- 1 | unit update_trd; 2 | 3 | {$mode ObjFPC}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, Forms, Controls, SysUtils, Process; 9 | 10 | type 11 | CheckUpdate = class(TThread) 12 | private 13 | 14 | { Private declarations } 15 | protected 16 | S: TStringList; 17 | 18 | procedure Execute; override; 19 | procedure StopUpdate; 20 | 21 | end; 22 | 23 | implementation 24 | 25 | uses unit1; 26 | 27 | { TRD } 28 | 29 | procedure CheckUpdate.Execute; 30 | var 31 | UpdateProcess: TProcess; 32 | begin 33 | S := TStringList.Create; 34 | FreeOnTerminate := True; //Уничтожать по завершении 35 | try 36 | UpdateProcess := TProcess.Create(nil); 37 | 38 | UpdateProcess.Executable := 'bash'; 39 | UpdateProcess.Parameters.Add('-c'); 40 | UpdateProcess.Options := [poUsePipes, poWaitOnExit]; 41 | 42 | UpdateProcess.Parameters.Add( 43 | '[[ $(systemctl is-active xray-update) == active ]] || systemctl --user start xray-update'); 44 | 45 | UpdateProcess.Execute; 46 | 47 | //Если регистрация пройдена запустить Update 48 | { if Registered then UpdateProcess.Execute; 49 | 50 | //Показать версию WARP 51 | UpdateProcess.Parameters.Delete(1); 52 | UpdateProcess.Parameters.Add('warp-cli --version'); 53 | UpdateProcess.Execute; 54 | 55 | S.LoadFromStream(UpdateProcess.Output); 56 | Synchronize(@StopUpdate); } 57 | finally 58 | S.Free; 59 | UpdateProcess.Free; 60 | end; 61 | end; 62 | 63 | //Останов обновления 64 | procedure CheckUpdate.StopUpdate; 65 | begin 66 | //Перечитываем версию в подсказке 67 | // MainForm.StartBtn.Hint := Trim(S[0]); 68 | end; 69 | 70 | end. 71 | -------------------------------------------------------------------------------- /xraygui/backup/xraygui.lpi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <Scaled Value="True"/> 9 | <ResourceType Value="res"/> 10 | <UseXPManifest Value="True"/> 11 | <XPManifest> 12 | <DpiAware Value="True"/> 13 | </XPManifest> 14 | <Icon Value="0"/> 15 | </General> 16 | <i18n> 17 | <EnableI18N Value="True"/> 18 | <OutDir Value="languages"/> 19 | </i18n> 20 | <BuildModes> 21 | <Item Name="Default" Default="True"/> 22 | <Item Name="Debug"> 23 | <CompilerOptions> 24 | <Version Value="11"/> 25 | <Target> 26 | <Filename Value="xraygui"/> 27 | </Target> 28 | <SearchPaths> 29 | <IncludeFiles Value="$(ProjOutDir)"/> 30 | <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> 31 | </SearchPaths> 32 | <Parsing> 33 | <SyntaxOptions> 34 | <IncludeAssertionCode Value="True"/> 35 | </SyntaxOptions> 36 | </Parsing> 37 | <CodeGeneration> 38 | <Checks> 39 | <IOChecks Value="True"/> 40 | <RangeChecks Value="True"/> 41 | <OverflowChecks Value="True"/> 42 | <StackChecks Value="True"/> 43 | </Checks> 44 | <VerifyObjMethodCallValidity Value="True"/> 45 | </CodeGeneration> 46 | <Linking> 47 | <Debugging> 48 | <DebugInfoType Value="dsDwarf3"/> 49 | <UseHeaptrc Value="True"/> 50 | <TrashVariables Value="True"/> 51 | <UseExternalDbgSyms Value="True"/> 52 | </Debugging> 53 | <Options> 54 | <Win32> 55 | <GraphicApplication Value="True"/> 56 | </Win32> 57 | </Options> 58 | </Linking> 59 | </CompilerOptions> 60 | </Item> 61 | </BuildModes> 62 | <PublishOptions> 63 | <Version Value="2"/> 64 | <UseFileFilters Value="True"/> 65 | </PublishOptions> 66 | <RunParams> 67 | <FormatVersion Value="2"/> 68 | </RunParams> 69 | <RequiredPackages> 70 | <Item> 71 | <PackageName Value="LCL"/> 72 | </Item> 73 | </RequiredPackages> 74 | <Units> 75 | <Unit> 76 | <Filename Value="xraygui.pas"/> 77 | <IsPartOfProject Value="True"/> 78 | </Unit> 79 | <Unit> 80 | <Filename Value="unit1.pas"/> 81 | <IsPartOfProject Value="True"/> 82 | <ComponentName Value="MainForm"/> 83 | <HasResources Value="True"/> 84 | <ResourceBaseClass Value="Form"/> 85 | <UnitName Value="Unit1"/> 86 | </Unit> 87 | <Unit> 88 | <Filename Value="start_trd.pas"/> 89 | <IsPartOfProject Value="True"/> 90 | </Unit> 91 | <Unit> 92 | <Filename Value="portscan_trd.pas"/> 93 | <IsPartOfProject Value="True"/> 94 | </Unit> 95 | <Unit> 96 | <Filename Value="update_trd.pas"/> 97 | <IsPartOfProject Value="True"/> 98 | </Unit> 99 | <Unit> 100 | <Filename Value="reality_gen.pas"/> 101 | <IsPartOfProject Value="True"/> 102 | <ComponentName Value="RealityForm"/> 103 | <HasResources Value="True"/> 104 | <ResourceBaseClass Value="Form"/> 105 | </Unit> 106 | </Units> 107 | </ProjectOptions> 108 | <CompilerOptions> 109 | <Version Value="11"/> 110 | <Target> 111 | <Filename Value="xraygui"/> 112 | </Target> 113 | <SearchPaths> 114 | <IncludeFiles Value="$(ProjOutDir)"/> 115 | <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> 116 | </SearchPaths> 117 | <Linking> 118 | <Options> 119 | <Win32> 120 | <GraphicApplication Value="True"/> 121 | </Win32> 122 | </Options> 123 | </Linking> 124 | </CompilerOptions> 125 | <Debugging> 126 | <Exceptions> 127 | <Item> 128 | <Name Value="EAbort"/> 129 | </Item> 130 | <Item> 131 | <Name Value="ECodetoolError"/> 132 | </Item> 133 | <Item> 134 | <Name Value="EFOpenError"/> 135 | </Item> 136 | </Exceptions> 137 | </Debugging> 138 | </CONFIG> 139 | -------------------------------------------------------------------------------- /xraygui/backup/xraygui.lps: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <CONFIG> 3 | <ProjectSession> 4 | <Version Value="12"/> 5 | <BuildModes Active="Release"> 6 | <Item Name="Release"> 7 | <CompilerOptions> 8 | <Version Value="11"/> 9 | <Target> 10 | <Filename Value="xraygui"/> 11 | </Target> 12 | <SearchPaths> 13 | <IncludeFiles Value="$(ProjOutDir)"/> 14 | <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> 15 | </SearchPaths> 16 | <CodeGeneration> 17 | <SmartLinkUnit Value="True"/> 18 | <Optimizations> 19 | <OptimizationLevel Value="3"/> 20 | </Optimizations> 21 | </CodeGeneration> 22 | <Linking> 23 | <Debugging> 24 | <GenerateDebugInfo Value="False"/> 25 | <DebugInfoType Value="dsDwarf2"/> 26 | </Debugging> 27 | <LinkSmart Value="True"/> 28 | <Options> 29 | <Win32> 30 | <GraphicApplication Value="True"/> 31 | </Win32> 32 | </Options> 33 | </Linking> 34 | </CompilerOptions> 35 | </Item> 36 | </BuildModes> 37 | <Units> 38 | <Unit> 39 | <Filename Value="xraygui.pas"/> 40 | <IsPartOfProject Value="True"/> 41 | <EditorIndex Value="-1"/> 42 | <CursorPos X="19"/> 43 | <UsageCount Value="83"/> 44 | </Unit> 45 | <Unit> 46 | <Filename Value="unit1.pas"/> 47 | <IsPartOfProject Value="True"/> 48 | <ComponentName Value="MainForm"/> 49 | <HasResources Value="True"/> 50 | <ResourceBaseClass Value="Form"/> 51 | <UnitName Value="Unit1"/> 52 | <IsVisibleTab Value="True"/> 53 | <CursorPos X="13"/> 54 | <UsageCount Value="83"/> 55 | <Loaded Value="True"/> 56 | <LoadedDesigner Value="True"/> 57 | </Unit> 58 | <Unit> 59 | <Filename Value="start_trd.pas"/> 60 | <IsPartOfProject Value="True"/> 61 | <EditorIndex Value="-1"/> 62 | <TopLine Value="14"/> 63 | <CursorPos X="19"/> 64 | <UsageCount Value="82"/> 65 | </Unit> 66 | <Unit> 67 | <Filename Value="portscan_trd.pas"/> 68 | <IsPartOfProject Value="True"/> 69 | <EditorIndex Value="-1"/> 70 | <CursorPos X="21"/> 71 | <UsageCount Value="62"/> 72 | </Unit> 73 | <Unit> 74 | <Filename Value="update_trd.pas"/> 75 | <IsPartOfProject Value="True"/> 76 | <EditorIndex Value="-1"/> 77 | <CursorPos X="20"/> 78 | <UsageCount Value="56"/> 79 | </Unit> 80 | <Unit> 81 | <Filename Value="reality_gen.pas"/> 82 | <IsPartOfProject Value="True"/> 83 | <ComponentName Value="RealityForm"/> 84 | <HasResources Value="True"/> 85 | <ResourceBaseClass Value="Form"/> 86 | <EditorIndex Value="-1"/> 87 | <CursorPos X="19"/> 88 | <UsageCount Value="33"/> 89 | </Unit> 90 | </Units> 91 | <JumpHistory HistoryIndex="29"> 92 | <Position> 93 | <Filename Value="unit1.pas"/> 94 | <Caret Line="1363" Column="29" TopLine="1360"/> 95 | </Position> 96 | <Position> 97 | <Filename Value="unit1.pas"/> 98 | <Caret Column="13"/> 99 | </Position> 100 | <Position> 101 | <Filename Value="unit1.pas"/> 102 | <Caret Line="1638" TopLine="1628"/> 103 | </Position> 104 | <Position> 105 | <Filename Value="unit1.pas"/> 106 | <Caret Line="1701" Column="19" TopLine="1699"/> 107 | </Position> 108 | <Position> 109 | <Filename Value="unit1.pas"/> 110 | <Caret Line="1634" Column="23" TopLine="1629"/> 111 | </Position> 112 | <Position> 113 | <Filename Value="unit1.pas"/> 114 | <Caret Line="1702" TopLine="1700"/> 115 | </Position> 116 | <Position> 117 | <Filename Value="unit1.pas"/> 118 | <Caret Line="1633" Column="32" TopLine="1628"/> 119 | </Position> 120 | <Position> 121 | <Filename Value="unit1.pas"/> 122 | <Caret Line="1584" Column="27" TopLine="1561"/> 123 | </Position> 124 | <Position> 125 | <Filename Value="unit1.pas"/> 126 | <Caret Line="1701" Column="3" TopLine="1701"/> 127 | </Position> 128 | <Position> 129 | <Filename Value="unit1.pas"/> 130 | <Caret Line="1700" Column="3" TopLine="1700"/> 131 | </Position> 132 | <Position> 133 | <Filename Value="unit1.pas"/> 134 | <Caret Line="1646" Column="7" TopLine="1630"/> 135 | </Position> 136 | <Position> 137 | <Filename Value="unit1.pas"/> 138 | <Caret Line="1556" Column="3" TopLine="1536"/> 139 | </Position> 140 | <Position> 141 | <Filename Value="unit1.pas"/> 142 | <Caret Line="1649" Column="10" TopLine="1630"/> 143 | </Position> 144 | <Position> 145 | <Filename Value="unit1.pas"/> 146 | <Caret Line="1648" Column="7" TopLine="1637"/> 147 | </Position> 148 | <Position> 149 | <Filename Value="unit1.pas"/> 150 | <Caret Line="1647" TopLine="1633"/> 151 | </Position> 152 | <Position> 153 | <Filename Value="unit1.pas"/> 154 | <Caret Column="13"/> 155 | </Position> 156 | <Position> 157 | <Filename Value="unit1.pas"/> 158 | <Caret Line="1633" Column="36" TopLine="1585"/> 159 | </Position> 160 | <Position> 161 | <Filename Value="unit1.pas"/> 162 | <Caret Line="1577" Column="39" TopLine="1566"/> 163 | </Position> 164 | <Position> 165 | <Filename Value="unit1.pas"/> 166 | <Caret Line="1569" Column="163" TopLine="1562"/> 167 | </Position> 168 | <Position> 169 | <Filename Value="unit1.pas"/> 170 | <Caret Line="1562" TopLine="1551"/> 171 | </Position> 172 | <Position> 173 | <Filename Value="unit1.pas"/> 174 | <Caret Line="1721" Column="70" TopLine="1715"/> 175 | </Position> 176 | <Position> 177 | <Filename Value="unit1.pas"/> 178 | <Caret Line="1711" Column="52" TopLine="1670"/> 179 | </Position> 180 | <Position> 181 | <Filename Value="unit1.pas"/> 182 | <Caret Line="1183" Column="53" TopLine="1181"/> 183 | </Position> 184 | <Position> 185 | <Filename Value="unit1.pas"/> 186 | <Caret Line="1324" Column="41" TopLine="1298"/> 187 | </Position> 188 | <Position> 189 | <Filename Value="unit1.pas"/> 190 | <Caret Line="131" Column="85" TopLine="127"/> 191 | </Position> 192 | <Position> 193 | <Filename Value="unit1.pas"/> 194 | <Caret Line="971" Column="27" TopLine="947"/> 195 | </Position> 196 | <Position> 197 | <Filename Value="unit1.pas"/> 198 | <Caret Line="1726" Column="40" TopLine="1654"/> 199 | </Position> 200 | <Position> 201 | <Filename Value="unit1.pas"/> 202 | <Caret Line="999" Column="43" TopLine="980"/> 203 | </Position> 204 | <Position> 205 | <Filename Value="unit1.pas"/> 206 | <Caret Line="1564" Column="3" TopLine="1561"/> 207 | </Position> 208 | <Position> 209 | <Filename Value="unit1.pas"/> 210 | <Caret Line="18" Column="45"/> 211 | </Position> 212 | </JumpHistory> 213 | <RunParams> 214 | <FormatVersion Value="2"/> 215 | <Modes ActiveMode=""/> 216 | </RunParams> 217 | </ProjectSession> 218 | </CONFIG> 219 | -------------------------------------------------------------------------------- /xraygui/backup/xraygui.pas: -------------------------------------------------------------------------------- 1 | program xraygui; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | uses 6 | {$IFDEF UNIX} 7 | cthreads, 8 | {$ENDIF} {$IFDEF HASAMIGA} 9 | athreads, 10 | {$ENDIF} 11 | Process, 12 | Classes, 13 | Dialogs, 14 | Interfaces, // this includes the LCL widgetset 15 | Forms, 16 | Unit1, 17 | start_trd, 18 | portscan_trd, 19 | update_trd { you can add units after this }; 20 | 21 | {$R *.res} 22 | 23 | //--- Определяем, запущена ли копия программы 24 | var 25 | PID: TStringList; 26 | ExProcess: TProcess; 27 | 28 | begin 29 | ExProcess := TProcess.Create(nil); 30 | PID := TStringList.Create; 31 | try 32 | ExProcess.Executable := 'bash'; 33 | ExProcess.Parameters.Add('-c'); 34 | ExProcess.Parameters.Add('pidof xraygui'); //Имя приложения 35 | ExProcess.Options := ExProcess.Options + [poUsePipes]; 36 | 37 | ExProcess.Execute; 38 | PID.LoadFromStream(ExProcess.Output); 39 | 40 | finally 41 | ExProcess.Free; 42 | end; 43 | 44 | //Количество запущенных копий > 1 = не запускать новый экземпляр 45 | if Pos(' ', PID.Text) <> 0 then //пробел = более одного pid 46 | begin 47 | MessageDlg(SAppRunning, mtWarning, [mbOK], 0); 48 | PID.Free; 49 | Application.Free; 50 | Halt(1); 51 | end; 52 | PID.Free; 53 | 54 | //--- 55 | 56 | RequireDerivedFormResource := True; 57 | Application.Title:='XRayGUI v1.5'; 58 | Application.Scaled:=True; 59 | Application.Initialize; 60 | Application.CreateForm(TMainForm, MainForm); 61 | Application.Run; 62 | end. 63 | -------------------------------------------------------------------------------- /xraygui/ico/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/ico/copy.png -------------------------------------------------------------------------------- /xraygui/ico/floppy-disk (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/ico/floppy-disk (1).png -------------------------------------------------------------------------------- /xraygui/ico/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/ico/folder.png -------------------------------------------------------------------------------- /xraygui/ico/reality.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/ico/reality.png -------------------------------------------------------------------------------- /xraygui/ico/xraygui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/ico/xraygui.png -------------------------------------------------------------------------------- /xraygui/languages/xraygui.pot: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "Content-Type: text/plain; charset=UTF-8" 3 | 4 | #: tmainform.autostartbox.caption 5 | msgid "Auto" 6 | msgstr "" 7 | 8 | #: tmainform.autostartbox.hint 9 | msgid "AutoStart proxy after reboot" 10 | msgstr "" 11 | 12 | #: tmainform.caption 13 | msgid "XRayGUI" 14 | msgstr "" 15 | 16 | #: tmainform.clearbox.caption 17 | msgid "Clear" 18 | msgstr "" 19 | 20 | #: tmainform.clearbox.hint 21 | msgid "Clearing Cookies after starting the GUI (Mageia only)" 22 | msgstr "" 23 | 24 | #: tmainform.copyitem.caption 25 | msgctxt "tmainform.copyitem.caption" 26 | msgid "Copy" 27 | msgstr "" 28 | 29 | #: tmainform.deletebtn.caption 30 | msgid "Delete" 31 | msgstr "" 32 | 33 | #: tmainform.domainbox.hint 34 | msgid "Bypassing domain zones" 35 | msgstr "" 36 | 37 | #: tmainform.domainbox.text 38 | msgctxt "tmainform.domainbox.text" 39 | msgid "cn" 40 | msgstr "" 41 | 42 | #: tmainform.groupbox1.caption 43 | msgid "Configurations [vmess/vless/ss/trojan]" 44 | msgstr "" 45 | 46 | #: tmainform.groupbox2.caption 47 | msgid "Management/Logging" 48 | msgstr "" 49 | 50 | #: tmainform.label1.caption 51 | msgid "Port:" 52 | msgstr "" 53 | 54 | #: tmainform.loaditem.caption 55 | msgctxt "tmainform.loaditem.caption" 56 | msgid "Load from file" 57 | msgstr "" 58 | 59 | #: tmainform.pastebtn.caption 60 | msgid "Paste" 61 | msgstr "" 62 | 63 | #: tmainform.pastebtn.hint 64 | msgctxt "tmainform.pastebtn.hint" 65 | msgid "Paste from clipboard" 66 | msgstr "" 67 | 68 | #: tmainform.portedit.hint 69 | msgid "" 70 | "127.0.0.1:Port (SOCKS)\n" 71 | "127.0.0.1:8889 (HTTP)" 72 | msgstr "" 73 | 74 | #: tmainform.realitybtn.hint 75 | msgctxt "tmainform.realitybtn.hint" 76 | msgid "REALITY configurations generator (Client-Server)" 77 | msgstr "" 78 | 79 | #: tmainform.saveitem.caption 80 | msgctxt "tmainform.saveitem.caption" 81 | msgid "Save to file" 82 | msgstr "" 83 | 84 | #: tmainform.selallbtn.caption 85 | msgid "*" 86 | msgstr "" 87 | 88 | #: tmainform.selallbtn.hint 89 | msgid "Select all" 90 | msgstr "" 91 | 92 | #: tmainform.startbtn.caption 93 | msgid "Start" 94 | msgstr "" 95 | 96 | #: tmainform.statictext1.caption 97 | msgid "License: GPLv3 Author: alex_q_2000 (C) 2023 URL: https://github.com/AKotov-dev" 98 | msgstr "" 99 | 100 | #: tmainform.stopbtn.caption 101 | msgid "Stop" 102 | msgstr "" 103 | 104 | #: tmainform.swpbox.caption 105 | msgid "SWP" 106 | msgstr "" 107 | 108 | #: tmainform.swpbox.hint 109 | msgid "" 110 | "System-Wide Proxy:\n" 111 | "Budgie, GNOME, Cinnamon, KDE, MATE" 112 | msgstr "" 113 | 114 | #: trealityform.caption 115 | msgctxt "trealityform.caption" 116 | msgid "REALITY configurations generator (Client-Server)" 117 | msgstr "" 118 | 119 | #: trealityform.combobox1.text 120 | msgid "xtls-rprx-vision" 121 | msgstr "" 122 | 123 | #: trealityform.combobox2.text 124 | msgid "www.yahoo.com" 125 | msgstr "" 126 | 127 | #: trealityform.combobox3.text 128 | msgid "chrome" 129 | msgstr "" 130 | 131 | #: trealityform.copybtn.caption 132 | msgctxt "trealityform.copybtn.caption" 133 | msgid "Copy" 134 | msgstr "" 135 | 136 | #: trealityform.edit2.hint 137 | msgid "Strictly recommended 443" 138 | msgstr "" 139 | 140 | #: trealityform.edit2.text 141 | msgid "443" 142 | msgstr "" 143 | 144 | #: trealityform.label1.caption 145 | msgid "Server:Port" 146 | msgstr "" 147 | 148 | #: trealityform.label10.caption 149 | msgid "Connection string to insert into XRayGUI via Clipboard" 150 | msgstr "" 151 | 152 | #: trealityform.label2.caption 153 | msgid ":" 154 | msgstr "" 155 | 156 | #: trealityform.label3.caption 157 | msgid "UUID" 158 | msgstr "" 159 | 160 | #: trealityform.label4.caption 161 | msgid "Flow" 162 | msgstr "" 163 | 164 | #: trealityform.label5.caption 165 | msgid "SNI" 166 | msgstr "" 167 | 168 | #: trealityform.label6.caption 169 | msgid "FPrint" 170 | msgstr "" 171 | 172 | #: trealityform.label7.caption 173 | msgid "Public Key" 174 | msgstr "" 175 | 176 | #: trealityform.label8.caption 177 | msgid "Private Key" 178 | msgstr "" 179 | 180 | #: trealityform.label9.caption 181 | msgid "SID" 182 | msgstr "" 183 | 184 | #: trealityform.savebtn.caption 185 | msgctxt "trealityform.savebtn.caption" 186 | msgid "Save server.json" 187 | msgstr "" 188 | 189 | #: trealityform.speedbutton1.caption 190 | msgctxt "trealityform.speedbutton1.caption" 191 | msgid "NEW" 192 | msgstr "" 193 | 194 | #: trealityform.speedbutton2.caption 195 | msgctxt "trealityform.speedbutton2.caption" 196 | msgid "NEW" 197 | msgstr "" 198 | 199 | #: trealityform.speedbutton3.caption 200 | msgctxt "trealityform.speedbutton3.caption" 201 | msgid "NEW" 202 | msgstr "" 203 | 204 | #: unit1.sapprunning 205 | msgid "The program is already running!" 206 | msgstr "" 207 | 208 | #: unit1.sdeletemsg 209 | msgid "Delete the selected configurations?" 210 | msgstr "" 211 | 212 | #: unit1.snotvalidmsg 213 | msgid "The file is not valid!" 214 | msgstr "" 215 | 216 | #: unit1.svmessonlymsg 217 | msgid "" 218 | "Supported protocols:\n" 219 | "vmess, vless, ss (without obfs) and trojan!" 220 | msgstr "" 221 | 222 | -------------------------------------------------------------------------------- /xraygui/languages/xraygui.ru.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/languages/xraygui.ru.mo -------------------------------------------------------------------------------- /xraygui/languages/xraygui.ru.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: \n" 4 | "POT-Creation-Date: \n" 5 | "PO-Revision-Date: \n" 6 | "Last-Translator: alex_q_2000\n" 7 | "Language-Team: \n" 8 | "Language: ru\n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" 13 | "X-Generator: Poedit 3.5\n" 14 | 15 | #: tmainform.autostartbox.caption 16 | msgid "Auto" 17 | msgstr "" 18 | 19 | #: tmainform.autostartbox.hint 20 | msgid "AutoStart proxy after reboot" 21 | msgstr "Автостарт прокси после перезагрузки" 22 | 23 | #: tmainform.caption 24 | msgid "XRayGUI" 25 | msgstr "" 26 | 27 | #: tmainform.clearbox.caption 28 | msgctxt "tmainform.clearbox.caption" 29 | msgid "Clear" 30 | msgstr "" 31 | 32 | #: tmainform.clearbox.hint 33 | msgid "Clearing Cookies after starting the GUI (Mageia only)" 34 | msgstr "Очистить Cookies при старте GUI (только Mageia)" 35 | 36 | #: tmainform.copyitem.caption 37 | msgctxt "tmainform.copyitem.caption" 38 | msgid "Copy" 39 | msgstr "Копировать" 40 | 41 | #: tmainform.deletebtn.caption 42 | msgid "Delete" 43 | msgstr "Удалить" 44 | 45 | #: tmainform.domainbox.hint 46 | msgid "Bypassing domain zones" 47 | msgstr "Обход доменных зон" 48 | 49 | #: tmainform.domainbox.text 50 | msgctxt "tmainform.domainbox.text" 51 | msgid "cn" 52 | msgstr "" 53 | 54 | #: tmainform.groupbox1.caption 55 | msgid "Configurations [vmess/vless/ss/trojan]" 56 | msgstr "Конфигурации [vmess/vless/ss/trojan]" 57 | 58 | #: tmainform.groupbox2.caption 59 | msgid "Management/Logging" 60 | msgstr "Управление/Логирование" 61 | 62 | #: tmainform.label1.caption 63 | msgid "Port:" 64 | msgstr "Порт:" 65 | 66 | #: tmainform.loaditem.caption 67 | msgctxt "tmainform.loaditem.caption" 68 | msgid "Load from file" 69 | msgstr "Загрузить из файла" 70 | 71 | #: tmainform.pastebtn.caption 72 | msgid "Paste" 73 | msgstr "Вставить" 74 | 75 | #: tmainform.pastebtn.hint 76 | msgctxt "tmainform.pastebtn.hint" 77 | msgid "Paste from clipboard" 78 | msgstr "Вставить из буфера" 79 | 80 | #: tmainform.portedit.hint 81 | msgid "" 82 | "127.0.0.1:Port (SOCKS)\n" 83 | "127.0.0.1:8889 (HTTP)" 84 | msgstr "" 85 | "127.0.0.1:Порт (SOCKS)\n" 86 | "127.0.0.1:8889 (HTTP)" 87 | 88 | #: tmainform.realitybtn.hint 89 | msgctxt "tmainform.realitybtn.hint" 90 | msgid "REALITY configurations generator (Client-Server)" 91 | msgstr "Генератор конфигураций REALITY (Клиент-Сервер)" 92 | 93 | #: tmainform.saveitem.caption 94 | msgctxt "tmainform.saveitem.caption" 95 | msgid "Save to file" 96 | msgstr "Сохранить в файл" 97 | 98 | #: tmainform.selallbtn.caption 99 | msgid "*" 100 | msgstr "" 101 | 102 | #: tmainform.selallbtn.hint 103 | msgid "Select all" 104 | msgstr "Выбрать все" 105 | 106 | #: tmainform.startbtn.caption 107 | msgid "Start" 108 | msgstr "Старт" 109 | 110 | #: tmainform.statictext1.caption 111 | msgid "License: GPLv3 Author: alex_q_2000 (C) 2023 URL: https://github.com/AKotov-dev" 112 | msgstr "Лицензия: GPLv3 Автор: alex_q_2000 (C) 2023 URL: https://github.com/AKotov-dev" 113 | 114 | #: tmainform.stopbtn.caption 115 | msgid "Stop" 116 | msgstr "Стоп" 117 | 118 | #: tmainform.swpbox.caption 119 | msgid "SWP" 120 | msgstr "" 121 | 122 | #: tmainform.swpbox.hint 123 | msgid "" 124 | "System-Wide Proxy:\n" 125 | "Budgie, GNOME, Cinnamon, KDE, MATE" 126 | msgstr "" 127 | "System-Wide Прокси:\n" 128 | "Budgie, GNOME, Cinnamon, KDE, MATE" 129 | 130 | #: trealityform.caption 131 | msgctxt "trealityform.caption" 132 | msgid "REALITY configurations generator (Client-Server)" 133 | msgstr "Генератор конфигураций REALITY (Клиент-Сервер)" 134 | 135 | #: trealityform.combobox1.text 136 | msgid "xtls-rprx-vision" 137 | msgstr "" 138 | 139 | #: trealityform.combobox2.text 140 | msgid "www.yahoo.com" 141 | msgstr "" 142 | 143 | #: trealityform.combobox3.text 144 | msgid "chrome" 145 | msgstr "" 146 | 147 | #: trealityform.copybtn.caption 148 | msgctxt "trealityform.copybtn.caption" 149 | msgid "Copy" 150 | msgstr "Копировать" 151 | 152 | #: trealityform.edit2.hint 153 | msgid "Strictly recommended 443" 154 | msgstr "Строго рекомендуется 443" 155 | 156 | #: trealityform.edit2.text 157 | msgid "443" 158 | msgstr "" 159 | 160 | #: trealityform.label1.caption 161 | msgid "Server:Port" 162 | msgstr "" 163 | 164 | #: trealityform.label10.caption 165 | msgid "Connection string to insert into XRayGUI via Clipboard" 166 | msgstr "Строка подключения для вставки в XRayGUI через буфер обмена" 167 | 168 | #: trealityform.label2.caption 169 | msgid ":" 170 | msgstr "" 171 | 172 | #: trealityform.label3.caption 173 | msgid "UUID" 174 | msgstr "" 175 | 176 | #: trealityform.label4.caption 177 | msgid "Flow" 178 | msgstr "" 179 | 180 | #: trealityform.label5.caption 181 | msgid "SNI" 182 | msgstr "" 183 | 184 | #: trealityform.label6.caption 185 | msgid "FPrint" 186 | msgstr "" 187 | 188 | #: trealityform.label7.caption 189 | msgid "Public Key" 190 | msgstr "" 191 | 192 | #: trealityform.label8.caption 193 | msgid "Private Key" 194 | msgstr "" 195 | 196 | #: trealityform.label9.caption 197 | msgid "SID" 198 | msgstr "" 199 | 200 | #: trealityform.savebtn.caption 201 | msgctxt "trealityform.savebtn.caption" 202 | msgid "Save server.json" 203 | msgstr "Сохранить server.json" 204 | 205 | #: trealityform.speedbutton1.caption 206 | msgctxt "trealityform.speedbutton1.caption" 207 | msgid "NEW" 208 | msgstr "" 209 | 210 | #: trealityform.speedbutton2.caption 211 | msgctxt "trealityform.speedbutton2.caption" 212 | msgid "NEW" 213 | msgstr "" 214 | 215 | #: trealityform.speedbutton3.caption 216 | msgctxt "trealityform.speedbutton3.caption" 217 | msgid "NEW" 218 | msgstr "" 219 | 220 | #: unit1.sapprunning 221 | msgid "The program is already running!" 222 | msgstr "Программа уже запущена!" 223 | 224 | #: unit1.sdeletemsg 225 | msgid "Delete the selected configurations?" 226 | msgstr "Удалить выбранные конфигурации?" 227 | 228 | #: unit1.snotvalidmsg 229 | msgid "The file is not valid!" 230 | msgstr "Невалидный файл!" 231 | 232 | #: unit1.svmessonlymsg 233 | msgid "" 234 | "Supported protocols:\n" 235 | "vmess, vless, ss (without obfs) and trojan!" 236 | msgstr "" 237 | "Поддерживаемые протоколы:\n" 238 | "vmess, vless, ss (без obfs) и trojan!" 239 | -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/portscan_trd.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/lib/x86_64-linux/portscan_trd.o -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/portscan_trd.ppu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/lib/x86_64-linux/portscan_trd.ppu -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/reality_gen.lfm: -------------------------------------------------------------------------------- 1 | object RealityForm: TRealityForm 2 | Left = 295 3 | Height = 533 4 | Top = 130 5 | Width = 611 6 | ActiveControl = Edit1 7 | Caption = 'REALITY configurations generator (Client-Server)' 8 | ClientHeight = 533 9 | ClientWidth = 611 10 | OnCreate = FormCreate 11 | Position = poMainFormCenter 12 | SessionProperties = 'ComboBox1.Text;ComboBox2.Text;ComboBox3.Text;Edit1.Text;Edit2.Text;Edit3.Text;Edit4.Text;Edit5.Text;Edit6.Text;Memo1.Lines;SaveDialog1.InitialDir' 13 | LCLVersion = '2.2.4.0' 14 | object Label1: TLabel 15 | AnchorSideLeft.Control = Owner 16 | AnchorSideTop.Side = asrCenter 17 | Left = 8 18 | Height = 17 19 | Top = 18 20 | Width = 66 21 | BorderSpacing.Left = 8 22 | Caption = 'Server:Port' 23 | ParentColor = False 24 | end 25 | object Edit1: TEdit 26 | AnchorSideLeft.Control = Label1 27 | AnchorSideLeft.Side = asrBottom 28 | AnchorSideTop.Control = Label1 29 | AnchorSideTop.Side = asrCenter 30 | Left = 79 31 | Height = 37 32 | Top = 8 33 | Width = 238 34 | BorderSpacing.Left = 5 35 | OnChange = Edit1Change 36 | TabOrder = 0 37 | end 38 | object Label2: TLabel 39 | AnchorSideLeft.Control = Edit1 40 | AnchorSideLeft.Side = asrBottom 41 | AnchorSideTop.Control = Label1 42 | AnchorSideTop.Side = asrCenter 43 | Left = 319 44 | Height = 17 45 | Top = 18 46 | Width = 3 47 | BorderSpacing.Left = 2 48 | Caption = ':' 49 | ParentColor = False 50 | end 51 | object Edit2: TEdit 52 | AnchorSideLeft.Control = Label2 53 | AnchorSideLeft.Side = asrBottom 54 | AnchorSideTop.Control = Label1 55 | AnchorSideTop.Side = asrCenter 56 | Left = 324 57 | Height = 37 58 | Hint = 'Strictly recommended 443' 59 | Top = 8 60 | Width = 82 61 | BorderSpacing.Left = 2 62 | OnChange = Edit1Change 63 | ParentShowHint = False 64 | ShowHint = True 65 | TabOrder = 1 66 | Text = '443' 67 | end 68 | object Label3: TLabel 69 | AnchorSideLeft.Control = Owner 70 | Left = 8 71 | Height = 17 72 | Top = 208 73 | Width = 31 74 | BorderSpacing.Left = 8 75 | Caption = 'UUID' 76 | ParentColor = False 77 | end 78 | object Edit3: TEdit 79 | AnchorSideLeft.Control = Edit5 80 | AnchorSideTop.Control = Label3 81 | AnchorSideTop.Side = asrCenter 82 | AnchorSideRight.Control = SpeedButton1 83 | Left = 81 84 | Height = 37 85 | Top = 198 86 | Width = 434 87 | Anchors = [akTop, akLeft, akRight] 88 | OnChange = Edit1Change 89 | TabOrder = 5 90 | end 91 | object Label4: TLabel 92 | AnchorSideLeft.Control = Owner 93 | Left = 8 94 | Height = 17 95 | Top = 64 96 | Width = 30 97 | BorderSpacing.Left = 8 98 | Caption = 'Flow' 99 | ParentColor = False 100 | end 101 | object ComboBox1: TComboBox 102 | AnchorSideLeft.Control = Label4 103 | AnchorSideLeft.Side = asrBottom 104 | AnchorSideTop.Control = Label4 105 | AnchorSideTop.Side = asrCenter 106 | AnchorSideRight.Control = Edit2 107 | AnchorSideRight.Side = asrBottom 108 | Left = 58 109 | Height = 37 110 | Top = 54 111 | Width = 348 112 | Anchors = [akTop, akLeft, akRight] 113 | BorderSpacing.Left = 20 114 | ItemHeight = 0 115 | ItemIndex = 0 116 | Items.Strings = ( 117 | 'xtls-rprx-vision' 118 | 'xtls-rprx-vision-udp443' 119 | ) 120 | OnChange = Edit1Change 121 | TabOrder = 2 122 | Text = 'xtls-rprx-vision' 123 | end 124 | object Label5: TLabel 125 | AnchorSideLeft.Control = Owner 126 | Left = 8 127 | Height = 17 128 | Top = 112 129 | Width = 21 130 | BorderSpacing.Left = 8 131 | Caption = 'SNI' 132 | ParentColor = False 133 | end 134 | object ComboBox2: TComboBox 135 | AnchorSideLeft.Control = ComboBox1 136 | AnchorSideTop.Control = Label5 137 | AnchorSideTop.Side = asrCenter 138 | AnchorSideRight.Control = Edit2 139 | AnchorSideRight.Side = asrBottom 140 | Left = 58 141 | Height = 37 142 | Top = 102 143 | Width = 348 144 | Anchors = [akTop, akLeft, akRight] 145 | ItemHeight = 0 146 | ItemIndex = 7 147 | Items.Strings = ( 148 | 'www.asus.com' 149 | 'www.bing.com' 150 | 'www.cisco.com' 151 | 'www.linksys.com' 152 | 'www.microsoft.com' 153 | 'www.nvidia.com' 154 | 'www.samsung.com' 155 | 'www.yahoo.com' 156 | ) 157 | OnChange = Edit1Change 158 | TabOrder = 3 159 | Text = 'www.yahoo.com' 160 | end 161 | object Label6: TLabel 162 | AnchorSideLeft.Control = Owner 163 | Left = 8 164 | Height = 17 165 | Top = 160 166 | Width = 37 167 | BorderSpacing.Left = 8 168 | Caption = 'FPrint' 169 | ParentColor = False 170 | end 171 | object ComboBox3: TComboBox 172 | AnchorSideLeft.Control = ComboBox1 173 | AnchorSideTop.Control = Label6 174 | AnchorSideTop.Side = asrCenter 175 | AnchorSideRight.Control = Edit2 176 | AnchorSideRight.Side = asrBottom 177 | Left = 58 178 | Height = 37 179 | Top = 150 180 | Width = 348 181 | Anchors = [akTop, akLeft, akRight] 182 | ItemHeight = 0 183 | Items.Strings = ( 184 | 'android' 185 | 'chrome' 186 | 'edge' 187 | 'firefox' 188 | 'ios' 189 | 'safari' 190 | '360' 191 | ) 192 | OnChange = Edit1Change 193 | TabOrder = 4 194 | Text = 'chrome' 195 | end 196 | object Label7: TLabel 197 | AnchorSideLeft.Control = Owner 198 | Left = 8 199 | Height = 17 200 | Top = 304 201 | Width = 60 202 | BorderSpacing.Left = 8 203 | Caption = 'Public Key' 204 | ParentColor = False 205 | end 206 | object Edit4: TEdit 207 | AnchorSideLeft.Control = Edit5 208 | AnchorSideTop.Control = Label7 209 | AnchorSideTop.Side = asrCenter 210 | AnchorSideRight.Control = SpeedButton2 211 | Left = 81 212 | Height = 37 213 | Top = 294 214 | Width = 434 215 | Anchors = [akTop, akLeft, akRight] 216 | OnChange = Edit1Change 217 | TabOrder = 7 218 | end 219 | object Label8: TLabel 220 | AnchorSideLeft.Control = Owner 221 | Left = 8 222 | Height = 17 223 | Top = 256 224 | Width = 65 225 | BorderSpacing.Left = 8 226 | Caption = 'Private Key' 227 | ParentColor = False 228 | end 229 | object Edit5: TEdit 230 | AnchorSideLeft.Control = Label8 231 | AnchorSideLeft.Side = asrBottom 232 | AnchorSideTop.Control = Label8 233 | AnchorSideTop.Side = asrCenter 234 | AnchorSideRight.Control = SpeedButton2 235 | Left = 81 236 | Height = 37 237 | Top = 246 238 | Width = 434 239 | Anchors = [akTop, akLeft, akRight] 240 | BorderSpacing.Left = 8 241 | OnChange = Edit1Change 242 | TabOrder = 6 243 | end 244 | object SpeedButton1: TSpeedButton 245 | AnchorSideLeft.Control = Edit3 246 | AnchorSideLeft.Side = asrBottom 247 | AnchorSideTop.Control = Edit3 248 | AnchorSideRight.Control = Owner 249 | AnchorSideRight.Side = asrBottom 250 | AnchorSideBottom.Control = Edit3 251 | AnchorSideBottom.Side = asrBottom 252 | Left = 515 253 | Height = 37 254 | Top = 198 255 | Width = 88 256 | Anchors = [akTop, akRight, akBottom] 257 | BorderSpacing.Right = 8 258 | Caption = 'NEW' 259 | OnClick = SpeedButton1Click 260 | end 261 | object SpeedButton2: TSpeedButton 262 | AnchorSideLeft.Control = Edit4 263 | AnchorSideLeft.Side = asrBottom 264 | AnchorSideTop.Control = Edit5 265 | AnchorSideRight.Control = Owner 266 | AnchorSideRight.Side = asrBottom 267 | AnchorSideBottom.Control = Edit4 268 | AnchorSideBottom.Side = asrBottom 269 | Left = 515 270 | Height = 85 271 | Top = 246 272 | Width = 88 273 | Anchors = [akTop, akRight, akBottom] 274 | BorderSpacing.Right = 8 275 | Caption = 'NEW' 276 | OnClick = SpeedButton2Click 277 | end 278 | object Label9: TLabel 279 | AnchorSideLeft.Control = Owner 280 | Left = 8 281 | Height = 17 282 | Top = 352 283 | Width = 20 284 | BorderSpacing.Left = 8 285 | Caption = 'SID' 286 | ParentColor = False 287 | end 288 | object Edit6: TEdit 289 | AnchorSideTop.Control = Label9 290 | AnchorSideTop.Side = asrCenter 291 | AnchorSideRight.Control = Edit2 292 | AnchorSideRight.Side = asrBottom 293 | Left = 40 294 | Height = 37 295 | Top = 342 296 | Width = 366 297 | Anchors = [akTop, akLeft, akRight] 298 | OnChange = Edit1Change 299 | TabOrder = 8 300 | end 301 | object SpeedButton3: TSpeedButton 302 | AnchorSideLeft.Control = Edit6 303 | AnchorSideLeft.Side = asrBottom 304 | AnchorSideTop.Control = Edit6 305 | AnchorSideBottom.Control = Edit6 306 | AnchorSideBottom.Side = asrBottom 307 | Left = 406 308 | Height = 37 309 | Top = 342 310 | Width = 88 311 | Anchors = [akTop, akLeft, akBottom] 312 | Caption = 'NEW' 313 | OnClick = SpeedButton3Click 314 | end 315 | object Memo1: TMemo 316 | AnchorSideLeft.Control = Owner 317 | AnchorSideRight.Control = Owner 318 | AnchorSideRight.Side = asrBottom 319 | AnchorSideBottom.Control = Owner 320 | AnchorSideBottom.Side = asrBottom 321 | Left = 8 322 | Height = 101 323 | Top = 424 324 | Width = 595 325 | Anchors = [akTop, akLeft, akRight, akBottom] 326 | BorderSpacing.Left = 8 327 | BorderSpacing.Right = 8 328 | BorderSpacing.Bottom = 8 329 | Font.Height = -12 330 | Font.Name = 'Monospace' 331 | ParentFont = False 332 | ReadOnly = True 333 | ScrollBars = ssVertical 334 | TabOrder = 9 335 | end 336 | object CopyBtn: TSpeedButton 337 | AnchorSideRight.Control = Memo1 338 | AnchorSideRight.Side = asrBottom 339 | AnchorSideBottom.Control = Memo1 340 | Left = 498 341 | Height = 35 342 | Top = 387 343 | Width = 105 344 | Anchors = [akRight, akBottom] 345 | BorderSpacing.Bottom = 2 346 | Caption = 'Copy' 347 | Enabled = False 348 | OnClick = CopyBtnClick 349 | end 350 | object Label10: TLabel 351 | AnchorSideLeft.Control = Memo1 352 | AnchorSideBottom.Control = CopyBtn 353 | AnchorSideBottom.Side = asrBottom 354 | Left = 8 355 | Height = 17 356 | Top = 405 357 | Width = 325 358 | Anchors = [akLeft, akBottom] 359 | Caption = 'Connection string to insert into XRayGUI via Clipboard' 360 | ParentColor = False 361 | end 362 | object SaveBtn: TSpeedButton 363 | AnchorSideRight.Control = Owner 364 | AnchorSideRight.Side = asrBottom 365 | Left = 434 366 | Height = 64 367 | Top = 8 368 | Width = 169 369 | Anchors = [akTop, akRight] 370 | BorderSpacing.Right = 8 371 | Caption = 'Save server.json' 372 | Enabled = False 373 | OnClick = SaveBtnClick 374 | end 375 | object IniPropStorage1: TIniPropStorage 376 | StoredValues = <> 377 | Left = 456 378 | Top = 104 379 | end 380 | object SaveDialog1: TSaveDialog 381 | DefaultExt = '.*.json' 382 | FileName = 'server.json' 383 | Filter = 'JSON files (*.json)|*.json' 384 | Options = [ofOverwritePrompt, ofEnableSizing, ofViewDetail] 385 | Left = 544 386 | Top = 104 387 | end 388 | end 389 | -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/reality_gen.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/lib/x86_64-linux/reality_gen.o -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/reality_gen.ppu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/lib/x86_64-linux/reality_gen.ppu -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/start_trd.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/lib/x86_64-linux/start_trd.o -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/start_trd.ppu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/lib/x86_64-linux/start_trd.ppu -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/unit1.lfm: -------------------------------------------------------------------------------- 1 | object MainForm: TMainForm 2 | Left = 299 3 | Height = 722 4 | Top = 110 5 | Width = 1003 6 | ActiveControl = Panel1 7 | Caption = 'XRayGUI' 8 | ClientHeight = 722 9 | ClientWidth = 1003 10 | OnClose = FormClose 11 | OnCreate = FormCreate 12 | OnShow = FormShow 13 | SessionProperties = 'ConfigBox.ItemIndex;GroupBox1.Width;Height;Left;OpenDialog1.InitialDir;Panel1.Height;PortEdit.Value;SaveDialog1.InitialDir;Top;Width;DomainBox.Text' 14 | LCLVersion = '3.6.0.0' 15 | object GroupBox1: TGroupBox 16 | Left = 0 17 | Height = 702 18 | Top = 0 19 | Width = 272 20 | Align = alLeft 21 | Caption = 'Configurations [vmess/vless/ss/trojan]' 22 | ClientHeight = 684 23 | ClientWidth = 270 24 | TabOrder = 0 25 | object Panel1: TPanel 26 | Left = 0 27 | Height = 54 28 | Top = 0 29 | Width = 270 30 | Align = alTop 31 | BevelOuter = bvNone 32 | ClientHeight = 54 33 | ClientWidth = 270 34 | TabOrder = 0 35 | OnResize = Panel1Resize 36 | object DeleteBtn: TSpeedButton 37 | AnchorSideRight.Side = asrBottom 38 | Left = 6 39 | Height = 36 40 | Top = 8 41 | Width = 85 42 | Caption = 'Delete' 43 | OnClick = DeleteBtnClick 44 | ShowHint = True 45 | ParentShowHint = False 46 | end 47 | object SelAllBtn: TSpeedButton 48 | AnchorSideLeft.Control = DeleteBtn 49 | AnchorSideLeft.Side = asrBottom 50 | Left = 92 51 | Height = 36 52 | Hint = 'Select all' 53 | Top = 8 54 | Width = 36 55 | BorderSpacing.Left = 1 56 | Caption = '*' 57 | OnClick = SelAllBtnClick 58 | ShowHint = True 59 | ParentShowHint = False 60 | end 61 | object PasteBtn: TSpeedButton 62 | AnchorSideRight.Side = asrBottom 63 | Left = 178 64 | Height = 36 65 | Hint = 'Paste from clipboard' 66 | Top = 8 67 | Width = 85 68 | Anchors = [akTop, akRight] 69 | BorderSpacing.Right = 5 70 | Caption = 'Paste' 71 | OnClick = PasteBtnClick 72 | ShowHint = True 73 | ParentShowHint = False 74 | end 75 | end 76 | object Splitter2: TSplitter 77 | Cursor = crVSplit 78 | Left = 0 79 | Height = 6 80 | Top = 54 81 | Width = 270 82 | Align = alTop 83 | ResizeAnchor = akTop 84 | end 85 | object ConfigBox: TCheckListBox 86 | AnchorSideBottom.Control = Image1 87 | Left = 0 88 | Height = 474 89 | Top = 60 90 | Width = 270 91 | Align = alTop 92 | Anchors = [akTop, akLeft, akRight, akBottom] 93 | Font.Height = -13 94 | Font.Name = 'Monospace' 95 | ItemHeight = 0 96 | MultiSelect = True 97 | ParentFont = False 98 | PopupMenu = PopupMenu1 99 | TabOrder = 2 100 | TopIndex = -1 101 | OnClick = ConfigBoxClick 102 | OnClickCheck = ConfigBoxClickCheck 103 | OnDblClick = StartBtnClick 104 | end 105 | object Image1: TImage 106 | AnchorSideLeft.Control = GroupBox1 107 | AnchorSideLeft.Side = asrCenter 108 | AnchorSideBottom.Control = GroupBox1 109 | AnchorSideBottom.Side = asrBottom 110 | Left = 60 111 | Height = 150 112 | Top = 534 113 | Width = 150 114 | Anchors = [akLeft, akBottom] 115 | Stretch = True 116 | end 117 | end 118 | object Splitter1: TSplitter 119 | Left = 272 120 | Height = 702 121 | Top = 0 122 | Width = 4 123 | end 124 | object GroupBox2: TGroupBox 125 | Left = 276 126 | Height = 702 127 | Top = 0 128 | Width = 727 129 | Align = alClient 130 | Caption = 'Management/Logging' 131 | ClientHeight = 684 132 | ClientWidth = 725 133 | TabOrder = 2 134 | object Panel2: TPanel 135 | Left = 0 136 | Height = 54 137 | Top = 0 138 | Width = 725 139 | Align = alTop 140 | BevelOuter = bvNone 141 | ClientHeight = 54 142 | ClientWidth = 725 143 | TabOrder = 0 144 | OnResize = Panel2Resize 145 | object Shape1: TShape 146 | AnchorSideLeft.Side = asrBottom 147 | AnchorSideTop.Control = StopBtn 148 | AnchorSideTop.Side = asrCenter 149 | Left = 8 150 | Height = 12 151 | Top = 20 152 | Width = 12 153 | BorderSpacing.Left = 10 154 | Brush.Color = clYellow 155 | Shape = stCircle 156 | end 157 | object PortEdit: TSpinEdit 158 | AnchorSideLeft.Side = asrBottom 159 | AnchorSideTop.Control = StopBtn 160 | AnchorSideTop.Side = asrCenter 161 | AnchorSideRight.Control = DomainBox 162 | AnchorSideBottom.Side = asrBottom 163 | Left = 105 164 | Height = 37 165 | Hint = '127.0.0.1:Port (SOCKS)'#10'127.0.0.1:8889 (HTTP)' 166 | Top = 8 167 | Width = 91 168 | Anchors = [akTop, akRight] 169 | BorderSpacing.Right = 5 170 | MinValue = 1000 171 | ParentShowHint = False 172 | ShowHint = True 173 | TabOrder = 0 174 | Value = 1080 175 | end 176 | object StopBtn: TSpeedButton 177 | AnchorSideRight.Control = StartBtn 178 | Left = 547 179 | Height = 36 180 | Top = 8 181 | Width = 85 182 | Anchors = [akTop, akRight] 183 | BorderSpacing.Right = 1 184 | Caption = 'Stop' 185 | OnClick = StopBtnClick 186 | end 187 | object StartBtn: TSpeedButton 188 | AnchorSideRight.Side = asrBottom 189 | Left = 633 190 | Height = 36 191 | Top = 8 192 | Width = 85 193 | Anchors = [akTop, akRight] 194 | BorderSpacing.Right = 5 195 | Caption = 'Start' 196 | OnClick = StartBtnClick 197 | end 198 | object ClearBox: TCheckBox 199 | AnchorSideLeft.Control = Shape1 200 | AnchorSideTop.Control = StopBtn 201 | AnchorSideTop.Side = asrCenter 202 | AnchorSideRight.Control = RealityBtn 203 | Left = 416 204 | Height = 32 205 | Hint = 'Clearing Cookies after starting the GUI (Mageia only)' 206 | Top = 10 207 | Width = 66 208 | Anchors = [akTop, akRight] 209 | BorderSpacing.Right = 5 210 | Caption = 'Clear' 211 | ParentShowHint = False 212 | ShowHint = True 213 | TabOrder = 4 214 | OnChange = ClearBoxChange 215 | end 216 | object Label1: TLabel 217 | AnchorSideTop.Control = StopBtn 218 | AnchorSideTop.Side = asrCenter 219 | AnchorSideRight.Control = PortEdit 220 | Left = 73 221 | Height = 17 222 | Top = 18 223 | Width = 29 224 | Anchors = [akTop, akRight] 225 | BorderSpacing.Right = 3 226 | Caption = 'Port:' 227 | ParentColor = False 228 | end 229 | object AutoStartBox: TCheckBox 230 | AnchorSideTop.Control = StopBtn 231 | AnchorSideTop.Side = asrCenter 232 | AnchorSideRight.Control = ClearBox 233 | Left = 349 234 | Height = 32 235 | Hint = 'AutoStart proxy after reboot' 236 | Top = 10 237 | Width = 62 238 | Anchors = [akTop, akRight] 239 | BorderSpacing.Right = 5 240 | Caption = 'Auto' 241 | ParentShowHint = False 242 | ShowHint = True 243 | TabOrder = 3 244 | OnChange = AutoStartBoxChange 245 | end 246 | object SWPBox: TCheckBox 247 | AnchorSideTop.Control = StopBtn 248 | AnchorSideTop.Side = asrCenter 249 | AnchorSideRight.Control = AutoStartBox 250 | Left = 282 251 | Height = 32 252 | Hint = 'System-Wide Proxy:'#10'Budgie, GNOME, Cinnamon, KDE, MATE' 253 | Top = 10 254 | Width = 62 255 | Anchors = [akTop, akRight] 256 | BorderSpacing.Right = 5 257 | Caption = 'SWP' 258 | ParentShowHint = False 259 | ShowHint = True 260 | TabOrder = 2 261 | OnChange = SWPBoxChange 262 | end 263 | object RealityBtn: TSpeedButton 264 | AnchorSideTop.Control = StopBtn 265 | AnchorSideRight.Control = StopBtn 266 | AnchorSideBottom.Control = StopBtn 267 | AnchorSideBottom.Side = asrBottom 268 | Left = 487 269 | Height = 36 270 | Hint = 'REALITY configurations generator (Client-Server)' 271 | Top = 8 272 | Width = 50 273 | Anchors = [akTop, akRight, akBottom] 274 | BorderSpacing.Right = 10 275 | Glyph.Data = { 276 | 360C0000424D360C000000000000360000002800000020000000180000000100 277 | 200000000000000C000064000000640000000000000000000000000000000000 278 | 0000000000000000000000000000000000000000000000000000000000000000 279 | 000000000000B7651F00B7651F0BB7651FC3B6641EFFB6641EFFB5631DFFB463 280 | 1DFFB4631D9FA8531400B3621D00B0611C00B0601A00B0601A32AF601AE5AF5F 281 | 19FFAE5F19FFAD5E18FFAD5E18FFAC5D17D8AB5D1725AB5D1700000000000000 282 | 0000000000000000000000000000000000000000000000000000000000000000 283 | 000000000000B8651F00B8651F0AB8651FC2B7651FFFB6641EFFB6641EFFB563 284 | 1DFFB4631D9FA4510300B4621C00B1611B00B2621C04B1611B98B0601AFFAF60 285 | 1AFFAF5F19FFAE5F19FFAD5E18FBAD5E186CAE5F1900AC5D1700000000000000 286 | 00000000000000000000000000000000000000000000A6A09E00A9A3A400A8A2 287 | A107A7A2A123A6A1A148A79B9472B66E31E0B8651EFFB7651FFFB6641EFFB663 288 | 1DFFB0713BD0A19B9B6EA09A9A499EA0A720B0682941B2611BEBB1611BFFB060 289 | 1AFFAF601AFFAF5F19FFAE5F19BCAD5E1812AE5E180000000000000000000000 290 | 0000000000000000000000000000ABA5A500ABA5A502AAA5A425A9A4A36DA8A3 291 | A2B4A8A2A2E2A7A2A1F8A79E9BFFB5743EFFB9651EFFB8651FFFB7651FFFB763 292 | 1CFFAE794DFFA29C9BFFA19B9BFAA19997E1AE713DDEB2611AFFB2611BFFB161 293 | 1BFFB0601AFFAF601AF1AF5F194AAF5F1900AE5F190000000000000000000000 294 | 000000000000ADA8A600AEAAA800ACA7A628ACA6A58CABA5A5E0AAA5A4FEA9A4 295 | A3FFA9A3A2FFA8A3A2FFA89F9CFFB5753FFFB9651EFFB86620FFB8651FFFB764 296 | 1DFFB07849F0A29D9DD9A19D9EE0A78B77F6B26624FFB3621CFFB2621CFFB261 297 | 1BFFB1601AFFB15F1899B15A0E05B15C11000000000000000000000000000000 298 | 0000AFAAA900AFAAA909AEA9A867ADA8A7DCACA7A6FFACA6A6FFABA6A5FFAAA5 299 | A4FFAAA4A4FFA9A4A3F6A9A09CD0B77138ECBA6620FFB96620FFB86620FFB865 300 | 1FFFB66825ACA98C7624AD7E5849B3692ADAB4631DFFB4631DFFB3621CFFB261 301 | 1BFFAF692DFEA5866E8298ACC6079E9B9D00000000000000000000000000B0AB 302 | AA00B0ABAA11AFABA993AFAAA9F8AEA9A8FFADA8A7FFADA8A7FFACA7A6FFABA6 303 | A5F6AAA5A4B1A9A5A54EB08E741DBB6822C3BB6721FFBA6721FFB96620FFB866 304 | 20FFB8651FE9B7651EC3B7641DDAB6641DFEB5631DFFB4631DFFB4631DF5B361 305 | 1BB7A88162969F9999E29F9999959F9898119F98980000000000B2ADAC00B2AD 306 | AC0CB1ACAB99B0ACAAFDB0ABAAFFAFAAA9FFAEA9A8FFAEA9A8FFADA8A7DDACA7 307 | A65FABA6A50AB4845D00BC68220BBC6822C2BB6822FFBB6721FFBA6721FFB966 308 | 20FFB86620FFB8651FFFB7651FFFB6641EFFB6641EFFB5641EFFB4631DEBB463 309 | 1D96B3652239A09896469F999AD49F99999C9F99990C9F999900C6C4C300B3AE 310 | AD74B2ADACFBB1ADABFFB1ACABFFB0ABAAFFAFAAA9FFAFAAA9D6AEA9A83BB0AB 311 | AA00AEA8A700BD692300BD69230BBD6923C3BC6822FFBB6822FFBB6721FFBA67 312 | 21FFB96620FFB96620FFB8651FFFB7651FFFB6641EFFB6641EFFB5631DFFB463 313 | 1DFFB4631CECB4601875A2948E45A09A9AE0A0999975A1989400B4B0AE33B4AF 314 | AEE0B3AEADFFB2AEACFFB2ADACFFB1ACABFFB0ABAAEFB0ABAA4DB0ACAA00AFAA 315 | A90000000000BD692300BD69230BBD6923C3BD6923FFBC6822FFBB6822FFBB67 316 | 21FFBA6721FCB96620F6B86620F6B8651FF6B7651FFBB6641EFFB6641EFFB563 317 | 1DFFB4631DFFB4631CF7B4611A60A09B9C81A09A9AE1A09A9A33B5B1AF93B5B0 318 | AFFFB4AFAEFFB3AFADFFB3AEADFFB2ADACFFB1ADABA6B0ABAA05B1ACAB000000 319 | 000000000000BE6A2400BE6A240BBE6A24C3BD6923FFBD6923FFBC6822FFBB68 320 | 22FFBB6721BEBA672141B966203FB866203FB7651F5FB7651FDBB6641EFFB664 321 | 1EFFB5641EFFB4631DFFB4621BC0A58F8043A19B9BEDA19B9A94B6B2B0DAB6B1 322 | B0FFB5B1AFFFB4B0AEFFB4AFAEFFB3AEADFFB2AEAD66B3AEAD00B2ADAB000000 323 | 000000000000BF6A2400BF6A240BBF6A24C3BE6A24FFBD6923FFBD6923FFBC68 324 | 22FFBB6822A9BA682202BB682200B7651F00B8651F00B8651F88B7651FFFB664 325 | 1EFFB6641EFFB5641EFFB4631CE7AE784B40A29D9DD6A29C9BDDB7B3B1F9B7B2 326 | B1FFB6B2B0FFB5B1AFFFB5B0AFFFB4AFAEFDB4AFAE56B4AFAE00000000000000 327 | 000000000000C06B2500C06B250BBF6B25C3BF6A24FFBE6A24FFBD6923FFBD69 328 | 23FFBC6822AABB672105BA672103BA672103BA67210DB86620A6B8651FFFB765 329 | 1FFFB6641EFFB6641EFFB5631DEEB0733F43A39E9FCDA39D9CFCB8B4B2FCB8B3 330 | B2FFB7B3B1FFB6B2B0FFB6B1B0FFB5B0AFFFB4B0AF76B4B0AF00B5B0AF000000 331 | 000000000000C16B2500C16B250BC06B25C3BF6B25FFBF6A24FFBE6A24FFBD69 332 | 23FFBD6923E3BC6822ADBB6822ADBB6721ADBA6721C2B96620F7B96620FFB865 333 | 1FFFB7651FFFB6641EFFB6641DDFAD7F5A3FA49F9FDCA49E9DFEB9B5B3E6B9B5 334 | B3FFB8B4B2FFB7B3B1FFB7B2B1FFB6B2B0FFB5B1B0C2B5B1B012B5B1B0000000 335 | 000000000000C16C2600C16C260BC16B25C3C06B25FFBF6B25FFBF6A24FFBE6A 336 | 24FFBD6923FFBD6923FFBC6822FFBB6822FFBB6721FFBA6721FFB96620FFB966 337 | 20FFB8651FFFB7651FFFB7631CA3A79B964EA5A09FF7A59F9EE7BAB6B4ABBAB6 338 | B4FFB9B5B3FFB8B4B2FFB8B3B2FFB7B3B1FFB6B2B0FBB6B2B07BB6B2AF03B6B2 339 | B00000000000C26C2600C26C260BC16C26C3C16C26FFC06B25FFBF6B25FFBF6A 340 | 24FFBE6A24FFBD6923FFBD6923FFBC6822FFBB6822FFBB6721FFBA6721FFB966 341 | 20FFB96620FFB8651FD4B56C2F3AA7A2A3A3A6A1A0FFA6A09FABBBB7B54DBAB7 342 | B5EFBAB6B4FFB9B5B4FFB8B4B3FFB8B4B2FFB7B3B1FFB7B2B1F2B6B2B073B6B2 343 | B009B6B2B000C36D2700C36D270AC26C26BEC26C26FCC16C26F9C06B25F9BF6B 344 | 25F9BF6A24F9BE6A24F9BD6923F9BD6923F9BC6822F9BB6822F9BB6721F6BA67 345 | 21E1B9661F9DB868242FA8A4A56DA8A2A2F7A7A2A1EFA7A1A04DBBB7B607BBB7 346 | B699BBB7B5FFBAB6B5FFB9B6B4FFB9B5B3FFB8B4B2FFB7B3B2FFB7B3B1F7B6B2 347 | B1A2B6B2B02FB4B7BA02C5651803C36C2536C26C2648C16C2647C16B2547C06B 348 | 2547BF6A2447BE6A2447BE692347BD692347BC682247BC672147BC651C3DBC5F 349 | 111EAD9E941AAAA6A780A9A4A3F2A9A3A3FFA8A3A299A7A1A107BCB8B600BCB8 350 | B61FBCB8B6C2BBB7B6FFBAB7B5FFBAB6B4FFB9B5B3FFB8B4B3FFB8B4B2FFB7B3 351 | B1FFB7B2B1E5B6B2B096B6B1B045B3BCC3129DFFFF01A8E3F800000000000000 352 | 00000000000000000000000000007DFFFF00B89AAD00A7C6DB06ACAFB526ACA9 353 | A96CACA7A6CAABA6A5FCAAA5A4FFAAA4A4C2A9A4A31FA9A4A300BDB8B700BCB8 354 | B700BCB8B72BBCB8B6C2BBB8B6FFBBB7B5FFBAB6B4FFB9B5B4FFB9B5B3FFB8B4 355 | B2FFB7B3B2FFB7B3B1FFB6B2B0F5B6B1B0D2B5B1AFA6B4B0AF7EB4AFAE62B3AF 356 | AD52B3AEAD4EB2ADAC52B1ACAB5EB0ACAB73B0ABAA94AFAAA9BEAEA9A8E7ADA8 357 | A7FDADA8A7FFACA7A6FFABA6A5C2ABA5A52BABA6A500ABA5A50000000000BCBA 358 | B900BCB8B700BCB9B71EBCB8B79DBCB8B6F6BBB7B6FFBAB7B5FFBAB6B4FFB9B5 359 | B3FFB8B4B3FFB8B4B2FFB7B3B1FFB6B2B1FFB6B1B0FFB5B1AFFFB4B0AFFEB4AF 360 | AEFCB3AFADFBB2AEADFCB2ADACFEB1ACABFFB0ACAAFFB0ABAAFFAFAAA9FFAEAA 361 | A8FFAEA9A8F6ADA8A79EACA7A61FACA7A600ACA7A60000000000000000000000 362 | 000000000000BCB9B700BDB9B709BCB9B756BCB8B6C3BBB8B6F9BBB7B5FFBAB6 363 | B4FFB9B5B4FFB9B5B3FFB8B4B2FFB7B3B2FFB7B3B1FFB6B2B0FFB5B1B0FFB5B0 364 | AFFFB4B0AEFFB3AFAEFFB3AEADFFB2ADACFFB1ADACFFB1ACABFFB0ABAAF9AFAA 365 | A9C4AFAAA957AEA9A809AEA9A800AEBCB2000000000000000000000000000000 366 | 00000000000000000000BCBAB800BCB7B600BCB9B711BCB8B655BCB8B6A8BBB7 367 | B5E0BAB7B5F9BAB6B4FFB9B5B3FFB8B4B3FFB8B4B2FFB7B3B1FFB6B2B1FFB6B1 368 | B0FFB5B1AFFFB4B0AFFFB4AFAEFFB3AFADFAB2AEACE1B2ADACA8B1ACAB56B0AB 369 | AA12B1ACAB00AFABA90000000000000000000000000000000000000000000000 370 | 000000000000000000000000000000000000C0B8B600BCB8B600BCB8B606BBB8 371 | B629BBB7B560BAB7B597BAB6B4C2B9B5B4DFB9B5B3F0B8B4B2F7B7B3B2F7B7B2 372 | B1F0B6B2B0DFB5B1AFC3B4B0AF97B4AFAE60B3AEAD29B2AEAD06B2AEAC00B8B2 373 | B300000000000000000000000000000000000000000000000000 374 | } 375 | OnClick = RealityBtnClick 376 | ShowHint = True 377 | ParentShowHint = False 378 | end 379 | object DomainBox: TComboBox 380 | AnchorSideTop.Control = StopBtn 381 | AnchorSideTop.Side = asrCenter 382 | AnchorSideRight.Control = SWPBox 383 | AnchorSideBottom.Side = asrBottom 384 | Left = 201 385 | Height = 37 386 | Hint = 'Bypassing domain zones' 387 | Top = 8 388 | Width = 76 389 | Anchors = [akTop, akRight] 390 | BorderSpacing.Right = 5 391 | Font.Height = -13 392 | Font.Name = 'Sans' 393 | Font.Style = [fsBold] 394 | ItemHeight = 0 395 | Items.Strings = ( 396 | 'by' 397 | 'cn' 398 | 'er' 399 | 'ir' 400 | 'pk' 401 | 'ru' 402 | 'sa' 403 | 'so' 404 | 'tm' 405 | 'tr' 406 | 'ua' 407 | 'uz' 408 | ) 409 | ParentFont = False 410 | ParentShowHint = False 411 | ShowHint = True 412 | TabOrder = 1 413 | Text = 'cn' 414 | end 415 | end 416 | object Splitter3: TSplitter 417 | Cursor = crVSplit 418 | Left = 0 419 | Height = 6 420 | Top = 54 421 | Width = 725 422 | Align = alTop 423 | ResizeAnchor = akTop 424 | end 425 | object LogMemo: TMemo 426 | Left = 0 427 | Height = 624 428 | Top = 60 429 | Width = 725 430 | Align = alClient 431 | Font.Height = -12 432 | Font.Name = 'Monospace' 433 | ParentFont = False 434 | ReadOnly = True 435 | ScrollBars = ssVertical 436 | TabOrder = 2 437 | WantReturns = False 438 | end 439 | end 440 | object StaticText1: TStaticText 441 | Left = 0 442 | Height = 20 443 | Top = 702 444 | Width = 1003 445 | Align = alBottom 446 | Caption = 'License: GPLv3 Author: alex_q_2000 (C) 2023 URL: https://github.com/AKotov-dev' 447 | Font.Color = clGray 448 | Font.Height = -11 449 | Font.Name = 'Sans' 450 | ParentFont = False 451 | TabOrder = 3 452 | end 453 | object IniPropStorage1: TIniPropStorage 454 | StoredValues = < 455 | item 456 | Name = 'findex' 457 | Value = '100' 458 | end> 459 | OnRestoreProperties = IniPropStorage1RestoreProperties 460 | Left = 320 461 | Top = 104 462 | end 463 | object PopupMenu1: TPopupMenu 464 | Images = ImageList1 465 | OnPopup = PopupMenu1Popup 466 | Left = 121 467 | Top = 104 468 | object CopyItem: TMenuItem 469 | Caption = 'Copy' 470 | ImageIndex = 0 471 | OnClick = CopyItemClick 472 | end 473 | object Separator1: TMenuItem 474 | Caption = '-' 475 | end 476 | object SaveItem: TMenuItem 477 | Caption = 'Save to file' 478 | ImageIndex = 2 479 | OnClick = SaveItemClick 480 | end 481 | object LoadItem: TMenuItem 482 | Caption = 'Load from file' 483 | ImageIndex = 1 484 | OnClick = LoadItemClick 485 | end 486 | end 487 | object OpenDialog1: TOpenDialog 488 | DefaultExt = '.*.proxy' 489 | Filter = 'XRayGUI files (*.proxy)|*.proxy' 490 | Options = [ofNoNetworkButton, ofEnableSizing] 491 | Left = 64 492 | Top = 176 493 | end 494 | object SaveDialog1: TSaveDialog 495 | DefaultExt = '.*.proxy' 496 | Filter = 'XRayGUI file (*.proxy)|*.proxy' 497 | Options = [ofOverwritePrompt, ofEnableSizing] 498 | Left = 168 499 | Top = 176 500 | end 501 | object ImageList1: TImageList 502 | Left = 208 503 | Top = 104 504 | Bitmap = { 505 | 4C7A030000001000000010000000130400000000000078DAEDD35D4C93571807 506 | F03772B5C2EDB6645920CB2E77B5AB99E904C1AA14615268295018938F02A515 507 | 65F413280205DAD2A201943A758EB81951B74874C28C37F225149A6D0AE342F0 508 | 6250966CC1AC74A55936FF7BCE5B31B016292C4BB6646FF24F9B3CE7779E73DE 509 | 735E8E0B7DBA12B8984E6194A8431825091756B3EDE7A2B98DECBE1D331DFB76 510 | 60934C879B83EFCBEAFBB937B80D1E56E3C7244625FFB576531B6F603578867B 511 | D76571F032168655406F143F07F3B417F61F5D2FC7A0334E848E58C9FCC977BA 512 | 5D86B77EC6BDDA91E7196B1DC70F777DF00C81CDB1D6076DEC0C59BC305D6FCE 513 | F273D03AD6F9605F1A13B7E17E598D1F73DFE2627B59E769CDACC66DF2F09EED 514 | E55FE0D79EDF563C3B9735F767CA99CA09B6E2D9D9DED4EC31B2BEAB776F4BEB 515 | A7B161CE2639E2F3A3B12135DBABD1549BDEF4FE74C44EC1F99A20ECFCFC1C71 516 | ABEF324CA84663B87FE011D8164C94A5F5F1DC8AB1FDF84A84FE0E05A1F17804 517 | 6D0BE705D679E74689B6CF2731FF7AE722CCC35ED8C796230A1BCB0CD981971C 518 | 8B7725FD5EB87FC196C20CB3821BBFB9A30780EDE499BDB35DFFCCFEEFFFC35E 519 | 300013FD2E6D27CCFEDDEFB7A8405ADF502D0F588D721C5715C3DA6C82C55C87 520 | D6A65AB434D6C07CC280A67A3D1A4D3A545614E2884CF87B7AEA5E35008EA551 521 | 230FF8278EE2A7A10A384F9F84CFE75B178F67013D179CE8FBF22A6E7FD5877E 522 | 67061C5AD1D3C329F12AE6DBEBF31170931F54A2FB747B881F1D1DC439B31806 523 | B514B76FF5E1EBB362F847E468D31C7C7AE8C0AE0A87298FBC9A7C39BABBC2F8 524 | 91415C3F2581E918F337781F18CD857F3807EA82F83F1C75E42755E4CB70A6D3 525 | 1EE2DD13E3D0948A50A5CC0D7A673AEF5746B2612C4B84BD4ECE7BBF4B0963D5 526 | 8798A4F133D3539487F87E8AE50126C646E09E1C8741A3C2F41752F239E46541 527 | 5F9B4BBE02810925E6FA8BD07B2A1B97EC325C6A93A2C79A891E4B063E6D4DC7 528 | C596F731DA9319EC3D9A4D3E0B86D2BD68ABC921AF245F8E80AB945242294660 529 | BC1081B123940204EE7F40C9E36DB0F7AA4F087AEA6DD1CB70B1BD129F38D4B8 530 | 6057E1BC4D8973D6727C6C29C3D956059C2DC5E86E2EC2197321AD5B88956129 531 | F48A78D88CD97C6F87291F8FAF1FC6E36B6998BB9A8AB95E11E6AE2463F6CA01 532 | CC5E165292F0E8F3443CFA2C010D9587C84BA02FD9435E46BE0CCDFA7C3C597C 533 | 88279ED53C0866E13B2CF1F93698F96FA02B4FE1BD8EBCD590C57BB32EEFF999 534 | 2D2F2FBF30DA32E633A12B7E0F563D7997024D5A79449685DD8795A10C688B76 535 | D37B93F2EFBC499B1B91F77ABDD02892C98BC9EF8251255EF975AC048D9ADC88 536 | 7A335FAD3808DF3D3114593BFD3999A21ABD326DA5282F8DFF461BEA34385153 537 | 0D93F123D4198EA356770C35DAA3306AD4D057ABA0AB52429CF22E4A653BFD49 538 | BBDFAEFA13A9CD7CB4 539 | } 540 | end 541 | object GetQR: TAsyncProcess 542 | Active = False 543 | Executable = 'bash' 544 | Parameters.Strings = ( 545 | '' 546 | ) 547 | Options = [poWaitOnExit] 548 | Priority = ppNormal 549 | StartupOptions = [] 550 | ShowWindow = swoNone 551 | WindowColumns = 0 552 | WindowHeight = 0 553 | WindowLeft = 0 554 | WindowRows = 0 555 | WindowTop = 0 556 | WindowWidth = 0 557 | FillAttribute = 0 558 | Left = 320 559 | Top = 176 560 | end 561 | end 562 | -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/unit1.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/lib/x86_64-linux/unit1.o -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/unit1.ppu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/lib/x86_64-linux/unit1.ppu -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/unit1.rsj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":7788545,"name":"unit1.sapprunning","sourcebytes":[84,104,101,32,112,114,111,103,114,97,109,32,105,115,32,97,108,114,101,97,100,121,32,114,117,110,110,105,110,103,33],"value":"The program is already running!"}, 3 | {"hash":40838129,"name":"unit1.svmessonlymsg","sourcebytes":[83,117,112,112,111,114,116,101,100,32,112,114,111,116,111,99,111,108,115,58,10,118,109,101,115,115,44,32,118,108,101,115,115,44,32,115,115,32,40,119,105,116,104,111,117,116,32,111,98,102,115,41,32,97,110,100,32,116,114,111,106,97,110,33],"value":"Supported protocols:\nvmess, vless, ss (without obfs) and trojan!"}, 4 | {"hash":192063167,"name":"unit1.sdeletemsg","sourcebytes":[68,101,108,101,116,101,32,116,104,101,32,115,101,108,101,99,116,101,100,32,99,111,110,102,105,103,117,114,97,116,105,111,110,115,63],"value":"Delete the selected configurations?"}, 5 | {"hash":22736929,"name":"unit1.snotvalidmsg","sourcebytes":[84,104,101,32,102,105,108,101,32,105,115,32,110,111,116,32,118,97,108,105,100,33],"value":"The file is not valid!"} 6 | ]} 7 | -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/update_trd.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/lib/x86_64-linux/update_trd.o -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/update_trd.ppu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/lib/x86_64-linux/update_trd.ppu -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/vmessgui.compiled: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <CONFIG> 3 | <Compiler Value="/usr/bin/fpc" Date="1644254403"/> 4 | <Params Value=" -MObjFPC -Scghi -CX -Cg -O3 -XX -l -vewnhibq "-Fi/home/marsik/Рабочий стол/vmessgui/lib/x86_64-linux" -Fu/usr/lib64/lazarus/lcl/units/x86_64-linux/gtk2 -Fu/usr/lib64/lazarus/lcl/units/x86_64-linux -Fu/usr/lib64/lazarus/components/freetype/lib/x86_64-linux -Fu/usr/lib64/lazarus/components/lazutils/lib/x86_64-linux -Fu/usr/lib64/lazarus/packager/units/x86_64-linux "-Fu/home/marsik/Рабочий стол/vmessgui/" "-FU/home/marsik/Рабочий стол/vmessgui/lib/x86_64-linux/" "-FE/home/marsik/Рабочий стол/vmessgui/" "-o/home/marsik/Рабочий стол/vmessgui/vmessgui" -dLCL -dLCLgtk2 vmessgui.lpr"/> 5 | </CONFIG> 6 | -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/vmessgui.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/lib/x86_64-linux/vmessgui.o -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/vmessgui.or: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/lib/x86_64-linux/vmessgui.or -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/vmessgui.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/lib/x86_64-linux/vmessgui.res -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/xraygui.compiled: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <CONFIG> 3 | <Compiler Value="/usr/bin/fpc" Date="1621172063"/> 4 | <Params Value=" -MObjFPC -Scghi -CX -Cg -O3 -XX -l -vewnhibq "-Fi/home/marsik/Рабочий стол/xraygui/lib/x86_64-linux" -Fu/usr/share/lazarus/lcl/units/x86_64-linux/gtk2 -Fu/usr/share/lazarus/lcl/units/x86_64-linux -Fu/usr/share/lazarus/components/freetype/lib/x86_64-linux -Fu/usr/share/lazarus/components/lazutils/lib/x86_64-linux -Fu/usr/share/lazarus/packager/units/x86_64-linux "-Fu/home/marsik/Рабочий стол/xraygui/" "-FU/home/marsik/Рабочий стол/xraygui/lib/x86_64-linux/" "-FE/home/marsik/Рабочий стол/xraygui/" "-o/home/marsik/Рабочий стол/xraygui/xraygui" -dLCL -dLCLgtk2 xraygui.pas"/> 5 | </CONFIG> 6 | -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/xraygui.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/lib/x86_64-linux/xraygui.o -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/xraygui.or: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/lib/x86_64-linux/xraygui.or -------------------------------------------------------------------------------- /xraygui/lib/x86_64-linux/xraygui.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/lib/x86_64-linux/xraygui.res -------------------------------------------------------------------------------- /xraygui/package_project/xraygui.prj: -------------------------------------------------------------------------------- 1 | [NAME] 2 | name=xraygui 3 | 4 | [VERSION] 5 | version=2.5 6 | 7 | [RELEASE] 8 | release=0.mrx9 9 | 10 | [GROUP] 11 | group=Applications/System 12 | 13 | [DESCRIPTION] 14 | 0=A small and nimble GUI for XRay-core 15 | 1=--- 16 | 2=More information: /usr/share/doc/package_name/repack.txt 17 | 18 | [MAINTAINER] 19 | maintainer=Alex Kotov 20 | 21 | [VENDOR] 22 | vendor=alex_q_2000 (C) 2023 23 | 24 | [SUMMARY] 25 | summary=A small and nimble GUI for XRay-core 26 | 27 | [URLCOPY] 28 | urlcopy=https://github.com/AKotov-dev/XRayGUI 29 | 30 | [LICENSE] 31 | license=GPLv3 32 | 33 | [DEPS] 34 | deps=systemd zenity curl p7zip qrencode gtk2 lib64proxy-gnome lib64proxy-kde 35 | 36 | [META] 37 | meta=0 38 | 39 | [NOARCH] 40 | noarch=0 41 | 42 | [DEB] 43 | deb=1 44 | 45 | [FILES] 46 | 0=/usr/share/xraygui/ 47 | 1=/usr/share/doc/xraygui/ 48 | 2=/usr/bin/xraygui 49 | 3=/usr/bin/xray-update 50 | 4=/usr/share/icons/xraygui.png 51 | 5=/etc/systemd/user/xray.service 52 | 6=/etc/systemd/user/xray-update.service 53 | 7=/usr/share/applications/xraygui.desktop 54 | 8=/etc/systemd/user/xray-swproxy.service 55 | 56 | [AFTERINSTALL] 57 | 0=#!/bin/bash 58 | 1= 59 | 2=systemctl daemon-reload 60 | 61 | [AFTERREMOVE] 62 | 0=#!/bin/bash 63 | 1= 64 | 2=systemctl daemon-reload 65 | 66 | [BEFOREREMOVE] 67 | 0=#!/bin/bash 68 | 1= 69 | 2=#Окончательное удаление 70 | 3=if [ $1 -eq 0 ]; then 71 | 4=if [[ $(pidof xray) ]]; then killall xray; fi 72 | 5=systemctl daemon-reload 73 | 6=fi 74 | 75 | [URL32] 76 | url32=https://github.com/AKotov-dev/XRayGUI 77 | 78 | [PROGRAMNAME] 79 | programname=XRayGUI 80 | 81 | [DEVTOOL] 82 | devtool=Lazarus 83 | 84 | [TOOLVERSION] 85 | toolversion=3.6 86 | 87 | [INFO] 88 | 0=V2.5 89 | 1=+ Recompiling to Lazarus-3.6 90 | 2=+ VMESS/VLESS `HTTPUpgrade` support 91 | 3=+ Packages for Mageia-9 and Ubuntu 92 | 4= 93 | 5=v2.4 94 | 6=+ XHTTP support 95 | 7=+ Fix xhttpSettings: hostname/host 96 | 8=+ Packages for Mageia-9 and Ubuntu 97 | 9= 98 | 10=v2.3.3 99 | 11=+ XHTTP support 100 | 12=+ Automatic update is enabled 101 | 13=+ VLESS REALITY "flow" correction 102 | 14=+ Packages for Mageia-9 and Ubuntu 103 | 15= 104 | 16=v2.3.2 105 | 17=+ Temporary freeze, Pre-release 106 | 18=+ VLESS REALITY "flow" correction 107 | 19= 108 | 20=v2.3.1 109 | 21=+ [RU] 110 | 22=Начиная с Xray-core v24.12.18 и переходом на новый протокол XHTTP разработчики предлагают переписывать конфигурационные файлы клиентов и серверов. В целях сохранения совместимости уже существующих подключений разработка XRayGUI временно заморожена + автоматическое обновление Xray-core отключено. 111 | 23=+ [EN] 112 | 24=Starting with Xray-core v24.12.18 and the transition to the new XHTTP protocol, the developers suggest rewriting the configuration files of clients and servers. In order to maintain compatibility of existing connections, the development of XRayGUI is temporarily frozen + automatic updating of Xray-core is disabled. 113 | 25= 114 | 26=v2.3 115 | 27=+ Added VMESS+TLS+gRPC 116 | 28=+ Packages for Mageia-8/9 and Ubuntu 117 | 29= 118 | 30=v2.2 119 | 31=+ Fix vless-grpc configuration (serviceName) 120 | 32=+ Correction of [xtls-rprx-direct/xtls-rprx-vision](https://github.com/wulabing/Xray_onekey/issues/445) 121 | 33=+ Correction of deleting configurations in Connected mode 122 | 34=+ Correcting the pointer setting in the list of configurations at the first start 123 | 35=+ Packages for Mageia-8/9 and Ubuntu 124 | 36= 125 | 37=v2.1 126 | 38=+ /usr/bin/xray-update: switching to curl 127 | 39=+ Removing wget and fping from dependencies (spec) 128 | 40=+ Packages for Mageia-8/9 and Ubuntu 129 | 41= 130 | 42=v2.0 131 | 43=+ Improved /usr/bin/xray-update 132 | 44=+ Packages for Mageia-8/9 and Ubuntu 133 | 45= 134 | 46=v1.9 135 | 47=+ Recompilation in Lazarus-3.2 136 | 48=+ Added qrencode dependency 137 | 49=+ Display QR code for connections 138 | 50=+ Packages for Mageia-8/9 and Ubuntu 139 | 51= 140 | 52=Note: The QR code simplifies the procedure for connecting your smartphone by scanning it in the client application. Test for LG Q6 + NekoBox-1.3.1 passed. 141 | 53= 142 | 54=v1.8 143 | 55=+ Bypassing domain zones (cn, ru, by, ir, ...) 144 | 56=+ Improved /etc/systemd/user/xray.service 145 | 57=+ Packages for Mageia-9 and Ubuntu 146 | 58= 147 | 59=v1.7 148 | 60=+ Reality generator: SNI list expanded 149 | 61=+ Comsetic edits, code optimization 150 | 62=+ Packages for Mageia-9 and Ubuntu 151 | 63= 152 | 64=v1.6 153 | 65=+ REALITY support 154 | 66=+ Simple REALITY configurator (Client-Server) 155 | 67=+ Packages for Mageia-9 and Ubuntu 156 | 68= 157 | 69=v1.5 158 | 70=+ System-Wide Proxy (SWP) 159 | 71=+ Additional port 8889 (HTTP/HTTPS/FTP) 160 | 72=+ Correction of tags for reading connection logs 161 | 73=+ Dependencies: lib64proxy-gnome lib64proxy-kde 162 | 74=+ Packages for Mageia-9 and Ubuntu 163 | 75= 164 | 76=**Note:** System-Wide Proxy supported in Budgie, GNOME, Cinnamon, MATE, KDE-5. [Read more...](https://github.com/AKotov-dev/XRayGUI) 165 | 77= 166 | 78=v1.4 167 | 79=+ Support VLESS + KCP 168 | 80=+ Packages for Mageia-9 and Ubuntu 169 | 81= 170 | 82=v1.2 171 | 83=+ Default: "allowInsecure": true 172 | 84=+ Default connection: 127.0.0.1:1080 173 | 85=+ Improved Сonfiguration building 174 | 86=+ Improved startup/update services 175 | 87=+ Switching logging to the "warning" level 176 | 88=+ RPM packages for Mageia-8 and Mageia-9 177 | 89= 178 | 90=v1.1 179 | 91=+ Installing xray-core from the GitHub 180 | 92=+ xray-core installation/update directory ~/.config/xraygui/xray 181 | 93=+ RPM packages for Mageia-8 and Mageia-9 182 | 94= 183 | 95=v1.0 184 | 96=+ Update Xray-core v1.6.0 185 | 97=+ Auto-update Xray-Core at GUI startup 186 | 98=+ RPM packages for Mageia-8 and Mageia-9 187 | 99= 188 | 100=v0.9 189 | 101=+ Improved startup control (xray/port) 190 | 102=+ Prevention the launch of the second copy of the program 191 | 103= 192 | 104=v0.8-1 193 | 105=+ Update: Xray-core v1.5.9 194 | 106= 195 | 107=v0.8 196 | 108=+ Switching to systemd (autostart from the user) 197 | 109=+ Correction of the spec file (rpm/deb) 198 | 110=+ Autostart testing in Mageia/LUbuntu - passed 199 | 111= 200 | 112=v0.7 201 | 113=+ Vless+gRPC and Trojan+gRPC support 202 | 114=+ General test: 203 | 115=VMESS TLS - passed 204 | 116=VMESS non TLS - passed 205 | 117= 206 | 118=VLESS TLS - passed 207 | 119=VLESS non TLS - passed 208 | 120=VLESS + WS TLS - passed 209 | 121=VLESS + WS non TLS - passed 210 | 122=VLESS + gRPC - passed 211 | 123= 212 | 124=Trojan - passed 213 | 125=Trojan + WS - passed 214 | 126=Trojan + gRPC - passed 215 | 127= 216 | 128=v0.6 217 | 129=+ Trojan protocol support 218 | 130=+ Proxy launch control in a separate thread 219 | 131=+ Optimization of Vmess/Vless/SS/Trojan configurations 220 | 132= 221 | 133=v0.5 222 | 134=+ Supported protocols: VMESS/VLESS (ws, ws+tls) and SS (without obfs) 223 | 135=+ Changed the file type of uploading/saving the list of configurations to *.proxy 224 | 136=+ Excluded URL insertion from PopUp menu to save duplicate search 225 | 137= 226 | 138=v0.4 227 | 139=+ Optimization of log output 228 | 140=+ Optimization of general perception (visual load) 229 | 141= 230 | 142=v0.3 231 | 143=+ Autostart proxy after reboot 232 | 144=+ Disabling xray before updating/deleting rpm/deb (spec) 233 | 145= 234 | 146=v0.2 235 | 147=+ PopUp menu: Paste from clipboard 236 | 148=+ Cosmetic edits, hints, etc... 237 | 149= 238 | 150=v0.1 - initial release 239 | -------------------------------------------------------------------------------- /xraygui/portscan_trd.pas: -------------------------------------------------------------------------------- 1 | unit portscan_trd; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, Forms, Controls, SysUtils, Process, Graphics; 9 | 10 | type 11 | PortScan = class(TThread) 12 | private 13 | 14 | { Private declarations } 15 | protected 16 | var 17 | ResultStr: TStringList; 18 | 19 | procedure Execute; override; 20 | procedure ShowStatus; 21 | 22 | end; 23 | 24 | implementation 25 | 26 | uses unit1; 27 | 28 | { TRD } 29 | 30 | procedure PortScan.Execute; 31 | var 32 | ScanProcess: TProcess; 33 | begin 34 | FreeOnTerminate := True; //Уничтожать по завершении 35 | 36 | while not Terminated do 37 | try 38 | ResultStr := TStringList.Create; 39 | 40 | ScanProcess := TProcess.Create(nil); 41 | 42 | ScanProcess.Executable := 'bash'; 43 | ScanProcess.Parameters.Add('-c'); 44 | ScanProcess.Options := [poUsePipes, poWaitOnExit]; 45 | 46 | ScanProcess.Parameters.Add( 47 | 'if [[ $(ss -ltn | grep ' + MainForm.PortEdit.Text + 48 | ') && $(pidof xray) ]]; then echo "yes"; else echo "no"; fi'); 49 | 50 | ScanProcess.Execute; 51 | 52 | ResultStr.LoadFromStream(ScanProcess.Output); 53 | Synchronize(@ShowStatus); 54 | 55 | Sleep(1000); 56 | finally 57 | ResultStr.Free; 58 | ScanProcess.Free; 59 | end; 60 | end; 61 | 62 | //Отображение статуса 63 | procedure PortScan.ShowStatus; 64 | begin 65 | with MainForm do 66 | begin 67 | if ResultStr[0] = 'yes' then 68 | begin 69 | Shape1.Brush.Color := clLime; 70 | PortEdit.Enabled := False; 71 | DomainBox.Enabled := False; 72 | LoadItem.Enabled := False; 73 | end 74 | else 75 | begin 76 | Shape1.Brush.Color := clYellow; 77 | if ConfigBox.Count <> 0 then 78 | begin 79 | PortEdit.Enabled := True; 80 | DomainBox.Enabled := True; 81 | end; 82 | LoadItem.Enabled := True; 83 | end; 84 | 85 | Shape1.Repaint; 86 | end; 87 | end; 88 | 89 | end. 90 | -------------------------------------------------------------------------------- /xraygui/reality_gen.lfm: -------------------------------------------------------------------------------- 1 | object RealityForm: TRealityForm 2 | Left = 295 3 | Height = 533 4 | Top = 130 5 | Width = 611 6 | ActiveControl = Edit1 7 | Caption = 'REALITY configurations generator (Client-Server)' 8 | ClientHeight = 533 9 | ClientWidth = 611 10 | OnCreate = FormCreate 11 | Position = poMainFormCenter 12 | SessionProperties = 'ComboBox1.Text;ComboBox2.Text;ComboBox3.Text;Edit1.Text;Edit2.Text;Edit3.Text;Edit4.Text;Edit5.Text;Edit6.Text;Memo1.Lines;SaveDialog1.InitialDir' 13 | LCLVersion = '2.2.4.0' 14 | object Label1: TLabel 15 | AnchorSideLeft.Control = Owner 16 | AnchorSideTop.Side = asrCenter 17 | Left = 8 18 | Height = 17 19 | Top = 18 20 | Width = 66 21 | BorderSpacing.Left = 8 22 | Caption = 'Server:Port' 23 | ParentColor = False 24 | end 25 | object Edit1: TEdit 26 | AnchorSideLeft.Control = Label1 27 | AnchorSideLeft.Side = asrBottom 28 | AnchorSideTop.Control = Label1 29 | AnchorSideTop.Side = asrCenter 30 | Left = 79 31 | Height = 37 32 | Top = 8 33 | Width = 238 34 | BorderSpacing.Left = 5 35 | OnChange = Edit1Change 36 | TabOrder = 0 37 | end 38 | object Label2: TLabel 39 | AnchorSideLeft.Control = Edit1 40 | AnchorSideLeft.Side = asrBottom 41 | AnchorSideTop.Control = Label1 42 | AnchorSideTop.Side = asrCenter 43 | Left = 319 44 | Height = 17 45 | Top = 18 46 | Width = 3 47 | BorderSpacing.Left = 2 48 | Caption = ':' 49 | ParentColor = False 50 | end 51 | object Edit2: TEdit 52 | AnchorSideLeft.Control = Label2 53 | AnchorSideLeft.Side = asrBottom 54 | AnchorSideTop.Control = Label1 55 | AnchorSideTop.Side = asrCenter 56 | Left = 324 57 | Height = 37 58 | Hint = 'Strictly recommended 443' 59 | Top = 8 60 | Width = 82 61 | BorderSpacing.Left = 2 62 | OnChange = Edit1Change 63 | ParentShowHint = False 64 | ShowHint = True 65 | TabOrder = 1 66 | Text = '443' 67 | end 68 | object Label3: TLabel 69 | AnchorSideLeft.Control = Owner 70 | Left = 8 71 | Height = 17 72 | Top = 208 73 | Width = 31 74 | BorderSpacing.Left = 8 75 | Caption = 'UUID' 76 | ParentColor = False 77 | end 78 | object Edit3: TEdit 79 | AnchorSideLeft.Control = Edit5 80 | AnchorSideTop.Control = Label3 81 | AnchorSideTop.Side = asrCenter 82 | AnchorSideRight.Control = SpeedButton1 83 | Left = 81 84 | Height = 37 85 | Top = 198 86 | Width = 434 87 | Anchors = [akTop, akLeft, akRight] 88 | OnChange = Edit1Change 89 | TabOrder = 5 90 | end 91 | object Label4: TLabel 92 | AnchorSideLeft.Control = Owner 93 | Left = 8 94 | Height = 17 95 | Top = 64 96 | Width = 30 97 | BorderSpacing.Left = 8 98 | Caption = 'Flow' 99 | ParentColor = False 100 | end 101 | object ComboBox1: TComboBox 102 | AnchorSideLeft.Control = Label4 103 | AnchorSideLeft.Side = asrBottom 104 | AnchorSideTop.Control = Label4 105 | AnchorSideTop.Side = asrCenter 106 | AnchorSideRight.Control = Edit2 107 | AnchorSideRight.Side = asrBottom 108 | Left = 58 109 | Height = 37 110 | Top = 54 111 | Width = 348 112 | Anchors = [akTop, akLeft, akRight] 113 | BorderSpacing.Left = 20 114 | ItemHeight = 0 115 | ItemIndex = 0 116 | Items.Strings = ( 117 | 'xtls-rprx-vision' 118 | 'xtls-rprx-vision-udp443' 119 | ) 120 | OnChange = Edit1Change 121 | TabOrder = 2 122 | Text = 'xtls-rprx-vision' 123 | end 124 | object Label5: TLabel 125 | AnchorSideLeft.Control = Owner 126 | Left = 8 127 | Height = 17 128 | Top = 112 129 | Width = 21 130 | BorderSpacing.Left = 8 131 | Caption = 'SNI' 132 | ParentColor = False 133 | end 134 | object ComboBox2: TComboBox 135 | AnchorSideLeft.Control = ComboBox1 136 | AnchorSideTop.Control = Label5 137 | AnchorSideTop.Side = asrCenter 138 | AnchorSideRight.Control = Edit2 139 | AnchorSideRight.Side = asrBottom 140 | Left = 58 141 | Height = 37 142 | Top = 102 143 | Width = 348 144 | Anchors = [akTop, akLeft, akRight] 145 | ItemHeight = 0 146 | ItemIndex = 7 147 | Items.Strings = ( 148 | 'www.asus.com' 149 | 'www.bing.com' 150 | 'www.cisco.com' 151 | 'www.linksys.com' 152 | 'www.microsoft.com' 153 | 'www.nvidia.com' 154 | 'www.samsung.com' 155 | 'www.yahoo.com' 156 | ) 157 | OnChange = Edit1Change 158 | TabOrder = 3 159 | Text = 'www.yahoo.com' 160 | end 161 | object Label6: TLabel 162 | AnchorSideLeft.Control = Owner 163 | Left = 8 164 | Height = 17 165 | Top = 160 166 | Width = 37 167 | BorderSpacing.Left = 8 168 | Caption = 'FPrint' 169 | ParentColor = False 170 | end 171 | object ComboBox3: TComboBox 172 | AnchorSideLeft.Control = ComboBox1 173 | AnchorSideTop.Control = Label6 174 | AnchorSideTop.Side = asrCenter 175 | AnchorSideRight.Control = Edit2 176 | AnchorSideRight.Side = asrBottom 177 | Left = 58 178 | Height = 37 179 | Top = 150 180 | Width = 348 181 | Anchors = [akTop, akLeft, akRight] 182 | ItemHeight = 0 183 | Items.Strings = ( 184 | 'android' 185 | 'chrome' 186 | 'edge' 187 | 'firefox' 188 | 'ios' 189 | 'safari' 190 | '360' 191 | ) 192 | OnChange = Edit1Change 193 | TabOrder = 4 194 | Text = 'chrome' 195 | end 196 | object Label7: TLabel 197 | AnchorSideLeft.Control = Owner 198 | Left = 8 199 | Height = 17 200 | Top = 304 201 | Width = 60 202 | BorderSpacing.Left = 8 203 | Caption = 'Public Key' 204 | ParentColor = False 205 | end 206 | object Edit4: TEdit 207 | AnchorSideLeft.Control = Edit5 208 | AnchorSideTop.Control = Label7 209 | AnchorSideTop.Side = asrCenter 210 | AnchorSideRight.Control = SpeedButton2 211 | Left = 81 212 | Height = 37 213 | Top = 294 214 | Width = 434 215 | Anchors = [akTop, akLeft, akRight] 216 | OnChange = Edit1Change 217 | TabOrder = 7 218 | end 219 | object Label8: TLabel 220 | AnchorSideLeft.Control = Owner 221 | Left = 8 222 | Height = 17 223 | Top = 256 224 | Width = 65 225 | BorderSpacing.Left = 8 226 | Caption = 'Private Key' 227 | ParentColor = False 228 | end 229 | object Edit5: TEdit 230 | AnchorSideLeft.Control = Label8 231 | AnchorSideLeft.Side = asrBottom 232 | AnchorSideTop.Control = Label8 233 | AnchorSideTop.Side = asrCenter 234 | AnchorSideRight.Control = SpeedButton2 235 | Left = 81 236 | Height = 37 237 | Top = 246 238 | Width = 434 239 | Anchors = [akTop, akLeft, akRight] 240 | BorderSpacing.Left = 8 241 | OnChange = Edit1Change 242 | TabOrder = 6 243 | end 244 | object SpeedButton1: TSpeedButton 245 | AnchorSideLeft.Control = Edit3 246 | AnchorSideLeft.Side = asrBottom 247 | AnchorSideTop.Control = Edit3 248 | AnchorSideRight.Control = Owner 249 | AnchorSideRight.Side = asrBottom 250 | AnchorSideBottom.Control = Edit3 251 | AnchorSideBottom.Side = asrBottom 252 | Left = 515 253 | Height = 37 254 | Top = 198 255 | Width = 88 256 | Anchors = [akTop, akRight, akBottom] 257 | BorderSpacing.Right = 8 258 | Caption = 'NEW' 259 | OnClick = SpeedButton1Click 260 | end 261 | object SpeedButton2: TSpeedButton 262 | AnchorSideLeft.Control = Edit4 263 | AnchorSideLeft.Side = asrBottom 264 | AnchorSideTop.Control = Edit5 265 | AnchorSideRight.Control = Owner 266 | AnchorSideRight.Side = asrBottom 267 | AnchorSideBottom.Control = Edit4 268 | AnchorSideBottom.Side = asrBottom 269 | Left = 515 270 | Height = 85 271 | Top = 246 272 | Width = 88 273 | Anchors = [akTop, akRight, akBottom] 274 | BorderSpacing.Right = 8 275 | Caption = 'NEW' 276 | OnClick = SpeedButton2Click 277 | end 278 | object Label9: TLabel 279 | AnchorSideLeft.Control = Owner 280 | Left = 8 281 | Height = 17 282 | Top = 352 283 | Width = 20 284 | BorderSpacing.Left = 8 285 | Caption = 'SID' 286 | ParentColor = False 287 | end 288 | object Edit6: TEdit 289 | AnchorSideTop.Control = Label9 290 | AnchorSideTop.Side = asrCenter 291 | AnchorSideRight.Control = Edit2 292 | AnchorSideRight.Side = asrBottom 293 | Left = 40 294 | Height = 37 295 | Top = 342 296 | Width = 366 297 | Anchors = [akTop, akLeft, akRight] 298 | OnChange = Edit1Change 299 | TabOrder = 8 300 | end 301 | object SpeedButton3: TSpeedButton 302 | AnchorSideLeft.Control = Edit6 303 | AnchorSideLeft.Side = asrBottom 304 | AnchorSideTop.Control = Edit6 305 | AnchorSideBottom.Control = Edit6 306 | AnchorSideBottom.Side = asrBottom 307 | Left = 406 308 | Height = 37 309 | Top = 342 310 | Width = 88 311 | Anchors = [akTop, akLeft, akBottom] 312 | Caption = 'NEW' 313 | OnClick = SpeedButton3Click 314 | end 315 | object Memo1: TMemo 316 | AnchorSideLeft.Control = Owner 317 | AnchorSideRight.Control = Owner 318 | AnchorSideRight.Side = asrBottom 319 | AnchorSideBottom.Control = Owner 320 | AnchorSideBottom.Side = asrBottom 321 | Left = 8 322 | Height = 101 323 | Top = 424 324 | Width = 595 325 | Anchors = [akTop, akLeft, akRight, akBottom] 326 | BorderSpacing.Left = 8 327 | BorderSpacing.Right = 8 328 | BorderSpacing.Bottom = 8 329 | Font.Height = -12 330 | Font.Name = 'Monospace' 331 | ParentFont = False 332 | ReadOnly = True 333 | ScrollBars = ssVertical 334 | TabOrder = 9 335 | end 336 | object CopyBtn: TSpeedButton 337 | AnchorSideRight.Control = Memo1 338 | AnchorSideRight.Side = asrBottom 339 | AnchorSideBottom.Control = Memo1 340 | Left = 498 341 | Height = 35 342 | Top = 387 343 | Width = 105 344 | Anchors = [akRight, akBottom] 345 | BorderSpacing.Bottom = 2 346 | Caption = 'Copy' 347 | Enabled = False 348 | OnClick = CopyBtnClick 349 | end 350 | object Label10: TLabel 351 | AnchorSideLeft.Control = Memo1 352 | AnchorSideBottom.Control = CopyBtn 353 | AnchorSideBottom.Side = asrBottom 354 | Left = 8 355 | Height = 17 356 | Top = 405 357 | Width = 325 358 | Anchors = [akLeft, akBottom] 359 | Caption = 'Connection string to insert into XRayGUI via Clipboard' 360 | ParentColor = False 361 | end 362 | object SaveBtn: TSpeedButton 363 | AnchorSideRight.Control = Owner 364 | AnchorSideRight.Side = asrBottom 365 | Left = 434 366 | Height = 64 367 | Top = 8 368 | Width = 169 369 | Anchors = [akTop, akRight] 370 | BorderSpacing.Right = 8 371 | Caption = 'Save server.json' 372 | Enabled = False 373 | OnClick = SaveBtnClick 374 | end 375 | object IniPropStorage1: TIniPropStorage 376 | StoredValues = <> 377 | Left = 456 378 | Top = 104 379 | end 380 | object SaveDialog1: TSaveDialog 381 | DefaultExt = '.*.json' 382 | FileName = 'server.json' 383 | Filter = 'JSON files (*.json)|*.json' 384 | Options = [ofOverwritePrompt, ofEnableSizing, ofViewDetail] 385 | Left = 544 386 | Top = 104 387 | end 388 | end 389 | -------------------------------------------------------------------------------- /xraygui/reality_gen.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":84010505,"name":"trealityform.caption","sourcebytes":[82,69,65,76,73,84,89,32,99,111,110,102,105,103,117,114,97,116,105,111,110,115,32,103,101,110,101,114,97,116,111,114,32,40,67,108,105,101,110,116,45,83,101,114,118,101,114,41],"value":"REALITY configurations generator (Client-Server)"}, 3 | {"hash":201768788,"name":"trealityform.label1.caption","sourcebytes":[83,101,114,118,101,114,58,80,111,114,116],"value":"Server:Port"}, 4 | {"hash":58,"name":"trealityform.label2.caption","sourcebytes":[58],"value":":"}, 5 | {"hash":6486579,"name":"trealityform.edit2.hint","sourcebytes":[83,116,114,105,99,116,108,121,32,114,101,99,111,109,109,101,110,100,101,100,32,52,52,51],"value":"Strictly recommended 443"}, 6 | {"hash":14195,"name":"trealityform.edit2.text","sourcebytes":[52,52,51],"value":"443"}, 7 | {"hash":371156,"name":"trealityform.label3.caption","sourcebytes":[85,85,73,68],"value":"UUID"}, 8 | {"hash":316263,"name":"trealityform.label4.caption","sourcebytes":[70,108,111,119],"value":"Flow"}, 9 | {"hash":43917054,"name":"trealityform.combobox1.text","sourcebytes":[120,116,108,115,45,114,112,114,120,45,118,105,115,105,111,110],"value":"xtls-rprx-vision"}, 10 | {"hash":22569,"name":"trealityform.label5.caption","sourcebytes":[83,78,73],"value":"SNI"}, 11 | {"hash":30152541,"name":"trealityform.combobox2.text","sourcebytes":[119,119,119,46,121,97,104,111,111,46,99,111,109],"value":"www.yahoo.com"}, 12 | {"hash":79138900,"name":"trealityform.label6.caption","sourcebytes":[70,80,114,105,110,116],"value":"FPrint"}, 13 | {"hash":111121973,"name":"trealityform.combobox3.text","sourcebytes":[99,104,114,111,109,101],"value":"chrome"}, 14 | {"hash":49302105,"name":"trealityform.label7.caption","sourcebytes":[80,117,98,108,105,99,32,75,101,121],"value":"Public Key"}, 15 | {"hash":150003977,"name":"trealityform.label8.caption","sourcebytes":[80,114,105,118,97,116,101,32,75,101,121],"value":"Private Key"}, 16 | {"hash":21159,"name":"trealityform.speedbutton1.caption","sourcebytes":[78,69,87],"value":"NEW"}, 17 | {"hash":21159,"name":"trealityform.speedbutton2.caption","sourcebytes":[78,69,87],"value":"NEW"}, 18 | {"hash":22484,"name":"trealityform.label9.caption","sourcebytes":[83,73,68],"value":"SID"}, 19 | {"hash":21159,"name":"trealityform.speedbutton3.caption","sourcebytes":[78,69,87],"value":"NEW"}, 20 | {"hash":304761,"name":"trealityform.copybtn.caption","sourcebytes":[67,111,112,121],"value":"Copy"}, 21 | {"hash":186454372,"name":"trealityform.label10.caption","sourcebytes":[67,111,110,110,101,99,116,105,111,110,32,115,116,114,105,110,103,32,116,111,32,105,110,115,101,114,116,32,105,110,116,111,32,88,82,97,121,71,85,73,32,118,105,97,32,67,108,105,112,98,111,97,114,100],"value":"Connection string to insert into XRayGUI via Clipboard"}, 22 | {"hash":189352286,"name":"trealityform.savebtn.caption","sourcebytes":[83,97,118,101,32,115,101,114,118,101,114,46,106,115,111,110],"value":"Save server.json"} 23 | ]} 24 | -------------------------------------------------------------------------------- /xraygui/reality_gen.pas: -------------------------------------------------------------------------------- 1 | unit reality_gen; 2 | 3 | {$mode ObjFPC}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Process, 9 | StdCtrls, Buttons, IniPropStorage, Clipbrd; 10 | 11 | type 12 | 13 | { TRealityForm } 14 | 15 | TRealityForm = class(TForm) 16 | ComboBox1: TComboBox; 17 | ComboBox2: TComboBox; 18 | ComboBox3: TComboBox; 19 | Edit1: TEdit; 20 | Edit2: TEdit; 21 | Edit3: TEdit; 22 | Edit4: TEdit; 23 | Edit5: TEdit; 24 | Edit6: TEdit; 25 | IniPropStorage1: TIniPropStorage; 26 | Label1: TLabel; 27 | Label10: TLabel; 28 | Label2: TLabel; 29 | Label3: TLabel; 30 | Label4: TLabel; 31 | Label5: TLabel; 32 | Label6: TLabel; 33 | Label7: TLabel; 34 | Label8: TLabel; 35 | Label9: TLabel; 36 | Memo1: TMemo; 37 | SaveDialog1: TSaveDialog; 38 | SpeedButton1: TSpeedButton; 39 | SpeedButton2: TSpeedButton; 40 | SpeedButton3: TSpeedButton; 41 | CopyBtn: TSpeedButton; 42 | SaveBtn: TSpeedButton; 43 | procedure Edit1Change(Sender: TObject); 44 | procedure FormCreate(Sender: TObject); 45 | procedure SpeedButton1Click(Sender: TObject); 46 | procedure SpeedButton2Click(Sender: TObject); 47 | procedure SpeedButton3Click(Sender: TObject); 48 | procedure CopyBtnClick(Sender: TObject); 49 | procedure SaveBtnClick(Sender: TObject); 50 | private 51 | 52 | public 53 | 54 | end; 55 | 56 | var 57 | RealityForm: TRealityForm; 58 | 59 | implementation 60 | 61 | uses unit1; 62 | 63 | {$R *.lfm} 64 | 65 | { TRealityForm } 66 | 67 | //Get UUID 68 | procedure TRealityForm.SpeedButton1Click(Sender: TObject); 69 | var 70 | S: ansistring; 71 | begin 72 | if RunCommand('bash', ['-c', '~/.config/xraygui/xray/xray uuid'], S) then 73 | Edit3.Text := Trim(S); 74 | end; 75 | 76 | //Get Pub/Priv Keys 77 | procedure TRealityForm.SpeedButton2Click(Sender: TObject); 78 | var 79 | S: ansistring; 80 | begin 81 | //Список ключей 82 | if RunCommand('/bin/bash', ['-c', 83 | '~/.config/xraygui/xray/xray x25519 | cut -f2 -d":"'], S) then 84 | begin 85 | //Private Key 86 | Edit5.Text := Trim(Copy(S, 0, Pos(#10, S) - 1)); 87 | //Public Key 88 | Edit4.Text := Trim(Copy(S, Pos(#10, S), Length(S))); 89 | end; 90 | end; 91 | 92 | //Get Sid 93 | procedure TRealityForm.SpeedButton3Click(Sender: TObject); 94 | var 95 | S: ansistring; 96 | begin 97 | if RunCommand('/bin/bash', ['-c', 'openssl rand -hex 8'], S) then 98 | Edit6.Text := Trim(S); 99 | end; 100 | 101 | //Однострочная конфигурация клиента в Буфер 102 | procedure TRealityForm.CopyBtnClick(Sender: TObject); 103 | begin 104 | Clipboard.AsText := Memo1.Text; 105 | end; 106 | 107 | //Save server.json 108 | procedure TRealityForm.SaveBtnClick(Sender: TObject); 109 | var 110 | S: TStringList; 111 | begin 112 | try 113 | S := TStringList.Create; 114 | if SaveDialog1.Execute then 115 | begin 116 | S.Add('{'); 117 | S.Add(' "log": {'); 118 | S.Add(' "loglevel": "warning"'); 119 | S.Add(' },'); 120 | S.Add(' "routing": {'); 121 | S.Add(' "rules": [],'); 122 | S.Add(' "domainStrategy": "AsIs"'); 123 | S.Add(' },'); 124 | S.Add(' "inbounds": ['); 125 | S.Add(' {'); 126 | S.Add(' "port": ' + Edit2.Text + ','); 127 | S.Add(' "protocol": "vless",'); 128 | S.Add(' "tag": "vless_tls",'); 129 | S.Add(' "settings": {'); 130 | S.Add(' "clients": ['); 131 | S.Add(' {'); 132 | S.Add(' "id": "' + Edit3.Text + '",'); 133 | S.Add(' "email": "user1@myserver",'); 134 | S.Add(' "flow": "' + ComboBox1.Text + '"'); 135 | S.Add(' }'); 136 | S.Add(' ],'); 137 | S.Add(' "decryption": "none"'); 138 | S.Add(' },'); 139 | S.Add(' "streamSettings": {'); 140 | S.Add(' "network": "tcp",'); 141 | S.Add(' "security": "reality",'); 142 | S.Add(' "realitySettings": {'); 143 | S.Add(' "show": false,'); 144 | S.Add(' "dest": "' + ComboBox2.Text + ':443",'); 145 | S.Add(' "serverNames": ['); 146 | S.Add(' "' + ComboBox2.Text + '"'); 147 | S.Add(' ],'); 148 | S.Add(' "privateKey": "' + Edit5.Text + '",'); 149 | S.Add(' "shortIds": ['); 150 | S.Add(' "' + Edit6.Text + '"'); 151 | S.Add(' ]'); 152 | S.Add(' }'); 153 | S.Add(' },'); 154 | S.Add(' "sniffing": {'); 155 | S.Add(' "enabled": true,'); 156 | S.Add(' "destOverride": ['); 157 | S.Add(' "http",'); 158 | S.Add(' "tls",'); 159 | S.Add(' "quic"'); 160 | S.Add(' ]'); 161 | S.Add(' }'); 162 | S.Add(' }'); 163 | S.Add(' ],'); 164 | S.Add(' "outbounds": ['); 165 | S.Add(' {'); 166 | S.Add(' "protocol": "freedom",'); 167 | S.Add(' "tag": "direct"'); 168 | S.Add(' },'); 169 | S.Add(' {'); 170 | S.Add(' "protocol": "blackhole",'); 171 | S.Add(' "tag": "block"'); 172 | S.Add(' }'); 173 | S.Add(' ]'); 174 | S.Add('}'); 175 | S.Add(''); 176 | 177 | S.SaveToFile(SaveDialog1.FileName); 178 | end; 179 | 180 | finally 181 | S.Free; 182 | end; 183 | end; 184 | 185 | procedure TRealityForm.FormCreate(Sender: TObject); 186 | begin 187 | IniPropStorage1.IniFileName := MainForm.IniPropStorage1.IniFileName; 188 | end; 189 | 190 | //Пересоздаём однострочную конфигурацию клиента 191 | procedure TRealityForm.Edit1Change(Sender: TObject); 192 | begin 193 | if Edit2.Text <> '443' then Edit2.Font.Color := clRed 194 | else 195 | Edit2.Font.Color := clDefault; 196 | 197 | if ComboBox1.Text <> 'xtls-rprx-vision' then ComboBox1.Font.Color := clRed 198 | else 199 | ComboBox1.Font.Color := clDefault; 200 | 201 | //Кнопки Save и Copy 202 | if (Edit1.Text = '') or (Edit2.Text = '') or (Edit3.Text = '') or 203 | (Edit4.Text = '') or (Edit5.Text = '') or (Edit6.Text = '') or 204 | (ComboBox1.Text = '') or (ComboBox2.Text = '') or (ComboBox3.Text = '') then 205 | begin 206 | SaveBtn.Enabled := False; 207 | CopyBtn.Enabled := False; 208 | end 209 | else 210 | begin 211 | SaveBtn.Enabled := True; 212 | CopyBtn.Enabled := True; 213 | end; 214 | 215 | Memo1.Text := 'vless://' + Edit3.Text + '@' + Edit1.Text + ':' + 216 | Edit2.Text + '?encryption=none&flow=' + ComboBox1.Text + 217 | '&security=reality&sni=' + ComboBox2.Text + '&fp=' + ComboBox3.Text + 218 | '&pbk=' + Edit4.Text + '&sid=' + Edit6.Text + 219 | '&type=tcp&headerType=none#VLESS%20West'; 220 | end; 221 | 222 | end. 223 | -------------------------------------------------------------------------------- /xraygui/start_trd.pas: -------------------------------------------------------------------------------- 1 | unit start_trd; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, Process; 9 | 10 | type 11 | ShowLogTRD = class(TThread) 12 | private 13 | 14 | { Private declarations } 15 | protected 16 | var 17 | Result: TStringList; 18 | 19 | procedure Execute; override; 20 | 21 | procedure ShowLog; 22 | procedure StartTrd; 23 | 24 | end; 25 | 26 | implementation 27 | 28 | uses Unit1; 29 | 30 | { TRD } 31 | 32 | 33 | procedure ShowLogTRD.Execute; 34 | var 35 | ExProcess: TProcess; 36 | begin 37 | try //Старт вывода 38 | Synchronize(@StartTRD); 39 | 40 | FreeOnTerminate := True; //Уничтожить по завершении 41 | Result := TStringList.Create; 42 | 43 | //Рабочий процесс 44 | ExProcess := TProcess.Create(nil); 45 | 46 | ExProcess.Executable := 'bash'; 47 | ExProcess.Parameters.Add('-c'); 48 | 49 | //Если файл лога отсутствует - создаём пустой и читаем до Terminate 50 | ExProcess.Parameters.Add('[[ -f ~/.config/xraygui/xraygui.log ]] || touch ' + 51 | '~/.config/xraygui/xraygui.log && tail -n 100 -f ~/.config/xraygui/xraygui.log 2> >(grep -v truncated >&2)'); 52 | 53 | ExProcess.Options := [poUsePipes, poStderrToOutPut]; 54 | //, poWaitOnExit (синхронный вывод) 55 | 56 | ExProcess.Execute; 57 | 58 | //Выводим лог динамически 59 | while ExProcess.Running do 60 | begin 61 | Result.LoadFromStream(ExProcess.Output); 62 | 63 | //Выводим лог 64 | if Result.Count <> 0 then 65 | Synchronize(@ShowLog); 66 | end; 67 | 68 | finally 69 | Result.Free; 70 | ExProcess.Free; 71 | Terminate; 72 | end; 73 | end; 74 | 75 | { БЛОК ОТОБРАЖЕНИЯ ЛОГА } 76 | 77 | //Старт вывода 78 | procedure ShowLogTRD.StartTRD; 79 | begin 80 | //Промотать список вниз (до вывода tail) 81 | MainForm.LogMemo.SelStart := Length(MainForm.LogMemo.Text); 82 | MainForm.LogMemo.SelLength := 0; 83 | end; 84 | 85 | //Вывод лога 86 | procedure ShowLogTRD.ShowLog; 87 | var 88 | i: integer; 89 | begin 90 | //Вывод построчно 91 | for i := 0 to Result.Count - 1 do 92 | MainForm.LogMemo.Lines.Append(' ' + Result[i]); 93 | 94 | //Выводим последние записи минус "n" 95 | if MainForm.LogMemo.Lines.Count > 500 then 96 | for i := 0 to 500 do 97 | MainForm.LogMemo.Lines.Delete(i); 98 | 99 | //Промотать список вниз 100 | MainForm.LogMemo.SelStart := Length(MainForm.LogMemo.Text); 101 | MainForm.LogMemo.SelLength := 0; 102 | end; 103 | 104 | end. 105 | -------------------------------------------------------------------------------- /xraygui/unit1.lfm: -------------------------------------------------------------------------------- 1 | object MainForm: TMainForm 2 | Left = 299 3 | Height = 722 4 | Top = 110 5 | Width = 1003 6 | ActiveControl = Panel1 7 | Caption = 'XRayGUI' 8 | ClientHeight = 722 9 | ClientWidth = 1003 10 | OnClose = FormClose 11 | OnCreate = FormCreate 12 | OnShow = FormShow 13 | SessionProperties = 'ConfigBox.ItemIndex;GroupBox1.Width;Height;Left;OpenDialog1.InitialDir;Panel1.Height;PortEdit.Value;SaveDialog1.InitialDir;Top;Width;DomainBox.Text' 14 | LCLVersion = '3.6.0.0' 15 | object GroupBox1: TGroupBox 16 | Left = 0 17 | Height = 702 18 | Top = 0 19 | Width = 272 20 | Align = alLeft 21 | Caption = 'Configurations [vmess/vless/ss/trojan]' 22 | ClientHeight = 684 23 | ClientWidth = 270 24 | TabOrder = 0 25 | object Panel1: TPanel 26 | Left = 0 27 | Height = 54 28 | Top = 0 29 | Width = 270 30 | Align = alTop 31 | BevelOuter = bvNone 32 | ClientHeight = 54 33 | ClientWidth = 270 34 | TabOrder = 0 35 | OnResize = Panel1Resize 36 | object DeleteBtn: TSpeedButton 37 | AnchorSideRight.Side = asrBottom 38 | Left = 6 39 | Height = 36 40 | Top = 8 41 | Width = 85 42 | Caption = 'Delete' 43 | OnClick = DeleteBtnClick 44 | ShowHint = True 45 | ParentShowHint = False 46 | end 47 | object SelAllBtn: TSpeedButton 48 | AnchorSideLeft.Control = DeleteBtn 49 | AnchorSideLeft.Side = asrBottom 50 | Left = 92 51 | Height = 36 52 | Hint = 'Select all' 53 | Top = 8 54 | Width = 36 55 | BorderSpacing.Left = 1 56 | Caption = '*' 57 | OnClick = SelAllBtnClick 58 | ShowHint = True 59 | ParentShowHint = False 60 | end 61 | object PasteBtn: TSpeedButton 62 | AnchorSideRight.Side = asrBottom 63 | Left = 178 64 | Height = 36 65 | Hint = 'Paste from clipboard' 66 | Top = 8 67 | Width = 85 68 | Anchors = [akTop, akRight] 69 | BorderSpacing.Right = 5 70 | Caption = 'Paste' 71 | OnClick = PasteBtnClick 72 | ShowHint = True 73 | ParentShowHint = False 74 | end 75 | end 76 | object Splitter2: TSplitter 77 | Cursor = crVSplit 78 | Left = 0 79 | Height = 6 80 | Top = 54 81 | Width = 270 82 | Align = alTop 83 | ResizeAnchor = akTop 84 | end 85 | object ConfigBox: TCheckListBox 86 | AnchorSideBottom.Control = Image1 87 | Left = 0 88 | Height = 474 89 | Top = 60 90 | Width = 270 91 | Align = alTop 92 | Anchors = [akTop, akLeft, akRight, akBottom] 93 | Font.Height = -13 94 | Font.Name = 'Monospace' 95 | ItemHeight = 0 96 | MultiSelect = True 97 | ParentFont = False 98 | PopupMenu = PopupMenu1 99 | TabOrder = 2 100 | TopIndex = -1 101 | OnClick = ConfigBoxClick 102 | OnClickCheck = ConfigBoxClickCheck 103 | OnDblClick = StartBtnClick 104 | end 105 | object Image1: TImage 106 | AnchorSideLeft.Control = GroupBox1 107 | AnchorSideLeft.Side = asrCenter 108 | AnchorSideBottom.Control = GroupBox1 109 | AnchorSideBottom.Side = asrBottom 110 | Left = 60 111 | Height = 150 112 | Top = 534 113 | Width = 150 114 | Anchors = [akLeft, akBottom] 115 | Stretch = True 116 | end 117 | end 118 | object Splitter1: TSplitter 119 | Left = 272 120 | Height = 702 121 | Top = 0 122 | Width = 4 123 | end 124 | object GroupBox2: TGroupBox 125 | Left = 276 126 | Height = 702 127 | Top = 0 128 | Width = 727 129 | Align = alClient 130 | Caption = 'Management/Logging' 131 | ClientHeight = 684 132 | ClientWidth = 725 133 | TabOrder = 2 134 | object Panel2: TPanel 135 | Left = 0 136 | Height = 54 137 | Top = 0 138 | Width = 725 139 | Align = alTop 140 | BevelOuter = bvNone 141 | ClientHeight = 54 142 | ClientWidth = 725 143 | TabOrder = 0 144 | OnResize = Panel2Resize 145 | object Shape1: TShape 146 | AnchorSideLeft.Side = asrBottom 147 | AnchorSideTop.Control = StopBtn 148 | AnchorSideTop.Side = asrCenter 149 | Left = 8 150 | Height = 12 151 | Top = 20 152 | Width = 12 153 | BorderSpacing.Left = 10 154 | Brush.Color = clYellow 155 | Shape = stCircle 156 | end 157 | object PortEdit: TSpinEdit 158 | AnchorSideLeft.Side = asrBottom 159 | AnchorSideTop.Control = StopBtn 160 | AnchorSideTop.Side = asrCenter 161 | AnchorSideRight.Control = DomainBox 162 | AnchorSideBottom.Side = asrBottom 163 | Left = 105 164 | Height = 37 165 | Hint = '127.0.0.1:Port (SOCKS)'#10'127.0.0.1:8889 (HTTP)' 166 | Top = 8 167 | Width = 91 168 | Anchors = [akTop, akRight] 169 | BorderSpacing.Right = 5 170 | MinValue = 1000 171 | ParentShowHint = False 172 | ShowHint = True 173 | TabOrder = 0 174 | Value = 1080 175 | end 176 | object StopBtn: TSpeedButton 177 | AnchorSideRight.Control = StartBtn 178 | Left = 547 179 | Height = 36 180 | Top = 8 181 | Width = 85 182 | Anchors = [akTop, akRight] 183 | BorderSpacing.Right = 1 184 | Caption = 'Stop' 185 | OnClick = StopBtnClick 186 | end 187 | object StartBtn: TSpeedButton 188 | AnchorSideRight.Side = asrBottom 189 | Left = 633 190 | Height = 36 191 | Top = 8 192 | Width = 85 193 | Anchors = [akTop, akRight] 194 | BorderSpacing.Right = 5 195 | Caption = 'Start' 196 | OnClick = StartBtnClick 197 | end 198 | object ClearBox: TCheckBox 199 | AnchorSideLeft.Control = Shape1 200 | AnchorSideTop.Control = StopBtn 201 | AnchorSideTop.Side = asrCenter 202 | AnchorSideRight.Control = RealityBtn 203 | Left = 416 204 | Height = 32 205 | Hint = 'Clearing Cookies after starting the GUI (Mageia only)' 206 | Top = 10 207 | Width = 66 208 | Anchors = [akTop, akRight] 209 | BorderSpacing.Right = 5 210 | Caption = 'Clear' 211 | ParentShowHint = False 212 | ShowHint = True 213 | TabOrder = 4 214 | OnChange = ClearBoxChange 215 | end 216 | object Label1: TLabel 217 | AnchorSideTop.Control = StopBtn 218 | AnchorSideTop.Side = asrCenter 219 | AnchorSideRight.Control = PortEdit 220 | Left = 73 221 | Height = 17 222 | Top = 18 223 | Width = 29 224 | Anchors = [akTop, akRight] 225 | BorderSpacing.Right = 3 226 | Caption = 'Port:' 227 | ParentColor = False 228 | end 229 | object AutoStartBox: TCheckBox 230 | AnchorSideTop.Control = StopBtn 231 | AnchorSideTop.Side = asrCenter 232 | AnchorSideRight.Control = ClearBox 233 | Left = 349 234 | Height = 32 235 | Hint = 'AutoStart proxy after reboot' 236 | Top = 10 237 | Width = 62 238 | Anchors = [akTop, akRight] 239 | BorderSpacing.Right = 5 240 | Caption = 'Auto' 241 | ParentShowHint = False 242 | ShowHint = True 243 | TabOrder = 3 244 | OnChange = AutoStartBoxChange 245 | end 246 | object SWPBox: TCheckBox 247 | AnchorSideTop.Control = StopBtn 248 | AnchorSideTop.Side = asrCenter 249 | AnchorSideRight.Control = AutoStartBox 250 | Left = 282 251 | Height = 32 252 | Hint = 'System-Wide Proxy:'#10'Budgie, GNOME, Cinnamon, KDE, MATE' 253 | Top = 10 254 | Width = 62 255 | Anchors = [akTop, akRight] 256 | BorderSpacing.Right = 5 257 | Caption = 'SWP' 258 | ParentShowHint = False 259 | ShowHint = True 260 | TabOrder = 2 261 | OnChange = SWPBoxChange 262 | end 263 | object RealityBtn: TSpeedButton 264 | AnchorSideTop.Control = StopBtn 265 | AnchorSideRight.Control = StopBtn 266 | AnchorSideBottom.Control = StopBtn 267 | AnchorSideBottom.Side = asrBottom 268 | Left = 487 269 | Height = 36 270 | Hint = 'REALITY configurations generator (Client-Server)' 271 | Top = 8 272 | Width = 50 273 | Anchors = [akTop, akRight, akBottom] 274 | BorderSpacing.Right = 10 275 | Glyph.Data = { 276 | 360C0000424D360C000000000000360000002800000020000000180000000100 277 | 200000000000000C000064000000640000000000000000000000000000000000 278 | 0000000000000000000000000000000000000000000000000000000000000000 279 | 000000000000B7651F00B7651F0BB7651FC3B6641EFFB6641EFFB5631DFFB463 280 | 1DFFB4631D9FA8531400B3621D00B0611C00B0601A00B0601A32AF601AE5AF5F 281 | 19FFAE5F19FFAD5E18FFAD5E18FFAC5D17D8AB5D1725AB5D1700000000000000 282 | 0000000000000000000000000000000000000000000000000000000000000000 283 | 000000000000B8651F00B8651F0AB8651FC2B7651FFFB6641EFFB6641EFFB563 284 | 1DFFB4631D9FA4510300B4621C00B1611B00B2621C04B1611B98B0601AFFAF60 285 | 1AFFAF5F19FFAE5F19FFAD5E18FBAD5E186CAE5F1900AC5D1700000000000000 286 | 00000000000000000000000000000000000000000000A6A09E00A9A3A400A8A2 287 | A107A7A2A123A6A1A148A79B9472B66E31E0B8651EFFB7651FFFB6641EFFB663 288 | 1DFFB0713BD0A19B9B6EA09A9A499EA0A720B0682941B2611BEBB1611BFFB060 289 | 1AFFAF601AFFAF5F19FFAE5F19BCAD5E1812AE5E180000000000000000000000 290 | 0000000000000000000000000000ABA5A500ABA5A502AAA5A425A9A4A36DA8A3 291 | A2B4A8A2A2E2A7A2A1F8A79E9BFFB5743EFFB9651EFFB8651FFFB7651FFFB763 292 | 1CFFAE794DFFA29C9BFFA19B9BFAA19997E1AE713DDEB2611AFFB2611BFFB161 293 | 1BFFB0601AFFAF601AF1AF5F194AAF5F1900AE5F190000000000000000000000 294 | 000000000000ADA8A600AEAAA800ACA7A628ACA6A58CABA5A5E0AAA5A4FEA9A4 295 | A3FFA9A3A2FFA8A3A2FFA89F9CFFB5753FFFB9651EFFB86620FFB8651FFFB764 296 | 1DFFB07849F0A29D9DD9A19D9EE0A78B77F6B26624FFB3621CFFB2621CFFB261 297 | 1BFFB1601AFFB15F1899B15A0E05B15C11000000000000000000000000000000 298 | 0000AFAAA900AFAAA909AEA9A867ADA8A7DCACA7A6FFACA6A6FFABA6A5FFAAA5 299 | A4FFAAA4A4FFA9A4A3F6A9A09CD0B77138ECBA6620FFB96620FFB86620FFB865 300 | 1FFFB66825ACA98C7624AD7E5849B3692ADAB4631DFFB4631DFFB3621CFFB261 301 | 1BFFAF692DFEA5866E8298ACC6079E9B9D00000000000000000000000000B0AB 302 | AA00B0ABAA11AFABA993AFAAA9F8AEA9A8FFADA8A7FFADA8A7FFACA7A6FFABA6 303 | A5F6AAA5A4B1A9A5A54EB08E741DBB6822C3BB6721FFBA6721FFB96620FFB866 304 | 20FFB8651FE9B7651EC3B7641DDAB6641DFEB5631DFFB4631DFFB4631DF5B361 305 | 1BB7A88162969F9999E29F9999959F9898119F98980000000000B2ADAC00B2AD 306 | AC0CB1ACAB99B0ACAAFDB0ABAAFFAFAAA9FFAEA9A8FFAEA9A8FFADA8A7DDACA7 307 | A65FABA6A50AB4845D00BC68220BBC6822C2BB6822FFBB6721FFBA6721FFB966 308 | 20FFB86620FFB8651FFFB7651FFFB6641EFFB6641EFFB5641EFFB4631DEBB463 309 | 1D96B3652239A09896469F999AD49F99999C9F99990C9F999900C6C4C300B3AE 310 | AD74B2ADACFBB1ADABFFB1ACABFFB0ABAAFFAFAAA9FFAFAAA9D6AEA9A83BB0AB 311 | AA00AEA8A700BD692300BD69230BBD6923C3BC6822FFBB6822FFBB6721FFBA67 312 | 21FFB96620FFB96620FFB8651FFFB7651FFFB6641EFFB6641EFFB5631DFFB463 313 | 1DFFB4631CECB4601875A2948E45A09A9AE0A0999975A1989400B4B0AE33B4AF 314 | AEE0B3AEADFFB2AEACFFB2ADACFFB1ACABFFB0ABAAEFB0ABAA4DB0ACAA00AFAA 315 | A90000000000BD692300BD69230BBD6923C3BD6923FFBC6822FFBB6822FFBB67 316 | 21FFBA6721FCB96620F6B86620F6B8651FF6B7651FFBB6641EFFB6641EFFB563 317 | 1DFFB4631DFFB4631CF7B4611A60A09B9C81A09A9AE1A09A9A33B5B1AF93B5B0 318 | AFFFB4AFAEFFB3AFADFFB3AEADFFB2ADACFFB1ADABA6B0ABAA05B1ACAB000000 319 | 000000000000BE6A2400BE6A240BBE6A24C3BD6923FFBD6923FFBC6822FFBB68 320 | 22FFBB6721BEBA672141B966203FB866203FB7651F5FB7651FDBB6641EFFB664 321 | 1EFFB5641EFFB4631DFFB4621BC0A58F8043A19B9BEDA19B9A94B6B2B0DAB6B1 322 | B0FFB5B1AFFFB4B0AEFFB4AFAEFFB3AEADFFB2AEAD66B3AEAD00B2ADAB000000 323 | 000000000000BF6A2400BF6A240BBF6A24C3BE6A24FFBD6923FFBD6923FFBC68 324 | 22FFBB6822A9BA682202BB682200B7651F00B8651F00B8651F88B7651FFFB664 325 | 1EFFB6641EFFB5641EFFB4631CE7AE784B40A29D9DD6A29C9BDDB7B3B1F9B7B2 326 | B1FFB6B2B0FFB5B1AFFFB5B0AFFFB4AFAEFDB4AFAE56B4AFAE00000000000000 327 | 000000000000C06B2500C06B250BBF6B25C3BF6A24FFBE6A24FFBD6923FFBD69 328 | 23FFBC6822AABB672105BA672103BA672103BA67210DB86620A6B8651FFFB765 329 | 1FFFB6641EFFB6641EFFB5631DEEB0733F43A39E9FCDA39D9CFCB8B4B2FCB8B3 330 | B2FFB7B3B1FFB6B2B0FFB6B1B0FFB5B0AFFFB4B0AF76B4B0AF00B5B0AF000000 331 | 000000000000C16B2500C16B250BC06B25C3BF6B25FFBF6A24FFBE6A24FFBD69 332 | 23FFBD6923E3BC6822ADBB6822ADBB6721ADBA6721C2B96620F7B96620FFB865 333 | 1FFFB7651FFFB6641EFFB6641DDFAD7F5A3FA49F9FDCA49E9DFEB9B5B3E6B9B5 334 | B3FFB8B4B2FFB7B3B1FFB7B2B1FFB6B2B0FFB5B1B0C2B5B1B012B5B1B0000000 335 | 000000000000C16C2600C16C260BC16B25C3C06B25FFBF6B25FFBF6A24FFBE6A 336 | 24FFBD6923FFBD6923FFBC6822FFBB6822FFBB6721FFBA6721FFB96620FFB966 337 | 20FFB8651FFFB7651FFFB7631CA3A79B964EA5A09FF7A59F9EE7BAB6B4ABBAB6 338 | B4FFB9B5B3FFB8B4B2FFB8B3B2FFB7B3B1FFB6B2B0FBB6B2B07BB6B2AF03B6B2 339 | B00000000000C26C2600C26C260BC16C26C3C16C26FFC06B25FFBF6B25FFBF6A 340 | 24FFBE6A24FFBD6923FFBD6923FFBC6822FFBB6822FFBB6721FFBA6721FFB966 341 | 20FFB96620FFB8651FD4B56C2F3AA7A2A3A3A6A1A0FFA6A09FABBBB7B54DBAB7 342 | B5EFBAB6B4FFB9B5B4FFB8B4B3FFB8B4B2FFB7B3B1FFB7B2B1F2B6B2B073B6B2 343 | B009B6B2B000C36D2700C36D270AC26C26BEC26C26FCC16C26F9C06B25F9BF6B 344 | 25F9BF6A24F9BE6A24F9BD6923F9BD6923F9BC6822F9BB6822F9BB6721F6BA67 345 | 21E1B9661F9DB868242FA8A4A56DA8A2A2F7A7A2A1EFA7A1A04DBBB7B607BBB7 346 | B699BBB7B5FFBAB6B5FFB9B6B4FFB9B5B3FFB8B4B2FFB7B3B2FFB7B3B1F7B6B2 347 | B1A2B6B2B02FB4B7BA02C5651803C36C2536C26C2648C16C2647C16B2547C06B 348 | 2547BF6A2447BE6A2447BE692347BD692347BC682247BC672147BC651C3DBC5F 349 | 111EAD9E941AAAA6A780A9A4A3F2A9A3A3FFA8A3A299A7A1A107BCB8B600BCB8 350 | B61FBCB8B6C2BBB7B6FFBAB7B5FFBAB6B4FFB9B5B3FFB8B4B3FFB8B4B2FFB7B3 351 | B1FFB7B2B1E5B6B2B096B6B1B045B3BCC3129DFFFF01A8E3F800000000000000 352 | 00000000000000000000000000007DFFFF00B89AAD00A7C6DB06ACAFB526ACA9 353 | A96CACA7A6CAABA6A5FCAAA5A4FFAAA4A4C2A9A4A31FA9A4A300BDB8B700BCB8 354 | B700BCB8B72BBCB8B6C2BBB8B6FFBBB7B5FFBAB6B4FFB9B5B4FFB9B5B3FFB8B4 355 | B2FFB7B3B2FFB7B3B1FFB6B2B0F5B6B1B0D2B5B1AFA6B4B0AF7EB4AFAE62B3AF 356 | AD52B3AEAD4EB2ADAC52B1ACAB5EB0ACAB73B0ABAA94AFAAA9BEAEA9A8E7ADA8 357 | A7FDADA8A7FFACA7A6FFABA6A5C2ABA5A52BABA6A500ABA5A50000000000BCBA 358 | B900BCB8B700BCB9B71EBCB8B79DBCB8B6F6BBB7B6FFBAB7B5FFBAB6B4FFB9B5 359 | B3FFB8B4B3FFB8B4B2FFB7B3B1FFB6B2B1FFB6B1B0FFB5B1AFFFB4B0AFFEB4AF 360 | AEFCB3AFADFBB2AEADFCB2ADACFEB1ACABFFB0ACAAFFB0ABAAFFAFAAA9FFAEAA 361 | A8FFAEA9A8F6ADA8A79EACA7A61FACA7A600ACA7A60000000000000000000000 362 | 000000000000BCB9B700BDB9B709BCB9B756BCB8B6C3BBB8B6F9BBB7B5FFBAB6 363 | B4FFB9B5B4FFB9B5B3FFB8B4B2FFB7B3B2FFB7B3B1FFB6B2B0FFB5B1B0FFB5B0 364 | AFFFB4B0AEFFB3AFAEFFB3AEADFFB2ADACFFB1ADACFFB1ACABFFB0ABAAF9AFAA 365 | A9C4AFAAA957AEA9A809AEA9A800AEBCB2000000000000000000000000000000 366 | 00000000000000000000BCBAB800BCB7B600BCB9B711BCB8B655BCB8B6A8BBB7 367 | B5E0BAB7B5F9BAB6B4FFB9B5B3FFB8B4B3FFB8B4B2FFB7B3B1FFB6B2B1FFB6B1 368 | B0FFB5B1AFFFB4B0AFFFB4AFAEFFB3AFADFAB2AEACE1B2ADACA8B1ACAB56B0AB 369 | AA12B1ACAB00AFABA90000000000000000000000000000000000000000000000 370 | 000000000000000000000000000000000000C0B8B600BCB8B600BCB8B606BBB8 371 | B629BBB7B560BAB7B597BAB6B4C2B9B5B4DFB9B5B3F0B8B4B2F7B7B3B2F7B7B2 372 | B1F0B6B2B0DFB5B1AFC3B4B0AF97B4AFAE60B3AEAD29B2AEAD06B2AEAC00B8B2 373 | B300000000000000000000000000000000000000000000000000 374 | } 375 | OnClick = RealityBtnClick 376 | ShowHint = True 377 | ParentShowHint = False 378 | end 379 | object DomainBox: TComboBox 380 | AnchorSideTop.Control = StopBtn 381 | AnchorSideTop.Side = asrCenter 382 | AnchorSideRight.Control = SWPBox 383 | AnchorSideBottom.Side = asrBottom 384 | Left = 201 385 | Height = 37 386 | Hint = 'Bypassing domain zones' 387 | Top = 8 388 | Width = 76 389 | Anchors = [akTop, akRight] 390 | BorderSpacing.Right = 5 391 | Font.Height = -13 392 | Font.Name = 'Sans' 393 | Font.Style = [fsBold] 394 | ItemHeight = 0 395 | Items.Strings = ( 396 | 'by' 397 | 'cn' 398 | 'er' 399 | 'ir' 400 | 'pk' 401 | 'ru' 402 | 'sa' 403 | 'so' 404 | 'tm' 405 | 'tr' 406 | 'ua' 407 | 'uz' 408 | ) 409 | ParentFont = False 410 | ParentShowHint = False 411 | ShowHint = True 412 | TabOrder = 1 413 | Text = 'cn' 414 | end 415 | end 416 | object Splitter3: TSplitter 417 | Cursor = crVSplit 418 | Left = 0 419 | Height = 6 420 | Top = 54 421 | Width = 725 422 | Align = alTop 423 | ResizeAnchor = akTop 424 | end 425 | object LogMemo: TMemo 426 | Left = 0 427 | Height = 624 428 | Top = 60 429 | Width = 725 430 | Align = alClient 431 | Font.Height = -12 432 | Font.Name = 'Monospace' 433 | ParentFont = False 434 | ReadOnly = True 435 | ScrollBars = ssVertical 436 | TabOrder = 2 437 | WantReturns = False 438 | end 439 | end 440 | object StaticText1: TStaticText 441 | Left = 0 442 | Height = 20 443 | Top = 702 444 | Width = 1003 445 | Align = alBottom 446 | Caption = 'License: GPLv3 Author: alex_q_2000 (C) 2023 URL: https://github.com/AKotov-dev' 447 | Font.Color = clGray 448 | Font.Height = -11 449 | Font.Name = 'Sans' 450 | ParentFont = False 451 | TabOrder = 3 452 | end 453 | object IniPropStorage1: TIniPropStorage 454 | StoredValues = < 455 | item 456 | Name = 'findex' 457 | Value = '100' 458 | end> 459 | OnRestoreProperties = IniPropStorage1RestoreProperties 460 | Left = 320 461 | Top = 104 462 | end 463 | object PopupMenu1: TPopupMenu 464 | Images = ImageList1 465 | OnPopup = PopupMenu1Popup 466 | Left = 121 467 | Top = 104 468 | object CopyItem: TMenuItem 469 | Caption = 'Copy' 470 | ImageIndex = 0 471 | OnClick = CopyItemClick 472 | end 473 | object Separator1: TMenuItem 474 | Caption = '-' 475 | end 476 | object SaveItem: TMenuItem 477 | Caption = 'Save to file' 478 | ImageIndex = 2 479 | OnClick = SaveItemClick 480 | end 481 | object LoadItem: TMenuItem 482 | Caption = 'Load from file' 483 | ImageIndex = 1 484 | OnClick = LoadItemClick 485 | end 486 | end 487 | object OpenDialog1: TOpenDialog 488 | DefaultExt = '.*.proxy' 489 | Filter = 'XRayGUI files (*.proxy)|*.proxy' 490 | Options = [ofNoNetworkButton, ofEnableSizing] 491 | Left = 64 492 | Top = 176 493 | end 494 | object SaveDialog1: TSaveDialog 495 | DefaultExt = '.*.proxy' 496 | Filter = 'XRayGUI file (*.proxy)|*.proxy' 497 | Options = [ofOverwritePrompt, ofEnableSizing] 498 | Left = 168 499 | Top = 176 500 | end 501 | object ImageList1: TImageList 502 | Left = 208 503 | Top = 104 504 | Bitmap = { 505 | 4C7A030000001000000010000000130400000000000078DAEDD35D4C93571807 506 | F03772B5C2EDB6645920CB2E77B5AB99E904C1AA14615268295018938F02A515 507 | 65F413280205DAD2A201943A758EB81951B74874C28C37F225149A6D0AE342F0 508 | 6250966CC1AC74A55936FF7BCE5B31B016292C4BB6646FF24F9B3CE7779E73DE 509 | 735E8E0B7DBA12B8984E6194A8431825091756B3EDE7A2B98DECBE1D331DFB76 510 | 60934C879B83EFCBEAFBB937B80D1E56E3C7244625FFB576531B6F603578867B 511 | D76571F032168655406F143F07F3B417F61F5D2FC7A0334E848E58C9FCC977BA 512 | 5D86B77EC6BDDA91E7196B1DC70F777DF00C81CDB1D6076DEC0C59BC305D6FCE 513 | F273D03AD6F9605F1A13B7E17E598D1F73DFE2627B59E769CDACC66DF2F09EED 514 | E55FE0D79EDF563C3B9735F767CA99CA09B6E2D9D9DED4EC31B2BEAB776F4BEB 515 | A7B161CE2639E2F3A3B12135DBABD1549BDEF4FE74C44EC1F99A20ECFCFC1C71 516 | ABEF324CA84663B87FE011D8164C94A5F5F1DC8AB1FDF84A84FE0E05A1F17804 517 | 6D0BE705D679E74689B6CF2731FF7AE722CCC35ED8C796230A1BCB0CD981971C 518 | 8B7725FD5EB87FC196C20CB3821BBFB9A30780EDE499BDB35DFFCCFEEFFFC35E 519 | 300013FD2E6D27CCFEDDEFB7A8405ADF502D0F588D721C5715C3DA6C82C55C87 520 | D6A65AB434D6C07CC280A67A3D1A4D3A545614E2884CF87B7AEA5E35008EA551 521 | 230FF8278EE2A7A10A384F9F84CFE75B178F67013D179CE8FBF22A6E7FD5877E 522 | 67061C5AD1D3C329F12AE6DBEBF31170931F54A2FB747B881F1D1DC439B31806 523 | B514B76FF5E1EBB362F847E468D31C7C7AE8C0AE0A87298FBC9A7C39BABBC2F8 524 | 91415C3F2581E918F337781F18CD857F3807EA82F83F1C75E42755E4CB70A6D3 525 | 1EE2DD13E3D0948A50A5CC0D7A673AEF5746B2612C4B84BD4ECE7BBF4B0963D5 526 | 8798A4F133D3539487F87E8AE50126C646E09E1C8741A3C2F41752F239E46541 527 | 5F9B4BBE02810925E6FA8BD07B2A1B97EC325C6A93A2C79A891E4B063E6D4DC7 528 | C596F731DA9319EC3D9A4D3E0B86D2BD68ABC921AF245F8E80AB945242294660 529 | BC1081B123940204EE7F40C9E36DB0F7AA4F087AEA6DD1CB70B1BD129F38D4B8 530 | 6057E1BC4D8973D6727C6C29C3D956059C2DC5E86E2EC2197321AD5B88956129 531 | F48A78D88CD97C6F87291F8FAF1FC6E36B6998BB9A8AB95E11E6AE2463F6CA01 532 | CC5E165292F0E8F3443CFA2C010D9587C84BA02FD9435E46BE0CCDFA7C3C597C 533 | 88279ED53C0866E13B2CF1F93698F96FA02B4FE1BD8EBCD590C57BB32EEFF999 534 | 2D2F2FBF30DA32E633A12B7E0F563D7997024D5A79449685DD8795A10C688B76 535 | D37B93F2EFBC499B1B91F77ABDD02892C98BC9EF8251255EF975AC048D9ADC88 536 | 7A335FAD3808DF3D3114593BFD3999A21ABD326DA5282F8DFF461BEA34385153 537 | 0D93F123D4198EA356770C35DAA3306AD4D057ABA0AB52429CF22E4A653BFD49 538 | BBDFAEFA13A9CD7CB4 539 | } 540 | end 541 | object GetQR: TAsyncProcess 542 | Active = False 543 | Executable = 'bash' 544 | Parameters.Strings = ( 545 | '' 546 | ) 547 | Options = [poWaitOnExit] 548 | Priority = ppNormal 549 | StartupOptions = [] 550 | ShowWindow = swoNone 551 | WindowColumns = 0 552 | WindowHeight = 0 553 | WindowLeft = 0 554 | WindowRows = 0 555 | WindowTop = 0 556 | WindowWidth = 0 557 | FillAttribute = 0 558 | Left = 320 559 | Top = 176 560 | end 561 | end 562 | -------------------------------------------------------------------------------- /xraygui/unit1.lrj: -------------------------------------------------------------------------------- 1 | {"version":1,"strings":[ 2 | {"hash":227073225,"name":"tmainform.caption","sourcebytes":[88,82,97,121,71,85,73],"value":"XRayGUI"}, 3 | {"hash":66249581,"name":"tmainform.groupbox1.caption","sourcebytes":[67,111,110,102,105,103,117,114,97,116,105,111,110,115,32,91,118,109,101,115,115,47,118,108,101,115,115,47,115,115,47,116,114,111,106,97,110,93],"value":"Configurations [vmess/vless/ss/trojan]"}, 4 | {"hash":78392485,"name":"tmainform.deletebtn.caption","sourcebytes":[68,101,108,101,116,101],"value":"Delete"}, 5 | {"hash":195296268,"name":"tmainform.selallbtn.hint","sourcebytes":[83,101,108,101,99,116,32,97,108,108],"value":"Select all"}, 6 | {"hash":42,"name":"tmainform.selallbtn.caption","sourcebytes":[42],"value":"*"}, 7 | {"hash":27149092,"name":"tmainform.pastebtn.hint","sourcebytes":[80,97,115,116,101,32,102,114,111,109,32,99,108,105,112,98,111,97,114,100],"value":"Paste from clipboard"}, 8 | {"hash":5671589,"name":"tmainform.pastebtn.caption","sourcebytes":[80,97,115,116,101],"value":"Paste"}, 9 | {"hash":240766647,"name":"tmainform.groupbox2.caption","sourcebytes":[77,97,110,97,103,101,109,101,110,116,47,76,111,103,103,105,110,103],"value":"Management/Logging"}, 10 | {"hash":178241657,"name":"tmainform.portedit.hint","sourcebytes":[49,50,55,46,48,46,48,46,49,58,80,111,114,116,32,40,83,79,67,75,83,41,10,49,50,55,46,48,46,48,46,49,58,56,56,56,57,32,40,72,84,84,80,41],"value":"127.0.0.1:Port (SOCKS)\n127.0.0.1:8889 (HTTP)"}, 11 | {"hash":371552,"name":"tmainform.stopbtn.caption","sourcebytes":[83,116,111,112],"value":"Stop"}, 12 | {"hash":5941396,"name":"tmainform.startbtn.caption","sourcebytes":[83,116,97,114,116],"value":"Start"}, 13 | {"hash":138424089,"name":"tmainform.clearbox.hint","sourcebytes":[67,108,101,97,114,105,110,103,32,67,111,111,107,105,101,115,32,97,102,116,101,114,32,115,116,97,114,116,105,110,103,32,116,104,101,32,71,85,73,32,40,77,97,103,101,105,97,32,111,110,108,121,41],"value":"Clearing Cookies after starting the GUI (Mageia only)"}, 14 | {"hash":4860802,"name":"tmainform.clearbox.caption","sourcebytes":[67,108,101,97,114],"value":"Clear"}, 15 | {"hash":5728634,"name":"tmainform.label1.caption","sourcebytes":[80,111,114,116,58],"value":"Port:"}, 16 | {"hash":35738692,"name":"tmainform.autostartbox.hint","sourcebytes":[65,117,116,111,83,116,97,114,116,32,112,114,111,120,121,32,97,102,116,101,114,32,114,101,98,111,111,116],"value":"AutoStart proxy after reboot"}, 17 | {"hash":298159,"name":"tmainform.autostartbox.caption","sourcebytes":[65,117,116,111],"value":"Auto"}, 18 | {"hash":177896581,"name":"tmainform.swpbox.hint","sourcebytes":[83,121,115,116,101,109,45,87,105,100,101,32,80,114,111,120,121,58,10,66,117,100,103,105,101,44,32,71,78,79,77,69,44,32,67,105,110,110,97,109,111,110,44,32,75,68,69,44,32,77,65,84,69],"value":"System-Wide Proxy:\nBudgie, GNOME, Cinnamon, KDE, MATE"}, 19 | {"hash":22720,"name":"tmainform.swpbox.caption","sourcebytes":[83,87,80],"value":"SWP"}, 20 | {"hash":84010505,"name":"tmainform.realitybtn.hint","sourcebytes":[82,69,65,76,73,84,89,32,99,111,110,102,105,103,117,114,97,116,105,111,110,115,32,103,101,110,101,114,97,116,111,114,32,40,67,108,105,101,110,116,45,83,101,114,118,101,114,41],"value":"REALITY configurations generator (Client-Server)"}, 21 | {"hash":242882515,"name":"tmainform.domainbox.hint","sourcebytes":[66,121,112,97,115,115,105,110,103,32,100,111,109,97,105,110,32,122,111,110,101,115],"value":"Bypassing domain zones"}, 22 | {"hash":1694,"name":"tmainform.domainbox.text","sourcebytes":[99,110],"value":"cn"}, 23 | {"hash":250918134,"name":"tmainform.statictext1.caption","sourcebytes":[76,105,99,101,110,115,101,58,32,71,80,76,118,51,32,32,32,65,117,116,104,111,114,58,32,97,108,101,120,95,113,95,50,48,48,48,32,40,67,41,32,50,48,50,51,32,32,32,85,82,76,58,32,104,116,116,112,115,58,47,47,103,105,116,104,117,98,46,99,111,109,47,65,75,111,116,111,118,45,100,101,118],"value":"License: GPLv3 Author: alex_q_2000 (C) 2023 URL: https://github.com/AKotov-dev"}, 24 | {"hash":304761,"name":"tmainform.copyitem.caption","sourcebytes":[67,111,112,121],"value":"Copy"}, 25 | {"hash":9308581,"name":"tmainform.saveitem.caption","sourcebytes":[83,97,118,101,32,116,111,32,102,105,108,101],"value":"Save to file"}, 26 | {"hash":8431845,"name":"tmainform.loaditem.caption","sourcebytes":[76,111,97,100,32,102,114,111,109,32,102,105,108,101],"value":"Load from file"} 27 | ]} 28 | -------------------------------------------------------------------------------- /xraygui/update_trd.pas: -------------------------------------------------------------------------------- 1 | unit update_trd; 2 | 3 | {$mode ObjFPC}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, Forms, Controls, SysUtils, Process; 9 | 10 | type 11 | CheckUpdate = class(TThread) 12 | private 13 | 14 | { Private declarations } 15 | protected 16 | S: TStringList; 17 | 18 | procedure Execute; override; 19 | 20 | end; 21 | 22 | implementation 23 | 24 | uses unit1; 25 | 26 | { TRD } 27 | 28 | procedure CheckUpdate.Execute; 29 | var 30 | UpdateProcess: TProcess; 31 | begin 32 | S := TStringList.Create; 33 | FreeOnTerminate := True; //Уничтожать по завершении 34 | try 35 | UpdateProcess := TProcess.Create(nil); 36 | 37 | UpdateProcess.Executable := 'bash'; 38 | UpdateProcess.Parameters.Add('-c'); 39 | UpdateProcess.Options := [poUsePipes, poWaitOnExit]; 40 | 41 | UpdateProcess.Parameters.Add( 42 | '[[ $(systemctl is-active xray-update) == active ]] || systemctl --user start xray-update'); 43 | 44 | UpdateProcess.Execute; 45 | finally 46 | S.Free; 47 | UpdateProcess.Free; 48 | end; 49 | end; 50 | 51 | end. 52 | -------------------------------------------------------------------------------- /xraygui/xraygui: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/xraygui -------------------------------------------------------------------------------- /xraygui/xraygui.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/xraygui.ico -------------------------------------------------------------------------------- /xraygui/xraygui.lpi: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <CONFIG> 3 | <ProjectOptions> 4 | <Version Value="12"/> 5 | <General> 6 | <SessionStorage Value="InProjectDir"/> 7 | <Title Value="XRayGUI v2.5"/> 8 | <Scaled Value="True"/> 9 | <ResourceType Value="res"/> 10 | <UseXPManifest Value="True"/> 11 | <XPManifest> 12 | <DpiAware Value="True"/> 13 | </XPManifest> 14 | <Icon Value="0"/> 15 | </General> 16 | <i18n> 17 | <EnableI18N Value="True"/> 18 | <OutDir Value="languages"/> 19 | </i18n> 20 | <BuildModes> 21 | <Item Name="Default" Default="True"/> 22 | <Item Name="Debug"> 23 | <CompilerOptions> 24 | <Version Value="11"/> 25 | <Target> 26 | <Filename Value="xraygui"/> 27 | </Target> 28 | <SearchPaths> 29 | <IncludeFiles Value="$(ProjOutDir)"/> 30 | <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> 31 | </SearchPaths> 32 | <Parsing> 33 | <SyntaxOptions> 34 | <IncludeAssertionCode Value="True"/> 35 | </SyntaxOptions> 36 | </Parsing> 37 | <CodeGeneration> 38 | <Checks> 39 | <IOChecks Value="True"/> 40 | <RangeChecks Value="True"/> 41 | <OverflowChecks Value="True"/> 42 | <StackChecks Value="True"/> 43 | </Checks> 44 | <VerifyObjMethodCallValidity Value="True"/> 45 | </CodeGeneration> 46 | <Linking> 47 | <Debugging> 48 | <DebugInfoType Value="dsDwarf3"/> 49 | <UseHeaptrc Value="True"/> 50 | <TrashVariables Value="True"/> 51 | <UseExternalDbgSyms Value="True"/> 52 | </Debugging> 53 | <Options> 54 | <Win32> 55 | <GraphicApplication Value="True"/> 56 | </Win32> 57 | </Options> 58 | </Linking> 59 | </CompilerOptions> 60 | </Item> 61 | </BuildModes> 62 | <PublishOptions> 63 | <Version Value="2"/> 64 | <UseFileFilters Value="True"/> 65 | </PublishOptions> 66 | <RunParams> 67 | <FormatVersion Value="2"/> 68 | </RunParams> 69 | <RequiredPackages> 70 | <Item> 71 | <PackageName Value="LCL"/> 72 | </Item> 73 | </RequiredPackages> 74 | <Units> 75 | <Unit> 76 | <Filename Value="xraygui.pas"/> 77 | <IsPartOfProject Value="True"/> 78 | </Unit> 79 | <Unit> 80 | <Filename Value="unit1.pas"/> 81 | <IsPartOfProject Value="True"/> 82 | <ComponentName Value="MainForm"/> 83 | <HasResources Value="True"/> 84 | <ResourceBaseClass Value="Form"/> 85 | <UnitName Value="Unit1"/> 86 | </Unit> 87 | <Unit> 88 | <Filename Value="start_trd.pas"/> 89 | <IsPartOfProject Value="True"/> 90 | </Unit> 91 | <Unit> 92 | <Filename Value="portscan_trd.pas"/> 93 | <IsPartOfProject Value="True"/> 94 | </Unit> 95 | <Unit> 96 | <Filename Value="update_trd.pas"/> 97 | <IsPartOfProject Value="True"/> 98 | </Unit> 99 | <Unit> 100 | <Filename Value="reality_gen.pas"/> 101 | <IsPartOfProject Value="True"/> 102 | <ComponentName Value="RealityForm"/> 103 | <HasResources Value="True"/> 104 | <ResourceBaseClass Value="Form"/> 105 | </Unit> 106 | </Units> 107 | </ProjectOptions> 108 | <CompilerOptions> 109 | <Version Value="11"/> 110 | <Target> 111 | <Filename Value="xraygui"/> 112 | </Target> 113 | <SearchPaths> 114 | <IncludeFiles Value="$(ProjOutDir)"/> 115 | <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> 116 | </SearchPaths> 117 | <Linking> 118 | <Options> 119 | <Win32> 120 | <GraphicApplication Value="True"/> 121 | </Win32> 122 | </Options> 123 | </Linking> 124 | </CompilerOptions> 125 | <Debugging> 126 | <Exceptions> 127 | <Item> 128 | <Name Value="EAbort"/> 129 | </Item> 130 | <Item> 131 | <Name Value="ECodetoolError"/> 132 | </Item> 133 | <Item> 134 | <Name Value="EFOpenError"/> 135 | </Item> 136 | </Exceptions> 137 | </Debugging> 138 | </CONFIG> 139 | -------------------------------------------------------------------------------- /xraygui/xraygui.lps: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <CONFIG> 3 | <ProjectSession> 4 | <Version Value="12"/> 5 | <BuildModes Active="Release"> 6 | <Item Name="Release"> 7 | <CompilerOptions> 8 | <Version Value="11"/> 9 | <Target> 10 | <Filename Value="xraygui"/> 11 | </Target> 12 | <SearchPaths> 13 | <IncludeFiles Value="$(ProjOutDir)"/> 14 | <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> 15 | </SearchPaths> 16 | <CodeGeneration> 17 | <SmartLinkUnit Value="True"/> 18 | <Optimizations> 19 | <OptimizationLevel Value="3"/> 20 | </Optimizations> 21 | </CodeGeneration> 22 | <Linking> 23 | <Debugging> 24 | <GenerateDebugInfo Value="False"/> 25 | <DebugInfoType Value="dsDwarf2"/> 26 | </Debugging> 27 | <LinkSmart Value="True"/> 28 | <Options> 29 | <Win32> 30 | <GraphicApplication Value="True"/> 31 | </Win32> 32 | </Options> 33 | </Linking> 34 | </CompilerOptions> 35 | </Item> 36 | </BuildModes> 37 | <Units> 38 | <Unit> 39 | <Filename Value="xraygui.pas"/> 40 | <IsPartOfProject Value="True"/> 41 | <EditorIndex Value="-1"/> 42 | <CursorPos X="19"/> 43 | <UsageCount Value="83"/> 44 | </Unit> 45 | <Unit> 46 | <Filename Value="unit1.pas"/> 47 | <IsPartOfProject Value="True"/> 48 | <ComponentName Value="MainForm"/> 49 | <HasResources Value="True"/> 50 | <ResourceBaseClass Value="Form"/> 51 | <UnitName Value="Unit1"/> 52 | <IsVisibleTab Value="True"/> 53 | <CursorPos X="14"/> 54 | <UsageCount Value="83"/> 55 | <Loaded Value="True"/> 56 | <LoadedDesigner Value="True"/> 57 | </Unit> 58 | <Unit> 59 | <Filename Value="start_trd.pas"/> 60 | <IsPartOfProject Value="True"/> 61 | <EditorIndex Value="-1"/> 62 | <TopLine Value="14"/> 63 | <CursorPos X="19"/> 64 | <UsageCount Value="82"/> 65 | </Unit> 66 | <Unit> 67 | <Filename Value="portscan_trd.pas"/> 68 | <IsPartOfProject Value="True"/> 69 | <EditorIndex Value="-1"/> 70 | <CursorPos X="21"/> 71 | <UsageCount Value="62"/> 72 | </Unit> 73 | <Unit> 74 | <Filename Value="update_trd.pas"/> 75 | <IsPartOfProject Value="True"/> 76 | <EditorIndex Value="-1"/> 77 | <CursorPos X="20"/> 78 | <UsageCount Value="56"/> 79 | </Unit> 80 | <Unit> 81 | <Filename Value="reality_gen.pas"/> 82 | <IsPartOfProject Value="True"/> 83 | <ComponentName Value="RealityForm"/> 84 | <HasResources Value="True"/> 85 | <ResourceBaseClass Value="Form"/> 86 | <EditorIndex Value="-1"/> 87 | <CursorPos X="19"/> 88 | <UsageCount Value="33"/> 89 | </Unit> 90 | </Units> 91 | <JumpHistory HistoryIndex="29"> 92 | <Position> 93 | <Filename Value="unit1.pas"/> 94 | <Caret Line="1363" Column="29" TopLine="1360"/> 95 | </Position> 96 | <Position> 97 | <Filename Value="unit1.pas"/> 98 | <Caret Column="13"/> 99 | </Position> 100 | <Position> 101 | <Filename Value="unit1.pas"/> 102 | <Caret Line="1638" TopLine="1628"/> 103 | </Position> 104 | <Position> 105 | <Filename Value="unit1.pas"/> 106 | <Caret Line="1701" Column="19" TopLine="1699"/> 107 | </Position> 108 | <Position> 109 | <Filename Value="unit1.pas"/> 110 | <Caret Line="1634" Column="23" TopLine="1629"/> 111 | </Position> 112 | <Position> 113 | <Filename Value="unit1.pas"/> 114 | <Caret Line="1702" TopLine="1700"/> 115 | </Position> 116 | <Position> 117 | <Filename Value="unit1.pas"/> 118 | <Caret Line="1633" Column="32" TopLine="1628"/> 119 | </Position> 120 | <Position> 121 | <Filename Value="unit1.pas"/> 122 | <Caret Line="1584" Column="27" TopLine="1561"/> 123 | </Position> 124 | <Position> 125 | <Filename Value="unit1.pas"/> 126 | <Caret Line="1701" Column="3" TopLine="1701"/> 127 | </Position> 128 | <Position> 129 | <Filename Value="unit1.pas"/> 130 | <Caret Line="1700" Column="3" TopLine="1700"/> 131 | </Position> 132 | <Position> 133 | <Filename Value="unit1.pas"/> 134 | <Caret Line="1646" Column="7" TopLine="1630"/> 135 | </Position> 136 | <Position> 137 | <Filename Value="unit1.pas"/> 138 | <Caret Line="1556" Column="3" TopLine="1536"/> 139 | </Position> 140 | <Position> 141 | <Filename Value="unit1.pas"/> 142 | <Caret Line="1649" Column="10" TopLine="1630"/> 143 | </Position> 144 | <Position> 145 | <Filename Value="unit1.pas"/> 146 | <Caret Line="1648" Column="7" TopLine="1637"/> 147 | </Position> 148 | <Position> 149 | <Filename Value="unit1.pas"/> 150 | <Caret Line="1647" TopLine="1633"/> 151 | </Position> 152 | <Position> 153 | <Filename Value="unit1.pas"/> 154 | <Caret Column="13"/> 155 | </Position> 156 | <Position> 157 | <Filename Value="unit1.pas"/> 158 | <Caret Line="1633" Column="36" TopLine="1585"/> 159 | </Position> 160 | <Position> 161 | <Filename Value="unit1.pas"/> 162 | <Caret Line="1577" Column="39" TopLine="1566"/> 163 | </Position> 164 | <Position> 165 | <Filename Value="unit1.pas"/> 166 | <Caret Line="1569" Column="163" TopLine="1562"/> 167 | </Position> 168 | <Position> 169 | <Filename Value="unit1.pas"/> 170 | <Caret Line="1562" TopLine="1551"/> 171 | </Position> 172 | <Position> 173 | <Filename Value="unit1.pas"/> 174 | <Caret Line="1721" Column="70" TopLine="1715"/> 175 | </Position> 176 | <Position> 177 | <Filename Value="unit1.pas"/> 178 | <Caret Line="1711" Column="52" TopLine="1670"/> 179 | </Position> 180 | <Position> 181 | <Filename Value="unit1.pas"/> 182 | <Caret Line="1183" Column="53" TopLine="1181"/> 183 | </Position> 184 | <Position> 185 | <Filename Value="unit1.pas"/> 186 | <Caret Line="1324" Column="41" TopLine="1298"/> 187 | </Position> 188 | <Position> 189 | <Filename Value="unit1.pas"/> 190 | <Caret Line="131" Column="85" TopLine="127"/> 191 | </Position> 192 | <Position> 193 | <Filename Value="unit1.pas"/> 194 | <Caret Line="971" Column="27" TopLine="947"/> 195 | </Position> 196 | <Position> 197 | <Filename Value="unit1.pas"/> 198 | <Caret Line="1726" Column="40" TopLine="1654"/> 199 | </Position> 200 | <Position> 201 | <Filename Value="unit1.pas"/> 202 | <Caret Line="999" Column="43" TopLine="980"/> 203 | </Position> 204 | <Position> 205 | <Filename Value="unit1.pas"/> 206 | <Caret Line="1564" Column="3" TopLine="1561"/> 207 | </Position> 208 | <Position> 209 | <Filename Value="unit1.pas"/> 210 | <Caret Line="18" Column="45"/> 211 | </Position> 212 | </JumpHistory> 213 | <RunParams> 214 | <FormatVersion Value="2"/> 215 | <Modes ActiveMode=""/> 216 | </RunParams> 217 | </ProjectSession> 218 | </CONFIG> 219 | -------------------------------------------------------------------------------- /xraygui/xraygui.pas: -------------------------------------------------------------------------------- 1 | program xraygui; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | uses 6 | {$IFDEF UNIX} 7 | cthreads, 8 | {$ENDIF} {$IFDEF HASAMIGA} 9 | athreads, 10 | {$ENDIF} 11 | Process, 12 | Classes, 13 | Dialogs, 14 | Interfaces, // this includes the LCL widgetset 15 | Forms, 16 | Unit1, 17 | start_trd, 18 | portscan_trd, 19 | update_trd, reality_gen { you can add units after this }; 20 | 21 | {$R *.res} 22 | 23 | //--- Определяем, запущена ли копия программы 24 | var 25 | PID: TStringList; 26 | ExProcess: TProcess; 27 | 28 | begin 29 | ExProcess := TProcess.Create(nil); 30 | PID := TStringList.Create; 31 | try 32 | ExProcess.Executable := 'bash'; 33 | ExProcess.Parameters.Add('-c'); 34 | ExProcess.Parameters.Add('pidof xraygui'); //Имя приложения 35 | ExProcess.Options := ExProcess.Options + [poUsePipes]; 36 | 37 | ExProcess.Execute; 38 | PID.LoadFromStream(ExProcess.Output); 39 | 40 | finally 41 | ExProcess.Free; 42 | end; 43 | 44 | //Количество запущенных копий > 1 = не запускать новый экземпляр 45 | if Pos(' ', PID.Text) <> 0 then //пробел = более одного pid 46 | begin 47 | MessageDlg(SAppRunning, mtWarning, [mbOK], 0); 48 | PID.Free; 49 | Application.Free; 50 | Halt(1); 51 | end; 52 | PID.Free; 53 | 54 | //--- 55 | 56 | RequireDerivedFormResource := True; 57 | Application.Title:='XRayGUI v2.5'; 58 | Application.Scaled:=True; 59 | Application.Initialize; 60 | Application.CreateForm(TMainForm, MainForm); 61 | Application.CreateForm(TRealityForm, RealityForm); 62 | Application.Run; 63 | end. 64 | -------------------------------------------------------------------------------- /xraygui/xraygui.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AKotov-dev/XRayGUI/1944bdfb038195e55c72eb1bae131e26e841a31e/xraygui/xraygui.res --------------------------------------------------------------------------------