{"id":44332381,"url":"https://github.com/bringauto/module-gateway","last_synced_at":"2026-02-11T10:09:54.898Z","repository":{"id":216084788,"uuid":"672197123","full_name":"bringauto/module-gateway","owner":"bringauto","description":"Fleet protocol module gateway","archived":false,"fork":false,"pushed_at":"2026-01-29T21:48:37.000Z","size":583,"stargazers_count":0,"open_issues_count":8,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-01-30T01:34:57.263Z","etag":null,"topics":["fleet-protocol"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bringauto.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-07-29T08:43:44.000Z","updated_at":"2025-08-05T10:02:15.000Z","dependencies_parsed_at":"2025-06-25T08:20:02.234Z","dependency_job_id":"b0b101f6-f474-48d1-a9b0-397fbeb815ee","html_url":"https://github.com/bringauto/module-gateway","commit_stats":null,"previous_names":["bringauto/module-gateway"],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/bringauto/module-gateway","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringauto%2Fmodule-gateway","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringauto%2Fmodule-gateway/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringauto%2Fmodule-gateway/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringauto%2Fmodule-gateway/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bringauto","download_url":"https://codeload.github.com/bringauto/module-gateway/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringauto%2Fmodule-gateway/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29331743,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T06:13:03.264Z","status":"ssl_error","status_checked_at":"2026-02-11T06:12:55.843Z","response_time":97,"last_error":"SSL_read: 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":["fleet-protocol"],"created_at":"2026-02-11T10:09:54.135Z","updated_at":"2026-02-11T10:09:54.887Z","avatar_url":"https://github.com/bringauto.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Module Gateway\n\nDirectory contains cpp implementation of module gateway that communicates with internal client and external server.\nModule Gateway is one component of Fleet protocol.\n\nModule Gateway is  composed of:\n\n### Internal Server\n\nThe internal server handles the connection and incoming data from the Internal Clients (devices).\nAfter verification the data are parsed into protobuf message that is sent to Module Handler.\nInternal server then receives response to the message and sends it back to Internal Client.\n\n### Module Handler\n\nThe module handler is responsible for receiving protobuf messages from internal clients via the internal server.\nIt processes these messages using the status aggregator and subsequently sends corresponding commands back to the internal client.\nEach status aggregator holds information about the connected internal client, including aggregated statuses, commands, and the actual status.\nThe external client updates the command for each connected device and subsequently transmits the aggregated messages to the external server.\n\n### External Client\n\nThe external client is responsible for initializing connection with external server, reconnecting, delivering protobuf messages from module\nhandler to external server and updating devices commands. It uses error aggregator to process messages which could not be delivered, when\nconnection is broken and as soon as the connection is up, then error aggregated message is sent.\n\n## Requirements\n\n- [cmlib](https://github.com/cmakelib/cmakelib)\n\n- [protobuf](https://github.com/protocolbuffers/protobuf/tree/main/src) \u003e= v3.21.12\n- [cxxopts](https://github.com/jarro2783/cxxopts) \u003e= v3.0.0\n- [boost](https://github.com/boostorg/boost) \u003e= v1.74.0\n- [nlohmann-json](https://github.com/nlohmann/json) \u003e= v3.2.0\n- [ba-logger](https://github.com/bringauto/ba-logger) \u003e= v1.2.0\n- g++ \u003e= 10 or other compiler with c++20 support\n\n## Build\n```\nmkdir -p _build \u0026\u0026 cd _build\ncmake ../ -DCMLIB_DIR=\u003c/absolute/path/cmakelib\u003e\nmake\n```\n\n## Run\n\n```\n./module-gateway-app --config-path=../resources/config/default.json\n```\n\n### Arguments\n\n* required arguments:\n  * `-c \u003cstring\u003e | --config-path=\u003cstring\u003e`path to json configuration file ([Configs Readme](./configs/README.md))\n* All arguments:\n  * `-h | --help` print help\n  * `--port=\u003cunsigned short\u003e` port on which Internal Server communicates\n\n### CMAKE arguments\n\n* CMLIB_DIR=\\\u003cPATH\u003e\n* BRINGAUTO_TESTS=ON/OFF\n  - DEFAULT: OFF\n  - if on enable build/configure of tests\n  - if off disable build/configure of tests\n\n* BRINGAUTO_INSTALL=ON/OFF\n  - DEFAULT: OFF\n  - if on enable install feature,\n  - if off disable install feature,\n\n* BRINGAUTO_PACKAGE=ON/OFF\n  - DEFAULT: OFF\n  - if on enable package creation - if the BRINGAURO_INSTALL is not ON then is switched ON with warning,\n  - if off disable package creation\n\n* BRINGAUTO_SYSTEM_DEP=ON/OFF\n  - DEFAULT: OFF\n\n\n* CURRENTLY UNUSED\n  * BRINGAUTO_SAMPLES=ON/OFF\n\t  - DEFAULT: OFF\n\t  - if on enable build/configure of sample aplications\n\t  - if off disable build/configure of sample application\n\n\n\n## Tests\n\n[Tests Readme](./test/README.md)\n\n## Memory leaks\n\nIt is possible, that valgrind will show you, that there are still reachable memory leaks. It is caused by dlopen function.\nWe are not sure, if bug is in dlopen or in valgrind, but we cannot do anything with that.\nThe bug is already [reported](https://bugs.kde.org/show_bug.cgi?id=358980).\n\n## Dockerfile\n\nPort 1636 is exposed in the dockerfile.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbringauto%2Fmodule-gateway","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbringauto%2Fmodule-gateway","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbringauto%2Fmodule-gateway/lists"}