Skip to content

Commit

Permalink
External dns for presets
Browse files Browse the repository at this point in the history
  • Loading branch information
runetfreedom committed Oct 18, 2024
1 parent 85576c0 commit 142b450
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 2 deletions.
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

0 comments on commit 142b450

Please sign in to comment.