A high performence Socks5 proxy server with bind/reverse support implementation by Rust.

Overview

rsocx Build Status ChatOnDiscord Crate

A high performence Socks5 proxy server with bind/reverse support implementation by Rust

Features

  • Async-std
  • No unsafe code
  • Single executable
  • Linux/Windows/Mac/BSD support
  • Support reverse mode(Not bind any port in client)

Build & Run

$> cargo build --release

Installation

$> cargo install rsocx

Usage

Bind Mode

You can run a socks5 proxy and listen port at 1080

$> ./rsocx -l 1080

Reverse Mode

First listen a port waiting for slave connection

$> ./rsocx -l 8000 1080

then reverse connect to master in slave

$> ./cliws -r 127.0.0.1 8000

Benchmark

Simple load test through proxychains4 visit to Tornado's helloworld case in LAN.

import grequests
import time
start = time.time()
req_list = [grequests.get('http://192.168.0.222:8888') for i in range(1000)]
res_list = grequests.map(req_list)
print(time.time()-start)

Test Envoriment

Envoriment Value
Proxy OS Windows11
CPU i7-9700k
Target OS Ubuntu20.04
Network LAN
Target Server Tornado(Python)
Test Count 1k
Socks5 client Proxychains4

Test Result

Project Language Base Take Time
rsocx Rust Async-std 12.90s
rsocx(reverse) Rust Aysnc-std 24.65s
merino Rust Tokio 12.37s
go-socks5 Golang goroutine 12.31s
simple-socks Nodejs async 13.71s
asio5 C++ Boost::Asio 12.37s
esocks Java Thread-Pool 25.06s

(Test Date : 13 Nov 2021)

Socks5 Protocol Support

  • IPV6 Support
  • SOCKS5 Authentication Methods
    • NOAUTH
    • USERPASS
  • SOCKS5 Commands
    • CONNECT
    • BIND
    • ASSOCIATE

Reference

