{"id":34871327,"url":"https://github.com/jh3nd3rs0n/jargyle","last_synced_at":"2026-02-22T00:46:23.430Z","repository":{"id":40616794,"uuid":"258460552","full_name":"jh3nd3rs0n/jargyle","owner":"jh3nd3rs0n","description":"A Java SOCKS5 server and a Java SOCKS5 client/server API","archived":false,"fork":false,"pushed_at":"2026-02-14T14:53:19.000Z","size":25177,"stargazers_count":15,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-02-14T22:15:08.643Z","etag":null,"topics":["dtls","java","socks","socks-proxy","socks-proxy-server","socks-server","socks5","socks5-proxy","socks5-proxy-server","socks5-server","ssl","tls"],"latest_commit_sha":null,"homepage":"https://jh3nd3rs0n.github.io/jargyle/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jh3nd3rs0n.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-04-24T09:02:35.000Z","updated_at":"2026-02-14T13:54:45.000Z","dependencies_parsed_at":"2023-10-01T14:53:40.175Z","dependency_job_id":"6254aab9-e096-46fd-83d3-055a42a7d2f9","html_url":"https://github.com/jh3nd3rs0n/jargyle","commit_stats":null,"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/jh3nd3rs0n/jargyle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jh3nd3rs0n%2Fjargyle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jh3nd3rs0n%2Fjargyle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jh3nd3rs0n%2Fjargyle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jh3nd3rs0n%2Fjargyle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jh3nd3rs0n","download_url":"https://codeload.github.com/jh3nd3rs0n/jargyle/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jh3nd3rs0n%2Fjargyle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29701425,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T23:35:04.139Z","status":"ssl_error","status_checked_at":"2026-02-21T23:35:03.832Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dtls","java","socks","socks-proxy","socks-proxy-server","socks-server","socks5","socks5-proxy","socks5-proxy-server","socks5-server","ssl","tls"],"created_at":"2025-12-25T23:54:31.678Z","updated_at":"2026-02-22T00:46:23.425Z","avatar_url":"https://github.com/jh3nd3rs0n.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CodeQL](https://github.com/jh3nd3rs0n/jargyle/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/jh3nd3rs0n/jargyle/actions/workflows/codeql-analysis.yml) [![Java CI with Maven (Mac OS Latest)](https://github.com/jh3nd3rs0n/jargyle/actions/workflows/maven_macos_latest.yml/badge.svg)](https://github.com/jh3nd3rs0n/jargyle/actions/workflows/maven_macos_latest.yml) [![Java CI with Maven (Ubuntu Latest)](https://github.com/jh3nd3rs0n/jargyle/actions/workflows/maven_ubuntu_latest.yml/badge.svg)](https://github.com/jh3nd3rs0n/jargyle/actions/workflows/maven_ubuntu_latest.yml) [![Java CI with Maven (Windows Latest)](https://github.com/jh3nd3rs0n/jargyle/actions/workflows/maven_windows_latest.yml/badge.svg)](https://github.com/jh3nd3rs0n/jargyle/actions/workflows/maven_windows_latest.yml) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/581706f82bf945df84bc397da4cecee5)](https://www.codacy.com/gh/jh3nd3rs0n/jargyle/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=jh3nd3rs0n/jargyle\u0026amp;utm_campaign=Badge_Grade)\n\n# Jargyle\n\n## Contents\n\n-   [Overview](#overview)\n-   [Directory Overview](#directory-overview) \n-   [Build Requirements](#build-requirements)\n-   [Frequently Used Maven Commands](#frequently-used-maven-commands)\n\n## Overview\n\nJargyle is a Java SOCKS5 server and a Java SOCKS5 client/server API. It is\ninspired by [JSocks](https://jsocks.sourceforge.net/),\n[SocksLib](https://github.com/fengyouchao/sockslib),\n[Esocks](https://github.com/fengyouchao/esocks) and\n[Dante](https://www.inet.no/dante/index.html).\n\nJargyle is licensed under the\n[MIT license](https://opensource.org/licenses/MIT).\nIts license can be found [here](LICENSE).\n\nThis README file discusses how to get started in building Jargyle. For \ndetailed examples and usage instructions including how to use \nJargyle, please refer to the \n[project website](https://jh3nd3rs0n.github.io/jargyle).\n\n## Directory Overview\n\nThe following is a simple overview of the directory.\n\n-   `.github/workflows/`: Contains GitHub workflow files that perform analyses \n    and tests when a push has been made to the GitHub repository\n\n-   `docs/`: Contains the website/documentation\n\n-   `jargyle-argmatey/`: Maven module for the extensible command line \n    interface. It is used for the Jargyle command line interface.\n\n-   `jargyle-cli/`: Maven module for the Jargyle command line interface\n\n-   `jargyle-client/`: Maven module for the SOCKS client API\n\n-   `jargyle-common/`: Maven module for the public API used by all modules\n\n-   `jargyle-distributions/`: Maven module for creating the binary and source \n    distributions\n\n-   `jargyle-internal/`: Maven module for the internal API used by all modules\n\n-   `jargyle-protocolbase/`: Maven module for the foundational API for the \n    SOCKS client API and the SOCKS server API\n\n-   `jargyle-report-aggregate/`: Maven module for generating the aggregated\n    test coverage reports\n\n-   `jargyle-server/`: Maven module for the SOCKS server API\n\n-   `jargyle-test-echo-endpoints/`: Maven module for clients and servers that\n    implement the Echo protocol described in RFC 862. The clients and one of \n    the servers use the SOCKS client API. When testing the clients and one of \n    the servers, the SOCKS client API and the SOCKS server API are also tested.\n\n-   `jargyle-test-echo-endpoints-load/`: Maven module for load testing of servers \n    that implement the Echo protocol described in RFC 862. It includes load \n    testing of the SOCKS server API.\n\n-   `jargyle-test-help/`: Maven module for the API for help with testing\n\n-   `jargyle-test-netty-example-socksproxy/`: Maven module for the modified \n    version of the Netty example SOCKS proxy. It is used for testing.\n\n-   `src/site/`: Contains files used to generate `docs/`\n\n-   `.gitignore`: List of directories and files for Git to ignore such as\n    Eclipse and IntelliJ IDEA project directories and files\n\n-   `LICENSE`: The license for this project\n\n-   `pom.xml`: The Maven POM file for this project\n\n-   `README.md`: This README file\n\n## Build Requirements\n\nYou will need the following to build Jargyle:\n\n-   JDK 9 or higher\n-   Apache Maven 3.3.9 or higher\n\nOnce you have installed the requirements, be sure to have the environment \nvariable `JAVA_HOME` set to the Java home directory.\n\n## Frequently Used Maven Commands\n\nThe following are Maven commands that are frequently used for this project.\nThese commands are to be executed at the top directory of Jargyle.\n\n-   `mvn clean`: Deletes directories and files created by this project.\n\n-   `mvn clean compile site:site site:stage site:deploy`: Performs a clean \n    build and produces the website/documentation. \n    \n    The produced website/documentation can be found in `docs/`. \n    \n    Included in the website/documentation is the reference documentation. The \n    reference documentation is generated from special annotations within the \n    source code. If these annotations are added, changed, moved, removed, or \n    handled differently, you'll need to regenerate the reference \n    documentation. Here's how:\n    \n    1.   **Build the project:** This creates the necessary files to run the \n         reference documentation generator. The following command creates the \n         necessary files to run the reference documentation generator:\n         \n         ```bash\n         # Perform a build of the binary distribution\n         mvn clean package -DskipTests=true         \n         ```\n    \n    2.   **Generate the reference documentation:** This step extracts the \n         information from the annotations and creates Markdown files. The \n         following command extracts the information from the annotations \n         and creates Markdown files:\n         \n         ```bash\n         # Run Jargyle to generate Markdown reference documents to the directory of Markdown reference documentation\n         jargyle-distributions/target/jargyle-5.0.0-SNAPSHOT-bin/jargyle-5.0.0-SNAPSHOT/bin/jargyle generate-reference-docs -d src/site/markdown/reference/\n         ```\n    \n    3.   **Build the website/documentation**: This step takes the generated \n         Markdown files and integrates them into the website/documentation. \n         The following command takes the generated Markdown files and \n         integrates them into the website/documentation:\n         \n         ```bash\n         # Produce the website/documentation with the updated reference documentation\n         mvn compile site:site site:stage site:deploy\n         ```\n    \n-   `mvn clean package -DskipTests=true`: Performs a clean build of the binary \n    and source distributions skipping the execution of all tests. \n    \n    The built binary and source distributions can be found as directories and \n    in multiple archive formats in `jargyle-distributions/target/`.\n    \n-   `mvn clean test -Pcoverage`: Performs a clean build, executes all tests \n    except the integration tests, and produces the aggregated test coverage \n    reports.\n    \n    The aggregated test coverage reports can be found in\n    `jargyle-report-aggregate/target/`.\n    \n    The option `-Pcoverage` can be removed if you do not want the aggregated \n    test coverage reports produced.\n    \n-   `mvn clean verify --projects=\\!jargyle-test-echo-endpoints-load,\\!jargyle-distributions -Pcoverage`: \n    Performs a clean build, executes all tests except the ones from the \n    project `jargyle-test-echo-endpoints-load`, skips building the binary \n    and source distributions, and produces the aggregated test coverage \n    reports.\n    \n    The argument `\\!jargyle-test-echo-endpoints-load,` from the option \n    `--projects` can be removed if you want the load tests to be executed. If \n    the load tests are executed, the results can be found in \n    `jargyle-test-echo-endpoints-load/target/load-test-results/`.\n    \n    The aggregated test coverage reports can be found in \n    `jargyle-report-aggregate/target/`. \n    \n    The option `-Pcoverage` can be removed if you do not want the aggregated \n    test coverage reports produced.\n    \n    **Important: Port Requirements for Integration Tests**\n    \n    The integration tests use the loopback address and local port numbers. To \n    ensure the integration tests run correctly, the following local ports must \n    be available (not blocked by a firewall or other application):\n    \n    -   `1080`: This port is used by the SOCKS servers created during testing. \n        Ensure no other SOCKS server is running on this port.\n    \n    -   `8000` and `9000`: These ports are used by Kerberos Key Distribution \n        Center (KDC) instances for testing GSS-API/Kerberos functionality. \n        These are needed for running tests that involve GSS-API \n        authentication.\n    ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjh3nd3rs0n%2Fjargyle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjh3nd3rs0n%2Fjargyle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjh3nd3rs0n%2Fjargyle/lists"}