import express from 'express' import AdmZip from 'adm-zip' import { runPrepQuery, numRows } from './Utility/db.js' const app = express() const port = 3000 import { json2xml } from "xml-js"; import { BlobReader, BlobWriter, TextReader, TextWriter, ZipReader, ZipWriter } from "@zip.js/zip.js"; const saveFile = { settings: { global: { AuthKey: "NONE", AutoConnect: true, AutoReconnect: true, HostAddress: "linkcloud.drunken.games", HostPort: 5050, ProcessShouts: true, TCPTimeout: 2, }, }, }; const options = { compact: true, ignoreComment: true, spaces: 4, }; app.get('/addons/windower/retail/:id', async (req, res) => { saveFile.settings.global.AuthKey = await getTokenFromId(req.params.id); const xmlString = `\n${json2xml(saveFile, options)}`; const existingZip = new AdmZip('./resources/addon/LinkCloud.zip'); existingZip.addFile("LinkCloud/data/settings.xml", Buffer.from(xmlString, "utf8"), "Auto Generated"); const data = existingZip.toBuffer() res.set('Content-Type', 'application/zip'); res.set('Content-Disposition', 'attachment; filename=LinkCloud_Latest.zip'); res.set('Content-Length', data.length); res.send(data); }) export const listen = () => { app.listen(port, () => { console.log(`Example app listening on port ${port}`) }) } const getTokenFromId = (id) => { return new Promise((resolve, reject) => { runPrepQuery("SELECT * FROM users WHERE userId = ? LIMIT 0,1", [id], (r,f,e) => { if(!e) { if(numRows(r)) { resolve(r[0].authToken) } else { resolve(false) } } else { resolve(false) } }) }) }