Réécriture complète en Typescript

This commit is contained in:
Angels-dev
2024-01-14 22:53:06 +01:00
parent 6ffa521888
commit 07d54abdba
108 changed files with 2477 additions and 1943 deletions

95
src/utils/amp.ts Normal file
View File

@@ -0,0 +1,95 @@
import axios from 'axios'
import writeEnv from './writeEnv'
export const ADSModule = {
async GetInstances(SESSIONID: string) {
return await axios.post(`${process.env.AMP_HOST}/API/ADSModule/GetInstances`, {
SESSIONID
}).then(response => {
if (!response.data.result) return { status: 'fail', data: response.data }
return { status: 'success', data: response.data }
}).catch(error => {
console.error(error)
return { status: 'error', data: error }
})
},
async ManageInstance(SESSIONID: string, InstanceId: string) {
return await axios.post(`${process.env.AMP_HOST}/API/ADSModule/ManageInstance`, {
SESSIONID,
InstanceId
}).then(response => {
console.log(response.data)
if (!response.data.result) return { status: 'fail', data: response.data }
return { status: 'success', data: response.data }
}).catch(error => {
console.error(error)
return { status: 'error', data: error }
})
},
async RestartInstance(SESSIONID: string, InstanceName: string) {
return await axios.post(`${process.env.AMP_HOST}/API/ADSModule/RestartInstance`, {
SESSIONID,
InstanceName
}).then(response => {
console.log(response.data)
//if (!response.data.success) return { status: 'fail', data: response.data }
return { status: 'success', data: response.data }
}).catch(error => {
console.error(error)
return { status: 'error', data: error }
})
},
async Servers(SESSIONID: string, InstanceId: string) {
return await axios.get(`${process.env.AMP_HOST}/API/ADSModule/Servers`, {
data: {
SESSIONID,
InstanceId
}
}).then(response => {
console.log(response)
console.log(response.data)
if (!response.data.result) return { status: 'fail', data: response.data }
return { status: 'success', data: response.data }
}).catch(error => {
console.error(error)
return { status: 'error', data: error }
})
}
}
export const Core = {
async Login(details: any) {
return await axios.post(`${process.env.AMP_HOST}/API/Core/Login`,
details
).then(response => {
if (!response.data.success) return { status: 'fail', data: response.data }
writeEnv('AMP_USERNAME', response.data.userInfo.Username)
writeEnv('AMP_SESSIONID', response.data.sessionID)
writeEnv('AMP_REMEMBER_TOKEN', response.data.rememberMeToken)
return { status: 'success', data: response.data }
}).catch(error => {
console.error(error)
return { status: 'error', data: error }
})
}
}
export async function CheckSession(SESSIONID: string) {
return await axios.post(`${process.env.AMP_HOST}/API/ADSModule/GetInstances`, {
SESSIONID
}).then(response => {
if (!response.data.result) return { status: 'fail', data: response.data }
return { status: 'success', data: response.data }
}).catch(error => {
console.error(error)
return { status: 'error', data: error }
})
}

98
src/utils/crack.ts Normal file
View File

