Skip to content

Commit e3d5c44

Browse files
Merge pull request #173 from InvisibleManVPN/develop
InvisibleMan XRay version 3.2.5
2 parents 16daea4 + 227b5a2 commit e3d5c44

17 files changed

Lines changed: 317 additions & 319 deletions

File tree

InvisibleMan-XRay/App.xaml.cs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using System.Windows;
1+
using System;
2+
using System.Windows;
3+
using Microsoft.Win32;
24

35
namespace InvisibleManXRay
46
{
@@ -18,6 +20,7 @@ protected override void OnStartup(StartupEventArgs e)
1820
InitializeWindowFactory();
1921
InitializeMainWindow();
2022
HandlePipes();
23+
HandleExitingEvents();
2124

2225
void InitializeAppManager()
2326
{
@@ -49,7 +52,26 @@ void HandlePipes()
4952
PipeManager.ListenForPipes();
5053
}
5154

55+
void HandleExitingEvents()
56+
{
57+
AppDomain.CurrentDomain.ProcessExit += (sender, e) => CleanupBeforeExit();
58+
SystemEvents.SessionEnded += (sender, e) => CleanupBeforeExit();
59+
}
60+
5261
bool IsThereAnyArg() => e.Args.Length != 0;
5362
}
63+
64+
protected override void OnExit(ExitEventArgs e)
65+
{
66+
AppDomain.CurrentDomain.ProcessExit -= (sender, e) => CleanupBeforeExit();
67+
SystemEvents.SessionEnded -= (sender, e) => CleanupBeforeExit();
68+
69+
base.OnExit(e);
70+
}
71+
72+
void CleanupBeforeExit()
73+
{
74+
appManager.Core.DisableMode();
75+
}
5476
}
5577
}

InvisibleMan-XRay/Assets/Localization/en-US.xaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@
8383
<system:String x:Key="Lang.Window.Settings.Basic.SendAnalyticsPart2">Analytics</system:String>
8484
<system:String x:Key="Lang.Window.Settings.Basic.SendAnalyticsPart3">events</system:String>
8585
<system:String x:Key="Lang.Window.Settings.Basic.RunAtStartup">Run automatically at startup</system:String>
86+
<system:String x:Key="Lang.Window.Settings.Basic.StartHidden">Hide window on launch</system:String>
87+
<system:String x:Key="Lang.Window.Settings.Basic.AutoConnect">Auto connect on launch</system:String>
8688
<system:String x:Key="Lang.Window.Settings.Port.Proxy">Proxy port</system:String>
8789
<system:String x:Key="Lang.Window.Settings.Port.TUN">TUN port</system:String>
8890
<system:String x:Key="Lang.Window.Settings.Port.Test">Test port</system:String>

InvisibleMan-XRay/Assets/Localization/fa-IR.xaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,12 @@
7979
<system:String x:Key="Lang.Window.Settings.Basic.Protocol">پروتکل</system:String>
8080
<system:String x:Key="Lang.Window.Settings.Basic.UseSystemProxy">استفاده از پراکسی سیستم</system:String>
8181
<system:String x:Key="Lang.Window.Settings.Basic.EnbleUdp">UDP فعال کردن</system:String>
82-
<system:String x:Key="Lang.Window.Settings.Basic.SendAnalyticsPart1">اجازه ارسال ایونت برای</system:String>
82+
<system:String x:Key="Lang.Window.Settings.Basic.SendAnalyticsPart1">ارسال ایونت برای</system:String>
8383
<system:String x:Key="Lang.Window.Settings.Basic.SendAnalyticsPart2">تجزیه و تحلیل</system:String>
8484
<system:String x:Key="Lang.Window.Settings.Basic.SendAnalyticsPart3">داده‌ها</system:String>
8585
<system:String x:Key="Lang.Window.Settings.Basic.RunAtStartup">اجرای خودکار در هنگام راه‌اندازی سیستم</system:String>
86+
<system:String x:Key="Lang.Window.Settings.Basic.StartHidden">پنهان کردن پنجره هنگام راه‌اندازی</system:String>
87+
<system:String x:Key="Lang.Window.Settings.Basic.AutoConnect">اتصال خودکار هنگام راه‌اندازی</system:String>
8688
<system:String x:Key="Lang.Window.Settings.Port.Proxy">پورت پراکسی</system:String>
8789
<system:String x:Key="Lang.Window.Settings.Port.TUN">TUN پورت</system:String>
8890
<system:String x:Key="Lang.Window.Settings.Port.Test">پورت تست</system:String>

