{"id":26909694,"url":"https://github.com/anatoly-semenov/krakend-cpp","last_synced_at":"2026-05-03T02:41:37.219Z","repository":{"id":285548503,"uuid":"958503300","full_name":"Anatoly-Semenov/KrakenD-CPP","owner":"Anatoly-Semenov","description":"Proxy http requests for users and payments services by KrakenD ","archived":false,"fork":false,"pushed_at":"2025-04-01T10:47:30.000Z","size":26,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-01T11:30:04.496Z","etag":null,"topics":["cpp","gateway-proxy","grpc","http","krakend"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Anatoly-Semenov.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":"2025-04-01T09:56:26.000Z","updated_at":"2025-04-01T10:49:00.000Z","dependencies_parsed_at":"2025-04-01T11:40:56.357Z","dependency_job_id":null,"html_url":"https://github.com/Anatoly-Semenov/KrakenD-CPP","commit_stats":null,"previous_names":["anatoly-semenov/krakend-cpp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anatoly-Semenov%2FKrakenD-CPP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anatoly-Semenov%2FKrakenD-CPP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anatoly-Semenov%2FKrakenD-CPP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anatoly-Semenov%2FKrakenD-CPP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Anatoly-Semenov","download_url":"https://codeload.github.com/Anatoly-Semenov/KrakenD-CPP/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246644096,"owners_count":20810687,"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":["cpp","gateway-proxy","grpc","http","krakend"],"created_at":"2025-04-01T13:19:46.538Z","updated_at":"2026-05-03T02:41:37.181Z","avatar_url":"https://github.com/Anatoly-Semenov.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# KrakenD-CPP\n\nЭтот проект реализует HTTP прокси-сервер, который принимает HTTP запросы и пересылает их через gRPC в KrakenD API Gateway. Сервер обеспечивает надежную и эффективную маршрутизацию запросов между HTTP клиентами и KrakenD.\n\n## Основные возможности\n\n- Прием HTTP запросов (GET, POST, PUT, DELETE)\n- Пересылка запросов через gRPC в KrakenD\n- Валидация входящих и исходящих данных\n- Многопоточная обработка запросов\n- Graceful shutdown при получении сигналов завершения\n\n## Требования\n\n- C++17\n- CMake 3.10 или выше\n- gRPC\n- Protocol Buffers\n- Crow (C++ web framework)\n- Boost\n- nlohmann/json\n- libcurl\n\n## Установка зависимостей\n\n### macOS\n```bash\nbrew install grpc protobuf boost nlohmann-json curl\n```\n\n### Ubuntu/Debian\n```bash\nsudo apt-get install libgrpc++-dev protobuf-compiler-grpc libboost-all-dev nlohmann-json3-dev libcurl4-openssl-dev\n```\n\n## Сборка\n\n```bash\nmkdir build\ncd build\ncmake ..\nmake\n```\n\n## Конфигурация\n\nСоздайте файл `.env` в корневой директории проекта со следующими параметрами:\n\n```env\n# HTTP Server Configuration\nHTTP_HOST=0.0.0.0\nHTTP_PORT=8080\n\n# gRPC Configuration\nGRPC_ADDRESS=localhost:50051\n\n# KrakenD Configuration\nKRAKEND_HOST=localhost\nKRAKEND_PORT=8081\nKRAKEND_TIMEOUT=30\nKRAKEND_MAX_RETRIES=3\nKRAKEND_RETRY_DELAY=1\nKRAKEND_SSL_VERIFY=true\nKRAKEND_SSL_CERT_PATH=/path/to/cert.pem\nKRAKEND_SSL_KEY_PATH=/path/to/key.pem\nKRAKEND_DEBUG=false\nKRAKEND_LOG_LEVEL=info\n```\n\n### Описание параметров конфигурации\n\n#### HTTP Server\n- `HTTP_HOST` - хост для HTTP сервера (по умолчанию: 0.0.0.0)\n- `HTTP_PORT` - порт для HTTP сервера (по умолчанию: 8080)\n\n#### gRPC\n- `GRPC_ADDRESS` - адрес gRPC сервера (по умолчанию: localhost:50051)\n\n#### KrakenD\n- `KRAKEND_HOST` - хост KrakenD сервера (по умолчанию: localhost)\n- `KRAKEND_PORT` - порт KrakenD сервера (по умолчанию: 8081)\n- `KRAKEND_TIMEOUT` - таймаут запросов в секундах (по умолчанию: 30)\n- `KRAKEND_MAX_RETRIES` - максимальное количество попыток повторной отправки запроса (по умолчанию: 3)\n- `KRAKEND_RETRY_DELAY` - задержка между попытками в секундах (по умолчанию: 1)\n- `KRAKEND_SSL_VERIFY` - проверка SSL сертификата (по умолчанию: true)\n- `KRAKEND_SSL_CERT_PATH` - путь к SSL сертификату\n- `KRAKEND_SSL_KEY_PATH` - путь к SSL ключу\n- `KRAKEND_DEBUG` - режим отладки (по умолчанию: false)\n- `KRAKEND_LOG_LEVEL` - уровень логирования (по умолчанию: info)\n\n## Запуск\n\n```bash\n./krakend_proxy\n```\n\n## Структура проекта\n\n```\n.\n├── CMakeLists.txt          # Конфигурация сборки проекта\n├── README.md              # Документация проекта\n├── .env                   # Конфигурация переменных окружения\n├── include/               # Заголовочные файлы\n│   ├── http/             # HTTP компоненты\n│   │   ├── server.hpp    # HTTP сервер на базе Crow\n│   │   └── client.hpp    # HTTP клиент\n│   ├── grpc/             # gRPC компоненты\n│   │   ├── client.hpp    # gRPC клиент для KrakenD\n│   │   └── server.hpp    # gRPC сервер\n│   └── validator/        # Валидаторы\n│       ├── env_validator.hpp    # Валидатор .env переменных\n│       └── validator.hpp        # Валидатор входящих и исходящих данных\n├── src/                   # Исходный код\n│   ├── main.cpp          # Точка входа и конфигурация приложения\n│   ├── http/             # Реализация HTTP компонентов\n│   │   ├── server.cpp    # Реализация HTTP сервера\n│   │   └── client.cpp    # Реализация HTTP клиента\n│   └── grpc/             # Реализация gRPC компонентов\n│       ├── client.cpp    # Реализация gRPC клиента\n│       └── server.cpp    # Реализация gRPC сервера\n└── proto/                 # Protocol Buffers определения\n    └── krakend.proto     # Определение gRPC сервиса\n```\n\n### Добавление новых маршрутов\n\nДля добавления нового маршрута в `main.cpp`:\n\n```cpp\nhttp_server-\u003eadd_route(\"/new-path\", crow::HTTPMethod::GET,\n    [](const crow::request\u0026 req) {\n        return grpc_client-\u003eforward_request(req);\n    });\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanatoly-semenov%2Fkrakend-cpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanatoly-semenov%2Fkrakend-cpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanatoly-semenov%2Fkrakend-cpp/lists"}