@@ -0,0 +1,98 @@
import parseTorrent, { toMagnetURI } from 'parse-torrent'
import iconv from 'iconv-lite'
import axios from 'axios'
import path from 'path'
import fs from 'fs'
export declare class Game {
name: string
link: string
}
const headers = {
h1: {
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
"x-requested-with": "XMLHttpRequest"
},
h2: {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"accept-language": "fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7",
"cache-control": "no-cache",
"pragma": "no-cache",
"sec-ch-ua": "\"Not=A?Brand\";v=\"8\", \"Chromium\";v=\"110\", \"Opera GX\";v=\"96\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"sec-fetch-dest": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "none",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": "1",
"cookie": "online_fix_auth=gAAAAABkKM0s9WNLe_V6euTnJD7UQjppVty9B7OOyHBYOyVcbcejj8F6KveBcLxlf3mlx_vE7JEFPHlrpj-Aq6BFJyKPGzxds_wpcPV2MdXPyDGQLsz4mAvt3qgTgGg25MapWo_fSIOMiAAsF4Gv_uh4kUOiR_jgbHCZWJGPgpNQwU2HFFyvahYR6MzR7nYE9-fCmrev3obkRbro43vIVTTX4UyJMRHadrsY5Q-722TzinCZVmAuJfc=; dle_password=89465c26673e0199e5272e4730772c35; _ym_uid=1670534560361937997; _ym_d=1680394955; _ym_isad=2; dle_user_id=2619796; PHPSESSID=3v8sd281sr0n1n9f1p66q25sa2",
"Referer": "https://online-fix.me/",
"Referrer-Policy": "strict-origin-when-cross-origin"
}
}
export async function search(query: string) {
let body = await fetch("https://online-fix.me/engine/ajax/search.php", { headers: headers.h1, body: `query=${query}`, method: "POST" })
.then(response => response.arrayBuffer())
.then(arrayBuffer => { return iconv.decode(Buffer.from(arrayBuffer), 'win1251') })
.catch(console.error)
try {
if (!body) return
let matches = body.split('</div>')[1].split('<span class="seperator fastfullsearch">')[0].split('</a>')
let games = [] as Game[]
matches.pop()
matches.forEach(async match => {
let name = match.split('"><span class="searchheading">')[1].split('</span>')[0].slice(0, -8)
let link = match.split('<a href="')[1].split('"><span class="searchheading">')[0]
games.push({ name, link })
})
return games
} catch (error) { return error }
}
export async function repo(game: Game) {
let body = await fetch(game.link, { headers: headers.h2, body: null, method: "GET" })
.then(response => response.arrayBuffer())
.then(arrayBuffer => { return iconv.decode(Buffer.from(arrayBuffer), 'win1251') })
.catch(console.error)
try {
if (!body) return
let name = body.split('https://uploads.online-fix.me:2053/torrents/')[1].split('"')[0]
let url = `https://uploads.online-fix.me:2053/torrents/${name}`
return url
} catch (error) { console.error(error) }
}
export async function torrent(url: string) {
let response = await fetch(url, { headers: headers.h2, body: null, method: "GET" }).catch(console.error)
try {
if (!response) return
let body = await response.text()
let file = body.split('<a href="')[2].split('">')[0]
return file
} catch (error) { console.error(error) }
}
export async function download(url: string, file: string) {
let filePath = path.join(__dirname, '../../public/cracks/', file)
let writer = fs.createWriteStream(filePath)
try {
await axios({ url: url + file, method: 'GET', responseType: 'stream', headers: headers.h2 }).then(response => {
return new Promise((resolve, reject) => {
response.data.pipe(writer)
let error = null as unknown as Error
writer.on('error', err => { error = err; writer.close(); reject(err) })
writer.on('close', () => { if (!error) resolve(true) })
})
}).catch(console.error)
return filePath
} catch (error) { console.error(error) }
}
export async function magnet(filePath: string) {
let torrentData = parseTorrent(fs.readFileSync(filePath))
let uri = toMagnetURI(torrentData)
return uri
}

10
src/utils/getUptime.ts Executable file
View File

@@ -0,0 +1,10 @@
import { Client } from 'discord.js'
export default function (uptime: Client["uptime"]) {
if (!uptime) return '0J, 0H, 0M et 0S'
let days = Math.floor(uptime / 86400000)
let hours = Math.floor(uptime / 3600000) % 24
let minutes = Math.floor(uptime / 60000) % 60
let seconds = Math.floor(uptime / 1000) % 60
return `${days}J, ${hours}H, ${minutes}M et ${seconds}S`
}

7
src/utils/writeEnv.ts Executable file
View File

@@ -0,0 +1,7 @@
import fs from 'fs'
export default ((variable: string, value: string) => {
let parsedFile = fs.readFileSync('./.env', 'utf8')
parsedFile = parsedFile.replace(new RegExp(`${variable} = .*`, 'g'), `${variable} = ${value}`)
fs.writeFileSync('./.env', parsedFile)
})