Перейти к содержимому
GitRiverGitRiver
EN
Навигация

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

Как устроены лицензии: редакции и места, активация и подтверждение права, льготный срок, продление и смена редакции

Здесь описано, какие бывают редакции, что даёт место, как купить, активировать и продлить лицензию и что делать, если платные возможности закрылись. Юридические условия — в лицензионном соглашении: LICENSE.ru.md (оригинал) и LICENSE.en.md (перевод). В интерфейсе тот же текст открывается по адресу /legal — он входит в поставку и доступен без выхода в интернет.

Редакции

Редакций три: Community, Pro и Max. Редакция Max включает Pro целиком.

Community Pro Max
Цена Бесплатно Подписка от месяца до года Подписка от месяца до года
Пользователи и репозитории Без ограничений Без ограничений Без ограничений
Места — По числу мест в лицензии (0 — без ограничения); что даёт место — ниже Так же
Git, CI/CD, реестр, Pages, вики + + +
Задачи, запросы на слияние, защита веток, CODEOWNERS, очередь слияния + + +
Знание репозитория: указатель, черновики, пачка наружу + + +
Знание: мои счётчики показов и чтений + + +
Знание: сведение по команде, разбор мёртвой памяти — + +
Указатель по коду: поиск символов, кто кого вызывает — + +
Проверка на уязвимости, лицензионная чистота, SBOM — + +
Метрики DORA и поток поставки — + +
Свои роли, переменные сборки и IP-ограничения уровня группы — + +
Помощник на языковых моделях: разбор задания и запроса на слияние, настройки и учёт расхода — + +
SAML SSO, SCIM, LDAP — — +
Журнал аудита — — +
Квоты, IP-ограничения уровня установки, пределы черновиков знания — — +
Оформление под свою марку — — +
Приоритетная поддержка — + +

Возможности, которые настраиваются один раз для всей установки и действуют на всех её пользователей, — корпоративный вход (SAML, SCIM, LDAP), журнал аудита, квоты и пределы черновиков, IP-ограничения уровня установки, оформление, — входят только в редакцию Max. Лицензия Pro их не открывает независимо от числа мест в ней (п. 4.2 соглашения). Остальные платные возможности открываются местом и в Pro, и в Max.

Таблица соответствует поведению установки: всё, что в ней не названо платным, работает и в Community. Без активированной лицензии сервер работает в редакции Community.

Редакция, которой эта версия не знает

Если лицензия выписана на редакцию, которой установленная версия GitRiver не знает, лицензия принимается, а установка работает в объёме Community до обновления. Страница Администрирование / Лицензия и отказ на платном вызове говорят об этом прямо: нужно обновить GitRiver, покупать заново ничего не нужно (п. 4.11 соглашения).

Редакции не смешиваются

Места складываются только внутри своей редакции: Max с Max, Pro с Pro. Покупку расширяют второй лицензией той же редакции. Лицензия другой редакции при действующей не активируется — отказ называет причину. Чтобы перейти с одной редакции на другую, обратитесь к издателю: он перевыпустит лицензию (см. «Что меняется у действующей лицензии»).

Лицензия без ограничения мест (seats = 0) места не считает ни в Pro, ни в Max: признак места не требуется никому, в том числе тем, кто входит только корпоративным входом, — пока действует редакция Max.

Непроизводственные установки

Кроме установки, для которой куплена лицензия, по ней же работают до трёх установок, не обслуживающих конечных пользователей: испытательная, предварительная и резервная, включая проверку восстановления из копии. Отдельной лицензии им не нужно, в число мест они не входят (п. 2.6 соглашения).

Установка, обслуживающая конечных пользователей, непроизводственной не является, как бы она ни называлась.

Что даёт место

Место — это доступ. Возможность, которая в таблице ниже меряется местами, открыта тому, кому место назначено, и закрыта остальным (п. 4.4 соглашения).

Место в Max и место в Pro — одно и то же место. Обе редакции открывают возможности уровня места одинаково; в Max к ним добавляются возможности уровня установки. Место назначает администратор в Администрирование / Пользователи — само по первому входу оно не выдаётся. Занятые и оплаченные места видны в Администрирование / Лицензия.

