{"id":26762104,"url":"https://github.com/alexeevit/camo-rb","last_synced_at":"2026-02-13T06:02:37.709Z","repository":{"id":59151800,"uuid":"324565428","full_name":"alexeevit/camo-rb","owner":"alexeevit","description":"An SSL/TLS image proxy that uses HMAC signed URLs.","archived":false,"fork":false,"pushed_at":"2021-07-16T06:53:33.000Z","size":74,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-03T21:24:45.584Z","etag":null,"topics":["proxy","ruby"],"latest_commit_sha":null,"homepage":"https://rubygems.org/gems/camo-rb","language":"Ruby","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/alexeevit.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}},"created_at":"2020-12-26T13:53:19.000Z","updated_at":"2024-03-22T17:02:30.000Z","dependencies_parsed_at":"2022-09-14T04:01:02.484Z","dependency_job_id":null,"html_url":"https://github.com/alexeevit/camo-rb","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alexeevit/camo-rb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexeevit%2Fcamo-rb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexeevit%2Fcamo-rb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexeevit%2Fcamo-rb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexeevit%2Fcamo-rb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexeevit","download_url":"https://codeload.github.com/alexeevit/camo-rb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexeevit%2Fcamo-rb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29397566,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T04:26:15.637Z","status":"ssl_error","status_checked_at":"2026-02-13T04:16:29.732Z","response_time":78,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["proxy","ruby"],"created_at":"2025-03-28T18:34:10.935Z","updated_at":"2026-02-13T06:02:37.676Z","avatar_url":"https://github.com/alexeevit.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Camo-rb\nCamo-rb is a ruby version of [camo](https://github.com/atmos/camo)\n\nA camo server is a special type of image proxy that proxies non-secure images over SSL/TLS, in order to prevent mixed content warnings on secure pages. The server works in conjunction with back-end code that rewrites image URLs and signs them with an [HMAC](https://en.wikipedia.org/wiki/HMAC).\n\n## Usage\n\nInstall Camo-rb as a ruby gem:\n\n```\ngem install camo-rb\n```\n\nRun it:\n\n```\nCAMORB_KEY=\u003csome key\u003e camorb\n```\n\n## Configuration\n\nUse the next environment variables to configure the server:\n\n* `CAMORB_PORT` — the port number Camo should listen on (default: `9292`) \n* `CAMORB_KEY` —  a shared key consisting of a random string, used to generate the HMAC digest (default: none)\n* `CAMORB_HEADER_VIA` — the string for Camo to include in the `Via` and `User-Agent` headers it sends in requests to origin servers (default: `Camo Asset Proxy \u003cversion\u003e`)\n* `CAMORB_LOG_LEVEL` — severity of logging, available levels: debug, info, error (default: `info`)\n* `CAMORB_KEEP_ALIVE` — whether or not to enable keep-alive session (default: `false`)\n* `CAMORB_MAX_REDIRECTS` — the maximum number of redirects Camo will follow while fetching an image (default: `4`)\n* `CAMORB_SOCKET_TIMEOUT` — the maximum number of seconds Camo will wait before giving up on fetching an image (default: `10`)\n* `CAMORB_LENGTH_LIMIT` — the maximum Content-Length Camo will proxy (default: `5242880`)\n* `CAMORB_TIMING_ALLOW_ORIGIN` — the string for Camo to include in the Timing-Allow-Origin header it sends in responses to clients. The header is omitted if this environment variable is not set (default: none)\n* `CAMORB_HOSTNAME` — the `Camo-Host` header value that Camo will send (default: `unknown`)\n\n## URL Formats\n\nCamo supports two distinct URL formats:\n\n```\nhttp://example.org/\u003cdigest\u003e?url=\u003cimage-url\u003e\nhttp://example.org/\u003cdigest\u003e/\u003cimage-url\u003e\n```\n\nThe `\u003cdigest\u003e` is a 40 character hex encoded HMAC digest generated with a shared secret key and the unescaped `\u003cimage-url\u003e` value. The `\u003cimage-url\u003e` is the absolute URL locating an image. In the first format, the `\u003cimage-url\u003e` should be URL escaped aggressively to ensure the original value isn't mangled in transit. In the second format, each byte of the `\u003cimage-url\u003e` should be hex encoded such that the resulting value includes only characters `[0-9a-f]`.\n\n## Tasks to do\n\n- [x] Create MVP\n- [ ] Allow use SSL/TLS certificates\n- [ ] Add logging in JSON format\n- [ ] Allow to customize requests and the server\n- [ ] Support metrics (Prometheus)\n- [ ] Allow to customize logging\n\n...\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexeevit%2Fcamo-rb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexeevit%2Fcamo-rb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexeevit%2Fcamo-rb/lists"}