mirror of
https://github.com/saxpjexck/lsix.git
synced 2025-10-04 14:12:40 +08:00
3.0
This commit is contained in:
292
static/js/handler.js
Normal file
292
static/js/handler.js
Normal file
@@ -0,0 +1,292 @@
|
||||
function copyToClipboard(button) {
|
||||
const code = button.parentElement;
|
||||
const clone = code.cloneNode(true);
|
||||
const btn = clone.querySelector("button");
|
||||
if (btn) btn.remove();
|
||||
const text = clone.textContent.trim();
|
||||
|
||||
if (navigator.clipboard && navigator.clipboard.writeText) {
|
||||
navigator.clipboard
|
||||
.writeText(text)
|
||||
.then(() => {
|
||||
button.textContent = "Copyed";
|
||||
setTimeout(() => (button.textContent = "Copy"), 2000);
|
||||
})
|
||||
.catch(() => {
|
||||
const textarea = document.createElement("textarea");
|
||||
textarea.value = text;
|
||||
textarea.style.position = "fixed";
|
||||
textarea.style.opacity = "0";
|
||||
document.body.appendChild(textarea);
|
||||
textarea.focus();
|
||||
textarea.select();
|
||||
try {
|
||||
const success = document.execCommand("copy");
|
||||
button.textContent = success ? "Copyed" : "Copy failed";
|
||||
} catch (e) {
|
||||
button.textContent = "Copy failed";
|
||||
}
|
||||
setTimeout(() => (button.textContent = "Copy"), 2000);
|
||||
document.body.removeChild(textarea);
|
||||
});
|
||||
} else {
|
||||
const textarea = document.createElement("textarea");
|
||||
textarea.value = text;
|
||||
textarea.style.position = "fixed";
|
||||
textarea.style.opacity = "0";
|
||||
document.body.appendChild(textarea);
|
||||
textarea.focus();
|
||||
textarea.select();
|
||||
try {
|
||||
const success = document.execCommand("copy");
|
||||
button.textContent = success ? "Copyed" : "Copy failed";
|
||||
} catch (e) {
|
||||
button.textContent = "Copy failed";
|
||||
}
|
||||
setTimeout(() => (button.textContent = "Copy"), 2000);
|
||||
document.body.removeChild(textarea);
|
||||
}
|
||||
}
|
||||
|
||||
function filterCards() {
|
||||
const keyword = document
|
||||
.getElementById("search-box")
|
||||
.value.toLowerCase();
|
||||
const cards = document.querySelectorAll(".ides-languages-product-card");
|
||||
|
||||
cards.forEach((card) => {
|
||||
const textContent = card.textContent.toLowerCase();
|
||||
if (textContent.includes(keyword)) {
|
||||
card.style.display = "";
|
||||
} else {
|
||||
card.style.display = "none";
|
||||
}
|
||||
});
|
||||
}
|
||||
window.addEventListener("DOMContentLoaded", () => {
|
||||
if (localStorage.getItem("licenseInfo") === null) {
|
||||
document.getElementById("mask").style.display = "block";
|
||||
document.getElementById("form").style.display = "block";
|
||||
}
|
||||
});
|
||||
window.submitLicenseInfo = function () {
|
||||
let licenseeName = document.getElementById("licenseeName").value;
|
||||
let assigneeName = document.getElementById("assigneeName").value;
|
||||
let expiryDate = document.getElementById("expiryDate").value;
|
||||
let licenseInfo = {
|
||||
licenseeName: licenseeName,
|
||||
assigneeName: assigneeName,
|
||||
expiryDate: expiryDate,
|
||||
};
|
||||
localStorage.setItem("licenseInfo", JSON.stringify(licenseInfo));
|
||||
document.getElementById("mask").style.display = "none";
|
||||
document.getElementById("form").style.display = "none";
|
||||
};
|
||||
window.showLicenseForm = function () {
|
||||
let licenseInfo = localStorage.getItem("licenseInfo");
|
||||
if (licenseInfo !== null) {
|
||||
licenseInfo = JSON.parse(licenseInfo);
|
||||
document.getElementById("licenseeName").value =
|
||||
licenseInfo.licenseeName;
|
||||
document.getElementById("assigneeName").value =
|
||||
licenseInfo.assigneeName;
|
||||
document.getElementById("expiryDate").value = licenseInfo.expiryDate;
|
||||
} else {
|
||||
document.getElementById("licenseeName").value = "{{.licenseeName}}";
|
||||
document.getElementById("assigneeName").value = "{{.assigneeName}}";
|
||||
document.getElementById("expiryDate").value = "{{.expiryDate}}";
|
||||
}
|
||||
document.getElementById("mask").style.display = "block";
|
||||
document.getElementById("form").style.display = "block";
|
||||
};
|
||||
function showInfo() {
|
||||
document.getElementById("mask-info").style.display = "block";
|
||||
document.getElementById("form-info").style.display = "block";
|
||||
}
|
||||
function closeInfo() {
|
||||
document.getElementById("mask-info").style.display = "none";
|
||||
document.getElementById("form-info").style.display = "none";
|
||||
}
|
||||
function fallbackCopyText(text, target) {
|
||||
const textarea = document.createElement("textarea");
|
||||
textarea.value = text;
|
||||
textarea.style.position = "fixed";
|
||||
textarea.style.opacity = "0";
|
||||
document.body.appendChild(textarea);
|
||||
textarea.focus();
|
||||
textarea.select();
|
||||
|
||||
try {
|
||||
const successful = document.execCommand("copy");
|
||||
if (successful) {
|
||||
showTooltip(target, translations[currentLang].licenseCopied);
|
||||
} else {
|
||||
showTooltip(target, translations[currentLang].copyFailed);
|
||||
}
|
||||
} catch (err) {
|
||||
showTooltip(target, translations[currentLang].copyFailed + ": " + err);
|
||||
}
|
||||
|
||||
document.body.removeChild(textarea);
|
||||
}
|
||||
|
||||
function showTooltip(target, message) {
|
||||
const tooltip = document.createElement("div");
|
||||
tooltip.textContent = message;
|
||||
tooltip.style.position = "absolute";
|
||||
tooltip.style.backgroundColor = "#333";
|
||||
tooltip.style.color = "#fff";
|
||||
tooltip.style.padding = "4px 8px";
|
||||
tooltip.style.borderRadius = "4px";
|
||||
tooltip.style.fontSize = "12px";
|
||||
tooltip.style.zIndex = "1000";
|
||||
tooltip.style.whiteSpace = "nowrap";
|
||||
tooltip.style.opacity = "0";
|
||||
tooltip.style.transition = "opacity 0.3s ease";
|
||||
|
||||
document.body.appendChild(tooltip);
|
||||
|
||||
const rect = target.getBoundingClientRect();
|
||||
|
||||
const targetId = target.dataset.id || Math.random().toString(36).substr(2, 9);
|
||||
target.dataset.id = targetId;
|
||||
|
||||
const existingTooltips = document.querySelectorAll(`.tooltip[data-target-id="${targetId}"]`);
|
||||
const offset = existingTooltips.length * 30;
|
||||
|
||||
tooltip.style.left = `${rect.left + rect.width / 2}px`;
|
||||
tooltip.style.top = `${rect.top + window.scrollY - 30 - offset}px`;
|
||||
tooltip.classList.add("tooltip");
|
||||
tooltip.setAttribute("data-target-id", targetId);
|
||||
tooltip.style.opacity = "1";
|
||||
|
||||
setTimeout(() => {
|
||||
tooltip.style.opacity = "0";
|
||||
setTimeout(() => tooltip.remove(), 300);
|
||||
}, 1500);
|
||||
}
|
||||
window.clickCard = async function (e) {
|
||||
while (localStorage.getItem("licenseInfo") === null) {
|
||||
document.getElementById("mask").style.display = "block";
|
||||
document.getElementById("form").style.display = "block";
|
||||
await new Promise((r) => setTimeout(r, 1000));
|
||||
}
|
||||
|
||||
const licenseInfo = JSON.parse(localStorage.getItem("licenseInfo"));
|
||||
const card = e.closest(".card");
|
||||
const type = card.dataset.type;
|
||||
const app = card.dataset.product;
|
||||
const codes = card.dataset.productCodes.split(",");
|
||||
const products = codes.map((code) => ({
|
||||
code,
|
||||
fallbackDate: licenseInfo.expiryDate,
|
||||
paidUpTo: licenseInfo.expiryDate,
|
||||
}));
|
||||
|
||||
const requestData = {
|
||||
app: app,
|
||||
status: "Cracked",
|
||||
license: {
|
||||
licenseeName: licenseInfo.licenseeName,
|
||||
assigneeName: licenseInfo.assigneeName,
|
||||
assigneeEmail: "",
|
||||
licenseRestriction: "",
|
||||
checkConcurrentUse: false,
|
||||
products: products,
|
||||
metadata: "0120230102PPAA013009",
|
||||
hash: "41472961/0:1563609451",
|
||||
gracePeriodDays: 7,
|
||||
autoProlongated: true,
|
||||
isAutoProlongated: true,
|
||||
}
|
||||
};
|
||||
let resp = await fetch("/generateLicense", {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify(requestData.license),
|
||||
}).then((response) => response.json());
|
||||
|
||||
if (resp.license) {
|
||||
const card = e.closest(".card");
|
||||
const licenseElement = card.querySelector(".license-key");
|
||||
licenseElement.textContent = resp.license;
|
||||
|
||||
const licenseKey = resp.license.trim();
|
||||
if (navigator.clipboard && navigator.clipboard.writeText) {
|
||||
navigator.clipboard
|
||||
.writeText(licenseKey)
|
||||
.then(() => {
|
||||
showTooltip(card, translations[currentLang].licenseCopied);
|
||||
})
|
||||
.catch(() => {
|
||||
fallbackCopyText(licenseKey, card);
|
||||
});
|
||||
} else {
|
||||
fallbackCopyText(licenseKey, card);
|
||||
}
|
||||
} else {
|
||||
console.error("No license found in response", resp);
|
||||
}
|
||||
|
||||
if (type == 'plugins') {
|
||||
return;
|
||||
}
|
||||
fetch("/crack", {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify(requestData),
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
if (data.msg === "CrackedWithoutBackup") {
|
||||
const ribbon = card.querySelector(".ribbon-wrapper");
|
||||
if (ribbon) ribbon.classList.remove("hidden");
|
||||
} else if (data.msg === "Cracked") {
|
||||
const ribbon = card.querySelector(".ribbon-wrapper");
|
||||
if (ribbon) ribbon.classList.remove("hidden");
|
||||
showTooltip(card, translations[currentLang].crackedMsg);
|
||||
} else {
|
||||
showTooltip(card, translations[currentLang].crackedFailed + ": " + data.msg);
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
showTooltip(card, translations[currentLang].requestFailed + ": " + err);
|
||||
});
|
||||
};
|
||||
|
||||
function uncrackAgent(e, el) {
|
||||
e.stopPropagation();
|
||||
const card = el.closest(".card");
|
||||
const app = card.dataset.product;
|
||||
|
||||
const requestData = {
|
||||
app: app,
|
||||
status: "UnCracked",
|
||||
};
|
||||
|
||||
const ribbon = card.querySelector(".ribbon-wrapper");
|
||||
|
||||
fetch("/crack", {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
body: JSON.stringify(requestData)
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
if (data.msg === "UnCracked") {
|
||||
if (ribbon) ribbon.classList.add("hidden");
|
||||
showTooltip(card, translations[currentLang].recoverMsg);
|
||||
} else {
|
||||
showTooltip(card, translations[currentLang].recoverFailed + ": " + data.msg);
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
showTooltip(card, translations[currentLang].requestFailed + ": " + err);
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user