Comments
  • socks5 to specific interfaces

    socks5 to specific interfaces

    Apologies for in-formalities. But I am looking to develop with this code. I would like to modify the the sock.rs to push to different routes or interfaces or connections in a round robin or random fashion. I understand how to do the round robin part, but I am very unfamiliar with rust. Was hoping if you knew off the top of your head any specific functions I could user to accomplish this goal. Thanks Something like:

    use tokio::net::TcpSocket;
    
    use std::io;
    
    #[tokio::main]
    
    async fn main() -> io::Result<()> {
    
        let addr = "127.0.0.1:8080".parse().unwrap();
        
        let socket = TcpSocket::new_v4()?;
        let stream = socket.connect(addr).await?;
    
        Ok(())
    }
    
    opened by incirrata 3
  • makefile:10: recipe for target 'src/Tunnel.o' failed

    makefile:10: recipe for target 'src/Tunnel.o' failed

    % make g++ -c src/Tunnel.cpp -o src/Tunnel.o -I./src -DLINUX In file included from src/Tunnel.cpp:1:0: src/stdafx.h:13:15: error: redeclaration of C++ built-in type ‘bool’ [-fpermissive] typedef bool bool; ^ src/stdafx.h:24:14: error: multiple types in one declaration typedef int int; ^ src/stdafx.h:24:14: error: declaration does not declare anything [-fpermissive] In file included from src/stdafx.h:53:0, from src/Tunnel.cpp:1: src/utils/AutoCleanup.h:105:38: warning: converting to non-pointer type ‘DWORD {aka long unsigned int}’ from NULL [-Wconversion-null] bool WaitForEnd(DWORD dwTimeoutMS = INFINITE) ^ src/utils/AutoCleanup.h: In constructor ‘Thread::Thread()’: src/utils/AutoCleanup.h:68:19: warning: converting to non-pointer type ‘HANDLE {aka long unsigned int}’ from NULL [-Wconversion-null] , m_dwThreadId(0) ^ src/utils/AutoCleanup.h: In destructor ‘Thread::~Thread()’: src/utils/AutoCleanup.h:74:15: warning: NULL used in arithmetic [-Wpointer-arith] if (NULL != m_hThread) ^ src/utils/AutoCleanup.h: In member function ‘bool Thread::Start(LPTHREAD_START_ROUTINE, LPVOID)’: src/utils/AutoCleanup.h:84:15: warning: NULL used in arithmetic [-Wpointer-arith] if (NULL != m_hThread) return FALSE; ^ src/utils/AutoCleanup.h: In member function ‘bool Thread::WaitForEnd(DWORD)’: src/utils/AutoCleanup.h:107:15: warning: NULL used in arithmetic [-Wpointer-arith] if (NULL == m_hThread) return TRUE; ^ src/utils/AutoCleanup.h:118:22: warning: NULL used in arithmetic [-Wpointer-arith] if (dwTimeoutMS == INFINITE) ^ src/utils/AutoCleanup.h:131:14: warning: converting to non-pointer type ‘HANDLE {aka long unsigned int}’ from NULL [-Wconversion-null] m_hThread = NULL; ^ src/utils/AutoCleanup.h: In member function ‘void Thread::Terminate()’: src/utils/AutoCleanup.h:148:13: warning: converting to non-pointer type ‘HANDLE {aka long unsigned int}’ from NULL [-Wconversion-null] m_hThread = NULL; ^ In file included from src/stdafx.h:56:0, from src/Tunnel.cpp:1: src/socks/SocksParser.h: At global scope: src/common/CommonDefines.h:19:3: error: ‘BOOL’ does not name a type BOOL Init();
    ^ src/socks/SocksParser.h:38:2: note: in expansion of macro ‘DECLARE_SINGLETON’ DECLARE_SINGLETON(SocksParser) ^ src/common/CommonDefines.h:19:3: error: ‘BOOL’ does not name a type BOOL Init();
    ^ src/Tunnel.h:27:2: note: in expansion of macro ‘DECLARE_SINGLETON’ DECLARE_SINGLETON(CTunnel) ^ src/Tunnel.cpp: In member function ‘DWORD CTunnel::TCPTunnelProc(LPVOID)’: src/Tunnel.cpp:214:16: warning: converting to non-pointer type ‘DWORD {aka long unsigned int}’ from NULL [-Wconversion-null] t1.WaitForEnd(); ^ src/Tunnel.cpp:215:16: warning: converting to non-pointer type ‘DWORD {aka long unsigned int}’ from NULL [-Wconversion-null] t2.WaitForEnd(); ^ src/Tunnel.cpp: In member function ‘bool CTunnel::Begin(int, int)’: src/Tunnel.cpp:247:16: warning: converting to non-pointer type ‘DWORD {aka long unsigned int}’ from NULL [-Wconversion-null] t1.WaitForEnd(); ^ src/Tunnel.cpp:248:16: warning: converting to non-pointer type ‘DWORD {aka long unsigned int}’ from NULL [-Wconversion-null] t2.WaitForEnd(); ^ makefile:10: recipe for target 'src/Tunnel.o' failed make: *** [src/Tunnel.o] Error 1

    编译环境 Linux #27-Ubuntu SMP Thu Dec 17 22:57:08 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux gcc version 5.2.1 20151010 (Ubuntu 5.2.1-22ubuntu2)

    opened by 1c3z 2
  • centos 64 也编译失败了

    centos 64 也编译失败了

    改了 bool BOOL 和int int 那两个错仍然不行,主要报错在这两个地方

    src/socks/SocksMgr.cpp:158:15: error: cast from ‘void*’ to ‘int’ loses precision [-fpermissive]
      int s = (int)lpParameter;
                   ^
    src/socks/SocksMgr.cpp: In member function ‘bool CSocksMgr::Begin(LPCSTR, int, LPCSTR, int)’:
    src/socks/SocksMgr.cpp:291:34: error: cast from ‘CSocksMgr*’ to ‘uint32_t {aka unsigned int}’ loses precision [-fpermissive]
       proxy->lpParameter = (uint32_t)this;
    

    全部报错是

    g++     -c  src/Tunnel.cpp    -o   src/Tunnel.o    -I./src -DLINUX 
    In file included from src/stdafx.h:52:0,
                     from src/Tunnel.cpp:1:
    src/utils/AutoCleanup.h:105:38: warning: converting to non-pointer type ‘DWORD {aka long unsigned int}’ from NULL [-Wconversion-null]
      bool WaitForEnd(DWORD dwTimeoutMS = INFINITE)
                                          ^
    src/utils/AutoCleanup.h: In constructor ‘Thread::Thread()’:
    src/utils/AutoCleanup.h:68:19: warning: converting to non-pointer type ‘HANDLE {aka long unsigned int}’ from NULL [-Wconversion-null]
       , m_dwThreadId(0)
                       ^
    src/utils/AutoCleanup.h: In destructor ‘Thread::~Thread()’:
    src/utils/AutoCleanup.h:74:15: warning: NULL used in arithmetic [-Wpointer-arith]
       if (NULL != m_hThread) 
                   ^
    src/utils/AutoCleanup.h: In member function ‘bool Thread::Start(LPTHREAD_START_ROUTINE, LPVOID)’:
    src/utils/AutoCleanup.h:84:15: warning: NULL used in arithmetic [-Wpointer-arith]
       if (NULL != m_hThread) return FALSE;
                   ^
    src/utils/AutoCleanup.h: In member function ‘bool Thread::WaitForEnd(DWORD)’:
    src/utils/AutoCleanup.h:107:15: warning: NULL used in arithmetic [-Wpointer-arith]
       if (NULL == m_hThread) return TRUE;
                   ^
    src/utils/AutoCleanup.h:118:22: warning: NULL used in arithmetic [-Wpointer-arith]
       if (dwTimeoutMS == INFINITE)
                          ^
    src/utils/AutoCleanup.h:131:14: warning: converting to non-pointer type ‘HANDLE {aka long unsigned int}’ from NULL [-Wconversion-null]
        m_hThread = NULL;
                  ^
    src/utils/AutoCleanup.h: In member function ‘void Thread::Terminate()’:
    src/utils/AutoCleanup.h:148:13: warning: converting to non-pointer type ‘HANDLE {aka long unsigned int}’ from NULL [-Wconversion-null]
       m_hThread = NULL;
                 ^
    src/Tunnel.cpp: In member function ‘DWORD CTunnel::TCPTunnelProc(LPVOID)’:
    src/Tunnel.cpp:214:16: warning: converting to non-pointer type ‘DWORD {aka long unsigned int}’ from NULL [-Wconversion-null]
      t1.WaitForEnd();
                    ^
    src/Tunnel.cpp:215:16: warning: converting to non-pointer type ‘DWORD {aka long unsigned int}’ from NULL [-Wconversion-null]
      t2.WaitForEnd();
                    ^
    src/Tunnel.cpp: In member function ‘bool CTunnel::Begin(int, int)’:
    src/Tunnel.cpp:247:16: warning: converting to non-pointer type ‘DWORD {aka long unsigned int}’ from NULL [-Wconversion-null]
      t1.WaitForEnd();
                    ^
    src/Tunnel.cpp:248:16: warning: converting to non-pointer type ‘DWORD {aka long unsigned int}’ from NULL [-Wconversion-null]
      t2.WaitForEnd();
                    ^
    g++     -c  src/xsocks.cpp    -o   src/xsocks.o    -I./src -DLINUX 
    In file included from src/stdafx.h:52:0,
                     from src/xsocks.cpp:1:
    src/utils/AutoCleanup.h:105:38: warning: converting to non-pointer type ‘DWORD {aka long unsigned int}’ from NULL [-Wconversion-null]
      bool WaitForEnd(DWORD dwTimeoutMS = INFINITE)
                                          ^
    src/utils/AutoCleanup.h: In constructor ‘Thread::Thread()’:
    src/utils/AutoCleanup.h:68:19: warning: converting to non-pointer type ‘HANDLE {aka long unsigned int}’ from NULL [-Wconversion-null]
       , m_dwThreadId(0)
                       ^
    src/utils/AutoCleanup.h: In destructor ‘Thread::~Thread()’:
    src/utils/AutoCleanup.h:74:15: warning: NULL used in arithmetic [-Wpointer-arith]
       if (NULL != m_hThread) 
                   ^
    src/utils/AutoCleanup.h: In member function ‘bool Thread::Start(LPTHREAD_START_ROUTINE, LPVOID)’:
    src/utils/AutoCleanup.h:84:15: warning: NULL used in arithmetic [-Wpointer-arith]
       if (NULL != m_hThread) return FALSE;
                   ^
    src/utils/AutoCleanup.h: In member function ‘bool Thread::WaitForEnd(DWORD)’:
    src/utils/AutoCleanup.h:107:15: warning: NULL used in arithmetic [-Wpointer-arith]
       if (NULL == m_hThread) return TRUE;
                   ^
    src/utils/AutoCleanup.h:118:22: warning: NULL used in arithmetic [-Wpointer-arith]
       if (dwTimeoutMS == INFINITE)
                          ^
    src/utils/AutoCleanup.h:131:14: warning: converting to non-pointer type ‘HANDLE {aka long unsigned int}’ from NULL [-Wconversion-null]
        m_hThread = NULL;
                  ^
    src/utils/AutoCleanup.h: In member function ‘void Thread::Terminate()’:
    src/utils/AutoCleanup.h:148:13: warning: converting to non-pointer type ‘HANDLE {aka long unsigned int}’ from NULL [-Wconversion-null]
       m_hThread = NULL;
                 ^
    g++     -c  src/stdafx.cpp    -o   src/stdafx.o    -I./src -DLINUX 
    In file included from src/stdafx.h:52:0,
                     from src/stdafx.cpp:5:
    src/utils/AutoCleanup.h:105:38: warning: converting to non-pointer type ‘DWORD {aka long unsigned int}’ from NULL [-Wconversion-null]
      bool WaitForEnd(DWORD dwTimeoutMS = INFINITE)
                                          ^
    src/utils/AutoCleanup.h: In constructor ‘Thread::Thread()’:
    src/utils/AutoCleanup.h:68:19: warning: converting to non-pointer type ‘HANDLE {aka long unsigned int}’ from NULL [-Wconversion-null]
       , m_dwThreadId(0)
                       ^
    src/utils/AutoCleanup.h: In destructor ‘Thread::~Thread()’:
    src/utils/AutoCleanup.h:74:15: warning: NULL used in arithmetic [-Wpointer-arith]
       if (NULL != m_hThread) 
                   ^
    src/utils/AutoCleanup.h: In member function ‘bool Thread::Start(LPTHREAD_START_ROUTINE, LPVOID)’:
    src/utils/AutoCleanup.h:84:15: warning: NULL used in arithmetic [-Wpointer-arith]
       if (NULL != m_hThread) return FALSE;
                   ^
    src/utils/AutoCleanup.h: In member function ‘bool Thread::WaitForEnd(DWORD)’:
    src/utils/AutoCleanup.h:107:15: warning: NULL used in arithmetic [-Wpointer-arith]
       if (NULL == m_hThread) return TRUE;
                   ^
    src/utils/AutoCleanup.h:118:22: warning: NULL used in arithmetic [-Wpointer-arith]
       if (dwTimeoutMS == INFINITE)
                          ^
    src/utils/AutoCleanup.h:131:14: warning: converting to non-pointer type ‘HANDLE {aka long unsigned int}’ from NULL [-Wconversion-null]
        m_hThread = NULL;
                  ^
    src/utils/AutoCleanup.h: In member function ‘void Thread::Terminate()’:
    src/utils/AutoCleanup.h:148:13: warning: converting to non-pointer type ‘HANDLE {aka long unsigned int}’ from NULL [-Wconversion-null]
       m_hThread = NULL;
                 ^
    g++     -c  src/socks/SocksMgr.cpp    -o   src/socks/SocksMgr.o    -I./src -DLINUX 
    In file included from ./src/stdafx.h:52:0,
                     from src/socks/SocksMgr.cpp:1:
    ./src/utils/AutoCleanup.h:105:38: warning: converting to non-pointer type ‘DWORD {aka long unsigned int}’ from NULL [-Wconversion-null]
      bool WaitForEnd(DWORD dwTimeoutMS = INFINITE)
                                          ^
    ./src/utils/AutoCleanup.h: In constructor ‘Thread::Thread()’:
    ./src/utils/AutoCleanup.h:68:19: warning: converting to non-pointer type ‘HANDLE {aka long unsigned int}’ from NULL [-Wconversion-null]
       , m_dwThreadId(0)
                       ^
    ./src/utils/AutoCleanup.h: In destructor ‘Thread::~Thread()’:
    ./src/utils/AutoCleanup.h:74:15: warning: NULL used in arithmetic [-Wpointer-arith]
       if (NULL != m_hThread) 
                   ^
    ./src/utils/AutoCleanup.h: In member function ‘bool Thread::Start(LPTHREAD_START_ROUTINE, LPVOID)’:
    ./src/utils/AutoCleanup.h:84:15: warning: NULL used in arithmetic [-Wpointer-arith]
       if (NULL != m_hThread) return FALSE;
                   ^
    ./src/utils/AutoCleanup.h: In member function ‘bool Thread::WaitForEnd(DWORD)’:
    ./src/utils/AutoCleanup.h:107:15: warning: NULL used in arithmetic [-Wpointer-arith]
       if (NULL == m_hThread) return TRUE;
                   ^
    ./src/utils/AutoCleanup.h:118:22: warning: NULL used in arithmetic [-Wpointer-arith]
       if (dwTimeoutMS == INFINITE)
                          ^
    ./src/utils/AutoCleanup.h:131:14: warning: converting to non-pointer type ‘HANDLE {aka long unsigned int}’ from NULL [-Wconversion-null]
        m_hThread = NULL;
                  ^
    ./src/utils/AutoCleanup.h: In member function ‘void Thread::Terminate()’:
    ./src/utils/AutoCleanup.h:148:13: warning: converting to non-pointer type ‘HANDLE {aka long unsigned int}’ from NULL [-Wconversion-null]
       m_hThread = NULL;
                 ^
    src/socks/SocksMgr.cpp: In member function ‘DWORD CSocksMgr::TCPTunnelProc(LPVOID)’:
    src/socks/SocksMgr.cpp:88:16: warning: converting to non-pointer type ‘DWORD {aka long unsigned int}’ from NULL [-Wconversion-null]
      t1.WaitForEnd();
                    ^
    src/socks/SocksMgr.cpp:89:16: warning: converting to non-pointer type ‘DWORD {aka long unsigned int}’ from NULL [-Wconversion-null]
      t2.WaitForEnd();
                    ^
    src/socks/SocksMgr.cpp: In member function ‘DWORD CSocksMgr::ForwardProc(void*)’:
    src/socks/SocksMgr.cpp:158:15: error: cast from ‘void*’ to ‘int’ loses precision [-fpermissive]
      int s = (int)lpParameter;
                   ^
    src/socks/SocksMgr.cpp: In member function ‘bool CSocksMgr::Begin(LPCSTR, int, LPCSTR, int)’:
    src/socks/SocksMgr.cpp:291:34: error: cast from ‘CSocksMgr*’ to ‘uint32_t {aka unsigned int}’ loses precision [-fpermissive]
       proxy->lpParameter = (uint32_t)this;
                                      ^
    src/socks/SocksMgr.cpp: In member function ‘bool CSocksMgr::Begin(LPCSTR, int)’:
    src/socks/SocksMgr.cpp:336:34: error: cast from ‘CSocksMgr*’ to ‘uint32_t {aka unsigned int}’ loses precision [-fpermissive]
       proxy->lpParameter = (uint32_t)this;
                                      ^
    src/socks/SocksMgr.cpp: In member function ‘bool CSocksMgr::Begin(int)’:
    src/socks/SocksMgr.cpp:386:51: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
        t.Start((LPTHREAD_START_ROUTINE)Forward,(void*)rs);
                                                       ^
    make: *** [src/socks/SocksMgr.o] Error 1
    
    opened by burnegg 1
  • tunnel问题

    tunnel问题

    服务器运行xsocks -t -p1 8085 -p2 8086 远程客户端运行xsocks -r x.x.x.x:8085 本地客户端运行proxifier全局代理 使用20多分钟后就无法转发代理 下面是proxifier测试代理: [50:09] 测试已开始。 代理服务器 地址: x.x.x.x:8086 协议: SOCKS 5 验证: 是 用户名: xxx

    [50:09] 正在开始: 测试 1: 连接到代理服务器 [50:09] IP 地址: x.x.x.x [50:09] 已建立连接 [50:09] 测试已通过。 [50:09] 正在开始: 测试 2: 通过代理服务器连接 转发不过去,求解

    opened by fshh1988 1
  • Fix broken headings in Markdown files

    Fix broken headings in Markdown files

    GitHub changed the way Markdown headings are parsed, so this change fixes it.

    See bryant1410/readmesfix for more information.

    Tackles bryant1410/readmesfix#1

    opened by bryant1410 0
  • help i am trying to check one example

    help i am trying to check one example

    Hi. I'm trying to check one example socks5 but i get this error: [+] [SOCKSMGR.CPP:367] 6788 LISTENING 8082 [+] [SOCKSMGR.CPP:382] 6788 ACCEPT : 127.0.0.1 [D] [SOCKSMGR.CPP:28] 212 RECV ERROR! 10038 [D] [SOCKSMGR.CPP:65] 4744 SEND ERROR! 10038 [D] [SOCKSMGR.CPP:92] 5660 TUNNEL THREAD FINISH! [+] [SOCKSMGR.CPP:382] 6788 ACCEPT : 127.0.0.1 [D] [SOCKSMGR.CPP:65] 6032 SEND ERROR! 10038 [D] [SOCKSMGR.CPP:28] 2424 RECV ERROR! 10038 [D] [SOCKSMGR.CPP:92] 7072 TUNNEL THREAD FINISH!

    Why? I could use this to do my own socks5 proxy with my static ip? Thx a lot for this project it is very cool. And i need know about why and how i can run well.

    opened by martingonzalez123 0
  • Using reverse proxy function

    Using reverse proxy function

    Hi, and thank you for contributing that socks5 project on github! I was just looking for a very simple cmdline proxy to learn with, and yours seems perfect for this.

    However, I have a problem using the reverse proxy function. Maybe I'm doing something wrong, or there's a bug.

    This is the scenario: 1 remote machine connects via reverse proxy to my local machine. I want then to connect my Firefox browser to the local proxy on my machine.

    1. On my local Windows10 machine (IP address 192.168.1.46), I want to place the local proxy server, which will route connections from the reverse proxy machine. On this local machine I open xsocks using tunneling command:
    xsocks -t -p1 2404 -p2 2405
    
    [+] BIND PORTS 2404 AND 2405...
    [+] LISTENING...
    
    1. On my Windows7 machine in LAN, I place xsocks proxy in reverse mode:
    xsocks -r  192.168.1.46:2404
    
    [+] CONNECTING 192.168.1.46:2404
    [+] CONNECT SUCCESS!
    
    1. Finally, I connect Firefox to my local proxy, so 127.0.0.1:2405.

    However, it doesn't manage to connect. When I use a normal forward proxy on my remote machine, on an open port, it works correctly though. Is there a bug, or am I doing something wrong?

    Thanks!!

    opened by Flavius01 0
  • 编译失败

    编译失败

    root@TS151213-daniao:~/xsocks# make & sudo make install [1] 5167 g++ -c src/Tunnel.cpp -o src/Tunnel.o -I./src -DLINUX cp ./bin/xsocks /bin/xsocks cp: cannot stat `./bin/xsocks': No such file or directory make: *** [install] Error 1 root@TS151213-daniao:~/xsocks# In file included from src/Tunnel.cpp:1:0: src/stdafx.h:13:15: error: redeclaration of C++ built-in type 'bool' [-fpermissive] src/stdafx.h:24:14: error: multiple types in one declaration src/stdafx.h:24:14: error: declaration does not declare anything [-fpermissive] In file included from src/stdafx.h:53:0, from src/Tunnel.cpp:1: src/utils/AutoCleanup.h: In constructor 'Thread::Thread()': src/utils/AutoCleanup.h:68:19: warning: converting to non-pointer type 'HANDLE {aka long unsigned int}' from NULL [-Wconversion-null] src/utils/AutoCleanup.h: In destructor 'Thread::~Thread()': src/utils/AutoCleanup.h:74:15: warning: NULL used in arithmetic [-Wpointer-arith] src/utils/AutoCleanup.h: In member function 'bool Thread::Start(LPTHREAD_START_ROUTINE, LPVOID)': src/utils/AutoCleanup.h:84:15: warning: NULL used in arithmetic [-Wpointer-arith] src/utils/AutoCleanup.h: In member function 'bool Thread::WaitForEnd(DWORD)': src/utils/AutoCleanup.h:107:15: warning: NULL used in arithmetic [-Wpointer-arith] src/utils/AutoCleanup.h:118:22: warning: NULL used in arithmetic [-Wpointer-arith] src/utils/AutoCleanup.h:131:16: warning: converting to non-pointer type 'HANDLE {aka long unsigned int}' from NULL [-Wconversion-null] src/utils/AutoCleanup.h: In member function 'void Thread::Terminate()': src/utils/AutoCleanup.h:148:15: warning: converting to non-pointer type 'HANDLE {aka long unsigned int}' from NULL [-Wconversion-null] In file included from src/Tunnel.h:6:0, from src/Tunnel.cpp:2: src/socks/SocksParser.h: At global scope: src/socks/SocksParser.h:38:2: error: 'BOOL' does not name a type In file included from src/Tunnel.cpp:2:0: src/Tunnel.h:27:2: error: 'BOOL' does not name a type src/Tunnel.cpp: In member function 'DWORD CTunnel::TCPTunnelProc(LPVOID)': src/Tunnel.cpp:214:16: warning: converting to non-pointer type 'DWORD {aka long unsigned int}' from NULL [-Wconversion-null] src/Tunnel.cpp:215:16: warning: converting to non-pointer type 'DWORD {aka long unsigned int}' from NULL [-Wconversion-null] src/Tunnel.cpp: In member function 'bool CTunnel::Begin(int, int)': src/Tunnel.cpp:247:16: warning: converting to non-pointer type 'DWORD {aka long unsigned int}' from NULL [-Wconversion-null] src/Tunnel.cpp:248:16: warning: converting to non-pointer type 'DWORD {aka long unsigned int}' from NULL [-Wconversion-null] make: *** [src/Tunnel.o] Error 1

    环境: Debian GNU/Linux 7 \n \l 内核: Linux TS151213-daniao 2.6.32-042stab108.8 #1 SMP Wed Jul 22 17:23:23 MSK 2015 x86_64 GNU/Linux

    opened by log4she11 0
