示例#1
0
文件: Main.cs 项目: Sehyn/AivyCore
        private int _onConnect(IntPtr socket, IntPtr address, int addrSize)
        {
            var structure = Marshal.PtrToStructure <sockaddr_in>(address);
            var ipAddress = new IPAddress(structure.sin_addr.S_addr);
            var port      = structure.sin_port;

            if (_interface.LocalPortWhiteList().Contains(htons(port)) &&
                ipAddress.ToString() is string str_ip &&
                (str_ip == "127.0.0.1" || str_ip == "0.0.0.0" || str_ip == "")) // if local
            {
                return(connect(socket, address, addrSize));
            }

            _interface.Message($"Connection attempt at {ipAddress}:{htons(port)}, redirecting to 127.0.0.1:{_redirectionPort}...");

            _interface.IpRedirected(new IPEndPoint(ipAddress, htons(port)), Process.GetCurrentProcess().Id, _redirectionPort);

            var strucPtr = Marshal.AllocHGlobal(addrSize);
            var struc    = new sockaddr_in
            {
                sin_addr   = { S_addr = inet_addr("127.0.0.1") },
                sin_port   = htons(_redirectionPort),
                sin_family = (short)AddressFamily.InterNetworkv4,
            };

            Marshal.StructureToPtr(struc, strucPtr, true);
            return(connect(socket, strucPtr, addrSize));
        }
示例#2
0
        private int _onConnect(IntPtr socket, IntPtr address, int addrSize)
        {
            var structure = Marshal.PtrToStructure <sockaddr_in>(address);
            var ipAddress = new IPAddress(structure.sin_addr.S_addr);
            var port      = structure.sin_port;

            if (!_whitelist.Contains(ipAddress))
            {
                return(connect(socket, address, addrSize));
            }

            _interface.Message($"Connection attempt at {ipAddress}:{port}, redirecting to 127.0.0.1:{_redirectionPort}...");
            var strucPtr = Marshal.AllocHGlobal(addrSize);
            var struc    = new sockaddr_in
            {
                sin_addr   = { S_addr = inet_addr("127.0.0.1") },
                sin_port   = htons(_redirectionPort),
                sin_family = (short)AddressFamily.InterNetworkv4,
            };

            Marshal.StructureToPtr(struc, strucPtr, true);
            return(connect(socket, strucPtr, addrSize));
        }