Lua Integration

First, let's get your SECRET_KEY. Go to config.php of Blackout and look for the text: define('SECRET_KEY', 'XXXXXXXXXXXXX'); and copy it.

Now let's verify what level of security you are using. Go to config.php and look for define('API_SECURITY', 0); check between 0, 1, and 2. If it is 1, you only need the secret_key. If it is 2, you need to generate a request code on your dashboard. If it is 3, you need to get the SECRET_KEY of your software account and verify that you have the permission dbb.admin.request.validation or dbb.*.

If you have everything, let's proceed to write the code. Note that this applies to all other code.

Create a License

Use this LUA example to generate a license via API requests. Requirements:

  • CLIENT (The client ID. This can only be the DISCORD_ID or the SOFTWARE_ID of the registered user.)

  • PRODUCT (You need to verify which product you want this to be for, remember to check products to see if it exists and what the ID_name is.)

  • EXPIRE (This only applies in DAYS. You can put a number between 1 to greater.)

  • MAXIPS (This is to know how many MAX IPS this license wants to have. It can be 1 or more.)

  • BOUND (Force this key to use the PRODUCT.)

  • CUSTOM_ADDONS (This must be together and separated by # for example: unlimited#dbb#debugg etc. [No limit.]

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

local domain = "license.devbybit.com"
local secret = "PUT_YOUR_SECRET_KEY"
local type = "create"
local table = "license"
local client = "623308343582130187"
local product = "Blackout"
local expire = "15"
local maxips = "10"
local bound = "1"
local custom_addons = "addon1#addon2#addon3#addon4"

local params = {
    secret = secret,
    type = type,
    table = table,
    client = client,
    product = product,
    expire = expire,
    maxips = maxips,
    bound = bound,
    custom_addons = custom_addons
}

local url = "https://" .. domain .. "/api.php?" .. table.concat({
    "secret=" .. params.secret,
    "type=" .. params.type,
    "table=" .. params.table,
    "client=" .. params.client,
    "product=" .. params.product,
    "expire=" .. params.expire,
    "maxips=" .. params.maxips,
    "bound=" .. params.bound,
    "custom_addons=" .. params.custom_addons
}, "&")

local response = {}
local res, code, headers, status = http.request {
    url = url,
    sink = ltn12.sink.table(response)
}

if res then
    print("Success!")
    print(table.concat(response))
else
    print("Error...")
end

Perfect! It seems that everything went correctly. Now it remains to adjust the code to your liking.

Create a Product

Use this LUA example to generate a product via API requests. Requirements:

  • NAME (Form of specifying the software name on the site for preview.)

  • ID_NAME (The identifier of the plugin name. This is mandatory for successful verification.)

  • DESCRIPTION (It is optional, but you can leave a description up to 75 letters.)

  • PRICE (It is optional. You can set a price to calculate your earnings through the generated keys.)

  • VERSION (It is optional. This option can be used to make UPDATES and keep control of the obligation to use the latest versions.)

  • TEBEX (It is optional. It only works if you have tebex enabled. Otherwise, it doesn't matter what you put, it will be NULL.)

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

local domain = "license.devbybit.com"
local secret = "PUT_YOUR_SECRET_KEY"
local type = "create"
local table = "product"
local name = "Blackout"
local id_name = "Blackout-v1.5.3-BETA"
local description = ""
local price = "5.50"
local version = "1.5.3-BETA"
local tebex = "addon1#addon2#addon3#addon4"

local params = {
    secret = secret,
    type = type,
    table = table,
    name = name,
    id_name = id_name,
    description = description,
    price = price,
    version = version,
    tebex = tebex
}

local url = "https://" .. domain .. "/api.php?" .. table.concat({
    "secret=" .. params.secret,
    "type=" .. params.type,
    "table=" .. params.table,
    "name=" .. params.name,
    "id_name=" .. params.id_name,
    "description=" .. params.description,
    "price=" .. params.price,
    "version=" .. params.version,
    "tebex=" .. params.tebex
}, "&")

local response = {}
local res, code, headers, status = http.request {
    url = url,
    sink = ltn12.sink.table(response)
}

if res then
    print("Success!")
    print(table.concat(response))
else
    print("Error...")
end

Perfect! It seems that everything went correctly. Now it remains to adjust the code to your liking.

Create a User

Use this LUA example to generate a user via API requests. Requirements:

  • USERNAME (The username. This is a subname for the software.)

  • PASSWORD (If you put a password, you have to encode it in MD5. Only in version 1.5.3)

  • EMAIL (The user's email. It is mandatory.)

  • UDID (The user's Discord ID. It must be DISCORD_ID obligatorily.)

  • AVATAR (The URL of the user's avatar. It is mandatory.)

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

local domain = "license.devbybit.com"
local secret = "PUT_YOUR_SECRET_KEY"
local type = "create"
local table = "user"
local name = "Vuhp"
local password = ""
local email = "juanmpanizzino@gmail.com"
local udid = "623308343582130187"
local avatar = ""

local params = {
    secret = secret,
    type = type,
    table = table,
    username = name,
    password = password,
    email = email,
    udid = udid,
    avatar = avatar
}

local url = "https://" .. domain .. "/api.php?" .. table.concat({
    "secret=" .. params.secret,
    "type=" .. params.type,
    "table=" .. params.table,
    "username=" .. params.username,
    "password=" .. params.password,
    "email=" .. params.email,
    "udid=" .. params.udid,
    "avatar=" .. params.avatar
}, "&")

local response = {}
local res, code, headers, status = http.request {
    url = url,
    sink = ltn12.sink.table(response)
}

if res then
    print("Success!")
    print(table.concat(response))
else
    print("Error...")
end

Perfect! It seems that everything went correctly. Now it remains to adjust the code to your liking.

Create a Group

Use this LUA example to generate a group via API requests. Requirements:

  • NAME (The name for the group. Mandatory.)

  • COLOR (It is optional. You can put a color only with #028000 or any HEX code of your preference. It is mandatory to use HEX for others and must carry the # at the beginning.)

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

local domain = "license.devbybit.com"
local secret = "PUT_YOUR_SECRET_KEY"
local type = "create"
local table = "group"
local name = "Developer"
local color = "#028000"

local params = {
    secret = secret,
    type = type,
    table = table,
    name = name,
    color = color
}

local url = "https://" .. domain .. "/api.php?" .. table.concat({
    "secret=" .. params.secret,
    "type=" .. params.type,
    "table=" .. params.table,
    "name=" .. params.name,
    "color=" .. params.color
}, "&")

local response = {}
local res, code, headers, status = http.request {
    url = url,
    sink = ltn12.sink.table(response)
}

if res then
    print("Success!")
    print(table.concat(response))
else
    print("Error...")
end

Perfect! It seems that everything went correctly. Now it remains to adjust the code to your liking.

Create a Group Permission

Use this LUA example to generate a permission via API requests. Note that creating a group is the first step to obtain the ID of it. After obtaining the ID, we will place it in group = ''. Requirements:

  • GROUP (The ID of the group.)

  • PERMISSION (The permission to insert.)

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

local domain = "license.devbybit.com"
local secret = "PUT_YOUR_SECRET_KEY"
local type = "create"
local table = "group_permission"
local group = "6"
local permission = "dbb.*"

local params = {
    secret = secret,
    type = type,
    table = table,
    group = group,
    permission = permission
}

local url = "https://" .. domain .. "/api.php?" .. table.concat({
    "secret=" .. params.secret,
    "type=" .. params.type,
    "table=" .. params.table,
    "group=" .. params.group,
    "permission=" .. params.permission
}, "&")

local response = {}
local res, code, headers, status = http.request {
    url = url,
    sink = ltn12.sink.table(response)
}

if res then
    print("Success!")
    print(table.concat(response))
else
    print("Error...")
end

Perfect! It seems that everything went correctly. Now it remains to adjust the code to your liking.

Create a Group User

Use this LUA example to insert a user via API requests. Note that creating a group is the first step to obtain the ID of it. After obtaining the ID, we will place it in group = ''. Requirements:

  • GROUP (The ID of the group.)

  • USER (The ID of the user.)

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

local domain = "license.devbybit.com"
local secret = "PUT_YOUR_SECRET_KEY"
local type = "create"
local table = "group_user"
local group = "6"
local user = "1"

local params = {
    secret = secret,
    type = type,
    table = table,
    group = group,
    user = user
}

local url = "https://" .. domain .. "/api.php?" .. table.concat({
    "secret=" .. params.secret,
    "type=" .. params.type,
    "table=" .. params.table,
    "group=" .. params.group,
    "user=" .. params.user
}, "&")

local response = {}
local res, code, headers, status = http.request {
    url = url,
    sink = ltn12.sink.table(response)
}

if res then
    print("Success!")
    print(table.concat(response))
else
    print("Error...")
end

Perfect! It seems that everything went correctly. Now it remains to adjust the code to your liking.

Create a Code

Use this LUA example to insert a user via API requests. This only works for LICENSE and ADDONS codes. Request codes will have to be generated manually. Requirements:

  • LICENSE OPTION

    • SUBTYPE (Option of the code [license / addons] In this case 'license'.)

    • PRODUCT (The name of the product.)

    • MAXIPS (The maximum IPs for the license.)

    • EXPIRE (Expiration in days, place a number greater than 1.)

  • ADDONS OPTION

    • SUBTYPE (Option of the code [license / addons] In this case 'addons'.)

    • ADDONS (It is mandatory and all must be placed in order and without spaces. For example: option1#option2#option.3#optio.ns4 etc.)

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

local domain = "license.devbybit.com"
local secret = "PUT_YOUR_SECRET_KEY"
local type = "create"
local table = "code"
local subtype = "license"
local product = "Blackout"
local maxips = "15"
local expire = "366"
local addons = "Options1#Unlimited#option..23#Option/15"

local params = {
    secret = secret,
    type = type,
    table = table,
    subtype = subtype,
    product = product,
    maxips = maxips,
    expire = expire,
    -- addons = addons -- Use this if required
}

local url = "https://" .. domain .. "/api.php?" .. table.concat({
    "secret=" .. params.secret,
    "type=" .. params.type,
    "table=" .. params.table,
    "subtype=" .. params.subtype,
    "product=" .. params.product,
    "maxips=" .. params.maxips,
    "expire=" .. params.expire,
    -- "addons=" .. params.addons -- Use this if required
}, "&")

local response = {}
local res, code, headers, status = http.request {
    url = url,
    sink = ltn12.sink.table(response)
}

if res then
    print("Success!")
    print(table.concat(response))
else
    print("Error...")
end

Perfect! It seems that everything went correctly. Now it remains to adjust the code to your liking.

I hope this helps with your project. Keep in mind that these are example codes and are not solid bases well done. But it is an example to learn the functionality and adapt your codes.


Done.

Last updated