У каждой возможности два независимых признака: какая редакция нужна и меряется ли она местами.

Редакция Меряется местами Что сюда входит
Max нет Вход по SAML и метаданные поставщика, настройки корпоративного входа (SAML, SCIM, LDAP), внешнее управление учётными записями по SCIM, журнал аудита, IP-ограничения уровня установки, квоты, оформление, пределы черновиков знания
Pro нет Настройки помощника, учёт и пределы расхода, проверка связи с поставщиком модели
Pro да Показатели DORA и поток поставки, проверка безопасности, лицензионная чистота и SBOM, указатель по коду, сведение знания по команде, роли и переменные группы, IP-ограничения уровня группы, состояние помощника и обращения к модели

Администрирование установки местами не меряется: администратор, раздавший все места сотрудникам, по-прежнему управляет настройками и может загрузить продление лицензии.

«Не меряется местами» в строке Max значит, что возможность одна на установку, а не что ею пользуются бесплатно: тот, кто входит только по SAML или через каталог, получает запрос места сразу после входа (см. «Вход средствами Max требует места»).

Учётная запись без места, у которой есть пароль или привязка OAuth, работает в объёме Community (п. 4.4 соглашения): git, CI/CD, реестр, задачи, запросы на слияние, знание репозитория и личные счётчики ей доступны, платные разделы отвечают 403 с кодом license_required.

Лицензия без ограничения мест их не считает. При seats = 0 (п. 4.3 — число мест не ограничено) признак места не требуется: возможности уровня места доступны всем учётным записям, в том числе в льготный срок.

При обновлении на 1.1.0 установка с лицензией НА ЧИСЛО МЕСТ обнаружит, что платные разделы доступны только тем, у кого признак места уже проставлен, — как правило, одному администратору, активировавшему лицензию. Раздайте места в Администрирование / Пользователи. Установок с лицензией без ограничения мест это не касается.

Знание разделено по тому же правилу, и бесплатному и платному соответствуют разные адреса: /api/v1/repos/{owner}/{name}/knowledge/stats/me (бесплатно) против .../knowledge/stats/team, .../knowledge/stats/dead и /api/v1/admin/knowledge/limits/... (платно). Отказ приходит на конкретном вызове, а не значением поля внутри ответа.

