Skip to content

diogovk/tcp_proxyfilter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tcp_proxyfilter

Example of tcp proxy filter using elixir. It waits for a connection in a port, and then connects to a server/port sending, connecting the two, acting as a proxy.

For your filters, you should implement your versions of the following:

def send_server(socket, <<27, 91, 49, 53, 126, rest :: binary>>) do
  :gen_tcp.send(socket, "|****f5_PC****|")
  send_server(socket, rest)
end

In this example, it will send the string |****f5_PC****| instead of the binary <<27, 91, 49, 53, 126>>

I realise this should have tests, and a proper supervisor, but I have no time to continue this. Currently the supervisor is only a stub Because I don't have a supervisor, you have to manually restart iex each time the client or server disconnects. Said that, it's a good example of TCP use in elixir.

To test I used BSD's netcat:

# Create a TCP server on port 5678
nc -k -l 5678

Start proxy:

iex server.ex

Make a tcp client connect through our proxy running on port 1055

nc localhost 1055

If you send the sequence for F5 it will print |****f5_PC****|. Any other sequence will be sent back and forth unfiltered.

About

Example of tcp proxy filter using elixir.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages