RE:NODE

Руководства10 мин чтения

Escrow и лицензирование ассетов FiveM

Как работает Cfx.re asset escrow: почему платные скрипты FiveM привязаны к аккаунту с вашим лицензионным ключом, что можно править, как передавать и чем опасны сливы.

0 прочтений

Платный ресурс FiveM, купленный через систему asset escrow от Cfx.re, выдаётся аккаунту Cfx.re и работает только на сервере, чей лицензионный ключ принадлежит тому же аккаунту. Код зашифрован (в папке ресурса лежит файл .fxap), редактировать можно только файлы, которые автор указал в escrow_ignore, - обычно это конфиг, - а сервер при запуске проверяет права у Cfx.re. Это одно правило объясняет почти все проблемы с escrow: ресурс, который «внезапно перестал работать», почти всегда означает, что ключ теперь принадлежит другому аккаунту, не тому, что купил скрипт. В этом руководстве - как покупка попадает на ваш сервер, какому аккаунту что должно принадлежать, что можно менять, как работает передача, лицензии бесплатных ресурсов и почему слитые скрипты обходятся дороже, чем экономят.

Что такое escrow#

Ресурсы FiveM - это обычный Lua или JavaScript на диске. До появления escrow всё, что продавалось, можно было скопировать и распространить в день выхода, и рынок платных ресурсов был в основном рынком сливов. Asset escrow от Cfx.re - это решение: авторы загружают ресурс, Cfx.re шифрует выбранные автором части, а покупатели получают версию, которая работает только у них.

Что это значит на практике:

  • Покупки идут через Tebex и привязываются к аккаунту Cfx.re покупателя.
  • Ассет появляется в аккаунте покупателя на портале Cfx.re (раньше - keymaster), откуда он скачивается в виде zip.
  • Папка ресурса содержит файл `.fxap` и зашифрованные Lua-файлы, которые в редакторе не прочитать.
  • При запуске сервер доказывает, что его ключ принадлежит аккаунту с правами. Если нет, ресурс отказывается загружаться, а консоль сообщает, что у вас нет на него прав.
  • Файлы из `escrow_ignore` остаются открытым текстом - так авторы поставляют редактируемые конфиги, локализации и иногда клиентский код.

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

Как покупка попадает на ваш сервер#

выданозагрузка ресурсавладеетsv_licenseKeyПокупка в Tebexмагазин автораАккаунт Cfx.reхранит праваПортал Cfx.reскачать zipЛицензионный ключтот же аккаунтFXServerпроверяет права
От покупки до работающего ресурса под escrow
  1. Купите ресурс в магазине автора на Tebex, войдя в тот аккаунт Cfx.re, под которым собираетесь запускать сервер.
  2. На портале Cfx.re найдите его среди выданных вам ассетов и скачайте.
  3. Загрузите папку в resources, как любой другой ресурс, и добавьте ensure name в server.cfg. На хостинге с панелью это делается через файловый менеджер или SFTP; подробности - в статье о SFTP и файловом менеджере.
  4. Запустите сервер с лицензионным ключом от того же аккаунта.

Проблемы начинаются на шаге 1. Кто-то из персонала покупает скрипт на свой аккаунт «для сервера», ключ принадлежит аккаунту владельца, и скрипт так и не запускается. Права выдаются на аккаунт, а ключ определяет, каким аккаунтом является сервер.

Какому аккаунту должен принадлежать ключ#

Поскольку каждая покупка под escrow следует за аккаунтом ключа, аккаунт, которому принадлежит ключ, фактически владеет платным контентом сервера. Решите это осознанно, прежде чем что-либо покупать.

ВариантПлюсыМинусы
Личный аккаунт владельцаПросто на стартеАссеты сервера привязаны к одному человеку
Отдельный аккаунт под проектПереживает смену персоналаКто-то должен надёжно хранить вход в него
Собственный аккаунт каждого разработчикаНикакихАссеты разбросаны; большинство не запустится

Для всего, что больше маленького приватного сервера, разумный выбор - отдельный аккаунт Cfx.re под проект: все покупки делаются на нём, лицензионный ключ выдаётся с него, а вход в него знают двое доверяющих друг другу людей, с включённой двухфакторной аутентификацией. Когда совладелец уходит, скрипты сервера не уходят вместе с ним. Статья о двухфакторной аутентификации в аккаунте панели объясняет в общем виде, зачем защищать аккаунты, от которых зависит всё.

