Rifd commited on
Commit
cd525fd
·
1 Parent(s): 24ff5fe
Files changed (2) hide show
  1. index.js +6 -6
  2. lib/crypto.js +6 -4
index.js CHANGED
@@ -1,4 +1,5 @@
1
  require('./prototype.js')
 
2
  const express = require('express');
3
  const http = require('http');
4
  const axios = require("axios")
@@ -8,12 +9,11 @@ const path = require('path')
8
  const fs = require('fs')
9
  const FormData = require("form-data")
10
  const yts = require('yt-search')
11
-
12
  const util = require("util")
13
- const { exec } = require('child_process')
14
  const _exec = util.promisify(exec);
15
 
16
- const PORT = process.env.PORT || 7860;
17
  const PASSWORD = process.env.PASSWORD
18
  const { decrypt } = require('./lib/crypto.js')
19
  function getClientIP(req) {
@@ -194,16 +194,16 @@ const axiosHandler = async (req, res) => {
194
  app.get("/api/forward/youtube/get", async (req, res) => {
195
  try {
196
 
197
- const v = decode(req.query.v)
198
  if (!v) return res.status(400).send("v is required");
199
 
200
  const type = req.query.type;
201
  if (!type) return res.json("type is required!");
202
 
203
- const token = decode(req.query.token);
204
  if (!token) return res.status(403).end();
205
 
206
- let Token = token.un("utf16le").un("base64");
207
  if (!["mp3", "mp4"].includes(type)) {
208
  return res.json({
209
  status: false,
 
1
  require('./prototype.js')
2
+ require('dotenv').config();
3
  const express = require('express');
4
  const http = require('http');
5
  const axios = require("axios")
 
9
  const fs = require('fs')
10
  const FormData = require("form-data")
11
  const yts = require('yt-search')
12
+ const { exec } = require("child_process")
13
  const util = require("util")
 
14
  const _exec = util.promisify(exec);
15
 
16
+ const PORT = process.env.PORT || 22222;
17
  const PASSWORD = process.env.PASSWORD
18
  const { decrypt } = require('./lib/crypto.js')
19
  function getClientIP(req) {
 
194
  app.get("/api/forward/youtube/get", async (req, res) => {
195
  try {
196
 
197
+ const v = decrypt(req.query.v)
198
  if (!v) return res.status(400).send("v is required");
199
 
200
  const type = req.query.type;
201
  if (!type) return res.json("type is required!");
202
 
203
+ const token = decrypt(req.query.token);
204
  if (!token) return res.status(403).end();
205
 
206
+ let Token = await fetch(token).then(a => a.text()).then(a => a.un("utf16le").un("base64"))
207
  if (!["mp3", "mp4"].includes(type)) {
208
  return res.json({
209
  status: false,
lib/crypto.js CHANGED
@@ -1,6 +1,7 @@
1
- const crypto = require('crypto')
 
 
2
 
3
- const PASSWORD = process.env.PASSWORD
4
  const KEY = crypto.createHash('sha256').update(PASSWORD).digest();
5
  const IV_LENGTH = 16;
6
 
@@ -14,14 +15,15 @@ function encrypt(text) {
14
 
15
  function decrypt(encrypted) {
16
  try {
17
- const [ivBase64, encryptedData] = encrypted.split(':');
 
18
  const iv = Buffer.from(ivBase64, 'base64');
19
  const decipher = crypto.createDecipheriv('aes-256-cbc', KEY, iv);
20
  let decrypted = decipher.update(encryptedData, 'base64', 'utf8');
21
  decrypted += decipher.final('utf8');
22
  return decrypted;
23
  } catch (err) {
24
- console.error("❌ Gagal mendekripsi: kemungkinan password salah atau data rusak.");
25
  return null;
26
  }
27
  }
 
1
+ const crypto = require('crypto');
2
+
3
+ let PASSWORD = process.env.PASSWORD
4
 
 
5
  const KEY = crypto.createHash('sha256').update(PASSWORD).digest();
6
  const IV_LENGTH = 16;
7
 
 
15
 
16
  function decrypt(encrypted) {
17
  try {
18
+ // console.log(PASSWORD, encrypted)
19
+ const [ivBase64, encryptedData] = encrypted.replace(/ /g, '+').split(':');
20
  const iv = Buffer.from(ivBase64, 'base64');
21
  const decipher = crypto.createDecipheriv('aes-256-cbc', KEY, iv);
22
  let decrypted = decipher.update(encryptedData, 'base64', 'utf8');
23
  decrypted += decipher.final('utf8');
24
  return decrypted;
25
  } catch (err) {
26
+ console.error("❌ Gagal mendekripsi: kemungkinan password salah atau data rusak.", err);
27
  return null;
28
  }
29
  }