Repository navigation
Expand file tree
/
Copy pathserver.js
More file actions
55 lines (44 loc) · 1.6 KB
/
Copy pathserver.js
File metadata and controls
55 lines (44 loc) · 1.6 KB
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
// TODO:
// • Mail feedback or create repo issue
const express = require('express')
const bodyParser = require('body-parser')
const request = require('request')
const crypto = require('crypto')
const HASH_LENGTH = 8
const app = express()
const port = 48985
const cors = require('cors')
app.use(cors())
const getDate = () => {
return new Date(Date.now()).toLocaleString("sv-en", {timeZone: 'Europe/Copenhagen'})
};
app.get('/', (req, res) => {
res.send('Hello from AutoSFC server!')
console.info(`${getDate()}. Request received! ${req}`)
})
app.listen(port, '0.0.0.0', () => {
console.info(`${getDate()}. AutoSFC server listening on port ${port}!`)
})
app.post('/', bodyParser.json(), (req, res) => {
const url = req.body.url
console.info(`${getDate()}. Request received from ${req.headers.origin}!`)
request(url, {}, async (err, response, body) => {
if (err || response.statusCode >= 400) {
console.error(response.statusCode)
console.error(err)
res.status(400).json({error: `Express: Error when loading URL: ${err}`})
} else {
console.info('Fetch worked! Data:')
let lines = body.toString().split('\n')
lines = lines.length <= 3 ? lines.join('\n') : lines.slice(0, 3).join('\n') + '\n...'
console.info(lines)
// Generate hash
const hash = crypto.hash('md5', body.toString())
console.info(hash)
res.status(200).json({
msg: `Remote file read successfully!`,
fileContent: body, hash: hash
})
}
})
})