var express = require('express');
var cproc = require('child_process');
var bodyParser = require('body-parser');
var execSync = cproc.execSync;
var options = {
  inflate: true,
  limit: '100kb',
  type: 'application/octet-stream'
};

var app = express();
var admin = express(); // the sub app
app.use(bodyParser.urlencoded({ extended: false }))

app.use(bodyParser.json())


admin.get('/get_node_command/:name', function (req, res) {
 	res.setHeader("Content-Type","application/json");
	var str = execSync(`node ./get_project_config.js  -name ${req.params.name} -attr config_file/command/gitPathHead`)
	var items = String(str).replace(/\n/g,"").split("|"); 
 	var config_file = items[0].replace(/\^/g," ");
	var command  = items[1].replace(/\^/g," ");
	var gitGroup = items[2].replace(/\^/g," ");
	res.send({configPath:config_file,buildCmd:command,gitGroup:gitGroup});
});

admin.post('/add_new_proxy', function (req, res) {
	let request = req.body;
	var str = String(execSync(`cat ../ngrok/docker_env_name.sh`)).replace(/\n/,"");
	var index = str.indexOf(request["namespace"])
	let newstr = "",sourcestr;
	if( index != -1 ){
		//存在这个配置，判断是否是原有的IP
		var reg = new RegExp(request["namespace"] + "\\|\\d*\\.\\d*\\.\\d*\\.\\d*");
		try{
			sourcestr = str.match(reg);
			sourcestr = sourcestr[0]
		}catch(e){
			res.send({msg:"错误，请检查 docket_env_name.sh 文件"})
			return
		}
		if(sourcestr != undefined){
			var items = sourcestr.split("|");
			if(items[1] == request["ip"]){
				res.send({msg:"已经存在的配置"});
				return 
			}else{
				targetstr = request["namespace"] + "|" +  request["ip"];
				newstr = str.replace(sourcestr,targetstr);
			}
		}else{
			res.send({msg:"错误1"})
			return 
		}
	}else{
		newstr = str + " " + request["namespace"] + "|" +  request["ip"];
		//文件添加到这里面
	}
	newstr = newstr.replace(/\n/,"");
	execSync(`echo "${newstr}" > ../ngrok/docker_env_name.sh`)
	cproc.exec("../ngrok/make_frp_ini.sh");
	res.send({msg:"执行完成"});
});

admin.post('/remove_proxy', function (req, res) {
	let request = req.body;
	var str = String(execSync(`cat ../ngrok/docker_env_name.sh`)).replace(/\n/,"");
	var sourcestr;
	var reg = new RegExp(request["namespace"] + "\\|\\d*\\.\\d*\\.\\d*\\.\\d*");
	try{
		sourcestr = str.replace(reg,"");
	}catch(e){
		res.send({msg:"错误，请检查 docket_env_name.sh 文件"})
		return
	}
	execSync(`echo "${sourcestr}" > ../ngrok/docker_env_name.sh`);
	cproc.exec("../ngrok/make_frp_ini.sh");
	
 	res.setHeader("Content-Type","application/json");
	var str = execSync(`cat ../ngrok/docker_env_name.sh`)
	res.send({namespace:String(str)});
});


admin.get('/get_proxy', function (req, res) {
 	res.setHeader("Content-Type","application/json");
	var str = execSync(`cat ../ngrok/docker_env_name.sh`)
	res.send({namespace:String(str)});
});

app.use('/config_server', admin)
console.log("http://192.168.4.3:10088/config_server/get_node_command") 
app.listen(10088)






