SunLicenseEntrar
Para desenvolvedores de plugins de Rust · Oxide e Carbon

Plugins pagos de Rust, carregados só em servidores pagantes.

Uma requisição web do Oxide ou do Carbon. Um servidor por chave.

Criar conta grátis

Plano Free · Sem cartão de crédito · Pronto em minutos

Programa com um agente de IA? Cole um prompt
  • C#
  • Oxide / uMod
  • Carbon
  • Tebex
  • Stripe
  • Gumroad
  • Discord
O que você recebe

Feito para o seu jeito de vender.

Continua sendo um único .cs

O webrequest embutido do Oxide, sem DLL para distribuir.

webrequest.Enqueue

Uma chave, um servidor

Um limite de IP de 1, 3 ou 10.

TOO_MANY_IPS

Revogue, suspenda, bloqueie

Uma chave, um IP de servidor ou uma faixa.

Chaves vindas da sua loja

Tebex, Stripe, Gumroad, Payhip e mais.

O Discord cuida do suporte

Compradores resgatam chaves; a equipe recebe alertas de compartilhamento.

O Sentinel vê a chave se movendo

Sinaliza chaves que pulam entre servidores.

Todos os planos
Como funciona

No ar antes da sua próxima versão.

  1. 1Criar uma conta grátis
  2. 2Conecte sua loja
  3. 3Um webrequest ao carregar
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);
    }
}
Perguntas frequentes

Perguntas e respostas.

Como impeço que meu plugin de Rust seja compartilhado?

Um plugin de Rust é distribuído como um arquivo .cs, então qualquer pessoa determinada consegue tirar uma validação, e nenhum licenciamento muda isso. Uma chave por comprador com limite de IP torna o compartilhamento visível e possível de barrar: a chave funciona no servidor do comprador, a mesma chave em outro servidor é recusada com TOO_MANY_IPS, e uma chave vazada pode ser revogada para que toda cópia pare na próxima validação.

Funciona com Oxide (uMod) e Carbon?

Sim. A validação é uma requisição HTTPS para a REST API do SunLicense, feita com o helper webrequest que os plugins de Oxide já têm, e o Carbon roda plugins de Oxide. Nada extra é instalado no servidor do comprador. Também existe um SDK .NET, mas para um plugin de um arquivo só a chamada REST é mais simples.

Como limito um plugin de Rust a um servidor por compra?

Dê à política um limite de IP de 1. O primeiro servidor que valida a chave ocupa a vaga, e qualquer outro endereço é recusado com TOO_MANY_IPS. Quando um comprador muda para outra máquina, o endereço antigo se libera sozinho após 30 dias sem uso, ele pode liberá-lo no portal do cliente (Lite e Standard), ou você libera na página da licença.

O que acontece no dia do wipe se o SunLicense cair?

Seu plugin decide. Uma requisição que falhou não é uma recusa, então o exemplo mantém o plugin carregado quando não há resposta e só o descarrega quando o SunLicense diz que a chave não é válida. As validações de licença rodam em um serviço próprio, separado do painel.

Proteja sua próxima versão.

  • Plano Free
  • Sem cartão de crédito
  • Cancele quando quiser