InvisibleMan-XRay/Assets/Localization/ru-RU.xaml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
<FlowDirection x:Key="Lang.Direction">LeftToRight</FlowDirection>
66

7-
<system:String x:Key="Lang.Run">Пуск</system:String>
8-
<system:String x:Key="Lang.Stop">Стоп</system:String>
9-
<system:String x:Key="Lang.Cancel">Отмена</system:String>
7+
<system:String x:Key="Lang.Run">ЗАПУСК</system:String>
8+
<system:String x:Key="Lang.Stop">СТОП</system:String>
9+
<system:String x:Key="Lang.Cancel">ОТМЕНА</system:String>
1010

1111
<system:String x:Key="Lang.Status.Stopped">Не подключено</system:String>
1212
<system:String x:Key="Lang.Status.Running">Подключено</system:String>
@@ -81,7 +81,10 @@
8181
<system:String x:Key="Lang.Window.Settings.Basic.EnbleUdp">Включить UDP</system:String>
8282
<system:String x:Key="Lang.Window.Settings.Basic.SendAnalyticsPart1">Разрешить отправку</system:String>
8383
<system:String x:Key="Lang.Window.Settings.Basic.SendAnalyticsPart2">аналитики</system:String>
84+
<system:String x:Key="Lang.Window.Settings.Basic.SendAnalyticsPart3" xml:space="preserve">&#32;</system:String>
8485
<system:String x:Key="Lang.Window.Settings.Basic.RunAtStartup">Автозапуск при старте системы</system:String>
86+
<system:String x:Key="Lang.Window.Settings.Basic.StartHidden">Скрывать окно при запуске</system:String>
87+
<system:String x:Key="Lang.Window.Settings.Basic.AutoConnect">Автосоединение при запуске</system:String>
8588
<system:String x:Key="Lang.Window.Settings.Port.Proxy">Порт прокси</system:String>
8689
<system:String x:Key="Lang.Window.Settings.Port.TUN">Порт TUN</system:String>
8790
<system:String x:Key="Lang.Window.Settings.Port.Test">Порт тестирования</system:String>
@@ -144,4 +147,4 @@
144147
<system:String x:Key="Lang.Message.UnsopportedConfigLink" xml:space="preserve">Эта ссылка не поддерживается.&#10;Попробуйте другую ссылку на конфигурацию.</system:String>
145148
<system:String x:Key="Lang.Message.UnsopportedSubscriptionLink" xml:space="preserve">Эта ссылка не поддерживается.&#10;Попробуйте другую ссылку на подписку.</system:String>
146149
<system:String x:Key="Lang.Message.NoLogFile" xml:space="preserve">Файл лога для этой конфигурации отсутствует.&#10;Вы можете управлять логами через меню настроек.</system:String>
147-
</ResourceDictionary>
150+
</ResourceDictionary>

InvisibleMan-XRay/Factories/WindowFactory.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ public MainWindow CreateMainWindow()
3535
MainWindow mainWindow = new MainWindow();
3636
mainWindow.Setup(
3737
isNeedToShowPolicyWindow: IsNeedToShowPolicyWindow,
38+
shouldStartHidden: ShouldStartHidden,
39+
isNeedToAutoConnect: IsNeedToAutoConnect,
3840
getConfig: configHandler.GetCurrentConfig,
3941
loadConfig: core.LoadConfig,
4042
enableMode: core.EnableMode,
@@ -58,6 +60,10 @@ public MainWindow CreateMainWindow()
5860
return mainWindow;
5961

6062
bool IsNeedToShowPolicyWindow() => settingsHandler.UserSettings.GetClientId() == "";
63+
64+
bool ShouldStartHidden() => settingsHandler.UserSettings.GetStartHiddenEnabled();
65+
66+
bool IsNeedToAutoConnect() => settingsHandler.UserSettings.GetAutoConnectEnabled();
6167
}
6268

