Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions v2rayN/ServiceLib/Common/SqliteHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,11 @@ public int Execute(string sql)
return _db.Execute(sql);
}

public int DeleteAll<T>()
{
return _db.DeleteAll<T>();
}

public async Task<int> ExecuteAsync(string sql)
{
return await _dbAsync.ExecuteAsync(sql);
Expand Down
9 changes: 7 additions & 2 deletions v2rayN/ServiceLib/Global.cs
Original file line number Diff line number Diff line change
Expand Up @@ -121,12 +121,17 @@ public class Global

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()
Expand Down
38 changes: 38 additions & 0 deletions v2rayN/ServiceLib/Handler/ConfigHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1761,6 +1761,11 @@ public static int InitBuiltinDNS(Config config)

public static int SaveDNSItems(Config config, DNSItem item)
{
if (item == null)
{
return -1;
}

if (Utils.IsNullOrEmpty(item.id))
{
item.id = Utils.GetGuid(false);
Expand All @@ -1776,6 +1781,33 @@ public static int SaveDNSItems(Config config, DNSItem item)
}
}

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
Expand All @@ -1789,13 +1821,19 @@ public static bool ApplyRegionalPreset(Config config, EPresetType type)
config.constItem.srsSourceUrl = "";
config.constItem.routeRulesTemplateSourceUrl = "";

SQLiteHelper.Instance.DeleteAll<DNSItem>();
InitBuiltinDNS(config);

return true;

case EPresetType.Russia:
config.constItem.geoSourceUrl = Global.GeoFilesSources[1];
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;
}

Expand Down
21 changes: 21 additions & 0 deletions v2rayN/ServiceLib/Resx/ResUI.ru.resx
Original file line number Diff line number Diff line change
Expand Up @@ -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>