-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
69 lines (58 loc) · 1.74 KB
/
app.js
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
var koa = require('koa')
// var co = require('co')
var bodyParser = require('koa-bodyparser')
var compress = require('koa-compress')
var router = require('koa-router')()
var _ = require('lodash')
var yaml = require('js-yaml')
var fs = require('fs')
var exec = require('co-exec')
var request = require('request-promise')
var req = require('request')
var app = koa()
var defaults = {
options: {
debug: false,
compress: true
},
headers: {
'Access-Control-Allow-Origin': "*",
'Content-Type': 'text/html'
},
process_before: '',
run: '',
process_after: ''
}
try {
var rules = yaml.safeLoad(fs.readFileSync('./config.yaml', 'utf8'))
_.forEach(rules, (v, path) => {
router.all(path, function*(next) {
const {options: {debug}, headers, run, process_before, process_after } = Object.assign({}, defaults, v)
console.log(path);
this.set(headers)
if (debug) console.log('this is set to: ', this)
if (debug && process_before) console.log('Process before: ', process_before)
process_before && eval(process_before.trim())
if (debug && run) console.log('Shell code: ', eval('`' + run + '`'))
if (run) this.body = yield exec(eval('`' + run + '`'))
if (debug) console.log('Process after: ', process_after)
process_after && eval(process_after)
console.log (this.response.status + "\t" + this.request.method + "\t" + path)
yield next
})
})
} catch (e) {
console.log(e)
}
app
.use(function*(next){
this.set({'Access-Control-Allow-Origin': "*", "Access-Control-Allow-Headers": "Content-Type"})
yield next
})
.use(bodyParser())
.use(router.routes())
.use(router.allowedMethods())
.use(compress({
flush: require('zlib').Z_SYNC_FLUSH
}))
app.listen(3337)