Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

ГОСТ СИМБОКС

Программная платформа для управления SIM-картами, USB-модемами, SIM-банками и телефонными шлюзами.

Мы развиваем полный стек: от AT-команд, APDU, USB и аудиотракта до Asterisk-модулей, Flutter SDK, операторского приложения и backend-сервисов. Проекты сохраняют проверенное поведение промышленной legacy-системы, но разделяют его на независимые, тестируемые компоненты.

Что входит в экосистему

  • управление GSM/UMTS-модемами: обнаружение, состояние, вызовы, SMS, USSD и произвольные AT-команды;
  • Asterisk-каналы и ресурсные модули для модемов, SIM-reader, USB-хабов и программирования устройств;
  • standalone C SDK и Flutter API для работы без Asterisk;
  • SIP↔GSM voice gateway и SMPP/SMS-оркестрация;
  • операторские интерфейсы для каналов, модемов, звонков, SMS и диагностики;
  • backend-сервисы для устройств, SIM/eSIM, активаций и SIM-банков.

Архитектура

flowchart TB
    UI[simbox-app<br/>операторский интерфейс]
    GSMSIP[flutter_gsmsip<br/>SIP↔GSM / SMPP orchestration]
    GSM[flutter_gsm<br/>modem abstraction]
    SIP[flutter_nmsip<br/>PJSIP]
    SDK[libsimbox<br/>standalone C SDK]
    AST[chan_svistok.so<br/>Asterisk channel]
    RES[res_simbox_*<br/>Asterisk resources]
    HW[USB-модемы · SIM-reader<br/>USB-хабы · SIM-банки]
    API[Server · Manager<br/>Activations · SimHub]

    UI --> GSM
    UI -. REST / events .-> API
    GSMSIP --> GSM
    GSMSIP --> SIP
    GSM -->|Linux FFI| SDK
    GSM -->|Android Telecom| HW
    SDK --> HW
    AST --> HW
    RES --> HW
    API --> HW
Loading

chan_svistok, модульное семейство res_simbox_* и standalone libsimbox — связанные общей кодовой базой, но самостоятельные варианты интеграции. Их не следует воспринимать как обязательные части одного процесса.

Продукты

Проект Роль Технологии
simbox-app Операторское приложение: каналы, модемы, вызовы, SMS/USSD, настройки и диагностика Flutter, flutter_gsm
GOSTsimbox Server REST API для клиентских устройств и новый JSON-интерфейс для legacy SimBox-операций Node.js, Express, Swagger, Socket.IO
GOSTsimbox Manager Управление пользователями, SIM/eSIM, вызовами, аналитикой и уведомлениями NestJS, Prisma, PostgreSQL, Socket.IO
GOSTsimbox Activations Получение и управление входящими OTP/SMS-активациями TypeScript, Express, Prisma, PostgreSQL, Redis
GOSTsimbox SimHub Мониторинг SIM-банков, управление слотами, питанием и USSD Go, Gin, GORM, PostgreSQL

simbox-app

simbox-app — не демонстрация SIP-библиотеки, а самостоятельный интерфейс управления SimBox. Он использует flutter_gsm напрямую и предоставляет:

  • адаптивные экраны «Каналы», «Модемы», «Операции» и «Настройки»;
  • карточное и плотное табличное представление каналов;
  • фильтрацию по модемам и SIM-картам;
  • действия над модемами, звонками, SMS, USSD и AT-командами;
  • отдельную desktop-навигацию и нативную нижнюю навигацию на телефонах и планшетах;
  • локализации и нативный splash screen для поддерживаемых платформ.

На Linux приложение подключает реальный ttyUSB/AT-драйвер через flutter_gsm → Dart FFI → libsimbox. На Android используется нативный телефонный стек. UI и macOS-сборка проверены; end-to-end проверка с реальным Linux-модемом остаётся аппаратно-зависимым этапом.

Нативный и Asterisk-слой

Канальный драйвер

asterisk-chan-svistok собирает chan_svistok.so — Asterisk channel driver для Huawei UMTS-модемов. Он поддерживает голосовые вызовы, SMS, USSD, управление группами и состоянием устройств.