6369
public SettingsWindow CreateSettingsWindow()
@@ -74,6 +80,8 @@ public SettingsWindow CreateSettingsWindow()
7480
getSystemProxyUsed: settingsHandler.UserSettings.GetSystemProxyUsed,
7581
getUdpEnabled: settingsHandler.UserSettings.GetUdpEnabled,
7682
getRunningAtStartupEnabled: settingsHandler.UserSettings.GetRunningAtStartupEnabled,
83+
getStartHiddenEnabled: settingsHandler.UserSettings.GetStartHiddenEnabled,
84+
getAutoConnectEnabled: settingsHandler.UserSettings.GetAutoConnectEnabled,
7785
getSendingAnalyticsEnabled: settingsHandler.UserSettings.GetSendingAnalyticsEnabled,
7886
getProxyPort: settingsHandler.UserSettings.GetProxyPort,
7987
getTunPort: settingsHandler.UserSettings.GetTunPort,

InvisibleMan-XRay/Handlers/SettingsHandler.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ public void UpdateUserSettings(UserSettings userSettings)
2828
this.userSettings.IsSystemProxyUse = userSettings.IsSystemProxyUse;
2929
this.userSettings.IsUdpEnable = userSettings.IsUdpEnable;
3030
this.userSettings.IsRunningAtStartup = userSettings.IsRunningAtStartup;
31+
this.userSettings.IsStartHidden = userSettings.IsStartHidden;
32+
this.userSettings.IsAutoConnect = userSettings.IsAutoConnect;
3133
this.userSettings.IsSendingAnalytics = userSettings.IsSendingAnalytics;
3234
this.userSettings.ProxyPort = userSettings.ProxyPort;
3335
this.userSettings.TunPort = userSettings.TunPort;

InvisibleMan-XRay/InvisibleMan-XRay.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
<Product>Invisible Man XRay</Product>
99
<PackageId>Invisible Man XRay</PackageId>
1010
<Company>Invisible Man</Company>
11-
<Copyright>Copyright (C) 2024 Invisible Man</Copyright>
12-
<Version>2.6.3.0</Version>
13-
<AssemblyVersion>2.6.3.0</AssemblyVersion>
11+
<Copyright>Copyright (C) 2025 Invisible Man</Copyright>
12+
<Version>3.2.5.0</Version>
13+
<AssemblyVersion>3.2.5.0</AssemblyVersion>
1414
<Nullable>enable</Nullable>
1515
<NoWarn>0108;8600;8601;8602;8603;8604;8618;8625;8629;8762</NoWarn>
1616
<UseWPF>true</UseWPF>

InvisibleMan-XRay/Managers/AppManager.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace InvisibleManXRay.Managers
66
{
7+
using Core;
78
using Initializers;
89
using Factories;
910
using Handlers;
@@ -17,6 +18,7 @@ public class AppManager
1718
private ServicesInitializer servicesInitializer;
1819
private FactoriesInitializer factoriesInitializer;
1920

21+
public InvisibleManXRayCore Core => coreInitializer.Core;
2022
public WindowFactory WindowFactory => factoriesInitializer.WindowFactory;
2123
public HandlersManager HandlersManager => handlersInitializer.HandlersManager;
2224

@@ -43,6 +45,7 @@ public void Initialize()
4345
SetupServices();
4446
SetupCore();
4547
SetupFactories();
48+
DisableModeByDefault();
4649
}
4750

4851
private void AvoidRunningMultipleInstances()
@@ -140,5 +143,10 @@ private void SetupFactories()
140143
handlersManager: handlersInitializer.HandlersManager
141144
);
142145
}
146+
147+
private void DisableModeByDefault()
148+
{
149+
coreInitializer.Core.DisableMode();
150+
}
143151
}
144152
}

