File size: 9,161 Bytes
70335fc 6f115e7 70335fc cc43160 1c2f245 1002d9f f836f2f ff5dd77 7864014 2a1da11 0073410 a655a6b ff5dd77 9d7429f 7864014 9d7429f ea9ab95 8e9d6ef 4acf951 ea9ab95 aaeefe8 03eff68 dd7e9fe 03eff68 1736687 b749907 e9a4054 f38b6df 4ae50c2 43320de 7008159 4e503c3 ded0ba9 e67e90e ad71933 1122fa5 7864014 1122fa5 c7e6d6e ff5dd77 ba1757e 8699696 1c8c6b7 1d004a9 e28d3f7 091ea21 43cc2ca 9565290 1aa6951 ad61b3a 7008159 4e503c3 ad61b3a f0d7603 97876c6 8951429 7f65621 b33c5c1 282c249 f0d7603 f7c9792 b9de230 c58623a f0d7603 fec9be0 f0d7603 f7c9792 74a71a3 30aadc4 74a71a3 fe292e1 8699696 73b11fb be1f5f7 c388a7a 8699696 2a61428 cada965 8699696 258ce6a dc73788 258ce6a 27062e0 258ce6a dc73788 8699696 73b11fb 0114ae9 9d7429f ff5dd77 0cb9b79 0f816c4 27062e0 0f816c4 0cb9b79 9d7429f 0cb9b79 9d7429f 7d62f05 9d7429f 4067ca0 ba1757e ea9ab95 e67e90e dc7aadc 90e4651 dc7aadc 1c2f245 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 |
/*
Credits @xpushz on telegram
Copyright 2017-2025 (c) Randy W @xtdevs, @xtsea on telegram
from : https://github.com/TeamKillerX
Channel : @RendyProjects
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import express from 'express';
const app = express();
import * as swaggerUi from 'swagger-ui-express';
import * as cheerio from 'cheerio';
import * as lifestyle from './startup/lifestyle.js';
import * as uuid from 'uuid';
import { Database } from './database/database.js'
import { Readable } from "stream";
import { randomBytes } from "crypto";
import { AkenoaiJs } from "akenoaijs";
import {
CheckMilWare,
authenticateApiKey,
apiLimiter
} from './middleware/midware.js';
import { setup, serve } from './swagger.js';
import { swaggerOptions } from './settingOptions.js';
import path from "path";
import sharp from "sharp";
import bodyParser from 'body-parser';
import swaggerJsDoc from 'swagger-jsdoc';
// routes
import { GempaRoutes } from './plugins/gempa.js';
import { FluxRoutes } from './plugins/fluxai.js';
import { GptRoutes } from './plugins/gptold.js';
import { HentaiRoutes } from './plugins/hentai.js';
import { TebakRoutes } from './plugins/tebak.js';
import { CopilotRoutes } from './plugins/copilot.js';
import { CarbonRoutes } from './plugins/carbon.js';
import { UnblockIpRoutes } from './plugins/unblockip.js';
import { AntibanRoutes } from './plugins/antiban.js';
import { AllDlRoutes } from './plugins/alldownloader.js';
import { GeminiRoutes } from './routes/googleGemini.js';
const __dirname = path.resolve();
const CheckMilWares = new CheckMilWare();
const myUUID = uuid.v4();
function _0x8e5f(){const _0x47a684=['21328MwnItu','akeno_','2HGYaRq','7539MDsoUT','239924nJVgmv','67736vpCrKx','7007630HuiUXg','620826tHyNgs','978pHDPNY','153GWQrSV','1344810LrohVJ'];_0x8e5f=function(){return _0x47a684;};return _0x8e5f();}(function(_0x2cc85e,_0x5b8aeb){const _0x30a48=_0x2eb9,_0x508eac=_0x2cc85e();while(!![]){try{const _0x401ae4=parseInt(_0x30a48(0x1b1))/0x1*(parseInt(_0x30a48(0x1b3))/0x2)+-parseInt(_0x30a48(0x1b6))/0x3+parseInt(_0x30a48(0x1af))/0x4+-parseInt(_0x30a48(0x1b9))/0x5+-parseInt(_0x30a48(0x1b7))/0x6*(parseInt(_0x30a48(0x1b2))/0x7)+-parseInt(_0x30a48(0x1b4))/0x8*(parseInt(_0x30a48(0x1b8))/0x9)+parseInt(_0x30a48(0x1b5))/0xa;if(_0x401ae4===_0x5b8aeb)break;else _0x508eac['push'](_0x508eac['shift']());}catch(_0x43caee){_0x508eac['push'](_0x508eac['shift']());}}}(_0x8e5f,0x24c61));function _0x2eb9(_0x71c9ef,_0x40f517){const _0x8e5f80=_0x8e5f();return _0x2eb9=function(_0x2eb9aa,_0xe433fa){_0x2eb9aa=_0x2eb9aa-0x1af;let _0x4300be=_0x8e5f80[_0x2eb9aa];return _0x4300be;},_0x2eb9(_0x71c9ef,_0x40f517);}function generateAkenoKey(){const _0x5cad5d=_0x2eb9,_0x399302=randomBytes(0x18)['toString']('base64')['replace'](/[^a-zA-Z0-9]/g,'');return _0x5cad5d(0x1b0)+_0x399302;}
app.use(async (req, res, next) => {
await CheckMilWares.handle(req, res, next);
});
app.use("/api/v1/", apiLimiter);
app.disable("x-powered-by");
app.disable("link")
app.use(bodyParser.json());
app.use(
bodyParser.urlencoded({
extended: true,
})
);
app.use(express.static('public'));
// routes
app.use(GeminiRoutes);
app.use(FluxRoutes);
app.use(GptRoutes);
app.use(HentaiRoutes);
app.use(TebakRoutes);
app.use(GempaRoutes);
app.use(CopilotRoutes);
app.use(UnblockIpRoutes);
app.use(CarbonRoutes);
app.use(AntibanRoutes);
app.use(AllDlRoutes);
const specs = swaggerJsDoc(swaggerOptions);
const AllJsonReques = {
"AkenoXAPI": {
"akenox_date": new Date(),
"developer": "@xpushz",
"language": "JS && Python",
"cybersecurity": true,
"source_link": "https://github.com/TeamKillerX/akenoai-lib",
"ai": {
"endpoint": "ai/google-gemini",
"params": "query",
"method": "GET",
"headers": "x-api-key",
"part2": {
"endpoint": "ai/copilot2-trip",
"params": "q",
"method": "GET",
"headers": "x-api-key",
},
"part3": {
"endpoint": "ai/gpt-old",
"params": "query",
"method": "GET",
"headers": "x-api-key",
},
},
"flux": {
"endpoint": "flux/flux-ai",
"body": "query",
"method": "POST",
"headers": "x-api-key",
},
},
}
app.get("/api/v1/json/all", async (req, res) => {
res.json(AllJsonReques);
});
app.get("/test", async (req, res) => {
const api = new AkenoaiJs({
key: "akeno_OSrXhljIomunACd5JY18jFIeIuuB6Pdx"
});
const response = await api.RandyDev("json/all", false, true);
res.json(response);
});
app.delete("/api/v1/delete-key", async (req, res) => {
const dbClient = new Database("AkenoXJs");
const collection = dbClient.collection("api_keys");
const apiKey = req.query.api_key;
if (!apiKey) {
return res.status(400).json({ error: "Missing 'api_key' parameter" });
}
try {
const DocsKey = await collection.deleteOne({ key: apiKey });
if (DocsKey.deletedCount > 0) {
res.json({ message: "API key has been successfully deleted" });
} else {
res.status(404).json({ message: "API key not found" });
}
} catch (err) {
res.status(500).json({ error: `Key deletion failed: ${err.message}` });
}
});
app.get("/api/v1/test", authenticateApiKey, apiLimiter, async (req, res) => {
res.json({ message: "access key" });
})
app.get("/runtime", async (req, res) => {
res.send("Running lifetime");
})
app.post("/api/v1/revoked-key", async (req, res) => {
const dbClient = new Database("AkenoXJs");
const collection = dbClient.collection("api_keys");
try {
const userIdString = req.query.user_id;
const userIdNumber = Number(userIdString);
if (isNaN(userIdNumber)) {
return res.status(400).json({ error: "Invalid or missing user_id" });
}
const existingUser = await collection.findOne({ owner: userIdNumber });
if (!existingUser) {
return res.status(404).json({ error: "API key not found" });
}
const newKey = generateAkenoKey();
const result = await collection.updateOne(
{ owner: userIdNumber },
{ $set: { key: newKey, createdAt: new Date() } },
{ upsert: false }
);
if (result.modifiedCount > 0) {
res.json({
message: "API key successfully revoked and regenerated",
apiKey: newKey,
createdAt: new Date(),
owner: userIdNumber
});
} else {
res.status(500).json({ error: "Failed to update API key" });
}
} catch (err) {
res.status(500).json({ error: `Key generation failed: ${err.message}` });
}
});
app.post('/api/v1/generate-key', async (req, res) => {
const dbClient = new Database("AkenoXJs");
const collection = dbClient.collection('api_keys');
try {
const newKey = generateAkenoKey();
const userIdString = req.query.user_id;
const userIdNumber = Number(userIdString);
const email = req.query.email;
if (isNaN(userIdNumber)) {
return res.status(400).json({ error: "Invalid or missing user_id" });
}
const existingUser = await collection.findOne({ owner: userIdNumber });
if (existingUser) {
return res.status(200).json({
apiKey: existingUser.key,
createdAt: existingUser.createdAt,
owner: existingUser.owner
});
}
const userDocument = {
key: newKey,
createdAt: new Date(),
owner: userIdNumber
};
if (email) {
userDocument.email = email;
}
await collection.insertOne(userDocument);
res.json({ apiKey: newKey });
} catch (err) {
res.status(500).json({ error: `Key generation failed: ${err.message}` });
}
});
app.get("/policy", ( req, res ) => {
res.sendFile(path.join(__dirname + "/public/policy.html"));
});
app.get("/scraper/read", ( req, res ) => {
res.sendFile(path.join(__dirname + "/public/docs.html"));
});
app.use(
'/docs',
serve,
setup(specs, {
customCss: `
.swagger-ui .topbar { display: none; }
.swagger-ui .opblock .opblock-summary-path {
display: inline-block;
word-break: break-word;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 100%;
}
`,
customCssUrl: "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.3.0/swagger-ui.min.css",
customSiteTitle: 'AkenoXJs'
})
);
app.get('/', (req, res) => {
res.redirect('https://t.me/RendyProjects');
});
lifestyle.startServer(app); |