Giter Club home page Giter Club logo

mc256 / distributed_proxy_system Goto Github PK

View Code? Open in Web Editor NEW
13.0 3.0 1.0 119 KB

EECS4080 Project at York University. A distribute proxy system to circumvent content filtering firewall. Data units are randomly distributed to different proxies and routed though different paths to avoid detection, single points of failure, persisting connections, and bottlenecks.

License: GNU General Public License v3.0

CMake 1.37% C++ 98.32% Makefile 0.31%
proxy distributed york-university socks5-server eecs4080

distributed_proxy_system's Introduction

Distributed Anti-Interference Proxy System

This is a EECS4080 Project at York University.

Research Paper: Junlin Chen and Uyen Trang Nguyen, A Robust Protocol for Circumventing Censoring Firewalls, 18th IEEE International Conference on Computer and Information Technology (CIT-2018), Halifax, Canada, July 30 - August 3, 2018.

DOI 10.1109/Cybermatics_2018.2018.00299

Compile & Run

You can compile this project using cmake or makefile in CentOS7. Please install libev before compile using

yum install libev libev-devel

To run this program is very simple. But to be notices that, there are three mode of this program

  • Client Application ./a.out client
  • Server Application ./a.out peer
  • SOCKS5 Server ./a.out socks5

That's it!

Configuration

Client Application

Please use the client_settings.txt. You can use space or line break to separate these values

  • Listen address
  • Listen port
  • Connection confirm password
  • List of the interfaces
    • IP address
    • Port
    • Password

Server Application

Please use the peer_settings.txt. You can use space or line break to separate these values

  • Connection confirm password
  • SOCKS5 server address
  • SOCKS5 server port
  • Fake HTTP response (Should be a *.jpg image)
  • List of the interfaces
    • Listen address
    • Port
    • Password (Password should be all different)

SOCKS Server

Please use the socks_settings.txt. You can use space or line break to separate these values

  • Listen address
  • Listen port

Documentation

Source Code Structure

  • connection
    This folder contains all the socket operation classes wrapped in a event-driven design.
    • Async_Accept: creates listener. It can accept connection.
    • Async_Connect: connects to a socket.
    • Async_Read: reads from a socket.
    • Async_Write: write to a socket.
  • interface
    Lets define that there are two faces that the client application and the server application have.
    Such that
    SOCKS Client <---> [A|Client Application|B] <===> [A|Server Application|B] <---> SOCKS Server <---> Internet
    • Client_A: handles the connection to SOCKS Client
    • Client_B: handles the connection to Server Application
    • Peer_A: handles the connection to Client Application
    • Peer_B: handles the connection to SOCKS Server
  • program
    We need a program that can manage two interface for a program.
    • Client_Core: manages Client_A and Client_B (Client Application)
    • Peer_Core: manages Peer_A and Peer_B (Server Application)
    • Socks_Core: manages the SOCKS server, including all the files in ./socks5/.
  • socks5
    Solely for SOCKS server
    • Channel: forwards SOCKS5 proxy traffic
    • Handshake: takes care of the SOCKS5 handshake procedure.
  • utility
    All the tools that need for this project
    • Command_Listener: We can type command to the console. (But I did not implement this feature, UNUSED)
    • Container: keeps important value while the program is running.
    • Encryption: has all the encryption algorithm.
    • File_Streamer: reads the file and sends to the socket.
    • Packet: prepares the data being transmit over the proxy network.
    • Proxy_Peer: stores the configuration of the interfaces of the server application.
    • Timeout_Listener: listens a timeout event, refreshes the console, prints useful information.

Please read detailed documentation in header files

distributed_proxy_system's People

Contributors

mc256 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

mpskex

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.