Проект построен как проверяемый overlay над исходным asterisk-chan-dongle: неизменённые функции остаются у upstream, новый и изменённый код принадлежит Svistok, а legacy-дерево используется только как read-only эталон.

Standalone C SDK

asterisk-chan-simbox предоставляет независимый от Asterisk публичный C API и собирает:

  • libsimbox.a;
  • libsimbox.so на Linux или libsimbox.dylib на macOS;
  • native test executable.

API охватывает жизненный цикл устройств, обнаружение, вызовы и PCM-аудио, SMS/USSD, AT-команды, смену IMEI, Qualcomm DIAG programmator и APDU SIM-reader. Именно этот SDK используется Linux-реализацией flutter_gsm.

Ресурсные модули Asterisk

Репозиторий Артефакты Ответственность
res-simbox-core res_simbox_core.so Жизненный цикл модемов и каналов, dongle ... CLI, реестр дополнительных компонентов
asterisk-res-simbox-discovery res_simbox_discovery.so Фоновое обнаружение USB-устройств и формирование служебных списков
asterisk-res-simbox-programmator res_simbox_programmator.so, programmator Диагностический режим, IMEI и загрузка прошивки
asterisk-res-simbox-reader res_simbox_reader.so, res-simbox-reader SIM-reader adapter/emulator
asterisk-res-simbox-hub res_simbox_hub.so, res-simbox-hub, hub-ctrl Питание и индикация портов USB-хаба

Reader и hub имеют три режима работы:

  1. самостоятельный пользовательский бинарник;
  2. независимо загружаемый модуль Asterisk;
  3. модуль Asterisk, зарегистрированный в res_simbox_core.so.

Asterisk отвечает за lifecycle .so. Core предоставляет типизированную координацию, но не запускает и не контролирует standalone-процессы. programmator также запускается только оператором или внешней системой.

Flutter SDK

Отдельного пакета flutter_gsmsimbox в текущей архитектуре нет. Это направление реализовано двумя пакетами с разными обязанностями: flutter_gsm управляет modem/GSM-leg, а flutter_gsmsip строит над ним SIP↔GSM gateway.

Библиотека Назначение Реальная граница платформы
flutter_gsm Единый ModemRepository для устройств, звонков, SMS, USSD и AT-команд Linux — FFI к libsimbox; Android — Telecom/dialer/SMS plugins; macOS/Windows — API-заглушки
flutter_gsmsip SIP↔GSM voice gateway, маршрутизация и SMPP/SMS orchestration Pure Dart; использует flutter_gsm и flutter_nmsip, собственного native plugin нет
flutter_nmsip SIP-клиент и управление вызовами через PJSIP Android plugin поверх native SIP core
flutter_tele Android InCallService и управление активными телефонными вызовами Android
flutter_dialer Проверка и назначение приложения системным dialer Android
flutter_smsussd SMS и платформенные SMS/USSD-возможности Основная реализация Android; ограниченная iOS-интеграция

Ключевое разделение ответственности:

  • flutter_gsm знает о модемах и нативной телефонии;
  • flutter_nmsip знает о SIP/PJSIP;
  • flutter_gsmsip связывает GSM- и SIP-leg, но не дублирует их драйверы;
  • simbox-app использует только модемный слой, если SIP gateway ему не нужен.

Backend и операции

GOSTsimbox Server

Express-сервис предоставляет auth/device API и 18 REST endpoints под /api/v2/simbox для:

  • попыток и завершения входящих/исходящих вызовов;
  • SMS delivery reports и очереди отправки;
  • выдачи Ki/IMEI-заданий и загрузки Ki;
  • баланса, оператора, тарифа, номера и группы;
  • recognition и MAG-задач.

Новый API использует JSON и REST verbs вместо legacy .php GET endpoints и pipe-delimited ответов. Текущая реализация этих перенесённых endpoints следует существующей mock/in-memory модели сервиса; постоянное production-хранилище — отдельный этап.

Manager, Activations и SimHub

  • Manager разделяет SIM и eSIM lifecycle, содержит JWT-аутентификацию, Prisma-модель, API вызовов, аналитику, уведомления и Socket.IO;
  • Activations распределяет свободные SIM-карты на OTP-задачи, хранит события активации и поддерживает REST, Swagger, WebSocket и метрики;
  • SimHub регистрирует SIM-банки, параллельно опрашивает их состояние, синхронизирует слоты в PostgreSQL и предоставляет power/USSD API.

