forked from FISCO-BCOS/FISCO-BCOS
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinit.js
More file actions
130 lines (110 loc) · 4.45 KB
/
init.js
File metadata and controls
130 lines (110 loc) · 4.45 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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
var fs=require('fs');
var execSync =require('child_process').execSync;
var options = process.argv;
if( options.length < 3 )
{
console.log('Usage: node init.js node0.sample node1.sample node2.sample... ');
process.exit(0);
}
if( options.length > 6 )
{
console.log('Max Four Node! ');
process.exit(0);
}
var nodeconfiglength=0;
var nodeconfig=[];
while(nodeconfig.length<options.length-2 ){
var node=JSON.parse(fs.readFileSync(options[2+nodeconfig.length], 'utf-8'));
nodeconfig.push(node);
}
console.log("开始检查配置...");
var check=true;
for( var i=0;i<nodeconfig.length;i++){
for( var j=0;j<nodeconfig.length;j++){
if( i!=j ){
if( nodeconfig[i].networkid != nodeconfig[j].networkid){
check=false;
console.log('节点'+i+'和节点'+j+' networkid不一致,请检查!');
}
if( nodeconfig[i].ip == nodeconfig[j].ip ){
if( nodeconfig[i].nodedir == nodeconfig[j].nodedir ){
console.log('节点'+i+',和节点'+j+' IP相同且datadir相同,请检查!');
check=false;
}
if( nodeconfig[i].rpcport == nodeconfig[j].rpcport ){
console.log('节点'+i+',和节点'+j+' IP相同且rpcport相同,请检查!');
check=false;
}
if( nodeconfig[i].p2pport == nodeconfig[j].p2pport ){
console.log('节点'+i+',和节点'+j+' IP相同且p2pport相同,请检查!');
check=false;
}
}
}
}
}
if( !check ){
process.exit(1);
}
else{
console.log('配置检查成功!!!');
}
var admin;
try{
admin=execSync("node ../tool/accountManager.js");
console.log('生成管理员账户成功!!!即将拷贝备份到每个节点目录的admin.message文件中,请注意保管!!!');
}catch(e){
console.log('管理员账户生成失败!!!');
process.exit(1);
}
var nodeid=[];
console.log('开始初始化节点配置...');
for( var i=0;i<nodeconfig.length;i++){
try{
execSync("mkdir -p "+nodeconfig[i].nodedir);
execSync("mkdir -p "+nodeconfig[i].nodedir+"log/");
execSync("mkdir -p "+nodeconfig[i].nodedir+"data/");
execSync("cp "+"./cert/webank/"+i+"/* "+nodeconfig[i].nodedir+"data/");
var id = fs.readFileSync(nodeconfig[i].nodedir+"data/node.nodeid", 'utf-8');
id = id.replace(/\n/g ,"");
nodeid.push(id);
var logconfig=fs.readFileSync("log.conf.template", 'utf-8');
fs.writeFileSync(nodeconfig[i].nodedir+'log.conf',logconfig.replace(/{nodedir}/g,nodeconfig[i].nodedir));
var startsh=fs.readFileSync("start.sh.template", 'utf-8');
startsh=startsh.replace(/{genesis}/g,nodeconfig[i].nodedir+'genesis.json');
fs.writeFileSync(nodeconfig[i].nodedir+'start'+i+'.sh',startsh.replace(/{config}/g,nodeconfig[i].nodedir+'config.json'));
execSync("chmod -x "+nodeconfig[i].nodedir+'start'+i+'.sh');
fs.writeFileSync(nodeconfig[i].nodedir+'admin.message',admin);
console.log('节点'+i+'目录生成成功!!!');
}catch(e){
console.log('节点'+i+'目录生成失败!'+e);
}
}//for
admin=fs.readFileSync(nodeconfig[0].nodedir+'admin.message','utf-8');
admin=(admin.split(/\n/)[2].split(/ /)[2]);
var genesis=fs.readFileSync("genesis.json.template", 'utf-8');
genesis=genesis.replace(/{initMinerNodes}/g,JSON.stringify(nodeid));
genesis=genesis.replace(/{admin}/g,admin);
console.log('创世文件生成成功!!!');
for( var i=0;i<nodeconfig.length;i++){
try{
fs.writeFileSync(nodeconfig[i].nodedir+'genesis.json',genesis);
console.log('节点'+i+' genesis.json生成成功!!!');
var config=fs.readFileSync("config.json.template", 'utf-8');
config=config.replace(/{nodedir}/g,nodeconfig[i].nodedir);
config=config.replace(/{networkid}/g,nodeconfig[i].networkid);
config=config.replace(/{ip}/g,nodeconfig[i].ip);
config=config.replace(/{rpcport}/g,nodeconfig[i].rpcport);
config=config.replace(/{p2pport}/g,nodeconfig[i].p2pport);
config=config.replace(/{channelPort}/g,nodeconfig[i].channelPort);
fs.writeFileSync(nodeconfig[i].nodedir+'config.json',config);
console.log('节点'+i+' config.json生成成功!!!');
var booststrap=fs.readFileSync("bootstrapnodes.json.sample", 'utf-8');
booststrap=booststrap.replace(/{host}/g,nodeconfig[0].ip);
booststrap=booststrap.replace(/{p2pport}/g,nodeconfig[0].p2pport);
fs.writeFileSync(nodeconfig[i].nodedir+'data/bootstrapnodes.json',booststrap);
console.log('节点'+i+' bootstrapnodes.json生成成功!!!');
}catch(e){
console.log('节点'+i+' 配置生成失败!'+e);
}
}//for