Releases(v0.1.3)
Owner
b23r0
If the code cant run , thats not what i wrote.
b23r0
Interactive bind/reverse PTY shell with Windows&Linux support implementation by Rust.

Cliws Lightweight interactive bind/reverse PTY shell with Windows&Linux support implementation by Rust. Features WebSocket Full pty support: VIM, SSH,

b23r0 215 Dec 3, 2021
A proxy implement with http / socks5 in-bound and vmess out-bound, written in Rust and tokio.rs

tokio-vmess an Asynchronous proxy implement with http / socks5 in-bound and vmess out-bound, written in Rust and tokio Run example first, Fill out the

irumeria 7 Oct 3, 2022
A TCP proxy using HTTP - Reach SSH behind a Nginx reverse proxy

?? TCP over HTTP ?? The Questions ?? What does it do? You can proxy TCP traffic over HTTP. A basic setup would be: [Your TCP target] <--TCP-- [Exit No

Julian 185 Dec 15, 2022
A multi-connection TCP reverse proxy server and client.

tprox A multi-connection TCP reverse proxy. The tprox server is able to proxy multiple incoming connections to the tprox client over a single TCP conn

Mohammed Ajmal Siddiqui 4 Sep 21, 2022
UDP proxy with Proxy Protocol and mmproxy support

udppp UDP proxy with Proxy Protocol and mmproxy support. Features Async Support Proxy Protocol V2 SOCKET preserve client IP addresses in L7 proxies(mm

b23r0 10 Dec 18, 2022
Proxy sentry request to a sentry server using a tunnel/proxy endpoint

Sentry Tunnel This is a proxy that forwards tunneled sentry requests to the real sentry server. The implementation is based on the explanation provide

Paul FLORENCE 14 Dec 20, 2022
Tunnel TCP traffic through SOCKS5 or HTTP using a TUN interface.

tun2proxy Tunnel TCP traffic through SOCKS5 or HTTP on Linux. Authentication not yet supported. Error handling incomplete and too restrictive. Build C

B. Blechschmidt 34 Nov 29, 2022
A fast and stable reverse proxy for NAT traversal, written in Rust

rathole A fast and stable reverse proxy for NAT traversal, written in Rust rathole, like frp, can help to expose the service on the device behind the

Yujia Qiao 4.6k Dec 30, 2022
A lightweight Rust reverse proxy.

Brachyura A reverse proxy, which I am primarily using as a Rust / Hyper learning project. I utilize Nginx as part of my home lab providing reverse pro

William Howard 8 Jan 8, 2023
Reverse proxy for HTTP microservices and STDIO. Openfass watchdog which can run webassembly with wasmer-gpu written in rust.

The of-watchdog implements an HTTP server listening on port 8080, and acts as a reverse proxy for running functions and microservices. It can be used independently, or as the entrypoint for a container with OpenFaaS.

yanghaku 7 Sep 15, 2022
A minimal ngrok liked reverse proxy implemented in Rust.

rok A minimal ngrok implementation in Rust, for educational purpose. This work is largely based on rathole, especially the very first commit. Other ho

Kai 3 Jun 21, 2022
A firewall reverse proxy for preventing Log4J (Log4Shell aka CVE-2021-44228) attacks.

log4jail ??️ A fast firewall reverse proxy with TLS (HTTPS) and swarm support for preventing Log4J (Log4Shell aka CVE-2021-44228) attacks. ?? Table of

Mufeed VH 22 Dec 27, 2022
Hopper - Fast, configurable, lightweight Reverse Proxy for Minecraft

Hopper Hopper is a lightweight reverse proxy for minecraft. It allows you to connect multiple servers under the same IP and port, with additional func

Pietro 174 Jun 29, 2023
A rust implementation of websock/socket proxy. Support noVNC

websockify-rs: WebSockets support for any application/server This is a rust implement of the websockify-js, which is part of the noVNC project. At the

null 3 Jan 10, 2023
Lightweight proxy that allows redirect HTTP(S) traffic through a proxy.

Proxyswarm Proxyswarm is a lightweight proxy that allows redirect HTTP(S) traffic through a proxy. WARNING: This app isn't recomended for download lar

Jorge Alejandro Jimenez Luna 4 Apr 16, 2022
Web3-proxy: a fast caching and load balancing proxy for web3 (Ethereum or similar) JsonRPC servers.

web3-proxy Web3-proxy is a fast caching and load balancing proxy for web3 (Ethereum or similar) JsonRPC servers. Signed transactions (eth_sendRawTrans

null 55 Jan 8, 2023
QUIC proxy that allows to use QUIC to connect to an SSH server without needing to patch the client or the server.

quicssh-rs ?? quicssh-rs is a QUIC proxy that allows to use QUIC to connect to an SSH server without needing to patch the client or the server. quicss

Jun Ouyang 18 May 5, 2023
Cloud Native high performance security and privacy SQL proxy.

Fern proxy With the advent of Cloud Native applications, architecture patterns evolved and emerged to take advantage of cloud computing, and build mor

Fern 12 Nov 7, 2022
The High Performance Proxy/Load Balancer

Silverwind-The Next Generation High-Performance Proxy English 简体中文 The Silverwind is a high-performance reverse proxy/load balancer. And it could be a

null 112 Apr 7, 2023