Защита окружений (/api/v1/repos/{owner}/{name}/environments/**, включая подтверждения развёртывания) — возможность самого репозитория: её заводит владелец репозитория, и работает она и в Community.

GET /api/v1/auth/me возвращает три признака:

  • is_pro — «уровень места доступен мне» (лицензия Pro или Max и моё место). По нему интерфейс решает, показывать ли разделы работы;
  • instance_is_max — «уровень установки открыт» (редакция Max). По нему решается показ разделов администрирования;
  • instance_is_pro — «у установки действует платная лицензия уровня места». По нему отличают «лицензии нет вовсе» от «лицензия есть, а места у меня нет».

Когда доступ закрыт

Отказ называет причину, потому что причины чинятся по-разному:

Причина Что видит человек Что делать
Лицензии нужной редакции нет «Эта возможность доступна в редакции Max» купить редакцию
Лицензия нужной редакции была, срок и льготный срок вышли «Срок лицензии редакции Max истёк — продлите её» продлить
Подтверждение права не продлевалось «Право на платные возможности не продлевалось с …» проверить связь с сервером лицензий или ввести ответ вручную (см. «Подтверждение права»)
Редакция лицензии этой версии неизвестна «Лицензия выписана на редакцию «…», которой эта версия не знает» обновить GitRiver
Раздел меряется местами, а места у читающего нет «Эта функция доступна учётным записям с местом — его назначает администратор установки» попросить место
Запись входит только корпоративным входом, места нет «Вход по SAML или через каталог входит в редакцию Max и требует места…» попросить место
Запись входит только корпоративным входом, а редакция Max не действует «Вход по SAML и через каталог недоступен. … Войти можно по паролю…» попросить пароль у администратора

Машинный код у всех один — license_required: текст переводится и уточняется, а ветку клиент выбирает по коду.

Вход средствами Max требует места

Корпоративный вход — SAML SSO, каталог LDAP и внешнее управление учётными записями по SCIM — входит в редакцию Max. Учётная запись, которая входит только этими средствами, без места доступа не получает: вход выполняется, а дальше человек видит сообщение, что место назначает администратор установки.

Правило простое: нет пароля или OAuth — нужно место. Пароль и OAuth места не требуют и дают объём Community.

Мерой служит учётная запись, а не отдельный вход: если у записи есть пароль, места ей не нужно, даже когда человек вошёл по SAML. Правило одинаково для интерфейса, git, SSH и персональных токенов.

Администратор, входящий паролем, управляет установкой и без места. Администратор, входящий только корпоративным входом, места требует, как и все. Хотя бы один администратор, входящий паролем, в установке есть всегда (см. «Льготный срок после истечения»).

Вход по SAML и через каталог LDAP работает, пока действует лицензия Max или идёт её льготный срок, и перестаёт пускать, когда льготный срок вышел. Вход паролем и через поставщиков OAuth работает всегда.

Что остаётся после окончания лицензии

Оформление действует, пока действует лицензия Max. Когда редакция Max перестала действовать и льготный срок кончился, сервер показывает стандартное оформление — и в интерфейсе, и на странице входа. Заданные значения при этом сохраняются и применяются снова после продления: вводить их заново не нужно.

Заведённое платной возможностью остаётся видимым и снимаемым. Часть платных возможностей продолжает действовать после окончания лицензии: IP-ограничения фильтруют запросы, переменные группы подставляются в сборки, свои роли дают права, умолчания квот и пределы черновиков знания ограничивают пользователей. Их можно смотреть и удалять и в Community (GET и DELETE), а заводить и менять (POST, PUT, PATCH) — только при действующей лицензии; иначе ответ 403 license_required. В интерфейсе такие разделы показываются со списком и пояснением вместо кнопки заведения.

Подписка и срок действия

GitRiver продаётся подпиской сроком от месяца до года. У лицензии две даты, и путать их нельзя:

Дата Что означает Чем продлевается
expires до когда оплачено оплатой
lease_until до когда установка вправе пользоваться оплаченным, не получая нового подписанного ответа от издателя любым новым подписанным ответом: полученным установкой самостоятельно или введённым вручную

Вторая называется сроком подтверждения и описана ниже, в разделе «Подтверждение права». Всё, что сказано в этом разделе про сроки, льготный срок и предупреждения, относится к первой.

Связь с сервером лицензий нужна только для того, чтобы продление и очередное подтверждение права доставлялись сами. Без неё тот же подписанный ответ вводится вручную на странице Администрирование / Лицензия. Отдельного формата лицензии для закрытого контура нет: для него оформляется годовая подписка и продолжительный срок подтверждения.

Продление

  1. Оплатите продление в личном кабинете (кнопка Продлить у лицензии). Ключ, идентификатор лицензии и активация сохраняются — новый ключ вводить не нужно.
  2. Установка получает продление с сервера лицензий сама и применяет его без участия администратора — обычно в течение суток, а ближе к концу срока, в льготный срок и при выходящем сроке подтверждения — в течение нескольких часов.
  3. Ждать необязательно: кнопка Проверить сейчас на странице лицензии запрашивает состояние немедленно.
  4. Если связи с сервером лицензий нет, получите продлённый ответ активации тем же путём, каким лицензия активировалась (см. «Кто вправе получить подписанный ответ»), и вставьте его на той же странице.

Что меняется у действующей лицензии

Переход на старшую редакцию и докупка мест — не покупка второй лицензии, а замена файла активации у той же. Издатель выдаёт файл с тем же идентификатором лицензии; срок при этом двигать не обязательно. Файл вводится там же, где продление, или доезжает с сервера лицензий сам. Установка называет администратору всё, что изменилось: редакцию, число мест, срок. Второй строки в списке лицензий не появляется, места не удваиваются.

Принимается ли присланный файл, решает его срок:

Срок в присланном файле Что принимается
позже действующего всё, что подписал издатель, в том числе меньшее число мест или младшая редакция по новому договору
тот же только если файл ничего не ухудшает и что-то улучшает — так приходят переход с Pro на Max, докупка мест и очередное подтверждение права
раньше действующего ничего

Внутри оплаченного срока условия только улучшаются: файл с тем же сроком, но меньшим числом мест или младшей редакцией не принимается (п. 4.10 соглашения). Переактивировать установку ни в одном из этих случаев не нужно.

Льготный срок после истечения

После окончания оплаченного срока платная редакция сохраняется на льготный срок. Его длина указана в самой лицензии и по умолчанию зависит от срока подписки (п. 4.6 соглашения):

Срок подписки Льготный срок
1–3 месяца 7 дней
4–11 месяцев 14 дней
12 месяцев и больше 30 дней

В льготный срок платные возможности продолжают работать — включая вход по SAML SSO и внешнее управление по SCIM. Подтверждение права в это время тоже продолжает приходить, но оплаченный срок не двигает: льготный срок кончается по своей дате.

Новых мест в льготный срок не выдаётся, а занятые сверх оплаченного числятся превышением — по нему администратор заранее видит, сколько мест снимется, если не продлить.

По окончании льготного срока (п. 4.7 соглашения):

  • платные возможности отключаются, места сверх предела снимаются автоматически (последние назначенные — первыми);
  • закрывается корпоративный вход: войти по SAML или через каталог больше нельзя. Остаются пароль и OAuth, и администратор может задать пароль любому, кто входил доменом (Администрирование / Пользователи);
  • данные никуда не деваются: установка работает в редакции Community.

Поэтому убрать из установки последнего администратора, входящего паролем, нельзя — ни разжалованием, ни блокировкой, ни удалением, ни отключением через SCIM: иначе после закрытия корпоративного входа загрузить продление было бы некому. Администратор, входящий только через OAuth, его не заменяет: такой вход зависит от внешнего поставщика. Чтобы разжаловать последнего администратора с паролем, сначала задайте пароль другому администратору.

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

Предупреждения о скором истечении

Администратор получает предупреждения заранее. Пороги заданы долей остатка оплаченного срока — 25 %, 10 % и 3 %: для месячной подписки это примерно за 8, 3 и 1 день, для годовой — за 92, 37 и 11 дней. Каждый порог срабатывает один раз; после продления отсчёт начинается заново.

Предупреждение уходит тремя путями сразу: полосой на странице лицензии, записью в ленте активности (license_expiring) и письмом администраторам установки — на адреса всех незаблокированных администраторов. Тем же письмом сообщается и начало льготного срока, если мест занято больше оплаченных.

Для писем установке нужен настроенный SMTP ([smtp] в настройках либо панель администратора). Без него предупреждение всё равно попадёт в журнал сервера и в ленту активности, а в журнале появится строка о том, что письмо отправить было нечем.

Настройка «получать письма» в профиле на эти письма не влияет: она про подписку на события репозиториев, а предупреждение о лицензии — сообщение установки.

Подтверждение права

Подписанный ответ активации годен ограниченное время — до даты lease_until, срока подтверждения (п. 4.12 соглашения). Это не срок лицензии: срок лицензии говорит, до когда оплачено, срок подтверждения — до когда установка вправе пользоваться оплаченным, не получая нового подписанного ответа. Он продлевается любым новым подписанным ответом: установка запрашивает его у сервера лицензий сама, а без связи ответ вводится вручную.

Продолжительность указана в лицензии и по умолчанию зависит от срока подписки:

Срок подписки Срок подтверждения
1–2 месяца 14 дней
3–5 месяцев 30 дней
6–11 месяцев 60 дней
12 месяцев и больше 90 дней

Для установок без доступа к интернету срок подтверждения по соглашению сторон устанавливается дольше, вплоть до года.

О сроке подтверждения администратор узнаёт дважды — теми же тремя путями, что и о сроке лицензии (полоса на странице лицензии, лента активности, письмо):

  • заранее — по той же лестнице долей остатка (25 %, 10 %, 3 %), но не позже чем за 7 дней до конца; событие license_lease_expiring;
  • по факту — когда подтверждение вышло и платные возможности закрылись; событие license_lease_expired.

Каждое сообщение уходит один раз на срок подтверждения. Письмо о скором конце подтверждения денег не просит — оплата тут ни при чём. Обычно оно предлагает открыть установке исходящую связь с сервером лицензий или ввести подписанный ответ вручную. Если же лицензия привязана к другой базе данных, письмо говорит об этом и приводит отпечаток базы этой установки для обращения к издателю (см. «Переезд базы и восстановление из копии»).

В полях API подтверждение права называется lease (lease_until, lease_days_left, lease_expired), в интерфейсе и в этом документе — «подтверждение права».

Что происходит, когда срок подтверждения вышел

Git, репозитории, CI, задачи, поиск и все данные работают дальше — в объёме редакции Community. Закрыто заведение нового платными возможностями; заведённое ими продолжает действовать (см. «Что остаётся после окончания лицензии»).

Подтверждение не трогает ни срок лицензии, ни места:

  • expires остаётся прежним — оплаченное никуда не девается;
  • признак места у сотрудников не снимается;
  • как только придёт любой новый подписанный ответ, платные возможности открываются сами, без повторной оплаты и повторной активации.

Собственного льготного срока у подтверждения нет: срок подтверждения сам и есть запас времени.

Что делать:

  1. Открыть установке исходящую связь с сервером лицензий — подтверждение она запросит сама; кнопка Проверить сейчас не ждёт очередной проверки.
  2. Если связи не будет (закрытый контур) — получить ответ вручную (ниже).

Ручное продление подтверждения

Ручной путь равноправен автоматическому, а для закрытого контура он основной. Администратор получает подписанный ответ активации в личном кабинете (а если учётной записи нет — по ключу лицензии, см. «Кто вправе получить подписанный ответ»), переносит его внутрь контура и вставляет на странице Администрирование / Лицензия — той же дорогой, которой лицензия активировалась. Результат тот же, что у автоматического подтверждения.

Переезд базы и восстановление из копии

Лицензия привязана к базе данных установки (п. 4.13 соглашения). Восстановление базы из резервной копии в новый кластер и мажорное обновление PostgreSQL меняют эту привязку. Тогда на странице лицензии появляется полоса «лицензия привязана к другой базе данных» с отпечатком базы ЭТОЙ установки — его называют при обращении.

Что делать:

  1. Не торопиться: прежнее подтверждение действует до конца своего срока, и платные возможности до тех пор работают.
  2. Запросить перевыпуск: на странице лицензии нажать «Добавить лицензию» и ввести тот же лицензионный ключ — установка подготовит новый запрос активации — и получить по нему ответ тем же путём, каким лицензия активировалась. Ключа под рукой нет — назовите издателю отпечаток со страницы лицензии и попросите перевыпуск. Перевыпуск безвозмезден.
  3. Вставить полученный ответ вручную на той же странице. Автоматическое подтверждение лицензию к другой базе не перепривязывает.

Обновление СУБД удобно планировать вместе с перевыпуском: запросите его заранее, а не после того, как подтверждение подойдёт к концу.

Держите время на серверах установки и базы данных синхронизированным (NTP). Если часы убегали далеко вперёд, сроки лицензии и подтверждения могут закончиться раньше календарных; помогает тот же перевыпуск ответа активации.

Активация лицензии

Первая активация выполняется процедурой «запрос — ответ» и не требует выхода установки в интернет (п. 4.8 соглашения).

Порядок

  1. Получите лицензионный ключ при покупке.
  2. В интерфейсе (Администрирование / Лицензия) вставьте ключ и нажмите «Подготовить».
  3. Скопируйте полученный запрос активации.
  4. Откройте личный кабинет на сервере лицензий, раздел Лицензии (https://gitriver.ru/cabinet/licenses), под учётной записью владельца лицензии, нажмите «Активировать» у нужной лицензии и вставьте запрос активации — кабинет выдаст ответ активации, его можно скопировать или скачать файлом.
  5. Вставьте ответ активации в интерфейсе GitRiver и нажмите «Активировать».

Учётной записи в кабинете у администратора установки может не быть вовсе — тогда ответ получают по ключу лицензии (ниже).

Кто вправе получить подписанный ответ

Подписанный ответ активации выдаётся только тому, кто подтвердил право на лицензию. Путей два:

Путь Чем подтверждено право Что предъявляется
Личный кабинет (основной) вход под учётной записью владельца лицензии запрос активации
По ключу лицензии владение ключом лицензионный ключ, идентификатор установки и отпечаток её базы

Храните лицензионный ключ как секрет: предъявивший его получает ответ активации.

Если ключ потерян, а войти в кабинет владельца нельзя, обратитесь к издателю (см. «Куда обращаться»): ответ выдаст сотрудник издателя за владельца.

Активация по ключу лицензии

Путь для тех, у кого нет учётной записи на сайте. Страницы у этого пути нет — ответ запрашивается у сервера лицензий вызовом (адрес — тот же, что в настройке license_server_url):

curl -X POST https://gitriver.ru/api/licenses/activate \
  -H 'Content-Type: application/json' \
  -d '{"license_key": "<лицензионный ключ>",
       "instance_id": "<идентификатор установки>",
       "db_fingerprint": "<отпечаток базы этой установки>"}'

Идентификатор установки и отпечаток базы показаны на странице Администрирование / Лицензия — строки «Установка» и «Отпечаток базы этой установки»; идентификатор появляется, когда нажата «Подготовить» (шаг 2).

Ответ приходит полем activation_key — это и есть ответ активации, его вставляют на странице лицензии (шаг 5).

Особенности

  • Активация хранится в базе данных установки. Резервная копия, сделанная штатной командой backup, её сохраняет. Сброс базы (в том числе на испытательном окружении) или восстановление из копии, снятой ДО активации, означает новую установку: прежняя активация остаётся израсходованной, и лицензию приходится активировать заново.
  • Работа не зависит от связи — продление и подтверждение права можно переносить вручную (см. «Подтверждение права»).
  • Без деактивации — активация расходуется навсегда и на другую установку не переносится.
  • Предел активаций — у каждого ключа ограниченное число активаций.
  • Без пробного периода — до активации установка всегда работает в редакции Community.
  • Идентификатор установки не привязан к оборудованию — это подходит для Kubernetes: под можно пересоздать, идентификатор и активация не теряются.

Несколько реплик

Реплики бесплатны и не ограничены числом: лицензия действует на установку целиком, а не на отдельный под.

  • Активация действует на все реплики без перезапуска подов — обычно за доли секунды, а если реплика в этот момент потеряла связь с базой, то сразу после её восстановления; в любом случае не позже чем через минуту.
  • То же и для снятия — удаление лицензии, отзыв издателем и окончание срока доходят до всех реплик тем же путём.
  • Мест не выдаётся больше оплаченных, даже если их назначают одновременно с разных реплик.

Страница лицензии

Раздел Администрирование / Лицензия показывает:

  • сводное состояние установки, старшую действующую редакцию, занятые и оплаченные места;
  • идентификатор установки и отпечаток её базы данных — их называют при активации по ключу и при обращении к издателю;
  • по каждой лицензии: владельца, редакцию, число мест, срок действия, длину льготного срока и дату, до которой действует подтверждение права;
  • полосы с тем, что требует действия: подходит конец срока или срока подтверждения, идёт льготный срок, подтверждение просрочено, лицензия привязана к другой базе данных, редакция лицензии новее версии установки;
  • дату, по которой сейчас считаются сроки, — если она расходится с часами сервера;
  • кнопки «Проверить сейчас», «Добавить лицензию» и удаления лицензии.

Состояние через API

GET /api/v1/admin/license

Ответ описывает установку целиком, а не одну лицензию: их может быть несколько, и поля верхнего уровня сводят их вместе.

Поле Что означает
status Сводное состояние установки, см. ниже
plan Старшая редакция среди действующих лицензий
is_pro Действует ли НА УСТАНОВКЕ платная лицензия уровня места (то же, что instance_is_pro в /auth/me)
is_max Открыт ли уровень установки — редакция Max (то же, что instance_is_max)
unknown_plans Редакции из лицензий, которых эта версия не знает; не пусто — установку надо обновить
total_seats Сколько мест оплачено; 0 — число мест не ограничено (п. 4.3 соглашения)
seat_limit Тот же предел в виде, пригодном для показа: null, когда ограничения нет
assigned_seats Сколько мест роздано сейчас
instance_id Идентификатор установки, к которому привязаны активации
licenses[] По записи на лицензию: id (идентификатор записи — по нему удаляют, см. DELETE /admin/license/{id}), license_id (идентификатор от издателя), owner, plan, is_pro, is_max, plan_supported, seats, expires, days_until_expiry, activated_at, status (active/grace/expired), grace_days, grace_days_remaining, expiry_warning_percent, lease_until, lease_days_left, lease_expired, db_moved
grace_period Заполнено, когда мест занято больше оплаченного И идёт льготный срок: excess_seats, grace_end, days_remaining
pre_expiry_warning У какой-то действующей лицензии срок на исходе
lease_warning У какой-то действующей лицензии на исходе срок подтверждения
lease_expired У какой-то лицензии срок подтверждения вышел: срок оплачен, платные возможности закрыты
db_moved Какая-то лицензия привязана к другой базе данных
db_fingerprint Отпечаток базы этой установки — его называют издателю, прося перевыпуск
pending_activation_request Начатая, но не завершённая активация
effective_date Дата, по которой сейчас считаются сроки, если она расходится с часами сервера

Сводное состояние (status) — одно из пяти:

  • active — платные возможности включены;
  • grace — срок вышел, но идёт льготный срок, и платные возможности работают;
  • pending — активация начата (prepare выполнен), ответ активации ещё не введён;
  • expired — срок вышел, и льготный срок кончился;
  • community — лицензий нет вовсе.

API

Метод Путь Описание
GET /api/v1/admin/license Состояние лицензии
POST /api/v1/admin/license/prepare Ввод лицензионного ключа, получение запроса активации
POST /api/v1/admin/license/activate Ввод ответа активации: активация платной редакции, продление или подтверждение права
POST /api/v1/admin/license/heartbeat Немедленно запросить состояние лицензий у сервера лицензий
DELETE /api/v1/admin/license/{id} Удалить одну лицензию
DELETE /api/v1/admin/license Удалить все лицензии (возврат в Community)

Удаление лицензии администратором и снятие лицензии, отозванной издателем, записываются в журнал аудита событием license_deactivate с причиной: admin, admin_all или revoked_by_issuer. Запись о снятии по отзыву подписана «Система». Отзыв одной лицензии остальные лицензии установки не затрагивает.

Сведения, которые установка передаёт издателю

Установка с активированной лицензией периодически обращается к серверу лицензий (исходящее соединение HTTPS на адрес из настройки license_server_url) и передаёт следующее (п. 7.1 соглашения); перечень полный:

  • идентификатор установки (instance_id); к оборудованию он не привязан;
  • версию GitRiver;
  • перечень своих лицензий с их сроками и числом мест;
  • число учётных записей — всех заведённых, включая заблокированные и отключённые внешним управлением;
  • число репозиториев — всех, включая форки, зеркала и архивные;
  • число занятых и оплаченных мест;
  • два обезличенных отпечатка — базы данных и адреса установки. По ним нельзя восстановить ни адрес, ни содержимое базы.

Установка не передаёт (п. 7.2 соглашения): содержимое репозиториев, файлы, исходный код, сообщения коммитов, задачи, сборки, имена и адреса почты пользователей, учётные данные, адрес и имя сервера, сведения о машине (процессор, память, диски, операционная система, сетевые адреса).

Установка в редакции Community и установка без связи с сервером лицензий не передают ничего (п. 7.4 соглашения). Отдельного выключателя у обращений нет: они прекращаются, когда в установке не остаётся лицензий. Недоступность сервера лицензий ничего не выключает — установка лишь не получит продление и подтверждение права сама, и их можно ввести вручную.

Куда обращаться

  • Покупка, продление, переход на другую редакцию, перевыпуск ответа активации, потерянный ключ и другие вопросы лицензирования — info@gitriver.ru.
  • Личный кабинет с лицензиями — https://gitriver.ru/cabinet/licenses.
  • Сообщения об уязвимостях — security@gitriver.ru.