|
|
||
|---|---|---|
| .. | ||
| Dockerfile | ||
| README.md | ||
| docker-compose.yml | ||
| package.json | ||
| server.js | ||
README.md
proxy-contur
Прокси-сервис для тендерного контура (Synology upstream).
Legacy Cesium note. Контурные endpoints этого сервиса остаются поддерживаемым назначением. Его
/proxy/cesium/fetchсохраняется только как историческая совместимость и не является production-маршрутом Foundry Map. Канонический Cesium egress:Map Gateway → dc-amd-proxy → dc-amd-connector → Windows VPN; см.services/dc-amd-proxy/OPERATIONS.md.
Назначение
Сервис принимает запросы от локального backend NodeDC и делает внешний трафик:
- Поиск тендеров (Contour search).
- Карточка закупки (Contour purchases).
- Fetch документов по
urlс stream passthrough (без base64). - Ограниченный VPN egress для Platform Map Gateway / Cesium.
Endpoints
GET /healthzPOST /proxy/contour/searchGET /proxy/contour/purchases/:purchaseIdGET /proxy/contour/limit-groupsGET /proxy/fetch?url=<encoded-url>GET /proxy/cesium/fetch?url=<encoded-url>
Auth
Если задан PROXY_TOKEN, требуется:
x-proxy-token: <token>
илиAuthorization: Bearer <token>
Contour API key
Рекомендуемый режим:
- Задать
CONTOUR_API_KEYв.envна сторонеproxy-contur. - После этого ключ Контура не нужно передавать в каждом запросе.
Совместимость:
- Если
CONTOUR_API_KEYне задан, сервис возьмёт ключ из запроса (x-kontur-apikey/ query / body), как раньше.
Security
По умолчанию включено:
- Только
http/https. - Блок private/local/loopback сетей.
- Проверка каждого redirect.
- Лимиты timeout/size/redirect count.
/proxy/cesium/fetch дополнительно принимает только канонические hosts
Cesium Ion и Bing, проверяет каждый redirect и не допускает произвольные
outbound headers. Внутренние x-nodedc-cesium-authorization и
x-nodedc-map-referer передаёт только Map Gateway через закрытую сеть
nodedc-map-egress; в логах query credentials маскируются.
Quick Start
cd proxy-contur
cp .env.example .env
npm install
npm run start
Docker Compose Start
cd proxy-contur
cp .env.example .env
docker compose up -d --build
Проверка:
docker compose ps
curl -sS http://172.22.0.222:8787/healthz | jq
Остановка:
docker compose down
Пример запросов
Проверка:
curl -sS http://172.22.0.222:8787/healthz | jq
Contour search:
curl -sS -X POST "http://172.22.0.222:8787/proxy/contour/search" \
-H "x-proxy-token: change-me" \
-H "content-type: application/json" \
-d '{"PageNumber":0,"PageSize":50}' | jq
Contour purchase:
curl -sS "http://172.22.0.222:8787/proxy/contour/purchases/12345" \
-H "x-proxy-token: change-me" | jq
Fetch file stream:
curl -L -o out.bin \
"http://172.22.0.222:8787/proxy/fetch?url=https%3A%2F%2Fexample.com%2Ffile.pdf" \
-H "x-proxy-token: change-me"