Навигация
Лицензирование 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 |
до когда установка вправе пользоваться оплаченным, не получая нового подписанного ответа от издателя | любым новым подписанным ответом: полученным установкой самостоятельно или введённым вручную |
Вторая называется сроком подтверждения и описана ниже, в разделе «Подтверждение права». Всё, что сказано в этом разделе про сроки, льготный срок и предупреждения, относится к первой.
Связь с сервером лицензий нужна только для того, чтобы продление и очередное подтверждение права доставлялись сами. Без неё тот же подписанный ответ вводится вручную на странице Администрирование / Лицензия. Отдельного формата лицензии для закрытого контура нет: для него оформляется годовая подписка и продолжительный срок подтверждения.
Продление
- Оплатите продление в личном кабинете (кнопка Продлить у лицензии). Ключ, идентификатор лицензии и активация сохраняются — новый ключ вводить не нужно.
- Установка получает продление с сервера лицензий сама и применяет его без участия администратора — обычно в течение суток, а ближе к концу срока, в льготный срок и при выходящем сроке подтверждения — в течение нескольких часов.
- Ждать необязательно: кнопка Проверить сейчас на странице лицензии запрашивает состояние немедленно.
- Если связи с сервером лицензий нет, получите продлённый ответ активации тем же путём, каким лицензия активировалась (см. «Кто вправе получить подписанный ответ»), и вставьте его на той же странице.
Что меняется у действующей лицензии
Переход на старшую редакцию и докупка мест — не покупка второй лицензии, а замена файла активации у той же. Издатель выдаёт файл с тем же идентификатором лицензии; срок при этом двигать не обязательно. Файл вводится там же, где продление, или доезжает с сервера лицензий сам. Установка называет администратору всё, что изменилось: редакцию, число мест, срок. Второй строки в списке лицензий не появляется, места не удваиваются.
Принимается ли присланный файл, решает его срок:
| Срок в присланном файле | Что принимается |
|---|---|
| позже действующего | всё, что подписал издатель, в том числе меньшее число мест или младшая редакция по новому договору |
| тот же | только если файл ничего не ухудшает и что-то улучшает — так приходят переход с 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остаётся прежним — оплаченное никуда не девается;- признак места у сотрудников не снимается;
- как только придёт любой новый подписанный ответ, платные возможности открываются сами, без повторной оплаты и повторной активации.
Собственного льготного срока у подтверждения нет: срок подтверждения сам и есть запас времени.
Что делать:
- Открыть установке исходящую связь с сервером лицензий — подтверждение она запросит сама; кнопка Проверить сейчас не ждёт очередной проверки.
- Если связи не будет (закрытый контур) — получить ответ вручную (ниже).
Ручное продление подтверждения
Ручной путь равноправен автоматическому, а для закрытого контура он основной. Администратор получает подписанный ответ активации в личном кабинете (а если учётной записи нет — по ключу лицензии, см. «Кто вправе получить подписанный ответ»), переносит его внутрь контура и вставляет на странице Администрирование / Лицензия — той же дорогой, которой лицензия активировалась. Результат тот же, что у автоматического подтверждения.
Переезд базы и восстановление из копии
Лицензия привязана к базе данных установки (п. 4.13 соглашения). Восстановление базы из резервной копии в новый кластер и мажорное обновление PostgreSQL меняют эту привязку. Тогда на странице лицензии появляется полоса «лицензия привязана к другой базе данных» с отпечатком базы ЭТОЙ установки — его называют при обращении.
Что делать:
- Не торопиться: прежнее подтверждение действует до конца своего срока, и платные возможности до тех пор работают.
- Запросить перевыпуск: на странице лицензии нажать «Добавить лицензию» и ввести тот же лицензионный ключ — установка подготовит новый запрос активации — и получить по нему ответ тем же путём, каким лицензия активировалась. Ключа под рукой нет — назовите издателю отпечаток со страницы лицензии и попросите перевыпуск. Перевыпуск безвозмезден.
- Вставить полученный ответ вручную на той же странице. Автоматическое подтверждение лицензию к другой базе не перепривязывает.
Обновление СУБД удобно планировать вместе с перевыпуском: запросите его заранее, а не после того, как подтверждение подойдёт к концу.
Держите время на серверах установки и базы данных синхронизированным (NTP). Если часы убегали далеко вперёд, сроки лицензии и подтверждения могут закончиться раньше календарных; помогает тот же перевыпуск ответа активации.
Активация лицензии
Первая активация выполняется процедурой «запрос — ответ» и не требует выхода установки в интернет (п. 4.8 соглашения).
Порядок
- Получите лицензионный ключ при покупке.
- В интерфейсе (Администрирование / Лицензия) вставьте ключ и нажмите «Подготовить».
- Скопируйте полученный запрос активации.
- Откройте личный кабинет на сервере лицензий, раздел Лицензии
(
https://gitriver.ru/cabinet/licenses), под учётной записью владельца лицензии, нажмите «Активировать» у нужной лицензии и вставьте запрос активации — кабинет выдаст ответ активации, его можно скопировать или скачать файлом. - Вставьте ответ активации в интерфейсе 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.