На одном аккаунте может быть несколько ключей, и ассет под escrow, выданный аккаунту, работает на любом сервере с любым из ключей этого аккаунта. Так можно держать сервер для разработки рядом с живым, с теми же скриптами: выпустите второй ключ с того же аккаунта. Создание ключей описано в статье о настройке сервера FiveM.

Ведите реестр того, чем владеете

Как только на сервере больше нескольких платных ресурсов, ведите простой учёт - таблицу или закреплённый документ для персонала - по одной строке на ассет:

  • название ресурса и автор;
  • где куплен, дата и ID транзакции в Tebex;
  • какой аккаунт Cfx.re владеет правами;
  • версия, которая у вас работает, и где хранится скачанный zip;
  • редактируем ли его конфиг и что вы в нём поменяли.

Это пять минут на покупку, а экономит часы потом. Когда ресурс ломается после обновления, вы знаете, к какому автору обращаться и с какими доказательствами. Когда уходит совладелец, вы знаете, какие права на чьём аккаунте. А когда кто-то спрашивает, нет ли на сервере чего-то слитого, вы можете ответить списком, а не пожатием плеч.

Сам ключ - это учётные данные. Он указывается в server.cfg через sv_licenseKey, а лучше - в маленьком файле, который выполняет server.cfg и который никогда не покидает сервер. Любой, у кого он есть, может запустить сервер от имени вашего аккаунта и вместе с ним - ваши купленные ресурсы.

Что можно и что нельзя менять#

fxmanifest.lua ресурса под escrow перечисляет, что остаётся читаемым:

fxmanifest.lua (from an escrowed resource)
fx_version 'cerulean'game 'gta5'lua54 'yes'shared_script 'config.lua'client_scripts { 'client/*.lua' }server_scripts { 'server/*.lua' }escrow_ignore {    'config.lua',    'locales/*.lua',    'client/editable.lua',}

Всё, что в escrow_ignore, - открытый текст, и его можно редактировать. Всё остальное зашифровано. Хорошие авторы выносят то, что вы захотите поменять, - цены, координаты, функции-мосты к фреймворку, уведомления, - в открытые файлы. Плохие шифруют всё и оставляют вам конфиг из трёх опций.

Что это значит при покупке:

  • Спросите, что открыто, до оплаты. Ресурс, чья интеграция с фреймворком лежит в редактируемом файле, можно адаптировать, когда фреймворк обновится. Ресурс с зашифрованной интеграцией будет ждать автора.
  • Ошибки в зашифрованной части исправляет автор. Вы можете сообщить о них с логами и профилем - и всё. Как получить доказательства, с которыми автор не поспорит, показано в статье о производительности сервера FiveM.
  • Не переименовывайте папку ресурса, если автор не говорит, что это безопасно. Некоторые ресурсы под escrow проверяют собственное имя.
  • Обновления - это повторное скачивание. Когда автор выпускает исправление, скачайте новую версию с портала, перенесите в неё свои отредактированные открытые файлы и замените папку.

Храните каждую скачанную версию. Ресурс под escrow, который вы удалили локально, можно скачать снова, только пока существуют права и страница автора. Статья о бэкапах, которые действительно восстанавливаются относится к вашей папке ресурсов не меньше, чем к базе данных.

Передача и смена владельца#

Серверы переходят из рук в руки, совладельцы расходятся, проекты переезжают на новый аккаунт. Ассеты под escrow - та часть, которая не переезжает копированием файлов.

Варианты, в порядке чистоты:

  1. Оставьте аккаунт, смените того, кто им владеет. Если проект уже использует отдельный аккаунт, смена владельца - это смена пароля и устройства для двухфакторной аутентификации. Больше ничего не переезжает.
  2. Воспользуйтесь функцией передачи Cfx.re. Портал предлагал способ передать выданные ассеты другому аккаунту, с учётом правил Cfx.re и того, разрешает ли это автор. Доступность и ограничения со временем менялись, поэтому проверьте, что портал предлагает для каждого ассета, прежде чем кому-то обещать передачу.
  3. Спросите автора. Многие авторы перенесут лицензию при настоящей смене владельца, если обратиться к ним с подтверждением покупки.
  4. Купите заново. Запасной вариант - и причина с самого начала правильно сделать вариант 1.

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

У ресурсов с открытым кодом тоже есть лицензии#

