コード例 #1
0
        private void AddServerClipboard(object parameter)
        {
            List <V2RayVMess> serverList = V2RayVMess.ImportServers(Clipboard.GetText(TextDataFormat.Text));

            if (serverList.Count > 0)
            {
                AddServer(serverList, out int added, out int updated);

                string notify;
                if (SettingManager.Configuration.IsReplaceOldServer)
                {
                    notify = $"{added} {sr_server_x_added}, {updated} {sr_server_x_updated}";
                }
                else
                {
                    notify = $"{added} {sr_server_x_added}";
                }

                InterfaceCtrl.ShowHomeNotify(notify);
            }
            else
            {
                InterfaceCtrl.ShowHomeNotify(sr_server_not_found);
            }
        }
コード例 #2
0
        public static bool Start(V2RayVMess server, int listen)
        {
            string config_path = $@"{App.DirectoryV2Ray}\{v2ray_config_json_name}";
            string config_text = Properties.Resources.v2ray_config_json;

            string outbound = V2RayVMess.ToJson(server);

            config_text = config_text.Replace(config_listen_port, listen.ToString(CultureInfo.InvariantCulture));
            config_text = config_text.Replace(config_outbound, outbound);

            if (!FileUtil.WriteUTF8(config_path, config_text))
            {
                return(false);
            }

            try
            {
                process_v2ray = Process.Start(
                    new ProcessStartInfo
                {
                    FileName         = V2RayExePath,
                    Arguments        = $@"-config {config_path}",
                    WorkingDirectory = App.DirectoryV2Ray,
                    CreateNoWindow   = true,
                    UseShellExecute  = false,
                    LoadUserProfile  = false,
                });
            }
            catch
            {
                return(false);
            }

            return(true);
        }
コード例 #3
0
        private void ChangeServer(object parameter)
        {
            V2RayVMess server = (V2RayVMess)parameter;

            if (TransmitCtrl.ChangeTransmitServer(server))
            {
                InterfaceCtrl.UpdateHomeTransmitStatue();
            }
        }
コード例 #4
0
        private void AddServerQRCode(object parameter)
        {
            string ssBase64 = parameter as string;

            if (string.IsNullOrWhiteSpace(ssBase64))
            {
                ZXing.Result result = QRCode.DecodeScreen();
                if (result == null || string.IsNullOrWhiteSpace(result.Text))
                {
                    InterfaceCtrl.ShowHomeNotify(sr_server_not_found);
                    InterfaceCtrl.NotifyIcon.ShowMessage(sr_server_not_found);
                    return;
                }

                ssBase64 = result.Text;
            }

            if (V2RayVMess.FromVMessBase64(ssBase64) is V2RayVMess server)
            {
                AddServer(server, out int added, out int updated);

                string notify;
                if (SettingManager.Configuration.IsReplaceOldServer)
                {
                    notify = added > 0 ? $"{added} {sr_server_x_added}" : $"{updated} {sr_server_x_updated}";
                }
                else
                {
                    notify = added > 0 ? $"{added} {sr_server_x_added}" : sr_server_already_exist;
                }

                if (Application.Current.MainWindow.IsActive)
                {
                    InterfaceCtrl.ShowHomeNotify(notify);
                }
                else
                {
                    InterfaceCtrl.NotifyIcon.ShowMessage(notify);
                }
            }
            else
            {
                if (Application.Current.MainWindow.IsActive)
                {
                    InterfaceCtrl.ShowHomeNotify(sr_server_not_found);
                }
                else
                {
                    InterfaceCtrl.NotifyIcon.ShowMessage(sr_server_not_found);
                }
            }
        }
コード例 #5
0
        private void AddServerFile(object parameter)
        {
            Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog
            {
                InitialDirectory = App.DirectoryApplication,
                DefaultExt       = "txt",
                Filter           = "Text|*.txt",
                AddExtension     = true
            };

            string fileContent = null;

            if (openFileDialog.ShowDialog() == true)
            {
                try
                {
                    fileContent = System.IO.File.ReadAllText(openFileDialog.FileName);
                }
                catch { }
            }
            if (string.IsNullOrWhiteSpace(fileContent))
            {
                return;
            }

            List <V2RayVMess> serverList = V2RayVMess.ImportServers(fileContent);

            if (serverList.Count > 0)
            {
                AddServer(serverList, out int added, out int updated);

                string notify;
                if (SettingManager.Configuration.IsReplaceOldServer)
                {
                    notify = $"{added} {sr_server_x_added}, {updated} {sr_server_x_updated}";
                }
                else
                {
                    notify = $"{added} {sr_server_x_added}";
                }

                InterfaceCtrl.ShowHomeNotify(notify);
            }
            else
            {
                InterfaceCtrl.ShowHomeNotify(sr_server_not_found);
            }
        }
コード例 #6
0
        private void AddServer(V2RayVMess server, out int added, out int updated)
        {
            added   = 0;
            updated = 0;

            V2RayVMess serverOld = V2RayOC.FirstOrDefault(predicate: x => x.IsServerEqual(server));

            if (serverOld == null)
            {
                V2RayOC.Add(server);
                ++added;
            }
            else
            {
                if (SettingManager.Configuration.IsReplaceOldServer)
                {
                    int i = V2RayOC.IndexOf(serverOld);
                    V2RayOC[i] = server;
                    ++updated;
                }
            }
        }
コード例 #7
0
        private void AddServerCreate(object parameter)
        {
            V2RayVMess server = new V2RayVMess();

            new ServerConfigDialog(server,
                                   (bool resultOK) =>
            {
                if (resultOK)
                {
                    AddServer(server, out int added, out int updated);

                    string notify;
                    if (SettingManager.Configuration.IsReplaceOldServer)
                    {
                        notify = added > 0 ? $"{added} {sr_server_x_added}" : $"{updated} {sr_server_x_updated}";
                    }
                    else
                    {
                        notify = added > 0 ? $"{added} {sr_server_x_added}" : sr_server_already_exist;
                    }

                    InterfaceCtrl.ShowHomeNotify(notify);
                }
コード例 #8
0
 public ServerConfigV2Ray(V2RayVMess server)
 {
     InitializeComponent();
     DataContext = new ServerConfigV2RayVModel(server);
 }
コード例 #9
0
 public ServerConfigV2RayVModel(V2RayVMess server)
 {
     ServerEdit = server;
 }