Docker / build (push) Failing after 19s
Гео из datacentername, specs через vds.order/vds.edit; парсер ДЦ/городов РФ. Co-authored-by: Cursor <cursoragent@cursor.com>
3.1 KiB
3.1 KiB
BILLmanager hoster profiles
Унифицированные переопределители для исключений из стандартного ISPsystem API.
Как добавить профиль (5 минут)
- Создай
profiles/<id>.tsс только расхождениями:
import type { BillmanagerProfileOverrides } from './types.js'
export const myHosterOverrides: BillmanagerProfileOverrides = {
id: 'myhoster',
match: {
hostnames: ['myhoster.com'],
keywords: ['myhoster'],
},
funcs: {
listVds: 'vds.custom', // если отличается от 'vds'
},
// map: { enrichVds: (item, mapped) => ({ ...mapped, country: 'DE' }) },
// requestParams: { listVds: { p_cnt: 1000 } },
}
-
Зарегистрируй в
registry.ts— массивPROFILE_OVERRIDES(порядок = приоритет матча). -
Добавь fixture + тест в
profiles.test.ts. -
Новый hook (редко) — расширь
BillmanagerProfileвtypes.tsи значение вdefault.ts.
Контракт
| Поле | Назначение |
|---|---|
match.hostnames |
substring hostname |
match.keywords |
substring всего URL |
funcs.* |
func= для list / payment / dashboard / order |
extract.* |
ключ для extractList |
map.vds / map.payment |
полный маппер |
map.enrichVds |
пост-обработка после default map |
requestParams.* |
доп. query params |
resolveBillmanagerProfile(apiBaseUrl) → merge(DEFAULT, override) или DEFAULT.
Sync и operations не содержат if (hoster) — только профиль.
Готовые профили
| id | Match | Что переопределяет |
|---|---|---|
waicore |
waicore.com / keyword |
funcs.listVds = vds.vps; geo из datacentername ([DE] Город | … / Страна, Город) |
firstbyte |
firstbyte.ru, firstbyte.club, 1byte.ru |
enrichVds: страна/город, daily из billdaily/Ежедневное списание, dailyRate=cost/30; enrichVdsBatch: общий баланс ÷ сумма daily → один paidUntil; specs из vds.order / vds.edit |
ihor |
my-ihor.ru, ihor.ru / keyword |
enrichVds: geo из datacentername (Москва DC3 → Россия / Москва) |
cloudrix |
cloudrix.ru / keyword |
enrichVds: geo (Россия, Москва) + ipv6_subnet; specs через vds.order / vds.edit (fetchVdsEditForSpecs) |
servhost |
serv.host |
enrichVds: geo (Новосибирск Xeon → Россия / Новосибирск); specs через vds.order / vds.edit |
landvps |
landvps.online / keyword |
enrichVds: geo (ДЦ Москва → Россия / Москва) + ipv6_subnet; specs через vds.order / vds.edit |
datacheap |
datacheap.ru / keyword |
enrichVds: geo (Россия); specs через vds.order / vds.edit |