{"id":28122349,"url":"https://github.com/specure/measurement-server","last_synced_at":"2025-05-14T08:13:34.619Z","repository":{"id":291779895,"uuid":"978542985","full_name":"specure/measurement-server","owner":"specure","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-06T13:22:59.000Z","size":347,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-05-06T14:31:48.806Z","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":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/specure.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null}},"created_at":"2025-05-06T06:34:29.000Z","updated_at":"2025-05-06T13:23:02.000Z","dependencies_parsed_at":"2025-05-06T14:31:52.981Z","dependency_job_id":"7a89a38a-6885-45b7-a8dd-5c6223cb9725","html_url":"https://github.com/specure/measurement-server","commit_stats":null,"previous_names":["specure/measurement-server"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/specure%2Fmeasurement-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/specure%2Fmeasurement-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/specure%2Fmeasurement-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/specure%2Fmeasurement-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/specure","download_url":"https://codeload.github.com/specure/measurement-server/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254101551,"owners_count":22014909,"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":"2025-05-14T08:13:22.646Z","updated_at":"2025-05-14T08:13:34.612Z","avatar_url":"https://github.com/specure.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RMBT Measurement server 2.0\n\n\u003e ⚠️ **Note:** This server is in the testing phase.\n\n\n## Overview\n\nThis is a Rust implementation of the RMBT (RTR Multithreaded Broadband Test) server, designed for conducting network measurements based on the RMBT protocol. The server supports both direct TCP socket connections and WebSocket protocol communications.\n\n## Features\n\n- Full RMBT protocol implementation\n- Support for both TCP and WebSocket connections\n- Configurable worker threads\n- TLS/SSL support\n- Token-based authentication\n- Comprehensive test suite\n\n## Prerequisites\n\nRequired packages:\n- Rust toolchain (latest stable version)\n\n## Build\n\nBuild the server using Cargo:\n\n```bash\n# Debug build\ncargo build\n\n# Release build with optimizations\ncargo build --release\n\n# Release static build with optimizations\ncargo build --release --target x86_64-unknown-linux-musl\n```\n\nThe release build will be available at `target/release/rmbt_server`.\n\n## Configuration\n\n### Secret Keys\nThe server uses authentication keys as specified in the RMBT protocol. Keys are stored in `secret.key`:\n- One key per line\n- Format: `\u003ckey\u003e \u003clabel\u003e`\n- Label is logged to syslog when a client uses the key\n\n### Server Parameters\n\n```\nUsage: rmbtd [OPTIONS]\n\nOptions:\n  -l, -L \u003caddress\u003e    Listen address and port (SSL with -L)\n                      Format: \"port\" or \"ip:port\" or \"[ipv6]:port\"\n                      Examples: \n                      - \"443\"\n                      - \"1.2.3.4:1234\"\n                      - \"[2001:1234::567A]:1234\"\n                      Can be specified multiple times\n\n  -c \u003cpath\u003e          Path to SSL certificate (PEM format)\n                     Include intermediate certificates if needed\n\n  -k \u003cpath\u003e          Path to SSL key file (PEM format)\n\n  -t \u003cnumber\u003e        Number of worker threads (default: 200)\n\n  -u \u003cuser\u003e          Drop privileges to specified user\n                     Requires root privileges\n\n  -d                 Run as daemon in background\n\n  -D                 Enable debug logging\n\n  -w                 Enable HTTP/WebSocket mode\n\n  -v \u003cversion\u003e       Serve old clients (example: \"0.3\")\n```\n\n## Protocol Support\n\n### HTTP/WebSocket Mode (-w)\n- Supports HTTP GET requests with connection upgrades\n- Upgrades to either RMBT or WebSocket protocol\n- Follows RFC 2616 for upgrades\n\n#### RMBT Upgrade\nRequest:\n```\nGET /rmbt HTTP/1.1\nConnection: Upgrade\nUpgrade: RMBT\nRMBT-Version: 1.3.0\n```\n\n#### WebSocket Upgrade\nRequest:\n```\nGET /rmbt HTTP/1.1\nConnection: Upgrade\nUpgrade: websocket\nSec-WebSocket-Version: 13\nSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\n```\n\n### Legacy Mode\nDirect TCP socket communication without HTTP wrapper.\n\n## Testing\n\nRun the test suite:\n```bash\ncargo test\n```\n\nFor specific test categories:\n```bash\ncargo test --test basic_server  # Basic server tests\ncargo test --test handler      # Protocol handler tests\n```\n\n## Performance Testing\n\nPerformance test results and system metrics are saved in the `performance/` directory.\n\n## Documentation\n\n- [RMBT Protocol Specification](https://www.netztest.at/doc/)\n- [RTR-Netztest](https://www.netztest.at)\n\n## Related Projects\n\n- [RMBTws Client](https://github.com/rtr-nettest/rmbtws)\n- [RTR-Netztest/open-rmbt](https://github.com/rtr-nettest/open-rmbt)\n- [RMBT C client](https://github.com/lwimmer/rmbt-client)\n\n## License\n\n- Source code: Apache License ([LICENSE.txt](LICENSE.txt))\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspecure%2Fmeasurement-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspecure%2Fmeasurement-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspecure%2Fmeasurement-server/lists"}