Implement reduceonions function to the packager
MODIFY
WalletWasabi.Packager/Program.cs
WalletWasabi.Packager/Program.cs
@@ -66,6 +66,13 @@ namespace WalletWasabi.Packager
return;
}
+ // If I want a list of up to date onions run it with '--getonions'.
+ if (IsReduceOnionsMode(args))
+ {
+ ReduceOnions();
+ return;
+ }
+
// Start with digest creation and return if only digest creation.
CreateDigests();
@@ -131,6 +138,51 @@ namespace WalletWasabi.Packager
}
}
+ private static void ReduceOnions()
+ {
+ var onionFile = Path.Combine(LibraryProjectDirectory, "OnionSeeds", "MainOnionSeeds.txt");
+ var currentOnions = File.ReadAllLines(onionFile);
+ using (var httpClient = new HttpClient())
+ {
+ httpClient.BaseAddress = new Uri("https://bitnodes.21.co/api/v1/");
+
+ using (var response = httpClient.GetAsync("snapshots/latest/", HttpCompletionOption.ResponseContentRead).GetAwaiter().GetResult())
+ {
+ if (response.StatusCode != HttpStatusCode.OK)
+ {
+ throw new HttpRequestException(response.StatusCode.ToString());
+ }
+
+ var responseString = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
+ var json = (JObject)JsonConvert.DeserializeObject(responseString);
+ foreach (JProperty node in json["nodes"])
+ {
+ if (!node.Name.Contains(".onion"))
+ {
+ continue;
+ }
+
+ var userAgent = ((JArray)node.Value)[1].ToString();
+
+ try
+ {
+ var verString = userAgent.Substring(userAgent.IndexOf("Satoshi:") + 8, 4);
+ var ver = new Version(verString);
+
+ if (currentOnions.Any(x => x.Contains(node.Name, StringComparison.OrdinalIgnoreCase))
+ && ver >= new Version("0.16"))
+ {
+ Console.WriteLine(node.Name);
+ }
+ }
+ catch
+ {
+ }
+ }
+ }
+ }
+ }
+
private static void CreateDigests()
{
var tempDir = "DigestTempDir";
@@ -244,9 +296,26 @@ namespace WalletWasabi.Packager
foreach (var arg in args)
{
if (arg.Trim().TrimStart('-').Equals("getonions", StringComparison.OrdinalIgnoreCase)
- || arg.Trim().TrimStart('-').Equals("onions", StringComparison.OrdinalIgnoreCase)
- || arg.Trim().TrimStart('-').Equals("getonion", StringComparison.OrdinalIgnoreCase)
- || arg.Trim().TrimStart('-').Equals("onion", StringComparison.OrdinalIgnoreCase))
+ || arg.Trim().TrimStart('-').Equals("getonion", StringComparison.OrdinalIgnoreCase))
+ {
+ getOnions = true;
+ break;
+ }
+ }
+ }
+
+ return getOnions;
+ }
+
+ private static bool IsReduceOnionsMode(string[] args)
+ {
+ bool getOnions = false;
+ if (args != null)
+ {
+ foreach (var arg in args)
+ {
+ if (arg.Trim().TrimStart('-').Equals("reduceonions", StringComparison.OrdinalIgnoreCase)
+ || arg.Trim().TrimStart('-').Equals("reduceonion", StringComparison.OrdinalIgnoreCase))
{
getOnions = true;
break;

MODIFY
WalletWasabi/OnionSeeds/MainOnionSeeds.txt
WalletWasabi/OnionSeeds/MainOnionSeeds.txt
hda6msa4v4rt77gx.onion:8333
-p3aj5tjey6dzsjr7.onion:8333
rixwzovhlsz664xy.onion:8333
3dvwmv62jsdstyyy.onion:8333
-72pulxp4k4nkjco2.onion:8333
-xezirgyw2my4gif5.onion:8333
-3r3mocmw4jzxq4xk.onion:8333
-jz5nfzcgnhn6vwhi.onion:8333
-qsl3x63225alx4bt.onion:8333
-nsubroofjf4kaasg.onion:8333
+7lzinbho4rm7f6bl.onion:8333
do2ebqj4kzhlw444.onion:8333
cyvpgt25274i5b7c.onion:8333
-6vvfahogmjnnzuip.onion:8333
-5alu66tjrc3djucs.onion:8333
-uzdt3ddmyxebukyy.onion:8333
fhrhm6feuup67xtk.onion:8333
-44hovu46dmeeeoty.onion:8333
lwulm2jwvajgg63j.onion:8333
po3j2hfkmf7sh36o.onion:8333
ble7kgm3gim6e5si.onion:8333
-cmbosvl47eyvxz6t.onion:8333
-4mstzqsrlejdzv5e.onion:8333
-cprseii2voy6jtg5.onion:8333
-2of7nm3sencvyrsz.onion:8333
aj2ma7bap6jlgqmo.onion:8333
-l3s2pgkvkjwkar3v.onion:8333
3li7h6txzwuaolhy.onion:8333
pvj4xk4zc4cr6jqq.onion:8333
-o7ol2b23cdu7w5ze.onion:8333
t7kr7lqbai3h4tpw.onion:8333
-jdx24uthmy7nlb2y.onion:8333
fz6nsij6jiyuwlsc.onion:8333
+xdz53y6fmiesr5td.onion:8333
zzwepx6slqzm6ndq.onion:8333
-d5upe4qdsy6tit5z.onion:8333
iixzdt2qbs2eeoxt.onion:8333
-4b7ytbkbvtipq5ey.onion:8333
-dz7cx7tw4aslmawi.onion:8333
wrbg5re3jhgbmawm.onion:8333
-bitcoinzi27kiwf6.onion:8333
-z33nukt7ngik3cpe.onion:8333
-bwzr3bpv6tu7gc5c.onion:8333
+chiphuvuwoietiye.onion:8333
+esigoqa2je2gh5fv.onion:8333
+5alu66tjrc3djucs.onion:8333
+dbqgqjxcfyarxfev.onion:8333
gddgd6s562x4dndd.onion:8333
-r4tt5s764go7jggd.onion:8333
+bqdeaacsmmosx34k.onion:8333
i3a5xtzfm4xwtybd.onion:8333
-mteeutoizmgl7gin.onion:8333
-7avnl3dqpgu23jva.onion:8333
6dkd744jn2ptrepb.onion:8333
k7omfveynnjg674e.onion:8333
-4cb573gir6xkhsiv.onion:8333
dmudsr7x7edvyglt.onion:8333
zzibz3djcgepx2b5.onion:8333
-c5urqrojr3rcdw3v.onion:8333
bopzg7b2hsn3evxd.onion:8333
-27fnju6xfvqosxyj.onion:8333
bqkicjizkkk763sv.onion:8333
-3q5iydjrrutqjb2y.onion:8333
+gripl5xjwy2dcr6c.onion:8333
avn4hevnwomzme3d.onion:8333
+iarlq6mcxbbapko4.onion:8333
oudab5q7ruclifdv.onion:8333
+orjhzea7gntt6p2d.onion:8333
nqkhbvckh45k6xwo.onion:8333
4mewwo2bfxk6lg3f.onion:8333
+z33nukt7ngik3cpe.onion:8333
qkq6aadidfjodu62.onion:8333
-wwbqyehzpvq2s2am.onion:8333
+bwzr3bpv6tu7gc5c.onion:8333
bitcoin4rlfa4wqx.onion:8333
5ayv7fgqgilwxxeg.onion:8333
-mkwrngf7nj44bk2f.onion:8333
fhka77lpm3bewsgb.onion:8333
-lva54pnbq2nsmjyr.onion:8333
+rax36li2lrqxciza.onion:8333
ktqeffpxgzkra4om.onion:8333
ty73xsi7tjv43b4f.onion:8333
z5x2wes6mhbml2t5.onion:8333
-bqdeaacsmmosx34k.onion:8333
uqalrcuuurj6stav.onion:8333
-ihfgsiuulcnbuzy2.onion:8333
o4gv4de546woh7pp.onion:8333
rem4lo6dvtxymjme.onion:8333
nrrfwdmrm3imuebn.onion:8333
-eiuaj2qjvbn737ph.onion:8333
-2kram5qca2egoktg.onion:8333
gnnxl4fbxvgxhnpa.onion:8333
+yuqf2zq22aubyxg3.onion:8333
ofvcrdej7mrktvzy.onion:8333
-aocgwdyurfklq2ro.onion:8333
bmq2x2lhbosdfugt.onion:8333
xuxtlrthafo6y42u.onion:8333
pvmbowrf76azr7l2.onion:8333
vcenhr2puqwk6gsw.onion:8333
pa7dw5bln5lqmu53.onion:8333
-igl2oontzso6l3qp.onion:8333
-4k7zxqv2kbrf5rkr.onion:8333
+ateved3al7gcmlhq.onion:8333
vuf2vduepk4brfi4.onion:8333
g3xgqirastjhpsn6.onion:8333
74qvj45antins3ik.onion:8333
-fhxatbff3kaeilzs.onion:8333
-rkdvqcrtfv6yt4oy.onion:8333
-rax36li2lrqxciza.onion:8333
-dbqgqjxcfyarxfev.onion:8333
+xnuk3xxkc5vd4e2s.onion:8333
dbgf6fc7ndpbfkpe.onion:8333
mxdtrjhe2yfsx3pg.onion:8333
-3r44ddzjitznyahw.onion:8333
-iarlq6mcxbbapko4.onion:8333
wv77alwj4b7b2l76.onion:8333
-zkij3rtalexrzh5d.onion:8333
-esigoqa2je2gh5fv.onion:8333
-lvloccnxalmxoxuv.onion:8333
+x3fslccgh6c263rg.onion:8333
zfib7se6a3klx4ty.onion:8333
psv6v5fy3v6xvs75.onion:8333
-xnuk3xxkc5vd4e2s.onion:8333
-yuqf2zq22aubyxg3.onion:8333
-x3fslccgh6c263rg.onion:8333
-e5pur2rppeifcnmp.onion:8333
+igl2oontzso6l3qp.onion:8333
+mteeutoizmgl7gin.onion:8333
ckne2z5dcrozcryj.onion:8333
-w7xyghwakusv37u2.onion:8333
-f3hd6mcynvxzlxdl.onion:8333
+lva54pnbq2nsmjyr.onion:8333
2inspd2pqalt5cfi.onion:8333
-7sgbn3tbqirrudlg.onion:8333
-cqoenl4w6r3pcz5c.onion:8333
-l6feftraufblwxxp.onion:8333
+legs6ue5xd3uly3y.onion:8333
gvydsw6g7dqyy47p.onion:8333
-orjhzea7gntt6p2d.onion:8333
-djxkyiezxofdwg7w.onion:8333
-55zzzsk7iqv6p3ew.onion:8333
-2zdgmicx7obtivug.onion:8333
-hdlk5ngrpwe2jfis.onion:8333
+l3s2pgkvkjwkar3v.onion:8333
+4mstzqsrlejdzv5e.onion:8333
+xezirgyw2my4gif5.onion:8333
+zmooosqyebhfih56.onion:8333
pbi2qn35ivslrqc5.onion:8333
-4xkxnkm7ewqpwypx.onion:8333
bitcoinostk4e4re.onion:8333
hodliooelmajvwyc.onion:8233
-legs6ue5xd3uly3y.onion:8333
-gripl5xjwy2dcr6c.onion:8333
+hdlk5ngrpwe2jfis.onion:8333
eiag5yml7l6lovnh.onion:8333
-taync7uqc76dr5kj.onion:8333
-7lzinbho4rm7f6bl.onion:8333
-chiphuvuwoietiye.onion:8333
+wowl4pbyne4tnwkc.onion:8333
c3pq7qovpen4xpij.onion:8333
5k3oxus2laabmyip.onion:8333
-ateved3al7gcmlhq.onion:8333
wkemjpseiyx27osp.onion:8333
-zsenp64lsvvdroig.onion:8333
+2of7nm3sencvyrsz.onion:8333
trevzf6wmdptyqfs.onion:8333
-reckb2gdugw356aw.onion:8333
d4opuhly2hlrvttu.onion:8333
-xdz53y6fmiesr5td.onion:8333
-wowl4pbyne4tnwkc.onion:8333
dskxx3difn4lctur.onion:8333
ibiuq4qr3jejkvm3.onion:8333
-r5zxliz57vxcobyl.onion:8333
-u7tsrb2e623ey3fn.onion:8333
+jdx24uthmy7nlb2y.onion:8333
7suwfsp2wi322j4o.onion:8333
-wvdrufe53qpeqzje.onion:8333
hpn6oblxft6m6cnn.onion:8333
-djww5zil5hmpxowp.onion:8333
+l6feftraufblwxxp.onion:8333
+o7ol2b23cdu7w5ze.onion:8333
l7wzsr6o2jabj5gp.onion:8333
mh7y4sgmaepez22a.onion:8333
-zmooosqyebhfih56.onion:8333
t245vi742ti3tnka.onion:8333
+4xkxnkm7ewqpwypx.onion:8333
md2xmqlbsuzguggq.onion:8333
z7bw462hls4yhdpq.onion:8333
+zsenp64lsvvdroig.onion:8333
dpttb5ioqn44khke.onion:8333
+44hovu46dmeeeoty.onion:8333
+rkdvqcrtfv6yt4oy.onion:8333
gixkmoeegogsfev7.onion:8333

Implement reduceonions function to the packager