SunLicenseВойти
Для разработчиков плагинов Rust · Oxide и Carbon

Платные плагины Rust, загружаются только на платящих серверах.

Один веб-запрос из Oxide или Carbon. Один сервер на ключ.

Создать бесплатный аккаунт

Тариф Free · Без банковской карты · Готово за минуты

Пишете код с ИИ-агентом? Вставьте один промпт
  • C#
  • Oxide / uMod
  • Carbon
  • Tebex
  • Stripe
  • Gumroad
  • Discord
Что вы получаете

Создано под то, как вы продаёте.

По-прежнему один .cs

Встроенный в Oxide webrequest, никаких DLL в поставке.

webrequest.Enqueue

Один ключ — один сервер

Лимит по IP: 1, 3 или 10.

TOO_MANY_IPS

Отзыв, приостановка, блокировка

Ключ, IP сервера или диапазон.

Ключи из вашего магазина

Tebex, Stripe, Gumroad, Payhip и другие.

Поддержку ведёт Discord

Покупатели активируют ключи; команда получает оповещения о раздаче.

Sentinel видит, как он кочует

Отмечает ключи, которые прыгают между серверами.

Любой тариф
Как работает

Готово до следующего релиза.

  1. 1Создать бесплатный аккаунт
  2. 2Подключите свой магазин
  3. 3Один webrequest при загрузке
oxide/plugins/MyPlugin.cs
[Info("MyPlugin", "You", "1.2.0")]
public class MyPlugin : RustPlugin
{
    const string ApiKey = "slk_...";   // can only validate licenses

    void OnServerInitialized()
    {
        var body = JsonConvert.SerializeObject(new { licenseKey = (string)Config["LicenseKey"] });
        var headers = new Dictionary<string, string> { ["Authorization"] = "Bearer " + ApiKey, ["Content-Type"] = "application/json" };
        webrequest.Enqueue("https://api.sunlicense.com/api/v1/validate", body, (code, response) =>
        {
            if (code != 200) return;   // no answer is not a no: keep running
            var result = JObject.Parse(response);
            if ((bool)result["valid"]) Puts("License valid, loading");
            else { PrintError($"License denied: {result["code"]}"); Interface.Oxide.UnloadPlugin(Name); }
        }, this, RequestMethod.POST, headers);
    }
}
Вопросы и ответы

Вопросы и ответы.

Как не дать раздавать мой плагин Rust?

Плагин Rust распространяется как файл .cs, поэтому любой решительный человек может вырезать проверку, и никакое лицензирование этого не изменит. Ключ на каждого покупателя с лимитом по IP делает раздачу видимой и позволяет её остановить: ключ работает на сервере покупателя, тот же ключ на другом сервере отклоняется с TOO_MANY_IPS, а утёкший ключ можно отозвать, чтобы все копии остановились при следующей проверке.

Это работает с Oxide (uMod) и Carbon?

Да. Проверка — это один HTTPS-запрос к REST API SunLicense, сделанный через хелпер webrequest, который уже есть у плагинов Oxide, а Carbon запускает плагины Oxide. На сервер покупателя ничего дополнительно не устанавливается. Есть и .NET SDK, но для плагина из одного файла REST-запрос проще.

Как ограничить плагин Rust одним сервером на покупку?

Задайте в политике лимит по IP, равный 1. Первый сервер, проверивший ключ, занимает слот, а любой другой адрес отклоняется с TOO_MANY_IPS. Когда покупатель переезжает на новую машину, старый адрес освобождается сам через 30 дней без использования, покупатель может освободить его в клиентском портале (Lite и Standard), или вы освободите его на странице лицензии.

Что будет в день вайпа, если SunLicense недоступен?

Решает ваш плагин. Неудачный запрос — это не отказ, поэтому в примере плагин остаётся загруженным, когда ответа нет, и выгружается, только когда SunLicense говорит, что ключ недействителен. Проверки лицензий работают на отдельном сервисе, независимом от панели управления.

Защитите следующий релиз.

  • Тариф Free
  • Без банковской карты
  • Отмена в любой момент