Create index.js
Browse files
index.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const node = {}
|
| 2 |
+
const modules = 'child_process|fs|os|process|timers|util'
|
| 3 |
+
for (let m of modules.split`|`) node[m] = require(`node:${m}`)
|
| 4 |
+
|
| 5 |
+
const formatBytes = require('bytes'),
|
| 6 |
+
express = require('express'),
|
| 7 |
+
morgan = require('morgan'),
|
| 8 |
+
serveIndex = require('serve-index')
|
| 9 |
+
|
| 10 |
+
const limitSize = '69mb',
|
| 11 |
+
tmpDir = node.os.tmpdir(),
|
| 12 |
+
{ env } = node.process,
|
| 13 |
+
PORT = env.SERVER_PORT || env.PORT || 7860
|
| 14 |
+
|
| 15 |
+
const logger = (...args) => console.log(
|
| 16 |
+
new Date().toLocaleTimeString(
|
| 17 |
+
'fr', { timeZone: 'Asia/Jakarta' }
|
| 18 |
+
),
|
| 19 |
+
...args
|
| 20 |
+
)
|
| 21 |
+
|
| 22 |
+
const execPromise = node.util.promisify(
|
| 23 |
+
node.child_process.exec
|
| 24 |
+
)
|
| 25 |
+
|
| 26 |
+
express()
|
| 27 |
+
.enable('trust proxy')
|
| 28 |
+
.set('json spaces', 2)
|
| 29 |
+
.use(express.json({ limit: limitSize }))
|
| 30 |
+
.use(express.urlencoded({ extended: true, limit: limitSize }))
|
| 31 |
+
.use(morgan('dev'))
|
| 32 |
+
.use(
|
| 33 |
+
tmpDir,
|
| 34 |
+
express.static(tmpDir),
|
| 35 |
+
serveIndex(tmpDir, { hidden: true, icons: true })
|
| 36 |
+
)
|
| 37 |
+
.all('/', (_, res) => res.json({ msg: 'goodbye world.' }))
|
| 38 |
+
.post('/eval', async (req, res) => {
|
| 39 |
+
let code = req.body.code, o
|
| 40 |
+
code = `(async function MengEval() { ${code} })()`
|
| 41 |
+
try { o = await eval(code) }
|
| 42 |
+
catch (e) { o = e }
|
| 43 |
+
finally { res.send(node.util.format(o)) }
|
| 44 |
+
})
|
| 45 |
+
.listen(PORT, logger)
|