{"id":21003327,"url":"https://github.com/koding/gather","last_synced_at":"2026-04-28T10:03:03.442Z","repository":{"id":146362633,"uuid":"40151873","full_name":"koding/gather","owner":"koding","description":null,"archived":false,"fork":false,"pushed_at":"2016-09-08T19:23:05.000Z","size":87,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-30T19:25:39.661Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/koding.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":"2015-08-03T22:55:56.000Z","updated_at":"2016-09-08T19:22:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"7c378a75-e431-439d-a86e-8bfad7526c32","html_url":"https://github.com/koding/gather","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/koding/gather","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koding%2Fgather","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koding%2Fgather/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koding%2Fgather/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koding%2Fgather/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/koding","download_url":"https://codeload.github.com/koding/gather/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koding%2Fgather/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32375630,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T09:24:15.638Z","status":"ssl_error","status_checked_at":"2026-04-28T09:24:15.071Z","response_time":56,"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":[],"created_at":"2024-11-19T08:24:48.907Z","updated_at":"2026-04-28T10:03:03.419Z","avatar_url":"https://github.com/koding.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gather\n\ngather is a library that collects info on how user is using their VM. This libaray contains the abuse and analytics scripts which is ultimately distributed via a binary for others to run.\n\n## Scripts\n\nThe scripts themselves are binary encoded into a Go binary using `go-bindata`. The main reason for this is to obuscate the scripts from the user. Some of the scripts check for abuse, if these are accesible in clear text, the user can easily circumvent it. The scripts need to be in bash and return output in format:\n\n```\n{\n  \"name\"  : \"\u003cmetric name\u003e\",\n  \"type\"  : \"\u003ctype of value\u003e\",\n  \"value\" : \u003cactual value\u003e\n}\n```\n\nDue to encoding, we need to do a trick to avoid duplication. `gatherers/common` contains the reusable bash functions; any function added to this file will be appened in memory to the scripts file before the combined string is executed by Go using `bash -C` command. Any file in a folder will be considered as runnable.\n\nEven though the scripts are binary encoded and the program shared as a binary, the binary itself might contain enough info to tip people about the scripts. This is why the name of the scripts are only 3 lettes in length.\n\nThere are currently two types of scripts: abuse in `gatherers/ab/` and analytics in `gatherers/an/`. Which script to run is determined via `GATHER` env variable. The seperation is so that abuse scripts are run more often than analytics scripts.\n\n## Building\n\n`./build.sh` will cross compile the `gather` binary. You'll need cross compilation enabled in Go (GOOS=linux GOARCH=386). It'll also upload the script to S3.\n\n## Running\n\n    # to run analytics scripts\n    ./run.sh analytics`\n\n    # to run abuse scripts\n    ./run.sh abuse`\n\n## Tests\n\n`go test`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoding%2Fgather","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkoding%2Fgather","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoding%2Fgather/lists"}