InvisibleMan-XRay/Managers/Initializers/HandlersInitializer.cs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,12 @@ void SetupNotifyHandler()
101101

102102
void CloseApplication()
103103
{
104-
core.DisableMode();
105104
Application.Current.Shutdown();
106105
}
107106

108107
void OpenUpdateWindow()
109108
{
110-
ShowMainWindow();
109+
OpenApplication();
111110
if(IsAnotherWindowOpened())
112111
CloseOtherWindows();
113112

@@ -118,7 +117,7 @@ void OpenUpdateWindow()
118117

119118
void OpenAboutWindow()
120119
{
121-
ShowMainWindow();
120+
OpenApplication();
122121
if(IsAnotherWindowOpened())
123122
CloseOtherWindows();
124123

@@ -182,11 +181,20 @@ void SetupLocalizationHandler()
182181
);
183182
}
184183
}
185-
184+
186185
private void OpenApplication()
187186
{
188-
ShowMainWindow();
189-
Application.Current.MainWindow.WindowState = WindowState.Normal;
187+
var mainWindow = Application.Current.MainWindow;
188+
mainWindow.Show();
189+
ForceShowWindowOnTop();
190+
mainWindow.WindowState = WindowState.Normal;
191+
192+
void ForceShowWindowOnTop()
193+
{
194+
mainWindow.Topmost = true;
195+
mainWindow.Topmost = false;
196+
mainWindow.Activate();
197+
}
190198
}
191199

192200
private void CloseOtherWindows()
@@ -198,8 +206,6 @@ private void CloseOtherWindows()
198206
}
199207
}
200208

201-
private void ShowMainWindow() => Application.Current.MainWindow.Show();
202-
203209
private bool IsAnotherWindowOpened() => Application.Current.Windows.Count > 1;
204210

205211
private bool IsMainWindow(Window window) => window == Application.Current.MainWindow;

InvisibleMan-XRay/Models/UserSettings.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@ public class UserSettings
3535
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate), DefaultValue(false)]
3636
public bool IsRunningAtStartup;
3737

38+
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate), DefaultValue(false)]
39+
public bool IsStartHidden;
40+
41+
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate), DefaultValue(false)]
42+
public bool IsAutoConnect;
43+
3844
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate), DefaultValue(true)]
3945
public bool IsSendingAnalytics;
4046

@@ -69,6 +75,8 @@ public UserSettings()
6975
this.IsSystemProxyUse = true;
7076
this.IsUdpEnable = true;
7177
this.IsRunningAtStartup = false;
78+
this.IsStartHidden = false;
79+
this.IsAutoConnect = false;
7280
this.IsSendingAnalytics = true;
7381
this.TunIp = "10.0.236.10";
7482
this.ProxyPort = 10801;
@@ -87,6 +95,8 @@ public UserSettings(
8795
bool isUdpEnable,
8896
bool isSystemProxyUse,
8997
bool isRunningAtStartup,
98+
bool isStartHidden,
99+
bool isAutoConnect,
90100
bool isSendingAnalytics,
91101
int proxyPort,
92102
int tunPort,
@@ -103,6 +113,8 @@ string logPath
103113
this.IsSystemProxyUse = isSystemProxyUse;
104114
this.IsUdpEnable = isUdpEnable;
105115
this.IsRunningAtStartup = isRunningAtStartup;
116+
this.IsStartHidden = isStartHidden;
117+
this.IsAutoConnect = isAutoConnect;
106118
this.IsSendingAnalytics = isSendingAnalytics;
107119
this.ProxyPort = proxyPort;
108120
this.TunPort = tunPort;
@@ -128,6 +140,10 @@ string logPath
128140

129141
public bool GetRunningAtStartupEnabled() => IsRunningAtStartup;
130142

143+
public bool GetStartHiddenEnabled() => IsStartHidden;
144+
145+
public bool GetAutoConnectEnabled() => IsAutoConnect;
146+
131147
public bool GetSendingAnalyticsEnabled() => IsSendingAnalytics;
132148

133149
public int GetProxyPort() => ProxyPort;

0 commit comments

Comments
 (0)