{"id":34567458,"url":"https://github.com/yadickson/proxy-vole-debs","last_synced_at":"2026-04-17T04:03:04.058Z","repository":{"id":33898745,"uuid":"37613186","full_name":"yadickson/proxy-vole-debs","owner":"yadickson","description":"Build Debian Package for Proxy Vole","archived":false,"fork":false,"pushed_at":"2019-01-24T14:44:43.000Z","size":276,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-25T20:13:41.984Z","etag":null,"topics":["debian","debian-packages"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yadickson.png","metadata":{"files":{"readme":"README","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-06-17T18:26:51.000Z","updated_at":"2019-01-24T14:44:44.000Z","dependencies_parsed_at":"2022-09-04T10:20:13.778Z","dependency_job_id":null,"html_url":"https://github.com/yadickson/proxy-vole-debs","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/yadickson/proxy-vole-debs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yadickson%2Fproxy-vole-debs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yadickson%2Fproxy-vole-debs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yadickson%2Fproxy-vole-debs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yadickson%2Fproxy-vole-debs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yadickson","download_url":"https://codeload.github.com/yadickson/proxy-vole-debs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yadickson%2Fproxy-vole-debs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31914458,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"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":["debian","debian-packages"],"created_at":"2025-12-24T09:11:19.673Z","updated_at":"2026-04-17T04:03:04.039Z","avatar_url":"https://github.com/yadickson.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"#proxy-vole WIP alpha\n\nProxy Vole is a Java library to auto detect the platform network proxy settings.  \n**Note: This library is a fork of [proxy-vole](https://code.google.com/p/proxy-vole/) by Bernd Rosstauscher hosted at Google Code.**\n\n##Introduction\nThe library provides some proxy setting search strategies to read the proxy settings from the system config \n(Windows, KDE, Gnome, OSX), browser config (Firefox, IE) or environment variables and provides you an ready to use proxy selector.\n\n##Why a fork?\n* Can't contact Bernd Rosstauscher.\n* Google Code is dead by now.\n* proxy-vole seems to be dead even longer. Last commit over a year ago. Last release end 2013.\n* proxy-vole is not available on any public Maven repository. Need to change the Maven coordinates and Java package names\n  to be able to push it to Maven Central on my own.\n* I don't like the Windows DLL and usage of JNI. Replaced both by JNA.\n\n##Usage\n\n###Using the default strategy to find the settings\n```Java\n// Use the static factory method getDefaultProxySearch to create a proxy search instance \n// configured with the default proxy search strategies for the current environment.\nProxySearch proxySearch = ProxySearch.getDefaultProxySearch();\n\n// Invoke the proxy search. This will create a ProxySelector with the detected proxy settings.\nProxySelector proxySelector = proxySearch.getProxySelector();\n\n// Install this ProxySelector as default ProxySelector for all connections.\nProxySelector.setDefault(proxySelector);\n```\n\n###Modifying the search strategy\n```Java\n// Create a not configured proxy search instance and configure customized proxy search strategies.\nProxySearch proxySearch = new ProxySearch();\nif (PlatformUtil.getCurrentPlattform() == Platform.WIN) {\n    proxySearch.addStrategy(Strategy.IE);\n    proxySearch.addStrategy(Strategy.FIREFOX);\n    proxySearch.addStrategy(Strategy.JAVA);\n} else if (PlatformUtil.getCurrentPlattform() == Platform.LINUX) {\n    proxySearch.addStrategy(Strategy.GNOME);\n    proxySearch.addStrategy(Strategy.KDE);\n    proxySearch.addStrategy(Strategy.FIREFOX);\n} else {\n    proxySearch.addStrategy(Strategy.OS_DEFAULT);\n}\n```\n\n###Improving PAC performance\nWhen your system uses a proxy automation script (PAC) Javascript is used to determine the actual proxy. \nIf your program needs to access a lot of HTTP URLs, then this might become a performance bottleneck.\nTo speed things up a little bit, you can activate a cache that will store already processed URLs.\nWhen a cached URL is accessed the Javascript execution will be skipped and the cached proxy is used.\n```Java\n// Use the static factory method getDefaultProxySearch to create a proxy search instance \n// configured with the default proxy search strategies for the current environment.\nProxySearch proxySearch = ProxySearch.getDefaultProxySearch();\n\n// Cache 20 URLs for up to 10 minutes. This is the default.\nproxySearch.setPacCacheSettings(32, 1000*60*5); \n```\n\n###How to handle proxy authentication\nSome proxy servers request a login from the user before they will allow any connections. Proxy Vole \nhas no support to handle this automatically. This needs to be done manually, because there is no way to read \nthe login and password. These settings are stored encrypted. You need to install an authenticator in your Java\nprogram manually and e.g. ask the user in a dialog to enter the username and password.\n```Java\nAuthenticator.setDefault(new Authenticator() {\n    protected PasswordAuthentication getPasswordAuthentication() {\n        if (getRequestorType() == RequestorType.PROXY) {\n            return new PasswordAuthentication(\"proxy-user\", \"proxy-password\".toCharArray());\n        } else { \n            return super.getPasswordAuthentication();\n        }\n    }               \n});\n```\n\n###Logging\n\nProxy Vole does not use Log4J, LogBack or SLF4J to make the library as light weight as possible with no external dependencies.\nIf you need to know what is going on inside of the library you may want to install a logger.\n```Java\n// Register MyLogger instance \nLogger.setBackend(new MyLogger());\n```\n\n###Testing PAC\nTesting the PAC parser can be problematic, because the myIPAddress() method returns different results on different machines.\nTherefore the system property com.github.markusbernhardt.proxy.pac.overrideLocalIP can be set for unit tests.\nIt's value will always be used as myIPAddress in all PAC scripts.\n```Java\nSystem.setProperty(PacScriptMethods.OVERRIDE_LOCAL_IP, \"123.123.123.123\");\n```\n\n##Motivation\nToday more and more applications try to take direct advantage of Internet connectivity and web services to bring web content\nto your desktop. Java has very good network and Internet connectivity with build in APIs for HTTP, HTTPS, FTP and a web services stack.\nBut the first thing that you need, to use all this fantastic technology, is a working Internet connection. And this is where Java\nlacks a lot in my opinion. When you develop an applet or an Java Webstart application the situation is quite good. The Java \nPlugin will use the proxy settings and connections as used by the browser, but for standalone applications the situation is \nquite unsatisfactory. You have to ask your users to twiddle with system properties and every Java application has \nit's own way of setting proxy configurations. In business environments where you often can find proxy configuration scripts you are stuck.\n\n##Current Situation\nTo set the proxy settings in Java you can use some (documented, but hard to find) system properties on application startup. \nAt runtime you can use the `ProxySelector` API to configure the proxy settings. Java even comes with a system property to \ndetect the system proxy settings automatically, but this one is poorly documented and unreliable in its behaviour.\n\n##The Solution\nUse the Proxy Vole library to provide network connectivity out of the box for your Java application. It provides strategies \nfor auto detecting the current proxy settings. There are many configurable strategies to choose from. At the moment Proxy Vole \nsupports the following proxy detection strategies.\n\n* Read platform settings (Supports: Windows, KDE, Gnome, OSX)\n* Read browser setting (Supports: Firefox 3.x+, Internet Explorer; Chrome and Webkit use the platform settings)\n* Read environment variables (often used variables on Linux / Unix server systems)\n* Auto detection script by using WPAD/PAC (Not all variations supported)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyadickson%2Fproxy-vole-debs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyadickson%2Fproxy-vole-debs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyadickson%2Fproxy-vole-debs/lists"}