External dns configs support + ru translation (#5854)

* Ru translation

* External dns for presets
pull/5855/head
runetfreedom 2024-10-18 12:54:47 +03:00 committed by GitHub
parent 5c0fba8744
commit 4d1f7fa60c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 71 additions and 2 deletions

View File

@ -105,6 +105,11 @@ namespace ServiceLib.Common
return _db.Execute(sql);
}
public int DeleteAll<T>()
{
return _db.DeleteAll<T>();
}
public async Task<int> ExecuteAsync(string sql)
{
return await _dbAsync.ExecuteAsync(sql);

View File

@ -121,12 +121,17 @@
public static readonly List<string> SingboxRulesetSources = new() {
"",
@"https://raw.githubusercontent.com/runetfreedom/russia-v2ray-rules-dat/refs/heads/release/sing-box/rule-set-{0}/{1}.srs",
@"https://cdn.jsdelivr.net/gh/runetfreedom/russia-v2ray-rules-dat@release/sing-box/rule-set-{0}/{1}.srs",
};
public static readonly List<string> RoutingRulesSources = new() {
"",
@"https://raw.githubusercontent.com/runetfreedom/russia-v2ray-custom-routing-list/refs/heads/main/template.json",
@"https://cdn.jsdelivr.net/gh/runetfreedom/russia-v2ray-custom-routing-list@main/template.json",
};
public static readonly List<string> DNSTemplateSources = new() {
"",
@"https://cdn.jsdelivr.net/gh/runetfreedom/russia-v2ray-custom-routing-list@main/",
};
public static readonly Dictionary<string, string> UserAgentTexts = new()

View File

@ -1761,6 +1761,11 @@ namespace ServiceLib.Handler
public static int SaveDNSItems(Config config, DNSItem item)
{
if (item == null)
{
return -1;
}
if (Utils.IsNullOrEmpty(item.id))
{
item.id = Utils.GetGuid(false);
@ -1776,6 +1781,33 @@ namespace ServiceLib.Handler
}
}
public static DNSItem GetExternalDNSItem(ECoreType type, string url)
{
var currentItem = AppHandler.Instance.GetDNSItem(type);
var downloadHandle = new DownloadService();
var templateContent = Task.Run(() => downloadHandle.TryDownloadString(url, true, "")).Result;
if (String.IsNullOrEmpty(templateContent))
return currentItem;
var template = JsonUtils.Deserialize<DNSItem>(templateContent);
if (template == null)
return currentItem;
if (!String.IsNullOrEmpty(template.normalDNS))
template.normalDNS = Task.Run(() => downloadHandle.TryDownloadString(template.normalDNS, true, "")).Result;
if (!String.IsNullOrEmpty(template.tunDNS))
template.tunDNS = Task.Run(() => downloadHandle.TryDownloadString(template.tunDNS, true, "")).Result;
template.id = currentItem.id;
template.enabled = currentItem.enabled;
template.remarks = currentItem.remarks;
template.coreType = type;
return template;
}
#endregion DNS
#region Regional Presets
@ -1789,6 +1821,9 @@ namespace ServiceLib.Handler
config.constItem.srsSourceUrl = "";
config.constItem.routeRulesTemplateSourceUrl = "";
SQLiteHelper.Instance.DeleteAll<DNSItem>();
InitBuiltinDNS(config);
return true;
case EPresetType.Russia:
@ -1796,6 +1831,9 @@ namespace ServiceLib.Handler
config.constItem.srsSourceUrl = Global.SingboxRulesetSources[1];
config.constItem.routeRulesTemplateSourceUrl = Global.RoutingRulesSources[1];
SaveDNSItems(config, GetExternalDNSItem(ECoreType.Xray, Global.DNSTemplateSources[1] + "v2ray.json"));
SaveDNSItems(config, GetExternalDNSItem(ECoreType.sing_box, Global.DNSTemplateSources[1] + "sing_box.json"));
return true;
}

View File

@ -1027,4 +1027,25 @@
<data name="TbSettingsSpeedTestUrl" xml:space="preserve">
<value>URL спидтеста</value>
</data>
<data name="TbSettingsGeoFilesSource" xml:space="preserve">
<value>Источник geo файлов</value>
</data>
<data name="TbSettingsSrsFilesSource" xml:space="preserve">
<value>Источник sing-box srs файлов</value>
</data>
<data name="TbSettingsRoutingRulesSource" xml:space="preserve">
<value>Источник правил маршрутизации</value>
</data>
<data name="menuRegionalPresets" xml:space="preserve">
<value>Региональные пресеты</value>
</data>
<data name="menuRegionalPresetsDefault" xml:space="preserve">
<value>По умолчанию (Китай)</value>
</data>
<data name="menuRegionalPresetsRussia" xml:space="preserve">
<value>Россия</value>
</data>
<data name="TbSettingsChinaUserTip" xml:space="preserve">
<value>Используйте Настройки -> Региональные пресеты вместо изменения этого поля</value>
</data>
</root>