mirror of
https://github.com/Dokploy/dokploy.git
synced 2026-06-18 21:55:24 +02:00
67 lines
1.5 KiB
TypeScript
67 lines
1.5 KiB
TypeScript
import { serve } from "@hono/node-server";
|
|
import { config } from "dotenv";
|
|
import { Hono } from "hono";
|
|
import { cors } from "hono/cors";
|
|
import { validateLemonSqueezyLicense } from "./utils";
|
|
|
|
config();
|
|
|
|
const app = new Hono();
|
|
|
|
app.use(
|
|
"/*",
|
|
cors({
|
|
origin: ["http://localhost:3000", "http://localhost:3001"], // Ajusta esto a los orígenes de tu aplicación Next.js
|
|
allowMethods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
|
|
allowHeaders: ["Content-Type", "Authorization"],
|
|
exposeHeaders: ["Content-Length", "X-Kuma-Revision"],
|
|
maxAge: 600,
|
|
credentials: true,
|
|
}),
|
|
);
|
|
|
|
export const LEMON_SQUEEZY_API_KEY = process.env.LEMON_SQUEEZY_API_KEY;
|
|
export const LEMON_SQUEEZY_STORE_ID = process.env.LEMON_SQUEEZY_STORE_ID;
|
|
|
|
app.get("/v1/health", (c) => {
|
|
return c.text("Hello Hono!");
|
|
});
|
|
|
|
app.post("/v1/validate-license", async (c) => {
|
|
const { licenseKey } = await c.req.json();
|
|
|
|
if (!licenseKey) {
|
|
return c.json({ error: "License key is required" }, 400);
|
|
}
|
|
|
|
try {
|
|
const licenseValidation = await validateLemonSqueezyLicense(licenseKey);
|
|
|
|
if (licenseValidation.valid) {
|
|
return c.json({
|
|
valid: true,
|
|
message: "License is valid",
|
|
metadata: licenseValidation.meta,
|
|
});
|
|
}
|
|
return c.json(
|
|
{
|
|
valid: false,
|
|
message: licenseValidation.error || "Invalid license",
|
|
},
|
|
400,
|
|
);
|
|
} catch (error) {
|
|
console.error("Error during license validation:", error);
|
|
return c.json({ error: "Internal server error" }, 500);
|
|
}
|
|
});
|
|
|
|
const port = 4000;
|
|
console.log(`Server is running on port ${port}`);
|
|
|
|
serve({
|
|
fetch: app.fetch,
|
|
port,
|
|
});
|