Git Product home page Git Product logo

forwarder4j's People

Contributors

lolocohen avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

ryu-shen sabixr

forwarder4j's Issues

Configurable socket and I/O options

What is your idea?

The idea is to make the usual socket I/O options tunable from the configuration:

  • socket send buffer size
  • socket receive buffer size
  • socket keep alive
  • socket reuse address
  • socket timeout
  • socket linger
  • TCP no delay
  • size of I/O buffers used in our code

What are the expected benefits and drawbacks?

These confiugrable settings will allow a fine tuning of the performance of Fowrarder4j

Define port forwarding with command-line arguments

What is your idea?

Currently the configuration of the port forwarding is done in a properties file, with entries of type forwarder4j.service.<local_port> = <host>:<port>

It would be nice to be able to also define entries through command line arguments, for instance:

java -cp ... org.forwarder4j.Forwarder <local_port1>=<host1>:<port1> ... <local_portN>=<hostN>:<portN>

Entries defined via command line arguments and in the ocnfig file would all be used, with those in the command line taking precedence in case of duplicate local port entries.

Incorrectly formatted entries would be discarded and a warning logged.

What are the expected benefits and drawbacks?

This will make scripting the tool much easier, and allow easier integration in automated processes.

Are you foreseeing any hurtles or drawbacks?

No

Administrative interface

What is your idea?

It would be nice to be able to list defined entries, add new ones, modify or delete existing ones, while forward4j is running.

What are the expected benefits and drawbacks?

  • ability to change the configuration without interrupting forwarded traffic
  • forwarder4j could be run as a background service (e.g. Unix daemon or Windows service) and configuration changes wouldn't require a restart

Are you foreseeing any hurtles or drawbacks?

This will probably compelxify the code, with the administration part possibly bigger than the runtmle part.

Do you have suggestions on how to implement it?

  • keep it as simple as possible (KISS)
  • initial idea is to use raw socket communication on a configurable port, and send commands strings like:
    • ./f4j-admin.sh list to list all entries, possiblly with some kind of expression to filter the results
    • ./f4j-admin.sh +local_port=host:port to add a new entry or change an existing one
    • ./f4j-admin.sh -local_port to remove an existing entry
    • possibiltiy to send multiple commands, separated by some delimiter (|, ; or , ?)

Add "-q" / "--quiet" options to the admin interface

What should be improved

The idea is to provide a "quiet" mode to the admin interface, such that its output is stripped of everything that is not strictly necessary. This will allow piping the output to other commands or executables.

In which release

v0.5

Rename the shell scripts that run forwarder4j

What should be improved

The shell scripts are currently named run.bat and run.sh, I propose to rename them to f4j.bat and f4j.sh, respectively. That's more distinctive while remaining easy and quick to type :)

In which release

in upcoming v0.3 forward.

Remove dependency on log4j

What should be improved

The log4-1.2.17.jar file is currently the biggest lib (479 KB) in the fowrwarder4j distribution. In fact, it's about 5 times bigger than the addition of all other jars, including forwarder4j-x.y.z.jar!

I propose to remove the runtime dependency on log4j and use jdk logging instead. It only requires a pom.xml and logging configuration change, since the code uses the slf4j wrapper.

In which release

v0.3.0+

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.