mirror of https://github.com/2dust/v2rayN
parent
b48037b757
commit
020df117c4
|
@ -0,0 +1,63 @@
|
||||||
|
###############################################################################
|
||||||
|
# Set default behavior to automatically normalize line endings.
|
||||||
|
###############################################################################
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set default behavior for command prompt diff.
|
||||||
|
#
|
||||||
|
# This is need for earlier builds of msysgit that does not have it on by
|
||||||
|
# default for csharp files.
|
||||||
|
# Note: This is only used by command line
|
||||||
|
###############################################################################
|
||||||
|
#*.cs diff=csharp
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set the merge driver for project and solution files
|
||||||
|
#
|
||||||
|
# Merging from the command prompt will add diff markers to the files if there
|
||||||
|
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||||
|
# the diff markers are never inserted). Diff markers may cause the following
|
||||||
|
# file extensions to fail to load in VS. An alternative would be to treat
|
||||||
|
# these files as binary and thus will always conflict and require user
|
||||||
|
# intervention with every merge. To do so, just uncomment the entries below
|
||||||
|
###############################################################################
|
||||||
|
#*.sln merge=binary
|
||||||
|
#*.csproj merge=binary
|
||||||
|
#*.vbproj merge=binary
|
||||||
|
#*.vcxproj merge=binary
|
||||||
|
#*.vcproj merge=binary
|
||||||
|
#*.dbproj merge=binary
|
||||||
|
#*.fsproj merge=binary
|
||||||
|
#*.lsproj merge=binary
|
||||||
|
#*.wixproj merge=binary
|
||||||
|
#*.modelproj merge=binary
|
||||||
|
#*.sqlproj merge=binary
|
||||||
|
#*.wwaproj merge=binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# behavior for image files
|
||||||
|
#
|
||||||
|
# image files are treated as binary by default.
|
||||||
|
###############################################################################
|
||||||
|
#*.jpg binary
|
||||||
|
#*.png binary
|
||||||
|
#*.gif binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# diff behavior for common document formats
|
||||||
|
#
|
||||||
|
# Convert binary document formats to text before diffing them. This feature
|
||||||
|
# is only available from the command line. Turn it on by uncommenting the
|
||||||
|
# entries below.
|
||||||
|
###############################################################################
|
||||||
|
#*.doc diff=astextplain
|
||||||
|
#*.DOC diff=astextplain
|
||||||
|
#*.docx diff=astextplain
|
||||||
|
#*.DOCX diff=astextplain
|
||||||
|
#*.dot diff=astextplain
|
||||||
|
#*.DOT diff=astextplain
|
||||||
|
#*.pdf diff=astextplain
|
||||||
|
#*.PDF diff=astextplain
|
||||||
|
#*.rtf diff=astextplain
|
||||||
|
#*.RTF diff=astextplain
|
|
@ -0,0 +1,363 @@
|
||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
##
|
||||||
|
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.rsuser
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.userosscache
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
|
*.userprefs
|
||||||
|
|
||||||
|
# Mono auto generated files
|
||||||
|
mono_crash.*
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
[Dd]ebug/
|
||||||
|
[Dd]ebugPublic/
|
||||||
|
[Rr]elease/
|
||||||
|
[Rr]eleases/
|
||||||
|
x64/
|
||||||
|
x86/
|
||||||
|
[Ww][Ii][Nn]32/
|
||||||
|
[Aa][Rr][Mm]/
|
||||||
|
[Aa][Rr][Mm]64/
|
||||||
|
bld/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
[Oo]ut/
|
||||||
|
[Ll]og/
|
||||||
|
[Ll]ogs/
|
||||||
|
|
||||||
|
# Visual Studio 2015/2017 cache/options directory
|
||||||
|
.vs/
|
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
|
#wwwroot/
|
||||||
|
|
||||||
|
# Visual Studio 2017 auto generated files
|
||||||
|
Generated\ Files/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
# NUnit
|
||||||
|
*.VisualState.xml
|
||||||
|
TestResult.xml
|
||||||
|
nunit-*.xml
|
||||||
|
|
||||||
|
# Build Results of an ATL Project
|
||||||
|
[Dd]ebugPS/
|
||||||
|
[Rr]eleasePS/
|
||||||
|
dlldata.c
|
||||||
|
|
||||||
|
# Benchmark Results
|
||||||
|
BenchmarkDotNet.Artifacts/
|
||||||
|
|
||||||
|
# .NET Core
|
||||||
|
project.lock.json
|
||||||
|
project.fragment.lock.json
|
||||||
|
artifacts/
|
||||||
|
|
||||||
|
# ASP.NET Scaffolding
|
||||||
|
ScaffoldingReadMe.txt
|
||||||
|
|
||||||
|
# StyleCop
|
||||||
|
StyleCopReport.xml
|
||||||
|
|
||||||
|
# Files built by Visual Studio
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*_h.h
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.iobj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.ipdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*_wpftmp.csproj
|
||||||
|
*.log
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.svclog
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Chutzpah Test files
|
||||||
|
_Chutzpah*
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opendb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
*.VC.db
|
||||||
|
*.VC.VC.opendb
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
*.sap
|
||||||
|
|
||||||
|
# Visual Studio Trace Files
|
||||||
|
*.e2e
|
||||||
|
|
||||||
|
# TFS 2012 Local Workspace
|
||||||
|
$tf/
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
*.DotSettings.user
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity*
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
*.dotCover
|
||||||
|
|
||||||
|
# AxoCover is a Code Coverage Tool
|
||||||
|
.axoCover/*
|
||||||
|
!.axoCover/settings.json
|
||||||
|
|
||||||
|
# Coverlet is a free, cross platform Code Coverage Tool
|
||||||
|
coverage*.json
|
||||||
|
coverage*.xml
|
||||||
|
coverage*.info
|
||||||
|
|
||||||
|
# Visual Studio code coverage results
|
||||||
|
*.coverage
|
||||||
|
*.coveragexml
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
_NCrunch_*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
nCrunchTemp_*
|
||||||
|
|
||||||
|
# MightyMoose
|
||||||
|
*.mm.*
|
||||||
|
AutoTest.Net/
|
||||||
|
|
||||||
|
# Web workbench (sass)
|
||||||
|
.sass-cache/
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
[Ee]xpress/
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
DocProject/buildhelp/
|
||||||
|
DocProject/Help/*.HxT
|
||||||
|
DocProject/Help/*.HxC
|
||||||
|
DocProject/Help/*.hhc
|
||||||
|
DocProject/Help/*.hhk
|
||||||
|
DocProject/Help/*.hhp
|
||||||
|
DocProject/Help/Html2
|
||||||
|
DocProject/Help/html
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
publish/
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
*.[Pp]ublish.xml
|
||||||
|
*.azurePubxml
|
||||||
|
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||||
|
# but database connection strings (with potential passwords) will be unencrypted
|
||||||
|
*.pubxml
|
||||||
|
*.publishproj
|
||||||
|
|
||||||
|
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||||
|
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||||
|
# in these scripts will be unencrypted
|
||||||
|
PublishScripts/
|
||||||
|
|
||||||
|
# NuGet Packages
|
||||||
|
*.nupkg
|
||||||
|
# NuGet Symbol Packages
|
||||||
|
*.snupkg
|
||||||
|
# The packages folder can be ignored because of Package Restore
|
||||||
|
**/[Pp]ackages/*
|
||||||
|
# except build/, which is used as an MSBuild target.
|
||||||
|
!**/[Pp]ackages/build/
|
||||||
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
|
#!**/[Pp]ackages/repositories.config
|
||||||
|
# NuGet v3's project.json files produces more ignorable files
|
||||||
|
*.nuget.props
|
||||||
|
*.nuget.targets
|
||||||
|
|
||||||
|
# Microsoft Azure Build Output
|
||||||
|
csx/
|
||||||
|
*.build.csdef
|
||||||
|
|
||||||
|
# Microsoft Azure Emulator
|
||||||
|
ecf/
|
||||||
|
rcf/
|
||||||
|
|
||||||
|
# Windows Store app package directories and files
|
||||||
|
AppPackages/
|
||||||
|
BundleArtifacts/
|
||||||
|
Package.StoreAssociation.xml
|
||||||
|
_pkginfo.txt
|
||||||
|
*.appx
|
||||||
|
*.appxbundle
|
||||||
|
*.appxupload
|
||||||
|
|
||||||
|
# Visual Studio cache files
|
||||||
|
# files ending in .cache can be ignored
|
||||||
|
*.[Cc]ache
|
||||||
|
# but keep track of directories ending in .cache
|
||||||
|
!?*.[Cc]ache/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
ClientBin/
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.dbproj.schemaview
|
||||||
|
*.jfm
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
orleans.codegen.cs
|
||||||
|
|
||||||
|
# Including strong name files can present a security risk
|
||||||
|
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||||
|
#*.snk
|
||||||
|
|
||||||
|
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||||
|
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||||
|
#bower_components/
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
Generated_Code/
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file
|
||||||
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
|
# because we have git ;-)
|
||||||
|
_UpgradeReport_Files/
|
||||||
|
Backup*/
|
||||||
|
UpgradeLog*.XML
|
||||||
|
UpgradeLog*.htm
|
||||||
|
ServiceFabricBackup/
|
||||||
|
*.rptproj.bak
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
*.mdf
|
||||||
|
*.ldf
|
||||||
|
*.ndf
|
||||||
|
|
||||||
|
# Business Intelligence projects
|
||||||
|
*.rdl.data
|
||||||
|
*.bim.layout
|
||||||
|
*.bim_*.settings
|
||||||
|
*.rptproj.rsuser
|
||||||
|
*- [Bb]ackup.rdl
|
||||||
|
*- [Bb]ackup ([0-9]).rdl
|
||||||
|
*- [Bb]ackup ([0-9][0-9]).rdl
|
||||||
|
|
||||||
|
# Microsoft Fakes
|
||||||
|
FakesAssemblies/
|
||||||
|
|
||||||
|
# GhostDoc plugin setting file
|
||||||
|
*.GhostDoc.xml
|
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio
|
||||||
|
.ntvs_analysis.dat
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# Visual Studio 6 build log
|
||||||
|
*.plg
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file
|
||||||
|
*.opt
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||||
|
*.vbw
|
||||||
|
|
||||||
|
# Visual Studio LightSwitch build output
|
||||||
|
**/*.HTMLClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/ModelManifest.xml
|
||||||
|
**/*.Server/GeneratedArtifacts
|
||||||
|
**/*.Server/ModelManifest.xml
|
||||||
|
_Pvt_Extensions
|
||||||
|
|
||||||
|
# Paket dependency manager
|
||||||
|
.paket/paket.exe
|
||||||
|
paket-files/
|
||||||
|
|
||||||
|
# FAKE - F# Make
|
||||||
|
.fake/
|
||||||
|
|
||||||
|
# CodeRush personal settings
|
||||||
|
.cr/personal
|
||||||
|
|
||||||
|
# Python Tools for Visual Studio (PTVS)
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
|
||||||
|
# Cake - Uncomment if you are using it
|
||||||
|
# tools/**
|
||||||
|
# !tools/packages.config
|
||||||
|
|
||||||
|
# Tabs Studio
|
||||||
|
*.tss
|
||||||
|
|
||||||
|
# Telerik's JustMock configuration file
|
||||||
|
*.jmconfig
|
||||||
|
|
||||||
|
# BizTalk build output
|
||||||
|
*.btp.cs
|
||||||
|
*.btm.cs
|
||||||
|
*.odx.cs
|
||||||
|
*.xsd.cs
|
||||||
|
|
||||||
|
# OpenCover UI analysis results
|
||||||
|
OpenCover/
|
||||||
|
|
||||||
|
# Azure Stream Analytics local run output
|
||||||
|
ASALocalRun/
|
||||||
|
|
||||||
|
# MSBuild Binary and Structured Log
|
||||||
|
*.binlog
|
||||||
|
|
||||||
|
# NVidia Nsight GPU debugger configuration file
|
||||||
|
*.nvuser
|
||||||
|
|
||||||
|
# MFractors (Xamarin productivity tool) working folder
|
||||||
|
.mfractor/
|
||||||
|
|
||||||
|
# Local History for Visual Studio
|
||||||
|
.localhistory/
|
||||||
|
|
||||||
|
# BeatPulse healthcheck temp database
|
||||||
|
healthchecksdb
|
||||||
|
|
||||||
|
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||||
|
MigrationBackup/
|
||||||
|
|
||||||
|
# Ionide (cross platform F# VS Code tools) working folder
|
||||||
|
.ionide/
|
||||||
|
|
||||||
|
# Fody - auto-generated XML schema
|
||||||
|
FodyWeavers.xsd
|
|
@ -0,0 +1,112 @@
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace PacLib;
|
||||||
|
|
||||||
|
public class PacHandler
|
||||||
|
{
|
||||||
|
private static string _configPath;
|
||||||
|
private static int _httpPort;
|
||||||
|
private static int _pacPort;
|
||||||
|
private static TcpListener? _tcpListener;
|
||||||
|
private static string _pacText;
|
||||||
|
private static bool _isRunning;
|
||||||
|
private static bool _needRestart = true;
|
||||||
|
|
||||||
|
|
||||||
|
public static void Start(string configPath, int httpPort, int pacPort)
|
||||||
|
{
|
||||||
|
if (configPath.Equals(_configPath)
|
||||||
|
&& httpPort.Equals(_httpPort)
|
||||||
|
&& pacPort.Equals(_pacPort)
|
||||||
|
&& _isRunning)
|
||||||
|
{
|
||||||
|
_needRestart = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
_configPath = configPath;
|
||||||
|
_httpPort = httpPort;
|
||||||
|
_pacPort = pacPort;
|
||||||
|
|
||||||
|
InitText();
|
||||||
|
|
||||||
|
if (_needRestart)
|
||||||
|
{
|
||||||
|
Stop();
|
||||||
|
RunListener();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void InitText()
|
||||||
|
{
|
||||||
|
var path = Path.Combine(_configPath, "pac.txt");
|
||||||
|
if (!File.Exists(path))
|
||||||
|
{
|
||||||
|
File.AppendAllText(path, Resources.ResourceManager.GetString("pac"));
|
||||||
|
}
|
||||||
|
|
||||||
|
_pacText = File.ReadAllText(path).Replace("__PROXY__", $"PROXY 127.0.0.1:{_httpPort};DIRECT;");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void RunListener()
|
||||||
|
{
|
||||||
|
_tcpListener = TcpListener.Create(_pacPort);
|
||||||
|
_isRunning = true;
|
||||||
|
_tcpListener.Start();
|
||||||
|
Task.Factory.StartNew(() =>
|
||||||
|
{
|
||||||
|
while (_isRunning)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!_tcpListener.Pending())
|
||||||
|
{
|
||||||
|
Thread.Sleep(10);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var client = _tcpListener.AcceptTcpClient();
|
||||||
|
Task.Run(() =>
|
||||||
|
{
|
||||||
|
var stream = client.GetStream();
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
sb.AppendLine("HTTP/1.0 200 OK");
|
||||||
|
sb.AppendLine("Content-type:application/x-ns-proxy-autoconfig");
|
||||||
|
sb.AppendLine("Connection:close");
|
||||||
|
sb.AppendLine("Content-Length:" + Encoding.UTF8.GetByteCount(_pacText));
|
||||||
|
sb.AppendLine();
|
||||||
|
sb.Append(_pacText);
|
||||||
|
var content = Encoding.UTF8.GetBytes(sb.ToString());
|
||||||
|
stream.Write(content, 0, content.Length);
|
||||||
|
stream.Flush();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}, TaskCreationOptions.LongRunning);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Stop()
|
||||||
|
{
|
||||||
|
if (_tcpListener != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_isRunning = false;
|
||||||
|
_tcpListener.Stop();
|
||||||
|
_tcpListener = null;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net6.0-windows</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Update="Resources.Designer.cs">
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<EmbeddedResource Update="Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
</EmbeddedResource>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -0,0 +1,95 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
|
// 重新生成代码,这些更改将会丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace PacLib {
|
||||||
|
using System;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 一个强类型的资源类,用于查找本地化的字符串等。
|
||||||
|
/// </summary>
|
||||||
|
// 此类是由 StronglyTypedResourceBuilder
|
||||||
|
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||||
|
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||||
|
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
internal class Resources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal Resources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 返回此类使用的缓存的 ResourceManager 实例。
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
|
get {
|
||||||
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PacLib.Resources", typeof(Resources).Assembly);
|
||||||
|
resourceMan = temp;
|
||||||
|
}
|
||||||
|
return resourceMan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写当前线程的 CurrentUICulture 属性,对
|
||||||
|
/// 使用此强类型资源类的所有资源查找执行重写。
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Globalization.CultureInfo Culture {
|
||||||
|
get {
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查找类似 var proxy = '__PROXY__';
|
||||||
|
///var rules = [
|
||||||
|
/// [
|
||||||
|
/// [],
|
||||||
|
/// []
|
||||||
|
/// ],
|
||||||
|
/// [
|
||||||
|
/// [
|
||||||
|
/// "aftygh.gov.tw",
|
||||||
|
/// "aide.gov.tw",
|
||||||
|
/// "aliyun.com",
|
||||||
|
/// "arte.gov.tw",
|
||||||
|
/// "baidu.com",
|
||||||
|
/// "chinaso.com",
|
||||||
|
/// "chinaz.com",
|
||||||
|
/// "chukuang.gov.tw",
|
||||||
|
/// "cycab.gov.tw",
|
||||||
|
/// "dbnsa.gov.tw",
|
||||||
|
/// "df.gov.tw",
|
||||||
|
/// "eastcoast-nsa.gov.tw",
|
||||||
|
/// "erv-nsa.gov.tw",
|
||||||
|
/// "grb.gov.tw",
|
||||||
|
/// "haosou.com",
|
||||||
|
/// [字符串的其余部分被截断]"; 的本地化字符串。
|
||||||
|
/// </summary>
|
||||||
|
internal static string pac {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("pac", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -117,4 +117,8 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="pac" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>Resources\pac.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,24 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net6.0-windows</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Protobuf Include="Statistics.proto" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Google.Protobuf">
|
||||||
|
<Version>3.21.9</Version>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Grpc.Core">
|
||||||
|
<Version>2.46.5</Version>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Grpc.Tools" Version="2.50.0">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -1,7 +1,7 @@
|
||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
|
|
||||||
package v2ray.core.app.stats.command;
|
package v2ray.core.app.stats.command;
|
||||||
option csharp_namespace = "v2rayN.Protos.Statistics";
|
option csharp_namespace = "ProtosLib.Statistics";
|
||||||
|
|
||||||
message GetStatsRequest {
|
message GetStatsRequest {
|
||||||
// Name of the stat counter.
|
// Name of the stat counter.
|
|
@ -0,0 +1,15 @@
|
||||||
|
using ProtosLib.Statistics;
|
||||||
|
|
||||||
|
namespace ProtosLib
|
||||||
|
{
|
||||||
|
public class Tests
|
||||||
|
{
|
||||||
|
private StatsService.StatsServiceClient client_;
|
||||||
|
|
||||||
|
public Tests()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,41 +1,43 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 15
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 15.0.28010.2050
|
VisualStudioVersion = 17.3.32811.315
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "v2rayN", "v2rayN\v2rayN.csproj", "{0A9785E6-D256-4B73-9757-4EF59955FD1E}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "v2rayN", "v2rayN\v2rayN.csproj", "{6DE127CA-1763-4236-B297-D2EF9CB2EC9B}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "v2rayUpgrade", "v2rayUpgrade\v2rayUpgrade.csproj", "{F82BE52A-155C-492C-9E0A-1E917EC62C78}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProtosLib", "ProtosLib\ProtosLib.csproj", "{C5F24BB0-9CC1-44DD-82FF-D545F081819B}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PacLib", "PacLib\PacLib.csproj", "{EE4E6CD8-8353-446B-8F29-A841A02AE5EC}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "v2rayUpgrade", "v2rayUpgrade\v2rayUpgrade.csproj", "{3CD0B9E8-331B-42C6-A395-4DA0FD4BC8EB}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
Debug|x86 = Debug|x86
|
|
||||||
Release|Any CPU = Release|Any CPU
|
Release|Any CPU = Release|Any CPU
|
||||||
Release|x86 = Release|x86
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{0A9785E6-D256-4B73-9757-4EF59955FD1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{6DE127CA-1763-4236-B297-D2EF9CB2EC9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{0A9785E6-D256-4B73-9757-4EF59955FD1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{6DE127CA-1763-4236-B297-D2EF9CB2EC9B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{0A9785E6-D256-4B73-9757-4EF59955FD1E}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{6DE127CA-1763-4236-B297-D2EF9CB2EC9B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{0A9785E6-D256-4B73-9757-4EF59955FD1E}.Debug|x86.Build.0 = Debug|Any CPU
|
{6DE127CA-1763-4236-B297-D2EF9CB2EC9B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{0A9785E6-D256-4B73-9757-4EF59955FD1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{C5F24BB0-9CC1-44DD-82FF-D545F081819B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{0A9785E6-D256-4B73-9757-4EF59955FD1E}.Release|Any CPU.Build.0 = Release|Any CPU
|
{C5F24BB0-9CC1-44DD-82FF-D545F081819B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{0A9785E6-D256-4B73-9757-4EF59955FD1E}.Release|x86.ActiveCfg = Release|Any CPU
|
{C5F24BB0-9CC1-44DD-82FF-D545F081819B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{F82BE52A-155C-492C-9E0A-1E917EC62C78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{C5F24BB0-9CC1-44DD-82FF-D545F081819B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{F82BE52A-155C-492C-9E0A-1E917EC62C78}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{EE4E6CD8-8353-446B-8F29-A841A02AE5EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{F82BE52A-155C-492C-9E0A-1E917EC62C78}.Debug|x86.ActiveCfg = Debug|Any CPU
|
{EE4E6CD8-8353-446B-8F29-A841A02AE5EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{F82BE52A-155C-492C-9E0A-1E917EC62C78}.Debug|x86.Build.0 = Debug|Any CPU
|
{EE4E6CD8-8353-446B-8F29-A841A02AE5EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{F82BE52A-155C-492C-9E0A-1E917EC62C78}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{EE4E6CD8-8353-446B-8F29-A841A02AE5EC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{F82BE52A-155C-492C-9E0A-1E917EC62C78}.Release|Any CPU.Build.0 = Release|Any CPU
|
{3CD0B9E8-331B-42C6-A395-4DA0FD4BC8EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{F82BE52A-155C-492C-9E0A-1E917EC62C78}.Release|x86.ActiveCfg = Release|Any CPU
|
{3CD0B9E8-331B-42C6-A395-4DA0FD4BC8EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{F82BE52A-155C-492C-9E0A-1E917EC62C78}.Release|x86.Build.0 = Release|Any CPU
|
{3CD0B9E8-331B-42C6-A395-4DA0FD4BC8EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{3CD0B9E8-331B-42C6-A395-4DA0FD4BC8EB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
RESX_SortFileContentOnSave = True
|
SolutionGuid = {43E06CBD-3DA9-40A3-8E4D-F0943CB0DD32}
|
||||||
SolutionGuid = {56B88873-C9CC-4069-A1E5-DABD6C6E865E}
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,120 @@
|
||||||
|
<Application
|
||||||
|
x:Class="v2rayN.App"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:local="clr-namespace:v2rayN"
|
||||||
|
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||||
|
ShutdownMode="OnExplicitShutdown"
|
||||||
|
StartupUri="Views/MainWindow.xaml">
|
||||||
|
<Application.Resources>
|
||||||
|
<ResourceDictionary xmlns:system="clr-namespace:System;assembly=mscorlib">
|
||||||
|
<ResourceDictionary.MergedDictionaries>
|
||||||
|
<materialDesign:BundledTheme
|
||||||
|
BaseTheme="Light"
|
||||||
|
PrimaryColor="DeepPurple"
|
||||||
|
SecondaryColor="Lime" />
|
||||||
|
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
|
||||||
|
</ResourceDictionary.MergedDictionaries>
|
||||||
|
<system:Double x:Key="MenuItemHeight">26</system:Double>
|
||||||
|
<Thickness
|
||||||
|
x:Key="ServerItemMargin"
|
||||||
|
Bottom="4"
|
||||||
|
Left="4"
|
||||||
|
Right="4"
|
||||||
|
Top="4" />
|
||||||
|
<Thickness
|
||||||
|
x:Key="SettingItemMargin"
|
||||||
|
Bottom="8"
|
||||||
|
Left="8"
|
||||||
|
Right="8"
|
||||||
|
Top="8" />
|
||||||
|
<Style
|
||||||
|
x:Key="ModuleTitle"
|
||||||
|
BasedOn="{StaticResource MaterialDesignTextBlock}"
|
||||||
|
TargetType="{x:Type TextBlock}">
|
||||||
|
<Setter Property="FontSize" Value="16" />
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="ToolbarTextBlock"
|
||||||
|
BasedOn="{StaticResource MaterialDesignTextBlock}"
|
||||||
|
TargetType="{x:Type TextBlock}">
|
||||||
|
<Setter Property="FontSize" Value="12" />
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="StatusbarItem"
|
||||||
|
BasedOn="{StaticResource MaterialDesignTextBlock}"
|
||||||
|
TargetType="{x:Type TextBlock}">
|
||||||
|
<Setter Property="FontSize" Value="12" />
|
||||||
|
<Setter Property="Padding" Value="0" />
|
||||||
|
</Style>
|
||||||
|
<Style TargetType="{x:Type TextElement}">
|
||||||
|
<Setter Property="FontWeight" Value="Regular" />
|
||||||
|
<Setter Property="Foreground" Value="{DynamicResource MaterialDesignBody}" />
|
||||||
|
</Style>
|
||||||
|
<Style TargetType="{x:Type TextBlock}">
|
||||||
|
<Setter Property="FontWeight" Value="Regular" />
|
||||||
|
<Setter Property="Foreground" Value="{DynamicResource MaterialDesignBody}" />
|
||||||
|
</Style>
|
||||||
|
<Style x:Key="lvItemSelected" TargetType="{x:Type ListViewItem}">
|
||||||
|
<Setter Property="Height" Value="20" />
|
||||||
|
<Setter Property="FontSize" Value="12" />
|
||||||
|
<Style.Triggers>
|
||||||
|
<Trigger Property="IsSelected" Value="true">
|
||||||
|
<Setter Property="Background" Value="{DynamicResource PrimaryHueLightBrush}" />
|
||||||
|
</Trigger>
|
||||||
|
<Trigger Property="IsMouseOver" Value="true">
|
||||||
|
<Setter Property="Background" Value="{DynamicResource PrimaryHueMidBrush}" />
|
||||||
|
</Trigger>
|
||||||
|
</Style.Triggers>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style x:Key="GridViewColumnHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
|
||||||
|
<Setter Property="Height" Value="30" />
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="ListItemCheckBox"
|
||||||
|
BasedOn="{StaticResource MaterialDesignUserForegroundCheckBox}"
|
||||||
|
TargetType="{x:Type CheckBox}">
|
||||||
|
<Setter Property="FontSize" Value="12" />
|
||||||
|
</Style>
|
||||||
|
<Style x:Key="ListItemChip" TargetType="{x:Type materialDesign:Chip}">
|
||||||
|
<Setter Property="FontSize" Value="11" />
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="DefButton"
|
||||||
|
BasedOn="{StaticResource MaterialDesignRaisedButton}"
|
||||||
|
TargetType="{x:Type ButtonBase}">
|
||||||
|
<Setter Property="FontSize" Value="14" />
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="DefContextMenu"
|
||||||
|
BasedOn="{StaticResource MaterialDesignContextMenu}"
|
||||||
|
TargetType="{x:Type ContextMenu}">
|
||||||
|
<Setter Property="FontSize" Value="13" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style
|
||||||
|
x:Key="ToolbarMenu"
|
||||||
|
BasedOn="{StaticResource MaterialDesignMenu}"
|
||||||
|
TargetType="{x:Type Menu}">
|
||||||
|
<Setter Property="FontSize" Value="13" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style
|
||||||
|
x:Key="DefComboBox"
|
||||||
|
BasedOn="{StaticResource MaterialDesignComboBox}"
|
||||||
|
TargetType="{x:Type ComboBox}">
|
||||||
|
<Setter Property="FontSize" Value="12" />
|
||||||
|
<Setter Property="HorizontalAlignment" Value="Left" />
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="DefDataGrid"
|
||||||
|
BasedOn="{StaticResource MaterialDesignDataGrid}"
|
||||||
|
TargetType="{x:Type DataGrid}">
|
||||||
|
<Setter Property="FontSize" Value="12" />
|
||||||
|
</Style>
|
||||||
|
</ResourceDictionary>
|
||||||
|
|
||||||
|
</Application.Resources>
|
||||||
|
|
||||||
|
</Application>
|
|
@ -0,0 +1,85 @@
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Threading;
|
||||||
|
using v2rayN.Handler;
|
||||||
|
using v2rayN.Mode;
|
||||||
|
using v2rayN.Tool;
|
||||||
|
|
||||||
|
namespace v2rayN
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Interaction logic for App.xaml
|
||||||
|
/// </summary>
|
||||||
|
public partial class App : Application
|
||||||
|
{
|
||||||
|
public static EventWaitHandle ProgramStarted;
|
||||||
|
private static Config _config;
|
||||||
|
|
||||||
|
public App()
|
||||||
|
{
|
||||||
|
// Locator.CurrentMutable.RegisterViewsForViewModels(Assembly.GetCallingAssembly());
|
||||||
|
this.DispatcherUnhandledException += App_DispatcherUnhandledException;
|
||||||
|
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
||||||
|
TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 只打开一个进程
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
protected override void OnStartup(StartupEventArgs e)
|
||||||
|
{
|
||||||
|
Global.ExePathKey = Utils.GetMD5(Utils.GetExePath());
|
||||||
|
|
||||||
|
ProgramStarted = new EventWaitHandle(false, EventResetMode.AutoReset, Global.ExePathKey, out bool bCreatedNew);
|
||||||
|
if (!bCreatedNew)
|
||||||
|
{
|
||||||
|
ProgramStarted.Set();
|
||||||
|
Current.Shutdown();
|
||||||
|
Environment.Exit(0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Global.processJob = new Job();
|
||||||
|
|
||||||
|
Logging.Setup();
|
||||||
|
Utils.SaveLog($"v2rayN start up | {Utils.GetVersion()} | {Utils.GetExePath()}");
|
||||||
|
Logging.ClearLogs();
|
||||||
|
|
||||||
|
Init();
|
||||||
|
|
||||||
|
Thread.CurrentThread.CurrentUICulture = new(_config.uiItem.currentLanguage);
|
||||||
|
|
||||||
|
base.OnStartup(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void Init()
|
||||||
|
{
|
||||||
|
if (ConfigHandler.LoadConfig(ref _config) != 0)
|
||||||
|
{
|
||||||
|
UI.ShowWarning($"Loading GUI configuration file is abnormal,please restart the application{Environment.NewLine}加载GUI配置文件异常,请重启应用");
|
||||||
|
Application.Current.Shutdown();
|
||||||
|
Environment.Exit(0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
|
||||||
|
{
|
||||||
|
Utils.SaveLog("App_DispatcherUnhandledException", e.Exception);
|
||||||
|
e.Handled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.ExceptionObject != null)
|
||||||
|
{
|
||||||
|
Utils.SaveLog("CurrentDomain_UnhandledException", (Exception)e.ExceptionObject!);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
|
||||||
|
{
|
||||||
|
Utils.SaveLog("TaskScheduler_UnobservedTaskException", e.Exception);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
[assembly: ThemeInfo(
|
||||||
|
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
||||||
|
//(used if a resource is not found in the page,
|
||||||
|
// or application resource dictionaries)
|
||||||
|
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
|
||||||
|
//(used if a resource is not found in the page,
|
||||||
|
// app, or any theme specific resource dictionaries)
|
||||||
|
)]
|
|
@ -1,12 +1,6 @@
|
||||||
using System;
|
using System.IO;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Net.Http.Headers;
|
using System.Net.Http.Headers;
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace v2rayN.Base
|
namespace v2rayN.Base
|
||||||
{
|
{
|
||||||
|
@ -58,7 +52,7 @@ namespace v2rayN.Base
|
||||||
HttpResponseMessage response = await client.GetAsync(url, token);
|
HttpResponseMessage response = await client.GetAsync(url, token);
|
||||||
if (!response.IsSuccessStatusCode)
|
if (!response.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format("The request returned with HTTP status code {0}", response.StatusCode));
|
throw new Exception(string.Format("{0}", response.StatusCode));
|
||||||
}
|
}
|
||||||
return await response.Content.ReadAsStringAsync();
|
return await response.Content.ReadAsStringAsync();
|
||||||
}
|
}
|
||||||
|
@ -92,7 +86,7 @@ namespace v2rayN.Base
|
||||||
|
|
||||||
if (!response.IsSuccessStatusCode)
|
if (!response.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format("The request returned with HTTP status code {0}", response.StatusCode));
|
throw new Exception(string.Format("{0}", response.StatusCode));
|
||||||
}
|
}
|
||||||
|
|
||||||
var total = response.Content.Headers.ContentLength.HasValue ? response.Content.Headers.ContentLength.Value : -1L;
|
var total = response.Content.Headers.ContentLength.HasValue ? response.Content.Headers.ContentLength.Value : -1L;
|
||||||
|
@ -159,7 +153,7 @@ namespace v2rayN.Base
|
||||||
|
|
||||||
if (!response.IsSuccessStatusCode)
|
if (!response.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format("The request returned with HTTP status code {0}", response.StatusCode));
|
throw new Exception(string.Format("{0}", response.StatusCode));
|
||||||
}
|
}
|
||||||
|
|
||||||
//var total = response.Content.Headers.ContentLength.HasValue ? response.Content.Headers.ContentLength.Value : -1L;
|
//var total = response.Content.Headers.ContentLength.HasValue ? response.Content.Headers.ContentLength.Value : -1L;
|
||||||
|
@ -172,6 +166,7 @@ namespace v2rayN.Base
|
||||||
var isMoreToRead = true;
|
var isMoreToRead = true;
|
||||||
string progressSpeed = string.Empty;
|
string progressSpeed = string.Empty;
|
||||||
DateTime totalDatetime = DateTime.Now;
|
DateTime totalDatetime = DateTime.Now;
|
||||||
|
int totalSecond = 0;
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -202,9 +197,10 @@ namespace v2rayN.Base
|
||||||
totalRead += read;
|
totalRead += read;
|
||||||
|
|
||||||
TimeSpan ts = (DateTime.Now - totalDatetime);
|
TimeSpan ts = (DateTime.Now - totalDatetime);
|
||||||
var speed = (totalRead * 1d / ts.TotalMilliseconds / 1000).ToString("#0.0");
|
if (progress != null && ts.Seconds > totalSecond)
|
||||||
if (progress != null)
|
|
||||||
{
|
{
|
||||||
|
totalSecond = ts.Seconds;
|
||||||
|
var speed = (totalRead * 1d / ts.TotalMilliseconds / 1000).ToString("#0.0");
|
||||||
if (progressSpeed != speed)
|
if (progressSpeed != speed)
|
||||||
{
|
{
|
||||||
progressSpeed = speed;
|
progressSpeed = speed;
|
||||||
|
|
|
@ -1,112 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
|
|
||||||
namespace v2rayN.Base
|
|
||||||
{
|
|
||||||
class ListViewFlickerFree : ListView
|
|
||||||
{
|
|
||||||
Action<int, int> _updateFunc;
|
|
||||||
|
|
||||||
public ListViewFlickerFree()
|
|
||||||
{
|
|
||||||
SetStyle(ControlStyles.OptimizedDoubleBuffer
|
|
||||||
| ControlStyles.AllPaintingInWmPaint
|
|
||||||
, true);
|
|
||||||
UpdateStyles();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void RegisterDragEvent(Action<int, int> update)
|
|
||||||
{
|
|
||||||
_updateFunc = update;
|
|
||||||
AllowDrop = true;
|
|
||||||
|
|
||||||
ItemDrag += lv_ItemDrag;
|
|
||||||
DragDrop += lv_DragDrop;
|
|
||||||
DragEnter += lv_DragEnter;
|
|
||||||
DragOver += lv_DragOver;
|
|
||||||
DragLeave += lv_DragLeave;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lv_DragDrop(object sender, DragEventArgs e)
|
|
||||||
{
|
|
||||||
int targetIndex = InsertionMark.Index;
|
|
||||||
if (targetIndex == -1)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (InsertionMark.AppearsAfterItem)
|
|
||||||
{
|
|
||||||
targetIndex++;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (SelectedIndices.Count <= 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_updateFunc(SelectedIndices[0], targetIndex);
|
|
||||||
|
|
||||||
//ListViewItem draggedItem = (ListViewItem)e.Data.GetData(typeof(ListViewItem));
|
|
||||||
//this.BeginUpdate();
|
|
||||||
//this.Items.Insert(targetIndex, (ListViewItem)draggedItem.Clone());
|
|
||||||
//this.Items.Remove(draggedItem);
|
|
||||||
//this.EndUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void lv_DragEnter(object sender, DragEventArgs e)
|
|
||||||
{
|
|
||||||
e.Effect = e.AllowedEffect;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lv_DragLeave(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
InsertionMark.Index = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lv_DragOver(object sender, DragEventArgs e)
|
|
||||||
{
|
|
||||||
Point targetPoint = PointToClient(new Point(e.X, e.Y));
|
|
||||||
int targetIndex = InsertionMark.NearestIndex(targetPoint);
|
|
||||||
|
|
||||||
if (targetIndex > -1)
|
|
||||||
{
|
|
||||||
Rectangle itemBounds = GetItemRect(targetIndex);
|
|
||||||
EnsureVisible(targetIndex);
|
|
||||||
|
|
||||||
if (targetPoint.Y > itemBounds.Top + (itemBounds.Height / 2))
|
|
||||||
{
|
|
||||||
InsertionMark.AppearsAfterItem = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
InsertionMark.AppearsAfterItem = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
InsertionMark.Index = targetIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lv_ItemDrag(object sender, ItemDragEventArgs e)
|
|
||||||
{
|
|
||||||
DoDragDrop(e.Item, DragDropEffects.Move);
|
|
||||||
InsertionMark.Index = -1;
|
|
||||||
}
|
|
||||||
public void SetScrollPosition(int pos)
|
|
||||||
{
|
|
||||||
pos = Math.Min(Items.Count - 1, pos);
|
|
||||||
|
|
||||||
if (pos < 0 || pos >= Items.Count)
|
|
||||||
return;
|
|
||||||
|
|
||||||
EnsureVisible(pos);
|
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++)
|
|
||||||
{
|
|
||||||
if (TopItem != null && TopItem.Index != pos)
|
|
||||||
TopItem = Items[pos];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,91 @@
|
||||||
|
|
||||||
|
using SQLite;
|
||||||
|
using System.Collections;
|
||||||
|
|
||||||
|
namespace v2rayN.Base
|
||||||
|
{
|
||||||
|
public sealed class SqliteHelper
|
||||||
|
{
|
||||||
|
private static readonly Lazy<SqliteHelper> _instance = new Lazy<SqliteHelper>(() => new());
|
||||||
|
public static SqliteHelper Instance => _instance.Value;
|
||||||
|
private string _connstr;
|
||||||
|
public SQLiteConnection _db;
|
||||||
|
public SQLiteAsyncConnection _dbAsync;
|
||||||
|
|
||||||
|
public SqliteHelper()
|
||||||
|
{
|
||||||
|
_connstr = Utils.GetConfigPath(Global.ConfigDB);
|
||||||
|
_db = new SQLiteConnection(_connstr, false);
|
||||||
|
_dbAsync = new SQLiteAsyncConnection(_connstr, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CreateTableResult CreateTable<T>()
|
||||||
|
{
|
||||||
|
return _db.CreateTable<T>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Add(object model)
|
||||||
|
{
|
||||||
|
return _db.Insert(model);
|
||||||
|
}
|
||||||
|
public async Task<int> AddAsync(object model)
|
||||||
|
{
|
||||||
|
return await _dbAsync.InsertAsync(model);
|
||||||
|
}
|
||||||
|
public int Replace(object model)
|
||||||
|
{
|
||||||
|
return _db.InsertOrReplace(model);
|
||||||
|
}
|
||||||
|
public async Task<int> Replacesync(object model)
|
||||||
|
{
|
||||||
|
return await _dbAsync.InsertOrReplaceAsync(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Update(object model)
|
||||||
|
{
|
||||||
|
return _db.Update(model);
|
||||||
|
}
|
||||||
|
public async Task<int> UpdateAsync(object model)
|
||||||
|
{
|
||||||
|
return await _dbAsync.UpdateAsync(model);
|
||||||
|
}
|
||||||
|
public int UpdateAll(IEnumerable models)
|
||||||
|
{
|
||||||
|
return _db.UpdateAll(models);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Delete(object model)
|
||||||
|
{
|
||||||
|
return _db.Delete(model);
|
||||||
|
}
|
||||||
|
public async Task<int> DeleteAsync(object model)
|
||||||
|
{
|
||||||
|
return await _dbAsync.DeleteAsync(model);
|
||||||
|
}
|
||||||
|
public List<T> Query<T>(string sql) where T : new()
|
||||||
|
{
|
||||||
|
return _db.Query<T>(sql);
|
||||||
|
}
|
||||||
|
public async Task<List<T>> QueryAsync<T>(string sql) where T : new()
|
||||||
|
{
|
||||||
|
return await _dbAsync.QueryAsync<T>(sql);
|
||||||
|
}
|
||||||
|
public int Execute(string sql)
|
||||||
|
{
|
||||||
|
return _db.Execute(sql);
|
||||||
|
}
|
||||||
|
public async Task<int> ExecuteAsync(string sql)
|
||||||
|
{
|
||||||
|
return await _dbAsync.ExecuteAsync(sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TableQuery<T> Table<T>() where T : new()
|
||||||
|
{
|
||||||
|
return _db.Table<T>();
|
||||||
|
}
|
||||||
|
public AsyncTableQuery<T> TableAsync<T>() where T : new()
|
||||||
|
{
|
||||||
|
return _dbAsync.Table<T>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,4 @@
|
||||||
using System.Collections.Generic;
|
using System.IO;
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace v2rayN.Base
|
namespace v2rayN.Base
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Media;
|
||||||
|
|
||||||
|
namespace v2rayN.Converters
|
||||||
|
{
|
||||||
|
public class DelayColorConverter : IValueConverter
|
||||||
|
{
|
||||||
|
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
|
||||||
|
{
|
||||||
|
int.TryParse(value.ToString(), out var delay);
|
||||||
|
|
||||||
|
if (delay <= 0)
|
||||||
|
return new SolidColorBrush(Colors.Red);
|
||||||
|
if (delay <= 200)
|
||||||
|
return new SolidColorBrush(Colors.Green);
|
||||||
|
else
|
||||||
|
return new SolidColorBrush(Colors.IndianRed);
|
||||||
|
}
|
||||||
|
|
||||||
|
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
|
||||||
|
<ReactiveUI />
|
||||||
|
</Weavers>
|
|
@ -1,202 +0,0 @@
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class AddServer2Form
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServer2Form));
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
|
||||||
this.txtPreSocksPort = new System.Windows.Forms.TextBox();
|
|
||||||
this.btnEdit = new System.Windows.Forms.Button();
|
|
||||||
this.cmbCoreType = new System.Windows.Forms.ComboBox();
|
|
||||||
this.labCoreType = new System.Windows.Forms.Label();
|
|
||||||
this.btnBrowse = new System.Windows.Forms.Button();
|
|
||||||
this.txtAddress = new System.Windows.Forms.TextBox();
|
|
||||||
this.label13 = new System.Windows.Forms.Label();
|
|
||||||
this.txtRemarks = new System.Windows.Forms.TextBox();
|
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
|
||||||
this.groupBox1.SuspendLayout();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Controls.Add(this.label3);
|
|
||||||
this.groupBox1.Controls.Add(this.label2);
|
|
||||||
this.groupBox1.Controls.Add(this.txtPreSocksPort);
|
|
||||||
this.groupBox1.Controls.Add(this.btnEdit);
|
|
||||||
this.groupBox1.Controls.Add(this.cmbCoreType);
|
|
||||||
this.groupBox1.Controls.Add(this.labCoreType);
|
|
||||||
this.groupBox1.Controls.Add(this.btnBrowse);
|
|
||||||
this.groupBox1.Controls.Add(this.txtAddress);
|
|
||||||
this.groupBox1.Controls.Add(this.label13);
|
|
||||||
this.groupBox1.Controls.Add(this.txtRemarks);
|
|
||||||
this.groupBox1.Controls.Add(this.label6);
|
|
||||||
this.groupBox1.Controls.Add(this.label1);
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
|
||||||
this.groupBox1.TabStop = false;
|
|
||||||
//
|
|
||||||
// label3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label3, "label3");
|
|
||||||
this.label3.Name = "label3";
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label2, "label2");
|
|
||||||
this.label2.Name = "label2";
|
|
||||||
//
|
|
||||||
// txtPreSocksPort
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtPreSocksPort, "txtPreSocksPort");
|
|
||||||
this.txtPreSocksPort.Name = "txtPreSocksPort";
|
|
||||||
//
|
|
||||||
// btnEdit
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnEdit, "btnEdit");
|
|
||||||
this.btnEdit.Name = "btnEdit";
|
|
||||||
this.btnEdit.UseVisualStyleBackColor = true;
|
|
||||||
this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click);
|
|
||||||
//
|
|
||||||
// cmbCoreType
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmbCoreType, "cmbCoreType");
|
|
||||||
this.cmbCoreType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbCoreType.FormattingEnabled = true;
|
|
||||||
this.cmbCoreType.Name = "cmbCoreType";
|
|
||||||
//
|
|
||||||
// labCoreType
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labCoreType, "labCoreType");
|
|
||||||
this.labCoreType.Name = "labCoreType";
|
|
||||||
//
|
|
||||||
// btnBrowse
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnBrowse, "btnBrowse");
|
|
||||||
this.btnBrowse.Name = "btnBrowse";
|
|
||||||
this.btnBrowse.UseVisualStyleBackColor = true;
|
|
||||||
this.btnBrowse.Click += new System.EventHandler(this.btnBrowse_Click);
|
|
||||||
//
|
|
||||||
// txtAddress
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtAddress, "txtAddress");
|
|
||||||
this.txtAddress.Name = "txtAddress";
|
|
||||||
//
|
|
||||||
// label13
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label13, "label13");
|
|
||||||
this.label13.Name = "label13";
|
|
||||||
//
|
|
||||||
// txtRemarks
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtRemarks, "txtRemarks");
|
|
||||||
this.txtRemarks.Name = "txtRemarks";
|
|
||||||
//
|
|
||||||
// label6
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label6, "label6");
|
|
||||||
this.label6.Name = "label6";
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label1, "label1");
|
|
||||||
this.label1.Name = "label1";
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
|
||||||
this.panel2.Name = "panel2";
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel1, "panel1");
|
|
||||||
this.panel1.Name = "panel1";
|
|
||||||
//
|
|
||||||
// AddServer2Form
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.groupBox1);
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.Controls.Add(this.panel1);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
|
||||||
this.Name = "AddServer2Form";
|
|
||||||
this.Load += new System.EventHandler(this.AddServer2Form_Load);
|
|
||||||
this.groupBox1.ResumeLayout(false);
|
|
||||||
this.groupBox1.PerformLayout();
|
|
||||||
this.panel2.ResumeLayout(false);
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.GroupBox groupBox1;
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.TextBox txtRemarks;
|
|
||||||
private System.Windows.Forms.Label label6;
|
|
||||||
private System.Windows.Forms.Label label1;
|
|
||||||
private System.Windows.Forms.Panel panel1;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.Label label13;
|
|
||||||
private System.Windows.Forms.TextBox txtAddress;
|
|
||||||
private System.Windows.Forms.Button btnBrowse;
|
|
||||||
private System.Windows.Forms.ComboBox cmbCoreType;
|
|
||||||
private System.Windows.Forms.Label labCoreType;
|
|
||||||
private System.Windows.Forms.Button btnEdit;
|
|
||||||
private System.Windows.Forms.Label label2;
|
|
||||||
private System.Windows.Forms.TextBox txtPreSocksPort;
|
|
||||||
private System.Windows.Forms.Label label3;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,155 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class AddServer2Form : BaseServerForm
|
|
||||||
{
|
|
||||||
|
|
||||||
public AddServer2Form()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AddServer2Form_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
List<string> coreTypes = new List<string>();
|
|
||||||
foreach (ECoreType it in Enum.GetValues(typeof(ECoreType)))
|
|
||||||
{
|
|
||||||
if (it == ECoreType.v2rayN)
|
|
||||||
continue;
|
|
||||||
coreTypes.Add(it.ToString());
|
|
||||||
}
|
|
||||||
|
|
||||||
cmbCoreType.Items.AddRange(coreTypes.ToArray());
|
|
||||||
cmbCoreType.Items.Add(string.Empty);
|
|
||||||
|
|
||||||
txtAddress.ReadOnly = true;
|
|
||||||
if (vmessItem != null)
|
|
||||||
{
|
|
||||||
BindingServer();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vmessItem = new VmessItem
|
|
||||||
{
|
|
||||||
groupId = groupId
|
|
||||||
};
|
|
||||||
ClearServer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 绑定数据
|
|
||||||
/// </summary>
|
|
||||||
private void BindingServer()
|
|
||||||
{
|
|
||||||
txtRemarks.Text = vmessItem.remarks;
|
|
||||||
txtAddress.Text = vmessItem.address;
|
|
||||||
txtPreSocksPort.Text = vmessItem.preSocksPort.ToString();
|
|
||||||
|
|
||||||
cmbCoreType.Text = vmessItem.coreType == null ? string.Empty : vmessItem.coreType.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清除设置
|
|
||||||
/// </summary>
|
|
||||||
private void ClearServer()
|
|
||||||
{
|
|
||||||
txtRemarks.Text = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string remarks = txtRemarks.Text;
|
|
||||||
if (Utils.IsNullOrEmpty(remarks))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.PleaseFillRemarks);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Utils.IsNullOrEmpty(txtAddress.Text))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillServerAddressCustom);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
vmessItem.remarks = remarks;
|
|
||||||
vmessItem.preSocksPort = Utils.ToInt(txtPreSocksPort.Text);
|
|
||||||
|
|
||||||
if (Utils.IsNullOrEmpty(cmbCoreType.Text))
|
|
||||||
{
|
|
||||||
vmessItem.coreType = null;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vmessItem.coreType = (ECoreType)Enum.Parse(typeof(ECoreType), cmbCoreType.Text);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ConfigHandler.EditCustomServer(ref config, vmessItem) == 0)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(ResUI.OperationFailed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = Utils.IsNullOrEmpty(vmessItem.indexId) ? DialogResult.Cancel : DialogResult.OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnBrowse_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.CustomServerTips);
|
|
||||||
|
|
||||||
OpenFileDialog fileDialog = new OpenFileDialog
|
|
||||||
{
|
|
||||||
Multiselect = false,
|
|
||||||
Filter = "Config|*.json|YAML|*.yaml;*.yml|All|*.*"
|
|
||||||
};
|
|
||||||
if (fileDialog.ShowDialog() != DialogResult.OK)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
string fileName = fileDialog.FileName;
|
|
||||||
if (Utils.IsNullOrEmpty(fileName))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
vmessItem.address = fileName;
|
|
||||||
vmessItem.remarks = txtRemarks.Text;
|
|
||||||
|
|
||||||
if (ConfigHandler.AddCustomServer(ref config, vmessItem, false) == 0)
|
|
||||||
{
|
|
||||||
BindingServer();
|
|
||||||
UI.Show(ResUI.SuccessfullyImportedCustomServer);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(ResUI.FailedImportedCustomServer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnEdit_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var address = txtAddress.Text;
|
|
||||||
if (Utils.IsNullOrEmpty(address))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillServerAddressCustom);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
address = Utils.GetConfigPath(address);
|
|
||||||
Process.Start(address);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,573 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>370, 41</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Name" xml:space="preserve">
|
|
||||||
<value>label6</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>11</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>59, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbCoreType.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Name" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>* After setting this value, an socks service will be started using V2ray to provide functions such as speed display</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labCoreType.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbCoreType.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 157</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 62</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.ZOrder" xml:space="preserve">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>Custom configuration server</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 110</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
|
||||||
<value>11</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>357, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>46</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>432, 37</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labCoreType.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPreSocksPort.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>450, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnEdit.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>43</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPreSocksPort.Name" xml:space="preserve">
|
|
||||||
<value>txtPreSocksPort</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
|
||||||
<value>label1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>611, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPreSocksPort.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>45</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>22</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnEdit.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>208, 110</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnEdit.Text" xml:space="preserve">
|
|
||||||
<value>&Edit</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Text" xml:space="preserve">
|
|
||||||
<value>Alias (remarks)</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>313, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbCoreType.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>41</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 62</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Name" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>AddServer2Form</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>446, 26</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labCoreType.Name" xml:space="preserve">
|
|
||||||
<value>labCoreType</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>42</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnEdit.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPreSocksPort.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>611, 10</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 10</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.Text" xml:space="preserve">
|
|
||||||
<value>Core Type</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPreSocksPort.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 195</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnEdit.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbCoreType.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.ZOrder" xml:space="preserve">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnEdit.Name" xml:space="preserve">
|
|
||||||
<value>btnEdit</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<value>btnClose</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>229, 189</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>44</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 161</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtAddress.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbCoreType.Name" xml:space="preserve">
|
|
||||||
<value>cmbCoreType</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Text" xml:space="preserve">
|
|
||||||
<value>&Browse</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.BaseServerForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Name" xml:space="preserve">
|
|
||||||
<value>label3</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>Pre-Socks Port</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Top</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 259</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.ZOrder" xml:space="preserve">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnEdit.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labCoreType.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>47, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPreSocksPort.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>Address</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnEdit.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbCoreType.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Text" xml:space="preserve">
|
|
||||||
<value>* Fill in manually</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Name" xml:space="preserve">
|
|
||||||
<value>label2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPreSocksPort.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 199</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>611, 319</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.Name" xml:space="preserve">
|
|
||||||
<value>btnBrowse</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>611, 249</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>40</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.ZOrder" xml:space="preserve">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label13.Name" xml:space="preserve">
|
|
||||||
<value>label13</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>&Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
|
||||||
<value>9</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnEdit.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Name" xml:space="preserve">
|
|
||||||
<value>txtAddress</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtAddress.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>Server</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
|
||||||
<value>txtRemarks</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 27</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
|
|
@ -1,172 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>服务器</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>337, 41</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>* 自定义配置的Socks端口值,可不设置;当设置此值后,将使用V2ray-core额外启动一个前置Socks服务,提供分流和速度显示等功能</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>59, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>Socks端口</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnEdit.Text" xml:space="preserve">
|
|
||||||
<value>编辑(&E)</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>53, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.Text" xml:space="preserve">
|
|
||||||
<value>Core类型</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Text" xml:space="preserve">
|
|
||||||
<value>浏览(&B)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Text" xml:space="preserve">
|
|
||||||
<value>*手填,方便识别管理</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>83, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Text" xml:space="preserve">
|
|
||||||
<value>别名(remarks)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>83, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>地址(address)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>自定义配置</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,488 +0,0 @@
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class AddServerForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddServerForm));
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.panSocks = new System.Windows.Forms.Panel();
|
|
||||||
this.label17 = new System.Windows.Forms.Label();
|
|
||||||
this.txtSecurity4 = new System.Windows.Forms.TextBox();
|
|
||||||
this.label18 = new System.Windows.Forms.Label();
|
|
||||||
this.txtId4 = new System.Windows.Forms.TextBox();
|
|
||||||
this.panSs = new System.Windows.Forms.Panel();
|
|
||||||
this.txtId3 = new System.Windows.Forms.TextBox();
|
|
||||||
this.label15 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbSecurity3 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label16 = new System.Windows.Forms.Label();
|
|
||||||
this.panTrojan = new System.Windows.Forms.Panel();
|
|
||||||
this.label12 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbFlow6 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.txtId6 = new System.Windows.Forms.TextBox();
|
|
||||||
this.label14 = new System.Windows.Forms.Label();
|
|
||||||
this.panVless = new System.Windows.Forms.Panel();
|
|
||||||
this.label7 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbFlow5 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.txtId5 = new System.Windows.Forms.TextBox();
|
|
||||||
this.label9 = new System.Windows.Forms.Label();
|
|
||||||
this.label10 = new System.Windows.Forms.Label();
|
|
||||||
this.btnGUID5 = new System.Windows.Forms.Button();
|
|
||||||
this.cmbSecurity5 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label11 = new System.Windows.Forms.Label();
|
|
||||||
this.panVmess = new System.Windows.Forms.Panel();
|
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
|
||||||
this.txtId = new System.Windows.Forms.TextBox();
|
|
||||||
this.btnGUID = new System.Windows.Forms.Button();
|
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
|
||||||
this.label8 = new System.Windows.Forms.Label();
|
|
||||||
this.txtAlterId = new System.Windows.Forms.TextBox();
|
|
||||||
this.cmbSecurity = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label5 = new System.Windows.Forms.Label();
|
|
||||||
this.panAddr = new System.Windows.Forms.Panel();
|
|
||||||
this.cmbCoreType = new System.Windows.Forms.ComboBox();
|
|
||||||
this.labCoreType = new System.Windows.Forms.Label();
|
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
|
||||||
this.txtAddress = new System.Windows.Forms.TextBox();
|
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
|
||||||
this.txtPort = new System.Windows.Forms.TextBox();
|
|
||||||
this.txtRemarks = new System.Windows.Forms.TextBox();
|
|
||||||
this.panBottom = new System.Windows.Forms.Panel();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.panTop = new System.Windows.Forms.Panel();
|
|
||||||
this.panTran = new System.Windows.Forms.Panel();
|
|
||||||
this.transportControl = new v2rayN.Forms.ServerTransportControl();
|
|
||||||
this.groupBox1.SuspendLayout();
|
|
||||||
this.panSocks.SuspendLayout();
|
|
||||||
this.panSs.SuspendLayout();
|
|
||||||
this.panTrojan.SuspendLayout();
|
|
||||||
this.panVless.SuspendLayout();
|
|
||||||
this.panVmess.SuspendLayout();
|
|
||||||
this.panAddr.SuspendLayout();
|
|
||||||
this.panBottom.SuspendLayout();
|
|
||||||
this.panTran.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
this.groupBox1.Controls.Add(this.panSocks);
|
|
||||||
this.groupBox1.Controls.Add(this.panSs);
|
|
||||||
this.groupBox1.Controls.Add(this.panTrojan);
|
|
||||||
this.groupBox1.Controls.Add(this.panVless);
|
|
||||||
this.groupBox1.Controls.Add(this.panVmess);
|
|
||||||
this.groupBox1.Controls.Add(this.panAddr);
|
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
|
||||||
this.groupBox1.TabStop = false;
|
|
||||||
//
|
|
||||||
// panSocks
|
|
||||||
//
|
|
||||||
this.panSocks.Controls.Add(this.label17);
|
|
||||||
this.panSocks.Controls.Add(this.txtSecurity4);
|
|
||||||
this.panSocks.Controls.Add(this.label18);
|
|
||||||
this.panSocks.Controls.Add(this.txtId4);
|
|
||||||
resources.ApplyResources(this.panSocks, "panSocks");
|
|
||||||
this.panSocks.Name = "panSocks";
|
|
||||||
//
|
|
||||||
// label17
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label17, "label17");
|
|
||||||
this.label17.Name = "label17";
|
|
||||||
//
|
|
||||||
// txtSecurity4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtSecurity4, "txtSecurity4");
|
|
||||||
this.txtSecurity4.Name = "txtSecurity4";
|
|
||||||
//
|
|
||||||
// label18
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label18, "label18");
|
|
||||||
this.label18.Name = "label18";
|
|
||||||
//
|
|
||||||
// txtId4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtId4, "txtId4");
|
|
||||||
this.txtId4.Name = "txtId4";
|
|
||||||
//
|
|
||||||
// panSs
|
|
||||||
//
|
|
||||||
this.panSs.Controls.Add(this.txtId3);
|
|
||||||
this.panSs.Controls.Add(this.label15);
|
|
||||||
this.panSs.Controls.Add(this.cmbSecurity3);
|
|
||||||
this.panSs.Controls.Add(this.label16);
|
|
||||||
resources.ApplyResources(this.panSs, "panSs");
|
|
||||||
this.panSs.Name = "panSs";
|
|
||||||
//
|
|
||||||
// txtId3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtId3, "txtId3");
|
|
||||||
this.txtId3.Name = "txtId3";
|
|
||||||
//
|
|
||||||
// label15
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label15, "label15");
|
|
||||||
this.label15.Name = "label15";
|
|
||||||
//
|
|
||||||
// cmbSecurity3
|
|
||||||
//
|
|
||||||
this.cmbSecurity3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbSecurity3.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbSecurity3, "cmbSecurity3");
|
|
||||||
this.cmbSecurity3.Name = "cmbSecurity3";
|
|
||||||
//
|
|
||||||
// label16
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label16, "label16");
|
|
||||||
this.label16.Name = "label16";
|
|
||||||
//
|
|
||||||
// panTrojan
|
|
||||||
//
|
|
||||||
this.panTrojan.Controls.Add(this.label12);
|
|
||||||
this.panTrojan.Controls.Add(this.cmbFlow6);
|
|
||||||
this.panTrojan.Controls.Add(this.txtId6);
|
|
||||||
this.panTrojan.Controls.Add(this.label14);
|
|
||||||
resources.ApplyResources(this.panTrojan, "panTrojan");
|
|
||||||
this.panTrojan.Name = "panTrojan";
|
|
||||||
//
|
|
||||||
// label12
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label12, "label12");
|
|
||||||
this.label12.Name = "label12";
|
|
||||||
//
|
|
||||||
// cmbFlow6
|
|
||||||
//
|
|
||||||
this.cmbFlow6.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbFlow6, "cmbFlow6");
|
|
||||||
this.cmbFlow6.Name = "cmbFlow6";
|
|
||||||
//
|
|
||||||
// txtId6
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtId6, "txtId6");
|
|
||||||
this.txtId6.Name = "txtId6";
|
|
||||||
//
|
|
||||||
// label14
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label14, "label14");
|
|
||||||
this.label14.Name = "label14";
|
|
||||||
//
|
|
||||||
// panVless
|
|
||||||
//
|
|
||||||
this.panVless.Controls.Add(this.label7);
|
|
||||||
this.panVless.Controls.Add(this.cmbFlow5);
|
|
||||||
this.panVless.Controls.Add(this.txtId5);
|
|
||||||
this.panVless.Controls.Add(this.label9);
|
|
||||||
this.panVless.Controls.Add(this.label10);
|
|
||||||
this.panVless.Controls.Add(this.btnGUID5);
|
|
||||||
this.panVless.Controls.Add(this.cmbSecurity5);
|
|
||||||
this.panVless.Controls.Add(this.label11);
|
|
||||||
resources.ApplyResources(this.panVless, "panVless");
|
|
||||||
this.panVless.Name = "panVless";
|
|
||||||
//
|
|
||||||
// label7
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label7, "label7");
|
|
||||||
this.label7.Name = "label7";
|
|
||||||
//
|
|
||||||
// cmbFlow5
|
|
||||||
//
|
|
||||||
this.cmbFlow5.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbFlow5, "cmbFlow5");
|
|
||||||
this.cmbFlow5.Name = "cmbFlow5";
|
|
||||||
//
|
|
||||||
// txtId5
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtId5, "txtId5");
|
|
||||||
this.txtId5.Name = "txtId5";
|
|
||||||
//
|
|
||||||
// label9
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label9, "label9");
|
|
||||||
this.label9.Name = "label9";
|
|
||||||
//
|
|
||||||
// label10
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label10, "label10");
|
|
||||||
this.label10.Name = "label10";
|
|
||||||
//
|
|
||||||
// btnGUID5
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnGUID5, "btnGUID5");
|
|
||||||
this.btnGUID5.Name = "btnGUID5";
|
|
||||||
this.btnGUID5.UseVisualStyleBackColor = true;
|
|
||||||
this.btnGUID5.Click += new System.EventHandler(this.btnGUID_Click);
|
|
||||||
//
|
|
||||||
// cmbSecurity5
|
|
||||||
//
|
|
||||||
this.cmbSecurity5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.Simple;
|
|
||||||
this.cmbSecurity5.FormattingEnabled = true;
|
|
||||||
this.cmbSecurity5.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbSecurity5.Items")});
|
|
||||||
resources.ApplyResources(this.cmbSecurity5, "cmbSecurity5");
|
|
||||||
this.cmbSecurity5.Name = "cmbSecurity5";
|
|
||||||
//
|
|
||||||
// label11
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label11, "label11");
|
|
||||||
this.label11.Name = "label11";
|
|
||||||
//
|
|
||||||
// panVmess
|
|
||||||
//
|
|
||||||
this.panVmess.Controls.Add(this.label3);
|
|
||||||
this.panVmess.Controls.Add(this.txtId);
|
|
||||||
this.panVmess.Controls.Add(this.btnGUID);
|
|
||||||
this.panVmess.Controls.Add(this.label4);
|
|
||||||
this.panVmess.Controls.Add(this.label8);
|
|
||||||
this.panVmess.Controls.Add(this.txtAlterId);
|
|
||||||
this.panVmess.Controls.Add(this.cmbSecurity);
|
|
||||||
this.panVmess.Controls.Add(this.label5);
|
|
||||||
resources.ApplyResources(this.panVmess, "panVmess");
|
|
||||||
this.panVmess.Name = "panVmess";
|
|
||||||
//
|
|
||||||
// label3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label3, "label3");
|
|
||||||
this.label3.Name = "label3";
|
|
||||||
//
|
|
||||||
// txtId
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtId, "txtId");
|
|
||||||
this.txtId.Name = "txtId";
|
|
||||||
//
|
|
||||||
// btnGUID
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnGUID, "btnGUID");
|
|
||||||
this.btnGUID.Name = "btnGUID";
|
|
||||||
this.btnGUID.UseVisualStyleBackColor = true;
|
|
||||||
this.btnGUID.Click += new System.EventHandler(this.btnGUID_Click);
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label4, "label4");
|
|
||||||
this.label4.Name = "label4";
|
|
||||||
//
|
|
||||||
// label8
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label8, "label8");
|
|
||||||
this.label8.Name = "label8";
|
|
||||||
//
|
|
||||||
// txtAlterId
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtAlterId, "txtAlterId");
|
|
||||||
this.txtAlterId.Name = "txtAlterId";
|
|
||||||
//
|
|
||||||
// cmbSecurity
|
|
||||||
//
|
|
||||||
this.cmbSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbSecurity.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbSecurity, "cmbSecurity");
|
|
||||||
this.cmbSecurity.Name = "cmbSecurity";
|
|
||||||
//
|
|
||||||
// label5
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label5, "label5");
|
|
||||||
this.label5.Name = "label5";
|
|
||||||
//
|
|
||||||
// panAddr
|
|
||||||
//
|
|
||||||
this.panAddr.Controls.Add(this.cmbCoreType);
|
|
||||||
this.panAddr.Controls.Add(this.labCoreType);
|
|
||||||
this.panAddr.Controls.Add(this.label6);
|
|
||||||
this.panAddr.Controls.Add(this.label1);
|
|
||||||
this.panAddr.Controls.Add(this.txtAddress);
|
|
||||||
this.panAddr.Controls.Add(this.label2);
|
|
||||||
this.panAddr.Controls.Add(this.txtPort);
|
|
||||||
this.panAddr.Controls.Add(this.txtRemarks);
|
|
||||||
resources.ApplyResources(this.panAddr, "panAddr");
|
|
||||||
this.panAddr.Name = "panAddr";
|
|
||||||
//
|
|
||||||
// cmbCoreType
|
|
||||||
//
|
|
||||||
this.cmbCoreType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbCoreType.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbCoreType, "cmbCoreType");
|
|
||||||
this.cmbCoreType.Name = "cmbCoreType";
|
|
||||||
//
|
|
||||||
// labCoreType
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labCoreType, "labCoreType");
|
|
||||||
this.labCoreType.Name = "labCoreType";
|
|
||||||
//
|
|
||||||
// label6
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label6, "label6");
|
|
||||||
this.label6.Name = "label6";
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label1, "label1");
|
|
||||||
this.label1.Name = "label1";
|
|
||||||
//
|
|
||||||
// txtAddress
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtAddress, "txtAddress");
|
|
||||||
this.txtAddress.Name = "txtAddress";
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label2, "label2");
|
|
||||||
this.label2.Name = "label2";
|
|
||||||
//
|
|
||||||
// txtPort
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtPort, "txtPort");
|
|
||||||
this.txtPort.Name = "txtPort";
|
|
||||||
//
|
|
||||||
// txtRemarks
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtRemarks, "txtRemarks");
|
|
||||||
this.txtRemarks.Name = "txtRemarks";
|
|
||||||
//
|
|
||||||
// panBottom
|
|
||||||
//
|
|
||||||
this.panBottom.Controls.Add(this.btnClose);
|
|
||||||
this.panBottom.Controls.Add(this.btnOK);
|
|
||||||
resources.ApplyResources(this.panBottom, "panBottom");
|
|
||||||
this.panBottom.Name = "panBottom";
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// panTop
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panTop, "panTop");
|
|
||||||
this.panTop.Name = "panTop";
|
|
||||||
//
|
|
||||||
// panTran
|
|
||||||
//
|
|
||||||
this.panTran.Controls.Add(this.transportControl);
|
|
||||||
resources.ApplyResources(this.panTran, "panTran");
|
|
||||||
this.panTran.Name = "panTran";
|
|
||||||
//
|
|
||||||
// transportControl
|
|
||||||
//
|
|
||||||
this.transportControl.AllowXtls = false;
|
|
||||||
resources.ApplyResources(this.transportControl, "transportControl");
|
|
||||||
this.transportControl.Name = "transportControl";
|
|
||||||
//
|
|
||||||
// AddServerForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.groupBox1);
|
|
||||||
this.Controls.Add(this.panTran);
|
|
||||||
this.Controls.Add(this.panBottom);
|
|
||||||
this.Controls.Add(this.panTop);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
|
||||||
this.Name = "AddServerForm";
|
|
||||||
this.Load += new System.EventHandler(this.AddServerForm_Load);
|
|
||||||
this.groupBox1.ResumeLayout(false);
|
|
||||||
this.panSocks.ResumeLayout(false);
|
|
||||||
this.panSocks.PerformLayout();
|
|
||||||
this.panSs.ResumeLayout(false);
|
|
||||||
this.panSs.PerformLayout();
|
|
||||||
this.panTrojan.ResumeLayout(false);
|
|
||||||
this.panTrojan.PerformLayout();
|
|
||||||
this.panVless.ResumeLayout(false);
|
|
||||||
this.panVless.PerformLayout();
|
|
||||||
this.panVmess.ResumeLayout(false);
|
|
||||||
this.panVmess.PerformLayout();
|
|
||||||
this.panAddr.ResumeLayout(false);
|
|
||||||
this.panAddr.PerformLayout();
|
|
||||||
this.panBottom.ResumeLayout(false);
|
|
||||||
this.panTran.ResumeLayout(false);
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.GroupBox groupBox1;
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.TextBox txtRemarks;
|
|
||||||
private System.Windows.Forms.Label label6;
|
|
||||||
private System.Windows.Forms.Label label5;
|
|
||||||
private System.Windows.Forms.TextBox txtAlterId;
|
|
||||||
private System.Windows.Forms.Label label4;
|
|
||||||
private System.Windows.Forms.TextBox txtId;
|
|
||||||
private System.Windows.Forms.Label label3;
|
|
||||||
private System.Windows.Forms.TextBox txtPort;
|
|
||||||
private System.Windows.Forms.Label label2;
|
|
||||||
private System.Windows.Forms.TextBox txtAddress;
|
|
||||||
private System.Windows.Forms.Label label1;
|
|
||||||
private System.Windows.Forms.ComboBox cmbSecurity;
|
|
||||||
private System.Windows.Forms.Label label8;
|
|
||||||
private System.Windows.Forms.Panel panTop;
|
|
||||||
private System.Windows.Forms.Panel panBottom;
|
|
||||||
private System.Windows.Forms.Button btnGUID;
|
|
||||||
private System.Windows.Forms.Panel panTran;
|
|
||||||
private ServerTransportControl transportControl;
|
|
||||||
private System.Windows.Forms.Panel panAddr;
|
|
||||||
private System.Windows.Forms.Panel panVmess;
|
|
||||||
private System.Windows.Forms.Panel panVless;
|
|
||||||
private System.Windows.Forms.Label label7;
|
|
||||||
private System.Windows.Forms.ComboBox cmbFlow5;
|
|
||||||
private System.Windows.Forms.TextBox txtId5;
|
|
||||||
private System.Windows.Forms.Label label9;
|
|
||||||
private System.Windows.Forms.Label label10;
|
|
||||||
private System.Windows.Forms.Button btnGUID5;
|
|
||||||
private System.Windows.Forms.ComboBox cmbSecurity5;
|
|
||||||
private System.Windows.Forms.Label label11;
|
|
||||||
private System.Windows.Forms.Panel panTrojan;
|
|
||||||
private System.Windows.Forms.Label label12;
|
|
||||||
private System.Windows.Forms.ComboBox cmbFlow6;
|
|
||||||
private System.Windows.Forms.TextBox txtId6;
|
|
||||||
private System.Windows.Forms.Label label14;
|
|
||||||
private System.Windows.Forms.Panel panSs;
|
|
||||||
private System.Windows.Forms.TextBox txtId3;
|
|
||||||
private System.Windows.Forms.Label label15;
|
|
||||||
private System.Windows.Forms.ComboBox cmbSecurity3;
|
|
||||||
private System.Windows.Forms.Label label16;
|
|
||||||
private System.Windows.Forms.Panel panSocks;
|
|
||||||
private System.Windows.Forms.Label label17;
|
|
||||||
private System.Windows.Forms.TextBox txtSecurity4;
|
|
||||||
private System.Windows.Forms.Label label18;
|
|
||||||
private System.Windows.Forms.TextBox txtId4;
|
|
||||||
private System.Windows.Forms.ComboBox cmbCoreType;
|
|
||||||
private System.Windows.Forms.Label labCoreType;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,285 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class AddServerForm : BaseServerForm
|
|
||||||
{
|
|
||||||
public AddServerForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AddServerForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Text = (eConfigType).ToString();
|
|
||||||
|
|
||||||
cmbCoreType.Items.AddRange(Global.coreTypes.ToArray());
|
|
||||||
cmbCoreType.Items.Add(string.Empty);
|
|
||||||
|
|
||||||
switch (eConfigType)
|
|
||||||
{
|
|
||||||
case EConfigType.VMess:
|
|
||||||
panVmess.Dock = DockStyle.Fill;
|
|
||||||
panVmess.Visible = true;
|
|
||||||
|
|
||||||
cmbSecurity.Items.AddRange(Global.vmessSecuritys.ToArray());
|
|
||||||
break;
|
|
||||||
case EConfigType.Shadowsocks:
|
|
||||||
panSs.Dock = DockStyle.Fill;
|
|
||||||
panSs.Visible = true;
|
|
||||||
//panTran.Visible = false;
|
|
||||||
//this.Height = this.Height - panTran.Height;
|
|
||||||
|
|
||||||
cmbSecurity3.Items.AddRange(LazyConfig.Instance.GetShadowsocksSecuritys(vmessItem).ToArray());
|
|
||||||
break;
|
|
||||||
case EConfigType.Socks:
|
|
||||||
panSocks.Dock = DockStyle.Fill;
|
|
||||||
panSocks.Visible = true;
|
|
||||||
panTran.Visible = false;
|
|
||||||
Height = Height - panTran.Height;
|
|
||||||
break;
|
|
||||||
case EConfigType.VLESS:
|
|
||||||
panVless.Dock = DockStyle.Fill;
|
|
||||||
panVless.Visible = true;
|
|
||||||
transportControl.AllowXtls = true;
|
|
||||||
|
|
||||||
cmbFlow5.Items.AddRange(Global.xtlsFlows.ToArray());
|
|
||||||
break;
|
|
||||||
case EConfigType.Trojan:
|
|
||||||
panTrojan.Dock = DockStyle.Fill;
|
|
||||||
panTrojan.Visible = true;
|
|
||||||
transportControl.AllowXtls = true;
|
|
||||||
|
|
||||||
cmbFlow6.Items.AddRange(Global.xtlsFlows.ToArray());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (vmessItem != null)
|
|
||||||
{
|
|
||||||
BindingServer();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vmessItem = new VmessItem
|
|
||||||
{
|
|
||||||
groupId = groupId
|
|
||||||
};
|
|
||||||
ClearServer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 绑定数据
|
|
||||||
/// </summary>
|
|
||||||
private void BindingServer()
|
|
||||||
{
|
|
||||||
txtRemarks.Text = vmessItem.remarks;
|
|
||||||
txtAddress.Text = vmessItem.address;
|
|
||||||
txtPort.Text = vmessItem.port.ToString();
|
|
||||||
|
|
||||||
switch (eConfigType)
|
|
||||||
{
|
|
||||||
case EConfigType.VMess:
|
|
||||||
txtId.Text = vmessItem.id;
|
|
||||||
txtAlterId.Text = vmessItem.alterId.ToString();
|
|
||||||
cmbSecurity.Text = vmessItem.security;
|
|
||||||
break;
|
|
||||||
case EConfigType.Shadowsocks:
|
|
||||||
txtId3.Text = vmessItem.id;
|
|
||||||
cmbSecurity3.Text = vmessItem.security;
|
|
||||||
break;
|
|
||||||
case EConfigType.Socks:
|
|
||||||
txtId4.Text = vmessItem.id;
|
|
||||||
txtSecurity4.Text = vmessItem.security;
|
|
||||||
break;
|
|
||||||
case EConfigType.VLESS:
|
|
||||||
txtId5.Text = vmessItem.id;
|
|
||||||
cmbFlow5.Text = vmessItem.flow;
|
|
||||||
cmbSecurity5.Text = vmessItem.security;
|
|
||||||
break;
|
|
||||||
case EConfigType.Trojan:
|
|
||||||
txtId6.Text = vmessItem.id;
|
|
||||||
cmbFlow6.Text = vmessItem.flow;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
cmbCoreType.Text = vmessItem.coreType == null ? string.Empty : vmessItem.coreType.ToString();
|
|
||||||
|
|
||||||
transportControl.BindingServer(vmessItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清除设置
|
|
||||||
/// </summary>
|
|
||||||
private void ClearServer()
|
|
||||||
{
|
|
||||||
txtRemarks.Text = "";
|
|
||||||
txtAddress.Text = "";
|
|
||||||
txtPort.Text = "";
|
|
||||||
|
|
||||||
switch (eConfigType)
|
|
||||||
{
|
|
||||||
case EConfigType.VMess:
|
|
||||||
txtId.Text = "";
|
|
||||||
txtAlterId.Text = "0";
|
|
||||||
cmbSecurity.Text = Global.DefaultSecurity;
|
|
||||||
break;
|
|
||||||
case EConfigType.Shadowsocks:
|
|
||||||
txtId3.Text = "";
|
|
||||||
cmbSecurity3.Text = Global.DefaultSecurity;
|
|
||||||
break;
|
|
||||||
case EConfigType.Socks:
|
|
||||||
txtId4.Text = "";
|
|
||||||
txtSecurity4.Text = "";
|
|
||||||
break;
|
|
||||||
case EConfigType.VLESS:
|
|
||||||
txtId5.Text = "";
|
|
||||||
cmbFlow5.Text = "";
|
|
||||||
cmbSecurity5.Text = Global.None;
|
|
||||||
break;
|
|
||||||
case EConfigType.Trojan:
|
|
||||||
txtId6.Text = "";
|
|
||||||
cmbFlow6.Text = "";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
transportControl.ClearServer(vmessItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string remarks = txtRemarks.Text;
|
|
||||||
string address = txtAddress.Text;
|
|
||||||
string port = txtPort.Text;
|
|
||||||
|
|
||||||
string id = string.Empty;
|
|
||||||
string alterId = string.Empty;
|
|
||||||
string security = string.Empty;
|
|
||||||
string flow = string.Empty;
|
|
||||||
|
|
||||||
switch (eConfigType)
|
|
||||||
{
|
|
||||||
case EConfigType.VMess:
|
|
||||||
id = txtId.Text;
|
|
||||||
alterId = txtAlterId.Text;
|
|
||||||
security = cmbSecurity.Text;
|
|
||||||
break;
|
|
||||||
case EConfigType.Shadowsocks:
|
|
||||||
id = txtId3.Text;
|
|
||||||
security = cmbSecurity3.Text;
|
|
||||||
break;
|
|
||||||
case EConfigType.Socks:
|
|
||||||
id = txtId4.Text;
|
|
||||||
security = txtSecurity4.Text;
|
|
||||||
break;
|
|
||||||
case EConfigType.VLESS:
|
|
||||||
id = txtId5.Text;
|
|
||||||
flow = cmbFlow5.Text;
|
|
||||||
security = cmbSecurity5.Text;
|
|
||||||
break;
|
|
||||||
case EConfigType.Trojan:
|
|
||||||
id = txtId6.Text;
|
|
||||||
flow = cmbFlow6.Text;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Utils.IsNullOrEmpty(address))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillServerAddress);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Utils.IsNullOrEmpty(port) || !Utils.IsNumberic(port))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillCorrectServerPort);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (eConfigType == EConfigType.Shadowsocks)
|
|
||||||
{
|
|
||||||
if (Utils.IsNullOrEmpty(id))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillPassword);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Utils.IsNullOrEmpty(security))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.PleaseSelectEncryption);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (eConfigType != EConfigType.Socks)
|
|
||||||
{
|
|
||||||
if (Utils.IsNullOrEmpty(id))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillUUID);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
transportControl.EndBindingServer();
|
|
||||||
|
|
||||||
vmessItem.remarks = remarks;
|
|
||||||
vmessItem.address = address;
|
|
||||||
vmessItem.port = Utils.ToInt(port);
|
|
||||||
vmessItem.id = id;
|
|
||||||
vmessItem.alterId = Utils.ToInt(alterId);
|
|
||||||
vmessItem.security = security;
|
|
||||||
|
|
||||||
if (Utils.IsNullOrEmpty(cmbCoreType.Text))
|
|
||||||
{
|
|
||||||
vmessItem.coreType = null;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vmessItem.coreType = (ECoreType)Enum.Parse(typeof(ECoreType), cmbCoreType.Text);
|
|
||||||
}
|
|
||||||
|
|
||||||
int ret = -1;
|
|
||||||
switch (eConfigType)
|
|
||||||
{
|
|
||||||
case EConfigType.VMess:
|
|
||||||
ret = ConfigHandler.AddServer(ref config, vmessItem);
|
|
||||||
break;
|
|
||||||
case EConfigType.Shadowsocks:
|
|
||||||
ret = ConfigHandler.AddShadowsocksServer(ref config, vmessItem);
|
|
||||||
break;
|
|
||||||
case EConfigType.Socks:
|
|
||||||
ret = ConfigHandler.AddSocksServer(ref config, vmessItem);
|
|
||||||
break;
|
|
||||||
case EConfigType.VLESS:
|
|
||||||
vmessItem.flow = flow;
|
|
||||||
ret = ConfigHandler.AddVlessServer(ref config, vmessItem);
|
|
||||||
break;
|
|
||||||
case EConfigType.Trojan:
|
|
||||||
vmessItem.flow = flow;
|
|
||||||
ret = ConfigHandler.AddTrojanServer(ref config, vmessItem);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret == 0)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(ResUI.OperationFailed);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnGUID_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
txtId.Text =
|
|
||||||
txtId5.Text = Utils.GetGUID();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,275 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>服务器</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>None</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>270, 156</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>115, 61</value>
|
|
||||||
</data>
|
|
||||||
<data name="label17.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>77, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label17.Text" xml:space="preserve">
|
|
||||||
<value>用户名(可选)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label18.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label18.Text" xml:space="preserve">
|
|
||||||
<value>密码(可选)</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>None</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>142, 147</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>137, 78</value>
|
|
||||||
</data>
|
|
||||||
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label15.Text" xml:space="preserve">
|
|
||||||
<value>密码(password)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>125, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label16.Text" xml:space="preserve">
|
|
||||||
<value>加密方式(encryption)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label12.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label12.Text" xml:space="preserve">
|
|
||||||
<value>密码(password)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label14.Text" xml:space="preserve">
|
|
||||||
<value>流控(flow)</value>
|
|
||||||
</data>
|
|
||||||
<data name="panVless.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>110, 52</value>
|
|
||||||
</data>
|
|
||||||
<data name="label7.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label7.Text" xml:space="preserve">
|
|
||||||
<value>用户ID(id)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label9.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label9.Text" xml:space="preserve">
|
|
||||||
<value>流控(flow)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label10.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>101, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label10.Text" xml:space="preserve">
|
|
||||||
<value>加密(encryption)</value>
|
|
||||||
</data>
|
|
||||||
<data name="button1.Text" xml:space="preserve">
|
|
||||||
<value>生成</value>
|
|
||||||
</data>
|
|
||||||
<data name="label11.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>71, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label11.Text" xml:space="preserve">
|
|
||||||
<value>*非空(none)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>用户ID(id)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnGUID.Text" xml:space="preserve">
|
|
||||||
<value>生成(&G)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>额外ID(alterId)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label8.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label8.Text" xml:space="preserve">
|
|
||||||
<value>*随便选,建议(auto)</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>126, 65</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>211, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>加密方式(security)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>83, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Text" xml:space="preserve">
|
|
||||||
<value>别名(remarks)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>83, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>地址(address)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>端口(port)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>编辑或添加[VMess]服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnGUID5.Text" xml:space="preserve">
|
|
||||||
<value>生成</value>
|
|
||||||
</data>
|
|
||||||
<data name="labCoreType.Text" xml:space="preserve">
|
|
||||||
<value>Core类型</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,51 +0,0 @@
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class BaseForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BaseForm));
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// BaseForm
|
|
||||||
//
|
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.ClientSize = new System.Drawing.Size(292, 273);
|
|
||||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
|
||||||
this.MaximizeBox = false;
|
|
||||||
this.MinimizeBox = false;
|
|
||||||
this.Name = "BaseForm";
|
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
|
||||||
this.Text = "BaseForm";
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class BaseForm : Form
|
|
||||||
{
|
|
||||||
protected static Config config;
|
|
||||||
|
|
||||||
public BaseForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
LoadCustomIcon();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void LoadCustomIcon()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
string file = Utils.GetPath(Global.CustomIconName);
|
|
||||||
if (System.IO.File.Exists(file))
|
|
||||||
{
|
|
||||||
Icon = new System.Drawing.Icon(file);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Icon = Properties.Resources.NotifyIcon1;
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
Utils.SaveLog($"Loading custom icon failed: {e.Message}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,120 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
</root>
|
|
|
@ -1,50 +0,0 @@
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class BaseServerForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BaseServerForm));
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// BaseServerForm
|
|
||||||
//
|
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.ClientSize = new System.Drawing.Size(292, 273);
|
|
||||||
this.MaximizeBox = false;
|
|
||||||
this.MinimizeBox = false;
|
|
||||||
this.Name = "BaseServerForm";
|
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
|
||||||
this.Text = "BaseServerForm";
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class BaseServerForm : BaseForm
|
|
||||||
{
|
|
||||||
public VmessItem vmessItem = null;
|
|
||||||
public string groupId;
|
|
||||||
public EConfigType eConfigType;
|
|
||||||
|
|
||||||
public BaseServerForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,121 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
</root>
|
|
|
@ -1,186 +0,0 @@
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class GlobalHotkeySettingForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GlobalHotkeySettingForm));
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
|
||||||
this.btnReset = new System.Windows.Forms.Button();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
|
||||||
this.label5 = new System.Windows.Forms.Label();
|
|
||||||
this.txtGlobalHotkey3 = new System.Windows.Forms.TextBox();
|
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
|
||||||
this.txtGlobalHotkey2 = new System.Windows.Forms.TextBox();
|
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
|
||||||
this.txtGlobalHotkey1 = new System.Windows.Forms.TextBox();
|
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
|
||||||
this.txtGlobalHotkey0 = new System.Windows.Forms.TextBox();
|
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.panel1.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Controls.Add(this.btnReset);
|
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
|
||||||
this.panel2.Name = "panel2";
|
|
||||||
//
|
|
||||||
// btnReset
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnReset, "btnReset");
|
|
||||||
this.btnReset.Name = "btnReset";
|
|
||||||
this.btnReset.UseVisualStyleBackColor = true;
|
|
||||||
this.btnReset.Click += new System.EventHandler(this.btnReset_Click);
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel1, "panel1");
|
|
||||||
this.panel1.Controls.Add(this.label6);
|
|
||||||
this.panel1.Controls.Add(this.label5);
|
|
||||||
this.panel1.Controls.Add(this.txtGlobalHotkey3);
|
|
||||||
this.panel1.Controls.Add(this.label4);
|
|
||||||
this.panel1.Controls.Add(this.txtGlobalHotkey2);
|
|
||||||
this.panel1.Controls.Add(this.label3);
|
|
||||||
this.panel1.Controls.Add(this.txtGlobalHotkey1);
|
|
||||||
this.panel1.Controls.Add(this.label1);
|
|
||||||
this.panel1.Controls.Add(this.txtGlobalHotkey0);
|
|
||||||
this.panel1.Controls.Add(this.label2);
|
|
||||||
this.panel1.Name = "panel1";
|
|
||||||
//
|
|
||||||
// label6
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label6, "label6");
|
|
||||||
this.label6.ForeColor = System.Drawing.Color.Red;
|
|
||||||
this.label6.Name = "label6";
|
|
||||||
//
|
|
||||||
// label5
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label5, "label5");
|
|
||||||
this.label5.ForeColor = System.Drawing.Color.Red;
|
|
||||||
this.label5.Name = "label5";
|
|
||||||
//
|
|
||||||
// txtGlobalHotkey3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtGlobalHotkey3, "txtGlobalHotkey3");
|
|
||||||
this.txtGlobalHotkey3.Name = "txtGlobalHotkey3";
|
|
||||||
this.txtGlobalHotkey3.ReadOnly = true;
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label4, "label4");
|
|
||||||
this.label4.Name = "label4";
|
|
||||||
//
|
|
||||||
// txtGlobalHotkey2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtGlobalHotkey2, "txtGlobalHotkey2");
|
|
||||||
this.txtGlobalHotkey2.Name = "txtGlobalHotkey2";
|
|
||||||
this.txtGlobalHotkey2.ReadOnly = true;
|
|
||||||
//
|
|
||||||
// label3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label3, "label3");
|
|
||||||
this.label3.Name = "label3";
|
|
||||||
//
|
|
||||||
// txtGlobalHotkey1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtGlobalHotkey1, "txtGlobalHotkey1");
|
|
||||||
this.txtGlobalHotkey1.Name = "txtGlobalHotkey1";
|
|
||||||
this.txtGlobalHotkey1.ReadOnly = true;
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label1, "label1");
|
|
||||||
this.label1.Name = "label1";
|
|
||||||
//
|
|
||||||
// txtGlobalHotkey0
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtGlobalHotkey0, "txtGlobalHotkey0");
|
|
||||||
this.txtGlobalHotkey0.Name = "txtGlobalHotkey0";
|
|
||||||
this.txtGlobalHotkey0.ReadOnly = true;
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label2, "label2");
|
|
||||||
this.label2.Name = "label2";
|
|
||||||
//
|
|
||||||
// GlobalHotkeySettingForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.panel1);
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
|
||||||
this.Name = "GlobalHotkeySettingForm";
|
|
||||||
this.Load += new System.EventHandler(this.GlobalHotkeySettingForm_Load);
|
|
||||||
this.panel2.ResumeLayout(false);
|
|
||||||
this.panel1.ResumeLayout(false);
|
|
||||||
this.panel1.PerformLayout();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.Panel panel1;
|
|
||||||
private System.Windows.Forms.TextBox txtGlobalHotkey0;
|
|
||||||
private System.Windows.Forms.Label label2;
|
|
||||||
private System.Windows.Forms.TextBox txtGlobalHotkey3;
|
|
||||||
private System.Windows.Forms.Label label4;
|
|
||||||
private System.Windows.Forms.TextBox txtGlobalHotkey2;
|
|
||||||
private System.Windows.Forms.Label label3;
|
|
||||||
private System.Windows.Forms.TextBox txtGlobalHotkey1;
|
|
||||||
private System.Windows.Forms.Label label1;
|
|
||||||
private System.Windows.Forms.Label label5;
|
|
||||||
private System.Windows.Forms.Button btnReset;
|
|
||||||
private System.Windows.Forms.Label label6;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,537 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>Clear system proxy</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="btnReset.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnReset.Text" xml:space="preserve">
|
|
||||||
<value>&Reset</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnReset.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnReset.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>GlobalHotkeySettingForm</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
|
||||||
<value>label1</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>189, 138</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>34</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>37</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 215</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey1.ZOrder" xml:space="preserve">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>101, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey0.ZOrder" xml:space="preserve">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Text" xml:space="preserve">
|
|
||||||
<value>Take effect after restart</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey0.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>278, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey0.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>189, 18</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>11</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 103</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 190</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey3.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>278, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>527, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey0.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>32</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey2.Name" xml:space="preserve">
|
|
||||||
<value>txtGlobalHotkey2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Name" xml:space="preserve">
|
|
||||||
<value>label5</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>527, 242</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnReset.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>211, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
|
||||||
<value>9</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>40</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>71, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey1.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey0.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Name" xml:space="preserve">
|
|
||||||
<value>label4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey1.Name" xml:space="preserve">
|
|
||||||
<value>txtGlobalHotkey1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>33</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>Do not change system proxy</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>Set system proxy</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey3.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey0.Name" xml:space="preserve">
|
|
||||||
<value>txtGlobalHotkey0</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>39</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<value>btnClose</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>303, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 242</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnReset.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnReset.Name" xml:space="preserve">
|
|
||||||
<value>btnReset</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnReset.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>189, 58</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>36</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>31</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>278, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>189, 99</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Name" xml:space="preserve">
|
|
||||||
<value>label2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Name" xml:space="preserve">
|
|
||||||
<value>label3</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>Set directly by pressing the keyboard</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>&Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 62</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>Display GUI</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>35</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnReset.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 142</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey3.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>161, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey0.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey2.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>155, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>GlobalHotkey Setting</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>527, 302</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey3.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>38</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey3.Name" xml:space="preserve">
|
|
||||||
<value>txtGlobalHotkey3</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtGlobalHotkey3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>278, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>396, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label6.Name" xml:space="preserve">
|
|
||||||
<value>label6</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Name" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtGlobalHotkey2.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>25</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
|
|
@ -1,166 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnReset.Text" xml:space="preserve">
|
|
||||||
<value>重置(&R)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Text" xml:space="preserve">
|
|
||||||
<value>重启后生效</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>113, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>直接按键盘进行设置</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>不改变系统代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>自动配置系统代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>77, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>清除系统代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>显示主界面</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>全局热键设置</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,105 +0,0 @@
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class GroupSettingControl
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 必需的设计器变量。
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清理所有正在使用的资源。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 组件设计器生成的代码
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 设计器支持所需的方法 - 不要修改
|
|
||||||
/// 使用代码编辑器修改此方法的内容。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GroupSettingControl));
|
|
||||||
this.grbMain = new System.Windows.Forms.GroupBox();
|
|
||||||
this.btnRemove = new System.Windows.Forms.Button();
|
|
||||||
this.txtRemarks = new System.Windows.Forms.TextBox();
|
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
|
||||||
this.numSort = new System.Windows.Forms.NumericUpDown();
|
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
|
||||||
this.grbMain.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.numSort)).BeginInit();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// grbMain
|
|
||||||
//
|
|
||||||
this.grbMain.Controls.Add(this.label1);
|
|
||||||
this.grbMain.Controls.Add(this.numSort);
|
|
||||||
this.grbMain.Controls.Add(this.btnRemove);
|
|
||||||
this.grbMain.Controls.Add(this.txtRemarks);
|
|
||||||
this.grbMain.Controls.Add(this.label2);
|
|
||||||
resources.ApplyResources(this.grbMain, "grbMain");
|
|
||||||
this.grbMain.Name = "grbMain";
|
|
||||||
this.grbMain.TabStop = false;
|
|
||||||
//
|
|
||||||
// btnRemove
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnRemove, "btnRemove");
|
|
||||||
this.btnRemove.Name = "btnRemove";
|
|
||||||
this.btnRemove.UseVisualStyleBackColor = true;
|
|
||||||
this.btnRemove.Click += new System.EventHandler(this.btnRemove_Click);
|
|
||||||
//
|
|
||||||
// txtRemarks
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtRemarks, "txtRemarks");
|
|
||||||
this.txtRemarks.Name = "txtRemarks";
|
|
||||||
this.txtRemarks.Leave += new System.EventHandler(this.txtRemarks_Leave);
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label2, "label2");
|
|
||||||
this.label2.Name = "label2";
|
|
||||||
//
|
|
||||||
// numSort
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.numSort, "numSort");
|
|
||||||
this.numSort.Name = "numSort";
|
|
||||||
this.numSort.Leave += new System.EventHandler(this.txtRemarks_Leave);
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label1, "label1");
|
|
||||||
this.label1.Name = "label1";
|
|
||||||
//
|
|
||||||
// GroupSettingControl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.Controls.Add(this.grbMain);
|
|
||||||
this.Name = "GroupSettingControl";
|
|
||||||
this.Load += new System.EventHandler(this.GroupSettingControl_Load);
|
|
||||||
this.grbMain.ResumeLayout(false);
|
|
||||||
this.grbMain.PerformLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.numSort)).EndInit();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.GroupBox grbMain;
|
|
||||||
private System.Windows.Forms.TextBox txtRemarks;
|
|
||||||
private System.Windows.Forms.Label label2;
|
|
||||||
private System.Windows.Forms.Button btnRemove;
|
|
||||||
private System.Windows.Forms.Label label1;
|
|
||||||
private System.Windows.Forms.NumericUpDown numSort;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,61 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Base;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class GroupSettingControl : UserControl
|
|
||||||
{
|
|
||||||
public event ChangeEventHandler OnButtonClicked;
|
|
||||||
|
|
||||||
|
|
||||||
public GroupItem groupItem
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
public GroupSettingControl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void GroupSettingControl_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Height = grbMain.Height;
|
|
||||||
BindingSub();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void BindingSub()
|
|
||||||
{
|
|
||||||
if (groupItem != null)
|
|
||||||
{
|
|
||||||
txtRemarks.Text = groupItem.remarks.ToString();
|
|
||||||
numSort.Value = groupItem.sort;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void EndBindingSub()
|
|
||||||
{
|
|
||||||
if (groupItem != null)
|
|
||||||
{
|
|
||||||
groupItem.remarks = txtRemarks.Text.TrimEx();
|
|
||||||
groupItem.sort = Convert.ToInt32(numSort.Value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void txtRemarks_Leave(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
EndBindingSub();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnRemove_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (groupItem != null)
|
|
||||||
{
|
|
||||||
groupItem.remarks = string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
OnButtonClicked?.Invoke(sender, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,294 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 61</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>71, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>26</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>Sort number</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
|
||||||
<value>label1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="numSort.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 57</value>
|
|
||||||
</data>
|
|
||||||
<data name="numSort.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>120, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="numSort.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>25</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>numSort.Name" xml:space="preserve">
|
|
||||||
<value>numSort</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>numSort.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>numSort.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>numSort.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>525, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>24</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.Text" xml:space="preserve">
|
|
||||||
<value>Remove</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnRemove.Name" xml:space="preserve">
|
|
||||||
<value>btnRemove</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnRemove.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnRemove.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnRemove.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>292, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
|
||||||
<value>txtRemarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 25</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>47, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>Remarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Name" xml:space="preserve">
|
|
||||||
<value>label2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>619, 91</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.Text" xml:space="preserve">
|
|
||||||
<value>Group details</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>grbMain.Name" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>grbMain.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>grbMain.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>grbMain.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>619, 91</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>GroupSettingControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,136 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="btnRemove.Text" xml:space="preserve">
|
|
||||||
<value>移除</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>备注</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.Text" xml:space="preserve">
|
|
||||||
<value>分组详情</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>排序编号</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,97 +0,0 @@
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class GroupSettingForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GroupSettingForm));
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.panCon = new System.Windows.Forms.Panel();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
|
||||||
this.btnAdd = new System.Windows.Forms.Button();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// panCon
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panCon, "panCon");
|
|
||||||
this.panCon.Name = "panCon";
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
this.panel2.Controls.Add(this.btnAdd);
|
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Name = "panel2";
|
|
||||||
//
|
|
||||||
// btnAdd
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnAdd, "btnAdd");
|
|
||||||
this.btnAdd.Name = "btnAdd";
|
|
||||||
this.btnAdd.UseVisualStyleBackColor = true;
|
|
||||||
this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// GroupSettingForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.panCon);
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
|
||||||
this.Name = "GroupSettingForm";
|
|
||||||
this.Load += new System.EventHandler(this.GroupSettingForm_Load);
|
|
||||||
this.panel2.ResumeLayout(false);
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.Button btnAdd;
|
|
||||||
private System.Windows.Forms.Panel panCon;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,104 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class GroupSettingForm : BaseForm
|
|
||||||
{
|
|
||||||
List<GroupSettingControl> lstControls = new List<GroupSettingControl>();
|
|
||||||
|
|
||||||
public GroupSettingForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void GroupSettingForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (config.groupItem == null)
|
|
||||||
{
|
|
||||||
config.groupItem = new List<GroupItem>();
|
|
||||||
}
|
|
||||||
|
|
||||||
RefreshGroupsView();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 刷新列表
|
|
||||||
/// </summary>
|
|
||||||
private void RefreshGroupsView()
|
|
||||||
{
|
|
||||||
panCon.Controls.Clear();
|
|
||||||
lstControls.Clear();
|
|
||||||
|
|
||||||
for (int k = config.groupItem.Count - 1; k >= 0; k--)
|
|
||||||
{
|
|
||||||
GroupItem item = config.groupItem[k];
|
|
||||||
if (Utils.IsNullOrEmpty(item.remarks))
|
|
||||||
{
|
|
||||||
if (!Utils.IsNullOrEmpty(item.id))
|
|
||||||
{
|
|
||||||
ConfigHandler.RemoveGroupItem(ref config, item.id);
|
|
||||||
}
|
|
||||||
config.groupItem.RemoveAt(k);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (GroupItem item in config.groupItem)
|
|
||||||
{
|
|
||||||
GroupSettingControl control = new GroupSettingControl();
|
|
||||||
control.OnButtonClicked += Control_OnButtonClicked;
|
|
||||||
control.groupItem = item;
|
|
||||||
control.Dock = DockStyle.Top;
|
|
||||||
|
|
||||||
panCon.Controls.Add(control);
|
|
||||||
panCon.Controls.SetChildIndex(control, 0);
|
|
||||||
|
|
||||||
lstControls.Add(control);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Control_OnButtonClicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
RefreshGroupsView();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (ConfigHandler.SaveGroupItem(ref config) == 0)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(ResUI.OperationFailed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnAdd_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
AddGroup();
|
|
||||||
|
|
||||||
RefreshGroupsView();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void AddGroup()
|
|
||||||
{
|
|
||||||
GroupItem groupItem = new GroupItem
|
|
||||||
{
|
|
||||||
id = string.Empty,
|
|
||||||
remarks = "Group"
|
|
||||||
};
|
|
||||||
config.groupItem.Add(groupItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,273 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="btnClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>448, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>&Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<value>btnClose</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.AutoScroll" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>614, 351</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panCon.Name" xml:space="preserve">
|
|
||||||
<value>panCon</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panCon.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panCon.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panCon.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>47, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.Text" xml:space="preserve">
|
|
||||||
<value>&Add</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnAdd.Name" xml:space="preserve">
|
|
||||||
<value>btnAdd</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnAdd.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnAdd.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnAdd.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>355, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 351</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>614, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>614, 411</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>Group settings</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>GroupSettingForm</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,132 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.Text" xml:space="preserve">
|
|
||||||
<value>添加(&A)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>服务器分组设置</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,585 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="menuAddVmessServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddVmessServer.Text" xml:space="preserve">
|
|
||||||
<value>添加[VMess]服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddVlessServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddVlessServer.Text" xml:space="preserve">
|
|
||||||
<value>添加[VLESS]服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddShadowsocksServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddShadowsocksServer.Text" xml:space="preserve">
|
|
||||||
<value>添加[Shadowsocks]服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddSocksServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddSocksServer.Text" xml:space="preserve">
|
|
||||||
<value>添加[Socks]服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddTrojanServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddTrojanServer.Text" xml:space="preserve">
|
|
||||||
<value>添加[Trojan]服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddCustomServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddCustomServer.Text" xml:space="preserve">
|
|
||||||
<value>添加自定义配置服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddServers.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddServers.Text" xml:space="preserve">
|
|
||||||
<value>从剪贴板导入批量URL (Ctrl+V)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuScanScreen.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuScanScreen.Text" xml:space="preserve">
|
|
||||||
<value>扫描屏幕上的二维码 (Ctrl+S)</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>297, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemoveServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemoveServer.Text" xml:space="preserve">
|
|
||||||
<value>移除所选服务器(多选) (Delete)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemoveDuplicateServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemoveDuplicateServer.Text" xml:space="preserve">
|
|
||||||
<value>移除重复的服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuCopyServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuCopyServer.Text" xml:space="preserve">
|
|
||||||
<value>克隆所选服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSetDefaultServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSetDefaultServer.Text" xml:space="preserve">
|
|
||||||
<value>设为活动服务器 (Enter)</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>297, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Text" xml:space="preserve">
|
|
||||||
<value>上移至顶 (T)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Text" xml:space="preserve">
|
|
||||||
<value>上移 (U)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Text" xml:space="preserve">
|
|
||||||
<value>下移 (D)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Text" xml:space="preserve">
|
|
||||||
<value>下移至底 (B)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>全选 (Ctrl+A)</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator9.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>297, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuPingServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器延迟Ping(多选) (Ctrl+P)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuTcpingServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuTcpingServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器延迟Tcping(多选) (Ctrl+O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRealPingServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRealPingServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器真连接延迟(多选) (Ctrl+R)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSpeedServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSpeedServer.Text" xml:space="preserve">
|
|
||||||
<value>测试服务器速度(多选) (Ctrl+T)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbTestMe.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbTestMe.Text" xml:space="preserve">
|
|
||||||
<value>测试当前服务状态</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuClearServerStatistics.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuClearServerStatistics.Text" xml:space="preserve">
|
|
||||||
<value>清除所有服务统计数据</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>297, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExport2ClientConfig.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExport2ClientConfig.Text" xml:space="preserve">
|
|
||||||
<value>导出所选服务器为客户端配置</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExport2ServerConfig.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExport2ServerConfig.Text" xml:space="preserve">
|
|
||||||
<value>导出所选服务器为服务端配置</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExport2ShareUrl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExport2ShareUrl.Text" xml:space="preserve">
|
|
||||||
<value>批量导出分享URL至剪贴板(多选) (Ctrl+C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExport2SubContent.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExport2SubContent.Text" xml:space="preserve">
|
|
||||||
<value>批量导出订阅内容至剪贴板(多选)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>73, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbServer.Text" xml:space="preserve">
|
|
||||||
<value> 服务器 </value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>301, 622</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvServers.Items" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
|
||||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0
|
|
||||||
ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
|
|
||||||
PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA
|
|
||||||
BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5
|
|
||||||
bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz
|
|
||||||
dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA
|
|
||||||
CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5
|
|
||||||
bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3
|
|
||||||
////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0
|
|
||||||
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopyAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxClear.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxAddRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>222, 136</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
|
||||||
<value>网速显示未启用</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepClear.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>172, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepClear.Text" xml:space="preserve">
|
|
||||||
<value>清除系统代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuGlobal.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>172, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuGlobal.Text" xml:space="preserve">
|
|
||||||
<value>自动配置系统代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepNothing.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>172, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuKeepNothing.Text" xml:space="preserve">
|
|
||||||
<value>不改变系统代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSysAgentMode.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>260, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSysAgentMode.Text" xml:space="preserve">
|
|
||||||
<value>系统代理</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRoutings.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>260, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRoutings.Text" xml:space="preserve">
|
|
||||||
<value>路由</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServers.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>260, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServers.Text" xml:space="preserve">
|
|
||||||
<value>服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServers2.ToolTipText" xml:space="preserve">
|
|
||||||
<value>服务器</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator13.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>257, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddServers2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>260, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAddServers2.Text" xml:space="preserve">
|
|
||||||
<value>从剪贴板导入批量URL</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuScanScreen2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>260, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuScanScreen2.Text" xml:space="preserve">
|
|
||||||
<value>扫描屏幕上的二维码</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuUpdateSubscriptions.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>260, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuUpdateSubscriptions.Text" xml:space="preserve">
|
|
||||||
<value>更新订阅(不通过代理)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuUpdateSubViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>260, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuUpdateSubViaProxy.Text" xml:space="preserve">
|
|
||||||
<value>更新订阅(通过代理)</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>257, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExit.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>260, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExit.Text" xml:space="preserve">
|
|
||||||
<value>退出</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsMain.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>261, 221</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubSetting.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>180, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubSetting.Text" xml:space="preserve">
|
|
||||||
<value>订阅设置</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>180, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubUpdate.Text" xml:space="preserve">
|
|
||||||
<value>更新订阅(不通过代理)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubUpdateViaProxy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>180, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubUpdateViaProxy.Text" xml:space="preserve">
|
|
||||||
<value>更新订阅(通过代理)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSub.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>61, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSub.Text" xml:space="preserve">
|
|
||||||
<value> 订阅 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbQRCodeSwitch.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>52, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbQRCodeSwitch.Text" xml:space="preserve">
|
|
||||||
<value> 分享 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbOptionSetting.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbOptionSetting.Text" xml:space="preserve">
|
|
||||||
<value>参数设置</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbRoutingSetting.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbRoutingSetting.Text" xml:space="preserve">
|
|
||||||
<value>路由设置</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbGlobalHotkeySetting.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbGlobalHotkeySetting.Text" xml:space="preserve">
|
|
||||||
<value>全局热键设置</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbGroupSetting.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbGroupSetting.Text" xml:space="preserve">
|
|
||||||
<value>服务器分组设置</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator14.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>186, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbBackupGuiNConfig.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbBackupGuiNConfig.Text" xml:space="preserve">
|
|
||||||
<value>备份v2rayN配置文件</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSetting.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>61, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSetting.Text" xml:space="preserve">
|
|
||||||
<value> 设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbReload.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>76, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbReload.Text" xml:space="preserve">
|
|
||||||
<value> 重启服务 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateN.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>168, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateN.Text" xml:space="preserve">
|
|
||||||
<value>v2rayN</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>168, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateCore.Text" xml:space="preserve">
|
|
||||||
<value>v2fly_v5-Core</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateXrayCore.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>168, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateXrayCore.Text" xml:space="preserve">
|
|
||||||
<value>Xray-Core</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator15.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>165, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateGeoSite.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>168, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateGeoIP.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>168, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdate.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>85, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdate.Text" xml:space="preserve">
|
|
||||||
<value> 检查更新 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbAbout.Text" xml:space="preserve">
|
|
||||||
<value>v2rayN 项目</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbV2rayWebsite.Text" xml:space="preserve">
|
|
||||||
<value>V2Ray 官网</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbHelp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>69, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbHelp.Text" xml:space="preserve">
|
|
||||||
<value> 帮助 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbPromotion.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>68, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbPromotion.Text" xml:space="preserve">
|
|
||||||
<value> 推广 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>76, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbClose.Text" xml:space="preserve">
|
|
||||||
<value> 关闭窗口 </value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveToGroup.Text" xml:space="preserve">
|
|
||||||
<value>移至分组</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveEvent.Text" xml:space="preserve">
|
|
||||||
<value>上下移至</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServerFilter.Text" xml:space="preserve">
|
|
||||||
<value>设置服务器过滤器 (Ctrl+F)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateClashCore.Text" xml:space="preserve">
|
|
||||||
<value>Update clash Core</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateClashMetaCore.Text" xml:space="preserve">
|
|
||||||
<value>Update Clash.Meta Core</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSortServerResult.Text" xml:space="preserve">
|
|
||||||
<value>按测试结果排序 (Ctrl+E)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbCheckUpdateSagerNetCore.Text" xml:space="preserve">
|
|
||||||
<value>SagerNet-Core</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubGroupUpdate.Text" xml:space="preserve">
|
|
||||||
<value>更新当前分组订阅(不通过代理)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbSubGroupUpdateViaProxy.Text" xml:space="preserve">
|
|
||||||
<value>更新当前分组订阅(通过代理)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tsbRestoreGuiNConfig.Text" xml:space="preserve">
|
|
||||||
<value>恢复v2rayN配置文件</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,204 +0,0 @@
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class MainMsgControl
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 必需的设计器变量。
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清理所有正在使用的资源。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 组件设计器生成的代码
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 设计器支持所需的方法 - 不要修改
|
|
||||||
/// 使用代码编辑器修改此方法的内容。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
this.components = new System.ComponentModel.Container();
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainMsgControl));
|
|
||||||
this.txtMsgBox = new System.Windows.Forms.TextBox();
|
|
||||||
this.cmsMsgBox = new System.Windows.Forms.ContextMenuStrip(this.components);
|
|
||||||
this.menuMsgBoxSelectAll = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxCopy = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxCopyAll = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxClear = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxAddRoutingRule = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMsgBoxFilter = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.gbMsgTitle = new System.Windows.Forms.GroupBox();
|
|
||||||
this.ssMain = new System.Windows.Forms.StatusStrip();
|
|
||||||
this.toolSslInboundInfo = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslBlank1 = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslRoutingRule = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslBlank2 = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslServerSpeed = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.toolSslBlank4 = new System.Windows.Forms.ToolStripStatusLabel();
|
|
||||||
this.cmsMsgBox.SuspendLayout();
|
|
||||||
this.gbMsgTitle.SuspendLayout();
|
|
||||||
this.ssMain.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// txtMsgBox
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtMsgBox, "txtMsgBox");
|
|
||||||
this.txtMsgBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(49)))), ((int)(((byte)(52)))));
|
|
||||||
this.txtMsgBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
|
||||||
this.txtMsgBox.ContextMenuStrip = this.cmsMsgBox;
|
|
||||||
this.txtMsgBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(226)))), ((int)(((byte)(228)))));
|
|
||||||
this.txtMsgBox.Name = "txtMsgBox";
|
|
||||||
this.txtMsgBox.ReadOnly = true;
|
|
||||||
this.txtMsgBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtMsgBox_KeyDown);
|
|
||||||
//
|
|
||||||
// cmsMsgBox
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmsMsgBox, "cmsMsgBox");
|
|
||||||
this.cmsMsgBox.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.menuMsgBoxSelectAll,
|
|
||||||
this.menuMsgBoxCopy,
|
|
||||||
this.menuMsgBoxCopyAll,
|
|
||||||
this.menuMsgBoxClear,
|
|
||||||
this.menuMsgBoxAddRoutingRule,
|
|
||||||
this.menuMsgBoxFilter});
|
|
||||||
this.cmsMsgBox.Name = "cmsMsgBox";
|
|
||||||
//
|
|
||||||
// menuMsgBoxSelectAll
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMsgBoxSelectAll, "menuMsgBoxSelectAll");
|
|
||||||
this.menuMsgBoxSelectAll.Name = "menuMsgBoxSelectAll";
|
|
||||||
this.menuMsgBoxSelectAll.Click += new System.EventHandler(this.menuMsgBoxSelectAll_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxCopy
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMsgBoxCopy, "menuMsgBoxCopy");
|
|
||||||
this.menuMsgBoxCopy.Name = "menuMsgBoxCopy";
|
|
||||||
this.menuMsgBoxCopy.Click += new System.EventHandler(this.menuMsgBoxCopy_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxCopyAll
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMsgBoxCopyAll, "menuMsgBoxCopyAll");
|
|
||||||
this.menuMsgBoxCopyAll.Name = "menuMsgBoxCopyAll";
|
|
||||||
this.menuMsgBoxCopyAll.Click += new System.EventHandler(this.menuMsgBoxCopyAll_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxClear
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMsgBoxClear, "menuMsgBoxClear");
|
|
||||||
this.menuMsgBoxClear.Name = "menuMsgBoxClear";
|
|
||||||
this.menuMsgBoxClear.Click += new System.EventHandler(this.menuMsgBoxClear_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxAddRoutingRule
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMsgBoxAddRoutingRule, "menuMsgBoxAddRoutingRule");
|
|
||||||
this.menuMsgBoxAddRoutingRule.Name = "menuMsgBoxAddRoutingRule";
|
|
||||||
this.menuMsgBoxAddRoutingRule.Click += new System.EventHandler(this.menuMsgBoxAddRoutingRule_Click);
|
|
||||||
//
|
|
||||||
// menuMsgBoxFilter
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMsgBoxFilter, "menuMsgBoxFilter");
|
|
||||||
this.menuMsgBoxFilter.Name = "menuMsgBoxFilter";
|
|
||||||
this.menuMsgBoxFilter.Click += new System.EventHandler(this.menuMsgBoxFilter_Click);
|
|
||||||
//
|
|
||||||
// gbMsgTitle
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.gbMsgTitle, "gbMsgTitle");
|
|
||||||
this.gbMsgTitle.Controls.Add(this.txtMsgBox);
|
|
||||||
this.gbMsgTitle.Controls.Add(this.ssMain);
|
|
||||||
this.gbMsgTitle.Name = "gbMsgTitle";
|
|
||||||
this.gbMsgTitle.TabStop = false;
|
|
||||||
//
|
|
||||||
// ssMain
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.ssMain, "ssMain");
|
|
||||||
this.ssMain.ImageScalingSize = new System.Drawing.Size(20, 20);
|
|
||||||
this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.toolSslInboundInfo,
|
|
||||||
this.toolSslBlank1,
|
|
||||||
this.toolSslRoutingRule,
|
|
||||||
this.toolSslBlank2,
|
|
||||||
this.toolSslServerSpeed,
|
|
||||||
this.toolSslBlank4});
|
|
||||||
this.ssMain.Name = "ssMain";
|
|
||||||
this.ssMain.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.ssMain_ItemClicked);
|
|
||||||
//
|
|
||||||
// toolSslInboundInfo
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslInboundInfo, "toolSslInboundInfo");
|
|
||||||
this.toolSslInboundInfo.Name = "toolSslInboundInfo";
|
|
||||||
//
|
|
||||||
// toolSslBlank1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslBlank1, "toolSslBlank1");
|
|
||||||
this.toolSslBlank1.Name = "toolSslBlank1";
|
|
||||||
this.toolSslBlank1.Spring = true;
|
|
||||||
//
|
|
||||||
// toolSslRoutingRule
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslRoutingRule, "toolSslRoutingRule");
|
|
||||||
this.toolSslRoutingRule.Name = "toolSslRoutingRule";
|
|
||||||
//
|
|
||||||
// toolSslBlank2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslBlank2, "toolSslBlank2");
|
|
||||||
this.toolSslBlank2.Name = "toolSslBlank2";
|
|
||||||
this.toolSslBlank2.Spring = true;
|
|
||||||
//
|
|
||||||
// toolSslServerSpeed
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslServerSpeed, "toolSslServerSpeed");
|
|
||||||
this.toolSslServerSpeed.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
|
||||||
this.toolSslServerSpeed.Name = "toolSslServerSpeed";
|
|
||||||
//
|
|
||||||
// toolSslBlank4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolSslBlank4, "toolSslBlank4");
|
|
||||||
this.toolSslBlank4.Name = "toolSslBlank4";
|
|
||||||
//
|
|
||||||
// MainMsgControl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.Controls.Add(this.gbMsgTitle);
|
|
||||||
this.Name = "MainMsgControl";
|
|
||||||
this.Load += new System.EventHandler(this.MainMsgControl_Load);
|
|
||||||
this.cmsMsgBox.ResumeLayout(false);
|
|
||||||
this.gbMsgTitle.ResumeLayout(false);
|
|
||||||
this.gbMsgTitle.PerformLayout();
|
|
||||||
this.ssMain.ResumeLayout(false);
|
|
||||||
this.ssMain.PerformLayout();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.TextBox txtMsgBox;
|
|
||||||
private System.Windows.Forms.ContextMenuStrip cmsMsgBox;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxSelectAll;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxCopy;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxCopyAll;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxClear;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxAddRoutingRule;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMsgBoxFilter;
|
|
||||||
private System.Windows.Forms.GroupBox gbMsgTitle;
|
|
||||||
private System.Windows.Forms.StatusStrip ssMain;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslInboundInfo;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank1;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslRoutingRule;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank2;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslServerSpeed;
|
|
||||||
private System.Windows.Forms.ToolStripStatusLabel toolSslBlank4;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,210 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Data;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Base;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class MainMsgControl : UserControl
|
|
||||||
{
|
|
||||||
private string _msgFilter = string.Empty;
|
|
||||||
delegate void AppendTextDelegate(string text);
|
|
||||||
|
|
||||||
public MainMsgControl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void MainMsgControl_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
_msgFilter = Utils.RegReadValue(Global.MyRegPath, Utils.MainMsgFilterKey, "");
|
|
||||||
if (!Utils.IsNullOrEmpty(_msgFilter))
|
|
||||||
{
|
|
||||||
gbMsgTitle.Text = string.Format(ResUI.MsgInformationTitle, _msgFilter);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 提示信息
|
|
||||||
|
|
||||||
public void AppendText(string text)
|
|
||||||
{
|
|
||||||
if (txtMsgBox.InvokeRequired)
|
|
||||||
{
|
|
||||||
Invoke(new AppendTextDelegate(AppendText), text);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!Utils.IsNullOrEmpty(_msgFilter))
|
|
||||||
{
|
|
||||||
if (!Regex.IsMatch(text, _msgFilter))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//this.txtMsgBox.AppendText(text);
|
|
||||||
ShowMsg(text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 提示信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="msg"></param>
|
|
||||||
private void ShowMsg(string msg)
|
|
||||||
{
|
|
||||||
if (txtMsgBox.Lines.Length > 999)
|
|
||||||
{
|
|
||||||
ClearMsg();
|
|
||||||
}
|
|
||||||
txtMsgBox.AppendText(msg);
|
|
||||||
if (!msg.EndsWith(Environment.NewLine))
|
|
||||||
{
|
|
||||||
txtMsgBox.AppendText(Environment.NewLine);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清除信息
|
|
||||||
/// </summary>
|
|
||||||
public void ClearMsg()
|
|
||||||
{
|
|
||||||
txtMsgBox.Invoke((Action)delegate
|
|
||||||
{
|
|
||||||
txtMsgBox.Clear();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DisplayToolStatus(Config config)
|
|
||||||
{
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
sb.Append($"{ResUI.LabLocal}:");
|
|
||||||
sb.Append($"[{Global.InboundSocks}:{config.GetLocalPort(Global.InboundSocks)}]");
|
|
||||||
sb.Append(" | ");
|
|
||||||
if (config.sysProxyType == ESysProxyType.ForcedChange)
|
|
||||||
{
|
|
||||||
sb.Append($"[{Global.InboundHttp}({ResUI.SystemProxy}):{config.GetLocalPort(Global.InboundHttp)}]");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sb.Append($"[{Global.InboundHttp}:{config.GetLocalPort(Global.InboundHttp)}]");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config.inbound[0].allowLANConn)
|
|
||||||
{
|
|
||||||
sb.Append($" {ResUI.LabLAN}:");
|
|
||||||
sb.Append($"[{Global.InboundSocks}:{config.GetLocalPort(Global.InboundSocks2)}]");
|
|
||||||
sb.Append(" | ");
|
|
||||||
sb.Append($"[{Global.InboundHttp}:{config.GetLocalPort(Global.InboundHttp2)}]");
|
|
||||||
}
|
|
||||||
|
|
||||||
SetToolSslInfo("inbound", sb.ToString());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetToolSslInfo(string type, string value)
|
|
||||||
{
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case "speed":
|
|
||||||
toolSslServerSpeed.Text = value;
|
|
||||||
break;
|
|
||||||
case "inbound":
|
|
||||||
toolSslInboundInfo.Text = value;
|
|
||||||
break;
|
|
||||||
case "routing":
|
|
||||||
toolSslRoutingRule.Text = value;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ScrollToCaret()
|
|
||||||
{
|
|
||||||
txtMsgBox.ScrollToCaret();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
#region MsgBoxMenu
|
|
||||||
private void menuMsgBoxSelectAll_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
txtMsgBox.Focus();
|
|
||||||
txtMsgBox.SelectAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuMsgBoxCopy_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var data = txtMsgBox.SelectedText.TrimEx();
|
|
||||||
Utils.SetClipboardData(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuMsgBoxCopyAll_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var data = txtMsgBox.Text;
|
|
||||||
Utils.SetClipboardData(data);
|
|
||||||
}
|
|
||||||
private void menuMsgBoxClear_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
txtMsgBox.Clear();
|
|
||||||
}
|
|
||||||
private void menuMsgBoxAddRoutingRule_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
menuMsgBoxCopy_Click(null, null);
|
|
||||||
var fm = new RoutingSettingForm();
|
|
||||||
fm.ShowDialog();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void txtMsgBox_KeyDown(object sender, KeyEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.Control)
|
|
||||||
{
|
|
||||||
switch (e.KeyCode)
|
|
||||||
{
|
|
||||||
case Keys.A:
|
|
||||||
menuMsgBoxSelectAll_Click(null, null);
|
|
||||||
break;
|
|
||||||
case Keys.C:
|
|
||||||
menuMsgBoxCopy_Click(null, null);
|
|
||||||
break;
|
|
||||||
case Keys.V:
|
|
||||||
menuMsgBoxAddRoutingRule_Click(null, null);
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
private void menuMsgBoxFilter_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var fm = new MsgFilterSetForm();
|
|
||||||
fm.MsgFilter = _msgFilter;
|
|
||||||
fm.ShowDefFilter = true;
|
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
_msgFilter = fm.MsgFilter;
|
|
||||||
gbMsgTitle.Text = string.Format(ResUI.MsgInformationTitle, _msgFilter);
|
|
||||||
Utils.RegWriteValue(Global.MyRegPath, Utils.MainMsgFilterKey, _msgFilter);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ssMain_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
|
||||||
{
|
|
||||||
if (!Utils.IsNullOrEmpty(e.ClickedItem.Text))
|
|
||||||
{
|
|
||||||
Utils.SetClipboardData(e.ClickedItem.Text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,384 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name=">>toolSslRoutingRule.Name" xml:space="preserve">
|
|
||||||
<value>toolSslRoutingRule</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>gbMsgTitle.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>Select All (Ctrl+A)</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>ssMain.Name" xml:space="preserve">
|
|
||||||
<value>ssMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxSelectAll.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxSelectAll</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="toolSslServerSpeed.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>False</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxClear.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslServerSpeed.Name" xml:space="preserve">
|
|
||||||
<value>toolSslServerSpeed</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="menuMsgBoxSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxCopyAll.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxCopyAll</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.MaxLength" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>gbMsgTitle.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="ssMain.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>3, 221</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxAddRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslInboundInfo.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>0, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslInboundInfo.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>80, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslInboundInfo.Name" xml:space="preserve">
|
|
||||||
<value>toolSslInboundInfo</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgBox.Name" xml:space="preserve">
|
|
||||||
<value>txtMsgBox</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>0, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxFilter.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank1.Font" type="System.Drawing.Font, System.Drawing">
|
|
||||||
<value>微软雅黑, 8pt</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>ssMain.Parent" xml:space="preserve">
|
|
||||||
<value>gbMsgTitle</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopyAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslRoutingRule.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxAddRoutingRule.Text" xml:space="preserve">
|
|
||||||
<value>Add Routing Rule (Ctrl+V)</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
|
|
||||||
<value>MiddleRight</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.Font" type="System.Drawing.Font, System.Drawing">
|
|
||||||
<value>微软雅黑, 8pt</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbMsgTitle.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>696, 246</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslInboundInfo.Text" xml:space="preserve">
|
|
||||||
<value>InboundInfo</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxAddRoutingRule.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxClear.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxClear</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbMsgTitle.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxCopy.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>3, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank4.Name" xml:space="preserve">
|
|
||||||
<value>toolSslBlank4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgBox.Parent" xml:space="preserve">
|
|
||||||
<value>gbMsgTitle</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbMsgTitle.Text" xml:space="preserve">
|
|
||||||
<value>Informations</value>
|
|
||||||
</data>
|
|
||||||
<data name="ssMain.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>172, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxClear.Text" xml:space="preserve">
|
|
||||||
<value>Clear All</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="txtMsgBox.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
|
|
||||||
<value>Vertical</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>gbMsgTitle.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="ssMain.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>690, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmsMsgBox.Name" xml:space="preserve">
|
|
||||||
<value>cmsMsgBox</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmsMsgBox.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>ssMain.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbMsgTitle.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>690, 204</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxClear.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>227, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>172, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank4.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>MainMsgControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbMsgTitle.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>696, 246</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank1.Name" xml:space="preserve">
|
|
||||||
<value>toolSslBlank1</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.RightToLeft" type="System.Windows.Forms.RightToLeft, System.Windows.Forms">
|
|
||||||
<value>No</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopyAll.Text" xml:space="preserve">
|
|
||||||
<value>Copy All</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>250, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="ssMain.Text" xml:space="preserve">
|
|
||||||
<value>statusStrip1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxAddRoutingRule.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxAddRoutingRule</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslBlank2.Name" xml:space="preserve">
|
|
||||||
<value>toolSslBlank2</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxFilter.Text" xml:space="preserve">
|
|
||||||
<value>Set message filters</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
|
||||||
<value>SPEED Disabled</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgBox.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>gbMsgTitle.Name" xml:space="preserve">
|
|
||||||
<value>gbMsgTitle</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxFilter.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxFilter</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>ssMain.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxSelectAll.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxCopy.Name" xml:space="preserve">
|
|
||||||
<value>menuMsgBoxCopy</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgBox.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolSslServerSpeed.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopy.Text" xml:space="preserve">
|
|
||||||
<value>Copy (Ctrl+C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>228, 136</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMsgBoxCopyAll.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="ssMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>131, 18</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="cmsMsgBox.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>17, 17</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
|
|
@ -1,172 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="menuMsgBoxSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>全选 (Ctrl+A)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopy.Text" xml:space="preserve">
|
|
||||||
<value>复制 (Ctrl+C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopyAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxCopyAll.Text" xml:space="preserve">
|
|
||||||
<value>复制所有</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxClear.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxClear.Text" xml:space="preserve">
|
|
||||||
<value>清除所有</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxAddRoutingRule.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxAddRoutingRule.Text" xml:space="preserve">
|
|
||||||
<value>快速添加路由规则 (Ctrl+V)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxFilter.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>221, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMsgBoxFilter.Text" xml:space="preserve">
|
|
||||||
<value>设置信息过滤器</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsMsgBox.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>222, 136</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>157, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslBlank2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>157, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbMsgTitle.Text" xml:space="preserve">
|
|
||||||
<value>信息</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolSslServerSpeed.Text" xml:space="preserve">
|
|
||||||
<value>网速显示未启用</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,129 +0,0 @@
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class MsgFilterSetForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MsgFilterSetForm));
|
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.btnFilderProxy = new System.Windows.Forms.Button();
|
|
||||||
this.btnFilterDirect = new System.Windows.Forms.Button();
|
|
||||||
this.txtMsgFilter = new System.Windows.Forms.TextBox();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.btnClear = new System.Windows.Forms.Button();
|
|
||||||
this.groupBox1.SuspendLayout();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
this.groupBox1.Controls.Add(this.btnFilderProxy);
|
|
||||||
this.groupBox1.Controls.Add(this.btnFilterDirect);
|
|
||||||
this.groupBox1.Controls.Add(this.txtMsgFilter);
|
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
|
||||||
this.groupBox1.TabStop = false;
|
|
||||||
//
|
|
||||||
// btnFilderProxy
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnFilderProxy, "btnFilderProxy");
|
|
||||||
this.btnFilderProxy.Name = "btnFilderProxy";
|
|
||||||
this.btnFilderProxy.UseVisualStyleBackColor = true;
|
|
||||||
this.btnFilderProxy.Click += new System.EventHandler(this.btnFilderProxy_Click);
|
|
||||||
//
|
|
||||||
// btnFilterDirect
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnFilterDirect, "btnFilterDirect");
|
|
||||||
this.btnFilterDirect.Name = "btnFilterDirect";
|
|
||||||
this.btnFilterDirect.UseVisualStyleBackColor = true;
|
|
||||||
this.btnFilterDirect.Click += new System.EventHandler(this.btnFilterDirect_Click);
|
|
||||||
//
|
|
||||||
// txtMsgFilter
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtMsgFilter, "txtMsgFilter");
|
|
||||||
this.txtMsgFilter.Name = "txtMsgFilter";
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
this.panel2.Controls.Add(this.btnClear);
|
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Name = "panel2";
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// btnClear
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnClear, "btnClear");
|
|
||||||
this.btnClear.Name = "btnClear";
|
|
||||||
this.btnClear.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClear.Click += new System.EventHandler(this.btnClear_Click);
|
|
||||||
//
|
|
||||||
// MsgFilterSetForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.groupBox1);
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.Name = "MsgFilterSetForm";
|
|
||||||
this.Load += new System.EventHandler(this.MsgFilterSetForm_Load);
|
|
||||||
this.groupBox1.ResumeLayout(false);
|
|
||||||
this.groupBox1.PerformLayout();
|
|
||||||
this.panel2.ResumeLayout(false);
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.GroupBox groupBox1;
|
|
||||||
private System.Windows.Forms.TextBox txtMsgFilter;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.Button btnFilderProxy;
|
|
||||||
private System.Windows.Forms.Button btnFilterDirect;
|
|
||||||
private System.Windows.Forms.Button btnClear;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,57 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Data;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class MsgFilterSetForm : BaseForm
|
|
||||||
{
|
|
||||||
public string MsgFilter { get; set; }
|
|
||||||
public bool ShowDefFilter { get; set; }
|
|
||||||
|
|
||||||
public MsgFilterSetForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void MsgFilterSetForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
txtMsgFilter.Text = MsgFilter;
|
|
||||||
btnFilderProxy.Visible =
|
|
||||||
btnFilterDirect.Visible = ShowDefFilter;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
MsgFilter = txtMsgFilter.Text;
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnFilderProxy_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
txtMsgFilter.Text = "^(?!.*proxy).*$";
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnFilterDirect_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
txtMsgFilter.Text = "^(?!.*direct).*$";
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClear_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
MsgFilter = string.Empty;
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,381 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name=">>btnFilderProxy.Name" xml:space="preserve">
|
|
||||||
<value>btnFilderProxy</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilderProxy.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilderProxy.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilderProxy.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilterDirect.Name" xml:space="preserve">
|
|
||||||
<value>btnFilterDirect</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilterDirect.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilterDirect.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilterDirect.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.Name" xml:space="preserve">
|
|
||||||
<value>txtMsgFilter</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>490, 76</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>Filter</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Name" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilderProxy.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>157, 47</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilderProxy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilderProxy.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>13</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilderProxy.Text" xml:space="preserve">
|
|
||||||
<value>Filter Proxy</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilderProxy.Name" xml:space="preserve">
|
|
||||||
<value>btnFilderProxy</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilderProxy.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilderProxy.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilderProxy.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilterDirect.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilterDirect.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>41, 47</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilterDirect.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilterDirect.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>12</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilterDirect.Text" xml:space="preserve">
|
|
||||||
<value>Filter Direct</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilterDirect.Name" xml:space="preserve">
|
|
||||||
<value>btnFilterDirect</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilterDirect.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilterDirect.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnFilterDirect.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgFilter.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>41, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgFilter.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>409, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtMsgFilter.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>11</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.Name" xml:space="preserve">
|
|
||||||
<value>txtMsgFilter</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtMsgFilter.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClear.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClear.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>211, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClear.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClear.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>14</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClear.Text" xml:space="preserve">
|
|
||||||
<value>Clear</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClear.Name" xml:space="preserve">
|
|
||||||
<value>btnClear</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClear.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClear.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClear.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>396, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>&Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<value>btnClose</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>303, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 76</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>490, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>9</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>490, 136</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>MsgFilterSetForm</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>MsgFilterSetForm</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,141 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>过滤器</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>设置过滤器</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilderProxy.Text" xml:space="preserve">
|
|
||||||
<value>过滤Proxy</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnFilterDirect.Text" xml:space="preserve">
|
|
||||||
<value>过滤Direct</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClear.Text" xml:space="preserve">
|
|
||||||
<value>清空</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,782 +0,0 @@
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class OptionSettingForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OptionSettingForm));
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
|
||||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.label16 = new System.Windows.Forms.Label();
|
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
|
||||||
this.txtpass = new System.Windows.Forms.TextBox();
|
|
||||||
this.txtuser = new System.Windows.Forms.TextBox();
|
|
||||||
this.chkdefAllowInsecure = new System.Windows.Forms.CheckBox();
|
|
||||||
this.chkAllowLANConn = new System.Windows.Forms.CheckBox();
|
|
||||||
this.chksniffingEnabled = new System.Windows.Forms.CheckBox();
|
|
||||||
this.chkmuxEnabled = new System.Windows.Forms.CheckBox();
|
|
||||||
this.cmbprotocol = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
|
||||||
this.chkudpEnabled = new System.Windows.Forms.CheckBox();
|
|
||||||
this.chklogEnabled = new System.Windows.Forms.CheckBox();
|
|
||||||
this.cmbloglevel = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label5 = new System.Windows.Forms.Label();
|
|
||||||
this.txtlocalPort = new System.Windows.Forms.TextBox();
|
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
|
||||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
|
||||||
this.cmbdomainStrategy4Freedom = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label19 = new System.Windows.Forms.Label();
|
|
||||||
this.linkDnsObjectDoc = new System.Windows.Forms.LinkLabel();
|
|
||||||
this.txtremoteDNS = new System.Windows.Forms.TextBox();
|
|
||||||
this.label14 = new System.Windows.Forms.Label();
|
|
||||||
this.tabPage6 = new System.Windows.Forms.TabPage();
|
|
||||||
this.chkKcpcongestion = new System.Windows.Forms.CheckBox();
|
|
||||||
this.txtKcpwriteBufferSize = new System.Windows.Forms.TextBox();
|
|
||||||
this.label10 = new System.Windows.Forms.Label();
|
|
||||||
this.txtKcpreadBufferSize = new System.Windows.Forms.TextBox();
|
|
||||||
this.label11 = new System.Windows.Forms.Label();
|
|
||||||
this.txtKcpdownlinkCapacity = new System.Windows.Forms.TextBox();
|
|
||||||
this.label8 = new System.Windows.Forms.Label();
|
|
||||||
this.txtKcpuplinkCapacity = new System.Windows.Forms.TextBox();
|
|
||||||
this.label9 = new System.Windows.Forms.Label();
|
|
||||||
this.txtKcptti = new System.Windows.Forms.TextBox();
|
|
||||||
this.label7 = new System.Windows.Forms.Label();
|
|
||||||
this.txtKcpmtu = new System.Windows.Forms.TextBox();
|
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
|
||||||
this.tabPage7 = new System.Windows.Forms.TabPage();
|
|
||||||
this.numStatisticsFreshRate = new System.Windows.Forms.NumericUpDown();
|
|
||||||
this.txttrayMenuServersLimit = new System.Windows.Forms.TextBox();
|
|
||||||
this.label17 = new System.Windows.Forms.Label();
|
|
||||||
this.txtautoUpdateSubInterval = new System.Windows.Forms.TextBox();
|
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
|
||||||
this.chkEnableSecurityProtocolTls13 = new System.Windows.Forms.CheckBox();
|
|
||||||
this.chkEnableAutoAdjustMainLvColWidth = new System.Windows.Forms.CheckBox();
|
|
||||||
this.btnSetLoopback = new System.Windows.Forms.Button();
|
|
||||||
this.txtautoUpdateInterval = new System.Windows.Forms.TextBox();
|
|
||||||
this.label15 = new System.Windows.Forms.Label();
|
|
||||||
this.chkIgnoreGeoUpdateCore = new System.Windows.Forms.CheckBox();
|
|
||||||
this.chkKeepOlderDedupl = new System.Windows.Forms.CheckBox();
|
|
||||||
this.lbFreshrate = new System.Windows.Forms.Label();
|
|
||||||
this.chkEnableStatistics = new System.Windows.Forms.CheckBox();
|
|
||||||
this.chkAutoRun = new System.Windows.Forms.CheckBox();
|
|
||||||
this.tabPageCoreType = new System.Windows.Forms.TabPage();
|
|
||||||
this.cmbCoreType6 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.labCoreType6 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbCoreType5 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.labCoreType5 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbCoreType4 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.labCoreType4 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbCoreType3 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.labCoreType3 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbCoreType2 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.labCoreType2 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbCoreType1 = new System.Windows.Forms.ComboBox();
|
|
||||||
this.labCoreType1 = new System.Windows.Forms.Label();
|
|
||||||
this.tabPage3 = new System.Windows.Forms.TabPage();
|
|
||||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.label18 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbSystemProxyAdvancedProtocol = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label13 = new System.Windows.Forms.Label();
|
|
||||||
this.label12 = new System.Windows.Forms.Label();
|
|
||||||
this.txtsystemProxyExceptions = new System.Windows.Forms.TextBox();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
|
||||||
this.chkEnableCheckPreReleaseUpdate = new System.Windows.Forms.CheckBox();
|
|
||||||
this.tabControl1.SuspendLayout();
|
|
||||||
this.tabPage1.SuspendLayout();
|
|
||||||
this.groupBox1.SuspendLayout();
|
|
||||||
this.tabPage2.SuspendLayout();
|
|
||||||
this.tabPage6.SuspendLayout();
|
|
||||||
this.tabPage7.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.numStatisticsFreshRate)).BeginInit();
|
|
||||||
this.tabPageCoreType.SuspendLayout();
|
|
||||||
this.tabPage3.SuspendLayout();
|
|
||||||
this.groupBox2.SuspendLayout();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// tabControl1
|
|
||||||
//
|
|
||||||
this.tabControl1.Controls.Add(this.tabPage1);
|
|
||||||
this.tabControl1.Controls.Add(this.tabPage2);
|
|
||||||
this.tabControl1.Controls.Add(this.tabPage6);
|
|
||||||
this.tabControl1.Controls.Add(this.tabPage7);
|
|
||||||
this.tabControl1.Controls.Add(this.tabPageCoreType);
|
|
||||||
this.tabControl1.Controls.Add(this.tabPage3);
|
|
||||||
resources.ApplyResources(this.tabControl1, "tabControl1");
|
|
||||||
this.tabControl1.Name = "tabControl1";
|
|
||||||
this.tabControl1.SelectedIndex = 0;
|
|
||||||
//
|
|
||||||
// tabPage1
|
|
||||||
//
|
|
||||||
this.tabPage1.Controls.Add(this.groupBox1);
|
|
||||||
resources.ApplyResources(this.tabPage1, "tabPage1");
|
|
||||||
this.tabPage1.Name = "tabPage1";
|
|
||||||
this.tabPage1.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
this.groupBox1.Controls.Add(this.label16);
|
|
||||||
this.groupBox1.Controls.Add(this.label4);
|
|
||||||
this.groupBox1.Controls.Add(this.txtpass);
|
|
||||||
this.groupBox1.Controls.Add(this.txtuser);
|
|
||||||
this.groupBox1.Controls.Add(this.chkdefAllowInsecure);
|
|
||||||
this.groupBox1.Controls.Add(this.chkAllowLANConn);
|
|
||||||
this.groupBox1.Controls.Add(this.chksniffingEnabled);
|
|
||||||
this.groupBox1.Controls.Add(this.chkmuxEnabled);
|
|
||||||
this.groupBox1.Controls.Add(this.cmbprotocol);
|
|
||||||
this.groupBox1.Controls.Add(this.label1);
|
|
||||||
this.groupBox1.Controls.Add(this.chkudpEnabled);
|
|
||||||
this.groupBox1.Controls.Add(this.chklogEnabled);
|
|
||||||
this.groupBox1.Controls.Add(this.cmbloglevel);
|
|
||||||
this.groupBox1.Controls.Add(this.label5);
|
|
||||||
this.groupBox1.Controls.Add(this.txtlocalPort);
|
|
||||||
this.groupBox1.Controls.Add(this.label2);
|
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
|
||||||
this.groupBox1.TabStop = false;
|
|
||||||
//
|
|
||||||
// label16
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label16, "label16");
|
|
||||||
this.label16.Name = "label16";
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label4, "label4");
|
|
||||||
this.label4.Name = "label4";
|
|
||||||
//
|
|
||||||
// txtpass
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtpass, "txtpass");
|
|
||||||
this.txtpass.Name = "txtpass";
|
|
||||||
//
|
|
||||||
// txtuser
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtuser, "txtuser");
|
|
||||||
this.txtuser.Name = "txtuser";
|
|
||||||
//
|
|
||||||
// chkdefAllowInsecure
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkdefAllowInsecure, "chkdefAllowInsecure");
|
|
||||||
this.chkdefAllowInsecure.Name = "chkdefAllowInsecure";
|
|
||||||
this.chkdefAllowInsecure.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// chkAllowLANConn
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkAllowLANConn, "chkAllowLANConn");
|
|
||||||
this.chkAllowLANConn.Name = "chkAllowLANConn";
|
|
||||||
this.chkAllowLANConn.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// chksniffingEnabled
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chksniffingEnabled, "chksniffingEnabled");
|
|
||||||
this.chksniffingEnabled.Name = "chksniffingEnabled";
|
|
||||||
this.chksniffingEnabled.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// chkmuxEnabled
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkmuxEnabled, "chkmuxEnabled");
|
|
||||||
this.chkmuxEnabled.Name = "chkmuxEnabled";
|
|
||||||
this.chkmuxEnabled.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// cmbprotocol
|
|
||||||
//
|
|
||||||
this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
resources.ApplyResources(this.cmbprotocol, "cmbprotocol");
|
|
||||||
this.cmbprotocol.FormattingEnabled = true;
|
|
||||||
this.cmbprotocol.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbprotocol.Items"),
|
|
||||||
resources.GetString("cmbprotocol.Items1")});
|
|
||||||
this.cmbprotocol.Name = "cmbprotocol";
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label1, "label1");
|
|
||||||
this.label1.Name = "label1";
|
|
||||||
//
|
|
||||||
// chkudpEnabled
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkudpEnabled, "chkudpEnabled");
|
|
||||||
this.chkudpEnabled.Name = "chkudpEnabled";
|
|
||||||
this.chkudpEnabled.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// chklogEnabled
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chklogEnabled, "chklogEnabled");
|
|
||||||
this.chklogEnabled.Name = "chklogEnabled";
|
|
||||||
this.chklogEnabled.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// cmbloglevel
|
|
||||||
//
|
|
||||||
this.cmbloglevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbloglevel.FormattingEnabled = true;
|
|
||||||
this.cmbloglevel.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbloglevel.Items"),
|
|
||||||
resources.GetString("cmbloglevel.Items1"),
|
|
||||||
resources.GetString("cmbloglevel.Items2"),
|
|
||||||
resources.GetString("cmbloglevel.Items3"),
|
|
||||||
resources.GetString("cmbloglevel.Items4")});
|
|
||||||
resources.ApplyResources(this.cmbloglevel, "cmbloglevel");
|
|
||||||
this.cmbloglevel.Name = "cmbloglevel";
|
|
||||||
//
|
|
||||||
// label5
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label5, "label5");
|
|
||||||
this.label5.Name = "label5";
|
|
||||||
//
|
|
||||||
// txtlocalPort
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtlocalPort, "txtlocalPort");
|
|
||||||
this.txtlocalPort.Name = "txtlocalPort";
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label2, "label2");
|
|
||||||
this.label2.Name = "label2";
|
|
||||||
//
|
|
||||||
// tabPage2
|
|
||||||
//
|
|
||||||
this.tabPage2.Controls.Add(this.cmbdomainStrategy4Freedom);
|
|
||||||
this.tabPage2.Controls.Add(this.label19);
|
|
||||||
this.tabPage2.Controls.Add(this.linkDnsObjectDoc);
|
|
||||||
this.tabPage2.Controls.Add(this.txtremoteDNS);
|
|
||||||
this.tabPage2.Controls.Add(this.label14);
|
|
||||||
resources.ApplyResources(this.tabPage2, "tabPage2");
|
|
||||||
this.tabPage2.Name = "tabPage2";
|
|
||||||
this.tabPage2.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// cmbdomainStrategy4Freedom
|
|
||||||
//
|
|
||||||
this.cmbdomainStrategy4Freedom.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbdomainStrategy4Freedom.FormattingEnabled = true;
|
|
||||||
this.cmbdomainStrategy4Freedom.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbdomainStrategy4Freedom.Items"),
|
|
||||||
resources.GetString("cmbdomainStrategy4Freedom.Items1"),
|
|
||||||
resources.GetString("cmbdomainStrategy4Freedom.Items2"),
|
|
||||||
resources.GetString("cmbdomainStrategy4Freedom.Items3")});
|
|
||||||
resources.ApplyResources(this.cmbdomainStrategy4Freedom, "cmbdomainStrategy4Freedom");
|
|
||||||
this.cmbdomainStrategy4Freedom.Name = "cmbdomainStrategy4Freedom";
|
|
||||||
//
|
|
||||||
// label19
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label19, "label19");
|
|
||||||
this.label19.Name = "label19";
|
|
||||||
//
|
|
||||||
// linkDnsObjectDoc
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.linkDnsObjectDoc, "linkDnsObjectDoc");
|
|
||||||
this.linkDnsObjectDoc.Name = "linkDnsObjectDoc";
|
|
||||||
this.linkDnsObjectDoc.TabStop = true;
|
|
||||||
this.linkDnsObjectDoc.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkDnsObjectDoc_LinkClicked);
|
|
||||||
//
|
|
||||||
// txtremoteDNS
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtremoteDNS, "txtremoteDNS");
|
|
||||||
this.txtremoteDNS.Name = "txtremoteDNS";
|
|
||||||
//
|
|
||||||
// label14
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label14, "label14");
|
|
||||||
this.label14.Name = "label14";
|
|
||||||
//
|
|
||||||
// tabPage6
|
|
||||||
//
|
|
||||||
this.tabPage6.Controls.Add(this.chkKcpcongestion);
|
|
||||||
this.tabPage6.Controls.Add(this.txtKcpwriteBufferSize);
|
|
||||||
this.tabPage6.Controls.Add(this.label10);
|
|
||||||
this.tabPage6.Controls.Add(this.txtKcpreadBufferSize);
|
|
||||||
this.tabPage6.Controls.Add(this.label11);
|
|
||||||
this.tabPage6.Controls.Add(this.txtKcpdownlinkCapacity);
|
|
||||||
this.tabPage6.Controls.Add(this.label8);
|
|
||||||
this.tabPage6.Controls.Add(this.txtKcpuplinkCapacity);
|
|
||||||
this.tabPage6.Controls.Add(this.label9);
|
|
||||||
this.tabPage6.Controls.Add(this.txtKcptti);
|
|
||||||
this.tabPage6.Controls.Add(this.label7);
|
|
||||||
this.tabPage6.Controls.Add(this.txtKcpmtu);
|
|
||||||
this.tabPage6.Controls.Add(this.label6);
|
|
||||||
resources.ApplyResources(this.tabPage6, "tabPage6");
|
|
||||||
this.tabPage6.Name = "tabPage6";
|
|
||||||
this.tabPage6.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// chkKcpcongestion
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkKcpcongestion, "chkKcpcongestion");
|
|
||||||
this.chkKcpcongestion.Name = "chkKcpcongestion";
|
|
||||||
this.chkKcpcongestion.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// txtKcpwriteBufferSize
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtKcpwriteBufferSize, "txtKcpwriteBufferSize");
|
|
||||||
this.txtKcpwriteBufferSize.Name = "txtKcpwriteBufferSize";
|
|
||||||
//
|
|
||||||
// label10
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label10, "label10");
|
|
||||||
this.label10.Name = "label10";
|
|
||||||
//
|
|
||||||
// txtKcpreadBufferSize
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtKcpreadBufferSize, "txtKcpreadBufferSize");
|
|
||||||
this.txtKcpreadBufferSize.Name = "txtKcpreadBufferSize";
|
|
||||||
//
|
|
||||||
// label11
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label11, "label11");
|
|
||||||
this.label11.Name = "label11";
|
|
||||||
//
|
|
||||||
// txtKcpdownlinkCapacity
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtKcpdownlinkCapacity, "txtKcpdownlinkCapacity");
|
|
||||||
this.txtKcpdownlinkCapacity.Name = "txtKcpdownlinkCapacity";
|
|
||||||
//
|
|
||||||
// label8
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label8, "label8");
|
|
||||||
this.label8.Name = "label8";
|
|
||||||
//
|
|
||||||
// txtKcpuplinkCapacity
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtKcpuplinkCapacity, "txtKcpuplinkCapacity");
|
|
||||||
this.txtKcpuplinkCapacity.Name = "txtKcpuplinkCapacity";
|
|
||||||
//
|
|
||||||
// label9
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label9, "label9");
|
|
||||||
this.label9.Name = "label9";
|
|
||||||
//
|
|
||||||
// txtKcptti
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtKcptti, "txtKcptti");
|
|
||||||
this.txtKcptti.Name = "txtKcptti";
|
|
||||||
//
|
|
||||||
// label7
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label7, "label7");
|
|
||||||
this.label7.Name = "label7";
|
|
||||||
//
|
|
||||||
// txtKcpmtu
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtKcpmtu, "txtKcpmtu");
|
|
||||||
this.txtKcpmtu.Name = "txtKcpmtu";
|
|
||||||
//
|
|
||||||
// label6
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label6, "label6");
|
|
||||||
this.label6.Name = "label6";
|
|
||||||
//
|
|
||||||
// tabPage7
|
|
||||||
//
|
|
||||||
this.tabPage7.Controls.Add(this.chkEnableCheckPreReleaseUpdate);
|
|
||||||
this.tabPage7.Controls.Add(this.numStatisticsFreshRate);
|
|
||||||
this.tabPage7.Controls.Add(this.txttrayMenuServersLimit);
|
|
||||||
this.tabPage7.Controls.Add(this.label17);
|
|
||||||
this.tabPage7.Controls.Add(this.txtautoUpdateSubInterval);
|
|
||||||
this.tabPage7.Controls.Add(this.label3);
|
|
||||||
this.tabPage7.Controls.Add(this.chkEnableSecurityProtocolTls13);
|
|
||||||
this.tabPage7.Controls.Add(this.chkEnableAutoAdjustMainLvColWidth);
|
|
||||||
this.tabPage7.Controls.Add(this.btnSetLoopback);
|
|
||||||
this.tabPage7.Controls.Add(this.txtautoUpdateInterval);
|
|
||||||
this.tabPage7.Controls.Add(this.label15);
|
|
||||||
this.tabPage7.Controls.Add(this.chkIgnoreGeoUpdateCore);
|
|
||||||
this.tabPage7.Controls.Add(this.chkKeepOlderDedupl);
|
|
||||||
this.tabPage7.Controls.Add(this.lbFreshrate);
|
|
||||||
this.tabPage7.Controls.Add(this.chkEnableStatistics);
|
|
||||||
this.tabPage7.Controls.Add(this.chkAutoRun);
|
|
||||||
resources.ApplyResources(this.tabPage7, "tabPage7");
|
|
||||||
this.tabPage7.Name = "tabPage7";
|
|
||||||
this.tabPage7.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// numStatisticsFreshRate
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.numStatisticsFreshRate, "numStatisticsFreshRate");
|
|
||||||
this.numStatisticsFreshRate.Name = "numStatisticsFreshRate";
|
|
||||||
//
|
|
||||||
// txttrayMenuServersLimit
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txttrayMenuServersLimit, "txttrayMenuServersLimit");
|
|
||||||
this.txttrayMenuServersLimit.Name = "txttrayMenuServersLimit";
|
|
||||||
//
|
|
||||||
// label17
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label17, "label17");
|
|
||||||
this.label17.Name = "label17";
|
|
||||||
//
|
|
||||||
// txtautoUpdateSubInterval
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtautoUpdateSubInterval, "txtautoUpdateSubInterval");
|
|
||||||
this.txtautoUpdateSubInterval.Name = "txtautoUpdateSubInterval";
|
|
||||||
//
|
|
||||||
// label3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label3, "label3");
|
|
||||||
this.label3.Name = "label3";
|
|
||||||
//
|
|
||||||
// chkEnableSecurityProtocolTls13
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkEnableSecurityProtocolTls13, "chkEnableSecurityProtocolTls13");
|
|
||||||
this.chkEnableSecurityProtocolTls13.Name = "chkEnableSecurityProtocolTls13";
|
|
||||||
this.chkEnableSecurityProtocolTls13.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// chkEnableAutoAdjustMainLvColWidth
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkEnableAutoAdjustMainLvColWidth, "chkEnableAutoAdjustMainLvColWidth");
|
|
||||||
this.chkEnableAutoAdjustMainLvColWidth.Name = "chkEnableAutoAdjustMainLvColWidth";
|
|
||||||
this.chkEnableAutoAdjustMainLvColWidth.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// btnSetLoopback
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnSetLoopback, "btnSetLoopback");
|
|
||||||
this.btnSetLoopback.Name = "btnSetLoopback";
|
|
||||||
this.btnSetLoopback.UseVisualStyleBackColor = true;
|
|
||||||
this.btnSetLoopback.Click += new System.EventHandler(this.btnSetLoopback_Click);
|
|
||||||
//
|
|
||||||
// txtautoUpdateInterval
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtautoUpdateInterval, "txtautoUpdateInterval");
|
|
||||||
this.txtautoUpdateInterval.Name = "txtautoUpdateInterval";
|
|
||||||
//
|
|
||||||
// label15
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label15, "label15");
|
|
||||||
this.label15.Name = "label15";
|
|
||||||
//
|
|
||||||
// chkIgnoreGeoUpdateCore
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkIgnoreGeoUpdateCore, "chkIgnoreGeoUpdateCore");
|
|
||||||
this.chkIgnoreGeoUpdateCore.Name = "chkIgnoreGeoUpdateCore";
|
|
||||||
this.chkIgnoreGeoUpdateCore.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// chkKeepOlderDedupl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkKeepOlderDedupl, "chkKeepOlderDedupl");
|
|
||||||
this.chkKeepOlderDedupl.Name = "chkKeepOlderDedupl";
|
|
||||||
this.chkKeepOlderDedupl.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// lbFreshrate
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.lbFreshrate, "lbFreshrate");
|
|
||||||
this.lbFreshrate.Name = "lbFreshrate";
|
|
||||||
//
|
|
||||||
// chkEnableStatistics
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkEnableStatistics, "chkEnableStatistics");
|
|
||||||
this.chkEnableStatistics.Name = "chkEnableStatistics";
|
|
||||||
this.chkEnableStatistics.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// chkAutoRun
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkAutoRun, "chkAutoRun");
|
|
||||||
this.chkAutoRun.Name = "chkAutoRun";
|
|
||||||
this.chkAutoRun.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// tabPageCoreType
|
|
||||||
//
|
|
||||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType6);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.labCoreType6);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType5);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.labCoreType5);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType4);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.labCoreType4);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType3);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.labCoreType3);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType2);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.labCoreType2);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.cmbCoreType1);
|
|
||||||
this.tabPageCoreType.Controls.Add(this.labCoreType1);
|
|
||||||
resources.ApplyResources(this.tabPageCoreType, "tabPageCoreType");
|
|
||||||
this.tabPageCoreType.Name = "tabPageCoreType";
|
|
||||||
this.tabPageCoreType.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// cmbCoreType6
|
|
||||||
//
|
|
||||||
this.cmbCoreType6.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbCoreType6.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbCoreType6, "cmbCoreType6");
|
|
||||||
this.cmbCoreType6.Name = "cmbCoreType6";
|
|
||||||
//
|
|
||||||
// labCoreType6
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labCoreType6, "labCoreType6");
|
|
||||||
this.labCoreType6.Name = "labCoreType6";
|
|
||||||
//
|
|
||||||
// cmbCoreType5
|
|
||||||
//
|
|
||||||
this.cmbCoreType5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbCoreType5.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbCoreType5, "cmbCoreType5");
|
|
||||||
this.cmbCoreType5.Name = "cmbCoreType5";
|
|
||||||
//
|
|
||||||
// labCoreType5
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labCoreType5, "labCoreType5");
|
|
||||||
this.labCoreType5.Name = "labCoreType5";
|
|
||||||
//
|
|
||||||
// cmbCoreType4
|
|
||||||
//
|
|
||||||
this.cmbCoreType4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbCoreType4.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbCoreType4, "cmbCoreType4");
|
|
||||||
this.cmbCoreType4.Name = "cmbCoreType4";
|
|
||||||
//
|
|
||||||
// labCoreType4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labCoreType4, "labCoreType4");
|
|
||||||
this.labCoreType4.Name = "labCoreType4";
|
|
||||||
//
|
|
||||||
// cmbCoreType3
|
|
||||||
//
|
|
||||||
this.cmbCoreType3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbCoreType3.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbCoreType3, "cmbCoreType3");
|
|
||||||
this.cmbCoreType3.Name = "cmbCoreType3";
|
|
||||||
//
|
|
||||||
// labCoreType3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labCoreType3, "labCoreType3");
|
|
||||||
this.labCoreType3.Name = "labCoreType3";
|
|
||||||
//
|
|
||||||
// cmbCoreType2
|
|
||||||
//
|
|
||||||
this.cmbCoreType2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbCoreType2.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbCoreType2, "cmbCoreType2");
|
|
||||||
this.cmbCoreType2.Name = "cmbCoreType2";
|
|
||||||
//
|
|
||||||
// labCoreType2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labCoreType2, "labCoreType2");
|
|
||||||
this.labCoreType2.Name = "labCoreType2";
|
|
||||||
//
|
|
||||||
// cmbCoreType1
|
|
||||||
//
|
|
||||||
this.cmbCoreType1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbCoreType1.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbCoreType1, "cmbCoreType1");
|
|
||||||
this.cmbCoreType1.Name = "cmbCoreType1";
|
|
||||||
//
|
|
||||||
// labCoreType1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labCoreType1, "labCoreType1");
|
|
||||||
this.labCoreType1.Name = "labCoreType1";
|
|
||||||
//
|
|
||||||
// tabPage3
|
|
||||||
//
|
|
||||||
this.tabPage3.Controls.Add(this.groupBox2);
|
|
||||||
resources.ApplyResources(this.tabPage3, "tabPage3");
|
|
||||||
this.tabPage3.Name = "tabPage3";
|
|
||||||
this.tabPage3.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// groupBox2
|
|
||||||
//
|
|
||||||
this.groupBox2.Controls.Add(this.label18);
|
|
||||||
this.groupBox2.Controls.Add(this.cmbSystemProxyAdvancedProtocol);
|
|
||||||
this.groupBox2.Controls.Add(this.label13);
|
|
||||||
this.groupBox2.Controls.Add(this.label12);
|
|
||||||
this.groupBox2.Controls.Add(this.txtsystemProxyExceptions);
|
|
||||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
|
||||||
this.groupBox2.Name = "groupBox2";
|
|
||||||
this.groupBox2.TabStop = false;
|
|
||||||
//
|
|
||||||
// label18
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label18, "label18");
|
|
||||||
this.label18.Name = "label18";
|
|
||||||
//
|
|
||||||
// cmbSystemProxyAdvancedProtocol
|
|
||||||
//
|
|
||||||
this.cmbSystemProxyAdvancedProtocol.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbSystemProxyAdvancedProtocol, "cmbSystemProxyAdvancedProtocol");
|
|
||||||
this.cmbSystemProxyAdvancedProtocol.Name = "cmbSystemProxyAdvancedProtocol";
|
|
||||||
//
|
|
||||||
// label13
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label13, "label13");
|
|
||||||
this.label13.Name = "label13";
|
|
||||||
//
|
|
||||||
// label12
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label12, "label12");
|
|
||||||
this.label12.Name = "label12";
|
|
||||||
//
|
|
||||||
// txtsystemProxyExceptions
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtsystemProxyExceptions, "txtsystemProxyExceptions");
|
|
||||||
this.txtsystemProxyExceptions.Name = "txtsystemProxyExceptions";
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Name = "panel2";
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel1, "panel1");
|
|
||||||
this.panel1.Name = "panel1";
|
|
||||||
//
|
|
||||||
// chkEnableCheckPreReleaseUpdate
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkEnableCheckPreReleaseUpdate, "chkEnableCheckPreReleaseUpdate");
|
|
||||||
this.chkEnableCheckPreReleaseUpdate.Name = "chkEnableCheckPreReleaseUpdate";
|
|
||||||
this.chkEnableCheckPreReleaseUpdate.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// OptionSettingForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.tabControl1);
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.Controls.Add(this.panel1);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
|
||||||
this.Name = "OptionSettingForm";
|
|
||||||
this.Load += new System.EventHandler(this.OptionSettingForm_Load);
|
|
||||||
this.tabControl1.ResumeLayout(false);
|
|
||||||
this.tabPage1.ResumeLayout(false);
|
|
||||||
this.groupBox1.ResumeLayout(false);
|
|
||||||
this.groupBox1.PerformLayout();
|
|
||||||
this.tabPage2.ResumeLayout(false);
|
|
||||||
this.tabPage2.PerformLayout();
|
|
||||||
this.tabPage6.ResumeLayout(false);
|
|
||||||
this.tabPage6.PerformLayout();
|
|
||||||
this.tabPage7.ResumeLayout(false);
|
|
||||||
this.tabPage7.PerformLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.numStatisticsFreshRate)).EndInit();
|
|
||||||
this.tabPageCoreType.ResumeLayout(false);
|
|
||||||
this.tabPageCoreType.PerformLayout();
|
|
||||||
this.tabPage3.ResumeLayout(false);
|
|
||||||
this.groupBox2.ResumeLayout(false);
|
|
||||||
this.groupBox2.PerformLayout();
|
|
||||||
this.panel2.ResumeLayout(false);
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox1;
|
|
||||||
private System.Windows.Forms.ComboBox cmbloglevel;
|
|
||||||
private System.Windows.Forms.Label label5;
|
|
||||||
private System.Windows.Forms.TextBox txtlocalPort;
|
|
||||||
private System.Windows.Forms.Label label2;
|
|
||||||
private System.Windows.Forms.CheckBox chklogEnabled;
|
|
||||||
private System.Windows.Forms.CheckBox chkudpEnabled;
|
|
||||||
private System.Windows.Forms.Panel panel1;
|
|
||||||
private System.Windows.Forms.TabControl tabControl1;
|
|
||||||
private System.Windows.Forms.TabPage tabPage1;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.ComboBox cmbprotocol;
|
|
||||||
private System.Windows.Forms.Label label1;
|
|
||||||
private System.Windows.Forms.CheckBox chkmuxEnabled;
|
|
||||||
private System.Windows.Forms.TabPage tabPage6;
|
|
||||||
private System.Windows.Forms.TextBox txtKcpmtu;
|
|
||||||
private System.Windows.Forms.Label label6;
|
|
||||||
private System.Windows.Forms.TextBox txtKcptti;
|
|
||||||
private System.Windows.Forms.Label label7;
|
|
||||||
private System.Windows.Forms.TextBox txtKcpwriteBufferSize;
|
|
||||||
private System.Windows.Forms.Label label10;
|
|
||||||
private System.Windows.Forms.TextBox txtKcpreadBufferSize;
|
|
||||||
private System.Windows.Forms.Label label11;
|
|
||||||
private System.Windows.Forms.TextBox txtKcpdownlinkCapacity;
|
|
||||||
private System.Windows.Forms.Label label8;
|
|
||||||
private System.Windows.Forms.TextBox txtKcpuplinkCapacity;
|
|
||||||
private System.Windows.Forms.Label label9;
|
|
||||||
private System.Windows.Forms.CheckBox chkKcpcongestion;
|
|
||||||
private System.Windows.Forms.TabPage tabPage7;
|
|
||||||
private System.Windows.Forms.CheckBox chkAutoRun;
|
|
||||||
private System.Windows.Forms.CheckBox chkAllowLANConn;
|
|
||||||
private System.Windows.Forms.CheckBox chksniffingEnabled;
|
|
||||||
private System.Windows.Forms.CheckBox chkEnableStatistics;
|
|
||||||
private System.Windows.Forms.Label lbFreshrate;
|
|
||||||
private System.Windows.Forms.CheckBox chkKeepOlderDedupl;
|
|
||||||
private System.Windows.Forms.CheckBox chkdefAllowInsecure;
|
|
||||||
private System.Windows.Forms.TabPage tabPage2;
|
|
||||||
private System.Windows.Forms.LinkLabel linkDnsObjectDoc;
|
|
||||||
private System.Windows.Forms.TextBox txtremoteDNS;
|
|
||||||
private System.Windows.Forms.Label label14;
|
|
||||||
private System.Windows.Forms.CheckBox chkIgnoreGeoUpdateCore;
|
|
||||||
private System.Windows.Forms.TabPage tabPage3;
|
|
||||||
private System.Windows.Forms.TextBox txtsystemProxyExceptions;
|
|
||||||
private System.Windows.Forms.Label label12;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox2;
|
|
||||||
private System.Windows.Forms.Label label13;
|
|
||||||
private System.Windows.Forms.TextBox txtautoUpdateInterval;
|
|
||||||
private System.Windows.Forms.Label label15;
|
|
||||||
private System.Windows.Forms.Button btnSetLoopback;
|
|
||||||
private System.Windows.Forms.CheckBox chkEnableAutoAdjustMainLvColWidth;
|
|
||||||
private System.Windows.Forms.CheckBox chkEnableSecurityProtocolTls13;
|
|
||||||
private System.Windows.Forms.TabPage tabPageCoreType;
|
|
||||||
private System.Windows.Forms.ComboBox cmbCoreType1;
|
|
||||||
private System.Windows.Forms.Label labCoreType1;
|
|
||||||
private System.Windows.Forms.ComboBox cmbCoreType6;
|
|
||||||
private System.Windows.Forms.Label labCoreType6;
|
|
||||||
private System.Windows.Forms.ComboBox cmbCoreType5;
|
|
||||||
private System.Windows.Forms.Label labCoreType5;
|
|
||||||
private System.Windows.Forms.ComboBox cmbCoreType4;
|
|
||||||
private System.Windows.Forms.Label labCoreType4;
|
|
||||||
private System.Windows.Forms.ComboBox cmbCoreType3;
|
|
||||||
private System.Windows.Forms.Label labCoreType3;
|
|
||||||
private System.Windows.Forms.ComboBox cmbCoreType2;
|
|
||||||
private System.Windows.Forms.Label labCoreType2;
|
|
||||||
private System.Windows.Forms.Label label16;
|
|
||||||
private System.Windows.Forms.Label label4;
|
|
||||||
private System.Windows.Forms.TextBox txtpass;
|
|
||||||
private System.Windows.Forms.TextBox txtuser;
|
|
||||||
private System.Windows.Forms.TextBox txtautoUpdateSubInterval;
|
|
||||||
private System.Windows.Forms.Label label3;
|
|
||||||
private System.Windows.Forms.TextBox txttrayMenuServersLimit;
|
|
||||||
private System.Windows.Forms.Label label17;
|
|
||||||
private System.Windows.Forms.ComboBox cmbSystemProxyAdvancedProtocol;
|
|
||||||
private System.Windows.Forms.Label label18;
|
|
||||||
private System.Windows.Forms.NumericUpDown numStatisticsFreshRate;
|
|
||||||
private System.Windows.Forms.ComboBox cmbdomainStrategy4Freedom;
|
|
||||||
private System.Windows.Forms.Label label19;
|
|
||||||
private System.Windows.Forms.CheckBox chkEnableCheckPreReleaseUpdate;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,341 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Base;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class OptionSettingForm : BaseForm
|
|
||||||
{
|
|
||||||
public OptionSettingForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OptionSettingForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
cmbSystemProxyAdvancedProtocol.Items.AddRange(Global.IEProxyProtocols.ToArray());
|
|
||||||
cmbdomainStrategy4Freedom.Items.Clear();
|
|
||||||
cmbdomainStrategy4Freedom.Items.AddRange(Global.domainStrategy4Freedoms.ToArray());
|
|
||||||
|
|
||||||
InitBase();
|
|
||||||
|
|
||||||
InitKCP();
|
|
||||||
|
|
||||||
InitGUI();
|
|
||||||
|
|
||||||
InitCoreType();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 初始化基础设置
|
|
||||||
/// </summary>
|
|
||||||
private void InitBase()
|
|
||||||
{
|
|
||||||
//日志
|
|
||||||
chklogEnabled.Checked = config.logEnabled;
|
|
||||||
cmbloglevel.Text = config.loglevel;
|
|
||||||
|
|
||||||
//Mux
|
|
||||||
chkmuxEnabled.Checked = config.muxEnabled;
|
|
||||||
|
|
||||||
//本地监听
|
|
||||||
if (config.inbound.Count > 0)
|
|
||||||
{
|
|
||||||
txtlocalPort.Text = config.inbound[0].localPort.ToString();
|
|
||||||
cmbprotocol.Text = config.inbound[0].protocol.ToString();
|
|
||||||
chkudpEnabled.Checked = config.inbound[0].udpEnabled;
|
|
||||||
chksniffingEnabled.Checked = config.inbound[0].sniffingEnabled;
|
|
||||||
chkAllowLANConn.Checked = config.inbound[0].allowLANConn;
|
|
||||||
txtuser.Text = config.inbound[0].user;
|
|
||||||
txtpass.Text = config.inbound[0].pass;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//remoteDNS
|
|
||||||
txtremoteDNS.Text = config.remoteDNS;
|
|
||||||
cmbdomainStrategy4Freedom.Text = config.domainStrategy4Freedom;
|
|
||||||
|
|
||||||
chkdefAllowInsecure.Checked = config.defAllowInsecure;
|
|
||||||
|
|
||||||
txtsystemProxyExceptions.Text = config.systemProxyExceptions;
|
|
||||||
|
|
||||||
cmbSystemProxyAdvancedProtocol.Text = config.systemProxyAdvancedProtocol;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 初始化KCP设置
|
|
||||||
/// </summary>
|
|
||||||
private void InitKCP()
|
|
||||||
{
|
|
||||||
txtKcpmtu.Text = config.kcpItem.mtu.ToString();
|
|
||||||
txtKcptti.Text = config.kcpItem.tti.ToString();
|
|
||||||
txtKcpuplinkCapacity.Text = config.kcpItem.uplinkCapacity.ToString();
|
|
||||||
txtKcpdownlinkCapacity.Text = config.kcpItem.downlinkCapacity.ToString();
|
|
||||||
txtKcpreadBufferSize.Text = config.kcpItem.readBufferSize.ToString();
|
|
||||||
txtKcpwriteBufferSize.Text = config.kcpItem.writeBufferSize.ToString();
|
|
||||||
chkKcpcongestion.Checked = config.kcpItem.congestion;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 初始化v2rayN GUI设置
|
|
||||||
/// </summary>
|
|
||||||
private void InitGUI()
|
|
||||||
{
|
|
||||||
//开机自动启动
|
|
||||||
chkAutoRun.Checked = Utils.IsAutoRun();
|
|
||||||
|
|
||||||
chkEnableStatistics.Checked = config.enableStatistics;
|
|
||||||
numStatisticsFreshRate.Value = config.statisticsFreshRate;
|
|
||||||
chkKeepOlderDedupl.Checked = config.keepOlderDedupl;
|
|
||||||
|
|
||||||
chkIgnoreGeoUpdateCore.Checked = config.ignoreGeoUpdateCore;
|
|
||||||
chkEnableAutoAdjustMainLvColWidth.Checked = config.uiItem.enableAutoAdjustMainLvColWidth;
|
|
||||||
chkEnableSecurityProtocolTls13.Checked = config.enableSecurityProtocolTls13;
|
|
||||||
|
|
||||||
txtautoUpdateInterval.Text = config.autoUpdateInterval.ToString();
|
|
||||||
txtautoUpdateSubInterval.Text = config.autoUpdateSubInterval.ToString();
|
|
||||||
chkEnableCheckPreReleaseUpdate.Checked = config.checkPreReleaseUpdate;
|
|
||||||
txttrayMenuServersLimit.Text = config.trayMenuServersLimit.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void InitCoreType()
|
|
||||||
{
|
|
||||||
if (config.coreTypeItem == null)
|
|
||||||
{
|
|
||||||
config.coreTypeItem = new List<CoreTypeItem>();
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (EConfigType it in Enum.GetValues(typeof(EConfigType)))
|
|
||||||
{
|
|
||||||
if (config.coreTypeItem.FindIndex(t => t.configType == it) >= 0)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
config.coreTypeItem.Add(new CoreTypeItem()
|
|
||||||
{
|
|
||||||
configType = it,
|
|
||||||
coreType = ECoreType.Xray
|
|
||||||
});
|
|
||||||
}
|
|
||||||
for (int k = 1; k <= config.coreTypeItem.Count; k++)
|
|
||||||
{
|
|
||||||
var item = config.coreTypeItem[k - 1];
|
|
||||||
((ComboBox)tabPageCoreType.Controls[$"cmbCoreType{k}"]).Items.AddRange(Global.coreTypes.ToArray());
|
|
||||||
tabPageCoreType.Controls[$"labCoreType{k}"].Text = item.configType.ToString();
|
|
||||||
tabPageCoreType.Controls[$"cmbCoreType{k}"].Text = item.coreType.ToString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (SaveBase() != 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (SaveKCP() != 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (SaveGUI() != 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (SaveCoreType() != 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ConfigHandler.SaveConfig(ref config) == 0)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(ResUI.OperationFailed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 保存基础设置
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
private int SaveBase()
|
|
||||||
{
|
|
||||||
//日志
|
|
||||||
bool logEnabled = chklogEnabled.Checked;
|
|
||||||
string loglevel = cmbloglevel.Text.TrimEx();
|
|
||||||
|
|
||||||
//Mux
|
|
||||||
bool muxEnabled = chkmuxEnabled.Checked;
|
|
||||||
|
|
||||||
//本地监听
|
|
||||||
string localPort = txtlocalPort.Text.TrimEx();
|
|
||||||
string protocol = cmbprotocol.Text.TrimEx();
|
|
||||||
bool udpEnabled = chkudpEnabled.Checked;
|
|
||||||
bool sniffingEnabled = chksniffingEnabled.Checked;
|
|
||||||
bool allowLANConn = chkAllowLANConn.Checked;
|
|
||||||
if (Utils.IsNullOrEmpty(localPort) || !Utils.IsNumberic(localPort))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillLocalListeningPort);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (Utils.IsNullOrEmpty(protocol))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.PleaseSelectProtocol);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
var remoteDNS = txtremoteDNS.Text.TrimEx();
|
|
||||||
var obj = Utils.ParseJson(remoteDNS);
|
|
||||||
if (obj != null && obj.ContainsKey("servers"))
|
|
||||||
{
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (remoteDNS.Contains("{") || remoteDNS.Contains("}"))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillCorrectDNSText);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
config.inbound[0].localPort = Utils.ToInt(localPort);
|
|
||||||
config.inbound[0].protocol = protocol;
|
|
||||||
config.inbound[0].udpEnabled = udpEnabled;
|
|
||||||
config.inbound[0].sniffingEnabled = sniffingEnabled;
|
|
||||||
config.inbound[0].allowLANConn = allowLANConn;
|
|
||||||
config.inbound[0].user = txtuser.Text;
|
|
||||||
config.inbound[0].pass = txtpass.Text;
|
|
||||||
|
|
||||||
if (config.inbound.Count > 1)
|
|
||||||
{
|
|
||||||
config.inbound.RemoveAt(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//日志
|
|
||||||
config.logEnabled = logEnabled;
|
|
||||||
config.loglevel = loglevel;
|
|
||||||
|
|
||||||
//Mux
|
|
||||||
config.muxEnabled = muxEnabled;
|
|
||||||
|
|
||||||
//remoteDNS
|
|
||||||
config.remoteDNS = txtremoteDNS.Text.TrimEx();
|
|
||||||
config.domainStrategy4Freedom = cmbdomainStrategy4Freedom.Text;
|
|
||||||
|
|
||||||
config.defAllowInsecure = chkdefAllowInsecure.Checked;
|
|
||||||
|
|
||||||
config.systemProxyExceptions = txtsystemProxyExceptions.Text.TrimEx();
|
|
||||||
|
|
||||||
config.systemProxyAdvancedProtocol = cmbSystemProxyAdvancedProtocol.Text.TrimEx();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 保存KCP设置
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
private int SaveKCP()
|
|
||||||
{
|
|
||||||
string mtu = txtKcpmtu.Text.TrimEx();
|
|
||||||
string tti = txtKcptti.Text.TrimEx();
|
|
||||||
string uplinkCapacity = txtKcpuplinkCapacity.Text.TrimEx();
|
|
||||||
string downlinkCapacity = txtKcpdownlinkCapacity.Text.TrimEx();
|
|
||||||
string readBufferSize = txtKcpreadBufferSize.Text.TrimEx();
|
|
||||||
string writeBufferSize = txtKcpwriteBufferSize.Text.TrimEx();
|
|
||||||
bool congestion = chkKcpcongestion.Checked;
|
|
||||||
|
|
||||||
if (Utils.IsNullOrEmpty(mtu) || !Utils.IsNumberic(mtu)
|
|
||||||
|| Utils.IsNullOrEmpty(tti) || !Utils.IsNumberic(tti)
|
|
||||||
|| Utils.IsNullOrEmpty(uplinkCapacity) || !Utils.IsNumberic(uplinkCapacity)
|
|
||||||
|| Utils.IsNullOrEmpty(downlinkCapacity) || !Utils.IsNumberic(downlinkCapacity)
|
|
||||||
|| Utils.IsNullOrEmpty(readBufferSize) || !Utils.IsNumberic(readBufferSize)
|
|
||||||
|| Utils.IsNullOrEmpty(writeBufferSize) || !Utils.IsNumberic(writeBufferSize))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.FillKcpParameters);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
config.kcpItem.mtu = Utils.ToInt(mtu);
|
|
||||||
config.kcpItem.tti = Utils.ToInt(tti);
|
|
||||||
config.kcpItem.uplinkCapacity = Utils.ToInt(uplinkCapacity);
|
|
||||||
config.kcpItem.downlinkCapacity = Utils.ToInt(downlinkCapacity);
|
|
||||||
config.kcpItem.readBufferSize = Utils.ToInt(readBufferSize);
|
|
||||||
config.kcpItem.writeBufferSize = Utils.ToInt(writeBufferSize);
|
|
||||||
config.kcpItem.congestion = congestion;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 保存GUI设置
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
private int SaveGUI()
|
|
||||||
{
|
|
||||||
//开机自动启动
|
|
||||||
Utils.SetAutoRun(chkAutoRun.Checked);
|
|
||||||
|
|
||||||
bool lastEnableStatistics = config.enableStatistics;
|
|
||||||
config.enableStatistics = chkEnableStatistics.Checked;
|
|
||||||
config.statisticsFreshRate = Convert.ToInt32(numStatisticsFreshRate.Value);
|
|
||||||
if (config.statisticsFreshRate > 100 || config.statisticsFreshRate < 1)
|
|
||||||
{
|
|
||||||
config.statisticsFreshRate = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
config.keepOlderDedupl = chkKeepOlderDedupl.Checked;
|
|
||||||
|
|
||||||
config.ignoreGeoUpdateCore = chkIgnoreGeoUpdateCore.Checked;
|
|
||||||
config.uiItem.enableAutoAdjustMainLvColWidth = chkEnableAutoAdjustMainLvColWidth.Checked;
|
|
||||||
config.enableSecurityProtocolTls13 = chkEnableSecurityProtocolTls13.Checked;
|
|
||||||
|
|
||||||
config.autoUpdateInterval = Utils.ToInt(txtautoUpdateInterval.Text);
|
|
||||||
config.autoUpdateSubInterval = Utils.ToInt(txtautoUpdateSubInterval.Text);
|
|
||||||
config.checkPreReleaseUpdate = chkEnableCheckPreReleaseUpdate.Checked;
|
|
||||||
config.trayMenuServersLimit = Utils.ToInt(txttrayMenuServersLimit.Text);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int SaveCoreType()
|
|
||||||
{
|
|
||||||
for (int k = 1; k <= config.coreTypeItem.Count; k++)
|
|
||||||
{
|
|
||||||
var item = config.coreTypeItem[k - 1];
|
|
||||||
item.coreType = (ECoreType)Enum.Parse(typeof(ECoreType), tabPageCoreType.Controls[$"cmbCoreType{k}"].Text);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void linkDnsObjectDoc_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
||||||
{
|
|
||||||
Process.Start("https://www.v2fly.org/config/dns.html#dnsobject");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnSetLoopback_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Process.Start(Utils.GetPath("EnableLoopback.exe"));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,394 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>662, 469</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage1.Text" xml:space="preserve">
|
|
||||||
<value> Core:基础设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>648, 437</value>
|
|
||||||
</data>
|
|
||||||
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>53, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label16.Text" xml:space="preserve">
|
|
||||||
<value>认证密码</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>219, 65</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>认证用户名</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkdefAllowInsecure.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>15, 208</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkdefAllowInsecure.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>324, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkdefAllowInsecure.Text" xml:space="preserve">
|
|
||||||
<value>传输层安全选tls时,默认跳过证书验证(allowInsecure)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAllowLANConn.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>144, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAllowLANConn.Text" xml:space="preserve">
|
|
||||||
<value>允许来自局域网的连接</value>
|
|
||||||
</data>
|
|
||||||
<data name="chksniffingEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>96, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chksniffingEnabled.Text" xml:space="preserve">
|
|
||||||
<value>开启流量探测</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkmuxEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>15, 145</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkmuxEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>114, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkmuxEnabled.Text" xml:space="preserve">
|
|
||||||
<value>开启Mux多路复用</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>219, 29</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>协议</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkudpEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>66, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkudpEnabled.Text" xml:space="preserve">
|
|
||||||
<value>开启UDP</value>
|
|
||||||
</data>
|
|
||||||
<data name="chklogEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>15, 176</value>
|
|
||||||
</data>
|
|
||||||
<data name="chklogEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>156, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chklogEnabled.Text" xml:space="preserve">
|
|
||||||
<value>记录本地日志(默认关闭)</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbloglevel.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>257, 174</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>193, 178</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>53, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>日志等级</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>77, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>本地监听端口</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Text" xml:space="preserve">
|
|
||||||
<value> Core:DNS设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbdomainStrategy4Freedom.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>223, 413</value>
|
|
||||||
</data>
|
|
||||||
<data name="label19.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>8, 417</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkDnsObjectDoc.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>161, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkDnsObjectDoc.Text" xml:space="preserve">
|
|
||||||
<value>支持填写DnsObject,JSON格式</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtremoteDNS.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>638, 366</value>
|
|
||||||
</data>
|
|
||||||
<data name="label14.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>191, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label14.Text" xml:space="preserve">
|
|
||||||
<value>自定义DNS(可多个,用逗号(,)隔开)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage6.Text" xml:space="preserve">
|
|
||||||
<value> Core:KCP设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage7.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage7.Text" xml:space="preserve">
|
|
||||||
<value> v2rayN设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="numStatisticsFreshRate.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>472, 37</value>
|
|
||||||
</data>
|
|
||||||
<data name="txttrayMenuServersLimit.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>248, 211</value>
|
|
||||||
</data>
|
|
||||||
<data name="label17.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>185, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label17.Text" xml:space="preserve">
|
|
||||||
<value>托盘右键菜单服务器展示数量限制</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtautoUpdateSubInterval.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>248, 184</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>173, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>自动更新订阅的间隔(单位小时)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableSecurityProtocolTls13.Text" xml:space="preserve">
|
|
||||||
<value>启用安全协议TLS v1.3 (订阅/检查更新/测速)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableAutoAdjustMainLvColWidth.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>204, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableAutoAdjustMainLvColWidth.Text" xml:space="preserve">
|
|
||||||
<value>自动调整服务器列宽在更新订阅后</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnSetLoopback.Text" xml:space="preserve">
|
|
||||||
<value>解除Windows10 UWP应用回环代理限制</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtautoUpdateInterval.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>248, 157</value>
|
|
||||||
</data>
|
|
||||||
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>191, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label15.Text" xml:space="preserve">
|
|
||||||
<value>自动更新Geo文件的间隔(单位小时)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkIgnoreGeoUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>150, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkIgnoreGeoUpdateCore.Text" xml:space="preserve">
|
|
||||||
<value>更新Core时忽略Geo文件</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkKeepOlderDedupl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>156, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
|
|
||||||
<value>去重时保留序号较小的项</value>
|
|
||||||
</data>
|
|
||||||
<data name="lbFreshrate.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>339, 41</value>
|
|
||||||
</data>
|
|
||||||
<data name="lbFreshrate.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>125, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="lbFreshrate.Text" xml:space="preserve">
|
|
||||||
<value>统计刷新频率(单位秒)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableStatistics.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>300, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableStatistics.Text" xml:space="preserve">
|
|
||||||
<value>启用统计(实时网速显示和使用流量显示,需要重启)</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoRun.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>180, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoRun.Text" xml:space="preserve">
|
|
||||||
<value>开机自动启动(可能会不成功)</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPageCoreType.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPageCoreType.Text" xml:space="preserve">
|
|
||||||
<value> Core类型设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage3.Text" xml:space="preserve">
|
|
||||||
<value> 系统代理设置 </value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>654, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Text" xml:space="preserve">
|
|
||||||
<value>例外</value>
|
|
||||||
</data>
|
|
||||||
<data name="label18.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>173, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label18.Text" xml:space="preserve">
|
|
||||||
<value>高级代理设置, 协议选择(可选)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label13.Text" xml:space="preserve">
|
|
||||||
<value>使用分号(;)分隔</value>
|
|
||||||
</data>
|
|
||||||
<data name="label12.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>239, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label12.Text" xml:space="preserve">
|
|
||||||
<value>对于下列字符开头的地址不使用代理服务器:</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 479</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>662, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>662, 10</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>662, 539</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>参数设置</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnableCheckPreReleaseUpdate.Text" xml:space="preserve">
|
|
||||||
<value>检查Pre-Release更新(请谨慎启用)</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,68 +0,0 @@
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class QRCodeControl
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 必需的设计器变量。
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清理所有正在使用的资源。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 组件设计器生成的代码
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 设计器支持所需的方法 - 不要
|
|
||||||
/// 使用代码编辑器修改此方法的内容。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(QRCodeControl));
|
|
||||||
this.txtUrl = new System.Windows.Forms.TextBox();
|
|
||||||
this.picQRCode = new System.Windows.Forms.PictureBox();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.picQRCode)).BeginInit();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// txtUrl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtUrl, "txtUrl");
|
|
||||||
this.txtUrl.Name = "txtUrl";
|
|
||||||
this.txtUrl.ReadOnly = true;
|
|
||||||
//
|
|
||||||
// picQRCode
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.picQRCode, "picQRCode");
|
|
||||||
this.picQRCode.Name = "picQRCode";
|
|
||||||
this.picQRCode.TabStop = false;
|
|
||||||
//
|
|
||||||
// QRCodeControl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.Controls.Add(this.picQRCode);
|
|
||||||
this.Controls.Add(this.txtUrl);
|
|
||||||
this.Name = "QRCodeControl";
|
|
||||||
this.Load += new System.EventHandler(this.QRCodeControl_Load);
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.picQRCode)).EndInit();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
this.PerformLayout();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.TextBox txtUrl;
|
|
||||||
private System.Windows.Forms.PictureBox picQRCode;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,39 +0,0 @@
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class QRCodeControl : UserControl
|
|
||||||
{
|
|
||||||
public QRCodeControl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
private void QRCodeControl_Load(object sender, System.EventArgs e)
|
|
||||||
{
|
|
||||||
txtUrl.MouseUp += txtUrl_MouseUp;
|
|
||||||
}
|
|
||||||
|
|
||||||
void txtUrl_MouseUp(object sender, MouseEventArgs e)
|
|
||||||
{
|
|
||||||
txtUrl.SelectAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void showQRCode(VmessItem item)
|
|
||||||
{
|
|
||||||
if (item != null)
|
|
||||||
{
|
|
||||||
string url = ShareHandler.GetShareUrl(item);
|
|
||||||
if (Utils.IsNullOrEmpty(url))
|
|
||||||
{
|
|
||||||
picQRCode.Image = null;
|
|
||||||
txtUrl.Text = string.Empty;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
txtUrl.Text = url;
|
|
||||||
picQRCode.Image = QRCodeHelper.GetQRCode(url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,192 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="txtUrl.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 371</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="txtUrl.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>356, 70</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Name" xml:space="preserve">
|
|
||||||
<value>txtUrl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>356, 371</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
|
|
||||||
<value>Zoom</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>24</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>picQRCode.Name" xml:space="preserve">
|
|
||||||
<value>picQRCode</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>picQRCode.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>picQRCode.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>picQRCode.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>356, 441</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>QRCodeControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,271 +0,0 @@
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class RoutingRuleSettingDetailsForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingRuleSettingDetailsForm));
|
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
|
||||||
this.panel3 = new System.Windows.Forms.Panel();
|
|
||||||
this.linkRuleobjectDoc = new System.Windows.Forms.LinkLabel();
|
|
||||||
this.chkEnabled = new System.Windows.Forms.CheckBox();
|
|
||||||
this.clbInboundTag = new System.Windows.Forms.CheckedListBox();
|
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
|
||||||
this.clbProtocol = new System.Windows.Forms.CheckedListBox();
|
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
|
||||||
this.txtPort = new System.Windows.Forms.TextBox();
|
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
|
||||||
this.labRoutingTips = new System.Windows.Forms.Label();
|
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbOutboundTag = new System.Windows.Forms.ComboBox();
|
|
||||||
this.panel4 = new System.Windows.Forms.Panel();
|
|
||||||
this.chkAutoSort = new System.Windows.Forms.CheckBox();
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
|
||||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.txtIP = new System.Windows.Forms.TextBox();
|
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.txtDomain = new System.Windows.Forms.TextBox();
|
|
||||||
this.panel3.SuspendLayout();
|
|
||||||
this.panel4.SuspendLayout();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.groupBox2.SuspendLayout();
|
|
||||||
this.groupBox1.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel1, "panel1");
|
|
||||||
this.panel1.Name = "panel1";
|
|
||||||
//
|
|
||||||
// panel3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel3, "panel3");
|
|
||||||
this.panel3.Controls.Add(this.linkRuleobjectDoc);
|
|
||||||
this.panel3.Controls.Add(this.chkEnabled);
|
|
||||||
this.panel3.Controls.Add(this.clbInboundTag);
|
|
||||||
this.panel3.Controls.Add(this.label2);
|
|
||||||
this.panel3.Controls.Add(this.clbProtocol);
|
|
||||||
this.panel3.Controls.Add(this.label3);
|
|
||||||
this.panel3.Controls.Add(this.txtPort);
|
|
||||||
this.panel3.Controls.Add(this.label1);
|
|
||||||
this.panel3.Controls.Add(this.labRoutingTips);
|
|
||||||
this.panel3.Controls.Add(this.label4);
|
|
||||||
this.panel3.Controls.Add(this.cmbOutboundTag);
|
|
||||||
this.panel3.Name = "panel3";
|
|
||||||
//
|
|
||||||
// linkRuleobjectDoc
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.linkRuleobjectDoc, "linkRuleobjectDoc");
|
|
||||||
this.linkRuleobjectDoc.Name = "linkRuleobjectDoc";
|
|
||||||
this.linkRuleobjectDoc.TabStop = true;
|
|
||||||
this.linkRuleobjectDoc.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkRuleobjectDoc_LinkClicked);
|
|
||||||
//
|
|
||||||
// chkEnabled
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkEnabled, "chkEnabled");
|
|
||||||
this.chkEnabled.Name = "chkEnabled";
|
|
||||||
this.chkEnabled.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// clbInboundTag
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.clbInboundTag, "clbInboundTag");
|
|
||||||
this.clbInboundTag.CheckOnClick = true;
|
|
||||||
this.clbInboundTag.FormattingEnabled = true;
|
|
||||||
this.clbInboundTag.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("clbInboundTag.Items"),
|
|
||||||
resources.GetString("clbInboundTag.Items1"),
|
|
||||||
resources.GetString("clbInboundTag.Items2"),
|
|
||||||
resources.GetString("clbInboundTag.Items3")});
|
|
||||||
this.clbInboundTag.MultiColumn = true;
|
|
||||||
this.clbInboundTag.Name = "clbInboundTag";
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label2, "label2");
|
|
||||||
this.label2.Name = "label2";
|
|
||||||
//
|
|
||||||
// clbProtocol
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.clbProtocol, "clbProtocol");
|
|
||||||
this.clbProtocol.CheckOnClick = true;
|
|
||||||
this.clbProtocol.FormattingEnabled = true;
|
|
||||||
this.clbProtocol.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("clbProtocol.Items"),
|
|
||||||
resources.GetString("clbProtocol.Items1"),
|
|
||||||
resources.GetString("clbProtocol.Items2")});
|
|
||||||
this.clbProtocol.MultiColumn = true;
|
|
||||||
this.clbProtocol.Name = "clbProtocol";
|
|
||||||
//
|
|
||||||
// label3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label3, "label3");
|
|
||||||
this.label3.Name = "label3";
|
|
||||||
//
|
|
||||||
// txtPort
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtPort, "txtPort");
|
|
||||||
this.txtPort.Name = "txtPort";
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label1, "label1");
|
|
||||||
this.label1.Name = "label1";
|
|
||||||
//
|
|
||||||
// labRoutingTips
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labRoutingTips, "labRoutingTips");
|
|
||||||
this.labRoutingTips.ForeColor = System.Drawing.Color.Brown;
|
|
||||||
this.labRoutingTips.Name = "labRoutingTips";
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label4, "label4");
|
|
||||||
this.label4.Name = "label4";
|
|
||||||
//
|
|
||||||
// cmbOutboundTag
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag");
|
|
||||||
this.cmbOutboundTag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbOutboundTag.FormattingEnabled = true;
|
|
||||||
this.cmbOutboundTag.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbOutboundTag.Items"),
|
|
||||||
resources.GetString("cmbOutboundTag.Items1"),
|
|
||||||
resources.GetString("cmbOutboundTag.Items2")});
|
|
||||||
this.cmbOutboundTag.Name = "cmbOutboundTag";
|
|
||||||
//
|
|
||||||
// panel4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel4, "panel4");
|
|
||||||
this.panel4.Controls.Add(this.chkAutoSort);
|
|
||||||
this.panel4.Controls.Add(this.btnClose);
|
|
||||||
this.panel4.Controls.Add(this.btnOK);
|
|
||||||
this.panel4.Name = "panel4";
|
|
||||||
//
|
|
||||||
// chkAutoSort
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkAutoSort, "chkAutoSort");
|
|
||||||
this.chkAutoSort.Name = "chkAutoSort";
|
|
||||||
this.chkAutoSort.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Controls.Add(this.groupBox2);
|
|
||||||
this.panel2.Controls.Add(this.groupBox1);
|
|
||||||
this.panel2.Name = "panel2";
|
|
||||||
//
|
|
||||||
// groupBox2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
|
||||||
this.groupBox2.Controls.Add(this.txtIP);
|
|
||||||
this.groupBox2.Name = "groupBox2";
|
|
||||||
this.groupBox2.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtIP
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtIP, "txtIP");
|
|
||||||
this.txtIP.Name = "txtIP";
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Controls.Add(this.txtDomain);
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
|
||||||
this.groupBox1.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtDomain
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtDomain, "txtDomain");
|
|
||||||
this.txtDomain.Name = "txtDomain";
|
|
||||||
//
|
|
||||||
// RoutingRuleSettingDetailsForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.Controls.Add(this.panel4);
|
|
||||||
this.Controls.Add(this.panel3);
|
|
||||||
this.Controls.Add(this.panel1);
|
|
||||||
this.Name = "RoutingRuleSettingDetailsForm";
|
|
||||||
this.Load += new System.EventHandler(this.RoutingRuleSettingDetailsForm_Load);
|
|
||||||
this.panel3.ResumeLayout(false);
|
|
||||||
this.panel3.PerformLayout();
|
|
||||||
this.panel4.ResumeLayout(false);
|
|
||||||
this.panel4.PerformLayout();
|
|
||||||
this.panel2.ResumeLayout(false);
|
|
||||||
this.groupBox2.ResumeLayout(false);
|
|
||||||
this.groupBox2.PerformLayout();
|
|
||||||
this.groupBox1.ResumeLayout(false);
|
|
||||||
this.groupBox1.PerformLayout();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.Panel panel1;
|
|
||||||
private System.Windows.Forms.Panel panel3;
|
|
||||||
private System.Windows.Forms.Label label4;
|
|
||||||
private System.Windows.Forms.ComboBox cmbOutboundTag;
|
|
||||||
private System.Windows.Forms.Panel panel4;
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox1;
|
|
||||||
private System.Windows.Forms.TextBox txtDomain;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox2;
|
|
||||||
private System.Windows.Forms.TextBox txtIP;
|
|
||||||
private System.Windows.Forms.Label labRoutingTips;
|
|
||||||
private System.Windows.Forms.Label label1;
|
|
||||||
private System.Windows.Forms.TextBox txtPort;
|
|
||||||
private System.Windows.Forms.Label label3;
|
|
||||||
private System.Windows.Forms.CheckedListBox clbProtocol;
|
|
||||||
private System.Windows.Forms.CheckedListBox clbInboundTag;
|
|
||||||
private System.Windows.Forms.Label label2;
|
|
||||||
private System.Windows.Forms.CheckBox chkEnabled;
|
|
||||||
private System.Windows.Forms.CheckBox chkAutoSort;
|
|
||||||
private System.Windows.Forms.LinkLabel linkRuleobjectDoc;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,148 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Base;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class RoutingRuleSettingDetailsForm : BaseForm
|
|
||||||
{
|
|
||||||
public RulesItem rulesItem
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RoutingRuleSettingDetailsForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RoutingRuleSettingDetailsForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (Utils.IsNullOrEmpty(rulesItem.outboundTag))
|
|
||||||
{
|
|
||||||
ClearBind();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
BindingData();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void EndBindingData()
|
|
||||||
{
|
|
||||||
if (rulesItem != null)
|
|
||||||
{
|
|
||||||
rulesItem.port = txtPort.Text.TrimEx();
|
|
||||||
|
|
||||||
var inboundTag = new List<String>();
|
|
||||||
for (int i = 0; i < clbInboundTag.Items.Count; i++)
|
|
||||||
{
|
|
||||||
if (clbInboundTag.GetItemChecked(i))
|
|
||||||
{
|
|
||||||
inboundTag.Add(clbInboundTag.Items[i].ToString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rulesItem.inboundTag = inboundTag;
|
|
||||||
rulesItem.outboundTag = cmbOutboundTag.Text;
|
|
||||||
if (chkAutoSort.Checked)
|
|
||||||
{
|
|
||||||
rulesItem.domain = Utils.String2ListSorted(txtDomain.Text);
|
|
||||||
rulesItem.ip = Utils.String2ListSorted(txtIP.Text);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
rulesItem.domain = Utils.String2List(txtDomain.Text);
|
|
||||||
rulesItem.ip = Utils.String2List(txtIP.Text);
|
|
||||||
}
|
|
||||||
|
|
||||||
var protocol = new List<string>();
|
|
||||||
for (int i = 0; i < clbProtocol.Items.Count; i++)
|
|
||||||
{
|
|
||||||
if (clbProtocol.GetItemChecked(i))
|
|
||||||
{
|
|
||||||
protocol.Add(clbProtocol.Items[i].ToString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rulesItem.protocol = protocol;
|
|
||||||
rulesItem.enabled = chkEnabled.Checked;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void BindingData()
|
|
||||||
{
|
|
||||||
if (rulesItem != null)
|
|
||||||
{
|
|
||||||
txtPort.Text = rulesItem.port ?? string.Empty;
|
|
||||||
cmbOutboundTag.Text = rulesItem.outboundTag;
|
|
||||||
txtDomain.Text = Utils.List2String(rulesItem.domain, true);
|
|
||||||
txtIP.Text = Utils.List2String(rulesItem.ip, true);
|
|
||||||
|
|
||||||
if (rulesItem.inboundTag != null)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < clbInboundTag.Items.Count; i++)
|
|
||||||
{
|
|
||||||
if (rulesItem.inboundTag.Contains(clbInboundTag.Items[i].ToString()))
|
|
||||||
{
|
|
||||||
clbInboundTag.SetItemChecked(i, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rulesItem.protocol != null)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < clbProtocol.Items.Count; i++)
|
|
||||||
{
|
|
||||||
if (rulesItem.protocol.Contains(clbProtocol.Items[i].ToString()))
|
|
||||||
{
|
|
||||||
clbProtocol.SetItemChecked(i, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
chkEnabled.Checked = rulesItem.enabled;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void ClearBind()
|
|
||||||
{
|
|
||||||
txtPort.Text = string.Empty;
|
|
||||||
cmbOutboundTag.Text = Global.agentTag;
|
|
||||||
txtDomain.Text = string.Empty;
|
|
||||||
txtIP.Text = string.Empty;
|
|
||||||
chkEnabled.Checked = true;
|
|
||||||
}
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
EndBindingData();
|
|
||||||
|
|
||||||
bool hasRule =
|
|
||||||
rulesItem.domain != null
|
|
||||||
&& rulesItem.domain.Count > 0
|
|
||||||
|| rulesItem.ip != null
|
|
||||||
&& rulesItem.ip.Count > 0
|
|
||||||
|| rulesItem.protocol != null
|
|
||||||
&& rulesItem.protocol.Count > 0
|
|
||||||
|| !Utils.IsNullOrEmpty(rulesItem.port);
|
|
||||||
|
|
||||||
if (!hasRule)
|
|
||||||
{
|
|
||||||
UI.ShowWarning(string.Format(ResUI.RoutingRuleDetailRequiredTips, "Port/Protocol/Domain/IP"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void linkRuleobjectDoc_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
||||||
{
|
|
||||||
Process.Start("https://www.v2fly.org/config/routing.html#ruleobject");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,762 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="chkAutoSort.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>linkRuleobjectDoc.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbInboundTag.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.CheckedListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="label4.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>32</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>linkRuleobjectDoc.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="clbProtocol.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>245, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>53, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbOutboundTag.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>31</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbOutboundTag.Items" xml:space="preserve">
|
|
||||||
<value>proxy</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 4, 4, 4</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Name" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbProtocol.Name" xml:space="preserve">
|
|
||||||
<value>clbProtocol</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labRoutingTips.ZOrder" xml:space="preserve">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbProtocol.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Left</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.ColumnWidth" type="System.Int32, mscorlib">
|
|
||||||
<value>80</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox2.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbInboundTag.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.Items1" xml:space="preserve">
|
|
||||||
<value>http</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoSort.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox2.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbProtocol.Items1" xml:space="preserve">
|
|
||||||
<value>tls</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>RoutingSettingDetailsForm</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbProtocol.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.CheckedListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>411, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbOutboundTag.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>119, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>36</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel4.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkRuleobjectDoc.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>89, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtIP.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>344, 375</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel3.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkAutoSort.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRoutingTips.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>575, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtDomain.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRoutingTips.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPort.ZOrder" xml:space="preserve">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
|
||||||
<value>label1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>742, 395</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>Protocol</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbOutboundTag.ZOrder" xml:space="preserve">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkEnabled.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel3.Name" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbProtocol.Items2" xml:space="preserve">
|
|
||||||
<value>bittorrent</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkRuleobjectDoc.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoSort.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>270, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRoutingTips.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>144, 86</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtIP.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>25</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel3.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>347, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtDomain.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>3, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labRoutingTips.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoSort.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>41</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbProtocol.ColumnWidth" type="System.Int32, mscorlib">
|
|
||||||
<value>80</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>19, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labRoutingTips.Name" xml:space="preserve">
|
|
||||||
<value>labRoutingTips</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>19, 47</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbProtocol.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>39</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtDomain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkRuleobjectDoc.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>RoutingRuleSettingDetailsForm</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPort.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>107, 43</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox2.Name" xml:space="preserve">
|
|
||||||
<value>groupBox2</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkRuleobjectDoc.Text" xml:space="preserve">
|
|
||||||
<value>Ruleobject Doc</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.ZOrder" xml:space="preserve">
|
|
||||||
<value>9</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtDomain.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>386, 375</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbOutboundTag.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.Items3" xml:space="preserve">
|
|
||||||
<value>http2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbOutboundTag.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtIP.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel4.Name" xml:space="preserve">
|
|
||||||
<value>panel4</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.Items2" xml:space="preserve">
|
|
||||||
<value>socks2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>42</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtIP.Parent" xml:space="preserve">
|
|
||||||
<value>groupBox2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkEnabled.Name" xml:space="preserve">
|
|
||||||
<value>chkEnabled</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel4.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtIP.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbProtocol.Items" xml:space="preserve">
|
|
||||||
<value>http</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPort.Name" xml:space="preserve">
|
|
||||||
<value>txtPort</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtIP.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>3, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel4.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>742, 10</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Name" xml:space="preserve">
|
|
||||||
<value>groupBox1</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtDomain.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>24</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>Port</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.Text" xml:space="preserve">
|
|
||||||
<value>Enable</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Name" xml:space="preserve">
|
|
||||||
<value>label4</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labRoutingTips.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
|
||||||
<value>panel4</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>34</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>274, 47</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>40</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbOutboundTag.Items2" xml:space="preserve">
|
|
||||||
<value>block</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRoutingTips.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>33</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbProtocol.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>347, 43</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkEnabled.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtDomain.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkRuleobjectDoc.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>0, 0, 0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel3.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPort.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>119, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Top</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>11</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtIP.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkRuleobjectDoc.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>43</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Name" xml:space="preserve">
|
|
||||||
<value>label3</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>inboundTag</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkAutoSort.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>742, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 121</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkAutoSort.Name" xml:space="preserve">
|
|
||||||
<value>chkAutoSort</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel4.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRoutingTips.Text" xml:space="preserve">
|
|
||||||
<value>*Set the rules, separated by commas (,); The comma in the regular is replaced by <COMMA></value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>345, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>linkRuleobjectDoc.Name" xml:space="preserve">
|
|
||||||
<value>linkRuleobjectDoc</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.Items" xml:space="preserve">
|
|
||||||
<value>socks</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<value>btnClose</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>392, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>742, 111</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtIP.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkEnabled.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>632, 45</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 10</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPort.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtDomain.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>274, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtIP.Name" xml:space="preserve">
|
|
||||||
<value>txtIP</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbOutboundTag.Items1" xml:space="preserve">
|
|
||||||
<value>direct</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Name" xml:space="preserve">
|
|
||||||
<value>label2</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>60, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbOutboundTag.Name" xml:space="preserve">
|
|
||||||
<value>cmbOutboundTag</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoSort.Text" xml:space="preserve">
|
|
||||||
<value>Domain and ip are auto sorted when saving</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtDomain.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkRuleobjectDoc.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>19, 86</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>742, 576</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel4.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>392, 395</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoSort.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>41, 18</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbInboundTag.Name" xml:space="preserve">
|
|
||||||
<value>clbInboundTag</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Top</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>&Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtDomain.Name" xml:space="preserve">
|
|
||||||
<value>txtDomain</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>41</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Text" xml:space="preserve">
|
|
||||||
<value>IP</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbInboundTag.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel4.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 516</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>71, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>350, 395</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkAutoSort.Parent" xml:space="preserve">
|
|
||||||
<value>panel4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbProtocol.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Text" xml:space="preserve">
|
|
||||||
<value>Domain</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>504, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>linkRuleobjectDoc.Parent" xml:space="preserve">
|
|
||||||
<value>panel3</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbOutboundTag.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>107, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>outboundTag</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>groupBox1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPort.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>35</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
|
|
@ -1,185 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="linkRuleobjectDoc.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>101, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkRuleobjectDoc.Text" xml:space="preserve">
|
|
||||||
<value>规则详细说明文档</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>670, 48</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>372, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbInboundTag.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>347, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>279, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbProtocol.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>372, 46</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbProtocol.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>272, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>279, 50</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPort.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>120, 46</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>19, 50</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRoutingTips.Text" xml:space="preserve">
|
|
||||||
<value>*设置的路由规则,用逗号(,)分隔;正则中的逗号用<COMMA>替代</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>OutboundTag</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbOutboundTag.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>120, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoSort.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>168, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkAutoSort.Text" xml:space="preserve">
|
|
||||||
<value>保存时Domain和IP自动排序</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="txtIP.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
|
|
||||||
<value>Vertical</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtDomain.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
|
|
||||||
<value>Vertical</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>路由规则详情设置</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,357 +0,0 @@
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class RoutingRuleSettingForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
this.components = new System.ComponentModel.Container();
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingRuleSettingForm));
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
|
||||||
this.label5 = new System.Windows.Forms.Label();
|
|
||||||
this.btnBrowse = new System.Windows.Forms.Button();
|
|
||||||
this.txtCustomIcon = new System.Windows.Forms.TextBox();
|
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
|
||||||
this.txtUrl = new System.Windows.Forms.TextBox();
|
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
|
||||||
this.txtRemarks = new System.Windows.Forms.TextBox();
|
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
|
||||||
this.lvRoutings = new v2rayN.Base.ListViewFlickerFree();
|
|
||||||
this.cmsLv = new System.Windows.Forms.ContextMenuStrip(this.components);
|
|
||||||
this.menuAdd = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuRemove = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuSelectAll = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuExportSelectedRules = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.menuMoveTop = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMoveUp = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMoveDown = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuMoveBottom = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.MenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tabControl2 = new System.Windows.Forms.TabControl();
|
|
||||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
|
||||||
this.menuServer = new System.Windows.Forms.MenuStrip();
|
|
||||||
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuImportRulesFromFile = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuImportRulesFromClipboard = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuImportRulesFromUrl = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.panel1.SuspendLayout();
|
|
||||||
this.cmsLv.SuspendLayout();
|
|
||||||
this.tabControl2.SuspendLayout();
|
|
||||||
this.tabPage2.SuspendLayout();
|
|
||||||
this.menuServer.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
|
||||||
this.panel2.Name = "panel2";
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panel1, "panel1");
|
|
||||||
this.panel1.Controls.Add(this.label5);
|
|
||||||
this.panel1.Controls.Add(this.btnBrowse);
|
|
||||||
this.panel1.Controls.Add(this.txtCustomIcon);
|
|
||||||
this.panel1.Controls.Add(this.label4);
|
|
||||||
this.panel1.Controls.Add(this.label1);
|
|
||||||
this.panel1.Controls.Add(this.txtUrl);
|
|
||||||
this.panel1.Controls.Add(this.label3);
|
|
||||||
this.panel1.Controls.Add(this.txtRemarks);
|
|
||||||
this.panel1.Controls.Add(this.label2);
|
|
||||||
this.panel1.Name = "panel1";
|
|
||||||
//
|
|
||||||
// label5
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label5, "label5");
|
|
||||||
this.label5.Name = "label5";
|
|
||||||
//
|
|
||||||
// btnBrowse
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnBrowse, "btnBrowse");
|
|
||||||
this.btnBrowse.Name = "btnBrowse";
|
|
||||||
this.btnBrowse.UseVisualStyleBackColor = true;
|
|
||||||
this.btnBrowse.Click += new System.EventHandler(this.btnBrowse_Click);
|
|
||||||
//
|
|
||||||
// txtCustomIcon
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtCustomIcon, "txtCustomIcon");
|
|
||||||
this.txtCustomIcon.Name = "txtCustomIcon";
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label4, "label4");
|
|
||||||
this.label4.Name = "label4";
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label1, "label1");
|
|
||||||
this.label1.Name = "label1";
|
|
||||||
//
|
|
||||||
// txtUrl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtUrl, "txtUrl");
|
|
||||||
this.txtUrl.Name = "txtUrl";
|
|
||||||
//
|
|
||||||
// label3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label3, "label3");
|
|
||||||
this.label3.Name = "label3";
|
|
||||||
//
|
|
||||||
// txtRemarks
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtRemarks, "txtRemarks");
|
|
||||||
this.txtRemarks.Name = "txtRemarks";
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label2, "label2");
|
|
||||||
this.label2.Name = "label2";
|
|
||||||
//
|
|
||||||
// lvRoutings
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.lvRoutings, "lvRoutings");
|
|
||||||
this.lvRoutings.ContextMenuStrip = this.cmsLv;
|
|
||||||
this.lvRoutings.FullRowSelect = true;
|
|
||||||
this.lvRoutings.GridLines = true;
|
|
||||||
this.lvRoutings.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
|
||||||
this.lvRoutings.HideSelection = false;
|
|
||||||
this.lvRoutings.Items.AddRange(new System.Windows.Forms.ListViewItem[] {
|
|
||||||
((System.Windows.Forms.ListViewItem)(resources.GetObject("lvRoutings.Items")))});
|
|
||||||
this.lvRoutings.MultiSelect = false;
|
|
||||||
this.lvRoutings.Name = "lvRoutings";
|
|
||||||
this.lvRoutings.UseCompatibleStateImageBehavior = false;
|
|
||||||
this.lvRoutings.View = System.Windows.Forms.View.Details;
|
|
||||||
this.lvRoutings.DoubleClick += new System.EventHandler(this.lvRoutings_DoubleClick);
|
|
||||||
this.lvRoutings.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lvRoutings_KeyDown);
|
|
||||||
//
|
|
||||||
// cmsLv
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmsLv, "cmsLv");
|
|
||||||
this.cmsLv.ImageScalingSize = new System.Drawing.Size(20, 20);
|
|
||||||
this.cmsLv.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.menuAdd,
|
|
||||||
this.menuRemove,
|
|
||||||
this.menuSelectAll,
|
|
||||||
this.menuExportSelectedRules,
|
|
||||||
this.toolStripSeparator3,
|
|
||||||
this.menuMoveTop,
|
|
||||||
this.menuMoveUp,
|
|
||||||
this.menuMoveDown,
|
|
||||||
this.menuMoveBottom});
|
|
||||||
this.cmsLv.Name = "cmsLv";
|
|
||||||
this.cmsLv.OwnerItem = this.MenuItem1;
|
|
||||||
//
|
|
||||||
// menuAdd
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuAdd, "menuAdd");
|
|
||||||
this.menuAdd.Name = "menuAdd";
|
|
||||||
this.menuAdd.Click += new System.EventHandler(this.menuAdd_Click);
|
|
||||||
//
|
|
||||||
// menuRemove
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuRemove, "menuRemove");
|
|
||||||
this.menuRemove.Name = "menuRemove";
|
|
||||||
this.menuRemove.Click += new System.EventHandler(this.menuRemove_Click);
|
|
||||||
//
|
|
||||||
// menuSelectAll
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuSelectAll, "menuSelectAll");
|
|
||||||
this.menuSelectAll.Name = "menuSelectAll";
|
|
||||||
this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click);
|
|
||||||
//
|
|
||||||
// menuExportSelectedRules
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuExportSelectedRules, "menuExportSelectedRules");
|
|
||||||
this.menuExportSelectedRules.Name = "menuExportSelectedRules";
|
|
||||||
this.menuExportSelectedRules.Click += new System.EventHandler(this.menuExportSelectedRules_Click);
|
|
||||||
//
|
|
||||||
// toolStripSeparator3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3");
|
|
||||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
|
||||||
//
|
|
||||||
// menuMoveTop
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMoveTop, "menuMoveTop");
|
|
||||||
this.menuMoveTop.Name = "menuMoveTop";
|
|
||||||
this.menuMoveTop.Click += new System.EventHandler(this.menuMoveTop_Click);
|
|
||||||
//
|
|
||||||
// menuMoveUp
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMoveUp, "menuMoveUp");
|
|
||||||
this.menuMoveUp.Name = "menuMoveUp";
|
|
||||||
this.menuMoveUp.Click += new System.EventHandler(this.menuMoveUp_Click);
|
|
||||||
//
|
|
||||||
// menuMoveDown
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMoveDown, "menuMoveDown");
|
|
||||||
this.menuMoveDown.Name = "menuMoveDown";
|
|
||||||
this.menuMoveDown.Click += new System.EventHandler(this.menuMoveDown_Click);
|
|
||||||
//
|
|
||||||
// menuMoveBottom
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom");
|
|
||||||
this.menuMoveBottom.Name = "menuMoveBottom";
|
|
||||||
this.menuMoveBottom.Click += new System.EventHandler(this.menuMoveBottom_Click);
|
|
||||||
//
|
|
||||||
// MenuItem1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.MenuItem1, "MenuItem1");
|
|
||||||
this.MenuItem1.DropDown = this.cmsLv;
|
|
||||||
this.MenuItem1.Name = "MenuItem1";
|
|
||||||
//
|
|
||||||
// tabControl2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.tabControl2, "tabControl2");
|
|
||||||
this.tabControl2.Controls.Add(this.tabPage2);
|
|
||||||
this.tabControl2.Name = "tabControl2";
|
|
||||||
this.tabControl2.SelectedIndex = 0;
|
|
||||||
//
|
|
||||||
// tabPage2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.tabPage2, "tabPage2");
|
|
||||||
this.tabPage2.Controls.Add(this.lvRoutings);
|
|
||||||
this.tabPage2.Name = "tabPage2";
|
|
||||||
this.tabPage2.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// menuServer
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuServer, "menuServer");
|
|
||||||
this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.MenuItem1,
|
|
||||||
this.toolStripMenuItem1});
|
|
||||||
this.menuServer.Name = "menuServer";
|
|
||||||
//
|
|
||||||
// toolStripMenuItem1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1");
|
|
||||||
this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.menuImportRulesFromFile,
|
|
||||||
this.menuImportRulesFromClipboard,
|
|
||||||
this.menuImportRulesFromUrl});
|
|
||||||
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
|
||||||
//
|
|
||||||
// menuImportRulesFromFile
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuImportRulesFromFile, "menuImportRulesFromFile");
|
|
||||||
this.menuImportRulesFromFile.Name = "menuImportRulesFromFile";
|
|
||||||
this.menuImportRulesFromFile.Click += new System.EventHandler(this.menuImportRulesFromFile_Click);
|
|
||||||
//
|
|
||||||
// menuImportRulesFromClipboard
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuImportRulesFromClipboard, "menuImportRulesFromClipboard");
|
|
||||||
this.menuImportRulesFromClipboard.Name = "menuImportRulesFromClipboard";
|
|
||||||
this.menuImportRulesFromClipboard.Click += new System.EventHandler(this.menuImportRulesFromClipboard_Click);
|
|
||||||
//
|
|
||||||
// menuImportRulesFromUrl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.menuImportRulesFromUrl, "menuImportRulesFromUrl");
|
|
||||||
this.menuImportRulesFromUrl.Name = "menuImportRulesFromUrl";
|
|
||||||
this.menuImportRulesFromUrl.Click += new System.EventHandler(this.menuImportRulesFromUrl_Click);
|
|
||||||
//
|
|
||||||
// RoutingRuleSettingForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.tabControl2);
|
|
||||||
this.Controls.Add(this.panel1);
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.Controls.Add(this.menuServer);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
|
||||||
this.Name = "RoutingRuleSettingForm";
|
|
||||||
this.Load += new System.EventHandler(this.RoutingRuleSettingForm_Load);
|
|
||||||
this.panel2.ResumeLayout(false);
|
|
||||||
this.panel1.ResumeLayout(false);
|
|
||||||
this.panel1.PerformLayout();
|
|
||||||
this.cmsLv.ResumeLayout(false);
|
|
||||||
this.tabControl2.ResumeLayout(false);
|
|
||||||
this.tabPage2.ResumeLayout(false);
|
|
||||||
this.menuServer.ResumeLayout(false);
|
|
||||||
this.menuServer.PerformLayout();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
this.PerformLayout();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.Panel panel1;
|
|
||||||
private Base.ListViewFlickerFree lvRoutings;
|
|
||||||
private System.Windows.Forms.TabControl tabControl2;
|
|
||||||
private System.Windows.Forms.TabPage tabPage2;
|
|
||||||
private System.Windows.Forms.ContextMenuStrip cmsLv;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuRemove;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMoveTop;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMoveUp;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMoveDown;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuMoveBottom;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuSelectAll;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAdd;
|
|
||||||
private System.Windows.Forms.MenuStrip menuServer;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem MenuItem1;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromFile;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromClipboard;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuExportSelectedRules;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuImportRulesFromUrl;
|
|
||||||
private System.Windows.Forms.TextBox txtRemarks;
|
|
||||||
private System.Windows.Forms.Label label2;
|
|
||||||
private System.Windows.Forms.TextBox txtUrl;
|
|
||||||
private System.Windows.Forms.Label label3;
|
|
||||||
private System.Windows.Forms.Label label1;
|
|
||||||
private System.Windows.Forms.TextBox txtCustomIcon;
|
|
||||||
private System.Windows.Forms.Label label4;
|
|
||||||
private System.Windows.Forms.Button btnBrowse;
|
|
||||||
private System.Windows.Forms.Label label5;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,365 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Base;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class RoutingRuleSettingForm : BaseForm
|
|
||||||
{
|
|
||||||
public int EditIndex
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
protected RoutingItem routingItem;
|
|
||||||
|
|
||||||
private readonly List<int> lvSelecteds = new List<int>();
|
|
||||||
public RoutingRuleSettingForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RoutingRuleSettingForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
routingItem = EditIndex >= 0 ? config.routings[EditIndex] : new RoutingItem();
|
|
||||||
if (routingItem.rules == null)
|
|
||||||
{
|
|
||||||
routingItem.rules = new List<RulesItem>();
|
|
||||||
}
|
|
||||||
|
|
||||||
txtRemarks.Text = routingItem.remarks ?? string.Empty;
|
|
||||||
txtUrl.Text = routingItem.url ?? string.Empty;
|
|
||||||
txtCustomIcon.Text = routingItem.customIcon ?? string.Empty;
|
|
||||||
|
|
||||||
InitRoutingsView();
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void InitRoutingsView()
|
|
||||||
{
|
|
||||||
lvRoutings.BeginUpdate();
|
|
||||||
lvRoutings.Items.Clear();
|
|
||||||
|
|
||||||
lvRoutings.GridLines = true;
|
|
||||||
lvRoutings.FullRowSelect = true;
|
|
||||||
lvRoutings.View = View.Details;
|
|
||||||
lvRoutings.MultiSelect = true;
|
|
||||||
lvRoutings.HeaderStyle = ColumnHeaderStyle.Clickable;
|
|
||||||
lvRoutings.RegisterDragEvent(UpdateDragEventHandler);
|
|
||||||
|
|
||||||
lvRoutings.Columns.Add("", 30);
|
|
||||||
lvRoutings.Columns.Add("outboundTag", 80);
|
|
||||||
lvRoutings.Columns.Add("port", 80);
|
|
||||||
lvRoutings.Columns.Add("protocol", 80);
|
|
||||||
lvRoutings.Columns.Add("inboundTag", 80);
|
|
||||||
lvRoutings.Columns.Add("domain", 160);
|
|
||||||
lvRoutings.Columns.Add("ip", 160);
|
|
||||||
lvRoutings.Columns.Add("enable", 60);
|
|
||||||
|
|
||||||
lvRoutings.EndUpdate();
|
|
||||||
}
|
|
||||||
private void UpdateDragEventHandler(int index, int targetIndex)
|
|
||||||
{
|
|
||||||
if (index < 0 || targetIndex < 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (ConfigHandler.MoveRoutingRule(ref routingItem, index, EMove.Position, targetIndex) == 0)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RefreshRoutingsView()
|
|
||||||
{
|
|
||||||
lvRoutings.BeginUpdate();
|
|
||||||
lvRoutings.Items.Clear();
|
|
||||||
|
|
||||||
foreach (var item in routingItem.rules)
|
|
||||||
{
|
|
||||||
ListViewItem lvItem = new ListViewItem("");
|
|
||||||
Utils.AddSubItem(lvItem, "outboundTag", item.outboundTag);
|
|
||||||
Utils.AddSubItem(lvItem, "port", item.port);
|
|
||||||
Utils.AddSubItem(lvItem, "protocol", Utils.List2String(item.protocol));
|
|
||||||
Utils.AddSubItem(lvItem, "inboundTag", Utils.List2String(item.inboundTag));
|
|
||||||
Utils.AddSubItem(lvItem, "domain", Utils.List2String(item.domain));
|
|
||||||
Utils.AddSubItem(lvItem, "ip", Utils.List2String(item.ip));
|
|
||||||
Utils.AddSubItem(lvItem, "enable", item.enabled.ToString());
|
|
||||||
|
|
||||||
if (lvItem != null) lvRoutings.Items.Add(lvItem);
|
|
||||||
}
|
|
||||||
lvRoutings.EndUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
routingItem.remarks = txtRemarks.Text.Trim();
|
|
||||||
routingItem.url = txtUrl.Text.Trim();
|
|
||||||
routingItem.customIcon = txtCustomIcon.Text.Trim();
|
|
||||||
|
|
||||||
if (ConfigHandler.AddRoutingItem(ref config, routingItem, EditIndex) == 0)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(ResUI.OperationFailed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
private void btnBrowse_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
OpenFileDialog openFileDialog1 = new OpenFileDialog();
|
|
||||||
openFileDialog1.Filter = "PNG|*.png";
|
|
||||||
openFileDialog1.ShowDialog();
|
|
||||||
txtCustomIcon.Text = openFileDialog1.FileName;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lvRoutings_DoubleClick(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
int index = GetLvSelectedIndex();
|
|
||||||
if (index < 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var fm = new RoutingRuleSettingDetailsForm();
|
|
||||||
fm.rulesItem = routingItem.rules[index];
|
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private int GetLvSelectedIndex()
|
|
||||||
{
|
|
||||||
int index = -1;
|
|
||||||
lvSelecteds.Clear();
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (lvRoutings.SelectedIndices.Count <= 0)
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.PleaseSelectRules);
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
index = lvRoutings.SelectedIndices[0];
|
|
||||||
foreach (int i in lvRoutings.SelectedIndices)
|
|
||||||
{
|
|
||||||
lvSelecteds.Add(i);
|
|
||||||
}
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Edit function
|
|
||||||
|
|
||||||
private void menuMoveTop_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
MoveRule(EMove.Top);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuMoveUp_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
MoveRule(EMove.Up);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuMoveDown_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
MoveRule(EMove.Down);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuMoveBottom_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
MoveRule(EMove.Bottom);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void MoveRule(EMove eMove)
|
|
||||||
{
|
|
||||||
int index = GetLvSelectedIndex();
|
|
||||||
if (index < 0)
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.PleaseSelectRules);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (ConfigHandler.MoveRoutingRule(ref routingItem, index, eMove) == 0)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void menuSelectAll_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
foreach (ListViewItem item in lvRoutings.Items)
|
|
||||||
{
|
|
||||||
item.Selected = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuAdd_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var fm = new RoutingRuleSettingDetailsForm();
|
|
||||||
fm.rulesItem = new RulesItem();
|
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
routingItem.rules.Insert(0, fm.rulesItem);
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuRemove_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
int index = GetLvSelectedIndex();
|
|
||||||
if (index < 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (UI.ShowYesNo(ResUI.RemoveRules) == DialogResult.No)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (int k = lvSelecteds.Count - 1; k >= 0; k--)
|
|
||||||
{
|
|
||||||
routingItem.rules.RemoveAt(index);
|
|
||||||
}
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
private void menuExportSelectedRules_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
GetLvSelectedIndex();
|
|
||||||
var lst = new List<RulesItem>();
|
|
||||||
foreach (int v in lvSelecteds)
|
|
||||||
{
|
|
||||||
lst.Add(routingItem.rules[v]);
|
|
||||||
}
|
|
||||||
if (lst.Count > 0)
|
|
||||||
{
|
|
||||||
Utils.SetClipboardData(Utils.ToJson(lst));
|
|
||||||
//UI.Show(ResUI.OperationSuccess"));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lvRoutings_KeyDown(object sender, KeyEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.Control)
|
|
||||||
{
|
|
||||||
switch (e.KeyCode)
|
|
||||||
{
|
|
||||||
case Keys.A:
|
|
||||||
menuSelectAll_Click(null, null);
|
|
||||||
break;
|
|
||||||
case Keys.C:
|
|
||||||
menuExportSelectedRules_Click(null, null);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
switch (e.KeyCode)
|
|
||||||
{
|
|
||||||
case Keys.Delete:
|
|
||||||
menuRemove_Click(null, null);
|
|
||||||
break;
|
|
||||||
case Keys.T:
|
|
||||||
menuMoveTop_Click(null, null);
|
|
||||||
break;
|
|
||||||
case Keys.B:
|
|
||||||
menuMoveBottom_Click(null, null);
|
|
||||||
break;
|
|
||||||
case Keys.U:
|
|
||||||
menuMoveUp_Click(null, null);
|
|
||||||
break;
|
|
||||||
case Keys.D:
|
|
||||||
menuMoveDown_Click(null, null);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region preset rules
|
|
||||||
|
|
||||||
private void menuImportRulesFromFile_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
OpenFileDialog fileDialog = new OpenFileDialog
|
|
||||||
{
|
|
||||||
Multiselect = false,
|
|
||||||
Filter = "Rules|*.json|All|*.*"
|
|
||||||
};
|
|
||||||
if (fileDialog.ShowDialog() != DialogResult.OK)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
string fileName = fileDialog.FileName;
|
|
||||||
if (Utils.IsNullOrEmpty(fileName))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
string result = Utils.LoadResource(fileName);
|
|
||||||
if (Utils.IsNullOrEmpty(result))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AddBatchRoutingRules(ref routingItem, result) == 0)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
UI.Show(ResUI.OperationSuccess);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuImportRulesFromClipboard_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string clipboardData = Utils.GetClipboardData();
|
|
||||||
if (AddBatchRoutingRules(ref routingItem, clipboardData) == 0)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
UI.Show(ResUI.OperationSuccess);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void menuImportRulesFromUrl_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var url = txtUrl.Text.Trim();
|
|
||||||
if (Utils.IsNullOrEmpty(url))
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.MsgNeedUrl);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Task.Run(async () =>
|
|
||||||
{
|
|
||||||
DownloadHandle downloadHandle = new DownloadHandle();
|
|
||||||
string result = await downloadHandle.DownloadStringAsync(url, false, "");
|
|
||||||
if (AddBatchRoutingRules(ref routingItem, result) == 0)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
UI.Show(ResUI.OperationSuccess);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
private int AddBatchRoutingRules(ref RoutingItem routingItem, string clipboardData)
|
|
||||||
{
|
|
||||||
bool blReplace = false;
|
|
||||||
if (UI.ShowYesNo(ResUI.AddBatchRoutingRulesYesNo) == DialogResult.No)
|
|
||||||
{
|
|
||||||
blReplace = true;
|
|
||||||
}
|
|
||||||
return ConfigHandler.AddBatchRoutingRules(ref routingItem, clipboardData, blReplace);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,785 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name=">>tabControl2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>199, 6</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="lvRoutings.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuImportRulesFromUrl.Name" xml:space="preserve">
|
|
||||||
<value>menuImportRulesFromUrl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Text" xml:space="preserve">
|
|
||||||
<value>Down (D)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>762, 25</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>32</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>47, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Text" xml:space="preserve">
|
|
||||||
<value>Move to bottom (B)</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>40</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItem1.Text" xml:space="preserve">
|
|
||||||
<value>Edit and Function</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Name" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuServer.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMoveUp.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServer.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>15</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolStripSeparator3.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolStripMenuItem1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>4, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tabControl2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMoveBottom.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>Rule Settings</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemove.Text" xml:space="preserve">
|
|
||||||
<value>Remove selected</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tabPage2.Name" xml:space="preserve">
|
|
||||||
<value>tabPage2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExportSelectedRules.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>202, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>475, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>33</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>MenuItem1.Name" xml:space="preserve">
|
|
||||||
<value>MenuItem1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>754, 231</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tabControl2.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>568, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuAdd.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtCustomIcon.Name" xml:space="preserve">
|
|
||||||
<value>txtCustomIcon</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServer.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
|
||||||
<value>label1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>762, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>Sub Url</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Text" xml:space="preserve">
|
|
||||||
<value>PNG(128*128)</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>120, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromUrl.Text" xml:space="preserve">
|
|
||||||
<value>Import Rules From Sub Url</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuSelectAll.Name" xml:space="preserve">
|
|
||||||
<value>menuSelectAll</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMoveTop.Name" xml:space="preserve">
|
|
||||||
<value>menuMoveTop</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>202, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmsLv.Name" xml:space="preserve">
|
|
||||||
<value>cmsLv</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAdd.Text" xml:space="preserve">
|
|
||||||
<value>Add</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvRoutings.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolStripSeparator3.Name" xml:space="preserve">
|
|
||||||
<value>toolStripSeparator3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Name" xml:space="preserve">
|
|
||||||
<value>label5</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>lvRoutings.Parent" xml:space="preserve">
|
|
||||||
<value>tabPage2</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>644, 48</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMoveBottom.Name" xml:space="preserve">
|
|
||||||
<value>menuMoveBottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 25</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 105</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 63</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromFile.Text" xml:space="preserve">
|
|
||||||
<value>Import Rules From File</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>202, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>762, 257</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>RoutingRuleSettingForm</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>166, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>202, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMoveTop.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuServer.Name" xml:space="preserve">
|
|
||||||
<value>menuServer</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuSelectAll.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuServer.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<value>btnClose</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Text" xml:space="preserve">
|
|
||||||
<value>Up (U)</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>203, 186</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>47, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>14</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripMenuItem1.Text" xml:space="preserve">
|
|
||||||
<value>Import Rules</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>MenuItem1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel1.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvRoutings.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>3, 3</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>10, 117</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuImportRulesFromClipboard.Name" xml:space="preserve">
|
|
||||||
<value>menuImportRulesFromClipboard</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromClipboard.Text" xml:space="preserve">
|
|
||||||
<value>Import Rules From Clipboard</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuAdd.Name" xml:space="preserve">
|
|
||||||
<value>menuAdd</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 167</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromFile.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>247, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Text" xml:space="preserve">
|
|
||||||
<value>Move to top (T)</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuImportRulesFromUrl.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>762, 142</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Name" xml:space="preserve">
|
|
||||||
<value>txtUrl</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvRoutings.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>748, 225</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>660, 104</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuServer.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvRoutings.Items" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
|
||||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0
|
|
||||||
ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
|
|
||||||
PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA
|
|
||||||
BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5
|
|
||||||
bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz
|
|
||||||
dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA
|
|
||||||
CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5
|
|
||||||
bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3
|
|
||||||
////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0
|
|
||||||
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>34</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtCustomIcon.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Name" xml:space="preserve">
|
|
||||||
<value>label4</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromUrl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>247, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>35</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>lvRoutings.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Base.ListViewFlickerFree, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>71, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 45</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>31</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>91, 45</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuImportRulesFromClipboard.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMoveDown.Name" xml:space="preserve">
|
|
||||||
<value>menuMoveDown</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAdd.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>202, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tabPage2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuImportRulesFromFile.Name" xml:space="preserve">
|
|
||||||
<value>menuImportRulesFromFile</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Name" xml:space="preserve">
|
|
||||||
<value>label3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>11</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
|
|
||||||
<value>Vertical</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Text" xml:space="preserve">
|
|
||||||
<value>&Browse</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtCustomIcon.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tabPage2.Parent" xml:space="preserve">
|
|
||||||
<value>tabControl2</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>Remarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>3, 3, 3, 3</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 424</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMoveUp.Name" xml:space="preserve">
|
|
||||||
<value>menuMoveUp</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Text" xml:space="preserve">
|
|
||||||
<value>RuleList</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>toolStripMenuItem1.Name" xml:space="preserve">
|
|
||||||
<value>toolStripMenuItem1</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtCustomIcon.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>563, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>Select All (Ctrl+A)</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>53, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>18, 13</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtCustomIcon.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>37</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuExportSelectedRules.Name" xml:space="preserve">
|
|
||||||
<value>menuExportSelectedRules</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>Optional</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExportSelectedRules.Text" xml:space="preserve">
|
|
||||||
<value>Export Selected Rules</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>36</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>91, 13</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuRemove.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>247, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemove.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>202, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuMoveDown.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>lvRoutings.Name" xml:space="preserve">
|
|
||||||
<value>lvRoutings</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>202, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtCustomIcon.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>91, 105</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Name" xml:space="preserve">
|
|
||||||
<value>label2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuRemove.Name" xml:space="preserve">
|
|
||||||
<value>menuRemove</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>762, 484</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuImportRulesFromFile.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnBrowse.Name" xml:space="preserve">
|
|
||||||
<value>btnBrowse</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>39</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>202, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>&Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>77, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtCustomIcon.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tabControl2.Name" xml:space="preserve">
|
|
||||||
<value>tabControl2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label5.Parent" xml:space="preserve">
|
|
||||||
<value>panel1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tabPage2.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmsLv.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
|
||||||
<value>txtRemarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>menuExportSelectedRules.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>Custom icon</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>lvRoutings.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Top</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>25</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="menuServer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>139, 17</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="cmsLv.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>17, 17</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
|
|
@ -1,300 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 501</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>785, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>785, 147</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>670, 104</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnBrowse.Text" xml:space="preserve">
|
|
||||||
<value>浏览(&B)</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtCustomIcon.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>101, 105</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>自定义图标</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>可选</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>101, 45</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>83, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>订阅地址(Url)</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>101, 13</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>别名</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAdd.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAdd.Text" xml:space="preserve">
|
|
||||||
<value>添加规则</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemove.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemove.Text" xml:space="preserve">
|
|
||||||
<value>移除所选规则</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>全选</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExportSelectedRules.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuExportSelectedRules.Text" xml:space="preserve">
|
|
||||||
<value>导出所选规则至剪贴板</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>193, 6</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveTop.Text" xml:space="preserve">
|
|
||||||
<value>上移至顶 (T)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveUp.Text" xml:space="preserve">
|
|
||||||
<value>上移 (U)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveDown.Text" xml:space="preserve">
|
|
||||||
<value>下移 (D)</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>196, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuMoveBottom.Text" xml:space="preserve">
|
|
||||||
<value>下移至底 (B)</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>68, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItem1.Text" xml:space="preserve">
|
|
||||||
<value>规则功能</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>197, 186</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvRoutings.Items" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
|
||||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0
|
|
||||||
ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
|
|
||||||
PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA
|
|
||||||
BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5
|
|
||||||
bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz
|
|
||||||
dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA
|
|
||||||
CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5
|
|
||||||
bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3
|
|
||||||
////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0
|
|
||||||
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvRoutings.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>771, 297</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 172</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabControl2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>785, 329</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>777, 303</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPage2.Text" xml:space="preserve">
|
|
||||||
<value>规则列表</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>785, 25</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>68, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="toolStripMenuItem1.Text" xml:space="preserve">
|
|
||||||
<value>导入规则</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromFile.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromFile.Text" xml:space="preserve">
|
|
||||||
<value>从文件中导入规则</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromClipboard.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromClipboard.Text" xml:space="preserve">
|
|
||||||
<value>从剪贴板中导入规则</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromUrl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportRulesFromUrl.Text" xml:space="preserve">
|
|
||||||
<value>从订阅Url中导入规则</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>785, 561</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>规则集设置</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,482 +0,0 @@
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class RoutingSettingForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
this.components = new System.ComponentModel.Container();
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingSettingForm));
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
|
||||||
this.labRoutingTips = new System.Windows.Forms.Label();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
|
||||||
this.cmbdomainMatcher = new System.Windows.Forms.ComboBox();
|
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
|
||||||
this.chkenableRoutingAdvanced = new System.Windows.Forms.CheckBox();
|
|
||||||
this.linkLabelRoutingDoc = new System.Windows.Forms.LinkLabel();
|
|
||||||
this.cmbdomainStrategy = new System.Windows.Forms.ComboBox();
|
|
||||||
this.cmsLv = new System.Windows.Forms.ContextMenuStrip(this.components);
|
|
||||||
this.menuAdd = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuRemove = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuSelectAll = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuSetDefaultRouting = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.menuImportAdvancedRules = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.MenuItemAdvanced = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuServer = new System.Windows.Forms.MenuStrip();
|
|
||||||
this.MenuItemBasic = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.menuImportBasicRules = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.tabNormal = new System.Windows.Forms.TabControl();
|
|
||||||
this.tabPageProxy = new System.Windows.Forms.TabPage();
|
|
||||||
this.panel5 = new System.Windows.Forms.Panel();
|
|
||||||
this.groupBox5 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.txtProxyIp = new System.Windows.Forms.TextBox();
|
|
||||||
this.groupBox6 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.txtProxyDomain = new System.Windows.Forms.TextBox();
|
|
||||||
this.tabPageDirect = new System.Windows.Forms.TabPage();
|
|
||||||
this.panel4 = new System.Windows.Forms.Panel();
|
|
||||||
this.groupBox3 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.txtDirectIp = new System.Windows.Forms.TextBox();
|
|
||||||
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.txtDirectDomain = new System.Windows.Forms.TextBox();
|
|
||||||
this.tabPageBlock = new System.Windows.Forms.TabPage();
|
|
||||||
this.panel3 = new System.Windows.Forms.Panel();
|
|
||||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.txtBlockIp = new System.Windows.Forms.TextBox();
|
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.txtBlockDomain = new System.Windows.Forms.TextBox();
|
|
||||||
this.tabPageRuleList = new System.Windows.Forms.TabPage();
|
|
||||||
this.lvRoutings = new v2rayN.Base.ListViewFlickerFree();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.panel1.SuspendLayout();
|
|
||||||
this.cmsLv.SuspendLayout();
|
|
||||||
this.menuServer.SuspendLayout();
|
|
||||||
this.tabNormal.SuspendLayout();
|
|
||||||
this.tabPageProxy.SuspendLayout();
|
|
||||||
this.panel5.SuspendLayout();
|
|
||||||
this.groupBox5.SuspendLayout();
|
|
||||||
this.groupBox6.SuspendLayout();
|
|
||||||
this.tabPageDirect.SuspendLayout();
|
|
||||||
this.panel4.SuspendLayout();
|
|
||||||
this.groupBox3.SuspendLayout();
|
|
||||||
this.groupBox4.SuspendLayout();
|
|
||||||
this.tabPageBlock.SuspendLayout();
|
|
||||||
this.panel3.SuspendLayout();
|
|
||||||
this.groupBox2.SuspendLayout();
|
|
||||||
this.groupBox1.SuspendLayout();
|
|
||||||
this.tabPageRuleList.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
this.panel2.Controls.Add(this.labRoutingTips);
|
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Name = "panel2";
|
|
||||||
//
|
|
||||||
// labRoutingTips
|
|
||||||
//
|
|
||||||
this.labRoutingTips.ForeColor = System.Drawing.Color.Brown;
|
|
||||||
resources.ApplyResources(this.labRoutingTips, "labRoutingTips");
|
|
||||||
this.labRoutingTips.Name = "labRoutingTips";
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
this.panel1.Controls.Add(this.cmbdomainMatcher);
|
|
||||||
this.panel1.Controls.Add(this.label6);
|
|
||||||
this.panel1.Controls.Add(this.chkenableRoutingAdvanced);
|
|
||||||
this.panel1.Controls.Add(this.linkLabelRoutingDoc);
|
|
||||||
this.panel1.Controls.Add(this.cmbdomainStrategy);
|
|
||||||
resources.ApplyResources(this.panel1, "panel1");
|
|
||||||
this.panel1.Name = "panel1";
|
|
||||||
//
|
|
||||||
// cmbdomainMatcher
|
|
||||||
//
|
|
||||||
this.cmbdomainMatcher.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbdomainMatcher.FormattingEnabled = true;
|
|
||||||
resources.ApplyResources(this.cmbdomainMatcher, "cmbdomainMatcher");
|
|
||||||
this.cmbdomainMatcher.Name = "cmbdomainMatcher";
|
|
||||||
//
|
|
||||||
// label6
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label6, "label6");
|
|
||||||
this.label6.Name = "label6";
|
|
||||||
//
|
|
||||||
// chkenableRoutingAdvanced
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkenableRoutingAdvanced, "chkenableRoutingAdvanced");
|
|
||||||
this.chkenableRoutingAdvanced.Name = "chkenableRoutingAdvanced";
|
|
||||||
this.chkenableRoutingAdvanced.UseVisualStyleBackColor = true;
|
|
||||||
this.chkenableRoutingAdvanced.CheckedChanged += new System.EventHandler(this.chkenableRoutingAdvanced_CheckedChanged_1);
|
|
||||||
//
|
|
||||||
// linkLabelRoutingDoc
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.linkLabelRoutingDoc, "linkLabelRoutingDoc");
|
|
||||||
this.linkLabelRoutingDoc.Name = "linkLabelRoutingDoc";
|
|
||||||
this.linkLabelRoutingDoc.TabStop = true;
|
|
||||||
this.linkLabelRoutingDoc.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelRoutingDoc_LinkClicked);
|
|
||||||
//
|
|
||||||
// cmbdomainStrategy
|
|
||||||
//
|
|
||||||
this.cmbdomainStrategy.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbdomainStrategy.FormattingEnabled = true;
|
|
||||||
this.cmbdomainStrategy.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbdomainStrategy.Items"),
|
|
||||||
resources.GetString("cmbdomainStrategy.Items1"),
|
|
||||||
resources.GetString("cmbdomainStrategy.Items2")});
|
|
||||||
resources.ApplyResources(this.cmbdomainStrategy, "cmbdomainStrategy");
|
|
||||||
this.cmbdomainStrategy.Name = "cmbdomainStrategy";
|
|
||||||
//
|
|
||||||
// cmsLv
|
|
||||||
//
|
|
||||||
this.cmsLv.ImageScalingSize = new System.Drawing.Size(20, 20);
|
|
||||||
this.cmsLv.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.menuAdd,
|
|
||||||
this.menuRemove,
|
|
||||||
this.menuSelectAll,
|
|
||||||
this.menuSetDefaultRouting,
|
|
||||||
this.toolStripSeparator1,
|
|
||||||
this.menuImportAdvancedRules});
|
|
||||||
this.cmsLv.Name = "cmsLv";
|
|
||||||
this.cmsLv.OwnerItem = this.MenuItemAdvanced;
|
|
||||||
resources.ApplyResources(this.cmsLv, "cmsLv");
|
|
||||||
//
|
|
||||||
// menuAdd
|
|
||||||
//
|
|
||||||
this.menuAdd.Name = "menuAdd";
|
|
||||||
resources.ApplyResources(this.menuAdd, "menuAdd");
|
|
||||||
this.menuAdd.Click += new System.EventHandler(this.menuAdd_Click);
|
|
||||||
//
|
|
||||||
// menuRemove
|
|
||||||
//
|
|
||||||
this.menuRemove.Name = "menuRemove";
|
|
||||||
resources.ApplyResources(this.menuRemove, "menuRemove");
|
|
||||||
this.menuRemove.Click += new System.EventHandler(this.menuRemove_Click);
|
|
||||||
//
|
|
||||||
// menuSelectAll
|
|
||||||
//
|
|
||||||
this.menuSelectAll.Name = "menuSelectAll";
|
|
||||||
resources.ApplyResources(this.menuSelectAll, "menuSelectAll");
|
|
||||||
this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click);
|
|
||||||
//
|
|
||||||
// menuSetDefaultRouting
|
|
||||||
//
|
|
||||||
this.menuSetDefaultRouting.Name = "menuSetDefaultRouting";
|
|
||||||
resources.ApplyResources(this.menuSetDefaultRouting, "menuSetDefaultRouting");
|
|
||||||
this.menuSetDefaultRouting.Click += new System.EventHandler(this.menuSetDefaultRouting_Click);
|
|
||||||
//
|
|
||||||
// toolStripSeparator1
|
|
||||||
//
|
|
||||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
|
||||||
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
|
|
||||||
//
|
|
||||||
// menuImportAdvancedRules
|
|
||||||
//
|
|
||||||
this.menuImportAdvancedRules.Name = "menuImportAdvancedRules";
|
|
||||||
resources.ApplyResources(this.menuImportAdvancedRules, "menuImportAdvancedRules");
|
|
||||||
this.menuImportAdvancedRules.Click += new System.EventHandler(this.menuImportAdvancedRules_Click);
|
|
||||||
//
|
|
||||||
// MenuItemAdvanced
|
|
||||||
//
|
|
||||||
this.MenuItemAdvanced.DropDown = this.cmsLv;
|
|
||||||
this.MenuItemAdvanced.Name = "MenuItemAdvanced";
|
|
||||||
resources.ApplyResources(this.MenuItemAdvanced, "MenuItemAdvanced");
|
|
||||||
//
|
|
||||||
// menuServer
|
|
||||||
//
|
|
||||||
this.menuServer.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.MenuItemBasic,
|
|
||||||
this.MenuItemAdvanced});
|
|
||||||
resources.ApplyResources(this.menuServer, "menuServer");
|
|
||||||
this.menuServer.Name = "menuServer";
|
|
||||||
//
|
|
||||||
// MenuItemBasic
|
|
||||||
//
|
|
||||||
this.MenuItemBasic.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.menuImportBasicRules});
|
|
||||||
this.MenuItemBasic.Name = "MenuItemBasic";
|
|
||||||
resources.ApplyResources(this.MenuItemBasic, "MenuItemBasic");
|
|
||||||
//
|
|
||||||
// menuImportBasicRules
|
|
||||||
//
|
|
||||||
this.menuImportBasicRules.Name = "menuImportBasicRules";
|
|
||||||
resources.ApplyResources(this.menuImportBasicRules, "menuImportBasicRules");
|
|
||||||
this.menuImportBasicRules.Click += new System.EventHandler(this.menuImportBasicRules_Click);
|
|
||||||
//
|
|
||||||
// tabNormal
|
|
||||||
//
|
|
||||||
this.tabNormal.Controls.Add(this.tabPageProxy);
|
|
||||||
this.tabNormal.Controls.Add(this.tabPageDirect);
|
|
||||||
this.tabNormal.Controls.Add(this.tabPageBlock);
|
|
||||||
this.tabNormal.Controls.Add(this.tabPageRuleList);
|
|
||||||
resources.ApplyResources(this.tabNormal, "tabNormal");
|
|
||||||
this.tabNormal.Name = "tabNormal";
|
|
||||||
this.tabNormal.SelectedIndex = 0;
|
|
||||||
this.tabNormal.Selecting += new System.Windows.Forms.TabControlCancelEventHandler(this.tabNormal_Selecting);
|
|
||||||
//
|
|
||||||
// tabPageProxy
|
|
||||||
//
|
|
||||||
this.tabPageProxy.Controls.Add(this.panel5);
|
|
||||||
resources.ApplyResources(this.tabPageProxy, "tabPageProxy");
|
|
||||||
this.tabPageProxy.Name = "tabPageProxy";
|
|
||||||
this.tabPageProxy.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// panel5
|
|
||||||
//
|
|
||||||
this.panel5.Controls.Add(this.groupBox5);
|
|
||||||
this.panel5.Controls.Add(this.groupBox6);
|
|
||||||
resources.ApplyResources(this.panel5, "panel5");
|
|
||||||
this.panel5.Name = "panel5";
|
|
||||||
//
|
|
||||||
// groupBox5
|
|
||||||
//
|
|
||||||
this.groupBox5.Controls.Add(this.txtProxyIp);
|
|
||||||
resources.ApplyResources(this.groupBox5, "groupBox5");
|
|
||||||
this.groupBox5.Name = "groupBox5";
|
|
||||||
this.groupBox5.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtProxyIp
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtProxyIp, "txtProxyIp");
|
|
||||||
this.txtProxyIp.Name = "txtProxyIp";
|
|
||||||
//
|
|
||||||
// groupBox6
|
|
||||||
//
|
|
||||||
this.groupBox6.Controls.Add(this.txtProxyDomain);
|
|
||||||
resources.ApplyResources(this.groupBox6, "groupBox6");
|
|
||||||
this.groupBox6.Name = "groupBox6";
|
|
||||||
this.groupBox6.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtProxyDomain
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtProxyDomain, "txtProxyDomain");
|
|
||||||
this.txtProxyDomain.Name = "txtProxyDomain";
|
|
||||||
//
|
|
||||||
// tabPageDirect
|
|
||||||
//
|
|
||||||
this.tabPageDirect.Controls.Add(this.panel4);
|
|
||||||
resources.ApplyResources(this.tabPageDirect, "tabPageDirect");
|
|
||||||
this.tabPageDirect.Name = "tabPageDirect";
|
|
||||||
this.tabPageDirect.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// panel4
|
|
||||||
//
|
|
||||||
this.panel4.Controls.Add(this.groupBox3);
|
|
||||||
this.panel4.Controls.Add(this.groupBox4);
|
|
||||||
resources.ApplyResources(this.panel4, "panel4");
|
|
||||||
this.panel4.Name = "panel4";
|
|
||||||
//
|
|
||||||
// groupBox3
|
|
||||||
//
|
|
||||||
this.groupBox3.Controls.Add(this.txtDirectIp);
|
|
||||||
resources.ApplyResources(this.groupBox3, "groupBox3");
|
|
||||||
this.groupBox3.Name = "groupBox3";
|
|
||||||
this.groupBox3.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtDirectIp
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtDirectIp, "txtDirectIp");
|
|
||||||
this.txtDirectIp.Name = "txtDirectIp";
|
|
||||||
//
|
|
||||||
// groupBox4
|
|
||||||
//
|
|
||||||
this.groupBox4.Controls.Add(this.txtDirectDomain);
|
|
||||||
resources.ApplyResources(this.groupBox4, "groupBox4");
|
|
||||||
this.groupBox4.Name = "groupBox4";
|
|
||||||
this.groupBox4.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtDirectDomain
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtDirectDomain, "txtDirectDomain");
|
|
||||||
this.txtDirectDomain.Name = "txtDirectDomain";
|
|
||||||
//
|
|
||||||
// tabPageBlock
|
|
||||||
//
|
|
||||||
this.tabPageBlock.Controls.Add(this.panel3);
|
|
||||||
resources.ApplyResources(this.tabPageBlock, "tabPageBlock");
|
|
||||||
this.tabPageBlock.Name = "tabPageBlock";
|
|
||||||
this.tabPageBlock.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// panel3
|
|
||||||
//
|
|
||||||
this.panel3.Controls.Add(this.groupBox2);
|
|
||||||
this.panel3.Controls.Add(this.groupBox1);
|
|
||||||
resources.ApplyResources(this.panel3, "panel3");
|
|
||||||
this.panel3.Name = "panel3";
|
|
||||||
//
|
|
||||||
// groupBox2
|
|
||||||
//
|
|
||||||
this.groupBox2.Controls.Add(this.txtBlockIp);
|
|
||||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
|
||||||
this.groupBox2.Name = "groupBox2";
|
|
||||||
this.groupBox2.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtBlockIp
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtBlockIp, "txtBlockIp");
|
|
||||||
this.txtBlockIp.Name = "txtBlockIp";
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
this.groupBox1.Controls.Add(this.txtBlockDomain);
|
|
||||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
|
||||||
this.groupBox1.TabStop = false;
|
|
||||||
//
|
|
||||||
// txtBlockDomain
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtBlockDomain, "txtBlockDomain");
|
|
||||||
this.txtBlockDomain.Name = "txtBlockDomain";
|
|
||||||
//
|
|
||||||
// tabPageRuleList
|
|
||||||
//
|
|
||||||
this.tabPageRuleList.Controls.Add(this.lvRoutings);
|
|
||||||
resources.ApplyResources(this.tabPageRuleList, "tabPageRuleList");
|
|
||||||
this.tabPageRuleList.Name = "tabPageRuleList";
|
|
||||||
this.tabPageRuleList.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// lvRoutings
|
|
||||||
//
|
|
||||||
this.lvRoutings.ContextMenuStrip = this.cmsLv;
|
|
||||||
resources.ApplyResources(this.lvRoutings, "lvRoutings");
|
|
||||||
this.lvRoutings.FullRowSelect = true;
|
|
||||||
this.lvRoutings.GridLines = true;
|
|
||||||
this.lvRoutings.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
|
||||||
this.lvRoutings.HideSelection = false;
|
|
||||||
this.lvRoutings.Items.AddRange(new System.Windows.Forms.ListViewItem[] {
|
|
||||||
((System.Windows.Forms.ListViewItem)(resources.GetObject("lvRoutings.Items")))});
|
|
||||||
this.lvRoutings.MultiSelect = false;
|
|
||||||
this.lvRoutings.Name = "lvRoutings";
|
|
||||||
this.lvRoutings.UseCompatibleStateImageBehavior = false;
|
|
||||||
this.lvRoutings.View = System.Windows.Forms.View.Details;
|
|
||||||
this.lvRoutings.DoubleClick += new System.EventHandler(this.lvRoutings_DoubleClick);
|
|
||||||
//
|
|
||||||
// RoutingSettingForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.tabNormal);
|
|
||||||
this.Controls.Add(this.panel1);
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.Controls.Add(this.menuServer);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
|
||||||
this.Name = "RoutingSettingForm";
|
|
||||||
this.Load += new System.EventHandler(this.RoutingSettingForm_Load);
|
|
||||||
this.panel2.ResumeLayout(false);
|
|
||||||
this.panel1.ResumeLayout(false);
|
|
||||||
this.panel1.PerformLayout();
|
|
||||||
this.cmsLv.ResumeLayout(false);
|
|
||||||
this.menuServer.ResumeLayout(false);
|
|
||||||
this.menuServer.PerformLayout();
|
|
||||||
this.tabNormal.ResumeLayout(false);
|
|
||||||
this.tabPageProxy.ResumeLayout(false);
|
|
||||||
this.panel5.ResumeLayout(false);
|
|
||||||
this.groupBox5.ResumeLayout(false);
|
|
||||||
this.groupBox5.PerformLayout();
|
|
||||||
this.groupBox6.ResumeLayout(false);
|
|
||||||
this.groupBox6.PerformLayout();
|
|
||||||
this.tabPageDirect.ResumeLayout(false);
|
|
||||||
this.panel4.ResumeLayout(false);
|
|
||||||
this.groupBox3.ResumeLayout(false);
|
|
||||||
this.groupBox3.PerformLayout();
|
|
||||||
this.groupBox4.ResumeLayout(false);
|
|
||||||
this.groupBox4.PerformLayout();
|
|
||||||
this.tabPageBlock.ResumeLayout(false);
|
|
||||||
this.panel3.ResumeLayout(false);
|
|
||||||
this.groupBox2.ResumeLayout(false);
|
|
||||||
this.groupBox2.PerformLayout();
|
|
||||||
this.groupBox1.ResumeLayout(false);
|
|
||||||
this.groupBox1.PerformLayout();
|
|
||||||
this.tabPageRuleList.ResumeLayout(false);
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
this.PerformLayout();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.Panel panel1;
|
|
||||||
private System.Windows.Forms.LinkLabel linkLabelRoutingDoc;
|
|
||||||
private System.Windows.Forms.ComboBox cmbdomainStrategy;
|
|
||||||
private System.Windows.Forms.ContextMenuStrip cmsLv;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuRemove;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuSelectAll;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuAdd;
|
|
||||||
private System.Windows.Forms.MenuStrip menuServer;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem MenuItemAdvanced;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuSetDefaultRouting;
|
|
||||||
private System.Windows.Forms.TabControl tabNormal;
|
|
||||||
private System.Windows.Forms.TabPage tabPageProxy;
|
|
||||||
private System.Windows.Forms.TabPage tabPageDirect;
|
|
||||||
private System.Windows.Forms.TabPage tabPageBlock;
|
|
||||||
private System.Windows.Forms.Panel panel5;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox5;
|
|
||||||
private System.Windows.Forms.TextBox txtProxyIp;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox6;
|
|
||||||
private System.Windows.Forms.TextBox txtProxyDomain;
|
|
||||||
private System.Windows.Forms.Panel panel4;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox3;
|
|
||||||
private System.Windows.Forms.TextBox txtDirectIp;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox4;
|
|
||||||
private System.Windows.Forms.TextBox txtDirectDomain;
|
|
||||||
private System.Windows.Forms.Panel panel3;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox2;
|
|
||||||
private System.Windows.Forms.TextBox txtBlockIp;
|
|
||||||
private System.Windows.Forms.GroupBox groupBox1;
|
|
||||||
private System.Windows.Forms.TextBox txtBlockDomain;
|
|
||||||
private System.Windows.Forms.TabPage tabPageRuleList;
|
|
||||||
private Base.ListViewFlickerFree lvRoutings;
|
|
||||||
private System.Windows.Forms.Label labRoutingTips;
|
|
||||||
private System.Windows.Forms.CheckBox chkenableRoutingAdvanced;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem MenuItemBasic;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuImportBasicRules;
|
|
||||||
private System.Windows.Forms.ComboBox cmbdomainMatcher;
|
|
||||||
private System.Windows.Forms.Label label6;
|
|
||||||
private System.Windows.Forms.ToolStripMenuItem menuImportAdvancedRules;
|
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,320 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Base;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class RoutingSettingForm : BaseForm
|
|
||||||
{
|
|
||||||
private readonly List<int> _lvSelecteds = new List<int>();
|
|
||||||
private RoutingItem _lockedItem;
|
|
||||||
public RoutingSettingForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RoutingSettingForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
ConfigHandler.InitBuiltinRouting(ref config);
|
|
||||||
cmbdomainMatcher.Items.AddRange(Global.domainMatchers.ToArray());
|
|
||||||
|
|
||||||
cmbdomainStrategy.Text = config.domainStrategy;
|
|
||||||
chkenableRoutingAdvanced.Checked = config.enableRoutingAdvanced;
|
|
||||||
cmbdomainMatcher.Text = config.domainMatcher;
|
|
||||||
|
|
||||||
if (config.routings == null)
|
|
||||||
{
|
|
||||||
config.routings = new List<RoutingItem>();
|
|
||||||
}
|
|
||||||
InitRoutingsView();
|
|
||||||
RefreshRoutingsView();
|
|
||||||
|
|
||||||
BindingLockedData();
|
|
||||||
InitUI();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void tabNormal_Selecting(object sender, TabControlCancelEventArgs e)
|
|
||||||
{
|
|
||||||
//if (tabNormal.SelectedTab == tabPageRuleList)
|
|
||||||
//{
|
|
||||||
// MenuItem1.Enabled = true;
|
|
||||||
//}
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
// MenuItem1.Enabled = false;
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
config.domainStrategy = cmbdomainStrategy.Text;
|
|
||||||
config.enableRoutingAdvanced = chkenableRoutingAdvanced.Checked;
|
|
||||||
config.domainMatcher = cmbdomainMatcher.Text;
|
|
||||||
|
|
||||||
EndBindingLockedData();
|
|
||||||
|
|
||||||
if (ConfigHandler.SaveRouting(ref config) == 0)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(ResUI.OperationFailed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
private void chkenableRoutingAdvanced_CheckedChanged_1(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
InitUI();
|
|
||||||
}
|
|
||||||
private void InitUI()
|
|
||||||
{
|
|
||||||
if (chkenableRoutingAdvanced.Checked)
|
|
||||||
{
|
|
||||||
tabPageProxy.Parent = null;
|
|
||||||
tabPageDirect.Parent = null;
|
|
||||||
tabPageBlock.Parent = null;
|
|
||||||
tabPageRuleList.Parent = tabNormal;
|
|
||||||
MenuItemBasic.Enabled = false;
|
|
||||||
MenuItemAdvanced.Enabled = true;
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tabPageProxy.Parent = tabNormal;
|
|
||||||
tabPageDirect.Parent = tabNormal;
|
|
||||||
tabPageBlock.Parent = tabNormal;
|
|
||||||
tabPageRuleList.Parent = null;
|
|
||||||
MenuItemBasic.Enabled = true;
|
|
||||||
MenuItemAdvanced.Enabled = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#region locked
|
|
||||||
private void BindingLockedData()
|
|
||||||
{
|
|
||||||
_lockedItem = ConfigHandler.GetLockedRoutingItem(ref config);
|
|
||||||
if (_lockedItem != null)
|
|
||||||
{
|
|
||||||
txtProxyDomain.Text = Utils.List2String(_lockedItem.rules[0].domain, true);
|
|
||||||
txtProxyIp.Text = Utils.List2String(_lockedItem.rules[0].ip, true);
|
|
||||||
|
|
||||||
txtDirectDomain.Text = Utils.List2String(_lockedItem.rules[1].domain, true);
|
|
||||||
txtDirectIp.Text = Utils.List2String(_lockedItem.rules[1].ip, true);
|
|
||||||
|
|
||||||
txtBlockDomain.Text = Utils.List2String(_lockedItem.rules[2].domain, true);
|
|
||||||
txtBlockIp.Text = Utils.List2String(_lockedItem.rules[2].ip, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void EndBindingLockedData()
|
|
||||||
{
|
|
||||||
if (_lockedItem != null)
|
|
||||||
{
|
|
||||||
_lockedItem.rules[0].domain = Utils.String2List(txtProxyDomain.Text.TrimEx());
|
|
||||||
_lockedItem.rules[0].ip = Utils.String2List(txtProxyIp.Text.TrimEx());
|
|
||||||
|
|
||||||
_lockedItem.rules[1].domain = Utils.String2List(txtDirectDomain.Text.TrimEx());
|
|
||||||
_lockedItem.rules[1].ip = Utils.String2List(txtDirectIp.Text.TrimEx());
|
|
||||||
|
|
||||||
_lockedItem.rules[2].domain = Utils.String2List(txtBlockDomain.Text.TrimEx());
|
|
||||||
_lockedItem.rules[2].ip = Utils.String2List(txtBlockIp.Text.TrimEx());
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region ListView
|
|
||||||
private void InitRoutingsView()
|
|
||||||
{
|
|
||||||
lvRoutings.BeginUpdate();
|
|
||||||
lvRoutings.Items.Clear();
|
|
||||||
|
|
||||||
lvRoutings.GridLines = true;
|
|
||||||
lvRoutings.FullRowSelect = true;
|
|
||||||
lvRoutings.View = View.Details;
|
|
||||||
lvRoutings.MultiSelect = true;
|
|
||||||
lvRoutings.HeaderStyle = ColumnHeaderStyle.Clickable;
|
|
||||||
|
|
||||||
lvRoutings.Columns.Add("", 30);
|
|
||||||
lvRoutings.Columns.Add(ResUI.LvAlias, 200);
|
|
||||||
lvRoutings.Columns.Add(ResUI.LvCount, 60);
|
|
||||||
lvRoutings.Columns.Add(ResUI.LvUrl, 240);
|
|
||||||
lvRoutings.Columns.Add(ResUI.LvCustomIcon, 240);
|
|
||||||
|
|
||||||
lvRoutings.EndUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RefreshRoutingsView()
|
|
||||||
{
|
|
||||||
lvRoutings.BeginUpdate();
|
|
||||||
lvRoutings.Items.Clear();
|
|
||||||
|
|
||||||
for (int k = 0; k < config.routings.Count; k++)
|
|
||||||
{
|
|
||||||
var item = config.routings[k];
|
|
||||||
if (item.locked == true)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
string def = string.Empty;
|
|
||||||
if (config.routingIndex.Equals(k))
|
|
||||||
{
|
|
||||||
def = Global.CheckMark;
|
|
||||||
}
|
|
||||||
|
|
||||||
ListViewItem lvItem = new ListViewItem(def);
|
|
||||||
Utils.AddSubItem(lvItem, "remarks", item.remarks);
|
|
||||||
Utils.AddSubItem(lvItem, "count", item.rules.Count.ToString());
|
|
||||||
Utils.AddSubItem(lvItem, "url", item.url);
|
|
||||||
Utils.AddSubItem(lvItem, "customIcon", item.customIcon);
|
|
||||||
|
|
||||||
if (lvItem != null) lvRoutings.Items.Add(lvItem);
|
|
||||||
}
|
|
||||||
lvRoutings.EndUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void linkLabelRoutingDoc_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
||||||
{
|
|
||||||
System.Diagnostics.Process.Start("https://www.v2fly.org/config/routing.html");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void lvRoutings_DoubleClick(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
int index = GetLvSelectedIndex();
|
|
||||||
if (index < 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var fm = new RoutingRuleSettingForm();
|
|
||||||
fm.EditIndex = index;
|
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private int GetLvSelectedIndex()
|
|
||||||
{
|
|
||||||
int index = -1;
|
|
||||||
_lvSelecteds.Clear();
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (lvRoutings.SelectedIndices.Count <= 0)
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.PleaseSelectRules);
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
index = lvRoutings.SelectedIndices[0];
|
|
||||||
foreach (int i in lvRoutings.SelectedIndices)
|
|
||||||
{
|
|
||||||
_lvSelecteds.Add(i);
|
|
||||||
}
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
#region Edit function
|
|
||||||
|
|
||||||
|
|
||||||
private void menuSelectAll_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
foreach (ListViewItem item in lvRoutings.Items)
|
|
||||||
{
|
|
||||||
item.Selected = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuAdd_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var fm = new RoutingRuleSettingForm();
|
|
||||||
fm.EditIndex = -1;
|
|
||||||
if (fm.ShowDialog() == DialogResult.OK)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuRemove_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
int index = GetLvSelectedIndex();
|
|
||||||
if (index < 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (UI.ShowYesNo(ResUI.RemoveRules) == DialogResult.No)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (int k = _lvSelecteds.Count - 1; k >= 0; k--)
|
|
||||||
{
|
|
||||||
config.routings.RemoveAt(index);
|
|
||||||
}
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
private void menuSetDefaultRouting_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
int index = GetLvSelectedIndex();
|
|
||||||
if (index < 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
SetDefaultRouting(index);
|
|
||||||
}
|
|
||||||
private int SetDefaultRouting(int index)
|
|
||||||
{
|
|
||||||
if (index < 0)
|
|
||||||
{
|
|
||||||
UI.Show(ResUI.PleaseSelectServer);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (ConfigHandler.SetDefaultRouting(ref config, index) == 0)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuImportBasicRules_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//Extra to bypass the mainland
|
|
||||||
txtProxyDomain.Text = "geosite:google";
|
|
||||||
txtDirectDomain.Text = "geosite:cn";
|
|
||||||
txtDirectIp.Text = "geoip:private,geoip:cn";
|
|
||||||
|
|
||||||
txtBlockDomain.Text = "geosite:category-ads-all";
|
|
||||||
|
|
||||||
UI.Show(ResUI.OperationSuccess);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void menuImportAdvancedRules_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (ConfigHandler.InitBuiltinRouting(ref config, true) == 0)
|
|
||||||
{
|
|
||||||
RefreshRoutingsView();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,315 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>691, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 545</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>817, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRoutingTips.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>518, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRoutingTips.Text" xml:space="preserve">
|
|
||||||
<value>*设置的路由规则,用逗号(,)分隔;正则中的逗号用<COMMA>替代</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>598, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>817, 51</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>77, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label6.Text" xml:space="preserve">
|
|
||||||
<value>域名匹配算法</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkenableRoutingAdvanced.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>120, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkenableRoutingAdvanced.Text" xml:space="preserve">
|
|
||||||
<value>启用路由高级功能</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkLabelRoutingDoc.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>77, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="linkLabelRoutingDoc.Text" xml:space="preserve">
|
|
||||||
<value>域名解析策略</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmsLv.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>149, 114</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAdd.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>148, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuAdd.Text" xml:space="preserve">
|
|
||||||
<value>添加规则集</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemove.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>148, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuRemove.Text" xml:space="preserve">
|
|
||||||
<value>移除所选规则</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>148, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSelectAll.Text" xml:space="preserve">
|
|
||||||
<value>全选</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSetDefaultRouting.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>148, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuSetDefaultRouting.Text" xml:space="preserve">
|
|
||||||
<value>设为活动路由</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItemAdvanced.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>68, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItemAdvanced.Text" xml:space="preserve">
|
|
||||||
<value>高级功能</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuServer.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>817, 25</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItemBasic.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>68, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="MenuItemBasic.Text" xml:space="preserve">
|
|
||||||
<value>基础功能</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportBasicRules.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>180, 22</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportBasicRules.Text" xml:space="preserve">
|
|
||||||
<value>一键导入基础规则</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabNormal.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>817, 469</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPageProxy.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>809, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPageProxy.Text" xml:space="preserve">
|
|
||||||
<value> 1.代理的Domain或IP </value>
|
|
||||||
</data>
|
|
||||||
<data name="panel5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>803, 437</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox5.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>411, 437</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtProxyIp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>405, 417</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox6.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>392, 437</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtProxyDomain.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>386, 417</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPageDirect.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>809, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPageDirect.Text" xml:space="preserve">
|
|
||||||
<value> 2.直连的Domain或IP </value>
|
|
||||||
</data>
|
|
||||||
<data name="panel4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>803, 437</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>411, 437</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtDirectIp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>405, 417</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>392, 437</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtDirectDomain.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>386, 417</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPageBlock.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>809, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPageBlock.Text" xml:space="preserve">
|
|
||||||
<value> 3.阻止的Domain或IP </value>
|
|
||||||
</data>
|
|
||||||
<data name="panel3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>803, 437</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>411, 437</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtBlockIp.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>405, 417</value>
|
|
||||||
</data>
|
|
||||||
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>392, 437</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtBlockDomain.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>386, 417</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPageRuleList.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>809, 443</value>
|
|
||||||
</data>
|
|
||||||
<data name="tabPageRuleList.Text" xml:space="preserve">
|
|
||||||
<value> 预定义规则集列表</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvRoutings.Items" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
|
||||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0
|
|
||||||
ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
|
|
||||||
PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA
|
|
||||||
BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5
|
|
||||||
bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz
|
|
||||||
dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA
|
|
||||||
CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5
|
|
||||||
bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3
|
|
||||||
////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0
|
|
||||||
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvRoutings.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>803, 437</value>
|
|
||||||
</data>
|
|
||||||
<data name="menuImportAdvancedRules.Text" xml:space="preserve">
|
|
||||||
<value>一键导入高级规则</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>817, 605</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>路由设置</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,268 +0,0 @@
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class ServerTransportControl
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 必需的设计器变量。
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清理所有正在使用的资源。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 组件设计器生成的代码
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 设计器支持所需的方法 - 不要修改
|
|
||||||
/// 使用代码编辑器修改此方法的内容。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerTransportControl));
|
|
||||||
this.gbTransport = new System.Windows.Forms.GroupBox();
|
|
||||||
this.panTlsMore = new System.Windows.Forms.Panel();
|
|
||||||
this.labfingerprint = new System.Windows.Forms.Label();
|
|
||||||
this.cmbFingerprint = new System.Windows.Forms.ComboBox();
|
|
||||||
this.clbAlpn = new System.Windows.Forms.CheckedListBox();
|
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
|
||||||
this.txtSNI = new System.Windows.Forms.TextBox();
|
|
||||||
this.labSNI = new System.Windows.Forms.Label();
|
|
||||||
this.labAllowInsecure = new System.Windows.Forms.Label();
|
|
||||||
this.cmbAllowInsecure = new System.Windows.Forms.ComboBox();
|
|
||||||
this.tipNetwork = new System.Windows.Forms.Label();
|
|
||||||
this.txtPath = new System.Windows.Forms.TextBox();
|
|
||||||
this.cmbNetwork = new System.Windows.Forms.ComboBox();
|
|
||||||
this.labNetwork = new System.Windows.Forms.Label();
|
|
||||||
this.labPath = new System.Windows.Forms.Label();
|
|
||||||
this.tipPath = new System.Windows.Forms.Label();
|
|
||||||
this.tipRequestHost = new System.Windows.Forms.Label();
|
|
||||||
this.labStreamSecurity = new System.Windows.Forms.Label();
|
|
||||||
this.cmbStreamSecurity = new System.Windows.Forms.ComboBox();
|
|
||||||
this.tipHeaderType = new System.Windows.Forms.Label();
|
|
||||||
this.txtRequestHost = new System.Windows.Forms.TextBox();
|
|
||||||
this.labHeaderType = new System.Windows.Forms.Label();
|
|
||||||
this.labRequestHost = new System.Windows.Forms.Label();
|
|
||||||
this.cmbHeaderType = new System.Windows.Forms.ComboBox();
|
|
||||||
this.gbTransport.SuspendLayout();
|
|
||||||
this.panTlsMore.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// gbTransport
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.gbTransport, "gbTransport");
|
|
||||||
this.gbTransport.Controls.Add(this.panTlsMore);
|
|
||||||
this.gbTransport.Controls.Add(this.tipNetwork);
|
|
||||||
this.gbTransport.Controls.Add(this.txtPath);
|
|
||||||
this.gbTransport.Controls.Add(this.cmbNetwork);
|
|
||||||
this.gbTransport.Controls.Add(this.labNetwork);
|
|
||||||
this.gbTransport.Controls.Add(this.labPath);
|
|
||||||
this.gbTransport.Controls.Add(this.tipPath);
|
|
||||||
this.gbTransport.Controls.Add(this.tipRequestHost);
|
|
||||||
this.gbTransport.Controls.Add(this.labStreamSecurity);
|
|
||||||
this.gbTransport.Controls.Add(this.cmbStreamSecurity);
|
|
||||||
this.gbTransport.Controls.Add(this.tipHeaderType);
|
|
||||||
this.gbTransport.Controls.Add(this.txtRequestHost);
|
|
||||||
this.gbTransport.Controls.Add(this.labHeaderType);
|
|
||||||
this.gbTransport.Controls.Add(this.labRequestHost);
|
|
||||||
this.gbTransport.Controls.Add(this.cmbHeaderType);
|
|
||||||
this.gbTransport.Name = "gbTransport";
|
|
||||||
this.gbTransport.TabStop = false;
|
|
||||||
//
|
|
||||||
// panTlsMore
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panTlsMore, "panTlsMore");
|
|
||||||
this.panTlsMore.Controls.Add(this.labfingerprint);
|
|
||||||
this.panTlsMore.Controls.Add(this.cmbFingerprint);
|
|
||||||
this.panTlsMore.Controls.Add(this.clbAlpn);
|
|
||||||
this.panTlsMore.Controls.Add(this.label1);
|
|
||||||
this.panTlsMore.Controls.Add(this.txtSNI);
|
|
||||||
this.panTlsMore.Controls.Add(this.labSNI);
|
|
||||||
this.panTlsMore.Controls.Add(this.labAllowInsecure);
|
|
||||||
this.panTlsMore.Controls.Add(this.cmbAllowInsecure);
|
|
||||||
this.panTlsMore.Name = "panTlsMore";
|
|
||||||
//
|
|
||||||
// labfingerprint
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labfingerprint, "labfingerprint");
|
|
||||||
this.labfingerprint.Name = "labfingerprint";
|
|
||||||
//
|
|
||||||
// cmbFingerprint
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmbFingerprint, "cmbFingerprint");
|
|
||||||
this.cmbFingerprint.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbFingerprint.FormattingEnabled = true;
|
|
||||||
this.cmbFingerprint.Name = "cmbFingerprint";
|
|
||||||
//
|
|
||||||
// clbAlpn
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.clbAlpn, "clbAlpn");
|
|
||||||
this.clbAlpn.CheckOnClick = true;
|
|
||||||
this.clbAlpn.FormattingEnabled = true;
|
|
||||||
this.clbAlpn.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("clbAlpn.Items"),
|
|
||||||
resources.GetString("clbAlpn.Items1")});
|
|
||||||
this.clbAlpn.MultiColumn = true;
|
|
||||||
this.clbAlpn.Name = "clbAlpn";
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label1, "label1");
|
|
||||||
this.label1.Name = "label1";
|
|
||||||
//
|
|
||||||
// txtSNI
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtSNI, "txtSNI");
|
|
||||||
this.txtSNI.Name = "txtSNI";
|
|
||||||
//
|
|
||||||
// labSNI
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labSNI, "labSNI");
|
|
||||||
this.labSNI.Name = "labSNI";
|
|
||||||
//
|
|
||||||
// labAllowInsecure
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labAllowInsecure, "labAllowInsecure");
|
|
||||||
this.labAllowInsecure.Name = "labAllowInsecure";
|
|
||||||
//
|
|
||||||
// cmbAllowInsecure
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmbAllowInsecure, "cmbAllowInsecure");
|
|
||||||
this.cmbAllowInsecure.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbAllowInsecure.FormattingEnabled = true;
|
|
||||||
this.cmbAllowInsecure.Items.AddRange(new object[] {
|
|
||||||
resources.GetString("cmbAllowInsecure.Items"),
|
|
||||||
resources.GetString("cmbAllowInsecure.Items1"),
|
|
||||||
resources.GetString("cmbAllowInsecure.Items2")});
|
|
||||||
this.cmbAllowInsecure.Name = "cmbAllowInsecure";
|
|
||||||
//
|
|
||||||
// tipNetwork
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.tipNetwork, "tipNetwork");
|
|
||||||
this.tipNetwork.Name = "tipNetwork";
|
|
||||||
//
|
|
||||||
// txtPath
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtPath, "txtPath");
|
|
||||||
this.txtPath.Name = "txtPath";
|
|
||||||
//
|
|
||||||
// cmbNetwork
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmbNetwork, "cmbNetwork");
|
|
||||||
this.cmbNetwork.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbNetwork.FormattingEnabled = true;
|
|
||||||
this.cmbNetwork.Name = "cmbNetwork";
|
|
||||||
this.cmbNetwork.SelectedIndexChanged += new System.EventHandler(this.cmbNetwork_SelectedIndexChanged);
|
|
||||||
//
|
|
||||||
// labNetwork
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labNetwork, "labNetwork");
|
|
||||||
this.labNetwork.Name = "labNetwork";
|
|
||||||
//
|
|
||||||
// labPath
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labPath, "labPath");
|
|
||||||
this.labPath.Name = "labPath";
|
|
||||||
//
|
|
||||||
// tipPath
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.tipPath, "tipPath");
|
|
||||||
this.tipPath.Name = "tipPath";
|
|
||||||
//
|
|
||||||
// tipRequestHost
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.tipRequestHost, "tipRequestHost");
|
|
||||||
this.tipRequestHost.Name = "tipRequestHost";
|
|
||||||
//
|
|
||||||
// labStreamSecurity
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labStreamSecurity, "labStreamSecurity");
|
|
||||||
this.labStreamSecurity.Name = "labStreamSecurity";
|
|
||||||
//
|
|
||||||
// cmbStreamSecurity
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmbStreamSecurity, "cmbStreamSecurity");
|
|
||||||
this.cmbStreamSecurity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbStreamSecurity.FormattingEnabled = true;
|
|
||||||
this.cmbStreamSecurity.Name = "cmbStreamSecurity";
|
|
||||||
this.cmbStreamSecurity.SelectedIndexChanged += new System.EventHandler(this.cmbStreamSecurity_SelectedIndexChanged);
|
|
||||||
//
|
|
||||||
// tipHeaderType
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.tipHeaderType, "tipHeaderType");
|
|
||||||
this.tipHeaderType.Name = "tipHeaderType";
|
|
||||||
//
|
|
||||||
// txtRequestHost
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtRequestHost, "txtRequestHost");
|
|
||||||
this.txtRequestHost.Name = "txtRequestHost";
|
|
||||||
//
|
|
||||||
// labHeaderType
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labHeaderType, "labHeaderType");
|
|
||||||
this.labHeaderType.Name = "labHeaderType";
|
|
||||||
//
|
|
||||||
// labRequestHost
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.labRequestHost, "labRequestHost");
|
|
||||||
this.labRequestHost.Name = "labRequestHost";
|
|
||||||
//
|
|
||||||
// cmbHeaderType
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmbHeaderType, "cmbHeaderType");
|
|
||||||
this.cmbHeaderType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbHeaderType.FormattingEnabled = true;
|
|
||||||
this.cmbHeaderType.Name = "cmbHeaderType";
|
|
||||||
//
|
|
||||||
// ServerTransportControl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.Controls.Add(this.gbTransport);
|
|
||||||
this.Name = "ServerTransportControl";
|
|
||||||
this.Load += new System.EventHandler(this.ServerTransportControl_Load);
|
|
||||||
this.gbTransport.ResumeLayout(false);
|
|
||||||
this.gbTransport.PerformLayout();
|
|
||||||
this.panTlsMore.ResumeLayout(false);
|
|
||||||
this.panTlsMore.PerformLayout();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.GroupBox gbTransport;
|
|
||||||
private System.Windows.Forms.Panel panTlsMore;
|
|
||||||
private System.Windows.Forms.TextBox txtSNI;
|
|
||||||
private System.Windows.Forms.Label labSNI;
|
|
||||||
private System.Windows.Forms.Label labAllowInsecure;
|
|
||||||
private System.Windows.Forms.ComboBox cmbAllowInsecure;
|
|
||||||
private System.Windows.Forms.Label tipNetwork;
|
|
||||||
private System.Windows.Forms.TextBox txtPath;
|
|
||||||
private System.Windows.Forms.ComboBox cmbNetwork;
|
|
||||||
private System.Windows.Forms.Label labNetwork;
|
|
||||||
private System.Windows.Forms.Label labPath;
|
|
||||||
private System.Windows.Forms.Label tipPath;
|
|
||||||
private System.Windows.Forms.Label tipRequestHost;
|
|
||||||
private System.Windows.Forms.Label labStreamSecurity;
|
|
||||||
private System.Windows.Forms.ComboBox cmbStreamSecurity;
|
|
||||||
private System.Windows.Forms.Label tipHeaderType;
|
|
||||||
private System.Windows.Forms.TextBox txtRequestHost;
|
|
||||||
private System.Windows.Forms.Label labHeaderType;
|
|
||||||
private System.Windows.Forms.Label labRequestHost;
|
|
||||||
private System.Windows.Forms.ComboBox cmbHeaderType;
|
|
||||||
private System.Windows.Forms.Label label1;
|
|
||||||
private System.Windows.Forms.CheckedListBox clbAlpn;
|
|
||||||
private System.Windows.Forms.Label labfingerprint;
|
|
||||||
private System.Windows.Forms.ComboBox cmbFingerprint;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,210 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class ServerTransportControl : UserControl
|
|
||||||
{
|
|
||||||
public bool AllowXtls { get; set; }
|
|
||||||
private VmessItem vmessItem;
|
|
||||||
|
|
||||||
public ServerTransportControl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
private void ServerTransportControl_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Init(VmessItem item)
|
|
||||||
{
|
|
||||||
vmessItem = item;
|
|
||||||
|
|
||||||
cmbNetwork.Items.AddRange(Global.networks.ToArray());
|
|
||||||
|
|
||||||
cmbStreamSecurity.Items.Clear();
|
|
||||||
cmbStreamSecurity.Items.Add(string.Empty);
|
|
||||||
cmbStreamSecurity.Items.Add(Global.StreamSecurity);
|
|
||||||
if (AllowXtls)
|
|
||||||
{
|
|
||||||
cmbStreamSecurity.Items.Add(Global.StreamSecurityX);
|
|
||||||
}
|
|
||||||
cmbFingerprint.Items.AddRange(Global.fingerprints.ToArray());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void BindingServer(VmessItem item)
|
|
||||||
{
|
|
||||||
Init(item);
|
|
||||||
|
|
||||||
cmbNetwork.Text = vmessItem.network;
|
|
||||||
cmbHeaderType.Text = vmessItem.headerType;
|
|
||||||
txtRequestHost.Text = vmessItem.requestHost;
|
|
||||||
txtPath.Text = vmessItem.path;
|
|
||||||
cmbStreamSecurity.Text = vmessItem.streamSecurity;
|
|
||||||
cmbAllowInsecure.Text = vmessItem.allowInsecure;
|
|
||||||
txtSNI.Text = vmessItem.sni;
|
|
||||||
cmbFingerprint.Text = vmessItem.fingerprint;
|
|
||||||
|
|
||||||
if (vmessItem.alpn != null)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < clbAlpn.Items.Count; i++)
|
|
||||||
{
|
|
||||||
if (vmessItem.alpn.Contains(clbAlpn.Items[i].ToString()))
|
|
||||||
{
|
|
||||||
clbAlpn.SetItemChecked(i, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ClearServer(VmessItem item)
|
|
||||||
{
|
|
||||||
Init(item);
|
|
||||||
|
|
||||||
cmbNetwork.Text = Global.DefaultNetwork;
|
|
||||||
cmbHeaderType.Text = Global.None;
|
|
||||||
txtRequestHost.Text = "";
|
|
||||||
cmbStreamSecurity.Text = "";
|
|
||||||
cmbAllowInsecure.Text = "";
|
|
||||||
txtPath.Text = "";
|
|
||||||
txtSNI.Text = "";
|
|
||||||
cmbFingerprint.Text = "";
|
|
||||||
for (int i = 0; i < clbAlpn.Items.Count; i++)
|
|
||||||
{
|
|
||||||
clbAlpn.SetItemChecked(i, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void EndBindingServer()
|
|
||||||
{
|
|
||||||
string network = cmbNetwork.Text;
|
|
||||||
string headerType = cmbHeaderType.Text;
|
|
||||||
string requestHost = txtRequestHost.Text;
|
|
||||||
string path = txtPath.Text;
|
|
||||||
string streamSecurity = cmbStreamSecurity.Text;
|
|
||||||
string allowInsecure = cmbAllowInsecure.Text;
|
|
||||||
string sni = txtSNI.Text;
|
|
||||||
string fingerprint = cmbFingerprint.Text;
|
|
||||||
|
|
||||||
vmessItem.network = network;
|
|
||||||
vmessItem.headerType = headerType;
|
|
||||||
vmessItem.requestHost = requestHost.Replace(" ", "");
|
|
||||||
vmessItem.path = path.Replace(" ", "");
|
|
||||||
vmessItem.streamSecurity = streamSecurity;
|
|
||||||
vmessItem.allowInsecure = allowInsecure;
|
|
||||||
vmessItem.sni = sni;
|
|
||||||
vmessItem.fingerprint = fingerprint;
|
|
||||||
|
|
||||||
var alpn = new List<string>();
|
|
||||||
for (int i = 0; i < clbAlpn.Items.Count; i++)
|
|
||||||
{
|
|
||||||
if (clbAlpn.GetItemChecked(i))
|
|
||||||
{
|
|
||||||
alpn.Add(clbAlpn.Items[i].ToString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
vmessItem.alpn = alpn;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void cmbNetwork_SelectedIndexChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SetHeaderType();
|
|
||||||
SetTips();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SetHeaderType()
|
|
||||||
{
|
|
||||||
cmbHeaderType.Items.Clear();
|
|
||||||
|
|
||||||
string network = cmbNetwork.Text;
|
|
||||||
if (Utils.IsNullOrEmpty(network))
|
|
||||||
{
|
|
||||||
cmbHeaderType.Items.Add(Global.None);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (network.Equals(Global.DefaultNetwork))
|
|
||||||
{
|
|
||||||
cmbHeaderType.Items.Add(Global.None);
|
|
||||||
cmbHeaderType.Items.Add(Global.TcpHeaderHttp);
|
|
||||||
}
|
|
||||||
else if (network.Equals("kcp") || network.Equals("quic"))
|
|
||||||
{
|
|
||||||
cmbHeaderType.Items.Add(Global.None);
|
|
||||||
cmbHeaderType.Items.AddRange(Global.kcpHeaderTypes.ToArray());
|
|
||||||
}
|
|
||||||
else if (network.Equals("grpc"))
|
|
||||||
{
|
|
||||||
cmbHeaderType.Items.Add(Global.GrpcgunMode);
|
|
||||||
cmbHeaderType.Items.Add(Global.GrpcmultiMode);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cmbHeaderType.Items.Add(Global.None);
|
|
||||||
}
|
|
||||||
cmbHeaderType.SelectedIndex = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SetTips()
|
|
||||||
{
|
|
||||||
string network = cmbNetwork.Text;
|
|
||||||
if (Utils.IsNullOrEmpty(network))
|
|
||||||
{
|
|
||||||
network = Global.DefaultNetwork;
|
|
||||||
}
|
|
||||||
labHeaderType.Visible = true;
|
|
||||||
tipRequestHost.Text =
|
|
||||||
tipPath.Text =
|
|
||||||
tipHeaderType.Text = string.Empty;
|
|
||||||
|
|
||||||
if (network.Equals(Global.DefaultNetwork))
|
|
||||||
{
|
|
||||||
tipRequestHost.Text = ResUI.TransportRequestHostTip1;
|
|
||||||
tipHeaderType.Text = ResUI.TransportHeaderTypeTip1;
|
|
||||||
}
|
|
||||||
else if (network.Equals("kcp"))
|
|
||||||
{
|
|
||||||
tipHeaderType.Text = ResUI.TransportHeaderTypeTip2;
|
|
||||||
tipPath.Text = ResUI.TransportPathTip5;
|
|
||||||
}
|
|
||||||
else if (network.Equals("ws"))
|
|
||||||
{
|
|
||||||
tipRequestHost.Text = ResUI.TransportRequestHostTip2;
|
|
||||||
tipPath.Text = ResUI.TransportPathTip1;
|
|
||||||
}
|
|
||||||
else if (network.Equals("h2"))
|
|
||||||
{
|
|
||||||
tipRequestHost.Text = ResUI.TransportRequestHostTip3;
|
|
||||||
tipPath.Text = ResUI.TransportPathTip2;
|
|
||||||
}
|
|
||||||
else if (network.Equals("quic"))
|
|
||||||
{
|
|
||||||
tipRequestHost.Text = ResUI.TransportRequestHostTip4;
|
|
||||||
tipPath.Text = ResUI.TransportPathTip3;
|
|
||||||
tipHeaderType.Text = ResUI.TransportHeaderTypeTip3;
|
|
||||||
}
|
|
||||||
else if (network.Equals("grpc"))
|
|
||||||
{
|
|
||||||
tipPath.Text = ResUI.TransportPathTip4;
|
|
||||||
tipHeaderType.Text = ResUI.TransportHeaderTypeTip4;
|
|
||||||
labHeaderType.Visible = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void cmbStreamSecurity_SelectedIndexChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string security = cmbStreamSecurity.Text;
|
|
||||||
if (Utils.IsNullOrEmpty(security))
|
|
||||||
{
|
|
||||||
panTlsMore.Hide();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
panTlsMore.Show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,867 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="labfingerprint.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="labStreamSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 200</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRequestHost.Text" xml:space="preserve">
|
|
||||||
<value>Camouflage domain(host)</value>
|
|
||||||
</data>
|
|
||||||
<data name="labHeaderType.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>127, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbAllowInsecure.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbAllowInsecure.Parent" xml:space="preserve">
|
|
||||||
<value>panTlsMore</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tipPath.Parent" xml:space="preserve">
|
|
||||||
<value>gbTransport</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labPath.Parent" xml:space="preserve">
|
|
||||||
<value>gbTransport</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPath.Parent" xml:space="preserve">
|
|
||||||
<value>gbTransport</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="labHeaderType.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>alpn</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbAlpn.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.CheckedListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="labHeaderType.Text" xml:space="preserve">
|
|
||||||
<value>Camouflage type</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtSNI.Parent" xml:space="preserve">
|
|
||||||
<value>panTlsMore</value>
|
|
||||||
</data>
|
|
||||||
<data name="labfingerprint.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>46</value>
|
|
||||||
</data>
|
|
||||||
<data name="labSNI.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 0, 4, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRequestHost.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 120</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tipPath.Name" xml:space="preserve">
|
|
||||||
<value>tipPath</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="labAllowInsecure.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRequestHost.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>17</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbAllowInsecure.Items1" xml:space="preserve">
|
|
||||||
<value>true</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbAllowInsecure.Items2" xml:space="preserve">
|
|
||||||
<value>false</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipPath.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="labNetwork.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipPath.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>15, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="panTlsMore.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>267, 186</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbNetwork.Name" xml:space="preserve">
|
|
||||||
<value>cmbNetwork</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labRequestHost.Name" xml:space="preserve">
|
|
||||||
<value>labRequestHost</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbTransport.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>964, 325</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbAlpn.Parent" xml:space="preserve">
|
|
||||||
<value>panTlsMore</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipRequestHost.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="labStreamSecurity.Text" xml:space="preserve">
|
|
||||||
<value>TLS</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbStreamSecurity.Name" xml:space="preserve">
|
|
||||||
<value>cmbStreamSecurity</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labSNI.Parent" xml:space="preserve">
|
|
||||||
<value>panTlsMore</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbAlpn.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>44</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbStreamSecurity.Parent" xml:space="preserve">
|
|
||||||
<value>gbTransport</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbFingerprint.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 4, 4, 4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labRequestHost.ZOrder" xml:space="preserve">
|
|
||||||
<value>13</value>
|
|
||||||
</data>
|
|
||||||
<data name="labSNI.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>16, 54</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
|
||||||
<value>label1</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRequestHost.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>191, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbAlpn.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbTransport.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labRequestHost.Parent" xml:space="preserve">
|
|
||||||
<value>gbTransport</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbAlpn.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 4, 4, 4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>gbTransport.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipHeaderType.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 0, 4, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>964, 325</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRequestHost.Name" xml:space="preserve">
|
|
||||||
<value>txtRequestHost</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbHeaderType.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbAllowInsecure.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>133, 9</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbNetwork.Parent" xml:space="preserve">
|
|
||||||
<value>gbTransport</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbAllowInsecure.ZOrder" xml:space="preserve">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name="labPath.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 160</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labStreamSecurity.ZOrder" xml:space="preserve">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtSNI.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>133, 49</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbAllowInsecure.Name" xml:space="preserve">
|
|
||||||
<value>cmbAllowInsecure</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>ServerTransportControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="labNetwork.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>13</value>
|
|
||||||
</data>
|
|
||||||
<data name="labAllowInsecure.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>111, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbTransport.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="labAllowInsecure.Text" xml:space="preserve">
|
|
||||||
<value>allowInsecure</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbFingerprint.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipHeaderType.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>15, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labHeaderType.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="labfingerprint.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 0, 4, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipHeaderType.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbFingerprint.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>172, 90</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbAllowInsecure.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="labPath.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbFingerprint.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tipHeaderType.Parent" xml:space="preserve">
|
|
||||||
<value>gbTransport</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tipRequestHost.ZOrder" xml:space="preserve">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labAllowInsecure.Name" xml:space="preserve">
|
|
||||||
<value>labAllowInsecure</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labSNI.Name" xml:space="preserve">
|
|
||||||
<value>labSNI</value>
|
|
||||||
</data>
|
|
||||||
<data name="panTlsMore.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>667, 131</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbStreamSecurity.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 4, 4, 4</value>
|
|
||||||
</data>
|
|
||||||
<data name="labStreamSecurity.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 0, 4, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="labAllowInsecure.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>31</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbNetwork.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>321, 14</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipRequestHost.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>15, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRequestHost.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 0, 4, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipHeaderType.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panTlsMore.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>39, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labSNI.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRequestHost.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>211, 115</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labNetwork.Parent" xml:space="preserve">
|
|
||||||
<value>gbTransport</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbAlpn.Items" xml:space="preserve">
|
|
||||||
<value>h2</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipRequestHost.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbFingerprint.Name" xml:space="preserve">
|
|
||||||
<value>cmbFingerprint</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipPath.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 0, 4, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>gbTransport.Name" xml:space="preserve">
|
|
||||||
<value>gbTransport</value>
|
|
||||||
</data>
|
|
||||||
<data name="labHeaderType.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 80</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labNetwork.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labPath.Name" xml:space="preserve">
|
|
||||||
<value>labPath</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tipRequestHost.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="labSNI.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tipNetwork.Name" xml:space="preserve">
|
|
||||||
<value>tipNetwork</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tipNetwork.Parent" xml:space="preserve">
|
|
||||||
<value>gbTransport</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tipRequestHost.Parent" xml:space="preserve">
|
|
||||||
<value>gbTransport</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labStreamSecurity.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbStreamSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>79, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="labHeaderType.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>19</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbStreamSecurity.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>169, 195</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>gbTransport.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipRequestHost.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 0, 4, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>8, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="labStreamSecurity.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>22</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPath.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>169, 155</value>
|
|
||||||
</data>
|
|
||||||
<data name="labfingerprint.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>16, 95</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipNetwork.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>151, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbHeaderType.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>256, 35</value>
|
|
||||||
</data>
|
|
||||||
<data name="labNetwork.Text" xml:space="preserve">
|
|
||||||
<value>Transport protocol(network)</value>
|
|
||||||
</data>
|
|
||||||
<data name="labPath.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>39, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="labSNI.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>31, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tipHeaderType.ZOrder" xml:space="preserve">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name="labPath.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>27</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRequestHost.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="labfingerprint.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbHeaderType.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>169, 75</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbHeaderType.Parent" xml:space="preserve">
|
|
||||||
<value>gbTransport</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbAlpn.ColumnWidth" type="System.Int32, mscorlib">
|
|
||||||
<value>70</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="labHeaderType.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 0, 4, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panTlsMore.Parent" xml:space="preserve">
|
|
||||||
<value>gbTransport</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRequestHost.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPath.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
|
||||||
<value>panTlsMore</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipPath.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>24</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRequestHost.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbHeaderType.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 4, 4, 4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>clbAlpn.Name" xml:space="preserve">
|
|
||||||
<value>clbAlpn</value>
|
|
||||||
</data>
|
|
||||||
<data name="labSNI.Text" xml:space="preserve">
|
|
||||||
<value>SNI</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labRequestHost.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="labHeaderType.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tipPath.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tipRequestHost.Name" xml:space="preserve">
|
|
||||||
<value>tipRequestHost</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipNetwork.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tipPath.ZOrder" xml:space="preserve">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>gbTransport.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labfingerprint.Name" xml:space="preserve">
|
|
||||||
<value>labfingerprint</value>
|
|
||||||
</data>
|
|
||||||
<data name="labStreamSecurity.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labStreamSecurity.Name" xml:space="preserve">
|
|
||||||
<value>labStreamSecurity</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbAlpn.Items1" xml:space="preserve">
|
|
||||||
<value>http/1.1</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtSNI.Name" xml:space="preserve">
|
|
||||||
<value>txtSNI</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPath.Name" xml:space="preserve">
|
|
||||||
<value>txtPath</value>
|
|
||||||
</data>
|
|
||||||
<data name="labStreamSecurity.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtPath.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="labPath.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipNetwork.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 0, 4, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRequestHost.Parent" xml:space="preserve">
|
|
||||||
<value>gbTransport</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labHeaderType.ZOrder" xml:space="preserve">
|
|
||||||
<value>12</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbFingerprint.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>45</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRequestHost.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbHeaderType.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panTlsMore.Name" xml:space="preserve">
|
|
||||||
<value>panTlsMore</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbAlpn.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>239, 24</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbAlpn.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>407, 9</value>
|
|
||||||
</data>
|
|
||||||
<data name="labPath.Text" xml:space="preserve">
|
|
||||||
<value>Path</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbFingerprint.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>189, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipHeaderType.Text" xml:space="preserve">
|
|
||||||
<value>*</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbTransport.Text" xml:space="preserve">
|
|
||||||
<value>Transport</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtSNI.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="labAllowInsecure.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 0, 4, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tipHeaderType.Name" xml:space="preserve">
|
|
||||||
<value>tipHeaderType</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipRequestHost.Text" xml:space="preserve">
|
|
||||||
<value>*</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipNetwork.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>15</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtSNI.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 4, 4, 4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labAllowInsecure.Parent" xml:space="preserve">
|
|
||||||
<value>panTlsMore</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 4, 4, 4</value>
|
|
||||||
</data>
|
|
||||||
<data name="labStreamSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>31, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tipNetwork.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbAllowInsecure.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 4, 4, 4</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 4, 4, 4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labSNI.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtSNI.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="labNetwork.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>223, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipRequestHost.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>619, 120</value>
|
|
||||||
</data>
|
|
||||||
<data name="labfingerprint.Text" xml:space="preserve">
|
|
||||||
<value>fingerprint(uTLS)</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labAllowInsecure.ZOrder" xml:space="preserve">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name="labfingerprint.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>143, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbAllowInsecure.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>105, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRequestHost.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 4, 4, 4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbNetwork.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="labSNI.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbTransport.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 4, 4, 4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labHeaderType.Parent" xml:space="preserve">
|
|
||||||
<value>gbTransport</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbStreamSecurity.ZOrder" xml:space="preserve">
|
|
||||||
<value>9</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tipNetwork.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="labPath.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 0, 4, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="panTlsMore.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>33</value>
|
|
||||||
</data>
|
|
||||||
<data name="labAllowInsecure.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>16, 14</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labfingerprint.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipPath.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>705, 160</value>
|
|
||||||
</data>
|
|
||||||
<data name="labNetwork.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 40</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPath.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 4, 4, 4</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipPath.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbHeaderType.ZOrder" xml:space="preserve">
|
|
||||||
<value>14</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPath.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRequestHost.ZOrder" xml:space="preserve">
|
|
||||||
<value>11</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipPath.Text" xml:space="preserve">
|
|
||||||
<value>*</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 0, 4, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labPath.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipNetwork.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panTlsMore.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtSNI.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>512, 25</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labfingerprint.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPath.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labStreamSecurity.Parent" xml:space="preserve">
|
|
||||||
<value>gbTransport</value>
|
|
||||||
</data>
|
|
||||||
<data name="labSNI.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>32</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbAllowInsecure.Items" xml:space="preserve">
|
|
||||||
<value />
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbHeaderType.Name" xml:space="preserve">
|
|
||||||
<value>cmbHeaderType</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labNetwork.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtSNI.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labPath.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbStreamSecurity.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipRequestHost.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>23</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipHeaderType.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>376, 80</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbTransport.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>22</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labfingerprint.Parent" xml:space="preserve">
|
|
||||||
<value>panTlsMore</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labNetwork.Name" xml:space="preserve">
|
|
||||||
<value>labNetwork</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipHeaderType.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>20</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRequestHost.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRequestHost.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>399, 24</value>
|
|
||||||
</data>
|
|
||||||
<data name="panTlsMore.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 4, 4, 4</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtPath.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>527, 24</value>
|
|
||||||
</data>
|
|
||||||
<data name="labNetwork.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbStreamSecurity.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbFingerprint.Parent" xml:space="preserve">
|
|
||||||
<value>panTlsMore</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labHeaderType.Name" xml:space="preserve">
|
|
||||||
<value>labHeaderType</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>43</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>tipHeaderType.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipNetwork.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>467, 40</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>labAllowInsecure.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipNetwork.Text" xml:space="preserve">
|
|
||||||
<value>*Default value tcp</value>
|
|
||||||
</data>
|
|
||||||
<data name="labNetwork.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 0, 4, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="labAllowInsecure.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbTransport.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
|
||||||
<value>4, 4, 4, 4</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
|
|
@ -1,193 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="tipNetwork.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>182, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="tipNetwork.Text" xml:space="preserve">
|
|
||||||
<value>*默认tcp,选错会无法连接</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>169, 36</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbNetwork.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>290, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="labNetwork.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>139, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="labNetwork.Text" xml:space="preserve">
|
|
||||||
<value>传输协议(network)</value>
|
|
||||||
</data>
|
|
||||||
<data name="labPath.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>85, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="labPath.Text" xml:space="preserve">
|
|
||||||
<value>路径(path)</value>
|
|
||||||
</data>
|
|
||||||
<data name="labStreamSecurity.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>122, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="labStreamSecurity.Text" xml:space="preserve">
|
|
||||||
<value>传输层安全(tls)</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRequestHost.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>169, 117</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRequestHost.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>442, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name="labHeaderType.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>115, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="labHeaderType.Text" xml:space="preserve">
|
|
||||||
<value>伪装类型(type)</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRequestHost.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>115, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="labRequestHost.Text" xml:space="preserve">
|
|
||||||
<value>伪装域名(host)</value>
|
|
||||||
</data>
|
|
||||||
<data name="gbTransport.Text" xml:space="preserve">
|
|
||||||
<value>底层传输方式(transport)</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbAlpn.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>427, 9</value>
|
|
||||||
</data>
|
|
||||||
<data name="clbAlpn.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>208, 24</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>378, 14</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtSNI.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>391, 25</value>
|
|
||||||
</data>
|
|
||||||
<data name="labAllowInsecure.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>217, 15</value>
|
|
||||||
</data>
|
|
||||||
<data name="labAllowInsecure.Text" xml:space="preserve">
|
|
||||||
<value>跳过证书验证(allowInsecure)</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbAllowInsecure.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>247, 10</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,170 +0,0 @@
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class SubSettingControl
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 必需的设计器变量。
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清理所有正在使用的资源。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 组件设计器生成的代码
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 设计器支持所需的方法 - 不要修改
|
|
||||||
/// 使用代码编辑器修改此方法的内容。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SubSettingControl));
|
|
||||||
this.grbMain = new System.Windows.Forms.GroupBox();
|
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
|
||||||
this.cmbGroup = new System.Windows.Forms.ComboBox();
|
|
||||||
this.txtUserAgent = new System.Windows.Forms.TextBox();
|
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
|
||||||
this.btnShare = new System.Windows.Forms.Button();
|
|
||||||
this.chkEnabled = new System.Windows.Forms.CheckBox();
|
|
||||||
this.btnRemove = new System.Windows.Forms.Button();
|
|
||||||
this.txtUrl = new System.Windows.Forms.TextBox();
|
|
||||||
this.txtRemarks = new System.Windows.Forms.TextBox();
|
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
|
||||||
this.picQRCode = new System.Windows.Forms.PictureBox();
|
|
||||||
this.grbMain.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.picQRCode)).BeginInit();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// grbMain
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.grbMain, "grbMain");
|
|
||||||
this.grbMain.Controls.Add(this.label4);
|
|
||||||
this.grbMain.Controls.Add(this.cmbGroup);
|
|
||||||
this.grbMain.Controls.Add(this.txtUserAgent);
|
|
||||||
this.grbMain.Controls.Add(this.label1);
|
|
||||||
this.grbMain.Controls.Add(this.btnShare);
|
|
||||||
this.grbMain.Controls.Add(this.chkEnabled);
|
|
||||||
this.grbMain.Controls.Add(this.btnRemove);
|
|
||||||
this.grbMain.Controls.Add(this.txtUrl);
|
|
||||||
this.grbMain.Controls.Add(this.txtRemarks);
|
|
||||||
this.grbMain.Controls.Add(this.label2);
|
|
||||||
this.grbMain.Controls.Add(this.label3);
|
|
||||||
this.grbMain.Name = "grbMain";
|
|
||||||
this.grbMain.TabStop = false;
|
|
||||||
//
|
|
||||||
// label4
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label4, "label4");
|
|
||||||
this.label4.Name = "label4";
|
|
||||||
//
|
|
||||||
// cmbGroup
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.cmbGroup, "cmbGroup");
|
|
||||||
this.cmbGroup.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbGroup.FormattingEnabled = true;
|
|
||||||
this.cmbGroup.Name = "cmbGroup";
|
|
||||||
this.cmbGroup.Leave += new System.EventHandler(this.txtRemarks_Leave);
|
|
||||||
//
|
|
||||||
// txtUserAgent
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtUserAgent, "txtUserAgent");
|
|
||||||
this.txtUserAgent.Name = "txtUserAgent";
|
|
||||||
this.txtUserAgent.Leave += new System.EventHandler(this.txtRemarks_Leave);
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label1, "label1");
|
|
||||||
this.label1.Name = "label1";
|
|
||||||
//
|
|
||||||
// btnShare
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnShare, "btnShare");
|
|
||||||
this.btnShare.Name = "btnShare";
|
|
||||||
this.btnShare.UseVisualStyleBackColor = true;
|
|
||||||
this.btnShare.Click += new System.EventHandler(this.btnShare_Click);
|
|
||||||
//
|
|
||||||
// chkEnabled
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.chkEnabled, "chkEnabled");
|
|
||||||
this.chkEnabled.Name = "chkEnabled";
|
|
||||||
this.chkEnabled.UseVisualStyleBackColor = true;
|
|
||||||
this.chkEnabled.Leave += new System.EventHandler(this.txtRemarks_Leave);
|
|
||||||
//
|
|
||||||
// btnRemove
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnRemove, "btnRemove");
|
|
||||||
this.btnRemove.Name = "btnRemove";
|
|
||||||
this.btnRemove.UseVisualStyleBackColor = true;
|
|
||||||
this.btnRemove.Click += new System.EventHandler(this.btnRemove_Click);
|
|
||||||
//
|
|
||||||
// txtUrl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtUrl, "txtUrl");
|
|
||||||
this.txtUrl.Name = "txtUrl";
|
|
||||||
this.txtUrl.Leave += new System.EventHandler(this.txtRemarks_Leave);
|
|
||||||
//
|
|
||||||
// txtRemarks
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.txtRemarks, "txtRemarks");
|
|
||||||
this.txtRemarks.Name = "txtRemarks";
|
|
||||||
this.txtRemarks.Leave += new System.EventHandler(this.txtRemarks_Leave);
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label2, "label2");
|
|
||||||
this.label2.Name = "label2";
|
|
||||||
//
|
|
||||||
// label3
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.label3, "label3");
|
|
||||||
this.label3.Name = "label3";
|
|
||||||
//
|
|
||||||
// picQRCode
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.picQRCode, "picQRCode");
|
|
||||||
this.picQRCode.Name = "picQRCode";
|
|
||||||
this.picQRCode.TabStop = false;
|
|
||||||
//
|
|
||||||
// SubSettingControl
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.Controls.Add(this.picQRCode);
|
|
||||||
this.Controls.Add(this.grbMain);
|
|
||||||
this.Name = "SubSettingControl";
|
|
||||||
this.Load += new System.EventHandler(this.SubSettingControl_Load);
|
|
||||||
this.grbMain.ResumeLayout(false);
|
|
||||||
this.grbMain.PerformLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.picQRCode)).EndInit();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private System.Windows.Forms.GroupBox grbMain;
|
|
||||||
private System.Windows.Forms.TextBox txtUrl;
|
|
||||||
private System.Windows.Forms.TextBox txtRemarks;
|
|
||||||
private System.Windows.Forms.Label label2;
|
|
||||||
private System.Windows.Forms.Label label3;
|
|
||||||
private System.Windows.Forms.Button btnRemove;
|
|
||||||
private System.Windows.Forms.CheckBox chkEnabled;
|
|
||||||
private System.Windows.Forms.Button btnShare;
|
|
||||||
private System.Windows.Forms.PictureBox picQRCode;
|
|
||||||
private System.Windows.Forms.TextBox txtUserAgent;
|
|
||||||
private System.Windows.Forms.Label label1;
|
|
||||||
private System.Windows.Forms.Label label4;
|
|
||||||
private System.Windows.Forms.ComboBox cmbGroup;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,109 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Base;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public delegate void ChangeEventHandler(object sender, EventArgs e);
|
|
||||||
public partial class SubSettingControl : UserControl
|
|
||||||
{
|
|
||||||
public event ChangeEventHandler OnButtonClicked;
|
|
||||||
private List<GroupItem> groupItem;
|
|
||||||
|
|
||||||
public SubItem subItem
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SubSettingControl()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SubSettingControl_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Height = grbMain.Height;
|
|
||||||
|
|
||||||
groupItem = LazyConfig.Instance.GetConfig().groupItem;
|
|
||||||
|
|
||||||
cmbGroup.Items.AddRange(groupItem.Select(t => t.remarks).ToArray());
|
|
||||||
cmbGroup.Items.Add(string.Empty);
|
|
||||||
|
|
||||||
BindingSub();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void BindingSub()
|
|
||||||
{
|
|
||||||
if (subItem != null)
|
|
||||||
{
|
|
||||||
txtRemarks.Text = subItem.remarks.ToString();
|
|
||||||
txtUrl.Text = subItem.url.ToString();
|
|
||||||
chkEnabled.Checked = subItem.enabled;
|
|
||||||
txtUserAgent.Text = subItem.userAgent;
|
|
||||||
|
|
||||||
var index = groupItem.FindIndex(t => t.id == subItem.groupId);
|
|
||||||
if (index >= 0)
|
|
||||||
{
|
|
||||||
cmbGroup.SelectedIndex = index;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void EndBindingSub()
|
|
||||||
{
|
|
||||||
if (subItem != null)
|
|
||||||
{
|
|
||||||
subItem.remarks = txtRemarks.Text.TrimEx();
|
|
||||||
subItem.url = txtUrl.Text.TrimEx();
|
|
||||||
subItem.enabled = chkEnabled.Checked;
|
|
||||||
subItem.userAgent = txtUserAgent.Text.TrimEx();
|
|
||||||
|
|
||||||
var index = groupItem.FindIndex(t => t.remarks == cmbGroup.Text);
|
|
||||||
if (index >= 0)
|
|
||||||
{
|
|
||||||
subItem.groupId = groupItem[index].id;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
subItem.groupId = string.Empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void txtRemarks_Leave(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
EndBindingSub();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnRemove_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (subItem != null)
|
|
||||||
{
|
|
||||||
subItem.remarks = string.Empty;
|
|
||||||
subItem.url = string.Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
OnButtonClicked?.Invoke(sender, e);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnShare_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (Height <= grbMain.Height)
|
|
||||||
{
|
|
||||||
if (Utils.IsNullOrEmpty(subItem.url))
|
|
||||||
{
|
|
||||||
picQRCode.Image = null;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
picQRCode.Image = QRCodeHelper.GetQRCode(subItem.url);
|
|
||||||
Height = grbMain.Height + 200;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Height = grbMain.Height;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,489 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>User Agent(optional)</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="picQRCode.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>619, 162</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbGroup.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 147</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>60, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbGroup.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Name" xml:space="preserve">
|
|
||||||
<value>txtUrl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbGroup.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>picQRCode.Name" xml:space="preserve">
|
|
||||||
<value>picQRCode</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnShare.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.Text" xml:space="preserve">
|
|
||||||
<value>Remove</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>525, 21</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="btnRemove.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>24</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUserAgent.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUserAgent.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 111</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>SubSettingControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Name" xml:space="preserve">
|
|
||||||
<value>label1</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.Text" xml:space="preserve">
|
|
||||||
<value>Subscription details</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnShare.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>26</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>grbMain.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Multiline" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>36</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnShare.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>434, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>83, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbGroup.Name" xml:space="preserve">
|
|
||||||
<value>cmbGroup</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>232, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Top</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Name" xml:space="preserve">
|
|
||||||
<value>label3</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnShare.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnShare.Text" xml:space="preserve">
|
|
||||||
<value>Share</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkEnabled.ZOrder" xml:space="preserve">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>27</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUserAgent.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>473, 21</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>125, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Name" xml:space="preserve">
|
|
||||||
<value>label4</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>127, 53</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUserAgent.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>3</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.ZOrder" xml:space="preserve">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkEnabled.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbGroup.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>232, 20</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUserAgent.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtRemarks.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>47, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
|
|
||||||
<value>Vertical</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnRemove.Name" xml:space="preserve">
|
|
||||||
<value>btnRemove</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUrl.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.Text" xml:space="preserve">
|
|
||||||
<value>Enable</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkEnabled.Name" xml:space="preserve">
|
|
||||||
<value>chkEnabled</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
|
|
||||||
<value>Zoom</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.ZOrder" xml:space="preserve">
|
|
||||||
<value>8</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>25</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>Belong to Group</value>
|
|
||||||
</data>
|
|
||||||
<data name="cmbGroup.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>35</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtRemarks.Name" xml:space="preserve">
|
|
||||||
<value>txtRemarks</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnShare.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnRemove.ZOrder" xml:space="preserve">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnShare.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>25</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUserAgent.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>cmbGroup.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnRemove.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>368, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>picQRCode.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.Name" xml:space="preserve">
|
|
||||||
<value>label2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>grbMain.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>619, 188</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnShare.Name" xml:space="preserve">
|
|
||||||
<value>btnShare</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>619, 350</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnShare.ZOrder" xml:space="preserve">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
|
||||||
<value>9</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 115</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 188</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>txtUserAgent.Name" xml:space="preserve">
|
|
||||||
<value>txtUserAgent</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>Remarks</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label4.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name="picQRCode.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="txtUrl.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>473, 46</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 25</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>12, 151</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>95, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Parent" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>grbMain.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>Address (url)</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>picQRCode.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnRemove.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>picQRCode.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>grbMain.Name" xml:space="preserve">
|
|
||||||
<value>grbMain</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label1.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>chkEnabled.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>label3.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
|
|
@ -1,160 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>53, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label4.Text" xml:space="preserve">
|
|
||||||
<value>所属分组</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>101, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label1.Text" xml:space="preserve">
|
|
||||||
<value>User Agent(可选)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnShare.Text" xml:space="preserve">
|
|
||||||
<value>分享</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>48, 16</value>
|
|
||||||
</data>
|
|
||||||
<data name="chkEnabled.Text" xml:space="preserve">
|
|
||||||
<value>启用</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnRemove.Text" xml:space="preserve">
|
|
||||||
<value>移除</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>29, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label2.Text" xml:space="preserve">
|
|
||||||
<value>备注</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>65, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="label3.Text" xml:space="preserve">
|
|
||||||
<value>地址 (url)</value>
|
|
||||||
</data>
|
|
||||||
<data name="grbMain.Text" xml:space="preserve">
|
|
||||||
<value>订阅详情</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,97 +0,0 @@
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
partial class SubSettingForm
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Windows Form Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SubSettingForm));
|
|
||||||
this.btnClose = new System.Windows.Forms.Button();
|
|
||||||
this.panCon = new System.Windows.Forms.Panel();
|
|
||||||
this.panel2 = new System.Windows.Forms.Panel();
|
|
||||||
this.btnAdd = new System.Windows.Forms.Button();
|
|
||||||
this.btnOK = new System.Windows.Forms.Button();
|
|
||||||
this.panel2.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// btnClose
|
|
||||||
//
|
|
||||||
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
||||||
resources.ApplyResources(this.btnClose, "btnClose");
|
|
||||||
this.btnClose.Name = "btnClose";
|
|
||||||
this.btnClose.UseVisualStyleBackColor = true;
|
|
||||||
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
|
|
||||||
//
|
|
||||||
// panCon
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.panCon, "panCon");
|
|
||||||
this.panCon.Name = "panCon";
|
|
||||||
//
|
|
||||||
// panel2
|
|
||||||
//
|
|
||||||
this.panel2.Controls.Add(this.btnAdd);
|
|
||||||
this.panel2.Controls.Add(this.btnClose);
|
|
||||||
this.panel2.Controls.Add(this.btnOK);
|
|
||||||
resources.ApplyResources(this.panel2, "panel2");
|
|
||||||
this.panel2.Name = "panel2";
|
|
||||||
//
|
|
||||||
// btnAdd
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnAdd, "btnAdd");
|
|
||||||
this.btnAdd.Name = "btnAdd";
|
|
||||||
this.btnAdd.UseVisualStyleBackColor = true;
|
|
||||||
this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
|
|
||||||
//
|
|
||||||
// btnOK
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this.btnOK, "btnOK");
|
|
||||||
this.btnOK.Name = "btnOK";
|
|
||||||
this.btnOK.UseVisualStyleBackColor = true;
|
|
||||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
|
||||||
//
|
|
||||||
// SubSettingForm
|
|
||||||
//
|
|
||||||
resources.ApplyResources(this, "$this");
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.CancelButton = this.btnClose;
|
|
||||||
this.Controls.Add(this.panCon);
|
|
||||||
this.Controls.Add(this.panel2);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
|
||||||
this.Name = "SubSettingForm";
|
|
||||||
this.Load += new System.EventHandler(this.SubSettingForm_Load);
|
|
||||||
this.panel2.ResumeLayout(false);
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
private System.Windows.Forms.Button btnClose;
|
|
||||||
private System.Windows.Forms.Button btnOK;
|
|
||||||
private System.Windows.Forms.Panel panel2;
|
|
||||||
private System.Windows.Forms.Button btnAdd;
|
|
||||||
private System.Windows.Forms.Panel panCon;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,106 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using v2rayN.Handler;
|
|
||||||
using v2rayN.Mode;
|
|
||||||
using v2rayN.Resx;
|
|
||||||
|
|
||||||
namespace v2rayN.Forms
|
|
||||||
{
|
|
||||||
public partial class SubSettingForm : BaseForm
|
|
||||||
{
|
|
||||||
List<SubSettingControl> lstControls = new List<SubSettingControl>();
|
|
||||||
|
|
||||||
public SubSettingForm()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SubSettingForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (config.subItem == null)
|
|
||||||
{
|
|
||||||
config.subItem = new List<SubItem>();
|
|
||||||
}
|
|
||||||
|
|
||||||
RefreshSubsView();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 刷新列表
|
|
||||||
/// </summary>
|
|
||||||
private void RefreshSubsView()
|
|
||||||
{
|
|
||||||
panCon.Controls.Clear();
|
|
||||||
lstControls.Clear();
|
|
||||||
|
|
||||||
for (int k = config.subItem.Count - 1; k >= 0; k--)
|
|
||||||
{
|
|
||||||
SubItem item = config.subItem[k];
|
|
||||||
if (Utils.IsNullOrEmpty(item.remarks)
|
|
||||||
&& Utils.IsNullOrEmpty(item.url))
|
|
||||||
{
|
|
||||||
if (!Utils.IsNullOrEmpty(item.id))
|
|
||||||
{
|
|
||||||
ConfigHandler.RemoveServerViaSubid(ref config, item.id);
|
|
||||||
}
|
|
||||||
config.subItem.RemoveAt(k);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (SubItem item in config.subItem)
|
|
||||||
{
|
|
||||||
SubSettingControl control = new SubSettingControl();
|
|
||||||
control.OnButtonClicked += Control_OnButtonClicked;
|
|
||||||
control.subItem = item;
|
|
||||||
control.Dock = DockStyle.Top;
|
|
||||||
|
|
||||||
panCon.Controls.Add(control);
|
|
||||||
panCon.Controls.SetChildIndex(control, 0);
|
|
||||||
|
|
||||||
lstControls.Add(control);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Control_OnButtonClicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
RefreshSubsView();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (ConfigHandler.SaveSubItem(ref config) == 0)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UI.ShowWarning(ResUI.OperationFailed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnClose_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult = DialogResult.Cancel;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnAdd_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
AddSub();
|
|
||||||
|
|
||||||
RefreshSubsView();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void AddSub()
|
|
||||||
{
|
|
||||||
SubItem subItem = new SubItem
|
|
||||||
{
|
|
||||||
id = string.Empty,
|
|
||||||
remarks = "remarks",
|
|
||||||
url = "url"
|
|
||||||
};
|
|
||||||
config.subItem.Add(subItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,273 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="btnClose.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
|
||||||
<data name="btnClose.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>448, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
|
||||||
<data name="btnClose.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>4</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>&Cancel</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Name" xml:space="preserve">
|
|
||||||
<value>btnClose</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnClose.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.AutoScroll" type="System.Boolean, mscorlib">
|
|
||||||
<value>True</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Fill</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 0</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>634, 401</value>
|
|
||||||
</data>
|
|
||||||
<data name="panCon.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>10</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panCon.Name" xml:space="preserve">
|
|
||||||
<value>panCon</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panCon.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panCon.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panCon.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>47, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>6</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.Text" xml:space="preserve">
|
|
||||||
<value>&Add</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnAdd.Name" xml:space="preserve">
|
|
||||||
<value>btnAdd</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnAdd.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnAdd.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnAdd.ZOrder" xml:space="preserve">
|
|
||||||
<value>0</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
|
||||||
<value>NoControl</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>355, 17</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>75, 23</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>5</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>&OK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Name" xml:space="preserve">
|
|
||||||
<value>btnOK</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
|
||||||
<value>2</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
|
||||||
<value>Bottom</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
|
|
||||||
<value>0, 401</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>634, 60</value>
|
|
||||||
</data>
|
|
||||||
<data name="panel2.TabIndex" type="System.Int32, mscorlib">
|
|
||||||
<value>7</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Name" xml:space="preserve">
|
|
||||||
<value>panel2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Type" xml:space="preserve">
|
|
||||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.Parent" xml:space="preserve">
|
|
||||||
<value>$this</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>panel2.ZOrder" xml:space="preserve">
|
|
||||||
<value>1</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
|
||||||
<value>6, 12</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
|
||||||
<value>634, 461</value>
|
|
||||||
</data>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>Subscription settings</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
|
||||||
<value>SubSettingForm</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Type" xml:space="preserve">
|
|
||||||
<value>v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,149 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="$this.Text" xml:space="preserve">
|
|
||||||
<value>订阅设置</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnAdd.Text" xml:space="preserve">
|
|
||||||
<value>添加(&A)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnClose.Text" xml:space="preserve">
|
|
||||||
<value>取消(&C)</value>
|
|
||||||
</data>
|
|
||||||
<data name="btnOK.Text" xml:space="preserve">
|
|
||||||
<value>确定(&O)</value>
|
|
||||||
</data>
|
|
||||||
<data name="lvSubs.Items" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>
|
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
|
||||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0
|
|
||||||
ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
|
|
||||||
PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA
|
|
||||||
BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5
|
|
||||||
bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz
|
|
||||||
dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA
|
|
||||||
CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp
|
|
||||||
bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5
|
|
||||||
bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3
|
|
||||||
////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0
|
|
||||||
ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw==
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
|
@ -1,13 +1,8 @@
|
||||||
|
namespace v2rayN
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace v2rayN
|
|
||||||
{
|
{
|
||||||
class Global
|
class Global
|
||||||
{
|
{
|
||||||
#region 常量
|
#region const
|
||||||
|
|
||||||
//public const string DownloadFileName = "v2ray-windows.zip";
|
|
||||||
public const string v2rayWebsiteUrl = @"https://www.v2fly.org/";
|
public const string v2rayWebsiteUrl = @"https://www.v2fly.org/";
|
||||||
public const string AboutUrl = @"https://github.com/2dust/v2rayN";
|
public const string AboutUrl = @"https://github.com/2dust/v2rayN";
|
||||||
public const string UpdateUrl = AboutUrl + @"/releases";
|
public const string UpdateUrl = AboutUrl + @"/releases";
|
||||||
|
@ -22,100 +17,31 @@ namespace v2rayN
|
||||||
public const string tuicCoreUrl = "https://github.com/EAimTY/tuic/releases";
|
public const string tuicCoreUrl = "https://github.com/EAimTY/tuic/releases";
|
||||||
public const string singboxCoreUrl = "https://github.com/SagerNet/sing-box/releases";
|
public const string singboxCoreUrl = "https://github.com/SagerNet/sing-box/releases";
|
||||||
public const string geoUrl = "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/{0}.dat";
|
public const string geoUrl = "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/{0}.dat";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// SpeedTestUrl
|
|
||||||
/// </summary>
|
|
||||||
public const string SpeedTestUrl = @"http://cachefly.cachefly.net/10mb.test";
|
public const string SpeedTestUrl = @"http://cachefly.cachefly.net/10mb.test";
|
||||||
public const string SpeedPingTestUrl = @"https://www.google.com/generate_204";
|
public const string SpeedPingTestUrl = @"https://www.google.com/generate_204";
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// CustomRoutingListUrl
|
|
||||||
/// </summary>
|
|
||||||
public const string CustomRoutingListUrl = @"https://raw.githubusercontent.com/2dust/v2rayCustomRoutingList/master/";
|
public const string CustomRoutingListUrl = @"https://raw.githubusercontent.com/2dust/v2rayCustomRoutingList/master/";
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// PromotionUrl
|
|
||||||
/// </summary>
|
|
||||||
public const string PromotionUrl = @"aHR0cHM6Ly85LjIzNDQ1Ni54eXovYWJjLmh0bWw=";
|
public const string PromotionUrl = @"aHR0cHM6Ly85LjIzNDQ1Ni54eXovYWJjLmh0bWw=";
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 本软件配置文件名
|
|
||||||
/// </summary>
|
|
||||||
public const string ConfigFileName = "guiNConfig.json";
|
public const string ConfigFileName = "guiNConfig.json";
|
||||||
|
public const string ConfigDB = "guiNDB.db";
|
||||||
/// <summary>
|
public const string coreConfigFileName = "config.json";
|
||||||
/// v2ray配置文件名
|
public const string v2raySampleClient = "v2rayN.Sample.SampleClientConfig";
|
||||||
/// </summary>
|
public const string v2raySampleServer = "v2rayN.Sample.SampleServerConfig";
|
||||||
public const string v2rayConfigFileName = "config.json";
|
public const string v2raySampleHttprequestFileName = "v2rayN.Sample.SampleHttprequest";
|
||||||
|
public const string v2raySampleHttpresponseFileName = "v2rayN.Sample.SampleHttpresponse";
|
||||||
/// <summary>
|
|
||||||
/// v2ray客户端配置样例文件名
|
|
||||||
/// </summary>
|
|
||||||
public const string v2raySampleClient = "v2rayN.Sample.SampleClientConfig.txt";
|
|
||||||
/// <summary>
|
|
||||||
/// v2ray服务端配置样例文件名
|
|
||||||
/// </summary>
|
|
||||||
public const string v2raySampleServer = "v2rayN.Sample.SampleServerConfig.txt";
|
|
||||||
/// <summary>
|
|
||||||
/// v2ray配置Httprequest文件名
|
|
||||||
/// </summary>
|
|
||||||
public const string v2raySampleHttprequestFileName = "v2rayN.Sample.SampleHttprequest.txt";
|
|
||||||
/// <summary>
|
|
||||||
/// v2ray配置Httpresponse文件名
|
|
||||||
/// </summary>
|
|
||||||
public const string v2raySampleHttpresponseFileName = "v2rayN.Sample.SampleHttpresponse.txt";
|
|
||||||
|
|
||||||
public const string CustomRoutingFileName = "v2rayN.Sample.custom_routing_";
|
public const string CustomRoutingFileName = "v2rayN.Sample.custom_routing_";
|
||||||
|
public const string v2raySampleInbound = "v2rayN.Sample.SampleInbound";
|
||||||
|
public const string TunSingboxFileName = "v2rayN.Sample.tun_singbox";
|
||||||
|
|
||||||
public const string v2raySampleInbound = "v2rayN.Sample.SampleInbound.txt";
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 默认加密方式
|
|
||||||
/// </summary>
|
|
||||||
public const string DefaultSecurity = "auto";
|
public const string DefaultSecurity = "auto";
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 默认传输协议
|
|
||||||
/// </summary>
|
|
||||||
public const string DefaultNetwork = "tcp";
|
public const string DefaultNetwork = "tcp";
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Tcp伪装http
|
|
||||||
/// </summary>
|
|
||||||
public const string TcpHeaderHttp = "http";
|
public const string TcpHeaderHttp = "http";
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// None值
|
|
||||||
/// </summary>
|
|
||||||
public const string None = "none";
|
public const string None = "none";
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 代理 tag值
|
|
||||||
/// </summary>
|
|
||||||
public const string agentTag = "proxy";
|
public const string agentTag = "proxy";
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 直连 tag值
|
|
||||||
/// </summary>
|
|
||||||
public const string directTag = "direct";
|
public const string directTag = "direct";
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 阻止 tag值
|
|
||||||
/// </summary>
|
|
||||||
public const string blockTag = "block";
|
public const string blockTag = "block";
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public const string StreamSecurity = "tls";
|
public const string StreamSecurity = "tls";
|
||||||
public const string StreamSecurityX = "xtls";
|
public const string StreamSecurityX = "xtls";
|
||||||
|
|
||||||
public const string InboundSocks = "socks";
|
public const string InboundSocks = "socks";
|
||||||
public const string InboundHttp = "http";
|
public const string InboundHttp = "http";
|
||||||
public const string InboundSocks2 = "socks2";
|
public const string InboundSocks2 = "socks2";
|
||||||
|
@ -124,79 +50,34 @@ namespace v2rayN
|
||||||
public const string InboundAPITagName = "api";
|
public const string InboundAPITagName = "api";
|
||||||
public const string InboundAPIProtocal = "dokodemo-door";
|
public const string InboundAPIProtocal = "dokodemo-door";
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// vmess
|
|
||||||
/// </summary>
|
|
||||||
public const string vmessProtocol = "vmess://";
|
public const string vmessProtocol = "vmess://";
|
||||||
/// <summary>
|
|
||||||
/// vmess
|
|
||||||
/// </summary>
|
|
||||||
public const string vmessProtocolLite = "vmess";
|
public const string vmessProtocolLite = "vmess";
|
||||||
/// <summary>
|
|
||||||
/// shadowsocks
|
|
||||||
/// </summary>
|
|
||||||
public const string ssProtocol = "ss://";
|
public const string ssProtocol = "ss://";
|
||||||
/// <summary>
|
|
||||||
/// shadowsocks
|
|
||||||
/// </summary>
|
|
||||||
public const string ssProtocolLite = "shadowsocks";
|
public const string ssProtocolLite = "shadowsocks";
|
||||||
/// <summary>
|
|
||||||
/// socks
|
|
||||||
/// </summary>
|
|
||||||
public const string socksProtocol = "socks://";
|
public const string socksProtocol = "socks://";
|
||||||
/// <summary>
|
|
||||||
/// socks
|
|
||||||
/// </summary>
|
|
||||||
public const string socksProtocolLite = "socks";
|
public const string socksProtocolLite = "socks";
|
||||||
/// <summary>
|
|
||||||
/// http
|
|
||||||
/// </summary>
|
|
||||||
public const string httpProtocol = "http://";
|
public const string httpProtocol = "http://";
|
||||||
/// <summary>
|
|
||||||
/// https
|
|
||||||
/// </summary>
|
|
||||||
public const string httpsProtocol = "https://";
|
public const string httpsProtocol = "https://";
|
||||||
/// <summary>
|
|
||||||
/// vless
|
|
||||||
/// </summary>
|
|
||||||
public const string vlessProtocol = "vless://";
|
public const string vlessProtocol = "vless://";
|
||||||
/// <summary>
|
|
||||||
/// vless
|
|
||||||
/// </summary>
|
|
||||||
public const string vlessProtocolLite = "vless";
|
public const string vlessProtocolLite = "vless";
|
||||||
/// <summary>
|
|
||||||
/// trojan
|
|
||||||
/// </summary>
|
|
||||||
public const string trojanProtocol = "trojan://";
|
public const string trojanProtocol = "trojan://";
|
||||||
/// <summary>
|
|
||||||
/// trojan
|
|
||||||
/// </summary>
|
|
||||||
public const string trojanProtocolLite = "trojan";
|
public const string trojanProtocolLite = "trojan";
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// email
|
|
||||||
/// </summary>
|
|
||||||
public const string userEMail = "t@t.tt";
|
public const string userEMail = "t@t.tt";
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// MyRegPath
|
|
||||||
/// </summary>
|
|
||||||
public const string MyRegPath = "Software\\v2rayNGUI";
|
public const string MyRegPath = "Software\\v2rayNGUI";
|
||||||
|
public const string AutoRunRegPath = @"Software\Microsoft\Windows\CurrentVersion\Run";
|
||||||
/// <summary>
|
public const string AutoRunName = "v2rayNAutoRun";
|
||||||
/// Language
|
|
||||||
/// </summary>
|
|
||||||
public const string MyRegKeyLanguage = "CurrentLanguage";
|
public const string MyRegKeyLanguage = "CurrentLanguage";
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Icon
|
|
||||||
/// </summary>
|
|
||||||
public const string CustomIconName = "v2rayN.ico";
|
public const string CustomIconName = "v2rayN.ico";
|
||||||
|
|
||||||
public const string StatisticLogOverall = "StatisticLogOverall.json";
|
|
||||||
|
|
||||||
public const string IEProxyExceptions = "localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;192.168.*";
|
public const string IEProxyExceptions = "localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;192.168.*";
|
||||||
|
public const string RoutingRuleComma = "<COMMA>";
|
||||||
|
public const string GrpcgunMode = "gun";
|
||||||
|
public const string GrpcmultiMode = "multi";
|
||||||
|
public const int MaxPort = 65536;
|
||||||
|
public const string CommandClearMsg = "CommandClearMsg";
|
||||||
|
public const string DelayUnit = "";
|
||||||
|
public const string SpeedUnit = "";
|
||||||
|
|
||||||
public static readonly List<string> IEProxyProtocols = new List<string> {
|
public static readonly List<string> IEProxyProtocols = new List<string> {
|
||||||
"{ip}:{http_port}",
|
"{ip}:{http_port}",
|
||||||
"socks={ip}:{socks_port}",
|
"socks={ip}:{socks_port}",
|
||||||
|
@ -204,9 +85,6 @@ namespace v2rayN
|
||||||
"http=http://{ip}:{http_port};https=http://{ip}:{http_port}",
|
"http=http://{ip}:{http_port};https=http://{ip}:{http_port}",
|
||||||
""
|
""
|
||||||
};
|
};
|
||||||
|
|
||||||
public const string RoutingRuleComma = "<COMMA>";
|
|
||||||
|
|
||||||
public static readonly List<string> vmessSecuritys = new List<string> { "aes-128-gcm", "chacha20-poly1305", "auto", "none", "zero" };
|
public static readonly List<string> vmessSecuritys = new List<string> { "aes-128-gcm", "chacha20-poly1305", "auto", "none", "zero" };
|
||||||
public static readonly List<string> ssSecuritys = new List<string> { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "none", "plain" };
|
public static readonly List<string> ssSecuritys = new List<string> { "aes-256-gcm", "aes-128-gcm", "chacha20-poly1305", "chacha20-ietf-poly1305", "none", "plain" };
|
||||||
public static readonly List<string> ssSecuritysInSagerNet = new List<string> { "none", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305", "aes-128-gcm", "aes-192-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", "xchacha20-ietf-poly1305", "rc4", "rc4-md5", "aes-128-ctr", "aes-192-ctr", "aes-256-ctr", "aes-128-cfb", "aes-192-cfb", "aes-256-cfb", "aes-128-cfb8", "aes-192-cfb8", "aes-256-cfb8", "aes-128-ofb", "aes-192-ofb", "aes-256-ofb", "bf-cfb", "cast5-cfb", "des-cfb", "idea-cfb", "rc2-cfb", "seed-cfb", "camellia-128-cfb", "camellia-192-cfb", "camellia-256-cfb", "camellia-128-cfb8", "camellia-192-cfb8", "camellia-256-cfb8", "salsa20", "chacha20", "chacha20-ietf", "xchacha20" };
|
public static readonly List<string> ssSecuritysInSagerNet = new List<string> { "none", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305", "aes-128-gcm", "aes-192-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", "xchacha20-ietf-poly1305", "rc4", "rc4-md5", "aes-128-ctr", "aes-192-ctr", "aes-256-ctr", "aes-128-cfb", "aes-192-cfb", "aes-256-cfb", "aes-128-cfb8", "aes-192-cfb8", "aes-256-cfb8", "aes-128-ofb", "aes-192-ofb", "aes-256-ofb", "bf-cfb", "cast5-cfb", "des-cfb", "idea-cfb", "rc2-cfb", "seed-cfb", "camellia-128-cfb", "camellia-192-cfb", "camellia-256-cfb", "camellia-128-cfb8", "camellia-192-cfb8", "camellia-256-cfb8", "salsa20", "chacha20", "chacha20-ietf", "xchacha20" };
|
||||||
|
@ -215,45 +93,30 @@ namespace v2rayN
|
||||||
public static readonly List<string> networks = new List<string> { "tcp", "kcp", "ws", "h2", "quic", "grpc" };
|
public static readonly List<string> networks = new List<string> { "tcp", "kcp", "ws", "h2", "quic", "grpc" };
|
||||||
public static readonly List<string> kcpHeaderTypes = new List<string> { "srtp", "utp", "wechat-video", "dtls", "wireguard" };
|
public static readonly List<string> kcpHeaderTypes = new List<string> { "srtp", "utp", "wechat-video", "dtls", "wireguard" };
|
||||||
public static readonly List<string> coreTypes = new List<string> { "v2fly", "SagerNet", "Xray", "v2fly_v5" };
|
public static readonly List<string> coreTypes = new List<string> { "v2fly", "SagerNet", "Xray", "v2fly_v5" };
|
||||||
|
public static readonly List<string> domainStrategys = new List<string> { "AsIs", "IPIfNonMatch", "IPOnDemand" };
|
||||||
public static readonly List<string> domainMatchers = new List<string> { "linear", "mph", "" };
|
public static readonly List<string> domainMatchers = new List<string> { "linear", "mph", "" };
|
||||||
public static readonly List<string> fingerprints = new List<string> { "chrome", "firefox", "safari", "randomized", "" };
|
public static readonly List<string> fingerprints = new List<string> { "chrome", "firefox", "safari", "randomized", "" };
|
||||||
|
public static readonly List<string> allowInsecures = new List<string> { "true", "false", "" };
|
||||||
public static readonly List<string> domainStrategy4Freedoms = new List<string> { "AsIs", "UseIP", "UseIPv4", "UseIPv6", "" };
|
public static readonly List<string> domainStrategy4Freedoms = new List<string> { "AsIs", "UseIP", "UseIPv4", "UseIPv6", "" };
|
||||||
public const string GrpcgunMode = "gun";
|
public static readonly List<string> Languages = new List<string> { "zh-Hans", "en" };
|
||||||
public const string GrpcmultiMode = "multi";
|
public static readonly List<string> alpns = new List<string> { "h2", "http/1.1", "h2,http/1.1", "" };
|
||||||
public const string CheckMark = "√";
|
public static readonly List<string> LogLevel = new List<string> { "debug", "info", "warning", "error", "none" };
|
||||||
|
public static readonly List<string> InboundTags = new List<string> { "socks", "http", "socks2", "http2" };
|
||||||
|
public static readonly List<string> Protocols = new List<string> { "http", "tls", "bittorrent" };
|
||||||
|
public static readonly List<string> TunMtus = new List<string> { "9000", "1500" };
|
||||||
|
public static readonly List<string> TunStacks = new List<string> { "gvisor", "system" };
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 全局变量
|
#region global variable
|
||||||
|
|
||||||
/// <summary>
|
public static bool reloadCore { get; set; }
|
||||||
/// 是否需要重启服务V2ray
|
public static int statePort { get; set; }
|
||||||
/// </summary>
|
public static Job processJob { get; set; }
|
||||||
public static bool reloadV2ray
|
public static bool ShowInTaskbar { get; set; }
|
||||||
{
|
public static string ExePathKey { get; set; }
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public static int statePort
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Job processJob
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
public static System.Threading.Mutex mutexObj
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,7 +1,4 @@
|
||||||
using System;
|
using System.IO;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.NetworkInformation;
|
using System.Net.NetworkInformation;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
|
@ -11,23 +8,24 @@ using v2rayN.Resx;
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// v2ray配置文件处理类
|
/// Core configuration file processing class
|
||||||
/// </summary>
|
/// </summary>
|
||||||
class V2rayConfigHandler
|
class CoreConfigHandler
|
||||||
{
|
{
|
||||||
private static string SampleClient = Global.v2raySampleClient;
|
private static string SampleClient = Global.v2raySampleClient;
|
||||||
private static string SampleServer = Global.v2raySampleServer;
|
private static string SampleServer = Global.v2raySampleServer;
|
||||||
|
|
||||||
#region 生成客户端配置
|
#region Generate client configuration
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 生成v2ray的客户端配置文件
|
/// Generate client configuration
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="node"></param>
|
/// <param name="node"></param>
|
||||||
/// <param name="fileName"></param>
|
/// <param name="fileName"></param>
|
||||||
/// <param name="msg"></param>
|
/// <param name="msg"></param>
|
||||||
|
/// <param name="content"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static int GenerateClientConfig(VmessItem node, string fileName, out string msg, out string content)
|
public static int GenerateClientConfig(ProfileItem node, string fileName, out string msg, out string content)
|
||||||
{
|
{
|
||||||
content = string.Empty;
|
content = string.Empty;
|
||||||
try
|
try
|
||||||
|
@ -69,14 +67,6 @@ namespace v2rayN.Handler
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 日志
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="config"></param>
|
|
||||||
/// <param name="v2rayConfig"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
private static int log(Config config, ref V2rayConfig v2rayConfig, bool blExport)
|
private static int log(Config config, ref V2rayConfig v2rayConfig, bool blExport)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -99,8 +89,8 @@ namespace v2rayN.Handler
|
||||||
if (config.logEnabled)
|
if (config.logEnabled)
|
||||||
{
|
{
|
||||||
v2rayConfig.log.loglevel = config.loglevel;
|
v2rayConfig.log.loglevel = config.loglevel;
|
||||||
v2rayConfig.log.access = Utils.GetPath(v2rayConfig.log.access);
|
v2rayConfig.log.access = Utils.GetLogPath(v2rayConfig.log.access);
|
||||||
v2rayConfig.log.error = Utils.GetPath(v2rayConfig.log.error);
|
v2rayConfig.log.error = Utils.GetLogPath(v2rayConfig.log.error);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -117,12 +107,6 @@ namespace v2rayN.Handler
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 本地端口
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="config"></param>
|
|
||||||
/// <param name="v2rayConfig"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
private static int inbound(Config config, ref V2rayConfig v2rayConfig)
|
private static int inbound(Config config, ref V2rayConfig v2rayConfig)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -138,22 +122,30 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
if (config.inbound[0].allowLANConn)
|
if (config.inbound[0].allowLANConn)
|
||||||
{
|
{
|
||||||
Inbounds inbound3 = GetInbound(config.inbound[0], Global.InboundSocks2, 2, true);
|
if (config.inbound[0].newPort4LAN)
|
||||||
inbound3.listen = "0.0.0.0";
|
|
||||||
v2rayConfig.inbounds.Add(inbound3);
|
|
||||||
|
|
||||||
Inbounds inbound4 = GetInbound(config.inbound[0], Global.InboundHttp2, 3, false);
|
|
||||||
inbound4.listen = "0.0.0.0";
|
|
||||||
v2rayConfig.inbounds.Add(inbound4);
|
|
||||||
|
|
||||||
//auth
|
|
||||||
if (!Utils.IsNullOrEmpty(config.inbound[0].user) && !Utils.IsNullOrEmpty(config.inbound[0].pass))
|
|
||||||
{
|
{
|
||||||
inbound3.settings.auth = "password";
|
Inbounds inbound3 = GetInbound(config.inbound[0], Global.InboundSocks2, 2, true);
|
||||||
inbound3.settings.accounts = new List<AccountsItem> { new AccountsItem() { user = config.inbound[0].user, pass = config.inbound[0].pass } };
|
inbound3.listen = "0.0.0.0";
|
||||||
|
v2rayConfig.inbounds.Add(inbound3);
|
||||||
|
|
||||||
inbound4.settings.auth = "password";
|
Inbounds inbound4 = GetInbound(config.inbound[0], Global.InboundHttp2, 3, false);
|
||||||
inbound4.settings.accounts = new List<AccountsItem> { new AccountsItem() { user = config.inbound[0].user, pass = config.inbound[0].pass } };
|
inbound4.listen = "0.0.0.0";
|
||||||
|
v2rayConfig.inbounds.Add(inbound4);
|
||||||
|
|
||||||
|
//auth
|
||||||
|
if (!Utils.IsNullOrEmpty(config.inbound[0].user) && !Utils.IsNullOrEmpty(config.inbound[0].pass))
|
||||||
|
{
|
||||||
|
inbound3.settings.auth = "password";
|
||||||
|
inbound3.settings.accounts = new List<AccountsItem> { new AccountsItem() { user = config.inbound[0].user, pass = config.inbound[0].pass } };
|
||||||
|
|
||||||
|
inbound4.settings.auth = "password";
|
||||||
|
inbound4.settings.accounts = new List<AccountsItem> { new AccountsItem() { user = config.inbound[0].user, pass = config.inbound[0].pass } };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
inbound.listen = "0.0.0.0";
|
||||||
|
inbound2.listen = "0.0.0.0";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -182,16 +174,11 @@ namespace v2rayN.Handler
|
||||||
inbound.protocol = bSocks ? Global.InboundSocks : Global.InboundHttp;
|
inbound.protocol = bSocks ? Global.InboundSocks : Global.InboundHttp;
|
||||||
inbound.settings.udp = inItem.udpEnabled;
|
inbound.settings.udp = inItem.udpEnabled;
|
||||||
inbound.sniffing.enabled = inItem.sniffingEnabled;
|
inbound.sniffing.enabled = inItem.sniffingEnabled;
|
||||||
|
inbound.sniffing.routeOnly = inItem.routeOnly;
|
||||||
|
|
||||||
return inbound;
|
return inbound;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 路由
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="config"></param>
|
|
||||||
/// <param name="v2rayConfig"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
private static int routing(Config config, ref V2rayConfig v2rayConfig)
|
private static int routing(Config config, ref V2rayConfig v2rayConfig)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -204,9 +191,15 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
if (config.enableRoutingAdvanced)
|
if (config.enableRoutingAdvanced)
|
||||||
{
|
{
|
||||||
if (config.routings != null && config.routingIndex < config.routings.Count)
|
var routing = ConfigHandler.GetDefaultRouting(ref config);
|
||||||
|
if (routing != null)
|
||||||
{
|
{
|
||||||
foreach (var item in config.routings[config.routingIndex].rules)
|
if (!Utils.IsNullOrEmpty(routing.domainStrategy))
|
||||||
|
{
|
||||||
|
v2rayConfig.routing.domainStrategy = routing.domainStrategy;
|
||||||
|
}
|
||||||
|
var rules = Utils.FromJson<List<RulesItem>>(routing.ruleSet);
|
||||||
|
foreach (var item in rules)
|
||||||
{
|
{
|
||||||
if (item.enabled)
|
if (item.enabled)
|
||||||
{
|
{
|
||||||
|
@ -220,7 +213,8 @@ namespace v2rayN.Handler
|
||||||
var lockedItem = ConfigHandler.GetLockedRoutingItem(ref config);
|
var lockedItem = ConfigHandler.GetLockedRoutingItem(ref config);
|
||||||
if (lockedItem != null)
|
if (lockedItem != null)
|
||||||
{
|
{
|
||||||
foreach (var item in lockedItem.rules)
|
var rules = Utils.FromJson<List<RulesItem>>(lockedItem.ruleSet);
|
||||||
|
foreach (var item in rules)
|
||||||
{
|
{
|
||||||
routingUserRule(item, ref v2rayConfig);
|
routingUserRule(item, ref v2rayConfig);
|
||||||
}
|
}
|
||||||
|
@ -258,6 +252,10 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
rules.protocol = null;
|
rules.protocol = null;
|
||||||
}
|
}
|
||||||
|
if (rules.inboundTag != null && rules.inboundTag.Count == 0)
|
||||||
|
{
|
||||||
|
rules.inboundTag = null;
|
||||||
|
}
|
||||||
|
|
||||||
var hasDomainIp = false;
|
var hasDomainIp = false;
|
||||||
if (rules.domain != null && rules.domain.Count > 0)
|
if (rules.domain != null && rules.domain.Count > 0)
|
||||||
|
@ -273,14 +271,6 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
it.domain[k] = it.domain[k].Replace(Global.RoutingRuleComma, ",");
|
it.domain[k] = it.domain[k].Replace(Global.RoutingRuleComma, ",");
|
||||||
}
|
}
|
||||||
//if (Utils.IsNullOrEmpty(it.port))
|
|
||||||
//{
|
|
||||||
// it.port = null;
|
|
||||||
//}
|
|
||||||
//if (it.protocol != null && it.protocol.Count == 0)
|
|
||||||
//{
|
|
||||||
// it.protocol = null;
|
|
||||||
//}
|
|
||||||
v2rayConfig.routing.rules.Add(it);
|
v2rayConfig.routing.rules.Add(it);
|
||||||
hasDomainIp = true;
|
hasDomainIp = true;
|
||||||
}
|
}
|
||||||
|
@ -289,40 +279,17 @@ namespace v2rayN.Handler
|
||||||
var it = Utils.DeepCopy(rules);
|
var it = Utils.DeepCopy(rules);
|
||||||
it.domain = null;
|
it.domain = null;
|
||||||
it.type = "field";
|
it.type = "field";
|
||||||
//if (Utils.IsNullOrEmpty(it.port))
|
|
||||||
//{
|
|
||||||
// it.port = null;
|
|
||||||
//}
|
|
||||||
//if (it.protocol != null && it.protocol.Count == 0)
|
|
||||||
//{
|
|
||||||
// it.protocol = null;
|
|
||||||
//}
|
|
||||||
v2rayConfig.routing.rules.Add(it);
|
v2rayConfig.routing.rules.Add(it);
|
||||||
hasDomainIp = true;
|
hasDomainIp = true;
|
||||||
}
|
}
|
||||||
if (!hasDomainIp)
|
if (!hasDomainIp)
|
||||||
{
|
{
|
||||||
if (!Utils.IsNullOrEmpty(rules.port))
|
if (!Utils.IsNullOrEmpty(rules.port)
|
||||||
|
|| (rules.protocol != null && rules.protocol.Count > 0)
|
||||||
|
|| (rules.inboundTag != null && rules.inboundTag.Count > 0)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
var it = Utils.DeepCopy(rules);
|
var it = Utils.DeepCopy(rules);
|
||||||
//it.domain = null;
|
|
||||||
//it.ip = null;
|
|
||||||
//if (it.protocol != null && it.protocol.Count == 0)
|
|
||||||
//{
|
|
||||||
// it.protocol = null;
|
|
||||||
//}
|
|
||||||
it.type = "field";
|
|
||||||
v2rayConfig.routing.rules.Add(it);
|
|
||||||
}
|
|
||||||
else if (rules.protocol != null && rules.protocol.Count > 0)
|
|
||||||
{
|
|
||||||
var it = Utils.DeepCopy(rules);
|
|
||||||
//it.domain = null;
|
|
||||||
//it.ip = null;
|
|
||||||
//if (Utils.IsNullOrEmpty(it.port))
|
|
||||||
//{
|
|
||||||
// it.port = null;
|
|
||||||
//}
|
|
||||||
it.type = "field";
|
it.type = "field";
|
||||||
v2rayConfig.routing.rules.Add(it);
|
v2rayConfig.routing.rules.Add(it);
|
||||||
}
|
}
|
||||||
|
@ -335,13 +302,7 @@ namespace v2rayN.Handler
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
private static int outbound(ProfileItem node, ref V2rayConfig v2rayConfig)
|
||||||
/// vmess协议服务器配置
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="node"></param>
|
|
||||||
/// <param name="v2rayConfig"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
private static int outbound(VmessItem node, ref V2rayConfig v2rayConfig)
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -359,7 +320,6 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
vnextItem = outbound.settings.vnext[0];
|
vnextItem = outbound.settings.vnext[0];
|
||||||
}
|
}
|
||||||
//远程服务器地址和端口
|
|
||||||
vnextItem.address = node.address;
|
vnextItem.address = node.address;
|
||||||
vnextItem.port = node.port;
|
vnextItem.port = node.port;
|
||||||
|
|
||||||
|
@ -407,7 +367,6 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
serversItem = outbound.settings.servers[0];
|
serversItem = outbound.settings.servers[0];
|
||||||
}
|
}
|
||||||
//远程服务器地址和端口
|
|
||||||
serversItem.address = node.address;
|
serversItem.address = node.address;
|
||||||
serversItem.port = node.port;
|
serversItem.port = node.port;
|
||||||
serversItem.password = node.id;
|
serversItem.password = node.id;
|
||||||
|
@ -437,7 +396,6 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
serversItem = outbound.settings.servers[0];
|
serversItem = outbound.settings.servers[0];
|
||||||
}
|
}
|
||||||
//远程服务器地址和端口
|
|
||||||
serversItem.address = node.address;
|
serversItem.address = node.address;
|
||||||
serversItem.port = node.port;
|
serversItem.port = node.port;
|
||||||
serversItem.method = null;
|
serversItem.method = null;
|
||||||
|
@ -474,7 +432,6 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
vnextItem = outbound.settings.vnext[0];
|
vnextItem = outbound.settings.vnext[0];
|
||||||
}
|
}
|
||||||
//远程服务器地址和端口
|
|
||||||
vnextItem.address = node.address;
|
vnextItem.address = node.address;
|
||||||
vnextItem.port = node.port;
|
vnextItem.port = node.port;
|
||||||
|
|
||||||
|
@ -488,7 +445,6 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
usersItem = vnextItem.users[0];
|
usersItem = vnextItem.users[0];
|
||||||
}
|
}
|
||||||
//远程服务器用户ID
|
|
||||||
usersItem.id = node.id;
|
usersItem.id = node.id;
|
||||||
usersItem.flow = string.Empty;
|
usersItem.flow = string.Empty;
|
||||||
usersItem.email = Global.userEMail;
|
usersItem.email = Global.userEMail;
|
||||||
|
@ -541,7 +497,6 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
serversItem = outbound.settings.servers[0];
|
serversItem = outbound.settings.servers[0];
|
||||||
}
|
}
|
||||||
//远程服务器地址和端口
|
|
||||||
serversItem.address = node.address;
|
serversItem.address = node.address;
|
||||||
serversItem.port = node.port;
|
serversItem.port = node.port;
|
||||||
serversItem.password = node.id;
|
serversItem.password = node.id;
|
||||||
|
@ -582,14 +537,7 @@ namespace v2rayN.Handler
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
private static int boundStreamSettings(ProfileItem node, string iobound, StreamSettings streamSettings)
|
||||||
/// 底层传输配置
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="node"></param>
|
|
||||||
/// <param name="iobound"></param>
|
|
||||||
/// <param name="streamSettings"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
private static int boundStreamSettings(VmessItem node, string iobound, StreamSettings streamSettings)
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -646,7 +594,6 @@ namespace v2rayN.Handler
|
||||||
//streamSettings
|
//streamSettings
|
||||||
switch (node.GetNetwork())
|
switch (node.GetNetwork())
|
||||||
{
|
{
|
||||||
//kcp基本配置暂时是默认值,用户能自己设置伪装类型
|
|
||||||
case "kcp":
|
case "kcp":
|
||||||
KcpSettings kcpSettings = new KcpSettings
|
KcpSettings kcpSettings = new KcpSettings
|
||||||
{
|
{
|
||||||
|
@ -754,13 +701,17 @@ namespace v2rayN.Handler
|
||||||
var grpcSettings = new GrpcSettings
|
var grpcSettings = new GrpcSettings
|
||||||
{
|
{
|
||||||
serviceName = node.path,
|
serviceName = node.path,
|
||||||
multiMode = (node.headerType == Global.GrpcmultiMode)
|
multiMode = (node.headerType == Global.GrpcmultiMode),
|
||||||
|
idle_timeout = config.grpcItem.idle_timeout,
|
||||||
|
health_check_timeout = config.grpcItem.health_check_timeout,
|
||||||
|
permit_without_stream = config.grpcItem.permit_without_stream,
|
||||||
|
initial_windows_size = config.grpcItem.initial_windows_size,
|
||||||
};
|
};
|
||||||
|
|
||||||
streamSettings.grpcSettings = grpcSettings;
|
streamSettings.grpcSettings = grpcSettings;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
//tcp带http伪装
|
//tcp
|
||||||
if (node.headerType.Equals(Global.TcpHeaderHttp))
|
if (node.headerType.Equals(Global.TcpHeaderHttp))
|
||||||
{
|
{
|
||||||
TcpSettings tcpSettings = new TcpSettings
|
TcpSettings tcpSettings = new TcpSettings
|
||||||
|
@ -773,14 +724,14 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
if (iobound.Equals("out"))
|
if (iobound.Equals("out"))
|
||||||
{
|
{
|
||||||
//request填入自定义Host
|
//request Host
|
||||||
string request = Utils.GetEmbedText(Global.v2raySampleHttprequestFileName);
|
string request = Utils.GetEmbedText(Global.v2raySampleHttprequestFileName);
|
||||||
string[] arrHost = host.Split(',');
|
string[] arrHost = host.Split(',');
|
||||||
string host2 = string.Join("\",\"", arrHost);
|
string host2 = string.Join("\",\"", arrHost);
|
||||||
request = request.Replace("$requestHost$", $"\"{host2}\"");
|
request = request.Replace("$requestHost$", $"\"{host2}\"");
|
||||||
//request = request.Replace("$requestHost$", string.Format("\"{0}\"", config.requestHost()));
|
//request = request.Replace("$requestHost$", string.Format("\"{0}\"", config.requestHost()));
|
||||||
|
|
||||||
//填入自定义Path
|
//Path
|
||||||
string pathHttp = @"/";
|
string pathHttp = @"/";
|
||||||
if (!Utils.IsNullOrEmpty(node.path))
|
if (!Utils.IsNullOrEmpty(node.path))
|
||||||
{
|
{
|
||||||
|
@ -808,12 +759,6 @@ namespace v2rayN.Handler
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// remoteDNS
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="config"></param>
|
|
||||||
/// <param name="v2rayConfig"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
private static int dns(Config config, ref V2rayConfig v2rayConfig)
|
private static int dns(Config config, ref V2rayConfig v2rayConfig)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -912,17 +857,16 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 生成v2ray的客户端配置文件(自定义配置)
|
/// Generate custom configuration
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="node"></param>
|
/// <param name="node"></param>
|
||||||
/// <param name="fileName"></param>
|
/// <param name="fileName"></param>
|
||||||
/// <param name="msg"></param>
|
/// <param name="msg"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private static int GenerateClientCustomConfig(VmessItem node, string fileName, out string msg)
|
private static int GenerateClientCustomConfig(ProfileItem node, string fileName, out string msg)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
//检查GUI设置
|
|
||||||
if (node == null)
|
if (node == null)
|
||||||
{
|
{
|
||||||
msg = ResUI.CheckServerSettings;
|
msg = ResUI.CheckServerSettings;
|
||||||
|
@ -979,14 +923,13 @@ namespace v2rayN.Handler
|
||||||
fileContent.RemoveAt(indexPort);
|
fileContent.RemoveAt(indexPort);
|
||||||
}
|
}
|
||||||
|
|
||||||
fileContent.Add($"port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp)}");
|
fileContent.Add($"port: {LazyConfig.Instance.GetLocalPort(Global.InboundHttp)}");
|
||||||
fileContent.Add($"socks-port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundSocks)}");
|
fileContent.Add($"socks-port: {LazyConfig.Instance.GetLocalPort(Global.InboundSocks)}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
File.WriteAllLines(fileName, fileContent);
|
File.WriteAllLines(fileName, fileContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
//msg = string.Format(ResUI.SuccessfulConfiguration, $"[{LazyConfig.Instance.GetConfig().GetGroupRemarks(node.groupId)}] {node.GetSummary()}");
|
|
||||||
msg = string.Format(ResUI.SuccessfulConfiguration, "");
|
msg = string.Format(ResUI.SuccessfulConfiguration, "");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -998,7 +941,7 @@ namespace v2rayN.Handler
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int GenerateClientConfigContent(VmessItem node, bool blExport, ref V2rayConfig v2rayConfig, out string msg)
|
public static int GenerateClientConfigContent(ProfileItem node, bool blExport, ref V2rayConfig v2rayConfig, out string msg)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -1010,7 +953,6 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
msg = ResUI.InitialConfiguration;
|
msg = ResUI.InitialConfiguration;
|
||||||
|
|
||||||
//取得默认配置
|
|
||||||
string result = Utils.GetEmbedText(SampleClient);
|
string result = Utils.GetEmbedText(SampleClient);
|
||||||
if (Utils.IsNullOrEmpty(result))
|
if (Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
|
@ -1018,7 +960,6 @@ namespace v2rayN.Handler
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//转成Json
|
|
||||||
v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
||||||
if (v2rayConfig == null)
|
if (v2rayConfig == null)
|
||||||
{
|
{
|
||||||
|
@ -1028,13 +969,10 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
var config = LazyConfig.Instance.GetConfig();
|
var config = LazyConfig.Instance.GetConfig();
|
||||||
|
|
||||||
//开始修改配置
|
|
||||||
log(config, ref v2rayConfig, blExport);
|
log(config, ref v2rayConfig, blExport);
|
||||||
|
|
||||||
//本地端口
|
|
||||||
inbound(config, ref v2rayConfig);
|
inbound(config, ref v2rayConfig);
|
||||||
|
|
||||||
//路由
|
|
||||||
routing(config, ref v2rayConfig);
|
routing(config, ref v2rayConfig);
|
||||||
|
|
||||||
//outbound
|
//outbound
|
||||||
|
@ -1046,7 +984,6 @@ namespace v2rayN.Handler
|
||||||
//stat
|
//stat
|
||||||
statistic(config, ref v2rayConfig);
|
statistic(config, ref v2rayConfig);
|
||||||
|
|
||||||
//msg = string.Format(ResUI.SuccessfulConfiguration, $"[{config.GetGroupRemarks(node.groupId)}] {node.GetSummary()}");
|
|
||||||
msg = string.Format(ResUI.SuccessfulConfiguration, "");
|
msg = string.Format(ResUI.SuccessfulConfiguration, "");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -1060,20 +997,12 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 生成服务端端配置
|
#region Generate server-side configuration
|
||||||
|
|
||||||
/// <summary>
|
public static int GenerateServerConfig(ProfileItem node, string fileName, out string msg)
|
||||||
/// 生成v2ray的客户端配置文件
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="node"></param>
|
|
||||||
/// <param name="fileName"></param>
|
|
||||||
/// <param name="msg"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static int GenerateServerConfig(VmessItem node, string fileName, out string msg)
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
//检查GUI设置
|
|
||||||
if (node == null)
|
if (node == null)
|
||||||
{
|
{
|
||||||
msg = ResUI.CheckServerSettings;
|
msg = ResUI.CheckServerSettings;
|
||||||
|
@ -1082,7 +1011,6 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
msg = ResUI.InitialConfiguration;
|
msg = ResUI.InitialConfiguration;
|
||||||
|
|
||||||
//取得默认配置
|
|
||||||
string result = Utils.GetEmbedText(SampleServer);
|
string result = Utils.GetEmbedText(SampleServer);
|
||||||
if (Utils.IsNullOrEmpty(result))
|
if (Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
|
@ -1090,7 +1018,6 @@ namespace v2rayN.Handler
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//转成Json
|
|
||||||
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
||||||
if (v2rayConfig == null)
|
if (v2rayConfig == null)
|
||||||
{
|
{
|
||||||
|
@ -1100,13 +1027,10 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
var config = LazyConfig.Instance.GetConfig();
|
var config = LazyConfig.Instance.GetConfig();
|
||||||
|
|
||||||
////开始修改配置
|
|
||||||
log(config, ref v2rayConfig, true);
|
log(config, ref v2rayConfig, true);
|
||||||
|
|
||||||
//vmess协议服务器配置
|
|
||||||
ServerInbound(node, ref v2rayConfig);
|
ServerInbound(node, ref v2rayConfig);
|
||||||
|
|
||||||
//传出设置
|
|
||||||
ServerOutbound(config, ref v2rayConfig);
|
ServerOutbound(config, ref v2rayConfig);
|
||||||
|
|
||||||
Utils.ToJsonFile(v2rayConfig, fileName, false);
|
Utils.ToJsonFile(v2rayConfig, fileName, false);
|
||||||
|
@ -1122,13 +1046,7 @@ namespace v2rayN.Handler
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
private static int ServerInbound(ProfileItem node, ref V2rayConfig v2rayConfig)
|
||||||
/// vmess协议服务器配置
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="node"></param>
|
|
||||||
/// <param name="v2rayConfig"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
private static int ServerInbound(VmessItem node, ref V2rayConfig v2rayConfig)
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -1143,10 +1061,8 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
usersItem = inbound.settings.clients[0];
|
usersItem = inbound.settings.clients[0];
|
||||||
}
|
}
|
||||||
//远程服务器端口
|
|
||||||
inbound.port = node.port;
|
inbound.port = node.port;
|
||||||
|
|
||||||
//远程服务器用户ID
|
|
||||||
usersItem.id = node.id;
|
usersItem.id = node.id;
|
||||||
usersItem.email = Global.userEMail;
|
usersItem.email = Global.userEMail;
|
||||||
|
|
||||||
|
@ -1172,12 +1088,6 @@ namespace v2rayN.Handler
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 传出设置
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="node"></param>
|
|
||||||
/// <param name="v2rayConfig"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
private static int ServerOutbound(Config config, ref V2rayConfig v2rayConfig)
|
private static int ServerOutbound(Config config, ref V2rayConfig v2rayConfig)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -1195,22 +1105,15 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 导入(导出)客户端/服务端配置
|
#region Import (export) client/server configuration
|
||||||
|
|
||||||
/// <summary>
|
public static ProfileItem ImportFromClientConfig(string fileName, out string msg)
|
||||||
/// 导入v2ray客户端配置
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="fileName"></param>
|
|
||||||
/// <param name="msg"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static VmessItem ImportFromClientConfig(string fileName, out string msg)
|
|
||||||
{
|
{
|
||||||
msg = string.Empty;
|
msg = string.Empty;
|
||||||
VmessItem vmessItem = new VmessItem();
|
ProfileItem profileItem = new ProfileItem();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
//载入配置文件
|
|
||||||
string result = Utils.LoadResource(fileName);
|
string result = Utils.LoadResource(fileName);
|
||||||
if (Utils.IsNullOrEmpty(result))
|
if (Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
|
@ -1218,7 +1121,6 @@ namespace v2rayN.Handler
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//转成Json
|
|
||||||
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
||||||
if (v2rayConfig == null)
|
if (v2rayConfig == null)
|
||||||
{
|
{
|
||||||
|
@ -1247,24 +1149,24 @@ namespace v2rayN.Handler
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
vmessItem.security = Global.DefaultSecurity;
|
profileItem.security = Global.DefaultSecurity;
|
||||||
vmessItem.network = Global.DefaultNetwork;
|
profileItem.network = Global.DefaultNetwork;
|
||||||
vmessItem.headerType = Global.None;
|
profileItem.headerType = Global.None;
|
||||||
vmessItem.address = outbound.settings.vnext[0].address;
|
profileItem.address = outbound.settings.vnext[0].address;
|
||||||
vmessItem.port = outbound.settings.vnext[0].port;
|
profileItem.port = outbound.settings.vnext[0].port;
|
||||||
vmessItem.id = outbound.settings.vnext[0].users[0].id;
|
profileItem.id = outbound.settings.vnext[0].users[0].id;
|
||||||
vmessItem.alterId = outbound.settings.vnext[0].users[0].alterId;
|
profileItem.alterId = outbound.settings.vnext[0].users[0].alterId;
|
||||||
vmessItem.remarks = $"import@{DateTime.Now.ToShortDateString()}";
|
profileItem.remarks = $"import@{DateTime.Now.ToShortDateString()}";
|
||||||
|
|
||||||
//tcp or kcp
|
//tcp or kcp
|
||||||
if (outbound.streamSettings != null
|
if (outbound.streamSettings != null
|
||||||
&& outbound.streamSettings.network != null
|
&& outbound.streamSettings.network != null
|
||||||
&& !Utils.IsNullOrEmpty(outbound.streamSettings.network))
|
&& !Utils.IsNullOrEmpty(outbound.streamSettings.network))
|
||||||
{
|
{
|
||||||
vmessItem.network = outbound.streamSettings.network;
|
profileItem.network = outbound.streamSettings.network;
|
||||||
}
|
}
|
||||||
|
|
||||||
//tcp伪装http
|
//tcp http
|
||||||
if (outbound.streamSettings != null
|
if (outbound.streamSettings != null
|
||||||
&& outbound.streamSettings.tcpSettings != null
|
&& outbound.streamSettings.tcpSettings != null
|
||||||
&& outbound.streamSettings.tcpSettings.header != null
|
&& outbound.streamSettings.tcpSettings.header != null
|
||||||
|
@ -1272,7 +1174,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
if (outbound.streamSettings.tcpSettings.header.type.Equals(Global.TcpHeaderHttp))
|
if (outbound.streamSettings.tcpSettings.header.type.Equals(Global.TcpHeaderHttp))
|
||||||
{
|
{
|
||||||
vmessItem.headerType = outbound.streamSettings.tcpSettings.header.type;
|
profileItem.headerType = outbound.streamSettings.tcpSettings.header.type;
|
||||||
string request = Convert.ToString(outbound.streamSettings.tcpSettings.header.request);
|
string request = Convert.ToString(outbound.streamSettings.tcpSettings.header.request);
|
||||||
if (!Utils.IsNullOrEmpty(request))
|
if (!Utils.IsNullOrEmpty(request))
|
||||||
{
|
{
|
||||||
|
@ -1282,18 +1184,18 @@ namespace v2rayN.Handler
|
||||||
&& v2rayTcpRequest.headers.Host != null
|
&& v2rayTcpRequest.headers.Host != null
|
||||||
&& v2rayTcpRequest.headers.Host.Count > 0)
|
&& v2rayTcpRequest.headers.Host.Count > 0)
|
||||||
{
|
{
|
||||||
vmessItem.requestHost = v2rayTcpRequest.headers.Host[0];
|
profileItem.requestHost = v2rayTcpRequest.headers.Host[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//kcp伪装
|
//kcp
|
||||||
if (outbound.streamSettings != null
|
if (outbound.streamSettings != null
|
||||||
&& outbound.streamSettings.kcpSettings != null
|
&& outbound.streamSettings.kcpSettings != null
|
||||||
&& outbound.streamSettings.kcpSettings.header != null
|
&& outbound.streamSettings.kcpSettings.header != null
|
||||||
&& !Utils.IsNullOrEmpty(outbound.streamSettings.kcpSettings.header.type))
|
&& !Utils.IsNullOrEmpty(outbound.streamSettings.kcpSettings.header.type))
|
||||||
{
|
{
|
||||||
vmessItem.headerType = outbound.streamSettings.kcpSettings.header.type;
|
profileItem.headerType = outbound.streamSettings.kcpSettings.header.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
//ws
|
//ws
|
||||||
|
@ -1302,12 +1204,12 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
if (!Utils.IsNullOrEmpty(outbound.streamSettings.wsSettings.path))
|
if (!Utils.IsNullOrEmpty(outbound.streamSettings.wsSettings.path))
|
||||||
{
|
{
|
||||||
vmessItem.path = outbound.streamSettings.wsSettings.path;
|
profileItem.path = outbound.streamSettings.wsSettings.path;
|
||||||
}
|
}
|
||||||
if (outbound.streamSettings.wsSettings.headers != null
|
if (outbound.streamSettings.wsSettings.headers != null
|
||||||
&& !Utils.IsNullOrEmpty(outbound.streamSettings.wsSettings.headers.Host))
|
&& !Utils.IsNullOrEmpty(outbound.streamSettings.wsSettings.headers.Host))
|
||||||
{
|
{
|
||||||
vmessItem.requestHost = outbound.streamSettings.wsSettings.headers.Host;
|
profileItem.requestHost = outbound.streamSettings.wsSettings.headers.Host;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1317,12 +1219,12 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
if (!Utils.IsNullOrEmpty(outbound.streamSettings.httpSettings.path))
|
if (!Utils.IsNullOrEmpty(outbound.streamSettings.httpSettings.path))
|
||||||
{
|
{
|
||||||
vmessItem.path = outbound.streamSettings.httpSettings.path;
|
profileItem.path = outbound.streamSettings.httpSettings.path;
|
||||||
}
|
}
|
||||||
if (outbound.streamSettings.httpSettings.host != null
|
if (outbound.streamSettings.httpSettings.host != null
|
||||||
&& outbound.streamSettings.httpSettings.host.Count > 0)
|
&& outbound.streamSettings.httpSettings.host.Count > 0)
|
||||||
{
|
{
|
||||||
vmessItem.requestHost = Utils.List2String(outbound.streamSettings.httpSettings.host);
|
profileItem.requestHost = Utils.List2String(outbound.streamSettings.httpSettings.host);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1331,7 +1233,7 @@ namespace v2rayN.Handler
|
||||||
&& outbound.streamSettings.security != null
|
&& outbound.streamSettings.security != null
|
||||||
&& outbound.streamSettings.security == Global.StreamSecurity)
|
&& outbound.streamSettings.security == Global.StreamSecurity)
|
||||||
{
|
{
|
||||||
vmessItem.streamSecurity = Global.StreamSecurity;
|
profileItem.streamSecurity = Global.StreamSecurity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -1341,23 +1243,16 @@ namespace v2rayN.Handler
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return vmessItem;
|
return profileItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
public static ProfileItem ImportFromServerConfig(string fileName, out string msg)
|
||||||
/// 导入v2ray服务端配置
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="fileName"></param>
|
|
||||||
/// <param name="msg"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static VmessItem ImportFromServerConfig(string fileName, out string msg)
|
|
||||||
{
|
{
|
||||||
msg = string.Empty;
|
msg = string.Empty;
|
||||||
VmessItem vmessItem = new VmessItem();
|
ProfileItem profileItem = new ProfileItem();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
//载入配置文件
|
|
||||||
string result = Utils.LoadResource(fileName);
|
string result = Utils.LoadResource(fileName);
|
||||||
if (Utils.IsNullOrEmpty(result))
|
if (Utils.IsNullOrEmpty(result))
|
||||||
{
|
{
|
||||||
|
@ -1365,7 +1260,6 @@ namespace v2rayN.Handler
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//转成Json
|
|
||||||
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
V2rayConfig v2rayConfig = Utils.FromJson<V2rayConfig>(result);
|
||||||
if (v2rayConfig == null)
|
if (v2rayConfig == null)
|
||||||
{
|
{
|
||||||
|
@ -1392,25 +1286,25 @@ namespace v2rayN.Handler
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
vmessItem.security = Global.DefaultSecurity;
|
profileItem.security = Global.DefaultSecurity;
|
||||||
vmessItem.network = Global.DefaultNetwork;
|
profileItem.network = Global.DefaultNetwork;
|
||||||
vmessItem.headerType = Global.None;
|
profileItem.headerType = Global.None;
|
||||||
vmessItem.address = string.Empty;
|
profileItem.address = string.Empty;
|
||||||
vmessItem.port = inbound.port;
|
profileItem.port = inbound.port;
|
||||||
vmessItem.id = inbound.settings.clients[0].id;
|
profileItem.id = inbound.settings.clients[0].id;
|
||||||
vmessItem.alterId = inbound.settings.clients[0].alterId;
|
profileItem.alterId = inbound.settings.clients[0].alterId;
|
||||||
|
|
||||||
vmessItem.remarks = $"import@{DateTime.Now.ToShortDateString()}";
|
profileItem.remarks = $"import@{DateTime.Now.ToShortDateString()}";
|
||||||
|
|
||||||
//tcp or kcp
|
//tcp or kcp
|
||||||
if (inbound.streamSettings != null
|
if (inbound.streamSettings != null
|
||||||
&& inbound.streamSettings.network != null
|
&& inbound.streamSettings.network != null
|
||||||
&& !Utils.IsNullOrEmpty(inbound.streamSettings.network))
|
&& !Utils.IsNullOrEmpty(inbound.streamSettings.network))
|
||||||
{
|
{
|
||||||
vmessItem.network = inbound.streamSettings.network;
|
profileItem.network = inbound.streamSettings.network;
|
||||||
}
|
}
|
||||||
|
|
||||||
//tcp伪装http
|
//tcp http
|
||||||
if (inbound.streamSettings != null
|
if (inbound.streamSettings != null
|
||||||
&& inbound.streamSettings.tcpSettings != null
|
&& inbound.streamSettings.tcpSettings != null
|
||||||
&& inbound.streamSettings.tcpSettings.header != null
|
&& inbound.streamSettings.tcpSettings.header != null
|
||||||
|
@ -1418,7 +1312,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
if (inbound.streamSettings.tcpSettings.header.type.Equals(Global.TcpHeaderHttp))
|
if (inbound.streamSettings.tcpSettings.header.type.Equals(Global.TcpHeaderHttp))
|
||||||
{
|
{
|
||||||
vmessItem.headerType = inbound.streamSettings.tcpSettings.header.type;
|
profileItem.headerType = inbound.streamSettings.tcpSettings.header.type;
|
||||||
string request = Convert.ToString(inbound.streamSettings.tcpSettings.header.request);
|
string request = Convert.ToString(inbound.streamSettings.tcpSettings.header.request);
|
||||||
if (!Utils.IsNullOrEmpty(request))
|
if (!Utils.IsNullOrEmpty(request))
|
||||||
{
|
{
|
||||||
|
@ -1428,12 +1322,12 @@ namespace v2rayN.Handler
|
||||||
&& v2rayTcpRequest.headers.Host != null
|
&& v2rayTcpRequest.headers.Host != null
|
||||||
&& v2rayTcpRequest.headers.Host.Count > 0)
|
&& v2rayTcpRequest.headers.Host.Count > 0)
|
||||||
{
|
{
|
||||||
vmessItem.requestHost = v2rayTcpRequest.headers.Host[0];
|
profileItem.requestHost = v2rayTcpRequest.headers.Host[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//kcp伪装
|
//kcp
|
||||||
//if (v2rayConfig.outbound.streamSettings != null
|
//if (v2rayConfig.outbound.streamSettings != null
|
||||||
// && v2rayConfig.outbound.streamSettings.kcpSettings != null
|
// && v2rayConfig.outbound.streamSettings.kcpSettings != null
|
||||||
// && v2rayConfig.outbound.streamSettings.kcpSettings.header != null
|
// && v2rayConfig.outbound.streamSettings.kcpSettings.header != null
|
||||||
|
@ -1448,12 +1342,12 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
if (!Utils.IsNullOrEmpty(inbound.streamSettings.wsSettings.path))
|
if (!Utils.IsNullOrEmpty(inbound.streamSettings.wsSettings.path))
|
||||||
{
|
{
|
||||||
vmessItem.path = inbound.streamSettings.wsSettings.path;
|
profileItem.path = inbound.streamSettings.wsSettings.path;
|
||||||
}
|
}
|
||||||
if (inbound.streamSettings.wsSettings.headers != null
|
if (inbound.streamSettings.wsSettings.headers != null
|
||||||
&& !Utils.IsNullOrEmpty(inbound.streamSettings.wsSettings.headers.Host))
|
&& !Utils.IsNullOrEmpty(inbound.streamSettings.wsSettings.headers.Host))
|
||||||
{
|
{
|
||||||
vmessItem.requestHost = inbound.streamSettings.wsSettings.headers.Host;
|
profileItem.requestHost = inbound.streamSettings.wsSettings.headers.Host;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1463,12 +1357,12 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
if (!Utils.IsNullOrEmpty(inbound.streamSettings.httpSettings.path))
|
if (!Utils.IsNullOrEmpty(inbound.streamSettings.httpSettings.path))
|
||||||
{
|
{
|
||||||
vmessItem.path = inbound.streamSettings.httpSettings.path;
|
profileItem.path = inbound.streamSettings.httpSettings.path;
|
||||||
}
|
}
|
||||||
if (inbound.streamSettings.httpSettings.host != null
|
if (inbound.streamSettings.httpSettings.host != null
|
||||||
&& inbound.streamSettings.httpSettings.host.Count > 0)
|
&& inbound.streamSettings.httpSettings.host.Count > 0)
|
||||||
{
|
{
|
||||||
vmessItem.requestHost = Utils.List2String(inbound.streamSettings.httpSettings.host);
|
profileItem.requestHost = Utils.List2String(inbound.streamSettings.httpSettings.host);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1477,7 +1371,7 @@ namespace v2rayN.Handler
|
||||||
&& inbound.streamSettings.security != null
|
&& inbound.streamSettings.security != null
|
||||||
&& inbound.streamSettings.security == Global.StreamSecurity)
|
&& inbound.streamSettings.security == Global.StreamSecurity)
|
||||||
{
|
{
|
||||||
vmessItem.streamSecurity = Global.StreamSecurity;
|
profileItem.streamSecurity = Global.StreamSecurity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -1486,17 +1380,10 @@ namespace v2rayN.Handler
|
||||||
msg = ResUI.IncorrectClientConfiguration;
|
msg = ResUI.IncorrectClientConfiguration;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return vmessItem;
|
return profileItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
public static int Export2ClientConfig(ProfileItem node, string fileName, out string msg)
|
||||||
/// 导出为客户端配置
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="node"></param>
|
|
||||||
/// <param name="fileName"></param>
|
|
||||||
/// <param name="msg"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static int Export2ClientConfig(VmessItem node, string fileName, out string msg)
|
|
||||||
{
|
{
|
||||||
V2rayConfig v2rayConfig = null;
|
V2rayConfig v2rayConfig = null;
|
||||||
if (GenerateClientConfigContent(node, true, ref v2rayConfig, out msg) != 0)
|
if (GenerateClientConfigContent(node, true, ref v2rayConfig, out msg) != 0)
|
||||||
|
@ -1506,14 +1393,7 @@ namespace v2rayN.Handler
|
||||||
return Utils.ToJsonFile(v2rayConfig, fileName, false);
|
return Utils.ToJsonFile(v2rayConfig, fileName, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
public static int Export2ServerConfig(ProfileItem node, string fileName, out string msg)
|
||||||
/// 导出为服务端配置
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="node"></param>
|
|
||||||
/// <param name="fileName"></param>
|
|
||||||
/// <param name="msg"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static int Export2ServerConfig(VmessItem node, string fileName, out string msg)
|
|
||||||
{
|
{
|
||||||
return GenerateServerConfig(node, fileName, out msg);
|
return GenerateServerConfig(node, fileName, out msg);
|
||||||
}
|
}
|
||||||
|
@ -1565,11 +1445,11 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
log(configCopy, ref v2rayConfig, false);
|
log(configCopy, ref v2rayConfig, false);
|
||||||
//routing(config, ref v2rayConfig);
|
//routing(config, ref v2rayConfig);
|
||||||
dns(configCopy, ref v2rayConfig);
|
//dns(configCopy, ref v2rayConfig);
|
||||||
|
|
||||||
v2rayConfig.inbounds.Clear(); // Remove "proxy" service for speedtest, avoiding port conflicts.
|
v2rayConfig.inbounds.Clear(); // Remove "proxy" service for speedtest, avoiding port conflicts.
|
||||||
|
|
||||||
int httpPort = configCopy.GetLocalPort("speedtest");
|
int httpPort = LazyConfig.Instance.GetLocalPort("speedtest");
|
||||||
|
|
||||||
foreach (var it in selecteds)
|
foreach (var it in selecteds)
|
||||||
{
|
{
|
||||||
|
@ -1583,7 +1463,8 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
if (it.configType == EConfigType.VMess || it.configType == EConfigType.VLESS)
|
if (it.configType == EConfigType.VMess || it.configType == EConfigType.VLESS)
|
||||||
{
|
{
|
||||||
if (!Utils.IsGuidByParse(configCopy.GetVmessItem(it.indexId).id))
|
var item2 = LazyConfig.Instance.GetProfileItem(config.indexId);
|
||||||
|
if (item2 is null || !Utils.IsGuidByParse(item2.id))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -1591,7 +1472,7 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
//find unuse port
|
//find unuse port
|
||||||
var port = httpPort;
|
var port = httpPort;
|
||||||
for (int k = httpPort; k < 65536; k++)
|
for (int k = httpPort; k < Global.MaxPort; k++)
|
||||||
{
|
{
|
||||||
if (lstIpEndPoints != null && lstIpEndPoints.FindIndex(_it => _it.Port == k) >= 0)
|
if (lstIpEndPoints != null && lstIpEndPoints.FindIndex(_it => _it.Port == k) >= 0)
|
||||||
{
|
{
|
||||||
|
@ -1615,6 +1496,7 @@ namespace v2rayN.Handler
|
||||||
it.port = port;
|
it.port = port;
|
||||||
it.allowTest = true;
|
it.allowTest = true;
|
||||||
|
|
||||||
|
//inbound
|
||||||
Inbounds inbound = new Inbounds
|
Inbounds inbound = new Inbounds
|
||||||
{
|
{
|
||||||
listen = Global.Loopback,
|
listen = Global.Loopback,
|
||||||
|
@ -1624,11 +1506,24 @@ namespace v2rayN.Handler
|
||||||
inbound.tag = Global.InboundHttp + inbound.port.ToString();
|
inbound.tag = Global.InboundHttp + inbound.port.ToString();
|
||||||
v2rayConfig.inbounds.Add(inbound);
|
v2rayConfig.inbounds.Add(inbound);
|
||||||
|
|
||||||
|
//outbound
|
||||||
V2rayConfig v2rayConfigCopy = Utils.FromJson<V2rayConfig>(result);
|
V2rayConfig v2rayConfigCopy = Utils.FromJson<V2rayConfig>(result);
|
||||||
outbound(configCopy.GetVmessItem(it.indexId), ref v2rayConfigCopy);
|
var item = LazyConfig.Instance.GetProfileItem(it.indexId);
|
||||||
|
if (item is null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (item.configType == EConfigType.Shadowsocks
|
||||||
|
&& !Global.ssSecuritysInXray.Contains(item.security))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
outbound(item, ref v2rayConfigCopy);
|
||||||
v2rayConfigCopy.outbounds[0].tag = Global.agentTag + inbound.port.ToString();
|
v2rayConfigCopy.outbounds[0].tag = Global.agentTag + inbound.port.ToString();
|
||||||
v2rayConfig.outbounds.Add(v2rayConfigCopy.outbounds[0]);
|
v2rayConfig.outbounds.Add(v2rayConfigCopy.outbounds[0]);
|
||||||
|
|
||||||
|
//rule
|
||||||
RulesItem rule = new RulesItem
|
RulesItem rule = new RulesItem
|
||||||
{
|
{
|
||||||
inboundTag = new List<string> { inbound.tag },
|
inboundTag = new List<string> { inbound.tag },
|
|
@ -1,6 +1,4 @@
|
||||||
using System;
|
using System.Diagnostics;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
@ -8,85 +6,72 @@ using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 消息委托
|
/// Core process processing class
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="notify">是否显示在托盘区</param>
|
class CoreHandler
|
||||||
/// <param name="msg">内容</param>
|
|
||||||
public delegate void ProcessDelegate(bool notify, string msg);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// v2ray进程处理类
|
|
||||||
/// </summary>
|
|
||||||
class V2rayHandler
|
|
||||||
{
|
{
|
||||||
private static string v2rayConfigRes = Global.v2rayConfigFileName;
|
private static string coreCConfigRes = Global.coreConfigFileName;
|
||||||
private CoreInfo coreInfo;
|
private CoreInfo coreInfo;
|
||||||
public event ProcessDelegate ProcessEvent;
|
|
||||||
private int processId = 0;
|
private int processId = 0;
|
||||||
private Process _process;
|
private Process _process;
|
||||||
|
Action<bool, string> _updateFunc;
|
||||||
|
|
||||||
public V2rayHandler()
|
public CoreHandler(Action<bool, string> update)
|
||||||
{
|
{
|
||||||
|
_updateFunc = update;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
public void LoadCore(Config config)
|
||||||
/// 载入V2ray
|
|
||||||
/// </summary>
|
|
||||||
public void LoadV2ray(Config config)
|
|
||||||
{
|
{
|
||||||
if (Global.reloadV2ray)
|
if (Global.reloadCore)
|
||||||
{
|
{
|
||||||
var item = ConfigHandler.GetDefaultServer(ref config);
|
var node = ConfigHandler.GetDefaultServer(ref config);
|
||||||
if (item == null)
|
if (node == null)
|
||||||
{
|
{
|
||||||
ShowMsg(false, ResUI.CheckServerSettings);
|
ShowMsg(false, ResUI.CheckServerSettings);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SetCore(config, item) != 0)
|
if (SetCore(config, node) != 0)
|
||||||
{
|
{
|
||||||
ShowMsg(false, ResUI.CheckServerSettings);
|
ShowMsg(false, ResUI.CheckServerSettings);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
string fileName = Utils.GetPath(v2rayConfigRes);
|
string fileName = Utils.GetConfigPath(coreCConfigRes);
|
||||||
if (V2rayConfigHandler.GenerateClientConfig(item, fileName, out string msg, out string content) != 0)
|
if (CoreConfigHandler.GenerateClientConfig(node, fileName, out string msg, out string content) != 0)
|
||||||
{
|
{
|
||||||
ShowMsg(false, msg);
|
ShowMsg(false, msg);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ShowMsg(false, msg);
|
ShowMsg(false, msg);
|
||||||
ShowMsg(true, $"[{config.GetGroupRemarks(item.groupId)}] {item.GetSummary()}");
|
ShowMsg(true, $"{node.GetSummary()}");
|
||||||
V2rayRestart();
|
CoreStop();
|
||||||
|
CoreStart(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
//start a socks service
|
//start a socks service
|
||||||
if (_process != null && !_process.HasExited && item.configType == EConfigType.Custom && item.preSocksPort > 0)
|
if (_process != null && !_process.HasExited && node.configType == EConfigType.Custom && node.preSocksPort > 0)
|
||||||
{
|
{
|
||||||
var itemSocks = new VmessItem()
|
var itemSocks = new ProfileItem()
|
||||||
{
|
{
|
||||||
configType = EConfigType.Socks,
|
configType = EConfigType.Socks,
|
||||||
address = Global.Loopback,
|
address = Global.Loopback,
|
||||||
port = item.preSocksPort
|
port = node.preSocksPort
|
||||||
};
|
};
|
||||||
if (V2rayConfigHandler.GenerateClientConfig(itemSocks, null, out string msg2, out string configStr) == 0)
|
if (CoreConfigHandler.GenerateClientConfig(itemSocks, null, out string msg2, out string configStr) == 0)
|
||||||
{
|
{
|
||||||
processId = V2rayStartNew(configStr);
|
processId = CoreStartViaString(configStr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
public int LoadCoreConfigString(Config config, List<ServerTestItem> _selecteds)
|
||||||
/// 新建进程,载入V2ray配置文件字符串
|
|
||||||
/// 返回新进程pid。
|
|
||||||
/// </summary>
|
|
||||||
public int LoadV2rayConfigString(Config config, List<ServerTestItem> _selecteds)
|
|
||||||
{
|
{
|
||||||
int pid = -1;
|
int pid = -1;
|
||||||
string configStr = V2rayConfigHandler.GenerateClientSpeedtestConfigString(config, _selecteds, out string msg);
|
string configStr = CoreConfigHandler.GenerateClientSpeedtestConfigString(config, _selecteds, out string msg);
|
||||||
if (configStr == "")
|
if (configStr == "")
|
||||||
{
|
{
|
||||||
ShowMsg(false, msg);
|
ShowMsg(false, msg);
|
||||||
|
@ -94,26 +79,12 @@ namespace v2rayN.Handler
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ShowMsg(false, msg);
|
ShowMsg(false, msg);
|
||||||
pid = V2rayStartNew(configStr);
|
pid = CoreStartViaString(configStr);
|
||||||
//V2rayRestart();
|
|
||||||
// start with -config
|
|
||||||
}
|
}
|
||||||
return pid;
|
return pid;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
public void CoreStop()
|
||||||
/// V2ray重启
|
|
||||||
/// </summary>
|
|
||||||
private void V2rayRestart()
|
|
||||||
{
|
|
||||||
V2rayStop();
|
|
||||||
V2rayStart();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// V2ray停止
|
|
||||||
/// </summary>
|
|
||||||
public void V2rayStop()
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -135,7 +106,7 @@ namespace v2rayN.Handler
|
||||||
foreach (Process p in existing)
|
foreach (Process p in existing)
|
||||||
{
|
{
|
||||||
string path = p.MainModule.FileName;
|
string path = p.MainModule.FileName;
|
||||||
if (path == $"{Utils.GetPath(vName)}.exe")
|
if (path == $"{Utils.GetBinPath(vName, coreInfo.coreType)}.exe")
|
||||||
{
|
{
|
||||||
KillProcess(p);
|
KillProcess(p);
|
||||||
}
|
}
|
||||||
|
@ -145,7 +116,7 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
if (processId > 0)
|
if (processId > 0)
|
||||||
{
|
{
|
||||||
V2rayStopPid(processId);
|
CoreStopPid(processId);
|
||||||
processId = 0;
|
processId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,10 +126,8 @@ namespace v2rayN.Handler
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/// <summary>
|
|
||||||
/// V2ray停止
|
public void CoreStopPid(int pid)
|
||||||
/// </summary>
|
|
||||||
public void V2rayStopPid(int pid)
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -171,13 +140,13 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private string V2rayFindexe(List<string> lstCoreTemp)
|
private string CoreFindexe(List<string> lstCoreTemp)
|
||||||
{
|
{
|
||||||
string fileName = string.Empty;
|
string fileName = string.Empty;
|
||||||
foreach (string name in lstCoreTemp)
|
foreach (string name in lstCoreTemp)
|
||||||
{
|
{
|
||||||
string vName = $"{name}.exe";
|
string vName = $"{name}.exe";
|
||||||
vName = Utils.GetPath(vName);
|
vName = Utils.GetBinPath(vName, coreInfo.coreType);
|
||||||
if (File.Exists(vName))
|
if (File.Exists(vName))
|
||||||
{
|
{
|
||||||
fileName = vName;
|
fileName = vName;
|
||||||
|
@ -186,22 +155,19 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
if (Utils.IsNullOrEmpty(fileName))
|
if (Utils.IsNullOrEmpty(fileName))
|
||||||
{
|
{
|
||||||
string msg = string.Format(ResUI.NotFoundCore, string.Join(", ", lstCoreTemp.ToArray()), coreInfo.coreUrl);
|
string msg = string.Format(ResUI.NotFoundCore, Utils.GetBinPath("", coreInfo.coreType), string.Join(", ", lstCoreTemp.ToArray()), coreInfo.coreUrl);
|
||||||
ShowMsg(false, msg);
|
ShowMsg(false, msg);
|
||||||
}
|
}
|
||||||
return fileName;
|
return fileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
private void CoreStart(ProfileItem node)
|
||||||
/// V2ray启动
|
|
||||||
/// </summary>
|
|
||||||
private void V2rayStart()
|
|
||||||
{
|
{
|
||||||
ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString()));
|
ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString()));
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string fileName = V2rayFindexe(coreInfo.coreExes);
|
string fileName = CoreFindexe(coreInfo.coreExes);
|
||||||
if (fileName == "") return;
|
if (fileName == "") return;
|
||||||
|
|
||||||
Process p = new Process
|
Process p = new Process
|
||||||
|
@ -210,16 +176,16 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
FileName = fileName,
|
FileName = fileName,
|
||||||
Arguments = coreInfo.arguments,
|
Arguments = coreInfo.arguments,
|
||||||
WorkingDirectory = Utils.StartupPath(),
|
WorkingDirectory = Utils.GetConfigPath(),
|
||||||
UseShellExecute = false,
|
UseShellExecute = false,
|
||||||
RedirectStandardOutput = coreInfo.redirectInfo,
|
RedirectStandardOutput = node.displayLog,
|
||||||
RedirectStandardError = coreInfo.redirectInfo,
|
RedirectStandardError = node.displayLog,
|
||||||
CreateNoWindow = true,
|
CreateNoWindow = true,
|
||||||
StandardOutputEncoding = coreInfo.redirectInfo ? Encoding.UTF8 : null,
|
StandardOutputEncoding = node.displayLog ? Encoding.UTF8 : null,
|
||||||
StandardErrorEncoding = coreInfo.redirectInfo ? Encoding.UTF8 : null,
|
StandardErrorEncoding = node.displayLog ? Encoding.UTF8 : null,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if (coreInfo.redirectInfo)
|
if (node.displayLog)
|
||||||
{
|
{
|
||||||
p.OutputDataReceived += (sender, e) =>
|
p.OutputDataReceived += (sender, e) =>
|
||||||
{
|
{
|
||||||
|
@ -231,7 +197,7 @@ namespace v2rayN.Handler
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
p.Start();
|
p.Start();
|
||||||
if (coreInfo.redirectInfo)
|
if (node.displayLog)
|
||||||
{
|
{
|
||||||
p.BeginOutputReadLine();
|
p.BeginOutputReadLine();
|
||||||
}
|
}
|
||||||
|
@ -239,7 +205,7 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
if (p.WaitForExit(1000))
|
if (p.WaitForExit(1000))
|
||||||
{
|
{
|
||||||
throw new Exception(coreInfo.redirectInfo ? p.StandardError.ReadToEnd() : "启动进程失败并退出 (Failed to start the process and exited)");
|
throw new Exception(node.displayLog ? p.StandardError.ReadToEnd() : "启动进程失败并退出 (Failed to start the process and exited)");
|
||||||
}
|
}
|
||||||
|
|
||||||
Global.processJob.AddProcess(p.Handle);
|
Global.processJob.AddProcess(p.Handle);
|
||||||
|
@ -251,16 +217,14 @@ namespace v2rayN.Handler
|
||||||
ShowMsg(true, msg);
|
ShowMsg(true, msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/// <summary>
|
|
||||||
/// V2ray启动,新建进程,传入配置字符串
|
private int CoreStartViaString(string configStr)
|
||||||
/// </summary>
|
|
||||||
private int V2rayStartNew(string configStr)
|
|
||||||
{
|
{
|
||||||
ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString()));
|
ShowMsg(false, string.Format(ResUI.StartService, DateTime.Now.ToString()));
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string fileName = V2rayFindexe(new List<string> { "xray", "wv2ray", "v2ray" });
|
string fileName = CoreFindexe(new List<string> { "xray", "wxray", "wv2ray", "v2ray" });
|
||||||
if (fileName == "") return -1;
|
if (fileName == "") return -1;
|
||||||
|
|
||||||
Process p = new Process
|
Process p = new Process
|
||||||
|
@ -269,7 +233,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
FileName = fileName,
|
FileName = fileName,
|
||||||
Arguments = "-config stdin:",
|
Arguments = "-config stdin:",
|
||||||
WorkingDirectory = Utils.StartupPath(),
|
WorkingDirectory = Utils.GetConfigPath(),
|
||||||
UseShellExecute = false,
|
UseShellExecute = false,
|
||||||
RedirectStandardInput = true,
|
RedirectStandardInput = true,
|
||||||
RedirectStandardOutput = true,
|
RedirectStandardOutput = true,
|
||||||
|
@ -310,14 +274,9 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 消息委托
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="updateToTrayTooltip">是否更新托盘图标的工具提示</param>
|
|
||||||
/// <param name="msg">输出到日志框</param>
|
|
||||||
private void ShowMsg(bool updateToTrayTooltip, string msg)
|
private void ShowMsg(bool updateToTrayTooltip, string msg)
|
||||||
{
|
{
|
||||||
ProcessEvent?.Invoke(updateToTrayTooltip, msg);
|
_updateFunc(updateToTrayTooltip, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void KillProcess(Process p)
|
private void KillProcess(Process p)
|
||||||
|
@ -338,13 +297,13 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int SetCore(Config config, VmessItem item)
|
private int SetCore(Config config, ProfileItem node)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (node == null)
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
var coreType = LazyConfig.Instance.GetCoreType(item, item.configType);
|
var coreType = LazyConfig.Instance.GetCoreType(node, node.configType);
|
||||||
|
|
||||||
coreInfo = LazyConfig.Instance.GetCoreInfo(coreType);
|
coreInfo = LazyConfig.Instance.GetCoreInfo(coreType);
|
||||||
|
|
|
@ -1,13 +1,9 @@
|
||||||
using System;
|
using System.Diagnostics;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Net.Http.Headers;
|
using System.Net.Http.Headers;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
using System.Text;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
using v2rayN.Resx;
|
using v2rayN.Resx;
|
||||||
|
|
||||||
|
@ -35,14 +31,14 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<int> DownloadDataAsync(string url, WebProxy webProxy, int downloadTimeout)
|
public async Task<int> DownloadDataAsync(string url, WebProxy webProxy, int downloadTimeout, Action<bool, string> update)
|
||||||
{
|
{
|
||||||
|
var hasValue = false;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13);
|
Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13);
|
||||||
UpdateCompleted?.Invoke(this, new ResultEventArgs(false, ResUI.Speedtesting));
|
|
||||||
|
|
||||||
var client = new HttpClient(new WebRequestHandler()
|
var client = new HttpClient(new SocketsHttpHandler()
|
||||||
{
|
{
|
||||||
Proxy = webProxy
|
Proxy = webProxy
|
||||||
});
|
});
|
||||||
|
@ -50,10 +46,11 @@ namespace v2rayN.Handler
|
||||||
var progress = new Progress<string>();
|
var progress = new Progress<string>();
|
||||||
progress.ProgressChanged += (sender, value) =>
|
progress.ProgressChanged += (sender, value) =>
|
||||||
{
|
{
|
||||||
if (UpdateCompleted != null)
|
hasValue = true;
|
||||||
|
if (update != null)
|
||||||
{
|
{
|
||||||
string msg = $"{value} M/s".PadLeft(9, ' ');
|
string msg = $"{value}";
|
||||||
UpdateCompleted(this, new ResultEventArgs(false, msg));
|
update(false, msg);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -66,11 +63,13 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
//Utils.SaveLog(ex.Message, ex);
|
if (!hasValue)
|
||||||
Error?.Invoke(this, new ErrorEventArgs(ex));
|
|
||||||
if (ex.InnerException != null)
|
|
||||||
{
|
{
|
||||||
Error?.Invoke(this, new ErrorEventArgs(ex.InnerException));
|
update(false, ex.Message);
|
||||||
|
if (ex.InnerException != null)
|
||||||
|
{
|
||||||
|
update(false, ex.InnerException.Message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -83,7 +82,7 @@ namespace v2rayN.Handler
|
||||||
Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13);
|
Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13);
|
||||||
UpdateCompleted?.Invoke(this, new ResultEventArgs(false, ResUI.Downloading));
|
UpdateCompleted?.Invoke(this, new ResultEventArgs(false, ResUI.Downloading));
|
||||||
|
|
||||||
var client = new HttpClient(new WebRequestHandler()
|
var client = new HttpClient(new SocketsHttpHandler()
|
||||||
{
|
{
|
||||||
Proxy = GetWebProxy(blProxy)
|
Proxy = GetWebProxy(blProxy)
|
||||||
});
|
});
|
||||||
|
@ -101,7 +100,7 @@ namespace v2rayN.Handler
|
||||||
var cancellationToken = new CancellationTokenSource();
|
var cancellationToken = new CancellationTokenSource();
|
||||||
_ = HttpClientHelper.GetInstance().DownloadFileAsync(client,
|
_ = HttpClientHelper.GetInstance().DownloadFileAsync(client,
|
||||||
url,
|
url,
|
||||||
Utils.GetPath(Utils.GetDownloadFileName(url)),
|
Utils.GetTempPath(Utils.GetDownloadFileName(url)),
|
||||||
progress,
|
progress,
|
||||||
cancellationToken.Token);
|
cancellationToken.Token);
|
||||||
}
|
}
|
||||||
|
@ -109,7 +108,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
|
|
||||||
Error?.Invoke(this, new ErrorEventArgs(ex));
|
Error?.Invoke(this, new ErrorEventArgs(ex));
|
||||||
if (ex.InnerException != null)
|
if (ex.InnerException != null)
|
||||||
{
|
{
|
||||||
Error?.Invoke(this, new ErrorEventArgs(ex.InnerException));
|
Error?.Invoke(this, new ErrorEventArgs(ex.InnerException));
|
||||||
|
@ -120,7 +119,7 @@ namespace v2rayN.Handler
|
||||||
public async Task<string> UrlRedirectAsync(string url, bool blProxy)
|
public async Task<string> UrlRedirectAsync(string url, bool blProxy)
|
||||||
{
|
{
|
||||||
Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13);
|
Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13);
|
||||||
WebRequestHandler webRequestHandler = new WebRequestHandler
|
var webRequestHandler = new SocketsHttpHandler
|
||||||
{
|
{
|
||||||
AllowAutoRedirect = false,
|
AllowAutoRedirect = false,
|
||||||
Proxy = GetWebProxy(blProxy)
|
Proxy = GetWebProxy(blProxy)
|
||||||
|
@ -148,7 +147,7 @@ namespace v2rayN.Handler
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13);
|
Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13);
|
||||||
var client = new HttpClient(new WebRequestHandler()
|
var client = new HttpClient(new SocketsHttpHandler()
|
||||||
{
|
{
|
||||||
Proxy = GetWebProxy(blProxy)
|
Proxy = GetWebProxy(blProxy)
|
||||||
});
|
});
|
||||||
|
@ -190,13 +189,13 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
if (webProxy == null)
|
if (webProxy == null)
|
||||||
{
|
{
|
||||||
var httpPort = LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp);
|
var httpPort = LazyConfig.Instance.GetLocalPort(Global.InboundHttp);
|
||||||
webProxy = new WebProxy(Global.Loopback, httpPort);
|
webProxy = new WebProxy(Global.Loopback, httpPort);
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string status = GetRealPingTime(Global.SpeedPingTestUrl, webProxy, out int responseTime);
|
string status = GetRealPingTime(Global.SpeedPingTestUrl, webProxy, 10, out int responseTime);
|
||||||
bool noError = Utils.IsNullOrEmpty(status);
|
bool noError = Utils.IsNullOrEmpty(status);
|
||||||
return noError ? responseTime : -1;
|
return noError ? responseTime : -1;
|
||||||
}
|
}
|
||||||
|
@ -213,14 +212,14 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetRealPingTime(string url, WebProxy webProxy, out int responseTime)
|
public string GetRealPingTime(string url, WebProxy webProxy, int downloadTimeout, out int responseTime)
|
||||||
{
|
{
|
||||||
string msg = string.Empty;
|
string msg = string.Empty;
|
||||||
responseTime = -1;
|
responseTime = -1;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
|
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
|
||||||
myHttpWebRequest.Timeout = 30 * 1000;
|
myHttpWebRequest.Timeout = downloadTimeout * 1000;
|
||||||
myHttpWebRequest.Proxy = webProxy;
|
myHttpWebRequest.Proxy = webProxy;
|
||||||
|
|
||||||
Stopwatch timer = new Stopwatch();
|
Stopwatch timer = new Stopwatch();
|
||||||
|
@ -251,7 +250,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
var httpPort = LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp);
|
var httpPort = LazyConfig.Instance.GetLocalPort(Global.InboundHttp);
|
||||||
if (!SocketCheck(Global.Loopback, httpPort))
|
if (!SocketCheck(Global.Loopback, httpPort))
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -1,18 +1,26 @@
|
||||||
using System;
|
using v2rayN.Base;
|
||||||
using System.Collections.Generic;
|
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
public sealed class LazyConfig
|
public sealed class LazyConfig
|
||||||
{
|
{
|
||||||
private static readonly Lazy<LazyConfig> _instance = new Lazy<LazyConfig>(() => new LazyConfig());
|
private static readonly Lazy<LazyConfig> _instance = new Lazy<LazyConfig>(() => new());
|
||||||
private Config _config;
|
private Config _config;
|
||||||
private List<CoreInfo> coreInfos;
|
private List<CoreInfo> coreInfos;
|
||||||
|
|
||||||
public static LazyConfig Instance => _instance.Value;
|
public static LazyConfig Instance => _instance.Value;
|
||||||
|
|
||||||
|
public LazyConfig()
|
||||||
|
{
|
||||||
|
SqliteHelper.Instance.CreateTable<SubItem>();
|
||||||
|
SqliteHelper.Instance.CreateTable<ProfileItem>();
|
||||||
|
SqliteHelper.Instance.CreateTable<ServerStatItem>();
|
||||||
|
SqliteHelper.Instance.CreateTable<RoutingItem>();
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Config
|
||||||
|
|
||||||
public void SetConfig(ref Config config)
|
public void SetConfig(ref Config config)
|
||||||
{
|
{
|
||||||
_config = config;
|
_config = config;
|
||||||
|
@ -22,13 +30,135 @@ namespace v2rayN.Handler
|
||||||
return _config;
|
return _config;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<string> GetShadowsocksSecuritys(VmessItem vmessItem)
|
public int GetLocalPort(string protocol)
|
||||||
{
|
{
|
||||||
if (GetCoreType(vmessItem, EConfigType.Shadowsocks) == ECoreType.v2fly)
|
int localPort = _config.inbound.FirstOrDefault(t => t.protocol == Global.InboundSocks).localPort;
|
||||||
|
if (protocol == Global.InboundSocks)
|
||||||
|
{
|
||||||
|
return localPort;
|
||||||
|
}
|
||||||
|
else if (protocol == Global.InboundHttp)
|
||||||
|
{
|
||||||
|
return localPort + 1;
|
||||||
|
}
|
||||||
|
else if (protocol == Global.InboundSocks2)
|
||||||
|
{
|
||||||
|
return localPort + 2;
|
||||||
|
}
|
||||||
|
else if (protocol == Global.InboundHttp2)
|
||||||
|
{
|
||||||
|
return localPort + 3;
|
||||||
|
}
|
||||||
|
else if (protocol == ESysProxyType.Pac.ToString())
|
||||||
|
{
|
||||||
|
return localPort + 4;
|
||||||
|
}
|
||||||
|
else if (protocol == "speedtest")
|
||||||
|
{
|
||||||
|
return localPort + 103;
|
||||||
|
}
|
||||||
|
return localPort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<SubItem> SubItems()
|
||||||
|
{
|
||||||
|
return SqliteHelper.Instance.Table<SubItem>().ToList();
|
||||||
|
}
|
||||||
|
public SubItem GetSubItem(string subid)
|
||||||
|
{
|
||||||
|
return SqliteHelper.Instance.Table<SubItem>().FirstOrDefault(t => t.id == subid);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ProfileItem> ProfileItems(string subid)
|
||||||
|
{
|
||||||
|
if (Utils.IsNullOrEmpty(subid))
|
||||||
|
{
|
||||||
|
return SqliteHelper.Instance.Table<ProfileItem>().ToList();
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return SqliteHelper.Instance.Table<ProfileItem>().Where(t => t.subid == subid).ToList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ProfileItemModel> ProfileItems(string subid, string filter)
|
||||||
|
{
|
||||||
|
var sql = @$"select a.*
|
||||||
|
,b.remarks subRemarks
|
||||||
|
,case when a.indexId = '{_config.indexId}' then true else false end isActive
|
||||||
|
from ProfileItem a
|
||||||
|
left join SubItem b on a.subid = b.id
|
||||||
|
where 1=1 ";
|
||||||
|
if (!Utils.IsNullOrEmpty(subid))
|
||||||
|
{
|
||||||
|
sql += $" and a.subid = {subid}";
|
||||||
|
}
|
||||||
|
if (!Utils.IsNullOrEmpty(filter))
|
||||||
|
{
|
||||||
|
sql += $" and a.remarks like '%{filter}%'";
|
||||||
|
}
|
||||||
|
sql += " order by a.sort";
|
||||||
|
|
||||||
|
return SqliteHelper.Instance.Query<ProfileItemModel>(sql).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProfileItem GetProfileItem(string indexId)
|
||||||
|
{
|
||||||
|
if (Utils.IsNullOrEmpty(indexId))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return SqliteHelper.Instance.Table<ProfileItem>().FirstOrDefault(it => it.indexId == indexId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task SetTestResult(string indexId, string delayVal, string speedVal)
|
||||||
|
{
|
||||||
|
string sql = string.Empty;
|
||||||
|
if (!Utils.IsNullOrEmpty(delayVal) && !Utils.IsNullOrEmpty(speedVal))
|
||||||
|
{
|
||||||
|
int.TryParse(delayVal, out int delay);
|
||||||
|
decimal.TryParse(speedVal, out decimal speed);
|
||||||
|
sql = $"update ProfileItem set delay={delay},speed={speed} where indexId = '{indexId}'";
|
||||||
|
}
|
||||||
|
else if (!Utils.IsNullOrEmpty(delayVal))
|
||||||
|
{
|
||||||
|
int.TryParse(delayVal, out int delay);
|
||||||
|
sql = $"update ProfileItem set delay={delay} where indexId = '{indexId}'";
|
||||||
|
}
|
||||||
|
else if (!Utils.IsNullOrEmpty(speedVal))
|
||||||
|
{
|
||||||
|
decimal.TryParse(speedVal, out decimal speed);
|
||||||
|
sql = $"update ProfileItem set speed={speed} where indexId = '{indexId}'";
|
||||||
|
}
|
||||||
|
return SqliteHelper.Instance.ExecuteAsync(sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ServerStatItem> ServerStatItems()
|
||||||
|
{
|
||||||
|
return SqliteHelper.Instance.Table<ServerStatItem>().ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<RoutingItem> RoutingItems()
|
||||||
|
{
|
||||||
|
return SqliteHelper.Instance.Table<RoutingItem>().Where(it => it.locked == false).ToList();
|
||||||
|
}
|
||||||
|
public RoutingItem GetRoutingItem(string id)
|
||||||
|
{
|
||||||
|
return SqliteHelper.Instance.Table<RoutingItem>().FirstOrDefault(it => it.locked == false && it.id == id);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Core Type
|
||||||
|
|
||||||
|
public List<string> GetShadowsocksSecuritys(ProfileItem profileItem)
|
||||||
|
{
|
||||||
|
if (GetCoreType(profileItem, EConfigType.Shadowsocks) == ECoreType.v2fly)
|
||||||
{
|
{
|
||||||
return Global.ssSecuritys;
|
return Global.ssSecuritys;
|
||||||
}
|
}
|
||||||
if (GetCoreType(vmessItem, EConfigType.Shadowsocks) == ECoreType.Xray)
|
if (GetCoreType(profileItem, EConfigType.Shadowsocks) == ECoreType.Xray)
|
||||||
{
|
{
|
||||||
return Global.ssSecuritysInXray;
|
return Global.ssSecuritysInXray;
|
||||||
}
|
}
|
||||||
|
@ -36,11 +166,11 @@ namespace v2rayN.Handler
|
||||||
return Global.ssSecuritysInSagerNet;
|
return Global.ssSecuritysInSagerNet;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ECoreType GetCoreType(VmessItem vmessItem, EConfigType eConfigType)
|
public ECoreType GetCoreType(ProfileItem profileItem, EConfigType eConfigType)
|
||||||
{
|
{
|
||||||
if (vmessItem != null && vmessItem.coreType != null)
|
if (profileItem != null && profileItem.coreType != null)
|
||||||
{
|
{
|
||||||
return (ECoreType)vmessItem.coreType;
|
return (ECoreType)profileItem.coreType;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_config.coreTypeItem == null)
|
if (_config.coreTypeItem == null)
|
||||||
|
@ -64,6 +194,15 @@ namespace v2rayN.Handler
|
||||||
return coreInfos.Where(t => t.coreType == coreType).FirstOrDefault();
|
return coreInfos.Where(t => t.coreType == coreType).FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<CoreInfo> GetCoreInfos()
|
||||||
|
{
|
||||||
|
if (coreInfos == null)
|
||||||
|
{
|
||||||
|
InitCoreInfo();
|
||||||
|
}
|
||||||
|
return coreInfos;
|
||||||
|
}
|
||||||
|
|
||||||
private void InitCoreInfo()
|
private void InitCoreInfo()
|
||||||
{
|
{
|
||||||
coreInfos = new List<CoreInfo>();
|
coreInfos = new List<CoreInfo>();
|
||||||
|
@ -122,7 +261,7 @@ namespace v2rayN.Handler
|
||||||
coreInfos.Add(new CoreInfo
|
coreInfos.Add(new CoreInfo
|
||||||
{
|
{
|
||||||
coreType = ECoreType.Xray,
|
coreType = ECoreType.Xray,
|
||||||
coreExes = new List<string> { "xray" },
|
coreExes = new List<string> { "xray", "wxray" },
|
||||||
arguments = "",
|
arguments = "",
|
||||||
coreUrl = Global.xrayCoreUrl,
|
coreUrl = Global.xrayCoreUrl,
|
||||||
coreReleaseApiUrl = Global.xrayCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"),
|
coreReleaseApiUrl = Global.xrayCoreUrl.Replace(@"https://github.com", @"https://api.github.com/repos"),
|
||||||
|
@ -201,5 +340,6 @@ namespace v2rayN.Handler
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,11 @@
|
||||||
using NHotkey;
|
using NHotkey;
|
||||||
using NHotkey.WindowsForms;
|
using NHotkey.Wpf;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
using System.Linq;
|
|
||||||
using v2rayN.Resx;
|
using v2rayN.Resx;
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
|
@ -26,7 +23,7 @@ namespace v2rayN.Handler
|
||||||
//Action<int, string> _updateFunc;
|
//Action<int, string> _updateFunc;
|
||||||
public static MainFormHandler Instance => instance.Value;
|
public static MainFormHandler Instance => instance.Value;
|
||||||
|
|
||||||
public Icon GetNotifyIcon(Config config, Icon def)
|
public Icon GetNotifyIcon(Config config)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -53,6 +50,8 @@ namespace v2rayN.Handler
|
||||||
return Properties.Resources.NotifyIcon2;
|
return Properties.Resources.NotifyIcon2;
|
||||||
case 2:
|
case 2:
|
||||||
return Properties.Resources.NotifyIcon3;
|
return Properties.Resources.NotifyIcon3;
|
||||||
|
case 3:
|
||||||
|
return Properties.Resources.NotifyIcon2;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Properties.Resources.NotifyIcon1;
|
return Properties.Resources.NotifyIcon1;
|
||||||
|
@ -60,9 +59,29 @@ namespace v2rayN.Handler
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
Utils.SaveLog(ex.Message, ex);
|
||||||
return def;
|
return Properties.Resources.NotifyIcon1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public System.Windows.Media.ImageSource GetAppIcon(Config config)
|
||||||
|
{
|
||||||
|
int index = 1;
|
||||||
|
switch ((int)config.sysProxyType)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
index = 1;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
case 3:
|
||||||
|
index = 2;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
index = 3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return BitmapFrame.Create(new Uri($"pack://application:,,,/Resources/NotifyIcon{index}.ico", UriKind.RelativeOrAbsolute));
|
||||||
|
}
|
||||||
|
|
||||||
private Icon GetNotifyIcon4Routing(Config config)
|
private Icon GetNotifyIcon4Routing(Config config)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -72,8 +91,8 @@ namespace v2rayN.Handler
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var item = config.routings[config.routingIndex];
|
var item = ConfigHandler.GetDefaultRouting(ref config);
|
||||||
if (Utils.IsNullOrEmpty(item.customIcon) || !File.Exists(item.customIcon))
|
if (item == null || Utils.IsNullOrEmpty(item.customIcon) || !File.Exists(item.customIcon))
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -112,7 +131,7 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Export2ClientConfig(VmessItem item, Config config)
|
public void Export2ClientConfig(ProfileItem item, Config config)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
{
|
{
|
||||||
|
@ -141,7 +160,7 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
//Config configCopy = Utils.DeepCopy(config);
|
//Config configCopy = Utils.DeepCopy(config);
|
||||||
//configCopy.index = index;
|
//configCopy.index = index;
|
||||||
if (V2rayConfigHandler.Export2ClientConfig(item, fileName, out string msg) != 0)
|
if (CoreConfigHandler.Export2ClientConfig(item, fileName, out string msg) != 0)
|
||||||
{
|
{
|
||||||
UI.Show(msg);
|
UI.Show(msg);
|
||||||
}
|
}
|
||||||
|
@ -151,7 +170,7 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Export2ServerConfig(VmessItem item, Config config)
|
public void Export2ServerConfig(ProfileItem item, Config config)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
{
|
{
|
||||||
|
@ -181,7 +200,7 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
//Config configCopy = Utils.DeepCopy(config);
|
//Config configCopy = Utils.DeepCopy(config);
|
||||||
//configCopy.index = index;
|
//configCopy.index = index;
|
||||||
if (V2rayConfigHandler.Export2ServerConfig(item, fileName, out string msg) != 0)
|
if (CoreConfigHandler.Export2ServerConfig(item, fileName, out string msg) != 0)
|
||||||
{
|
{
|
||||||
UI.Show(msg);
|
UI.Show(msg);
|
||||||
}
|
}
|
||||||
|
@ -344,29 +363,30 @@ namespace v2rayN.Handler
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
Keys keys = (Keys)item.KeyCode;
|
var modifiers = ModifierKeys.None;
|
||||||
if (item.Control)
|
if (item.Control)
|
||||||
{
|
{
|
||||||
keys |= Keys.Control;
|
modifiers |= ModifierKeys.Control;
|
||||||
}
|
}
|
||||||
if (item.Alt)
|
if (item.Alt)
|
||||||
{
|
{
|
||||||
keys |= Keys.Alt;
|
modifiers |= ModifierKeys.Alt;
|
||||||
}
|
}
|
||||||
if (item.Shift)
|
if (item.Shift)
|
||||||
{
|
{
|
||||||
keys |= Keys.Shift;
|
modifiers |= ModifierKeys.Shift;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var gesture = new KeyGesture(KeyInterop.KeyFromVirtualKey((int)item.KeyCode), modifiers);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
HotkeyManager.Current.AddOrReplace(((int)item.eGlobalHotkey).ToString(), keys, handler);
|
HotkeyManager.Current.AddOrReplace(((int)item.eGlobalHotkey).ToString(), gesture, handler);
|
||||||
var msg = string.Format(ResUI.RegisterGlobalHotkeySuccessfully, $"{item.eGlobalHotkey.ToString()} = {keys}");
|
var msg = string.Format(ResUI.RegisterGlobalHotkeySuccessfully, $"{item.eGlobalHotkey.ToString()}");
|
||||||
update(false, msg);
|
update(false, msg);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
var msg = string.Format(ResUI.RegisterGlobalHotkeyFailed, $"{item.eGlobalHotkey.ToString()} = {keys}", ex.Message);
|
var msg = string.Format(ResUI.RegisterGlobalHotkeyFailed, $"{item.eGlobalHotkey.ToString()}", ex.Message);
|
||||||
update(false, msg);
|
update(false, msg);
|
||||||
Utils.SaveLog(msg);
|
Utils.SaveLog(msg);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
using MaterialDesignThemes.Wpf;
|
||||||
|
using ReactiveUI;
|
||||||
|
|
||||||
|
namespace v2rayN.Handler
|
||||||
|
{
|
||||||
|
public class NoticeHandler
|
||||||
|
{
|
||||||
|
private readonly ISnackbarMessageQueue _snackbarMessageQueue;
|
||||||
|
|
||||||
|
public NoticeHandler(ISnackbarMessageQueue snackbarMessageQueue)
|
||||||
|
{
|
||||||
|
_snackbarMessageQueue = snackbarMessageQueue ?? throw new ArgumentNullException(nameof(snackbarMessageQueue));
|
||||||
|
|
||||||
|
//_snackbarMessageQueue = snackbarMessageQueue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Enqueue(object content)
|
||||||
|
{
|
||||||
|
_snackbarMessageQueue?.Enqueue(content);
|
||||||
|
}
|
||||||
|
public void SendMessage(string msg)
|
||||||
|
{
|
||||||
|
MessageBus.Current.SendMessage(msg, "MsgView");
|
||||||
|
}
|
||||||
|
public void SendMessage(string msg, bool time)
|
||||||
|
{
|
||||||
|
msg = $"{DateTime.Now} {msg}";
|
||||||
|
MessageBus.Current.SendMessage(msg, "MsgView");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,4 @@
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using System;
|
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
using System;
|
using QRCoder;
|
||||||
using System.Drawing;
|
using QRCoder.Xaml;
|
||||||
using ZXing;
|
using System.Windows.Media;
|
||||||
using ZXing.QrCode;
|
|
||||||
|
|
||||||
namespace v2rayN.Handler
|
namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
|
@ -10,36 +9,22 @@ namespace v2rayN.Handler
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class QRCodeHelper
|
public class QRCodeHelper
|
||||||
{
|
{
|
||||||
public static Image GetQRCode(string strContent)
|
public static DrawingImage GetQRCode(string strContent)
|
||||||
{
|
{
|
||||||
Image img = null;
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
QrCodeEncodingOptions options = new QrCodeEncodingOptions
|
QRCodeGenerator qrGenerator = new QRCodeGenerator();
|
||||||
{
|
QRCodeData qrCodeData = qrGenerator.CreateQrCode(strContent, QRCodeGenerator.ECCLevel.H);
|
||||||
CharacterSet = "UTF-8",
|
XamlQRCode qrCode = new XamlQRCode(qrCodeData);
|
||||||
DisableECI = true, // Extended Channel Interpretation (ECI) 主要用于特殊的字符集。并不是所有的扫描器都支持这种编码。
|
DrawingImage qrCodeAsXaml = qrCode.GetGraphic(40);
|
||||||
ErrorCorrection = ZXing.QrCode.Internal.ErrorCorrectionLevel.M, // 纠错级别
|
return qrCodeAsXaml;
|
||||||
Width = 500,
|
|
||||||
Height = 500,
|
|
||||||
Margin = 1
|
|
||||||
};
|
|
||||||
// options.Hints,更多属性,也可以在这里添加。
|
|
||||||
|
|
||||||
BarcodeWriter writer = new BarcodeWriter
|
|
||||||
{
|
|
||||||
Format = BarcodeFormat.QR_CODE,
|
|
||||||
Options = options
|
|
||||||
};
|
|
||||||
Bitmap bmp = writer.Write(strContent);
|
|
||||||
img = (Image)bmp;
|
|
||||||
return img;
|
|
||||||
}
|
}
|
||||||
catch(Exception ex)
|
catch
|
||||||
{
|
{
|
||||||
Utils.SaveLog(ex.Message, ex);
|
return null;
|
||||||
return img;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,5 @@
|
||||||
using System;
|
using System.Collections.Specialized;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Collections.Specialized;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Web;
|
using System.Web;
|
||||||
using v2rayN.Base;
|
using v2rayN.Base;
|
||||||
using v2rayN.Mode;
|
using v2rayN.Mode;
|
||||||
|
@ -23,7 +17,7 @@ namespace v2rayN.Handler
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="item"></param>
|
/// <param name="item"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static string GetShareUrl(VmessItem item)
|
public static string GetShareUrl(ProfileItem item)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -58,7 +52,7 @@ namespace v2rayN.Handler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string ShareVmess(VmessItem item)
|
private static string ShareVmess(ProfileItem item)
|
||||||
{
|
{
|
||||||
string url = string.Empty;
|
string url = string.Empty;
|
||||||
|
|
||||||
|
@ -77,7 +71,7 @@ namespace v2rayN.Handler
|
||||||
path = item.path,
|
path = item.path,
|
||||||
tls = item.streamSecurity,
|
tls = item.streamSecurity,
|
||||||
sni = item.sni,
|
sni = item.sni,
|
||||||
alpn = Utils.List2String(item.alpn)
|
alpn = item.alpn
|
||||||
};
|
};
|
||||||
|
|
||||||
url = Utils.ToJson(vmessQRCode);
|
url = Utils.ToJson(vmessQRCode);
|
||||||
|
@ -87,7 +81,7 @@ namespace v2rayN.Handler
|
||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string ShareShadowsocks(VmessItem item)
|
private static string ShareShadowsocks(ProfileItem item)
|
||||||
{
|
{
|
||||||
string url = string.Empty;
|
string url = string.Empty;
|
||||||
|
|
||||||
|
@ -104,12 +98,12 @@ namespace v2rayN.Handler
|
||||||
//url = Utils.Base64Encode(url);
|
//url = Utils.Base64Encode(url);
|
||||||
//new Sip002
|
//new Sip002
|
||||||
var pw = Utils.Base64Encode($"{item.security}:{item.id}");
|
var pw = Utils.Base64Encode($"{item.security}:{item.id}");
|
||||||
url = $"{pw}@{GetIpv6(item.address)}:{ item.port}";
|
url = $"{pw}@{GetIpv6(item.address)}:{item.port}";
|
||||||
url = $"{Global.ssProtocol}{url}{remark}";
|
url = $"{Global.ssProtocol}{url}{remark}";
|
||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string ShareSocks(VmessItem item)
|
private static string ShareSocks(ProfileItem item)
|
||||||
{
|
{
|
||||||
string url = string.Empty;
|
string url = string.Empty;
|
||||||
string remark = string.Empty;
|
string remark = string.Empty;
|
||||||
|
@ -125,12 +119,12 @@ namespace v2rayN.Handler
|
||||||
//url = Utils.Base64Encode(url);
|
//url = Utils.Base64Encode(url);
|
||||||
//new
|
//new
|
||||||
var pw = Utils.Base64Encode($"{item.security}:{item.id}");
|
var pw = Utils.Base64Encode($"{item.security}:{item.id}");
|
||||||
url = $"{pw}@{GetIpv6(item.address)}:{ item.port}";
|
url = $"{pw}@{GetIpv6(item.address)}:{item.port}";
|
||||||
url = $"{Global.socksProtocol}{url}{remark}";
|
url = $"{Global.socksProtocol}{url}{remark}";
|
||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string ShareTrojan(VmessItem item)
|
private static string ShareTrojan(ProfileItem item)
|
||||||
{
|
{
|
||||||
string url = string.Empty;
|
string url = string.Empty;
|
||||||
string remark = string.Empty;
|
string remark = string.Empty;
|
||||||
|
@ -150,7 +144,7 @@ namespace v2rayN.Handler
|
||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string ShareVLESS(VmessItem item)
|
private static string ShareVLESS(ProfileItem item)
|
||||||
{
|
{
|
||||||
string url = string.Empty;
|
string url = string.Empty;
|
||||||
string remark = string.Empty;
|
string remark = string.Empty;
|
||||||
|
@ -182,7 +176,7 @@ namespace v2rayN.Handler
|
||||||
return Utils.IsIpv6(address) ? $"[{address}]" : address;
|
return Utils.IsIpv6(address) ? $"[{address}]" : address;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int GetStdTransport(VmessItem item, string securityDef, ref Dictionary<string, string> dicQuery)
|
private static int GetStdTransport(ProfileItem item, string securityDef, ref Dictionary<string, string> dicQuery)
|
||||||
{
|
{
|
||||||
if (!Utils.IsNullOrEmpty(item.flow))
|
if (!Utils.IsNullOrEmpty(item.flow))
|
||||||
{
|
{
|
||||||
|
@ -204,9 +198,9 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
dicQuery.Add("sni", item.sni);
|
dicQuery.Add("sni", item.sni);
|
||||||
}
|
}
|
||||||
if (item.alpn != null && item.alpn.Count > 0)
|
if (!Utils.IsNullOrEmpty(item.alpn))
|
||||||
{
|
{
|
||||||
dicQuery.Add("alpn", Utils.UrlEncode(Utils.List2String(item.alpn)));
|
dicQuery.Add("alpn", Utils.UrlEncode(item.alpn));
|
||||||
}
|
}
|
||||||
|
|
||||||
dicQuery.Add("type", !Utils.IsNullOrEmpty(item.network) ? item.network : "tcp");
|
dicQuery.Add("type", !Utils.IsNullOrEmpty(item.network) ? item.network : "tcp");
|
||||||
|
@ -282,10 +276,10 @@ namespace v2rayN.Handler
|
||||||
/// <param name="fileName"></param>
|
/// <param name="fileName"></param>
|
||||||
/// <param name="msg"></param>
|
/// <param name="msg"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static VmessItem ImportFromClipboardConfig(string clipboardData, out string msg)
|
public static ProfileItem ImportFromClipboardConfig(string clipboardData, out string msg)
|
||||||
{
|
{
|
||||||
msg = string.Empty;
|
msg = string.Empty;
|
||||||
VmessItem vmessItem = new VmessItem();
|
ProfileItem profileItem = new ProfileItem();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -302,58 +296,56 @@ namespace v2rayN.Handler
|
||||||
int indexSplit = result.IndexOf("?");
|
int indexSplit = result.IndexOf("?");
|
||||||
if (indexSplit > 0)
|
if (indexSplit > 0)
|
||||||
{
|
{
|
||||||
vmessItem = ResolveStdVmess(result) ?? ResolveVmess4Kitsunebi(result);
|
profileItem = ResolveStdVmess(result) ?? ResolveVmess4Kitsunebi(result);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
vmessItem = ResolveVmess(result, out msg);
|
profileItem = ResolveVmess(result, out msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigHandler.UpgradeServerVersion(ref vmessItem);
|
|
||||||
}
|
}
|
||||||
else if (result.StartsWith(Global.ssProtocol))
|
else if (result.StartsWith(Global.ssProtocol))
|
||||||
{
|
{
|
||||||
msg = ResUI.ConfigurationFormatIncorrect;
|
msg = ResUI.ConfigurationFormatIncorrect;
|
||||||
|
|
||||||
vmessItem = ResolveSSLegacy(result) ?? ResolveSip002(result);
|
profileItem = ResolveSSLegacy(result) ?? ResolveSip002(result);
|
||||||
if (vmessItem == null)
|
if (profileItem == null)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (vmessItem.address.Length == 0 || vmessItem.port == 0 || vmessItem.security.Length == 0 || vmessItem.id.Length == 0)
|
if (profileItem.address.Length == 0 || profileItem.port == 0 || profileItem.security.Length == 0 || profileItem.id.Length == 0)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
vmessItem.configType = EConfigType.Shadowsocks;
|
profileItem.configType = EConfigType.Shadowsocks;
|
||||||
}
|
}
|
||||||
else if (result.StartsWith(Global.socksProtocol))
|
else if (result.StartsWith(Global.socksProtocol))
|
||||||
{
|
{
|
||||||
msg = ResUI.ConfigurationFormatIncorrect;
|
msg = ResUI.ConfigurationFormatIncorrect;
|
||||||
|
|
||||||
vmessItem = ResolveSocksNew(result) ?? ResolveSocks(result);
|
profileItem = ResolveSocksNew(result) ?? ResolveSocks(result);
|
||||||
if (vmessItem == null)
|
if (profileItem == null)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (vmessItem.address.Length == 0 || vmessItem.port == 0)
|
if (profileItem.address.Length == 0 || profileItem.port == 0)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
vmessItem.configType = EConfigType.Socks;
|
profileItem.configType = EConfigType.Socks;
|
||||||
}
|
}
|
||||||
else if (result.StartsWith(Global.trojanProtocol))
|
else if (result.StartsWith(Global.trojanProtocol))
|
||||||
{
|
{
|
||||||
msg = ResUI.ConfigurationFormatIncorrect;
|
msg = ResUI.ConfigurationFormatIncorrect;
|
||||||
|
|
||||||
vmessItem = ResolveTrojan(result);
|
profileItem = ResolveTrojan(result);
|
||||||
}
|
}
|
||||||
else if (result.StartsWith(Global.vlessProtocol))
|
else if (result.StartsWith(Global.vlessProtocol))
|
||||||
{
|
{
|
||||||
vmessItem = ResolveStdVLESS(result);
|
profileItem = ResolveStdVLESS(result);
|
||||||
|
|
||||||
ConfigHandler.UpgradeServerVersion(ref vmessItem);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -368,13 +360,13 @@ namespace v2rayN.Handler
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return vmessItem;
|
return profileItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static VmessItem ResolveVmess(string result, out string msg)
|
private static ProfileItem ResolveVmess(string result, out string msg)
|
||||||
{
|
{
|
||||||
msg = string.Empty;
|
msg = string.Empty;
|
||||||
var vmessItem = new VmessItem
|
var profileItem = new ProfileItem
|
||||||
{
|
{
|
||||||
configType = EConfigType.VMess
|
configType = EConfigType.VMess
|
||||||
};
|
};
|
||||||
|
@ -390,39 +382,39 @@ namespace v2rayN.Handler
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
vmessItem.network = Global.DefaultNetwork;
|
profileItem.network = Global.DefaultNetwork;
|
||||||
vmessItem.headerType = Global.None;
|
profileItem.headerType = Global.None;
|
||||||
|
|
||||||
vmessItem.configVersion = Utils.ToInt(vmessQRCode.v);
|
profileItem.configVersion = Utils.ToInt(vmessQRCode.v);
|
||||||
vmessItem.remarks = Utils.ToString(vmessQRCode.ps);
|
profileItem.remarks = Utils.ToString(vmessQRCode.ps);
|
||||||
vmessItem.address = Utils.ToString(vmessQRCode.add);
|
profileItem.address = Utils.ToString(vmessQRCode.add);
|
||||||
vmessItem.port = Utils.ToInt(vmessQRCode.port);
|
profileItem.port = Utils.ToInt(vmessQRCode.port);
|
||||||
vmessItem.id = Utils.ToString(vmessQRCode.id);
|
profileItem.id = Utils.ToString(vmessQRCode.id);
|
||||||
vmessItem.alterId = Utils.ToInt(vmessQRCode.aid);
|
profileItem.alterId = Utils.ToInt(vmessQRCode.aid);
|
||||||
vmessItem.security = Utils.ToString(vmessQRCode.scy);
|
profileItem.security = Utils.ToString(vmessQRCode.scy);
|
||||||
|
|
||||||
vmessItem.security = !Utils.IsNullOrEmpty(vmessQRCode.scy) ? vmessQRCode.scy : Global.DefaultSecurity;
|
profileItem.security = !Utils.IsNullOrEmpty(vmessQRCode.scy) ? vmessQRCode.scy : Global.DefaultSecurity;
|
||||||
if (!Utils.IsNullOrEmpty(vmessQRCode.net))
|
if (!Utils.IsNullOrEmpty(vmessQRCode.net))
|
||||||
{
|
{
|
||||||
vmessItem.network = vmessQRCode.net;
|
profileItem.network = vmessQRCode.net;
|
||||||
}
|
}
|
||||||
if (!Utils.IsNullOrEmpty(vmessQRCode.type))
|
if (!Utils.IsNullOrEmpty(vmessQRCode.type))
|
||||||
{
|
{
|
||||||
vmessItem.headerType = vmessQRCode.type;
|
profileItem.headerType = vmessQRCode.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
vmessItem.requestHost = Utils.ToString(vmessQRCode.host);
|
profileItem.requestHost = Utils.ToString(vmessQRCode.host);
|
||||||
vmessItem.path = Utils.ToString(vmessQRCode.path);
|
profileItem.path = Utils.ToString(vmessQRCode.path);
|
||||||
vmessItem.streamSecurity = Utils.ToString(vmessQRCode.tls);
|
profileItem.streamSecurity = Utils.ToString(vmessQRCode.tls);
|
||||||
vmessItem.sni = Utils.ToString(vmessQRCode.sni);
|
profileItem.sni = Utils.ToString(vmessQRCode.sni);
|
||||||
vmessItem.alpn = Utils.String2List(vmessQRCode.alpn);
|
profileItem.alpn = Utils.ToString(vmessQRCode.alpn);
|
||||||
|
|
||||||
return vmessItem;
|
return profileItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static VmessItem ResolveVmess4Kitsunebi(string result)
|
private static ProfileItem ResolveVmess4Kitsunebi(string result)
|
||||||
{
|
{
|
||||||
VmessItem vmessItem = new VmessItem
|
ProfileItem profileItem = new ProfileItem
|
||||||
{
|
{
|
||||||
configType = EConfigType.VMess
|
configType = EConfigType.VMess
|
||||||
};
|
};
|
||||||
|
@ -446,21 +438,21 @@ namespace v2rayN.Handler
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
vmessItem.address = arr22[0];
|
profileItem.address = arr22[0];
|
||||||
vmessItem.port = Utils.ToInt(arr22[1]);
|
profileItem.port = Utils.ToInt(arr22[1]);
|
||||||
vmessItem.security = arr21[0];
|
profileItem.security = arr21[0];
|
||||||
vmessItem.id = arr21[1];
|
profileItem.id = arr21[1];
|
||||||
|
|
||||||
vmessItem.network = Global.DefaultNetwork;
|
profileItem.network = Global.DefaultNetwork;
|
||||||
vmessItem.headerType = Global.None;
|
profileItem.headerType = Global.None;
|
||||||
vmessItem.remarks = "Alien";
|
profileItem.remarks = "Alien";
|
||||||
|
|
||||||
return vmessItem;
|
return profileItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static VmessItem ResolveStdVmess(string result)
|
private static ProfileItem ResolveStdVmess(string result)
|
||||||
{
|
{
|
||||||
VmessItem i = new VmessItem
|
ProfileItem i = new ProfileItem
|
||||||
{
|
{
|
||||||
configType = EConfigType.VMess,
|
configType = EConfigType.VMess,
|
||||||
security = "auto"
|
security = "auto"
|
||||||
|
@ -539,7 +531,7 @@ namespace v2rayN.Handler
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static VmessItem ResolveSip002(string result)
|
private static ProfileItem ResolveSip002(string result)
|
||||||
{
|
{
|
||||||
Uri parsedUrl;
|
Uri parsedUrl;
|
||||||
try
|
try
|
||||||
|
@ -550,7 +542,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
VmessItem server = new VmessItem
|
ProfileItem server = new ProfileItem
|
||||||
{
|
{
|
||||||
remarks = parsedUrl.GetComponents(UriComponents.Fragment, UriFormat.Unescaped),
|
remarks = parsedUrl.GetComponents(UriComponents.Fragment, UriFormat.Unescaped),
|
||||||
address = parsedUrl.IdnHost,
|
address = parsedUrl.IdnHost,
|
||||||
|
@ -605,13 +597,13 @@ namespace v2rayN.Handler
|
||||||
private static readonly Regex UrlFinder = new Regex(@"ss://(?<base64>[A-Za-z0-9+-/=_]+)(?:#(?<tag>\S+))?", RegexOptions.IgnoreCase);
|
private static readonly Regex UrlFinder = new Regex(@"ss://(?<base64>[A-Za-z0-9+-/=_]+)(?:#(?<tag>\S+))?", RegexOptions.IgnoreCase);
|
||||||
private static readonly Regex DetailsParser = new Regex(@"^((?<method>.+?):(?<password>.*)@(?<hostname>.+?):(?<port>\d+?))$", RegexOptions.IgnoreCase);
|
private static readonly Regex DetailsParser = new Regex(@"^((?<method>.+?):(?<password>.*)@(?<hostname>.+?):(?<port>\d+?))$", RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
private static VmessItem ResolveSSLegacy(string result)
|
private static ProfileItem ResolveSSLegacy(string result)
|
||||||
{
|
{
|
||||||
var match = UrlFinder.Match(result);
|
var match = UrlFinder.Match(result);
|
||||||
if (!match.Success)
|
if (!match.Success)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
VmessItem server = new VmessItem();
|
ProfileItem server = new ProfileItem();
|
||||||
var base64 = match.Groups["base64"].Value.TrimEnd('/');
|
var base64 = match.Groups["base64"].Value.TrimEnd('/');
|
||||||
var tag = match.Groups["tag"].Value;
|
var tag = match.Groups["tag"].Value;
|
||||||
if (!Utils.IsNullOrEmpty(tag))
|
if (!Utils.IsNullOrEmpty(tag))
|
||||||
|
@ -640,9 +632,9 @@ namespace v2rayN.Handler
|
||||||
private static readonly Regex StdVmessUserInfo = new Regex(
|
private static readonly Regex StdVmessUserInfo = new Regex(
|
||||||
@"^(?<network>[a-z]+)(\+(?<streamSecurity>[a-z]+))?:(?<id>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$");
|
@"^(?<network>[a-z]+)(\+(?<streamSecurity>[a-z]+))?:(?<id>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$");
|
||||||
|
|
||||||
private static VmessItem ResolveSocks(string result)
|
private static ProfileItem ResolveSocks(string result)
|
||||||
{
|
{
|
||||||
VmessItem vmessItem = new VmessItem
|
ProfileItem profileItem = new ProfileItem
|
||||||
{
|
{
|
||||||
configType = EConfigType.Socks
|
configType = EConfigType.Socks
|
||||||
};
|
};
|
||||||
|
@ -653,7 +645,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
vmessItem.remarks = Utils.UrlDecode(result.Substring(indexRemark + 1, result.Length - indexRemark - 1));
|
profileItem.remarks = Utils.UrlDecode(result.Substring(indexRemark + 1, result.Length - indexRemark - 1));
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
result = result.Substring(0, indexRemark);
|
result = result.Substring(0, indexRemark);
|
||||||
|
@ -680,15 +672,15 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
vmessItem.address = arr1[1].Substring(0, indexPort);
|
profileItem.address = arr1[1].Substring(0, indexPort);
|
||||||
vmessItem.port = Utils.ToInt(arr1[1].Substring(indexPort + 1, arr1[1].Length - (indexPort + 1)));
|
profileItem.port = Utils.ToInt(arr1[1].Substring(indexPort + 1, arr1[1].Length - (indexPort + 1)));
|
||||||
vmessItem.security = arr21[0];
|
profileItem.security = arr21[0];
|
||||||
vmessItem.id = arr21[1];
|
profileItem.id = arr21[1];
|
||||||
|
|
||||||
return vmessItem;
|
return profileItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static VmessItem ResolveSocksNew(string result)
|
private static ProfileItem ResolveSocksNew(string result)
|
||||||
{
|
{
|
||||||
Uri parsedUrl;
|
Uri parsedUrl;
|
||||||
try
|
try
|
||||||
|
@ -699,7 +691,7 @@ namespace v2rayN.Handler
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
VmessItem server = new VmessItem
|
ProfileItem server = new ProfileItem
|
||||||
{
|
{
|
||||||
remarks = parsedUrl.GetComponents(UriComponents.Fragment, UriFormat.Unescaped),
|
remarks = parsedUrl.GetComponents(UriComponents.Fragment, UriFormat.Unescaped),
|
||||||
address = parsedUrl.IdnHost,
|
address = parsedUrl.IdnHost,
|
||||||
|
@ -719,9 +711,9 @@ namespace v2rayN.Handler
|
||||||
return server;
|
return server;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static VmessItem ResolveTrojan(string result)
|
private static ProfileItem ResolveTrojan(string result)
|
||||||
{
|
{
|
||||||
VmessItem item = new VmessItem
|
ProfileItem item = new ProfileItem
|
||||||
{
|
{
|
||||||
configType = EConfigType.Trojan
|
configType = EConfigType.Trojan
|
||||||
};
|
};
|
||||||
|
@ -738,9 +730,9 @@ namespace v2rayN.Handler
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
private static VmessItem ResolveStdVLESS(string result)
|
private static ProfileItem ResolveStdVLESS(string result)
|
||||||
{
|
{
|
||||||
VmessItem item = new VmessItem
|
ProfileItem item = new ProfileItem
|
||||||
{
|
{
|
||||||
configType = EConfigType.VLESS,
|
configType = EConfigType.VLESS,
|
||||||
security = "none"
|
security = "none"
|
||||||
|
@ -761,12 +753,12 @@ namespace v2rayN.Handler
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int ResolveStdTransport(NameValueCollection query, ref VmessItem item)
|
private static int ResolveStdTransport(NameValueCollection query, ref ProfileItem item)
|
||||||
{
|
{
|
||||||
item.flow = query["flow"] ?? "";
|
item.flow = query["flow"] ?? "";
|
||||||
item.streamSecurity = query["security"] ?? "";
|
item.streamSecurity = query["security"] ?? "";
|
||||||
item.sni = query["sni"] ?? "";
|
item.sni = query["sni"] ?? "";
|
||||||
item.alpn = Utils.String2List(Utils.UrlDecode(query["alpn"] ?? ""));
|
item.alpn = Utils.UrlDecode(query["alpn"] ?? "");
|
||||||
item.network = query["type"] ?? "tcp";
|
item.network = query["type"] ?? "tcp";
|
||||||
switch (item.network)
|
switch (item.network)
|
||||||
{
|
{
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue