-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathserver_old.js
More file actions
98 lines (91 loc) · 3.66 KB
/
server_old.js
File metadata and controls
98 lines (91 loc) · 3.66 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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
http = require('http')
fs = require('fs')
port = process.env.PORT || 3000
env={}
if(process.env.connectEnv){
try{
env=JSON.parse(decodeURIComponent(process.env.connectEnv))
}catch{
env={}
console.log('no environment keys registered')
}
//console.log('env',env)
}
server = http.createServer(function (req, res) {
res.writeHead(200, {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin':'*',
'Access-Control-Allow-Headers':'key,filename'
});
req.headers.key=req.headers.key||"NA"
req.headers.filename=req.headers.filename||"NA"
//'Content-Type': 'application/json',
//'Content-Type': 'text/plain',
//console.log(req)
if(req.url=="/favicon.ico"){
res.end()
}else{
console.log(`call from ${req.headers.host} at ${Date()}`)
//console.log(req)
let ans={
'received':Date(),
'method':req.method,
'cmd':req.url,
'ans':[],
'headers':req.headers
}
if(process.env.connectEnv){
ans.env=process.env.connectEnv.length
}else{
ans.env=false
}
if(req.method=="POST"){
ans.body=''
req.on('data', function (data) {
ans.body += data;
});
req.on('end', function () {
fs.readdir('files/'+req.headers.key,function(err,x){
if(err){
if(env[req.headers.key]){ // if key is registered
fs.mkdirSync('files/'+req.headers.key)
//fs.writeFileSync(`files/${req.headers.key}/${req.headers.filename}`,decodeURIComponent(ans.body))
}else{
console.log('unregistered key :',err,req.headers.key,req.headers.filename)
ans.ans.push(`unregistered key : ${err}, ${req.headers.key}, ${req.headers.filename}`)
}
}
fs.readdir('files/'+req.headers.key,function(err,x){
if(x){
fs.writeFileSync(`files/${req.headers.key}/${req.headers.filename}`,decodeURIComponent(ans.body))
ans.ans.push(`${req.headers.filename} saved at ${Date()}`)
}else{
console.log('unknown key, permission denied')
ans.ans.push('unknown key, permission denied')
}
res.end(JSON.stringify(ans,null,3));
})
//console.log(err,x)
})
});
}else{
if(ans.cmd=="/help"){
ans.ans=[
'/help : lists available commands',
'/files : lists files under your API key (provided as header) <-- PENDING YOUR FEEDBACK',
'/files/<filename> : returns file <-- PENDING YOUR FEEDBACK',
'/files/<filename>/<case id> : returns file row for corresponding case <-- PENDING YOUR FEEDBACK',
'/info/ : returns summary information on your files <-- PENDING YOUR FEEDBACK',
'/info/<filename> : returns detailed information on file <-- PENDING YOUR FEEDBACK',
'/transactions> : log of transactions using your key <-- PENDING YOUR FEEDBACK',
]
}
res.end(JSON.stringify(ans,null,3));
}
//res.write(ans, 'utf-8');
}
});
// listen on the port
server.listen(port, function () {
console.log('api up on port: ' + port);
});