JSocksProxy 3
1. Introduction
JSocksProxy is written by Kenny Colliander Nordin in Java to be platform independent. The reason for writing the SOCKS proxy was that we needed a SOCKS proxy at work, but we had difficulties to find any free good proxy, so I decided to write my own since the protocol is so simple.

The proxy can handle SOCKS versions 4, 4a and 5, but only outgoing TCP connections and has no support for authentication. IPv6 should be supported for version 5, but it's not tested.

The proxy can be installed as a Pojo.
2. License
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
3. Configuration
The application has one configuration file jsocksproxy.xml which may be located under the root or in the conf directory of your JBoss instance if the application is running under JBoss.
3.1 Configuration file jsocksproxy.xml
This is an example of how this configuration file could look like.
The configuration file is reloaded every 60 seconds.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <backlog>100</backlog>
    <outgoingAddress>0.0.0.0</outgoingAddress>
    <listen>
        <address>127.0.0.1</address>
        <port>1080</port>
    </listen>
</configuration>
3.1.1 outgoingAddress
3.1.2 backlog
3.1.3 listen
Specifies on which addresses the server should listen for SOCKS clients. Several listen elements may be specified.
3.2 Graphical Administration interface
The administration interface can be started by running jsocksproxy.jar and requires that you locate the
jsocksproxy.xml.

The interface has English as default language but also supports localized text.

Supported localized texts:
3.2.1 Listen tab
You may add or remove end points that the socks server should wait for incoming connections on.
Listen tab
3.2.2 Outgoing tab
You may choose the outgoing address, the OS will decide the best suitable address if 0.0.0.0 is specified.
Outgoing tab
3.2.2 Advanced tab
Backlog tell the OS how many connections that should be queued for a specific end point and must be a value between 1 and 100.
Allow v4 and Allow v5 specifies which SOCKS protocols that may be used.
Advanced tab
4. Obtain a new version
The home page for this project is http://kecon.najt.nu/jsocksproxy/download/.
5. Requirements
JSocksProxy requires Java 8 SE or later, which can be downloaded from https://java.com/en/download/.
6. Install
The JSocksProxy can be installed in two ways from this distribution. You can either install it as a Pojo (Plain Old Java Object).
6.1 Pojo Install
The install procedure may be difficult if you don't have any Java experience. A simplified install procedure may be fixed in the future. This install assume that you have Java 1.8 installed.
  1. Unzip dist/jsocksproxy.zip into a prefered installation directory. You should get a install structure like:

    /conf/example/jsocksproxy.xml
    /lib/jsocksproxy.jar
    /run.bat
     
  2. You can move /conf/example/jsocksproxy.xml into the root directory, if you don't want to write your own configuration file.
  3. Next step is to configure jsocksproxy.xml, read more about the settings under configuration
  4. You can now start the SOCKS proxy manually using the run.bat in Windows. I have not supplied any java service wrappers, but there are several freewares that you can use.
    The main class is nu.najt.kecon.jsocksproxy.JSocksProxy

    Static start method: nu.najt.kecon.jsocksproxy.JSocksProxy.startService()
    Static stop method: nu.najt.kecon.jsocksproxy.JSocksProxy.stopService()
7. Compile
You will need Java 8 SDK and Ant to build this project.
8. Changes
Documented changes.
8.1 Changes between 2.0 and 3.0
8.2 Changes between 1.0 and 2.0