mirror of
https://github.com/2dust/v2rayN.git
synced 2025-08-23 11:26:54 +00:00

* Revert "Temporary addition to support proper use of sing-box v1.12"
This reverts commit 508eb24fc3
.
* Migrating to singbox 1.11 support
* Removes unnecessary sniffer
* Migrating to singbox 1.12 support
* Adds Google cn dns rules
* Improves geoip rule handling in singbox
* add anytls support
* Simplifies local DNS address handling
* Enables dhcp interface configuration
* Fetches DNS strategy for domain resolution
* support Wireguard endpoint
Refactors Singbox config classes for dial fields
* Utils.GetFreePort() default port to be zero
* Adds Sing-box legacy DNS config support
* Adds IPv4 preference to DNS configurations
对应原dns.servers[].strategy = prefer_ipv4
* Refactors DNS address parsing
* Fixes config generation
* fix singbox endpoints proxy chain not work
* Fixes wrong field
* Removes direct clash_mode domain strategy
* Improves DNS address parsing in Singbox
DNS type, host, port, and path
* Adds properties to Rule4Sbox class
* Removes Wireguard listen port
* Support sing-box hosts
* Adds tag resolver supports
* Adds sing-box DomainStrategy support
* Deletes Duplicate Rules
* Adds anytls reality support
* Fixes
* Updates sing-box documentation link
* Updates translations
96 lines
3.1 KiB
C#
96 lines
3.1 KiB
C#
namespace ServiceLib.Handler.Fmt;
|
|
|
|
public class FmtHandler
|
|
{
|
|
private static readonly string _tag = "FmtHandler";
|
|
|
|
public static string? GetShareUri(ProfileItem item)
|
|
{
|
|
try
|
|
{
|
|
var url = item.ConfigType switch
|
|
{
|
|
EConfigType.VMess => VmessFmt.ToUri(item),
|
|
EConfigType.Shadowsocks => ShadowsocksFmt.ToUri(item),
|
|
EConfigType.SOCKS => SocksFmt.ToUri(item),
|
|
EConfigType.Trojan => TrojanFmt.ToUri(item),
|
|
EConfigType.VLESS => VLESSFmt.ToUri(item),
|
|
EConfigType.Hysteria2 => Hysteria2Fmt.ToUri(item),
|
|
EConfigType.TUIC => TuicFmt.ToUri(item),
|
|
EConfigType.WireGuard => WireguardFmt.ToUri(item),
|
|
EConfigType.Anytls => AnytlsFmt.ToUri(item),
|
|
_ => null,
|
|
};
|
|
|
|
return url;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Logging.SaveLog(_tag, ex);
|
|
return "";
|
|
}
|
|
}
|
|
|
|
public static ProfileItem? ResolveConfig(string config, out string msg)
|
|
{
|
|
msg = ResUI.ConfigurationFormatIncorrect;
|
|
|
|
try
|
|
{
|
|
string str = config.TrimEx();
|
|
if (str.IsNullOrEmpty())
|
|
{
|
|
msg = ResUI.FailedReadConfiguration;
|
|
return null;
|
|
}
|
|
|
|
if (str.StartsWith(Global.ProtocolShares[EConfigType.VMess]))
|
|
{
|
|
return VmessFmt.Resolve(str, out msg);
|
|
}
|
|
else if (str.StartsWith(Global.ProtocolShares[EConfigType.Shadowsocks]))
|
|
{
|
|
return ShadowsocksFmt.Resolve(str, out msg);
|
|
}
|
|
else if (str.StartsWith(Global.ProtocolShares[EConfigType.SOCKS]))
|
|
{
|
|
return SocksFmt.Resolve(str, out msg);
|
|
}
|
|
else if (str.StartsWith(Global.ProtocolShares[EConfigType.Trojan]))
|
|
{
|
|
return TrojanFmt.Resolve(str, out msg);
|
|
}
|
|
else if (str.StartsWith(Global.ProtocolShares[EConfigType.VLESS]))
|
|
{
|
|
return VLESSFmt.Resolve(str, out msg);
|
|
}
|
|
else if (str.StartsWith(Global.ProtocolShares[EConfigType.Hysteria2]) || str.StartsWith(Global.Hysteria2ProtocolShare))
|
|
{
|
|
return Hysteria2Fmt.Resolve(str, out msg);
|
|
}
|
|
else if (str.StartsWith(Global.ProtocolShares[EConfigType.TUIC]))
|
|
{
|
|
return TuicFmt.Resolve(str, out msg);
|
|
}
|
|
else if (str.StartsWith(Global.ProtocolShares[EConfigType.WireGuard]))
|
|
{
|
|
return WireguardFmt.Resolve(str, out msg);
|
|
}
|
|
else if (str.StartsWith(Global.ProtocolShares[EConfigType.Anytls]))
|
|
{
|
|
return AnytlsFmt.Resolve(str, out msg);
|
|
}
|
|
else
|
|
{
|
|
msg = ResUI.NonvmessOrssProtocol;
|
|
return null;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Logging.SaveLog(_tag, ex);
|
|
msg = ResUI.Incorrectconfiguration;
|
|
return null;
|
|
}
|
|
}
|
|
}
|