Проекты

Изоляция захватов, повторов, декодеров и закладок по целям — как кодовые базы в IDE.

Проект — это верхнеуровневая область видимости для всего, что вы собираете и производите в Traffic Jam: сессии захвата и папки, история повторов, пайплайны и скрипты декодирования, protobuf-схемы и привязки, правила модели маршрутов, аннотации эндпоинтов, клиентские сертификаты, профили отпечатков, канарейки и закладки. Переключение проекта меняет всё рабочее пространство разом — так же, как вы переключаете кодовые базы в IDE.

Заводите отдельный проект на каждую цель или аудит (например, goldapple mobile и partner-api audit), чтобы доказательства, декодеры и заметки никогда не смешивались.

Управление проектами

Переключатель проектов находится вверху левой боковой панели. В его меню можно:

  • Переключиться — щёлкните проект, чтобы сделать его активным. Библиотека захватов, вкладки анализа, закладки и все реестры реверс-инжиниринга перезагружаются в новой области.
  • Новый проект… — создаёт проект и сразу переключается на него. Новый проект пуст, кроме встроенных скриптов декодирования, которые засеваются в каждый проект.
  • Переименовать — меняет имя проекта, не трогая содержимое.
  • Удалить — удаляет проект и всё его содержимое (захваты, повторы, декодеры, закладки) каскадно. Активный проект удалить нельзя — сначала переключитесь. Действие требует подтверждения и необратимо.

Активный проект запоминается между перезапусками и показывается значком в заголовке рабочей области.

Как устроена изоляция

В каждой таблице сущностей базы SQLite есть внешний ключ project_id на таблицу projects (ON DELETE CASCADE — поэтому удаление проекта тотально). Бэкенд определяет активный проект из заголовка X-Traffic-Jam-Project в middleware withActiveProject; единственные маршруты без области — /api/projects и /api/health.

МаршрутОбласть
GET/POST /api/projects, PATCH/DELETE /api/projects/{id}Без области (управление проектами)
GET/PUT/DELETE /api/projects/activeБез области (выбор области)
PUT /api/projects/{id}/bookmarks-importБез области (массовый импорт закладок)
Всё остальное под /apiТребует активный проект; строки других проектов возвращают 404

В новой базе засевается проект Default, и бэкенд активирует его при старте, поэтому скрипты, не отправляющие заголовок проекта, продолжают работать.

Закладки переехали на бэкенд

Раньше закладки (на запросы и на захваты) жили в localStorage браузера; теперь они хранятся в базе данных по проектам (таблицы request_bookmarks / capture_bookmarks) и управляются через /api/bookmarks. При первом запуске после обновления приложение один раз переносит устаревшие закладки из localStorage в первый активированный проект через PUT /api/projects/{id}/bookmarks-import, после чего удаляет старый документ.

[!WARNING] Проекты — это ломающее изменение. База v0.4 — новый файл (traffic-jam-v2.sqlite3); старый traffic-jam.sqlite3 остаётся на месте, но больше не читается.

Документация Traffic Jam. Собрано с помощью Hugo.