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
|
/*
* To verify a block we simply put it on `enter`. `enter` will crawl
* the zchain that is connected to the zblock we got. If it fails for
* any reason we can check `logfollow` for that.
*/
const { spawn } = require("child_process");
const fs = require("fs");
const config = require("../../config.js");
console.log(config);
/*
* Adds a latest given zblock to a file.
*
* Returns:
* - error if error
* - success:
* - adds the entry to the file
* - returns the whole file to the client
*
*/
function addEntriesToFile(entry,res){
var data = JSON.parse(fs.readFileSync(config.pairsFile));
var duplicate_entry = 0;
data.forEach(a=>{
if ( a.zblock === entry.zblock ){
duplicate_entry = 1;
res.send({errno:"already there"});
}
});
if ( duplicate_entry === 0 ) {
var all = [entry];
for (var i = 0; i < data.length; i++){
all[i+1] = data[i];
}
var json = JSON.stringify(all);
fs.writeFile(config.blocksFile, json, 'utf8', finished);
function finished(err) {
console.log('finished writing file');
}
res.send(json);
}
}
/*
* After validation went through we examine the return code
* of the application that run the test.
*
* Returns :
* - errno on failure
* - on success we process with addEntriesToFile()
*
*/
function continuethings(exitcode,sh,res){
if (exitcode === 0){
var entry = {zblock:sh};
addEntriesToFile(entry,res);
} else {
res.send({errno:"Invalid data"});
}
}
/*
* We send the data tested and the exit code to continuethings()
*
*/
module.exports = (ch, res) => {
const command = spawn("ak-enter",["-n",ch]);
response_string = "";
command.stdout.on("data", data => {
response_string = response_string + data;
console.log(`${data}`);
});
command.stderr.on("data", data => {
console.log(`stderr: ${data}`);
});
command.on('error', (error) => {
console.log(`error: ${error.message}`);
});
command.on("close", code => {
console.log(`child process exited with code ${code}`);
continuethings(code,ch,res);
});
};
|