| المنتج | IP | الحالة | الوقت |
|---|
| UUID | الاسم | الوصف | التراخيص | التاريخ | إجراءات |
|---|
| المفتاح | المنتج | العميل | Discord | IPs | الصلاحية | الحالة | إجراءات |
|---|
| المستخدم | الدور | Discord | التاريخ | إجراءات |
|---|
يمكنك استخدام الـ API مباشرة من أي لغة برمجة
POST https://teamn6l.com/api/verify
Content-Type: application/json
{
"uuid": "product-uuid-here",
"key": "N6L-XXXXX-XXXXX-XXXXX-XXXXX"
}
// الرد في حالة النجاح:
{ "status": "valid", "message": "License verified — Product Name" }
// الرد في حالة الفشل:
{ "status": "invalid", "message": "سبب الرفض..." }
// أكواد الحالة:
// 200 = ترخيص صالح
// 400 = بيانات ناقصة
// 403 = ترخيص معطل / IP مرفوض / منتهي
// 404 = منتج أو ترخيص غير موجود
// 429 = طلبات كثيرة (rate limit)
FiveM Lua
ضع هذا الكود في أول ملف سيرفر (server_script). يتحقق من الرخصة وينشئ توكن مشفّر بـ DJB2+FNV ويحطه في GlobalState
-- TEAM N6L License Protection (Server Main)
-- ضع هذا في أول ملف سيرفر فقط
(function()
local N6L_UUID = "ضع-UUID-المنتج-هنا"
local N6L_KEY = "N6L-XXXXX-XXXXX-XXXXX-XXXXX"
local TOKEN_SECRET = "REPLACE_WITH_A_RANDOM_SECRET"
local STATE_KEY = "n6l_tk_XXXXX" -- غير XXXXX لاسم فريد
local function generateToken(secret)
local ts = tostring(os.time())
local raw = secret .. ":" .. ts
local h = 5381
for i = 1, #raw do h = ((h * 33) ~ string.byte(raw, i)) & 0x7FFFFFFF end
local h2 = 0x811c9dc5
for i = #raw, 1, -1 do h2 = ((h2 ~ string.byte(raw, i)) * 0x01000193) & 0xFFFFFFFF end
return string.format("%08x%08x%s", h, h2, ts)
end
local _stop = function()
print("^1[TEAM N6L] License Validation Failed^0")
StopResource(GetCurrentResourceName())
end
PerformHttpRequest("https://teamn6l.com/api/verify", function(sc, rt)
local ok, res = pcall(json.decode, rt)
if sc == 200 and ok and res and res.status == "valid" then
local token = generateToken(TOKEN_SECRET)
GlobalState[STATE_KEY] = token
print("^2[TEAM N6L] " .. (res.message or "License OK") .. "^0")
-- ══════════════════════════════════════
-- ضع كودك الأصلي هنا (داخل التحقق الناجح)
-- ══════════════════════════════════════
else
local msg = ok and res and res.message or "Verification Failed"
print("^1[TEAM N6L] " .. msg .. "^0")
_stop()
end
end, "POST", json.encode({
uuid = N6L_UUID,
key = N6L_KEY
}), {["Content-Type"] = "application/json"})
end)()
ضع هذا الكود في أي ملف سيرفر ثاني. يقرأ التوكن من GlobalState ويتحقق منه بالهاش — إذا ما تطابق يوقف الريسورس
-- TEAM N6L Token Guard (Server Extra)
-- ضع هذا في أعلى أي ملف سيرفر إضافي
Citizen.CreateThread(function()
local TOKEN_SECRET = "REPLACE_WITH_A_RANDOM_SECRET" -- نفس السيكرت
local STATE_KEY = "n6l_tk_XXXXX" -- نفس المفتاح
local function verifyToken(token)
if type(token) ~= "string" or #token < 18 then return false end
local ts_str = token:sub(17)
if not tonumber(ts_str) then return false end
local raw = TOKEN_SECRET .. ":" .. ts_str
local h = 5381
for i = 1, #raw do h = ((h * 33) ~ string.byte(raw, i)) & 0x7FFFFFFF end
local h2 = 0x811c9dc5
for i = #raw, 1, -1 do h2 = ((h2 ~ string.byte(raw, i)) * 0x01000193) & 0xFFFFFFFF end
return token == string.format("%08x%08x%s", h, h2, ts_str)
end
local deadline = GetGameTimer() + 15000
repeat Citizen.Wait(200) until verifyToken(GlobalState[STATE_KEY])
or GetGameTimer() > deadline
if not verifyToken(GlobalState[STATE_KEY]) then
print("^1[TEAM N6L] Server token verification failed^0")
StopResource(GetCurrentResourceName())
return
end
-- ضع كودك هنا
end)
ضع هذا الكود في أي ملف كلاينت (client_script). يقرأ التوكن من GlobalState ويتحقق — نفس طريقة الملف الإضافي
-- TEAM N6L Token Guard (Client)
-- ضع هذا في أعلى أي ملف كلاينت
Citizen.CreateThread(function()
local TOKEN_SECRET = "REPLACE_WITH_A_RANDOM_SECRET" -- نفس السيكرت
local STATE_KEY = "n6l_tk_XXXXX" -- نفس المفتاح
local function verifyToken(token)
if type(token) ~= "string" or #token < 18 then return false end
local ts_str = token:sub(17)
if not tonumber(ts_str) then return false end
local raw = TOKEN_SECRET .. ":" .. ts_str
local h = 5381
for i = 1, #raw do h = ((h * 33) ~ string.byte(raw, i)) & 0x7FFFFFFF end
local h2 = 0x811c9dc5
for i = #raw, 1, -1 do h2 = ((h2 ~ string.byte(raw, i)) * 0x01000193) & 0xFFFFFFFF end
return token == string.format("%08x%08x%s", h, h2, ts_str)
end
local deadline = GetGameTimer() + 15000
repeat Citizen.Wait(200) until verifyToken(GlobalState[STATE_KEY])
or GetGameTimer() > deadline
if not verifyToken(GlobalState[STATE_KEY]) then
print("^1[TEAM N6L] Client token verification failed^0")
StopResource(GetCurrentResourceName())
return
end
-- ضع كودك هنا
end)
JavaScript / Node.js
ضع هذا في الملف الرئيسي. يتحقق من الرخصة وينشئ توكن مشفّر ويخزنه عشان باقي الملفات تتحقق منه
// TEAM N6L License Protection (Main File)
const N6L_UUID = "product-uuid-here";
const N6L_KEY = "N6L-XXXXX-XXXXX-XXXXX-XXXXX";
const TOKEN_SECRET = "REPLACE_WITH_A_RANDOM_SECRET";
function generateToken(secret) {
const ts = Date.now().toString();
const raw = secret + ":" + ts;
let h = 5381;
for (let i = 0; i < raw.length; i++)
h = ((h * 33) ^ raw.charCodeAt(i)) & 0x7FFFFFFF;
let h2 = 0x811c9dc5;
for (let i = raw.length - 1; i >= 0; i--)
h2 = Math.imul(h2 ^ raw.charCodeAt(i), 0x01000193) >>> 0;
return h.toString(16).padStart(8, "0")
+ (h2 >>> 0).toString(16).padStart(8, "0") + ts;
}
let _n6lToken = null;
async function n6lInit() {
const res = await fetch("https://teamn6l.com/api/verify", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ uuid: N6L_UUID, key: N6L_KEY })
});
const data = await res.json();
if (data.status === "valid") {
_n6lToken = generateToken(TOKEN_SECRET);
console.log("[TEAM N6L] License OK:", data.message);
// ══════════════════════════════════════
// ضع كودك الأصلي هنا (داخل التحقق الناجح)
// ══════════════════════════════════════
} else {
console.error("[TEAM N6L] License Failed:", data.message);
process.exit(1);
}
}
function n6lGetToken() { return _n6lToken; }
module.exports = { n6lInit, n6lGetToken, TOKEN_SECRET };
n6lInit();
ضع هذا في أي ملف ثاني. يستورد التوكن من الملف الأساسي ويتحقق منه بالهاش قبل ما يشتغل
// TEAM N6L Token Guard (Extra File)
const { n6lGetToken, TOKEN_SECRET } = require("./n6l_main");
function verifyToken(token, secret) {
if (typeof token !== "string" || token.length < 18) return false;
const ts = token.substring(16);
if (isNaN(Number(ts))) return false;
const raw = secret + ":" + ts;
let h = 5381;
for (let i = 0; i < raw.length; i++)
h = ((h * 33) ^ raw.charCodeAt(i)) & 0x7FFFFFFF;
let h2 = 0x811c9dc5;
for (let i = raw.length - 1; i >= 0; i--)
h2 = Math.imul(h2 ^ raw.charCodeAt(i), 0x01000193) >>> 0;
return token === h.toString(16).padStart(8, "0")
+ (h2 >>> 0).toString(16).padStart(8, "0") + ts;
}
async function n6lGuard(retries = 30) {
for (let i = 0; i < retries; i++) {
const tk = n6lGetToken();
if (tk && verifyToken(tk, TOKEN_SECRET)) return;
await new Promise(r => setTimeout(r, 500));
}
console.error("[TEAM N6L] Token verification failed");
process.exit(1);
}
(async () => {
await n6lGuard();
// ضع كودك هنا
})();
Python
ضع هذا في الملف الرئيسي. يتحقق من الرخصة وينشئ توكن مشفّر ويخزنه
# TEAM N6L License Protection (Main File)
import requests, time
N6L_UUID = "product-uuid-here"
N6L_KEY = "N6L-XXXXX-XXXXX-XXXXX-XXXXX"
TOKEN_SECRET = "REPLACE_WITH_A_RANDOM_SECRET"
def generate_token(secret):
ts = str(int(time.time()))
raw = secret + ":" + ts
h = 5381
for c in raw:
h = ((h * 33) ^ ord(c)) & 0x7FFFFFFF
h2 = 0x811c9dc5
for c in reversed(raw):
h2 = ((h2 ^ ord(c)) * 0x01000193) & 0xFFFFFFFF
return f"{h:08x}{h2:08x}{ts}"
_n6l_token = None
def n6l_init():
global _n6l_token
res = requests.post("https://teamn6l.com/api/verify", json={
"uuid": N6L_UUID, "key": N6L_KEY
})
data = res.json()
if data["status"] == "valid":
_n6l_token = generate_token(TOKEN_SECRET)
print(f"[TEAM N6L] License OK: {data['message']}")
# ══════════════════════════════════════
# ضع كودك الأصلي هنا (داخل التحقق الناجح)
# ══════════════════════════════════════
else:
print(f"[TEAM N6L] License Failed: {data['message']}")
exit(1)
def n6l_get_token():
return _n6l_token
n6l_init()
ضع هذا في أي ملف ثاني. يستورد التوكن ويتحقق منه بالهاش
# TEAM N6L Token Guard (Extra File)
import time
from n6l_main import n6l_get_token, TOKEN_SECRET
def verify_token(token, secret):
if not isinstance(token, str) or len(token) < 18:
return False
ts = token[16:]
if not ts.isdigit():
return False
raw = secret + ":" + ts
h = 5381
for c in raw:
h = ((h * 33) ^ ord(c)) & 0x7FFFFFFF
h2 = 0x811c9dc5
for c in reversed(raw):
h2 = ((h2 ^ ord(c)) * 0x01000193) & 0xFFFFFFFF
return token == f"{h:08x}{h2:08x}{ts}"
def n6l_guard(retries=30):
for _ in range(retries):
tk = n6l_get_token()
if tk and verify_token(tk, TOKEN_SECRET):
return
time.sleep(0.5)
print("[TEAM N6L] Token verification failed")
exit(1)
n6l_guard()
# ضع كودك هنا
| # | المنتج | IP | الحالة | الرسالة | الوقت |
|---|
شغّل البوت بالأمر: node bot.js
هذي الصور تطلع بلوحة الرخص لما تكتب /setup بالديسكورد
كم يوم العميل لازم ينتظر بين كل تغيير آيبي من الديسكورد (0 = بدون مهلة)
فقط أعضاء Discord اللي عندهم هالرتبة يقدرون يدخلون. اتركه فاضي = الكل يقدر يدخل.
POST /api/verify
{
"uuid": "product-uuid-here",
"key": "N6L-XXXXX-XXXXX-XXXXX-XXXXX"
}