diff options
| author | Max Audron <audron@cocaine.farm> | 2025-10-22 17:59:59 +0200 |
|---|---|---|
| committer | Max Audron <audron@cocaine.farm> | 2025-10-22 18:01:05 +0200 |
| commit | c42d7c4594de675adfc60aa090c359a4a172acbd (patch) | |
| tree | 805206f02c9e2083d2d16c0e0495fd16bfca6646 | |
| parent | add slskd (diff) | |
deploy soulseek and fix tlmp VPN
Diffstat (limited to '')
| -rw-r--r-- | modules/tlmp/deps.json | 1602 | ||||
| -rw-r--r-- | modules/tlmp/proxy.rules | 18 | ||||
| -rw-r--r-- | modules/tlmp/rtorrent.nix | 48 | ||||
| -rw-r--r-- | modules/tlmp/rtorrent.rc | 15 | ||||
| -rw-r--r-- | modules/tlmp/slsk.nix | 20 | ||||
| -rw-r--r-- | modules/tlmp/slsk_package.nix | 88 |
6 files changed, 1744 insertions, 47 deletions
diff --git a/modules/tlmp/deps.json b/modules/tlmp/deps.json new file mode 100644 index 0000000..44146a9 --- /dev/null +++ b/modules/tlmp/deps.json @@ -0,0 +1,1602 @@ +[ + { + "pname": "Asp.Versioning.Abstractions", + "version": "8.1.0", + "hash": "sha256-yv3z9fyeKVCIdymC1sIPKNQB+Olzx4RnAdXHXSaslt0=" + }, + { + "pname": "Asp.Versioning.Http", + "version": "8.1.0", + "hash": "sha256-Q3oeo/OyrTShfVhDspKiTe+9ef5CPdno+E7LnVfIn3g=" + }, + { + "pname": "Asp.Versioning.Mvc", + "version": "8.1.0", + "hash": "sha256-b0xI+fo5GD80p3We9+oCL8mHgJ6fWIWUqDZ9w6c6mXI=" + }, + { + "pname": "Asp.Versioning.Mvc.ApiExplorer", + "version": "8.1.0", + "hash": "sha256-CR/GDesZ8iWbSbiETVw7Nn6igJOguCIH+GK++sURtok=" + }, + { + "pname": "AutoFixture", + "version": "4.18.1", + "hash": "sha256-reP+aoYiPcIj4GbCIhjd5/OhuWVLCtD4hKuLPHe2EXI=" + }, + { + "pname": "AutoFixture.Xunit2", + "version": "4.18.1", + "hash": "sha256-5hZm1Rx4n0e2JNsJ6lketE3c8z6AFdquTgKCQORqRfc=" + }, + { + "pname": "Castle.Core", + "version": "4.4.0", + "hash": "sha256-7hLBAHnB+drr2yU4w3o05eMX2ADy/rXN3XRPBn1d7GY=" + }, + { + "pname": "coverlet.msbuild", + "version": "6.0.0", + "hash": "sha256-VPYsOGhVFSMtGyKEGOmP/m5c7KsK+2QeODkvD5p5D6M=" + }, + { + "pname": "Fare", + "version": "2.1.1", + "hash": "sha256-n9X3GE2qsT2wpmDymD1AyCYcOoY/c0+t+aIWLiaST70=" + }, + { + "pname": "FluentFTP", + "version": "49.0.2", + "hash": "sha256-NUJeuIOkBxwrnmGYMRXfr55T0utVhWbPi7fj8/HSWZE=" + }, + { + "pname": "IPAddressRange", + "version": "6.0.0", + "hash": "sha256-3qa0BOBto1+SzJjepSWrvjRryw8RBaKOlPFXtVTvyjo=" + }, + { + "pname": "Microsoft.AspNetCore.Authentication.JwtBearer", + "version": "8.0.6", + "hash": "sha256-rUg3keud5JjMtyncxNc2/8Sey2bMTth/AFjeketJR88=" + }, + { + "pname": "Microsoft.AspNetCore.Connections.Abstractions", + "version": "8.0.6", + "hash": "sha256-KHvMgEHnTHWhIiSdSUqpqbyBNr0mbDjVoNuO1at0hdM=" + }, + { + "pname": "Microsoft.AspNetCore.Http.Connections.Client", + "version": "8.0.6", + "hash": "sha256-xnkHzIcRguVrPg2gjhYph0QB1GqUmILkx8N8IIdxQr8=" + }, + { + "pname": "Microsoft.AspNetCore.Http.Connections.Common", + "version": "8.0.6", + "hash": "sha256-BCtPpMHlb6jZkoRS2zGGzRi2THs6mVJVKdrhiFhIK4A=" + }, + { + "pname": "Microsoft.AspNetCore.SignalR.Client", + "version": "8.0.6", + "hash": "sha256-sQZCF8hHvKxuQQf2bxhxFWlhUSkN8+Fv934C8kF8TTM=" + }, + { + "pname": "Microsoft.AspNetCore.SignalR.Client.Core", + "version": "8.0.6", + "hash": "sha256-MnhXOKKuLtU8tihk5avjVxxCPMKP9gjNPZ9q1/zUhk4=" + }, + { + "pname": "Microsoft.AspNetCore.SignalR.Common", + "version": "8.0.6", + "hash": "sha256-/wbEZIijxY3Kkz0RZoN34SGpKxu685+dB0zDlplilg0=" + }, + { + "pname": "Microsoft.AspNetCore.SignalR.Protocols.Json", + "version": "8.0.6", + "hash": "sha256-pg/4xnUDB6xN8uY8puHNGYwALftvucsn8Ee2nw473Bc=" + }, + { + "pname": "Microsoft.CodeAnalysis.NetAnalyzers", + "version": "8.0.0", + "hash": "sha256-Z6MIb9lJskYOEiBZR36pwFI5wWekajx5WJvVA2a/f9Y=" + }, + { + "pname": "Microsoft.CodeCoverage", + "version": "17.8.0", + "hash": "sha256-cv/wAXfTNS+RWEsHWNKqRDHC7LOQSSdFJ1a9cZuSfJw=" + }, + { + "pname": "Microsoft.CSharp", + "version": "4.7.0", + "hash": "sha256-Enknv2RsFF68lEPdrf5M+BpV1kHoLTVRApKUwuk/pj0=" + }, + { + "pname": "Microsoft.Data.Sqlite", + "version": "8.0.6", + "hash": "sha256-t1g1cF4T26Np10H7opo/vCMTMNb9SS9pmLA9pSCUBp4=" + }, + { + "pname": "Microsoft.Data.Sqlite.Core", + "version": "8.0.6", + "hash": "sha256-MgUBbb0LDM1ixm8pBfBrSTVjNoGFn6NQMD36mirELmo=" + }, + { + "pname": "Microsoft.EntityFrameworkCore", + "version": "8.0.6", + "hash": "sha256-T9Pz6bCGULBEYjzdUBd1KXSAnw1c4VljSkwgbTE2MmE=" + }, + { + "pname": "Microsoft.EntityFrameworkCore.Abstractions", + "version": "8.0.6", + "hash": "sha256-RdcIA9WUJnHyAFdlpBPs5qUusKMUH9uLFGusKBWDCX8=" + }, + { + "pname": "Microsoft.EntityFrameworkCore.Analyzers", + "version": "8.0.6", + "hash": "sha256-aTWfaOL0MfWYBbR+1Q1g+sxzmcjA4Q/OBFnVZDQqKJ8=" + }, + { + "pname": "Microsoft.EntityFrameworkCore.Relational", + "version": "8.0.6", + "hash": "sha256-l2fkzSq3Tb15Uq7a879Bihat+Y7rijDwsrs/MDiApdw=" + }, + { + "pname": "Microsoft.EntityFrameworkCore.Sqlite.Core", + "version": "8.0.6", + "hash": "sha256-4rVgUuCdBUvQyEnadrieZ1RxgwGAfuRCj9kkWM24NKA=" + }, + { + "pname": "Microsoft.Extensions.ApiDescription.Server", + "version": "6.0.5", + "hash": "sha256-RJjBWz+UHxkQE2s7CeGYdTZ218mCufrxl0eBykZdIt4=" + }, + { + "pname": "Microsoft.Extensions.Caching.Abstractions", + "version": "8.0.0", + "hash": "sha256-xGpKrywQvU1Wm/WolYIxgHYEFfgkNGeJ+GGc5DT3phI=" + }, + { + "pname": "Microsoft.Extensions.Caching.Memory", + "version": "8.0.0", + "hash": "sha256-RUQe2VgOATM9JkZ/wGm9mreKoCmOS4pPyvyJWBqMaC8=" + }, + { + "pname": "Microsoft.Extensions.Configuration", + "version": "3.1.0", + "hash": "sha256-KI1WXvnF/Xe9cKTdDjzm0vd5h9bmM+3KinuWlsF/X+c=" + }, + { + "pname": "Microsoft.Extensions.Configuration.Abstractions", + "version": "2.0.0", + "hash": "sha256-jveXZPNvx30uWT3q80OA1YaSb4K/KGOhlyun97IXn8Y=" + }, + { + "pname": "Microsoft.Extensions.Configuration.Abstractions", + "version": "3.1.0", + "hash": "sha256-GMxvf0iAiWUWo0awlDczzcxNo8+MITBLp0/SqqYo8Lg=" + }, + { + "pname": "Microsoft.Extensions.Configuration.Abstractions", + "version": "6.0.0", + "hash": "sha256-Evg+Ynj2QUa6Gz+zqF+bUyfGD0HI5A2fHmxZEXbn3HA=" + }, + { + "pname": "Microsoft.Extensions.Configuration.Abstractions", + "version": "8.0.0", + "hash": "sha256-4eBpDkf7MJozTZnOwQvwcfgRKQGcNXe0K/kF+h5Rl8o=" + }, + { + "pname": "Microsoft.Extensions.Configuration.Binder", + "version": "3.1.0", + "hash": "sha256-/B7WjPZPvRM+CPgfaCQunSi2mpclH4orrFxHGLs8Uo4=" + }, + { + "pname": "Microsoft.Extensions.Configuration.Binder", + "version": "8.0.0", + "hash": "sha256-GanfInGzzoN2bKeNwON8/Hnamr6l7RTpYLA49CNXD9Q=" + }, + { + "pname": "Microsoft.Extensions.DependencyInjection", + "version": "3.0.0", + "hash": "sha256-RyT+m4OsHb1csXt5OYtjdx8LIsRlOKEWzSbAm4jfCzM=" + }, + { + "pname": "Microsoft.Extensions.DependencyInjection", + "version": "3.1.0", + "hash": "sha256-S72hzDAYWzrfCH5JLJBRtwPEM/Xjh17HwcKuA3wLhvU=" + }, + { + "pname": "Microsoft.Extensions.DependencyInjection", + "version": "8.0.0", + "hash": "sha256-+qIDR8hRzreCHNEDtUcPfVHQdurzWPo/mqviCH78+EQ=" + }, + { + "pname": "Microsoft.Extensions.DependencyInjection.Abstractions", + "version": "3.0.0", + "hash": "sha256-dGTb6sHsjZ86fiLnwbauGf9CQdN7G96lCM4ADjaSSBs=" + }, + { + "pname": "Microsoft.Extensions.DependencyInjection.Abstractions", + "version": "3.1.0", + "hash": "sha256-cG0XS3ibJ9siu8eaQGJnyRwlEbQ9c/eGCtvPjs7Rdd8=" + }, + { + "pname": "Microsoft.Extensions.DependencyInjection.Abstractions", + "version": "6.0.0", + "hash": "sha256-SZke0jNKIqJvvukdta+MgIlGsrP2EdPkkS8lfLg7Ju4=" + }, + { + "pname": "Microsoft.Extensions.DependencyInjection.Abstractions", + "version": "8.0.0", + "hash": "sha256-75KzEGWjbRELczJpCiJub+ltNUMMbz5A/1KQU+5dgP8=" + }, + { + "pname": "Microsoft.Extensions.DependencyInjection.Abstractions", + "version": "8.0.1", + "hash": "sha256-lzTYLpRDAi3wW9uRrkTNJtMmaYdtGJJHdBLbUKu60PM=" + }, + { + "pname": "Microsoft.Extensions.DependencyModel", + "version": "8.0.0", + "hash": "sha256-qkCdwemqdZY/yIW5Xmh7Exv74XuE39T8aHGHCofoVgo=" + }, + { + "pname": "Microsoft.Extensions.Diagnostics.Abstractions", + "version": "8.0.0", + "hash": "sha256-USD5uZOaahMqi6u7owNWx/LR4EDrOwqPrAAim7iRpJY=" + }, + { + "pname": "Microsoft.Extensions.Diagnostics.HealthChecks", + "version": "6.0.9", + "hash": "sha256-2KRX3U+FNauAZJln0zeJayHPVUR86luWCmfESutHvRo=" + }, + { + "pname": "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions", + "version": "6.0.9", + "hash": "sha256-4inPpRPTC+hs3vaZJ5Par/uTbiFqlRvxMBQfDDDPYts=" + }, + { + "pname": "Microsoft.Extensions.Features", + "version": "8.0.6", + "hash": "sha256-JUkiL4zHf8kuY6/5Yr1zhf4/GUDfKk7gUHzMejlNg04=" + }, + { + "pname": "Microsoft.Extensions.FileProviders.Abstractions", + "version": "6.0.0", + "hash": "sha256-uBjWjHKEXjZ9fDfFxMjOou3lhfTNhs1yO+e3fpWreLk=" + }, + { + "pname": "Microsoft.Extensions.FileProviders.Abstractions", + "version": "8.0.0", + "hash": "sha256-uQSXmt47X2HGoVniavjLICbPtD2ReQOYQMgy3l0xuMU=" + }, + { + "pname": "Microsoft.Extensions.Hosting.Abstractions", + "version": "6.0.0", + "hash": "sha256-ksIPO6RhfbYx/i3su4J3sDhoL+TDnITKsgIpEqnpktc=" + }, + { + "pname": "Microsoft.Extensions.Hosting.Abstractions", + "version": "8.0.0", + "hash": "sha256-0JBx+wwt5p1SPfO4m49KxNOXPAzAU0A+8tEc/itvpQE=" + }, + { + "pname": "Microsoft.Extensions.Http", + "version": "3.1.0", + "hash": "sha256-nhkt3qVsTXccgrW3mvx8veaJICREzeJrXfrjXI7rNwo=" + }, + { + "pname": "Microsoft.Extensions.Logging", + "version": "3.1.0", + "hash": "sha256-BDrsqgiLYAphIOlnEuXy6iLoED/ykFO53merHCSGfrQ=" + }, + { + "pname": "Microsoft.Extensions.Logging", + "version": "8.0.0", + "hash": "sha256-Meh0Z0X7KyOEG4l0RWBcuHHihcABcvCyfUXgasmQ91o=" + }, + { + "pname": "Microsoft.Extensions.Logging.Abstractions", + "version": "3.1.0", + "hash": "sha256-D3GHIGN0r6zLHHP2/5jt6hB0oMvRyl5ysvVrPVmmyv8=" + }, + { + "pname": "Microsoft.Extensions.Logging.Abstractions", + "version": "6.0.2", + "hash": "sha256-VRyyMGCMBh25vIIzbLapMAqY8UffqJRvkF/kcYcjZfM=" + }, + { + "pname": "Microsoft.Extensions.Logging.Abstractions", + "version": "8.0.0", + "hash": "sha256-Jmddjeg8U5S+iBTwRlVAVLeIHxc4yrrNgqVMOB7EjM4=" + }, + { + "pname": "Microsoft.Extensions.Logging.Abstractions", + "version": "8.0.1", + "hash": "sha256-TYce3qvMr92JbAZ62ATBsocaH0joJzw0px0tYGZ9N0U=" + }, + { + "pname": "Microsoft.Extensions.ObjectPool", + "version": "7.0.0", + "hash": "sha256-JxlxPnjmWbEhYLNWlSn+kNxUfwvlxgKiKFjkJyYGn5Y=" + }, + { + "pname": "Microsoft.Extensions.Options", + "version": "3.1.0", + "hash": "sha256-0EOsmu/oLAz9WXp1CtMlclzdvs5jea0zJmokeyFnbCo=" + }, + { + "pname": "Microsoft.Extensions.Options", + "version": "6.0.0", + "hash": "sha256-DxnEgGiCXpkrxFkxXtOXqwaiAtoIjA8VSSWCcsW0FwE=" + }, + { + "pname": "Microsoft.Extensions.Options", + "version": "8.0.0", + "hash": "sha256-n2m4JSegQKUTlOsKLZUUHHKMq926eJ0w9N9G+I3FoFw=" + }, + { + "pname": "Microsoft.Extensions.Options", + "version": "8.0.2", + "hash": "sha256-AjcldddddtN/9aH9pg7ClEZycWtFHLi9IPe1GGhNQys=" + }, + { + "pname": "Microsoft.Extensions.Primitives", + "version": "2.0.0", + "hash": "sha256-q44LtMvyNEKSvgERvA+BrasKapP92Sc91QR4u2TJ9/Y=" + }, + { + "pname": "Microsoft.Extensions.Primitives", + "version": "3.1.0", + "hash": "sha256-K/cDq+LMfK4cBCvKWkmWAC+IB6pEWolR1J5zL60QPvA=" + }, + { + "pname": "Microsoft.Extensions.Primitives", + "version": "6.0.0", + "hash": "sha256-AgvysszpQ11AiTBJFkvSy8JnwIWTj15Pfek7T7ThUc4=" + }, + { + "pname": "Microsoft.Extensions.Primitives", + "version": "8.0.0", + "hash": "sha256-FU8qj3DR8bDdc1c+WeGZx/PCZeqqndweZM9epcpXjSo=" + }, + { + "pname": "Microsoft.IdentityModel.Abstractions", + "version": "7.1.2", + "hash": "sha256-QN2btwsc8XnOp8RxwSY4ntzpqFIrWRZg6ZZEGBZ6TQY=" + }, + { + "pname": "Microsoft.IdentityModel.JsonWebTokens", + "version": "7.1.2", + "hash": "sha256-kVTS9i3khR7/0JBk52jzv4FUmBsbqntqVyqkDA/APvk=" + }, + { + "pname": "Microsoft.IdentityModel.Logging", + "version": "7.1.2", + "hash": "sha256-6M7Y1u2cBVsO/dP+qrgkMLisXbZgMgyWoRs5Uq/QJ/o=" + }, + { + "pname": "Microsoft.IdentityModel.Protocols", + "version": "7.1.2", + "hash": "sha256-6OXP0vQ6bQ3Xvj3I73eqng6NqqMC4htWKuM8cchZhWI=" + }, + { + "pname": "Microsoft.IdentityModel.Protocols.OpenIdConnect", + "version": "7.1.2", + "hash": "sha256-cAwwCti+/ycdjqNy8PrBNEeuF7u5gYtCX8vBb2qIKRs=" + }, + { + "pname": "Microsoft.IdentityModel.Tokens", + "version": "7.1.2", + "hash": "sha256-qf8y8KCo1ysrK+jCrnR+ARHwlfMWPXLxe7a41FVg4OA=" + }, + { + "pname": "Microsoft.NET.Test.Sdk", + "version": "17.8.0", + "hash": "sha256-uz7QvW+NsVRsp8FR1wjnGEOkUaPX4JyieywvCN6g2+s=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "1.0.1", + "hash": "sha256-mZotlGZqtrqDSoBrZhsxFe6fuOv5/BIo0w2Z2x0zVAU=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "1.1.0", + "hash": "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM=" + }, + { + "pname": "Microsoft.NETCore.Targets", + "version": "1.0.1", + "hash": "sha256-lxxw/Gy32xHi0fLgFWNj4YTFBSBkjx5l6ucmbTyf7V4=" + }, + { + "pname": "Microsoft.NETCore.Targets", + "version": "1.1.0", + "hash": "sha256-0AqQ2gMS8iNlYkrD+BxtIg7cXMnr9xZHtKAuN4bjfaQ=" + }, + { + "pname": "Microsoft.OpenApi", + "version": "1.6.14", + "hash": "sha256-dSJUic2orPGfYVgto9DieRckbtLpPyxHtf+RJ2tmKPM=" + }, + { + "pname": "Microsoft.TestPlatform.ObjectModel", + "version": "17.8.0", + "hash": "sha256-9TwGrjVvbtyetw67Udp3EMK5MX8j0RFRjduxPCs9ESw=" + }, + { + "pname": "Microsoft.TestPlatform.TestHost", + "version": "17.8.0", + "hash": "sha256-+CTYFu631uovLCO47RKe86YaAqfoLA4r73vKORJUsjg=" + }, + { + "pname": "Microsoft.Win32.Primitives", + "version": "4.0.1", + "hash": "sha256-B4t5El/ViBdxALMcpZulewc4j/3SIXf71HhJWhm4Ctk=" + }, + { + "pname": "Microsoft.Win32.Primitives", + "version": "4.3.0", + "hash": "sha256-mBNDmPXNTW54XLnPAUwBRvkIORFM7/j0D0I2SyQPDEg=" + }, + { + "pname": "Moq", + "version": "4.16.1", + "hash": "sha256-9CCEY6246RbB4zaF5xwCDf2XuGoPDpZoJsjrB/riT9Q=" + }, + { + "pname": "NETStandard.Library", + "version": "1.6.0", + "hash": "sha256-ExWI1EKDCRishcfAeHVS/RoJphqSqohmJIC/wz3ZtVo=" + }, + { + "pname": "NETStandard.Library", + "version": "1.6.1", + "hash": "sha256-iNan1ix7RtncGWC9AjAZ2sk70DoxOsmEOgQ10fXm4Pw=" + }, + { + "pname": "Newtonsoft.Json", + "version": "13.0.1", + "hash": "sha256-K2tSVW4n4beRPzPu3rlVaBEMdGvWSv/3Q1fxaDh4Mjo=" + }, + { + "pname": "NuGet.Frameworks", + "version": "6.5.0", + "hash": "sha256-ElqfN4CcKxT3hP2qvxxObb4mnBlYG89IMxO0Sm5oZ2g=" + }, + { + "pname": "OneOf", + "version": "3.0.271", + "hash": "sha256-tFWy8Jg/XVJfVOddjXeCAizq/AUljJrq6J8PF6ArYSU=" + }, + { + "pname": "prometheus-net", + "version": "8.2.1", + "hash": "sha256-NxHeXd4fwwc4MMsT6mrfX81czjHnq2GMStWTabZxMDw=" + }, + { + "pname": "prometheus-net.AspNetCore", + "version": "8.2.1", + "hash": "sha256-dhrATENkD/1GfSPBkAd3GvyHvzR5q+c+k22UTp33z+c=" + }, + { + "pname": "prometheus-net.AspNetCore.HealthChecks", + "version": "8.2.1", + "hash": "sha256-C0RIYDSfmaWMJrQE7QTWdtGVc1iLbNUkTEe0bBUpSQQ=" + }, + { + "pname": "prometheus-net.DotNetRuntime", + "version": "4.4.0", + "hash": "sha256-SbCjfHdQoKPschmSJGAFESmwsqF3vE6c5zrKKZtwP8M=" + }, + { + "pname": "prometheus-net.SystemMetrics", + "version": "3.1.0", + "hash": "sha256-9qzeYA+6Tu1t8Mlfkyx9LCp14dnNyg8+QrBg95bh2Mw=" + }, + { + "pname": "runtime.any.System.Collections", + "version": "4.3.0", + "hash": "sha256-4PGZqyWhZ6/HCTF2KddDsbmTTjxs2oW79YfkberDZS8=" + }, + { + "pname": "runtime.any.System.Diagnostics.Tools", + "version": "4.3.0", + "hash": "sha256-8yLKFt2wQxkEf7fNfzB+cPUCjYn2qbqNgQ1+EeY2h/I=" + }, + { + "pname": "runtime.any.System.Diagnostics.Tracing", + "version": "4.3.0", + "hash": "sha256-dsmTLGvt8HqRkDWP8iKVXJCS+akAzENGXKPV18W2RgI=" + }, + { + "pname": "runtime.any.System.Globalization", + "version": "4.3.0", + "hash": "sha256-PaiITTFI2FfPylTEk7DwzfKeiA/g/aooSU1pDcdwWLU=" + }, + { + "pname": "runtime.any.System.Globalization.Calendars", + "version": "4.3.0", + "hash": "sha256-AYh39tgXJVFu8aLi9Y/4rK8yWMaza4S4eaxjfcuEEL4=" + }, + { + "pname": "runtime.any.System.IO", + "version": "4.3.0", + "hash": "sha256-vej7ySRhyvM3pYh/ITMdC25ivSd0WLZAaIQbYj/6HVE=" + }, + { + "pname": "runtime.any.System.Reflection", + "version": "4.3.0", + "hash": "sha256-ns6f++lSA+bi1xXgmW1JkWFb2NaMD+w+YNTfMvyAiQk=" + }, + { + "pname": "runtime.any.System.Reflection.Extensions", + "version": "4.3.0", + "hash": "sha256-Y2AnhOcJwJVYv7Rp6Jz6ma0fpITFqJW+8rsw106K2X8=" + }, + { + "pname": "runtime.any.System.Reflection.Primitives", + "version": "4.3.0", + "hash": "sha256-LkPXtiDQM3BcdYkAm5uSNOiz3uF4J45qpxn5aBiqNXQ=" + }, + { + "pname": "runtime.any.System.Resources.ResourceManager", + "version": "4.3.0", + "hash": "sha256-9EvnmZslLgLLhJ00o5MWaPuJQlbUFcUF8itGQNVkcQ4=" + }, + { + "pname": "runtime.any.System.Runtime", + "version": "4.3.0", + "hash": "sha256-qwhNXBaJ1DtDkuRacgHwnZmOZ1u9q7N8j0cWOLYOELM=" + }, + { + "pname": "runtime.any.System.Runtime.Handles", + "version": "4.3.0", + "hash": "sha256-PQRACwnSUuxgVySO1840KvqCC9F8iI9iTzxNW0RcBS4=" + }, + { + "pname": "runtime.any.System.Runtime.InteropServices", + "version": "4.3.0", + "hash": "sha256-Kaw5PnLYIiqWbsoF3VKJhy7pkpoGsUwn4ZDCKscbbzA=" + }, + { + "pname": "runtime.any.System.Text.Encoding", + "version": "4.3.0", + "hash": "sha256-Q18B9q26MkWZx68exUfQT30+0PGmpFlDgaF0TnaIGCs=" + }, + { + "pname": "runtime.any.System.Text.Encoding.Extensions", + "version": "4.3.0", + "hash": "sha256-6MYj0RmLh4EVqMtO/MRqBi0HOn5iG4x9JimgCCJ+EFM=" + }, + { + "pname": "runtime.any.System.Threading.Tasks", + "version": "4.3.0", + "hash": "sha256-agdOM0NXupfHbKAQzQT8XgbI9B8hVEh+a/2vqeHctg4=" + }, + { + "pname": "runtime.any.System.Threading.Timer", + "version": "4.3.0", + "hash": "sha256-BgHxXCIbicVZtpgMimSXixhFC3V+p5ODqeljDjO8hCs=" + }, + { + "pname": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-LXUPLX3DJxsU1Pd3UwjO1PO9NM2elNEDXeu2Mu/vNps=" + }, + { + "pname": "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-qeSqaUI80+lqw5MK4vMpmO0CZaqrmYktwp6L+vQAb0I=" + }, + { + "pname": "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-SrHqT9wrCBsxILWtaJgGKd6Odmxm8/Mh7Kh0CUkZVzA=" + }, + { + "pname": "runtime.native.System", + "version": "4.0.0", + "hash": "sha256-bmaM0ovT4X4aqDJOR255Yda/u3fmHZskU++lMnsy894=" + }, + { + "pname": "runtime.native.System", + "version": "4.3.0", + "hash": "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y=" + }, + { + "pname": "runtime.native.System.IO.Compression", + "version": "4.1.0", + "hash": "sha256-085JrZxNEwIHdBWKKKFsh1JzpF0AblvrUsz5T8kH4jQ=" + }, + { + "pname": "runtime.native.System.IO.Compression", + "version": "4.3.0", + "hash": "sha256-DWnXs4vlKoU6WxxvCArTJupV6sX3iBbZh8SbqfHace8=" + }, + { + "pname": "runtime.native.System.Net.Http", + "version": "4.0.1", + "hash": "sha256-5nWnTQrA1T6t9r8MqIiV4yTNu+IH0of2OX1qteoS+8E=" + }, + { + "pname": "runtime.native.System.Net.Http", + "version": "4.3.0", + "hash": "sha256-c556PyheRwpYhweBjSfIwEyZHnAUB8jWioyKEcp/2dg=" + }, + { + "pname": "runtime.native.System.Security.Cryptography", + "version": "4.0.0", + "hash": "sha256-6Q8eYzC32BbGIiTHoQaE6B3cD81vYQcH5SCswYRSp0w=" + }, + { + "pname": "runtime.native.System.Security.Cryptography.Apple", + "version": "4.3.0", + "hash": "sha256-2IhBv0i6pTcOyr8FFIyfPEaaCHUmJZ8DYwLUwJ+5waw=" + }, + { + "pname": "runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-Jy01KhtcCl2wjMpZWH+X3fhHcVn+SyllWFY8zWlz/6I=" + }, + { + "pname": "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-wyv00gdlqf8ckxEdV7E+Ql9hJIoPcmYEuyeWb5Oz3mM=" + }, + { + "pname": "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-zi+b4sCFrA9QBiSGDD7xPV27r3iHGlV99gpyVUjRmc4=" + }, + { + "pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple", + "version": "4.3.0", + "hash": "sha256-serkd4A7F6eciPiPJtUyJyxzdAtupEcWIZQ9nptEzIM=" + }, + { + "pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-gybQU6mPgaWV3rBG2dbH6tT3tBq8mgze3PROdsuWnX0=" + }, + { + "pname": "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-VsP72GVveWnGUvS/vjOQLv1U80H2K8nZ4fDAmI61Hm4=" + }, + { + "pname": "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-4yKGa/IrNCKuQ3zaDzILdNPD32bNdy6xr5gdJigyF5g=" + }, + { + "pname": "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-HmdJhhRsiVoOOCcUvAwdjpMRiyuSwdcgEv2j9hxi+Zc=" + }, + { + "pname": "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-pVFUKuPPIx0edQKjzRon3zKq8zhzHEzko/lc01V/jdw=" + }, + { + "pname": "runtime.unix.Microsoft.Win32.Primitives", + "version": "4.3.0", + "hash": "sha256-LZb23lRXzr26tRS5aA0xyB08JxiblPDoA7HBvn6awXg=" + }, + { + "pname": "runtime.unix.System.Console", + "version": "4.3.0", + "hash": "sha256-AHkdKShTRHttqfMjmi+lPpTuCrM5vd/WRy6Kbtie190=" + }, + { + "pname": "runtime.unix.System.Diagnostics.Debug", + "version": "4.3.0", + "hash": "sha256-ReoazscfbGH+R6s6jkg5sIEHWNEvjEoHtIsMbpc7+tI=" + }, + { + "pname": "runtime.unix.System.IO.FileSystem", + "version": "4.3.0", + "hash": "sha256-Pf4mRl6YDK2x2KMh0WdyNgv0VUNdSKVDLlHqozecy5I=" + }, + { + "pname": "runtime.unix.System.Net.Primitives", + "version": "4.3.0", + "hash": "sha256-pHJ+I6i16MV6m77uhTC6GPY6jWGReE3SSP3fVB59ti0=" + }, + { + "pname": "runtime.unix.System.Net.Sockets", + "version": "4.3.0", + "hash": "sha256-IvgOeA2JuBjKl5yAVGjPYMPDzs9phb3KANs95H9v1w4=" + }, + { + "pname": "runtime.unix.System.Private.Uri", + "version": "4.3.0", + "hash": "sha256-c5tXWhE/fYbJVl9rXs0uHh3pTsg44YD1dJvyOA0WoMs=" + }, + { + "pname": "runtime.unix.System.Runtime.Extensions", + "version": "4.3.0", + "hash": "sha256-l8S9gt6dk3qYG6HYonHtdlYtBKyPb29uQ6NDjmrt3V4=" + }, + { + "pname": "Serilog", + "version": "3.1.1", + "hash": "sha256-L263y8jkn7dNFD2jAUK6mgvyRTqFe39i1tRhVZsNZTI=" + }, + { + "pname": "Serilog.AspNetCore", + "version": "8.0.1", + "hash": "sha256-a07P+0co6QuLuUw09PvvpLf9gix88Nw3dACsnSRcuW4=" + }, + { + "pname": "Serilog.Extensions.Hosting", + "version": "8.0.0", + "hash": "sha256-OEVkEQoONawJF+SXeyqqgU0OGp9ubtt9aXT+rC25j4E=" + }, + { + "pname": "Serilog.Extensions.Logging", + "version": "8.0.0", + "hash": "sha256-GoWxCpkdahMvYd7ZrhwBxxTyjHGcs9ENNHJCp0la6iA=" + }, + { + "pname": "Serilog.Formatting.Compact", + "version": "2.0.0", + "hash": "sha256-c3STGleyMijY4QnxPuAz/NkJs1r+TZAPjlmAKLF4+3g=" + }, + { + "pname": "Serilog.Settings.Configuration", + "version": "8.0.0", + "hash": "sha256-JQ39fvhOFSUHE6r9DXJvLaZI+Lk7AYzuskQu3ux+hQg=" + }, + { + "pname": "Serilog.Sinks.Async", + "version": "1.5.0", + "hash": "sha256-z78CCkdeV+C4HnrH/HX0D61V3fLxVwOQdLy8So0diy0=" + }, + { + "pname": "Serilog.Sinks.Console", + "version": "5.0.1", + "hash": "sha256-aveoZM25ykc2haBHCXWD09jxZ2t2tYIGmaNTaO2V0jI=" + }, + { + "pname": "Serilog.Sinks.Debug", + "version": "2.0.0", + "hash": "sha256-/PLVAE33lTdUEXdahkI5ddFiGZufWnvfsOodQsFB8sQ=" + }, + { + "pname": "Serilog.Sinks.File", + "version": "5.0.0", + "hash": "sha256-GKy9hwOdlu2W0Rw8LiPyEwus+sDtSOTl8a5l9uqz+SQ=" + }, + { + "pname": "Serilog.Sinks.Grafana.Loki", + "version": "7.1.1", + "hash": "sha256-1P6OowVQ+jzO5aNIdExPiqlUZtc6Lz+6kAnsgu3U7LA=" + }, + { + "pname": "Serilog.Sinks.Http", + "version": "8.0.0", + "hash": "sha256-jb6PqCYpESi8XIEMQ8QRe2+QU5iPUqT7dj0Wy4QFo+s=" + }, + { + "pname": "Soulseek", + "version": "8.4.0", + "hash": "sha256-aBnFTUPhY7nY62fSwbfRse8Mz5sItk60QkoqOG/aDQE=" + }, + { + "pname": "SQLitePCLRaw.bundle_e_sqlite3", + "version": "2.1.6", + "hash": "sha256-dZD/bZsYXjOu46ZH5Y/wgh0uhHOqIxC+S+0ecKhr718=" + }, + { + "pname": "SQLitePCLRaw.core", + "version": "2.1.6", + "hash": "sha256-RxWjm52PdmMV98dgDy0BCpF988+BssRZUgALLv7TH/E=" + }, + { + "pname": "SQLitePCLRaw.lib.e_sqlite3", + "version": "2.1.6", + "hash": "sha256-uHt5d+SFUkSd6WD7Tg0J3e8eVoxy/FM/t4PAkc9PJT0=" + }, + { + "pname": "SQLitePCLRaw.provider.e_sqlite3", + "version": "2.1.6", + "hash": "sha256-zHc/YZsd72eXlI8ba1tv58HZWUIiyjJaxq2CCP1hQe8=" + }, + { + "pname": "StyleCop.Analyzers", + "version": "1.2.0-beta.556", + "hash": "sha256-97YYQcr5vZxTvi36608eUkA1wb6xllZQ7UcXbjrYIfU=" + }, + { + "pname": "StyleCop.Analyzers.Unstable", + "version": "1.2.0.556", + "hash": "sha256-aVop7a9r+X2RsZETgngBm3qQPEIiPBWgHzicGSTEymc=" + }, + { + "pname": "Swashbuckle.AspNetCore", + "version": "6.6.2", + "hash": "sha256-kKz+NiXNfmrvrtbzsqnW1ItflNib3rymr3rf9yI5B1M=" + }, + { + "pname": "Swashbuckle.AspNetCore.Swagger", + "version": "6.6.2", + "hash": "sha256-HqMmHMZXYHlRMoT3vIZF8iwhYmfknQmi3N8VmyfwI0k=" + }, + { + "pname": "Swashbuckle.AspNetCore.SwaggerGen", + "version": "6.6.2", + "hash": "sha256-km+bNoRDakEBa2dIjtxK0V6YVvm9hEpdi8xWQ8TJigI=" + }, + { + "pname": "Swashbuckle.AspNetCore.SwaggerUI", + "version": "6.6.2", + "hash": "sha256-ED24tUcwiOkAIMQVQeQFths296yf3lL/Z1sVizQTEHA=" + }, + { + "pname": "System.AppContext", + "version": "4.1.0", + "hash": "sha256-v6YfyfrKmhww+EYHUq6cwYUMj00MQ6SOfJtcGVRlYzs=" + }, + { + "pname": "System.AppContext", + "version": "4.3.0", + "hash": "sha256-yg95LNQOwFlA1tWxXdQkVyJqT4AnoDc+ACmrNvzGiZg=" + }, + { + "pname": "System.Buffers", + "version": "4.0.0", + "hash": "sha256-+YUymoyS0O+xVyF2+LiAdZlMww8nofPN4ja9ylYqRo8=" + }, + { + "pname": "System.Buffers", + "version": "4.3.0", + "hash": "sha256-XqZWb4Kd04960h4U9seivjKseGA/YEIpdplfHYHQ9jk=" + }, + { + "pname": "System.Collections", + "version": "4.0.11", + "hash": "sha256-puoFMkx4Z55C1XPxNw3np8nzNGjH+G24j43yTIsDRL0=" + }, + { + "pname": "System.Collections", + "version": "4.3.0", + "hash": "sha256-afY7VUtD6w/5mYqrce8kQrvDIfS2GXDINDh73IjxJKc=" + }, + { + "pname": "System.Collections.Concurrent", + "version": "4.0.12", + "hash": "sha256-zIEM7AB4SyE9u6G8+o+gCLLwkgi6+3rHQVPdn/dEwB8=" + }, + { + "pname": "System.Collections.Concurrent", + "version": "4.3.0", + "hash": "sha256-KMY5DfJnDeIsa13DpqvyN8NkReZEMAFnlmNglVoFIXI=" + }, + { + "pname": "System.Collections.NonGeneric", + "version": "4.3.0", + "hash": "sha256-8/yZmD4jjvq7m68SPkJZLBQ79jOTOyT5lyzX4SCYAx8=" + }, + { + "pname": "System.Collections.Specialized", + "version": "4.3.0", + "hash": "sha256-QNg0JJNx+zXMQ26MJRPzH7THdtqjrNtGLUgaR1SdvOk=" + }, + { + "pname": "System.ComponentModel", + "version": "4.3.0", + "hash": "sha256-i00uujMO4JEDIEPKLmdLY3QJ6vdSpw6Gh9oOzkFYBiU=" + }, + { + "pname": "System.ComponentModel.Annotations", + "version": "4.3.0", + "hash": "sha256-zQVRu6SnLS7aKetDaxvo7zAHWLOB7K/mtgs/uaQtYqk=" + }, + { + "pname": "System.ComponentModel.Primitives", + "version": "4.3.0", + "hash": "sha256-IOMJleuIBppmP4ECB3uftbdcgL7CCd56+oAD/Sqrbus=" + }, + { + "pname": "System.ComponentModel.TypeConverter", + "version": "4.3.0", + "hash": "sha256-PSDiPYt8PgTdTUBz+GH6lHCaM1YgfObneHnZsc8Fz54=" + }, + { + "pname": "System.Configuration.ConfigurationManager", + "version": "8.0.0", + "hash": "sha256-xhljqSkNQk8DMkEOBSYnn9lzCSEDDq4yO910itptqiE=" + }, + { + "pname": "System.Console", + "version": "4.0.0", + "hash": "sha256-jtZfT/TpJtLisV/y5Mk3IfCpE79zwhBYXtyGP9jC3Xo=" + }, + { + "pname": "System.Console", + "version": "4.3.0", + "hash": "sha256-Xh3PPBZr0pDbDaK8AEHbdGz7ePK6Yi1ZyRWI1JM6mbo=" + }, + { + "pname": "System.Diagnostics.Debug", + "version": "4.0.11", + "hash": "sha256-P+rSQJVoN6M56jQbs76kZ9G3mAWFdtF27P/RijN8sj4=" + }, + { + "pname": "System.Diagnostics.Debug", + "version": "4.3.0", + "hash": "sha256-fkA79SjPbSeiEcrbbUsb70u9B7wqbsdM9s1LnoKj0gM=" + }, + { + "pname": "System.Diagnostics.DiagnosticSource", + "version": "4.0.0", + "hash": "sha256-dYh9UoFesuGcHY+ewsI+z2WnNy+bwHPsHQ3t85cbzNg=" + }, + { + "pname": "System.Diagnostics.DiagnosticSource", + "version": "4.3.0", + "hash": "sha256-OFJRb0ygep0Z3yDBLwAgM/Tkfs4JCDtsNhwDH9cd1Xw=" + }, + { + "pname": "System.Diagnostics.DiagnosticSource", + "version": "8.0.0", + "hash": "sha256-+aODaDEQMqla5RYZeq0Lh66j+xkPYxykrVvSCmJQ+Vs=" + }, + { + "pname": "System.Diagnostics.EventLog", + "version": "8.0.0", + "hash": "sha256-rt8xc3kddpQY4HEdghlBeOK4gdw5yIj4mcZhAVtk2/Y=" + }, + { + "pname": "System.Diagnostics.PerformanceCounter", + "version": "8.0.0", + "hash": "sha256-CbTL+orc5YcEJfKbBtr/9p/0rNVVOQPz/fOEaA6Pu5k=" + }, + { + "pname": "System.Diagnostics.Tools", + "version": "4.0.1", + "hash": "sha256-vSBqTbmWXylvRa37aWyktym+gOpsvH43mwr6A962k6U=" + }, + { + "pname": "System.Diagnostics.Tools", + "version": "4.3.0", + "hash": "sha256-gVOv1SK6Ape0FQhCVlNOd9cvQKBvMxRX9K0JPVi8w0Y=" + }, + { + "pname": "System.Diagnostics.TraceSource", + "version": "4.3.0", + "hash": "sha256-xpxwaXsRcgso8Gj0cqY4+Hvvz6vZkmEMh5/J204j3M8=" + }, + { + "pname": "System.Diagnostics.Tracing", + "version": "4.1.0", + "hash": "sha256-JA0jJcLbU3zh52ub3zweob2EVHvxOqiC6SCYHrY5WbQ=" + }, + { + "pname": "System.Diagnostics.Tracing", + "version": "4.3.0", + "hash": "sha256-hCETZpHHGVhPYvb4C0fh4zs+8zv4GPoixagkLZjpa9Q=" + }, + { + "pname": "System.Dynamic.Runtime", + "version": "4.3.0", + "hash": "sha256-k75gjOYimIQtLBD5NDzwwi3ZMUBPRW3jmc3evDMMJbU=" + }, + { + "pname": "System.Globalization", + "version": "4.0.11", + "hash": "sha256-rbSgc2PIEc2c2rN6LK3qCREAX3DqA2Nq1WcLrZYsDBw=" + }, + { + "pname": "System.Globalization", + "version": "4.3.0", + "hash": "sha256-caL0pRmFSEsaoeZeWN5BTQtGrAtaQPwFi8YOZPZG5rI=" + }, + { + "pname": "System.Globalization.Calendars", + "version": "4.0.1", + "hash": "sha256-EJN3LbN+b0O9Dr2eg7kfThCYpne0iJ/H/GIyUTNVYC8=" + }, + { + "pname": "System.Globalization.Calendars", + "version": "4.3.0", + "hash": "sha256-uNOD0EOVFgnS2fMKvMiEtI9aOw00+Pfy/H+qucAQlPc=" + }, + { + "pname": "System.Globalization.Extensions", + "version": "4.0.1", + "hash": "sha256-zLtkPryJwqTGcJqMC6zoMMvMrT+aAL5GoumjmMtqUEI=" + }, + { + "pname": "System.Globalization.Extensions", + "version": "4.3.0", + "hash": "sha256-mmJWA27T0GRVuFP9/sj+4TrR4GJWrzNIk2PDrbr7RQk=" + }, + { + "pname": "System.IdentityModel.Tokens.Jwt", + "version": "7.1.2", + "hash": "sha256-EBVWd0gyU8QM23xclTQAHE/yGbXvHKqZfZ80b1VHuiU=" + }, + { + "pname": "System.IO", + "version": "4.1.0", + "hash": "sha256-V6oyQFwWb8NvGxAwvzWnhPxy9dKOfj/XBM3tEC5aHrw=" + }, + { + "pname": "System.IO", + "version": "4.3.0", + "hash": "sha256-ruynQHekFP5wPrDiVyhNiRIXeZ/I9NpjK5pU+HPDiRY=" + }, + { + "pname": "System.IO.Compression", + "version": "4.1.0", + "hash": "sha256-UT4KEfJNZOk7b4X0AqLFUsqfHu6myVH/BhbRKYc+1Uc=" + }, + { + "pname": "System.IO.Compression", + "version": "4.3.0", + "hash": "sha256-f5PrQlQgj5Xj2ZnHxXW8XiOivaBvfqDao9Sb6AVinyA=" + }, + { + "pname": "System.IO.Compression.ZipFile", + "version": "4.0.1", + "hash": "sha256-An0Twb9JODl/nuVm6MR0kJ3aj4WxGpI/1/vVp5b94kA=" + }, + { + "pname": "System.IO.Compression.ZipFile", + "version": "4.3.0", + "hash": "sha256-WQl+JgWs+GaRMeiahTFUbrhlXIHapzcpTFXbRvAtvvs=" + }, + { + "pname": "System.IO.FileSystem", + "version": "4.0.1", + "hash": "sha256-4VKXFgcGYCTWVXjAlniAVq0dO3o5s8KHylg2wg2/7k0=" + }, + { + "pname": "System.IO.FileSystem", + "version": "4.3.0", + "hash": "sha256-vNIYnvlayuVj0WfRfYKpDrhDptlhp1pN8CYmlVd2TXw=" + }, + { + "pname": "System.IO.FileSystem.Primitives", + "version": "4.0.1", + "hash": "sha256-IpigKMomqb6pmYWkrlf0ZdpILtRluX2cX5sOKVW0Feg=" + }, + { + "pname": "System.IO.FileSystem.Primitives", + "version": "4.3.0", + "hash": "sha256-LMnfg8Vwavs9cMnq9nNH8IWtAtSfk0/Fy4s4Rt9r1kg=" + }, + { + "pname": "System.IO.Pipelines", + "version": "8.0.0", + "hash": "sha256-LdpB1s4vQzsOODaxiKstLks57X9DTD5D6cPx8DE1wwE=" + }, + { + "pname": "System.Linq", + "version": "4.1.0", + "hash": "sha256-ZQpFtYw5N1F1aX0jUK3Tw+XvM5tnlnshkTCNtfVA794=" + }, + { + "pname": "System.Linq", + "version": "4.3.0", + "hash": "sha256-R5uiSL3l6a3XrXSSL6jz+q/PcyVQzEAByiuXZNSqD/A=" + }, + { + "pname": "System.Linq.Expressions", + "version": "4.1.0", + "hash": "sha256-7zqB+FXgkvhtlBzpcZyd81xczWP0D3uWssyAGw3t7b4=" + }, + { + "pname": "System.Linq.Expressions", + "version": "4.3.0", + "hash": "sha256-+3pvhZY7rip8HCbfdULzjlC9FPZFpYoQxhkcuFm2wk8=" + }, + { + "pname": "System.Memory", + "version": "4.5.3", + "hash": "sha256-Cvl7RbRbRu9qKzeRBWjavUkseT2jhZBUWV1SPipUWFk=" + }, + { + "pname": "System.Memory", + "version": "4.6.0", + "hash": "sha256-OhAEKzUM6eEaH99DcGaMz2pFLG/q/N4KVWqqiBYUOFo=" + }, + { + "pname": "System.Net.Http", + "version": "4.1.0", + "hash": "sha256-y6PnGuObJvOkhl9CXNFJQcV3SXuEz5yRLOCxGGTEucQ=" + }, + { + "pname": "System.Net.Http", + "version": "4.3.0", + "hash": "sha256-UoBB7WPDp2Bne/fwxKF0nE8grJ6FzTMXdT/jfsphj8Q=" + }, + { + "pname": "System.Net.NameResolution", + "version": "4.3.0", + "hash": "sha256-eGZwCBExWsnirWBHyp2sSSSXp6g7I6v53qNmwPgtJ5c=" + }, + { + "pname": "System.Net.Primitives", + "version": "4.0.11", + "hash": "sha256-2YSijNhCdw/ZU2yfH7vE+ReA8pgxRCXPnWr+ab36v4M=" + }, + { + "pname": "System.Net.Primitives", + "version": "4.3.0", + "hash": "sha256-MY7Z6vOtFMbEKaLW9nOSZeAjcWpwCtdO7/W1mkGZBzE=" + }, + { + "pname": "System.Net.Sockets", + "version": "4.1.0", + "hash": "sha256-muK7oXIX7ykqhXskuUt0KX6Hzg5VogJhUS0JiOB2BY0=" + }, + { + "pname": "System.Net.Sockets", + "version": "4.3.0", + "hash": "sha256-il7dr5VT/QWDg/0cuh+4Es2u8LY//+qqiY9BZmYxSus=" + }, + { + "pname": "System.ObjectModel", + "version": "4.0.12", + "hash": "sha256-MudZ/KYcvYsn2cST3EE049mLikrNkmE7QoUoYKKby+s=" + }, + { + "pname": "System.ObjectModel", + "version": "4.3.0", + "hash": "sha256-gtmRkWP2Kwr3nHtDh0yYtce38z1wrGzb6fjm4v8wN6Q=" + }, + { + "pname": "System.Private.Uri", + "version": "4.3.0", + "hash": "sha256-fVfgcoP4AVN1E5wHZbKBIOPYZ/xBeSIdsNF+bdukIRM=" + }, + { + "pname": "System.Reflection", + "version": "4.1.0", + "hash": "sha256-idZHGH2Yl/hha1CM4VzLhsaR8Ljo/rV7TYe7mwRJSMs=" + }, + { + "pname": "System.Reflection", + "version": "4.3.0", + "hash": "sha256-NQSZRpZLvtPWDlvmMIdGxcVuyUnw92ZURo0hXsEshXY=" + }, + { + "pname": "System.Reflection.Emit", + "version": "4.0.1", + "hash": "sha256-F1MvYoQWHCY89/O4JBwswogitqVvKuVfILFqA7dmuHk=" + }, + { + "pname": "System.Reflection.Emit", + "version": "4.3.0", + "hash": "sha256-5LhkDmhy2FkSxulXR+bsTtMzdU3VyyuZzsxp7/DwyIU=" + }, + { + "pname": "System.Reflection.Emit.ILGeneration", + "version": "4.0.1", + "hash": "sha256-YG+eJBG5P+5adsHiw/lhJwvREnvdHw6CJyS8ZV4Ujd0=" + }, + { + "pname": "System.Reflection.Emit.ILGeneration", + "version": "4.3.0", + "hash": "sha256-mKRknEHNls4gkRwrEgi39B+vSaAz/Gt3IALtS98xNnA=" + }, + { + "pname": "System.Reflection.Emit.Lightweight", + "version": "4.0.1", + "hash": "sha256-uVvNOnL64CPqsgZP2OLqNmxdkZl6Q0fTmKmv9gcBi+g=" + }, + { + "pname": "System.Reflection.Emit.Lightweight", + "version": "4.3.0", + "hash": "sha256-rKx4a9yZKcajloSZHr4CKTVJ6Vjh95ni+zszPxWjh2I=" + }, + { + "pname": "System.Reflection.Extensions", + "version": "4.0.1", + "hash": "sha256-NsfmzM9G/sN3H8X2cdnheTGRsh7zbRzvegnjDzDH/FQ=" + }, + { + "pname": "System.Reflection.Extensions", + "version": "4.3.0", + "hash": "sha256-mMOCYzUenjd4rWIfq7zIX9PFYk/daUyF0A8l1hbydAk=" + }, + { + "pname": "System.Reflection.Metadata", + "version": "1.6.0", + "hash": "sha256-JJfgaPav7UfEh4yRAQdGhLZF1brr0tUWPl6qmfNWq/E=" + }, + { + "pname": "System.Reflection.Primitives", + "version": "4.0.1", + "hash": "sha256-SFSfpWEyCBMAOerrMCOiKnpT+UAWTvRcmoRquJR6Vq0=" + }, + { + "pname": "System.Reflection.Primitives", + "version": "4.3.0", + "hash": "sha256-5ogwWB4vlQTl3jjk1xjniG2ozbFIjZTL9ug0usZQuBM=" + }, + { + "pname": "System.Reflection.TypeExtensions", + "version": "4.1.0", + "hash": "sha256-R0YZowmFda+xzKNR4kKg7neFoE30KfZwp/IwfRSKVK4=" + }, + { + "pname": "System.Reflection.TypeExtensions", + "version": "4.3.0", + "hash": "sha256-4U4/XNQAnddgQIHIJq3P2T80hN0oPdU2uCeghsDTWng=" + }, + { + "pname": "System.Resources.ResourceManager", + "version": "4.0.1", + "hash": "sha256-cZ2/3/fczLjEpn6j3xkgQV9ouOVjy4Kisgw5xWw9kSw=" + }, + { + "pname": "System.Resources.ResourceManager", + "version": "4.3.0", + "hash": "sha256-idiOD93xbbrbwwSnD4mORA9RYi/D/U48eRUsn/WnWGo=" + }, + { + "pname": "System.Runtime", + "version": "4.1.0", + "hash": "sha256-FViNGM/4oWtlP6w0JC0vJU+k9efLKZ+yaXrnEeabDQo=" + }, + { + "pname": "System.Runtime", + "version": "4.3.0", + "hash": "sha256-51813WXpBIsuA6fUtE5XaRQjcWdQ2/lmEokJt97u0Rg=" + }, + { + "pname": "System.Runtime.CompilerServices.Unsafe", + "version": "4.4.0", + "hash": "sha256-SeTI4+yVRO2SmAKgOrMni4070OD+Oo8L1YiEVeKDyig=" + }, + { + "pname": "System.Runtime.CompilerServices.Unsafe", + "version": "6.0.0", + "hash": "sha256-bEG1PnDp7uKYz/OgLOWs3RWwQSVYm+AnPwVmAmcgp2I=" + }, + { + "pname": "System.Runtime.Extensions", + "version": "4.1.0", + "hash": "sha256-X7DZ5CbPY7jHs20YZ7bmcXs9B5Mxptu/HnBUvUnNhGc=" + }, + { + "pname": "System.Runtime.Extensions", + "version": "4.3.0", + "hash": "sha256-wLDHmozr84v1W2zYCWYxxj0FR0JDYHSVRaRuDm0bd/o=" + }, + { + "pname": "System.Runtime.Handles", + "version": "4.0.1", + "hash": "sha256-j2QgVO9ZOjv7D1het98CoFpjoYgxjupuIhuBUmLLH7w=" + }, + { + "pname": "System.Runtime.Handles", + "version": "4.3.0", + "hash": "sha256-KJ5aXoGpB56Y6+iepBkdpx/AfaJDAitx4vrkLqR7gms=" + }, + { + "pname": "System.Runtime.InteropServices", + "version": "4.1.0", + "hash": "sha256-QceAYlJvkPRJc/+5jR+wQpNNI3aqGySWWSO30e/FfQY=" + }, + { + "pname": "System.Runtime.InteropServices", + "version": "4.3.0", + "hash": "sha256-8sDH+WUJfCR+7e4nfpftj/+lstEiZixWUBueR2zmHgI=" + }, + { + "pname": "System.Runtime.InteropServices.RuntimeInformation", + "version": "4.0.0", + "hash": "sha256-5j53amb76A3SPiE3B0llT2XPx058+CgE7OXL4bLalT4=" + }, + { + "pname": "System.Runtime.InteropServices.RuntimeInformation", + "version": "4.3.0", + "hash": "sha256-MYpl6/ZyC6hjmzWRIe+iDoldOMW1mfbwXsduAnXIKGA=" + }, + { + "pname": "System.Runtime.Numerics", + "version": "4.0.1", + "hash": "sha256-1pJt5ZGxLPTX1mjOi8qZPXyyOMkYV0NstoUCv91HYPg=" + }, + { + "pname": "System.Runtime.Numerics", + "version": "4.3.0", + "hash": "sha256-P5jHCgMbgFMYiONvzmaKFeOqcAIDPu/U8bOVrNPYKqc=" + }, + { + "pname": "System.Security.Claims", + "version": "4.3.0", + "hash": "sha256-Fua/rDwAqq4UByRVomAxMPmDBGd5eImRqHVQIeSxbks=" + }, + { + "pname": "System.Security.Cryptography.Algorithms", + "version": "4.2.0", + "hash": "sha256-BelNIpEyToEp/VYKnje/q1P7KNEpQNtOzGPU18pLGpE=" + }, + { + "pname": "System.Security.Cryptography.Algorithms", + "version": "4.3.0", + "hash": "sha256-tAJvNSlczYBJ3Ed24Ae27a55tq/n4D3fubNQdwcKWA8=" + }, + { + "pname": "System.Security.Cryptography.Cng", + "version": "4.2.0", + "hash": "sha256-7F+m3HnmBsgE4xWF8FeCGlaEgQM3drqA6HEaQr6MEoU=" + }, + { + "pname": "System.Security.Cryptography.Cng", + "version": "4.3.0", + "hash": "sha256-u17vy6wNhqok91SrVLno2M1EzLHZm6VMca85xbVChsw=" + }, + { + "pname": "System.Security.Cryptography.Csp", + "version": "4.0.0", + "hash": "sha256-WHyR6vVK3zaT4De7jgQFUar1P5fiX9ECwiVkJDFFm7M=" + }, + { + "pname": "System.Security.Cryptography.Csp", + "version": "4.3.0", + "hash": "sha256-oefdTU/Z2PWU9nlat8uiRDGq/PGZoSPRgkML11pmvPQ=" + }, + { + "pname": "System.Security.Cryptography.Encoding", + "version": "4.0.0", + "hash": "sha256-ZO7ha39J5uHkIF2RoEKv/bW/bLbVvYMO4+rWyYsKHik=" + }, + { + "pname": "System.Security.Cryptography.Encoding", + "version": "4.3.0", + "hash": "sha256-Yuge89N6M+NcblcvXMeyHZ6kZDfwBv3LPMDiF8HhJss=" + }, + { + "pname": "System.Security.Cryptography.OpenSsl", + "version": "4.0.0", + "hash": "sha256-mLijAozynzjiOMyh2P5BHcfVq3Ovd0T/phG08SIbXZs=" + }, + { + "pname": "System.Security.Cryptography.OpenSsl", + "version": "4.3.0", + "hash": "sha256-DL+D2sc2JrQiB4oAcUggTFyD8w3aLEjJfod5JPe+Oz4=" + }, + { + "pname": "System.Security.Cryptography.Primitives", + "version": "4.0.0", + "hash": "sha256-sEdPftfTxQd/8DpdpqUZC2XWC0SjVCPqAkEleLl17EQ=" + }, + { + "pname": "System.Security.Cryptography.Primitives", + "version": "4.3.0", + "hash": "sha256-fnFi7B3SnVj5a+BbgXnbjnGNvWrCEU6Hp/wjsjWz318=" + }, + { + "pname": "System.Security.Cryptography.ProtectedData", + "version": "8.0.0", + "hash": "sha256-fb0pa9sQxN+mr0vnXg1Igbx49CaOqS+GDkTfWNboUvs=" + }, + { + "pname": "System.Security.Cryptography.X509Certificates", + "version": "4.1.0", + "hash": "sha256-sBUUhJP+yYDXvcjNMKqNpn8yzGUpVABwK9vVUvYKjzI=" + }, + { + "pname": "System.Security.Cryptography.X509Certificates", + "version": "4.3.0", + "hash": "sha256-MG3V/owDh273GCUPsGGraNwaVpcydupl3EtPXj6TVG0=" + }, + { + "pname": "System.Security.Principal", + "version": "4.3.0", + "hash": "sha256-rjudVUHdo8pNJg2EVEn0XxxwNo5h2EaYo+QboPkXlYk=" + }, + { + "pname": "System.Security.Principal.Windows", + "version": "4.3.0", + "hash": "sha256-mbdLVUcEwe78p3ZnB6jYsizNEqxMaCAWI3tEQNhRQAE=" + }, + { + "pname": "System.Text.Encoding", + "version": "4.0.11", + "hash": "sha256-PEailOvG05CVgPTyKLtpAgRydlSHmtd5K0Y8GSHY2Lc=" + }, + { + "pname": "System.Text.Encoding", + "version": "4.3.0", + "hash": "sha256-GctHVGLZAa/rqkBNhsBGnsiWdKyv6VDubYpGkuOkBLg=" + }, + { + "pname": "System.Text.Encoding.Extensions", + "version": "4.0.11", + "hash": "sha256-+kf7J3dEhgCbnCM5vHYlsTm5/R/Ud0Jr6elpHm922iI=" + }, + { + "pname": "System.Text.Encoding.Extensions", + "version": "4.3.0", + "hash": "sha256-vufHXg8QAKxHlujPHHcrtGwAqFmsCD6HKjfDAiHyAYc=" + }, + { + "pname": "System.Text.Encodings.Web", + "version": "6.0.0", + "hash": "sha256-UemDHGFoQIG7ObQwRluhVf6AgtQikfHEoPLC6gbFyRo=" + }, + { + "pname": "System.Text.Encodings.Web", + "version": "8.0.0", + "hash": "sha256-IUQkQkV9po1LC0QsqrilqwNzPvnc+4eVvq+hCvq8fvE=" + }, + { + "pname": "System.Text.Json", + "version": "6.0.2", + "hash": "sha256-YLpB48NRiQ8oCuUx0AHJzqUHYgUwXW/60shFkkN/5tM=" + }, + { + "pname": "System.Text.Json", + "version": "8.0.0", + "hash": "sha256-XFcCHMW1u2/WujlWNHaIWkbW1wn8W4kI0QdrwPtWmow=" + }, + { + "pname": "System.Text.RegularExpressions", + "version": "4.1.0", + "hash": "sha256-x6OQN6MCN7S0fJ6EFTfv4rczdUWjwuWE9QQ0P6fbh9c=" + }, + { + "pname": "System.Text.RegularExpressions", + "version": "4.3.0", + "hash": "sha256-VLCk1D1kcN2wbAe3d0YQM/PqCsPHOuqlBY1yd2Yo+K0=" + }, + { + "pname": "System.Threading", + "version": "4.0.11", + "hash": "sha256-mob1Zv3qLQhQ1/xOLXZmYqpniNUMCfn02n8ZkaAhqac=" + }, + { + "pname": "System.Threading", + "version": "4.3.0", + "hash": "sha256-ZDQ3dR4pzVwmaqBg4hacZaVenQ/3yAF/uV7BXZXjiWc=" + }, + { + "pname": "System.Threading.Channels", + "version": "8.0.0", + "hash": "sha256-c5TYoLNXDLroLIPnlfyMHk7nZ70QAckc/c7V199YChg=" + }, + { + "pname": "System.Threading.Tasks", + "version": "4.0.11", + "hash": "sha256-5SLxzFg1df6bTm2t09xeI01wa5qQglqUwwJNlQPJIVs=" + }, + { + "pname": "System.Threading.Tasks", + "version": "4.3.0", + "hash": "sha256-Z5rXfJ1EXp3G32IKZGiZ6koMjRu0n8C1NGrwpdIen4w=" + }, + { + "pname": "System.Threading.Tasks.Extensions", + "version": "4.0.0", + "hash": "sha256-+YdcPkMhZhRbMZHnfsDwpNbUkr31X7pQFGxXYcAPZbE=" + }, + { + "pname": "System.Threading.Tasks.Extensions", + "version": "4.3.0", + "hash": "sha256-X2hQ5j+fxcmnm88Le/kSavjiGOmkcumBGTZKBLvorPc=" + }, + { + "pname": "System.Threading.Tasks.Extensions", + "version": "4.5.4", + "hash": "sha256-owSpY8wHlsUXn5xrfYAiu847L6fAKethlvYx97Ri1ng=" + }, + { + "pname": "System.Threading.ThreadPool", + "version": "4.3.0", + "hash": "sha256-wW0QdvssRoaOfQLazTGSnwYTurE4R8FxDx70pYkL+gg=" + }, + { + "pname": "System.Threading.Timer", + "version": "4.0.1", + "hash": "sha256-5lU6zt1O9JDSPr2KAHw4BYgysHnt0yyZrMNa5IIjxZY=" + }, + { + "pname": "System.Threading.Timer", + "version": "4.3.0", + "hash": "sha256-pmhslmhQhP32TWbBzoITLZ4BoORBqYk25OWbru04p9s=" + }, + { + "pname": "System.Xml.ReaderWriter", + "version": "4.0.11", + "hash": "sha256-haZAFFQ9Sl2DhfvEbdx2YRqKEoxNMU5STaqpMmXw0zA=" + }, + { + "pname": "System.Xml.ReaderWriter", + "version": "4.3.0", + "hash": "sha256-QQ8KgU0lu4F5Unh+TbechO//zaAGZ4MfgvW72Cn1hzA=" + }, + { + "pname": "System.Xml.XDocument", + "version": "4.0.11", + "hash": "sha256-KPz1kxe0RUBM+aoktJ/f9p51GudMERU8Pmwm//HdlFg=" + }, + { + "pname": "System.Xml.XDocument", + "version": "4.3.0", + "hash": "sha256-rWtdcmcuElNOSzCehflyKwHkDRpiOhJJs8CeQ0l1CCI=" + }, + { + "pname": "System.Xml.XmlDocument", + "version": "4.3.0", + "hash": "sha256-kbuV4Y7rVJkfMp2Kgoi8Zvdatm9CZNmlKB3GZgANvy4=" + }, + { + "pname": "TagLibSharp", + "version": "2.3.0", + "hash": "sha256-PD9bVZiPaeC8hNx2D+uDUf701cCaMi2IRi5oPTNN+/w=" + }, + { + "pname": "Utility.CommandLine.Arguments", + "version": "6.0.0", + "hash": "sha256-KviMo/djGPNmpV8ALDIoFLw+jYK+qTza8ZxUHuwGFUU=" + }, + { + "pname": "Utility.EnvironmentVariables", + "version": "1.0.5", + "hash": "sha256-URwJzwhFsm8Qf/5E9XQAK/5k6baZXRRY9ySFaHFpO/U=" + }, + { + "pname": "xunit", + "version": "2.6.6", + "hash": "sha256-uuTcjtXrMiTTMsCnyG5vBEN94zZyJVGzJAV7yjxIggg=" + }, + { + "pname": "xunit.abstractions", + "version": "2.0.1", + "hash": "sha256-v5iPVeoUFsZp9zQMt3rg6xgw6UwF4VMIgzVYFIeb/zA=" + }, + { + "pname": "xunit.abstractions", + "version": "2.0.3", + "hash": "sha256-0D1y/C34iARI96gb3bAOG8tcGPMjx+fMabTPpydGlAM=" + }, + { + "pname": "xunit.analyzers", + "version": "1.10.0", + "hash": "sha256-TmH5jen7Y90lpM6c18DGsMbUoXKq2I9Clqsu0m9fmSw=" + }, + { + "pname": "xunit.assert", + "version": "2.6.6", + "hash": "sha256-ZbUViqWlExgASGARoQzSbAt0HWfQOSgyGnu1T5ZJd+Y=" + }, + { + "pname": "xunit.core", + "version": "2.6.6", + "hash": "sha256-lt5/d8CE1I1MPqQ/NKaWEV6ICGjkWID/xDnvmjUpInY=" + }, + { + "pname": "xunit.extensibility.core", + "version": "2.2.0", + "hash": "sha256-et3Se7paKJlg8Ha4Xr9+He40M6vblxyOwS2BQxOgLlE=" + }, + { + "pname": "xunit.extensibility.core", + "version": "2.6.6", + "hash": "sha256-gGZxPQNghCPFvbijnIrSt17iuxwImHvWEHtNVFY4HDk=" + }, + { + "pname": "xunit.extensibility.execution", + "version": "2.6.6", + "hash": "sha256-5Mvv9Nu+pCwZz4CIZX1l+yo6S6mEGIWPaOTyv7srSVg=" + }, + { + "pname": "xunit.runner.visualstudio", + "version": "2.5.6", + "hash": "sha256-CLlPdVfUk7Uw/cjOduQfPyA8d5+l1hCjFzf+snw11M4=" + }, + { + "pname": "YamlDotNet", + "version": "15.3.0", + "hash": "sha256-2rdemzEc4cGKfmYRTRfT0HXjllRs22qXac+UE400klU=" + } +] diff --git a/modules/tlmp/proxy.rules b/modules/tlmp/proxy.rules new file mode 100644 index 0000000..e776387 --- /dev/null +++ b/modules/tlmp/proxy.rules @@ -0,0 +1,18 @@ +table ip wg { + chain prerouting { + type nat hook prerouting priority -100; policy accept; + tcp dport { 6881, 50300 } counter dnat to 10.10.10.2 + } + + chain outbound { + type nat hook postrouting priority 100; policy accept; + ip saddr 10.10.10.2 oif venet0 masquerade + ip daddr 10.10.10.2 masquerade + } + + chain forward { + type filter hook forward priority 100; policy accept; + ct state established,related accept + iifname "wg0" accept + } +} diff --git a/modules/tlmp/rtorrent.nix b/modules/tlmp/rtorrent.nix index c85d8ce..03006d8 100644 --- a/modules/tlmp/rtorrent.nix +++ b/modules/tlmp/rtorrent.nix @@ -4,19 +4,14 @@ environment.systemPackages = with pkgs; [ libnatpmp gawk dig ]; systemd.services = { - # wireguard-mullvad = { - # bindsTo = [ "netns@torrent.service" ]; - # after = [ "netns@torrent.service" ]; - # }; - - wireguard-proton = { + wireguard-torrent = { bindsTo = [ "netns@torrent.service" ]; after = [ "netns@torrent.service" ]; }; rtorrent = { - bindsTo = [ "wireguard-proton.service" ]; - after = [ "wireguard-proton.service" ]; + bindsTo = [ "wireguard-torrent.service" ]; + after = [ "wireguard-torrent.service" ]; unitConfig.JoinsNamespaceOf = "netns@torrent.service"; serviceConfig = { PrivateNetwork = true; @@ -28,40 +23,15 @@ }; networking.wireguard.interfaces = { - # mullvad = { # Caring Wasp - # ips = [ "10.67.4.3/32" "fc00:bbbb:bbbb:bb01::4:402/128" ]; - # privateKeyFile = "/root/wireguard/privkey"; - # interfaceNamespace = "mullvad"; - - # peers = [ - # # { # de-fra-wg-006.relays.mullvad.net - # # publicKey = "nAF0wrLG2+avwQfqxnXhBGPUBCvc3QCqWKH4nK5PfEU="; - # # endpoint = "185.209.196.76:51820"; - # # allowedIPs = [ "0.0.0.0/0" "::/0" ]; - # # } - # { # de-fra-wg-008.relays.mullvad.net - # publicKey = "TOS3U/dJPzPnk/qsAx6gHxRVIC2wI5l+tAWaJY2mXzY="; - # endpoint = "185.209.196.78:51820"; - # allowedIPs = [ "0.0.0.0/0" "::/0" ]; - # } - # ]; - # }; - proton = { # phaenn - ips = [ "10.2.0.2/32" ]; - # privateKeyFile = "/root/wireguard/proton.key"; - privateKeyFile = "/root/wireguard/proton_ch.key"; + torrent = { # phaenn + ips = [ "10.10.10.2/32" ]; + privateKeyFile = "/root/wireguard/torrent.key"; interfaceNamespace = "torrent"; peers = [ - # { # DE#348 - # publicKey = "hOoBBy//7mddXPz1SybzWB3zK95SQCcPyI/DmxfULXk="; - # endpoint = "149.88.102.97:51820"; - # allowedIPs = [ "0.0.0.0/0" ]; - # persistentKeepalive = 25; - # } - { # CH#403 - publicKey = "R8TfZYSkUM30soIPOVpNsP35qCnnJvJJI9r/VxH5TkQ="; - endpoint = "146.70.226.226:51820"; + { + publicKey = "z0xDKcXtU1koil57vykUK/7RY0EP/QPGesdEzYxM2g0="; + endpoint = "45.152.210.73:51820"; allowedIPs = [ "0.0.0.0/0" ]; persistentKeepalive = 25; } diff --git a/modules/tlmp/rtorrent.rc b/modules/tlmp/rtorrent.rc index ec9b989..3ac20e7 100644 --- a/modules/tlmp/rtorrent.rc +++ b/modules/tlmp/rtorrent.rc @@ -22,16 +22,18 @@ execute.throw = bash, -c, (cat,\ ############################################################################# # Listening port for incoming peer traffic (fixed; you can also randomize it) -# network.port_range.set = 6881-6881 +network.port_range.set = 6881-6881 network.port_random.set = no +network.local_address.set = 45.152.210.73 + # Get Public IP -method.insert = get_public_ip_address, simple|private, "execute.capture=bash,-c,\"eval echo -n \$(natpmpc -g 10.2.0.1 -a 1 0 tcp 60 | awk '/Public IP address :/ { print $5 }')\"" -schedule2 = ip_tick, 5, 45, "network.local_address.set=(get_public_ip_address)" +# method.insert = get_public_ip_address, simple|private, "execute.capture=bash,-c,\"eval echo -n \$(natpmpc -g 10.2.0.1 -a 1 0 tcp 60 | awk '/Public IP address :/ { print $5 }')\"" +# schedule2 = ip_tick, 5, 45, "network.local_address.set=(get_public_ip_address)" # Get Forwarded port -method.insert = get_port_forward, simple|private, "execute.capture=bash,-c,\"eval echo -n \$(natpmpc -g 10.2.0.1 -a 1 0 tcp 60 | awk '/Mapped public port/ { print $4 }')\"" -schedule2 = port_tick, 6, 45, "network.port_range.set=(get_port_forward)" +# method.insert = get_port_forward, simple|private, "execute.capture=bash,-c,\"eval echo -n \$(natpmpc -g 10.2.0.1 -a 1 0 tcp 60 | awk '/Mapped public port/ { print $4 }')\"" +# schedule2 = port_tick, 6, 45, "network.port_range.set=(get_port_forward)" # Tracker-less torrent and UDP tracker support # (conservative settings for 'private' trackers, change for 'public') @@ -48,6 +50,9 @@ execute.nothrow = chmod,777,/run/rtorrent/rpc.sock # Throttles & Limits ############################################################################# +# throttle.global_down.max_rate.set_kb = 50000 +# throttle.global_up.max_rate.set_kb = 50000 + throttle.max_uploads.set = 250 throttle.max_uploads.global.set = 500 diff --git a/modules/tlmp/slsk.nix b/modules/tlmp/slsk.nix index e72d64b..4c170c4 100644 --- a/modules/tlmp/slsk.nix +++ b/modules/tlmp/slsk.nix @@ -10,6 +10,8 @@ with self.lib.nginx; { services.slskd = { enable = true; + package = pkgs.callPackage ./slsk_package.nix { }; + environmentFile = "/etc/secrets/slskd.env"; domain = null; @@ -21,6 +23,11 @@ with self.lib.nginx; incomplete = "/mnt/media/soulseek/incomplete"; }; + soulseek = { + listen_ip_address = "0.0.0.0"; + listen_port = 50300; + }; + shares = { directories = [ "[Music]/mnt/media/Music" ]; cache = { @@ -96,12 +103,19 @@ with self.lib.nginx; users.users.slskd.extraGroups = [ "media" ]; systemd.services.slskd = { - bindsTo = [ "wireguard-proton.service" ]; - after = [ "wireguard-proton.service" ]; + bindsTo = [ "wireguard-torrent.service" ]; + after = [ "wireguard-torrent.service" ]; unitConfig.JoinsNamespaceOf = "netns@torrent.service"; + postStart = '' + echo "fixing web socket permissions" + while [ ! -S "${config.services.slskd.settings.web.socket}" ]; do echo "waiting"; sleep 1; done + echo "found socket" + chmod a+rw ${config.services.slskd.settings.web.socket}; + echo "fixed web socket permissions" + ''; serviceConfig = { PrivateNetwork = true; - UMask = "ug=rw,o=r"; + UMask = "a=rw"; ProtectSystem = lib.mkForce "full"; }; diff --git a/modules/tlmp/slsk_package.nix b/modules/tlmp/slsk_package.nix new file mode 100644 index 0000000..5ddfc6c --- /dev/null +++ b/modules/tlmp/slsk_package.nix @@ -0,0 +1,88 @@ +{ + lib, + buildDotnetModule, + buildPackages, + dotnetCorePackages, + fetchFromGitHub, + fetchNpmDeps, + mono, + nodejs_20, + slskd, + testers, + nix-update-script, +}: + +let + nodejs = nodejs_20; + # https://github.com/NixOS/nixpkgs/blob/d88947e91716390bdbefccdf16f7bebcc41436eb/pkgs/build-support/node/build-npm-package/default.nix#L62 + npmHooks = buildPackages.npmHooks.override { inherit nodejs; }; +in +buildDotnetModule rec { + pname = "slskd"; + version = "2025-10-21"; + + src = fetchFromGitHub { + owner = "slskd"; + repo = "slskd"; + rev = "0a15a71028c2a12795023550f28d416dd050763d"; + hash = "sha256-vq78sT9wPGaTggZi+8O1ATBWpPTiSSki4H8u9M/xH3w="; + }; + + nativeBuildInputs = [ + nodejs + npmHooks.npmConfigHook + ]; + + runtimeDeps = [ mono ]; + + npmRoot = "src/web"; + npmDeps = fetchNpmDeps { + name = "${pname}-${version}-npm-deps"; + inherit src; + sourceRoot = "${src.name}/${npmRoot}"; + hash = "sha256-BqEOoqLpFO2Usbi3GgOmZtRxRqFvplAqtHMsWhcDfHI="; + }; + + projectFile = "slskd.sln"; + nugetDeps = ./deps.json; + + dotnet-sdk = dotnetCorePackages.sdk_8_0; + dotnet-runtime = dotnetCorePackages.aspnetcore_8_0; + + testProjectFile = "tests/slskd.Tests.Unit/slskd.Tests.Unit.csproj"; + doCheck = true; + disabledTests = [ + # Random failures on OfBorg, cause unknown + "slskd.Tests.Unit.Transfers.Uploads.UploadGovernorTests+ReturnBytes.Returns_Bytes_To_Bucket" + ]; + + postBuild = '' + pushd "$npmRoot" + npm run build --legacy-peer-deps + popd + ''; + + postInstall = '' + rm -r $out/lib/slskd/wwwroot + mv "$npmRoot"/build $out/lib/slskd/wwwroot + ''; + + passthru = { + tests.version = testers.testVersion { package = slskd; }; + updateScript = nix-update-script { }; + }; + + meta = { + description = "Modern client-server application for the Soulseek file sharing network"; + homepage = "https://github.com/slskd/slskd"; + changelog = "https://github.com/slskd/slskd/releases/tag/${version}"; + license = lib.licenses.agpl3Plus; + maintainers = with lib.maintainers; [ + ppom + melvyn2 + getchoo + ]; + mainProgram = "slskd"; + platforms = lib.platforms.linux; + }; +} |
