OnionSharp 1.1.3
dotnet add package OnionSharp --version 1.1.3
NuGet\Install-Package OnionSharp -Version 1.1.3
<PackageReference Include="OnionSharp" Version="1.1.3" />
<PackageVersion Include="OnionSharp" Version="1.1.3" />
<PackageReference Include="OnionSharp" />
paket add OnionSharp --version 1.1.3
#r "nuget: OnionSharp, 1.1.3"
#:package OnionSharp@1.1.3
#addin nuget:?package=OnionSharp&version=1.1.3
#tool nuget:?package=OnionSharp&version=1.1.3
OnionSharp
Implement Tor easily into your C# projects.
DISCLAIMER
The Tor implementation was completely taken out of WalletWasabi. The code was stripped of its WalletWasabi related components to serve as a general Tor implementation. I do not own this code and I'm not the intellectual owner of the code. Check WalletWasabi commits for that. The project was created for learning purposes only.
Key Features
- Use TorSettings class to customize your Tor instance.
- Use OnionHttpClientFactory to create TorHttpClient.
- Use TorHttpClient to send requests.
- Use it on client and/or server side.
How to use
// You can use the EnvironmentHelpers to grab the data dir or insert your own path/of/data/directory.
var dataDir = EnvironmentHelpers.GetDataDir("Sample-Project");
// Create your Tor Settings
var torSetting = new TorSettings(dataDir,
distributionFolderPath: EnvironmentHelpers.GetFullBaseDirectory(),
terminateOnExit: true,
TorMode.Enabled,
socksPort: 37155,
controlPort: 37156);
// Create and start TorProcessManager which will start tor.exe
TorProcessManager torProcessManager = new TorProcessManager(torSetting);
await torProcessManager.StartAsync(attempts: 3, CancellationToken.None);
// Create the OnionHttpFactory
var onionClientFactory = new OnionHttpClientFactory(torSetting.SocksEndpoint.ToUri("socks5"));
// Create Http Clients
var myHttpClient = onionClientFactory.CreateClient("name-of-your-client");
// Send requests to onion address (for example)
await myHttpClient.GetAsync("http://explorerzydxu5ecjrkwceayqybizmpjjznk5izmitf2modhcusuqlid.onion/api/mempool/recent");
Don't trust, verify!
The nuget package contains a built-in tor.exe (v13.5.9). In case you don't trust it, you can replace it with a tor.exe you get by yourself. Download (tor.exe)[https://www.torproject.org/download/tor/] from the official site and replace the executable with your new one.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Microsoft.Extensions.Http (>= 10.0.0)
- NBitcoin (>= 9.0.3)
- Nito.AsyncEx.Coordination (>= 5.1.2)
- System.IO.Pipelines (>= 10.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.