{"id":13337134,"url":"https://github.com/edg-l/teeworlds-master-server","last_synced_at":"2025-03-28T00:30:37.561Z","repository":{"id":119071674,"uuid":"249761929","full_name":"edg-l/teeworlds-master-server","owner":"edg-l","description":"HTTPS Teeworlds master server implemented in Go","archived":false,"fork":false,"pushed_at":"2020-03-31T12:26:20.000Z","size":61,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-02T02:27:21.946Z","etag":null,"topics":["golang","https","master-server","teeworlds"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edg-l.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-03-24T16:39:36.000Z","updated_at":"2022-11-04T17:56:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"a43b559a-1b72-4e44-a777-9b5475da8230","html_url":"https://github.com/edg-l/teeworlds-master-server","commit_stats":{"total_commits":22,"total_committers":1,"mean_commits":22.0,"dds":0.0,"last_synced_commit":"eee9b9adc4510d55cdaadcff322e1d7a9a18631c"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edg-l%2Fteeworlds-master-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edg-l%2Fteeworlds-master-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edg-l%2Fteeworlds-master-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edg-l%2Fteeworlds-master-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edg-l","download_url":"https://codeload.github.com/edg-l/teeworlds-master-server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245948927,"owners_count":20698905,"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":["golang","https","master-server","teeworlds"],"created_at":"2024-07-29T19:11:13.488Z","updated_at":"2025-03-28T00:30:37.489Z","avatar_url":"https://github.com/edg-l.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HTTPS Teeworlds Master Server ![Go](https://github.com/Ryozuki/teeworlds-master-server/workflows/Go/badge.svg)\n\n***Work in progress***\n\nThe masterserver uses memcached to cache the server entries it receives, thus multiple master servers can be used.\n\nEach master server has a configuration `config.yml` where you define a identifier, and also define which other master server entries to use by listing their identifiers.\n\nEach master server uses it's identifier as cache key where it saves his managed list of servers.\n\nWhen a master server must provide the server list, it will then use the server identifiers as the cache keys to get the full server list.\n\nEach master server manages his own registered server list, in the cache only relevant info for the client should be saved and not for example, when the server will timeout in the list.\n\n## Build\n\n`go build`\n\n## Generate certificate\n\nGenerate a self-signed key:\n\n`./teeworlds-master-server generate`\n\n*Note: this cert will only last 1 year.*\n\n## Dependencies\n\nYou need to install https://memcached.org/\n\nYou should limit the connection to the memcached server on a firewall level.\n\n## Start\n\n`./teeworlds-master-server start`\n\n## TODO\n\nColorize a bit? https://github.com/logrusorgru/aurora\n\n- [x] Servers should be able to register both ipv4 and ipv6 and be identified as the same server.\n- [x] Clients should be able to know a ipv4 and ipv6 belongs to the same server.\n- [ ] Master server should ping server entries to know that port is forwarded and clients can connect aka \"fwcheck\".\n- [x] Prevent multiple entries across masters\n- [ ] Add a maximum amount of registered servers per ip\n- [ ] Admin endpoints or maybe use a websocket server\n- [ ] Add better logging\n\n## Util\n\n`curl -k https://localhost:8283/`\n\n`http --verify=no https://localhost:8283/`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedg-l%2Fteeworlds-master-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedg-l%2Fteeworlds-master-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedg-l%2Fteeworlds-master-server/lists"}