SunLicenseSe connecter
Pour les développeurs de plugins Rust · Oxide et Carbon

Des plugins Rust payants, chargés uniquement sur les serveurs qui paient.

Une requête web depuis Oxide ou Carbon. Un serveur par clé.

Créer un compte gratuit

Forfait Free · Sans carte bancaire · Prêt en quelques minutes

Vous codez avec un agent IA  Collez un prompt
  • C#
  • Oxide / uMod
  • Carbon
  • Tebex
  • Stripe
  • Gumroad
  • Discord
Ce que vous obtenez

Pensé pour votre façon de vendre.

Toujours un seul .cs

Le webrequest intégré d'Oxide, aucune DLL à livrer.

webrequest.Enqueue

Une clé, un serveur

Une limite d'IP de 1, 3 ou 10.

TOO_MANY_IPS

Révoquez, suspendez, bloquez

Une clé, une IP de serveur ou une plage.

Des clés depuis votre boutique

Tebex, Stripe, Gumroad, Payhip et d'autres.

Discord assure l'assistance

Les acheteurs activent leurs clés  l'équipe reçoit des alertes de partage.

Sentinel la voit se déplacer

Signale les clés qui sautent d'un serveur à l'autre.

Tous les forfaits
Fonctionnement

En ligne avant votre prochaine version.

  1. 1Créer un compte gratuit
  2. 2Connectez votre boutique
  3. 3Un webrequest au chargement
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);
    }
}
FAQ

Vos questions, nos réponses.

Comment empêcher le partage de mon plugin Rust 

Un plugin Rust est distribué sous forme de fichier .cs, donc toute personne déterminée peut en retirer une vérification, et aucune licence n'y change rien. Une clé par acheteur avec une limite d'IP rend le partage visible et stoppable  la clé fonctionne sur le serveur de l'acheteur, la même clé sur un autre serveur est refusée avec TOO_MANY_IPS, et une clé qui a fuité peut être révoquée pour que chaque copie s'arrête à sa prochaine vérification.

Est-ce que ça marche avec Oxide (uMod) et Carbon 

Oui. La vérification est une requête HTTPS vers la REST API de SunLicense, faite avec l'outil webrequest dont disposent déjà les plugins Oxide, et Carbon exécute les plugins Oxide. Rien de plus n'est installé sur le serveur de l'acheteur. Il existe aussi un SDK .NET, mais pour un plugin en un seul fichier, l'appel REST est plus simple.

Comment limiter un plugin Rust à un serveur par achat 

Donnez à la politique une limite d'IP de 1. Le premier serveur qui vérifie la clé prend l'emplacement, et toute autre adresse est refusée avec TOO_MANY_IPS. Quand un acheteur passe sur une nouvelle machine, l'ancienne adresse se libère d'elle-même après 30 jours sans usage, il peut la libérer dans le portail client (Lite et Standard), ou vous la libérez sur la page de la licence.

Que se passe-t-il le jour du wipe si SunLicense est en panne 

C'est votre plugin qui décide. Une requête échouée n'est pas un refus  l'exemple garde le plugin chargé quand il n'y a pas de réponse et ne le décharge que si SunLicense dit que la clé n'est pas valide. Les vérifications de licence tournent sur leur propre service, séparé du tableau de bord.

Protégez votre prochaine version.

  • Forfait Free
  • Sans carte bancaire
  • Résiliable à tout moment