Repository navigation
17 Migration from v1
Mikhail Deynekin edited this page Oct 9, 2026
·
1 revision
v1 — это один файл bas-ip.php (+ config.php, css/, .api_token),
который открывал шлагбаум BAS-IP по кнопке и показывал снимок камеры.
Код v1 навсегда сохранён в ветке main;
ветка BAS-IP_2 содержит v2.
| Аспект | v1 | v2 |
|---|---|---|
| Состав | 3 PHP-файла + css | полноценное приложение (~180 файлов кода) |
| Аутентификация |
.api_token файлом рядом со скриптом (публичный репозиторий!) |
логины/пароли, роли, 2FA, сессии, API-токены со scopes |
| Данные | нет (всё в браузере) | БД MySQL/PostgreSQL/SQLite: жители, оплаты, журнал, аудит |
| Открытие | кнопка «открыть» | панель оператора, кабинет жителя, гостевые ссылки/коды, API, CLI, расписания |
| Журнал | только ошибки в лог | каждое открытие: кто/когда/тип доступа/результат/снимок |
| Деньги | нет | начисления, счета, оплаты, перерасчёт, должники, напоминания |
| Рассылки | нет | e-mail/Telegram/SMS/WhatsApp/webhook, очередь, шаблоны |
| Обновление | git pull руками | автообновление с бэкапом и откатом |
| UI | одна страница | светлая/тёмная тема, mobile-first, админка, кабинет, справка |
-
Старые автоматизации продолжают работать:
bas_ip.php?cmd=lock_open| status|get_time|get_cameras|reboot|sip_enable|sip_disableфорвардится на новый API. Отличие: теперь требуется аутентификация (API-токен/сессия/ IP-allowlist) и каждый вызов пишется в аудит. -
bas-ip.php(панель v1) → 301 на/panel. -
get_last_image.php→ снимок камеры нового API (с авторизацией).
-
⚠️ Отзовите токен v1. Файл.api_tokenлежал в публичном репозитории — считайте ключ скомпрометированным: смените пароль/ключ API панели BAS-IP. - Установите v2 рядом (01 · Установка) — другое расположение или поддомен; v1 не трогает.
- Создайте API-токен для существующих автоматизаций:
bin/bas-ip api:token --name="legacy" --scopes=gate.open,gate.status,gate.logи передавайте его в старых скриптах (Authorization: Bearer …). - Заполните базу жителей: вручную или импортом из вашей таблицы/Excel (Админка → Данные → Импорт, есть образец CSV).
- Настройте устройство (панель та же —
basip-драйвер, адрес/логин те же), проверьтеgate:test. - Прогоните месяц параллельно: v2 пишет журнал, v1 остаётся как запасной путь; убедитесь, что всё открывается.
- Переведите DNS/nginx на v2, выключите v1 (или оставьте
bas-ip.phpфорвардером — он уже часть v2). - Первый платёжный цикл проведите через мастер начисления (08 · Биллинг).
v1 не вёл структурированных данных — переносить нечего, кроме:
- списка жителей (если вели в Excel/таблице) — через импорт CSV/JSON;
- журнала ошибок (
error_log) — остаётся в архиве v1; - токена устройства — отозвать (см. шаг 1).
Конфиг v1 (config.php с $api_url, $login, $password) не читается v2
намеренно: локальный конфиг v2 создаётся установщиком, а секрет устройства
переезжает в шифрованное хранилище (secret:set DEVICE_PASSWORD).
Дальше: 18 · FAQ