{"id":17231807,"url":"https://github.com/pierreprinetti/openstack-proxy","last_synced_at":"2025-10-27T10:32:23.450Z","repository":{"id":104891844,"uuid":"291290511","full_name":"pierreprinetti/openstack-proxy","owner":"pierreprinetti","description":"Proxy calls to the OpenStack API. Formerly known as openstack-mitm","archived":false,"fork":false,"pushed_at":"2025-01-02T13:17:23.000Z","size":160,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-02-09T00:05:16.665Z","etag":null,"topics":["openstack","reverse-proxy"],"latest_commit_sha":null,"homepage":"","language":"Go","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/pierreprinetti.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":"2020-08-29T14:49:17.000Z","updated_at":"2024-12-23T09:08:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"16877ae3-a00c-4088-a029-08ad8b4faee2","html_url":"https://github.com/pierreprinetti/openstack-proxy","commit_stats":null,"previous_names":["pierreprinetti/openstack-mitm","shiftstack/os-proxy","pierreprinetti/openstack-proxy"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierreprinetti%2Fopenstack-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierreprinetti%2Fopenstack-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierreprinetti%2Fopenstack-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierreprinetti%2Fopenstack-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pierreprinetti","download_url":"https://codeload.github.com/pierreprinetti/openstack-proxy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238481239,"owners_count":19479637,"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":["openstack","reverse-proxy"],"created_at":"2024-10-15T04:59:00.063Z","updated_at":"2025-10-27T10:32:23.094Z","avatar_url":"https://github.com/pierreprinetti.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# openstack-proxy\n\n`openstack-proxy` proxies calls to OpenStack, exposing the OpenStack API locally over http or https with a provided certificate.\n\nAll URLs in the OpenStack catalog are rewritten to point to the proxy itself, which will properly reverse-proxy them to the original URL.\n\n## Use locally\n\nBuild with `go build ./cmd/openstack-proxy`.\n\n`openstack-proxy` will parse a `clouds.yaml` file at the known locations, similar to what python-openstackclient does.\n\nBy default the server will listen on localhost on port 13000.\n\n**Configuration:**\n* `--url \u003curl\u003e`: the address this proxy will be reachable at. Default: `http://locahost:13000`\n* `--cert \u003cpath\u003e`: path of the local PEM-encoded HTTPS certificate file. Mandatory if the scheme of --url is HTTPS\n* `--key \u003cpath\u003e`: path of the local PEM-encoded HTTPS certificate key file. Mandatory if the scheme of --url is HTTPS\n* `-o \u003cpath\u003e`: location where to write a new `clouds.yaml` that points to the openstack-proxy instance\n\n## Examples\n\n### Local server\n\n```bash\nexport OS_CLOUD=openstack\n./openstack-proxy -o proxied-clouds.yaml\n```\n```bash\nexport OS_CLIENT_CONFIG_FILE=./proxied-clouds.yaml\nopenstack server list\n```\n\n### On the network, with HTTPS\n\n```bash\n./openstack-proxy \\\n\t--url https://myserver.example.com:13000 \\\n\t--cert /var/run/osp-cert.pem \\\n\t--key /var/run/osp-key.pem' \\\n\t-o proxied-clouds.yaml\n```\n\n## Containerized\n\nAn image of `openstack-proxy` is available on `quay.io/pierreprinetti/openstack-proxy`.\n\nHere is an example of how to use it. This example uses the clouds.yaml in the\ndefault location, edit as necessary:\n\n```bash\nexport OS_CLOUD=openstack # Name of the target cloud in clouds.yaml\nexport OS_CLIENT_CONFIG_FILE=\"$(mktemp -d)/clouds.yaml\" # Where to write the generated clouds.yaml\npodman run \\\n        --name openstack-proxy \\\n        -d \\\n        --rm \\\n        -v ${XDG_CONFIG_HOME:-${HOME}/.config}/openstack/clouds.yaml:/config/clouds.yaml:Z,ro \\\n        -v $(dirname \"$OS_CLIENT_CONFIG_FILE\"):/out:z \\\n        --env OS_CLOUD=$OS_CLOUD \\\n        -p 13000:13000 \\\n        quay.io/pierreprinetti/openstack-proxy -o \"/out/$(basename \"$OS_CLIENT_CONFIG_FILE\")\"\n```\n\nLogs can be inspected in a separate terminal:\n\n```bash\npodman container logs --follow openstack-proxy\n```\n\nTo terminate the container:\n\n```bash\npodman container stop openstack-proxy\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpierreprinetti%2Fopenstack-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpierreprinetti%2Fopenstack-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpierreprinetti%2Fopenstack-proxy/lists"}