{"id":15374676,"url":"https://github.com/mrtazz/certcal","last_synced_at":"2025-04-15T15:12:37.331Z","repository":{"id":66811913,"uuid":"461497937","full_name":"mrtazz/certcal","owner":"mrtazz","description":"provide an iCal web feed for certificate expiration","archived":false,"fork":false,"pushed_at":"2022-02-26T17:24:52.000Z","size":25,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-15T15:12:24.991Z","etag":null,"topics":["calendar","certificates","golang","security","ssl","tls"],"latest_commit_sha":null,"homepage":"","language":"Go","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/mrtazz.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":"2022-02-20T13:35:18.000Z","updated_at":"2023-07-25T14:54:38.000Z","dependencies_parsed_at":"2023-04-08T19:15:22.375Z","dependency_job_id":null,"html_url":"https://github.com/mrtazz/certcal","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrtazz%2Fcertcal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrtazz%2Fcertcal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrtazz%2Fcertcal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrtazz%2Fcertcal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrtazz","download_url":"https://codeload.github.com/mrtazz/certcal/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249094933,"owners_count":21211837,"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":["calendar","certificates","golang","security","ssl","tls"],"created_at":"2024-10-01T13:59:28.981Z","updated_at":"2025-04-15T15:12:37.298Z","avatar_url":"https://github.com/mrtazz.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# certcal\n\nProvide an iCal web feed for certificate expiry.\n\n\n## Usage\n\nThere are a couple of ways to run this\n\n### Standalone\nYou can download one of the binaries and run it as a standalone:\n\n```shell\n% ./certcal serve --help\nUsage: certcal serve --hosts=HOSTS,... --interval=\"24h\"\n\nrun the server.\n\nFlags:\n  -h, --help               Show context-sensitive help.\n\n      --hosts=HOSTS,...    hosts to check certs for ($CERTCAL_HOSTS).\n      --interval=\"24h\"     interval in which to check certs ($CERTCAL_INTERVAL)\n      --port=3000          port for the server to listen on ($PORT)\n\n% PORT=3000 CERTCAL_INTERVAL=5h CERTCAL_HOSTS=\"unwiredcouch.com\" ./certcal\n```\n\n\n### As part of an existing http mux\n\nYou can include the handler in your existing mux, something along the lines\nof:\n\n```go\nimport (\n  \"github.com/mrtazz/certcal/handler\"\n  \"github.com/mrtazz/certcal/hosts\"\n  \"net/http\"\n  \"time\"\n)\n\nfunc Run() {\n\n  ...\n\n  hosts.AddHosts([]string{\"unwiredcouch.com\"})\n  hosts.UpdateEvery(5 * time.Hour)\n\n  http.HandleFunc(\"/hosts\", handler.Handler)\n  http.ListenAndServe(\":3000\", nil)\n\n}\n```\n\n\n### Via Docker\nThere is a docker image as well that you can use:\n\n```sh\ndocker pull ghcr.io/mrtazz/certcal\n```\n\n\n## FAQ\n\n### Shouldn't certs renew automatically?\nProbably. But sometimes they aren't.\n\n### Shouldn't this be an alert somewhere?\nMaybe, up to you.\n\n### Old expiry events are disappearing!\nThat is by design. The UID of the `VEVENT` is the `sha256sum` of the summary\nof the event. Because generally if the cert got renewed the old event is just\ncruft.\n\n\n## Inspiration\n[genuinetools/certok](https://github.com/genuinetools/certok) inspired this\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrtazz%2Fcertcal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrtazz%2Fcertcal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrtazz%2Fcertcal/lists"}