Это отдельные сервисные продукты. Их репозитории и deployment lifecycle не объединены в обязательный единый runtime.

Аппаратные направления

Платформа учитывает несколько классов оборудования:

  • Huawei USB GSM/UMTS-модемы с data/audio/diagnostic портами;
  • APDU SIM-reader без радиомодуля;
  • управляемые USB-хабы с per-port power/indicator control;
  • сетевые SIM-банки SMB32/SMB128 и совместимые устройства;
  • прямые, TRRS, passive USB-C и USB audio/DAC адаптеры;
  • Android audio-loopback и специализированные NativeMind loopback-схемы.

Аудиоадаптеры находятся на разных стадиях R&D и спецификации. Наличие flow или схемы не означает, что конкретный вариант уже прошёл электрическую, акустическую и серийную проверку.

Текущее состояние

Направление Подтверждено Требует целевого окружения
simbox-app Dart analysis, widget tests и реальная macOS-сборка/запуск Linux + USB modem; Android device
flutter_gsm API, FFI binding, simulated/native tests реальные Linux ttyUSB paths и modem firmware variants
flutter_gsmsip разделение GSM/SIP, pure-Dart orchestration и tests полный SIP↔GSM deployment на целевой платформе
chan_svistok source ownership, compatibility build, symbol/proxy audits загрузка в совместимый Asterisk и modem call/SMS/USSD scenarios
res_simbox_* source-level lifecycle, locking and artifact tests Linux/Asterisk module matrix, TTY, reader и USB hub
SimBox Server API 18 endpoints, smoke test и 58/59 suite result на момент flow persistence и исправление независимого 404 test gap

Мы намеренно не приравниваем compile/source-level проверки к подтверждённой работе на конкретном Asterisk, ядре Linux или USB-оборудовании.

Инженерные принципы

  • Legacy как oracle — стабильное поведение используется для characterization/golden-master тестов, а исходные legacy-деревья остаются read-only.
  • Явное владение кодом — неизменённый upstream-код не копируется в новый слой; новые и изменённые функции имеют одного владельца.
  • Разделение платформ — modem access, SIP, orchestration, UI и backend не смешиваются в одной библиотеке.
  • Независимый lifecycle — Asterisk-модули, пользовательские бинарники и backend-сервисы запускаются своими владельцами.
  • Проверяемые ограничения — неподтверждённые hardware paths помечаются как pending, а не выдаются за production verification.
  • Spec-driven delivery — требования, спецификации, планы, ADR, тестовые и визуальные решения сопровождают реализацию.

Технологии

C/C++ · Asterisk · Linux TTY/USB · libusb · Qualcomm DIAG · APDU · Dart/Flutter · PJSIP · Android Telecom · Node.js · TypeScript · Express · NestJS · Go · Gin · PostgreSQL · Prisma · GORM · Redis · WebSocket/Socket.IO · SMPP · Docker

Историческая база

В экосистеме также сохраняются Android и React Native библиотеки для SIP, default-dialer, InCallService, foreground/headless services и GSM↔SIP gateway. Они важны как проверенные источники поведения и API-паттернов, но актуальная продуктовая линия развивается вокруг Flutter, libsimbox и Asterisk-модулей.

Репозиторий Историческая/совместимая роль
sip2-android-core Native Android PJSIP core
react-native-sip2 React Native bridge к SIP core
react-native-tele Android Telecom/InCallService bridge
react-native-replace-dialer Назначение и проверка default dialer
react-native-headless Background/foreground/headless execution
react-native-gsm-sip-gateway Предыдущее поколение GSM↔SIP gateway

Лицензирование

Условия лицензирования определяются каждым репозиторием отдельно. Часть компонентов распространяется под NativeMind non-commercial terms; проекты на базе asterisk-chan-dongle, PJSIP и других third-party компонентов сохраняют их атрибуцию и применимые лицензии. Перед интеграцией или распространением проверяйте LICENSE конкретного репозитория.

Контакты

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors