{"id":16756805,"url":"https://github.com/charmander/iptooled","last_synced_at":"2025-03-16T07:23:34.421Z","repository":{"id":66073201,"uuid":"227484824","full_name":"charmander/iptooled","owner":"charmander","description":"Basic spam stats collection tool for IP addresses","archived":false,"fork":false,"pushed_at":"2024-09-20T07:48:13.000Z","size":57,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-22T19:47:10.405Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/charmander.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2019-12-12T00:12:45.000Z","updated_at":"2019-12-17T07:50:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"262dbb66-2947-4277-83d1-9b02bd0c5313","html_url":"https://github.com/charmander/iptooled","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charmander%2Fiptooled","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charmander%2Fiptooled/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charmander%2Fiptooled/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charmander%2Fiptooled/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/charmander","download_url":"https://codeload.github.com/charmander/iptooled/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243837496,"owners_count":20355908,"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":[],"created_at":"2024-10-13T03:42:08.022Z","updated_at":"2025-03-16T07:23:34.413Z","avatar_url":"https://github.com/charmander.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"An address-based spam tree, based on the idea that a signup from a region of the address space containing confirmed spam is worth flagging.\n\nThe tree should be persistent in general, but it’s okay if some writes are lost.\n\nThe address length is set at compile time. By default, the length is 16 bytes to fit IPv6 (with IPv4 in ::ffff:0:0/96).\n\n\n## Use\n\nEnqueue a trust message:\n\n- when a user is marked as trusted\n- when a trusted user authenticates\n- randomly when a trusted user makes a request\n\nEnqueue a spam message:\n\n- when a user is marked as spam\n- when a spam user authenticates\n- randomly when a spam user makes a request\n\nQuery:\n\n- when a user signs up\n\n(The user ids provided to iptooled can, and often should, be keyed-hashed or encrypted versions of actual user ids.)\n\n\n## Protocol\n\nA request’s type is identified by its first byte.\n\n- [0, *address*×*address-bytes*]\n\n    Requests information about an address. The response is [*trusted*×4, *spam*×4, *bits*], where *bits* is the size of the prefix used to determine the result, *trusted* is the number of trusted hits with that prefix, and *spam* is the number of spam hits with that prefix. All values are big-endian and unsigned.\n\n- [1, *address*×*address-bytes*, *user*×*user-bytes*]\n\n    Marks an address as associated with a trusted user. The response is [0] for success, [1] for failure.\n\n- [2, *address*×*address-bytes*, *user*×*user-bytes*]\n\n    Marks an address as associated with a spam user. The response is [0] for success, [1] for failure.\n\nIt’s okay to send multiple requests without waiting for a response; the responses will come back in order.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharmander%2Fiptooled","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcharmander%2Fiptooled","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharmander%2Fiptooled/lists"}