Exemplo n.º 1
0
 public TorSharpProxy(TorSharpSettings settings)
 {
     _settings          = settings;
     _torPasswordHasher = new TorPasswordHasher(new RandomFactory());
     _toolRunner        =
         settings.ToolRunnerType == ToolRunnerType.VirtualDesktop
             ? (IToolRunner) new VirtualDesktopToolRunner()
             : new SimpleToolRunner();
 }
Exemplo n.º 2
0
 public TorSharpProxy(TorSharpSettings settings)
 {
     _settings = settings;
     _torPasswordHasher = new TorPasswordHasher(new RandomFactory());
     _toolRunner =
         settings.ToolRunnerType == ToolRunnerType.VirtualDesktop
             ? (IToolRunner)new VirtualDesktopToolRunner()
             : new SimpleToolRunner();
 }
Exemplo n.º 3
0
        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
        }
Exemplo n.º 4
0
        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);
                        }
                    }
            })));
        }
Exemplo n.º 5
0
        /// <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.");
            }
        }