{"id":37029148,"url":"https://github.com/exceptionfactory/socketbroker","last_synced_at":"2026-01-14T03:29:43.998Z","repository":{"id":57719170,"uuid":"441726360","full_name":"exceptionfactory/socketbroker","owner":"exceptionfactory","description":"Java Socket library supporting SOCKS and HTTP proxy servers with authentication","archived":false,"fork":false,"pushed_at":"2025-02-06T02:34:46.000Z","size":160,"stargazers_count":7,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-06T03:29:27.614Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exceptionfactory.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}},"created_at":"2021-12-25T17:25:41.000Z","updated_at":"2025-02-06T02:34:50.000Z","dependencies_parsed_at":"2024-08-03T18:01:33.407Z","dependency_job_id":"790787e8-6cef-4a4a-87a0-b7739b77de23","html_url":"https://github.com/exceptionfactory/socketbroker","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/exceptionfactory/socketbroker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exceptionfactory%2Fsocketbroker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exceptionfactory%2Fsocketbroker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exceptionfactory%2Fsocketbroker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exceptionfactory%2Fsocketbroker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exceptionfactory","download_url":"https://codeload.github.com/exceptionfactory/socketbroker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exceptionfactory%2Fsocketbroker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408843,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-01-14T03:29:43.344Z","updated_at":"2026-01-14T03:29:43.988Z","avatar_url":"https://github.com/exceptionfactory.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Socket Broker\n\n[![build](https://github.com/exceptionfactory/socketbroker/actions/workflows/build.yml/badge.svg)](https://github.com/exceptionfactory/socketbroker/actions/workflows/build.yml)\n[![codecov](https://codecov.io/gh/exceptionfactory/socketbroker/branch/main/graph/badge.svg?token=XM99GMCJGT)](https://codecov.io/gh/exceptionfactory/socketbroker)\n[![vulnerabilities](https://snyk.io/test/github/exceptionfactory/socketbroker/badge.svg)](https://snyk.io/test/github/exceptionfactory/socketbroker)\n[![javadoc](https://javadoc.io/badge2/com.exceptionfactory.socketbroker/socketbroker/javadoc.svg)](https://javadoc.io/doc/com.exceptionfactory.socketbroker/socketbroker)\n[![maven-central](https://img.shields.io/maven-central/v/com.exceptionfactory.socketbroker/socketbroker)](https://search.maven.org/artifact/com.exceptionfactory.socketbroker/socketbroker)\n\nJava Socket library supporting SOCKS and HTTP proxy servers with authentication \n\n# Build Requirements\n\n- Java 21\n- Maven 3.9\n\n# Runtime Requirements\n\n- Java 8\n\n# Versioning\n\nSocket Broker follows the [Semantic Versioning Specification 2.0.0](https://semver.org/).\n\nThe public API consists of interfaces and classes in the following Java packages:\n\n- com.exceptionfactory.socketbroker\n- com.exceptionfactory.socketbroker.configuration\n\n# Standards\n\nSocket Broker supports client capabilities for several protocols defined in referenced standards.\n\n## SOCKS\n\n- [RFC 1928: SOCKS Protocol Version 5](https://tools.ietf.org/html/rfc1928)\n- [RFC 1929: Username/Password Authentication for SOCKS V5](https://tools.ietf.org/html/rfc1929)\n\n## HTTP\n\n- [RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content](https://tools.ietf.org/html/rfc7231)\n- [RFC 7235: Hypertext Transfer Protocol (HTTP/1.1): Authentication](https://tools.ietf.org/html/rfc7235)\n- [RFC 7617: The 'Basic' HTTP Authentication Scheme](https://tools.ietf.org/html/rfc7617)\n\n# Building\n\nRun the following Maven command to build the library:\n\n```\n./mvnw clean install\n```\n\n# Integrating\n\nThe `BrokeredSocketFactory` class provides the primary point of integration for external applications.\n\n## Configuration\n\nThe `BrokerConfiguration` interface and `StandardBrokerConfiguration` class provide the proxy protocol, proxy server\naddress, and optional authentication credentials necessary for creating a connection through a proxy server.\n\n### Proxy Type\n\nThe `ProxyType` enumeration defines supported protocols including `SOCKS5` and `HTTP_CONNECT`.\n\n### Proxy Socket Address\n\nThe proxy server address must be defined using an instance\nof [java.net.InetSocketAddress](https://docs.oracle.com/javase/8/docs/api/java/net/InetSocketAddress.html) that includes\nthe server address and port number.\n\n### Authentication Credentials\n\nAccess to proxy servers that require authentication involves configuring an instance of `AuthenticationCredentials`.\nThe `StandardUsernamePasswordAuthenticationCredentials` class supports defining a username string and a password\ncharacter array.\n\n### Socket Factory\n\nThe `BrokeredSocketFactory` class requires an instance of `BrokerConfiguration` as well as\na [javax.net.SocketFactory](https://docs.oracle.com/javase/8/docs/api/javax/net/SocketFactory.html). The `SocketFactory`\nprovides the opportunity to supply standard settings for the connection to the configured proxy server. The\n`SocketFactory.getDefault()` method is sufficient for standard integrations.\n\n# Alternatives\n\nSeveral alternative implementations are available depending on usage requirements.\n\n## Java Socket Proxy\n\nThe [java.net.Socket](https://docs.oracle.com/javase/8/docs/api/java/net/Socket.html) class can be configured using an\ninstance of [java.net.Proxy](https://docs.oracle.com/javase/8/docs/api/java/net/Proxy.html) for connections to SOCKS or\nHTTP proxies that do not require authentication.\n\nThe standard [java.net.Authenticator](https://docs.oracle.com/javase/8/docs/api/java/net/Authenticator.html) class\nsupports configurable proxy authentication through the static `setDefault()` method. Standard `Socket` implementations\ninvoke password request methods on a configured `Authenticator` to return instances of\n[java.net.PasswordAuthentication](https://docs.oracle.com/javase/8/docs/api/java/net/PasswordAuthentication.html). This\nintegration approach is sufficient for applications that allow defining an instance of the `Authenticator` class for the\nJava Virtual Machine.\n\n## Netty\n\nThe [Netty](https://netty.io) project provides component modules that support both SOCKS 4 and SOCKS 5 as well as HTTP.\nNetty does not provide a direct implementation of `java.net.Socket` supporting proxy connections, but applications using\nNetty can integrate support for proxy access using available components.\n\n## SocksLib\n\nThe [SocksLib](https://github.com/fengyouchao/sockslib) library provides client and server socket implementations for\nthe SOCKS 5 protocol. SocksLib supports both TCP and UDP client connections.\n\n# Licensing\n\nSocket Broker is released under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexceptionfactory%2Fsocketbroker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexceptionfactory%2Fsocketbroker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexceptionfactory%2Fsocketbroker/lists"}