{"id":19208038,"url":"https://github.com/ubuntu/ubuntu-proxy-manager","last_synced_at":"2025-10-03T19:09:30.371Z","repository":{"id":65855095,"uuid":"599192147","full_name":"ubuntu/ubuntu-proxy-manager","owner":"ubuntu","description":"D-Bus service to manage system proxy settings on Ubuntu Desktop","archived":false,"fork":false,"pushed_at":"2025-05-06T17:33:30.000Z","size":576,"stargazers_count":10,"open_issues_count":3,"forks_count":0,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-05-12T18:57:36.139Z","etag":null,"topics":["dbus","dbus-service","proxy","ubuntu","ubuntu-desktop"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ubuntu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-02-08T16:36:15.000Z","updated_at":"2025-04-04T04:45:34.000Z","dependencies_parsed_at":"2024-01-18T08:36:40.080Z","dependency_job_id":"9a6b5b61-5ed7-48de-a564-377b2f575686","html_url":"https://github.com/ubuntu/ubuntu-proxy-manager","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/ubuntu/ubuntu-proxy-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubuntu%2Fubuntu-proxy-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubuntu%2Fubuntu-proxy-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubuntu%2Fubuntu-proxy-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubuntu%2Fubuntu-proxy-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ubuntu","download_url":"https://codeload.github.com/ubuntu/ubuntu-proxy-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubuntu%2Fubuntu-proxy-manager/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265837620,"owners_count":23836558,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["dbus","dbus-service","proxy","ubuntu","ubuntu-desktop"],"created_at":"2024-11-09T13:23:55.764Z","updated_at":"2025-10-03T19:09:25.322Z","avatar_url":"https://github.com/ubuntu.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ubuntu-proxy-manager\n\nUbuntu Proxy Manager is a D-Bus mediated service that allows for managing system proxy settings via multiple backends (APT, environment variables and GSettings).\n\n[![Code quality](https://github.com/ubuntu/ubuntu-proxy-manager/workflows/QA/badge.svg)](https://github.com/ubuntu/ubuntu-proxy-manager/actions?query=workflow%3AQA)\n[![Code coverage](https://codecov.io/gh/ubuntu/ubuntu-proxy-manager/branch/main/graph/badge.svg)](https://codecov.io/gh/ubuntu/ubuntu-proxy-manager)\n[![Go Reference](https://pkg.go.dev/badge/github.com/ubuntu/ubuntu-proxy-manager.svg)](https://pkg.go.dev/github.com/ubuntu/ubuntu-proxy-manager)\n[![Go Report Card](https://goreportcard.com/badge/ubuntu/ubuntu-proxy-manager)](https://goreportcard.com/report/ubuntu/ubuntu-proxy-manager)\n[![License](https://img.shields.io/badge/License-GPL3.0-blue.svg)](https://github.com/ubuntu/ubuntu-proxy-manager/blob/main/LICENSE)\n\n## Installation\n\nUse APT to install the package on Ubuntu, which will set up all the required configuration files:\n\n```sh\nsudo apt install ubuntu-proxy-manager\n```\n\n## Usage\n\nThe service currently exposes a single D-Bus method, `com.ubuntu.ProxyManager.Apply`, taking 6 string arguments:\n- `http` - HTTP proxy\n- `https` - HTTPS proxy\n- `ftp` - FTP proxy\n- `socks` - SOCKS proxy\n- `no_proxy` - hosts excluded from proxy\n- `auto` - proxy autoconfiguration URL\n\nWhen calling the function, all 6 arguments must be passsed. Arguments can be skipped by replacing them with empty strings. Keep in mind that this function is not additive and it replaces previously set proxy settings on each call.\n\n``` sh\n# Only apply HTTP proxy\ngdbus call --system --dest com.ubuntu.ProxyManager \\\n                    --object-path /com/ubuntu/ProxyManager \\\n                    --method com.ubuntu.ProxyManager.Apply \\\n                    \"http://example.com:8080\" \"\" \"\" \"\" \"\" \"\"\n\n# Only set proxy autoconfiguration URL, HTTP proxy is removed\ngdbus call --system --dest com.ubuntu.ProxyManager \\\n                    --object-path /com/ubuntu/ProxyManager \\\n                    --method com.ubuntu.ProxyManager.Apply \\\n                    \"\" \"\" \"\" \"\" \"\" \"http://example.com:8080/proxy.pac\"\n\n# Set all proxy settings\ngdbus call --system --dest com.ubuntu.ProxyManager \\\n                    --object-path /com/ubuntu/ProxyManager \\\n                    --method com.ubuntu.ProxyManager.Apply \\\n                    \"http://example.com:8080\" \\\n                    \"https://example.com:8080\" \\\n                    \"ftp://example.com:8080\" \\\n                    \"socks://example.com:8080\" \\\n                    \"localhost,127.0.0.1,::1\" \\\n                    \"http://example.com:8080/proxy.pac\"\n\n# Remove all previously set proxy settings\ngdbus call --system --dest com.ubuntu.ProxyManager \\\n                    --object-path /com/ubuntu/ProxyManager \\\n                    --method com.ubuntu.ProxyManager.Apply \\\n                    \"\" \"\" \"\" \"\" \"\" \"\"\n```\n\nDue to the privileged nature of the service, polkit authorization is set in place to only allow admins to execute the `Apply` method.\n\nSome backends do not support all configuration options. These are described below and will be silently skipped on proxy application.\n\n### Proxy URL format\n\nFor the individual proxy protocols, the URL must be in the form of:\n\n```\nprotocol://username:password@host:port\n```\n\nIt is not mandatory to escape special characters in the username or password. The service will escape any unescaped special character before applying the proxy settings, and will take care not to double-escape already escaped characters.\n\n### `no_proxy` format\n\nThe host exclusion setting must be in the form of:\n\n```\nlocalhost,127.0.0.1,::1\n```\n\nHosts can be individually wrapped in single (`'`) or double quotes (`\"`), or separated by spaces.\n\n## Supported backends\n\n### Environment variables\n\nProxy configuration via environment variables set in `/etc/environment.d/99ubuntu-proxy-manager.conf`.\n\nUnsupported settings: `auto`\n\n### APT\n\nAPT proxy configuration set in `/etc/apt/apt.conf.d/99ubuntu-proxy-manager`.\n\nUnsupported settings: `no_proxy`, `auto`\n\n### GSettings\n\nGSettings proxy configuration set in `/usr/share/glib-2.0/schemas/99_ubuntu-proxy-manager.gschema.override`.\n\nThis backend is optional and is only active if `glib-compile-schemas` is available in the system `PATH`.\n\nThe service will execute `glib-compile-schemas` after applying the settings in order to make the changes visible to GSettings. If an error occurs during the execution of `glib-compile-schemas`, the previous proxy configuration file is restored if applicable.\n\nAutoconfiguration URLs are always prioritzed over manual proxy settings, meaning that if all proxy options are set, the service will set `mode` to `auto` for GSettings to ensure the autoconfiguration URL is used.\n\n## Troubleshooting\n\nThe default behavior of the proxy service is to apply the given settings to all backends. If an error occurs in a specific backend, the other backends are not affected and the proxy settings will still be applied to them.\n\nTo increase verbosity of the service, append `-d` to the `ExecStart` line of the `ubuntu-proxy-manager` systemd unit file, and run `systemctl daemon-reload`:\n\n```\n# cat /lib/systemd/system/ubuntu-proxy-manager.service\n...\n[Service]\nType=dbus\nBusName=com.ubuntu.ProxyManager\nExecStart=/usr/libexec/ubuntu-proxy-manager -d\n```\n\n## Development\n\nYour help would be very much appreciated! Check out the [CONTRIBUTING](./CONTRIBUTING.md) document for more information on how to set up the project locally, and how you could collaborate.\n\n## Contact\n\nYou are welcome to create a new issue on this repository if you find bugs or wish to make any feature requests.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fubuntu%2Fubuntu-proxy-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fubuntu%2Fubuntu-proxy-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fubuntu%2Fubuntu-proxy-manager/lists"}