Не всё находится под escrow. Крупные фреймворки и большая часть экосистемы вокруг них - open source, а open source - это лицензия, а не её отсутствие.

  • ESX Legacy и QBCore опубликованы под GPL-3.0, как и многие ресурсы, созданные для них. Библиотеки Overextended, такие как ox_lib, тоже используют лицензии семейства GPL. Проверяйте файл LICENSE в каждом репозитории - они различаются.
  • GPL позволяет запускать, изменять и распространять код. Если вы распространяете изменённую версию - продаёте её, публикуете, - условия GPL применяются к тому, что вы распространяете, включая предоставление исходного кода под той же лицензией.
  • Запуск изменённого GPL-ресурса на собственном сервере без его распространения - обычное использование.
  • Взять чужой бесплатный GPL-ресурс, зашифровать его и продавать через escrow - нарушение лицензии и частый источник споров.

Для владельца сервера практические выводы такие: сохраняйте файлы лицензий в папках, которые устанавливаете, указывайте авторов, когда публикуете изменения, и не покупайте «премиум-версии» бесплатных ресурсов у людей, которые их не писали.

Слитые ресурсы#

Сайты со сливами распространяют ресурсы под escrow со снятой защитой, и именно через слитые ресурсы взламывают большинство серверов FiveM. Цена не только этическая:

  • Бэкдоры. Слитые ресурсы регулярно содержат несколько строк, которые скачивают и выполняют код с удалённого адреса. С их помощью сливщик может выдать себе админку, выгрузить вашу базу данных или украсть лицензионный ключ. Типичный шаблон - PerformHttpRequest, за которым следует load на ответ; ищите его, а остальной метод описан в статье о том, как держать модифицированный сервер в чистоте.
  • Ваш ключ. Cfx.re может отозвать лицензионные ключи и принять меры против аккаунтов за запуск контента в нарушение своих условий. Отзыв следует за аккаунтом, поэтому забирает с собой каждый ключ и каждую законную покупку на нём.
  • Никаких обновлений. Слив заморожен на той версии, с которой кто-то снял защиту. Когда фреймворк уходит вперёд, слив ломается, и чинить его никто не будет.
  • Никакой поддержки. Авторы не помогают со слитыми копиями и узнают их.

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

Продажа чего-либо на собственном сервере#

Escrow касается того, что вы покупаете. То, что вы продаёте игрокам, регулируется собственными правилами Cfx.re для владельцев серверов, которые направляют монетизацию через Tebex и ограничивают, что можно продавать: продажа контента, на который у вас нет прав, или игровых преимуществ в определённых формах может стоить ключа. Правила пересматривались не раз, поэтому перед открытием магазина прочитайте актуальную версию на сайте Cfx.re, а общую картину по разным играм - в статье о монетизации игрового сервера в рамках правил.

Устранение неполадок#

«You lack the required entitlement» для ресурса. Лицензионный ключ сервера принадлежит аккаунту, который не владеет ассетом. Проверьте, какой аккаунт его купил и какой аккаунт выпустил ключ.

Ресурсы под escrow вчера работали, а сегодня нет. Ключ изменился: перевыпущен, заменён ключом другого аккаунта или отозван. Или сервер при запуске не может достучаться до Cfx.re для проверки.

Ресурс под escrow ломается после обновления или отката FXServer. Escrow требует достаточно свежей сборки сервера. Используйте рекомендованную сборку, как описано в статье об обновлениях сервера FiveM.

Покупки нет на портале. Она сделана на другом аккаунте Cfx.re, или покупка в Tebex прошла без привязки аккаунта. Свяжитесь с автором, указав ID транзакции.

Отредактированные файлы откатились после обновления. Вы заменили папку и перезаписали свои файлы из escrow_ignore. Храните копию отредактированных конфигов вне ресурса.

FAQ#

Можно ли запустить скрипт FiveM под escrow на двух серверах?

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

Может ли хостер дать лицензионный ключ для ресурсов под escrow?

Нет. Ключ должен быть с аккаунта Cfx.re, которому принадлежат ваши ассеты, поэтому хостеры FiveM и просят вас указать свой. Ключ с чужого аккаунта ваши покупки не запустит.

Можно ли редактировать ресурс под escrow?

Только файлы, которые автор указал в escrow_ignore, - обычно конфиги и локализации. Всё остальное зашифровано. Перед покупкой спросите, какие части редактируемые.

Что будет с моими скриптами, если я продам сервер?

Они остаются у аккаунта Cfx.re, который их купил. Либо передайте весь аккаунт, либо воспользуйтесь передачей там, где это позволяют портал и автор, либо новый владелец покупает собственные лицензии.

Безопасны ли слитые скрипты FiveM, если их просканировать?

Сканирование находит известные шаблоны, а не всё подряд. Сливы - частый путь для бэкдоров, а их запуск ставит под угрозу ваш лицензионный ключ и аккаунт Cfx.re. Экономия редко стоит хотя бы одного из этих рисков.


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000