{"id":21073886,"url":"https://github.com/gusarov/river","last_synced_at":"2025-05-16T06:30:56.307Z","repository":{"id":78436636,"uuid":"75284587","full_name":"gusarov/river","owner":"gusarov","description":"Tunelling \u0026 proxy connectivity","archived":false,"fork":false,"pushed_at":"2020-03-09T05:23:15.000Z","size":2310,"stargazers_count":10,"open_issues_count":4,"forks_count":3,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2024-10-11T19:23:36.563Z","etag":null,"topics":["chacha20","csharp","netstandard20","proxy","proxychains","river","shadowsocks","trafic","tunnel","tunneling"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gusarov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2016-12-01T11:05:47.000Z","updated_at":"2024-07-31T10:14:00.000Z","dependencies_parsed_at":"2023-04-17T00:46:07.664Z","dependency_job_id":null,"html_url":"https://github.com/gusarov/river","commit_stats":{"total_commits":169,"total_committers":3,"mean_commits":"56.333333333333336","dds":"0.18343195266272194","last_synced_commit":"561702d569dd003bf23a5a2b56575995b999caff"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gusarov%2Friver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gusarov%2Friver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gusarov%2Friver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gusarov%2Friver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gusarov","download_url":"https://codeload.github.com/gusarov/river/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225302114,"owners_count":17452896,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chacha20","csharp","netstandard20","proxy","proxychains","river","shadowsocks","trafic","tunnel","tunneling"],"created_at":"2024-11-19T19:13:31.221Z","updated_at":"2024-11-19T19:13:31.958Z","avatar_url":"https://github.com/gusarov.png","language":"C#","readme":"Master: [![Build status](https://dev.azure.com/xkit/River/_apis/build/status/River%20CI?branchName=master)](https://dev.azure.com/xkit/River)\nDevelop: [![Build status](https://dev.azure.com/xkit/River/_apis/build/status/River%20CI?branchName=develop)](https://dev.azure.com/xkit/River)\nNuGet: [![NuGet status](https://img.shields.io/nuget/dt/river?label=NuGet)](https://www.nuget.org/packages/river)\n\n\n# River - network tunneling\nRiver is a proxy client \u0026 server with cryptography. Everything is pure .Net CLR without external dependancies.\n\nShipped in 2 ways:\n\n1) [River.dll in NuGet](https://www.nuget.org/packages/River/) - is a .Net Standard 2.0 library for any cross platform project\n\n2) [River.exe for Windows](https://github.com/gusarov/river/releases/latest) - is a .Net Framwork 4.8 application for Windows\n\n# Application Usage\n\nThe commandline inspired by [gost](https://github.com/ginuerzh/gost) project:\n\nRun SOCKS server:\n```\nriver -L socks://0.0.0.0:1080\n```\n\nRun ShadowSocks server:\n```\nriver -L ss://chacha20:password@0.0.0.0:8338\n```\n\nProxy Chain - a list of forwarders:\n```\nriver -L socks://0.0.0.0:1080 -F socks4://rhop2:1080 -F socks4://10.7.1.1:1080 \n```\n\n# Library Usage\n\nNuGet: https://www.nuget.org/packages/River/\n\nInstallation: ```Install-Package River```\n\nHow to wrap your existing TCP connection to SOCKS proxy:\n\nOriginal:\n```cs\nvar cli = new TcpClient(\"httpbin.org\", 80);\nvar stream = cli.GetStream();\n```\nChange to:\n```cs\nvar stream = new Socks4ClientStream(\"proxyserver\", 1080, \"httpbin.org\", 80);\n```\nOr if you need TcpClient to proxy:\n```cs\nvar cli = new TcpClient(\"proxyserver\", 1080);\nvar stream = new Socks4ClientStream(cli.GetStream(), \"httpbin.org\", 80);\n\n```\n\nProxy Chain:\n```cs\nvar step1 = new Socks4ClientStream();\nstep1.Plug(\"127.0.0.1\", 1080); // 1st proxy\nstep1.Route(\"127.0.0.1\", 1081); // 2nd proxy\n\nvar step2 = new Socks4ClientStream();\nstep2.Plug(step1);\nstep2.Route(\"127.0.0.1\", 1082); // 3rd proxy\n\nvar step3 = new Socks4ClientStream(step2, \"httpbin.org\", 80); // you can do same in constructor - route to destination\n\nvar stream = step3;\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgusarov%2Friver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgusarov%2Friver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgusarov%2Friver/lists"}