🟪
SunLicense Docs
  • Welcome
  • Getting Started
    • Quickstart
    • VPS Setup
  • API Documentation
    • License API
    • Java API
  • Automations
    • BuiltByBit Automation
    • Discord Automation
  • PRODUCT INTEGRATIONS
    • Minecraft Plugins
    • Server Software
    • Minecraft Mods
    • Discord Bots
    • FiveM Projects
    • PHP Projects
    • Python Projects
    • JavaScript Projects
    • Lua Projects
  • SERVICES
    • Managed Hosting
  • LINKS
    • Discord
    • Store
    • Java API Wrapper
    • Sample Project
    • Pterodactyl Egg
    • Other Products
Powered by GitBook
On this page
  • Prerequisites
  • Integration Steps
  • Best Practices
  • Common Issues
  1. PRODUCT INTEGRATIONS

Lua Projects

SunLicense Integration Guide for Lua Projects

Prerequisites

  • Lua 5.1 or higher

  • LuaSocket library

  • JSON library (dkjson or similar)

  • SunLicense API credentials

Integration Steps

1. Create License Validator

local socket = require("socket")
local http = require("socket.http")
local ltn12 = require("ltn12")
local json = require("dkjson")

local SunLicenseValidator = {}
SunLicenseValidator.__index = SunLicenseValidator

function SunLicenseValidator.new(licenseKey, productId, version)
    local self = setmetatable({}, SunLicenseValidator)
    self.licenseKey = licenseKey
    self.productId = productId
    self.version = version or "1.0.0"
    self.apiUrl = "YOUR_API_URL/api/v1/validate"
    return self
end

function SunLicenseValidator:validate()
    local payload = {
        licenseKey = self.licenseKey,
        productId = self.productId,
        productVersion = self.version,
        hwid = self:getHWID() -- Optional
    }

    local jsonPayload = json.encode(payload)
    local response = {}

    local _, code = http.request{
        url = self.apiUrl,
        method = "POST",
        headers = {
            ["Content-Type"] = "application/json",
            ["Content-Length"] = #jsonPayload
        },
        source = ltn12.source.string(jsonPayload),
        sink = ltn12.sink.table(response)
    }

    if code ~= 200 then
        error("License validation failed with code: " .. tostring(code))
    end

    return true
end

function SunLicenseValidator:getHWID()
    -- Implement your HWID generation logic here
    return "YOUR-HWID"
end

2. Basic Implementation

local function main()
    local validator = SunLicenseValidator.new(
        "YOUR-LICENSE-KEY",
        YOUR_PRODUCT_ID,
        "1.0.0"
    )

    local success, err = pcall(function()
        return validator:validate()
    end)

    if success then
        print("License is valid!")
        -- Continue with your application
    else
        print("License validation failed: " .. tostring(err))
        os.exit(1)
    end
end

main()

3. Integration with LOVE2D (Game Framework)

function love.load()
    validator = SunLicenseValidator.new(
        "YOUR-LICENSE-KEY",
        YOUR_PRODUCT_ID
    )
    
    success, err = pcall(function()
        return validator:validate()
    end)
    
    if not success then
        error_message = err
        love.event.quit()
    end
end

function love.draw()
    if error_message then
        love.graphics.print("License Error: " .. error_message, 10, 10)
    end
end

Best Practices

  1. Error Handling

    • Use pcall for error handling

    • Implement proper logging

    • Handle network timeouts

  2. Security

    • Secure storage of license key

    • Implement HTTPS communication

    • Handle sensitive data carefully

  3. Performance

    • Cache validation results

    • Implement retry logic

    • Handle offline scenarios

Common Issues

  1. Network Problems

    • Implement timeout handling

    • Add retry logic

    • Handle connection errors

  2. SSL/HTTPS Issues

    • Configure proper SSL certificates

    • Handle HTTPS requirements

    • Verify API endpoint security

  3. JSON Parsing

    • Handle malformed responses

    • Validate response format

    • Proper error handling

PreviousJavaScript ProjectsNextManaged Hosting

Last updated 4 months ago