public TorSharpProxy(TorSharpSettings settings) { _settings = settings; _torPasswordHasher = new TorPasswordHasher(new RandomFactory()); _toolRunner = settings.ToolRunnerType == ToolRunnerType.VirtualDesktop ? (IToolRunner) new VirtualDesktopToolRunner() : new SimpleToolRunner(); }
public TorSharpProxy(TorSharpSettings settings) { _settings = settings; _torPasswordHasher = new TorPasswordHasher(new RandomFactory()); _toolRunner = settings.ToolRunnerType == ToolRunnerType.VirtualDesktop ? (IToolRunner)new VirtualDesktopToolRunner() : new SimpleToolRunner(); }
public TorSharpProxy(TorSharpSettings settings) { _settings = settings; _torPasswordHasher = new TorPasswordHasher(new RandomFactory()); #if NET45 if (settings.ToolRunnerType == ToolRunnerType.VirtualDesktop) { _toolRunner = new VirtualDesktopToolRunner(); } else { _toolRunner = new SimpleToolRunner(); } #else _toolRunner = new SimpleToolRunner(); #endif }
public static IToolRunner UseClientGenTools(this IToolRunner toolRunner) { return(toolRunner.AddTool("clientgen", new ToolCommand("Generate a client library file to the specified destination.", async a => { if (a.Args.Count < 1) { throw new NotSupportedException("You must provide a file name to use the clientgen tool."); } var file = a.Args[0]; var extension = Path.GetExtension(file); using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) //Buffer to a memory stream, this way if there are errors the existing file is not replaced { switch (extension) { case ".ts": var typescriptWriter = a.Scope.ServiceProvider.GetRequiredService <TypescriptClientWriter>(); await typescriptWriter.CreateClient(writer); break; case ".cs": var csharpWriter = a.Scope.ServiceProvider.GetRequiredService <CSharpClientWriter>(); await csharpWriter.CreateClient(writer); break; case ".php": var phpWriter = a.Scope.ServiceProvider.GetRequiredService <PhpClientWriter>(); await phpWriter.CreateClient(writer); break; default: throw new NotSupportedException($"{file} is not supported. Can only generate typescript (.ts), c# (.cs) or php (.php) clients."); } await writer.FlushAsync(); stream.Seek(0, SeekOrigin.Begin); using (var outStream = File.Open(file, FileMode.Create, FileAccess.ReadWrite, FileShare.None)) { await stream.CopyToAsync(outStream); } } }))); }
/// <summary> /// Initializes an instance of the proxy controller. /// </summary> /// <param name="settings">The settings to dictate the proxy's behavior.</param> public TorSharpProxy(TorSharpSettings settings) { _settings = settings ?? throw new ArgumentNullException(nameof(settings)); _torPasswordHasher = new TorPasswordHasher(new RandomFactory()); switch (settings.ToolRunnerType) { case ToolRunnerType.Simple: _toolRunner = new SimpleToolRunner(); break; case ToolRunnerType.VirtualDesktop: if (settings.OSPlatform != TorSharpOSPlatform.Windows) { settings.RejectRuntime($"use the {nameof(ToolRunnerType.VirtualDesktop)} tool runner"); } _toolRunner = new VirtualDesktopToolRunner(); break; default: throw new NotImplementedException($"The '{settings.ToolRunnerType}' tool runner is not supported."); } }